@umituz/react-native-localization 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -6
- package/scripts/createLocaleLoaders.js +35 -28
- package/scripts/setup-languages.js +113 -0
- package/src/infrastructure/config/i18n.ts +2 -34
- package/src/infrastructure/config/languages.ts +0 -1
- package/src/infrastructure/locales/en-US/index.ts +33 -39
- package/src/infrastructure/storage/AsyncStorageWrapper.ts +1 -2
- package/src/infrastructure/storage/LocalizationStore.ts +0 -62
- package/lib/domain/repositories/ILocalizationRepository.d.ts +0 -17
- package/lib/domain/repositories/ILocalizationRepository.d.ts.map +0 -1
- package/lib/domain/repositories/ILocalizationRepository.js +0 -6
- package/lib/domain/repositories/ILocalizationRepository.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -15
- package/lib/index.js.map +0 -1
- package/lib/infrastructure/components/LanguageSwitcher.d.ts +0 -12
- package/lib/infrastructure/components/LanguageSwitcher.d.ts.map +0 -1
- package/lib/infrastructure/components/LanguageSwitcher.js +0 -49
- package/lib/infrastructure/components/LanguageSwitcher.js.map +0 -1
- package/lib/infrastructure/components/LocalizationProvider.d.ts +0 -11
- package/lib/infrastructure/components/LocalizationProvider.d.ts.map +0 -1
- package/lib/infrastructure/components/LocalizationProvider.js +0 -14
- package/lib/infrastructure/components/LocalizationProvider.js.map +0 -1
- package/lib/infrastructure/components/useLanguageNavigation.d.ts +0 -6
- package/lib/infrastructure/components/useLanguageNavigation.d.ts.map +0 -1
- package/lib/infrastructure/components/useLanguageNavigation.js +0 -16
- package/lib/infrastructure/components/useLanguageNavigation.js.map +0 -1
- package/lib/infrastructure/config/i18n.d.ts +0 -12
- package/lib/infrastructure/config/i18n.d.ts.map +0 -1
- package/lib/infrastructure/config/i18n.js +0 -269
- package/lib/infrastructure/config/i18n.js.map +0 -1
- package/lib/infrastructure/config/languages.d.ts +0 -39
- package/lib/infrastructure/config/languages.d.ts.map +0 -1
- package/lib/infrastructure/config/languages.js +0 -210
- package/lib/infrastructure/config/languages.js.map +0 -1
- package/lib/infrastructure/config/languagesData.d.ts +0 -26
- package/lib/infrastructure/config/languagesData.d.ts.map +0 -1
- package/lib/infrastructure/config/languagesData.js +0 -58
- package/lib/infrastructure/config/languagesData.js.map +0 -1
- package/lib/infrastructure/locales/ar-SA/index.d.ts +0 -34
- package/lib/infrastructure/locales/ar-SA/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/ar-SA/index.js +0 -47
- package/lib/infrastructure/locales/ar-SA/index.js.map +0 -1
- package/lib/infrastructure/locales/bg-BG/index.d.ts +0 -34
- package/lib/infrastructure/locales/bg-BG/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/bg-BG/index.js +0 -47
- package/lib/infrastructure/locales/bg-BG/index.js.map +0 -1
- package/lib/infrastructure/locales/cs-CZ/index.d.ts +0 -34
- package/lib/infrastructure/locales/cs-CZ/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/cs-CZ/index.js +0 -47
- package/lib/infrastructure/locales/cs-CZ/index.js.map +0 -1
- package/lib/infrastructure/locales/da-DK/index.d.ts +0 -34
- package/lib/infrastructure/locales/da-DK/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/da-DK/index.js +0 -47
- package/lib/infrastructure/locales/da-DK/index.js.map +0 -1
- package/lib/infrastructure/locales/de-DE/index.d.ts +0 -34
- package/lib/infrastructure/locales/de-DE/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/de-DE/index.js +0 -47
- package/lib/infrastructure/locales/de-DE/index.js.map +0 -1
- package/lib/infrastructure/locales/el-GR/index.d.ts +0 -34
- package/lib/infrastructure/locales/el-GR/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/el-GR/index.js +0 -47
- package/lib/infrastructure/locales/el-GR/index.js.map +0 -1
- package/lib/infrastructure/locales/en-AU/index.d.ts +0 -32
- package/lib/infrastructure/locales/en-AU/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/en-AU/index.js +0 -44
- package/lib/infrastructure/locales/en-AU/index.js.map +0 -1
- package/lib/infrastructure/locales/en-CA/index.d.ts +0 -32
- package/lib/infrastructure/locales/en-CA/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/en-CA/index.js +0 -44
- package/lib/infrastructure/locales/en-CA/index.js.map +0 -1
- package/lib/infrastructure/locales/en-GB/index.d.ts +0 -32
- package/lib/infrastructure/locales/en-GB/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/en-GB/index.js +0 -44
- package/lib/infrastructure/locales/en-GB/index.js.map +0 -1
- package/lib/infrastructure/locales/en-US/index.d.ts +0 -34
- package/lib/infrastructure/locales/en-US/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/en-US/index.js +0 -47
- package/lib/infrastructure/locales/en-US/index.js.map +0 -1
- package/lib/infrastructure/locales/es-ES/index.d.ts +0 -34
- package/lib/infrastructure/locales/es-ES/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/es-ES/index.js +0 -47
- package/lib/infrastructure/locales/es-ES/index.js.map +0 -1
- package/lib/infrastructure/locales/es-MX/index.d.ts +0 -34
- package/lib/infrastructure/locales/es-MX/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/es-MX/index.js +0 -47
- package/lib/infrastructure/locales/es-MX/index.js.map +0 -1
- package/lib/infrastructure/locales/fi-FI/index.d.ts +0 -34
- package/lib/infrastructure/locales/fi-FI/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/fi-FI/index.js +0 -47
- package/lib/infrastructure/locales/fi-FI/index.js.map +0 -1
- package/lib/infrastructure/locales/fr-CA/index.d.ts +0 -34
- package/lib/infrastructure/locales/fr-CA/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/fr-CA/index.js +0 -47
- package/lib/infrastructure/locales/fr-CA/index.js.map +0 -1
- package/lib/infrastructure/locales/fr-FR/index.d.ts +0 -34
- package/lib/infrastructure/locales/fr-FR/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/fr-FR/index.js +0 -47
- package/lib/infrastructure/locales/fr-FR/index.js.map +0 -1
- package/lib/infrastructure/locales/hi-IN/index.d.ts +0 -34
- package/lib/infrastructure/locales/hi-IN/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/hi-IN/index.js +0 -47
- package/lib/infrastructure/locales/hi-IN/index.js.map +0 -1
- package/lib/infrastructure/locales/hr-HR/index.d.ts +0 -34
- package/lib/infrastructure/locales/hr-HR/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/hr-HR/index.js +0 -47
- package/lib/infrastructure/locales/hr-HR/index.js.map +0 -1
- package/lib/infrastructure/locales/hu-HU/index.d.ts +0 -34
- package/lib/infrastructure/locales/hu-HU/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/hu-HU/index.js +0 -47
- package/lib/infrastructure/locales/hu-HU/index.js.map +0 -1
- package/lib/infrastructure/locales/id-ID/index.d.ts +0 -34
- package/lib/infrastructure/locales/id-ID/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/id-ID/index.js +0 -47
- package/lib/infrastructure/locales/id-ID/index.js.map +0 -1
- package/lib/infrastructure/locales/it-IT/index.d.ts +0 -34
- package/lib/infrastructure/locales/it-IT/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/it-IT/index.js +0 -47
- package/lib/infrastructure/locales/it-IT/index.js.map +0 -1
- package/lib/infrastructure/locales/ja-JP/index.d.ts +0 -34
- package/lib/infrastructure/locales/ja-JP/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/ja-JP/index.js +0 -47
- package/lib/infrastructure/locales/ja-JP/index.js.map +0 -1
- package/lib/infrastructure/locales/ko-KR/index.d.ts +0 -34
- package/lib/infrastructure/locales/ko-KR/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/ko-KR/index.js +0 -47
- package/lib/infrastructure/locales/ko-KR/index.js.map +0 -1
- package/lib/infrastructure/locales/ms-MY/index.d.ts +0 -34
- package/lib/infrastructure/locales/ms-MY/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/ms-MY/index.js +0 -47
- package/lib/infrastructure/locales/ms-MY/index.js.map +0 -1
- package/lib/infrastructure/locales/nl-NL/index.d.ts +0 -34
- package/lib/infrastructure/locales/nl-NL/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/nl-NL/index.js +0 -47
- package/lib/infrastructure/locales/nl-NL/index.js.map +0 -1
- package/lib/infrastructure/locales/no-NO/index.d.ts +0 -34
- package/lib/infrastructure/locales/no-NO/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/no-NO/index.js +0 -47
- package/lib/infrastructure/locales/no-NO/index.js.map +0 -1
- package/lib/infrastructure/locales/pl-PL/index.d.ts +0 -34
- package/lib/infrastructure/locales/pl-PL/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/pl-PL/index.js +0 -47
- package/lib/infrastructure/locales/pl-PL/index.js.map +0 -1
- package/lib/infrastructure/locales/pt-BR/index.d.ts +0 -34
- package/lib/infrastructure/locales/pt-BR/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/pt-BR/index.js +0 -47
- package/lib/infrastructure/locales/pt-BR/index.js.map +0 -1
- package/lib/infrastructure/locales/pt-PT/index.d.ts +0 -34
- package/lib/infrastructure/locales/pt-PT/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/pt-PT/index.js +0 -47
- package/lib/infrastructure/locales/pt-PT/index.js.map +0 -1
- package/lib/infrastructure/locales/ro-RO/index.d.ts +0 -34
- package/lib/infrastructure/locales/ro-RO/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/ro-RO/index.js +0 -47
- package/lib/infrastructure/locales/ro-RO/index.js.map +0 -1
- package/lib/infrastructure/locales/ru-RU/index.d.ts +0 -34
- package/lib/infrastructure/locales/ru-RU/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/ru-RU/index.js +0 -47
- package/lib/infrastructure/locales/ru-RU/index.js.map +0 -1
- package/lib/infrastructure/locales/sk-SK/index.d.ts +0 -34
- package/lib/infrastructure/locales/sk-SK/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/sk-SK/index.js +0 -47
- package/lib/infrastructure/locales/sk-SK/index.js.map +0 -1
- package/lib/infrastructure/locales/sv-SE/index.d.ts +0 -34
- package/lib/infrastructure/locales/sv-SE/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/sv-SE/index.js +0 -47
- package/lib/infrastructure/locales/sv-SE/index.js.map +0 -1
- package/lib/infrastructure/locales/th-TH/index.d.ts +0 -34
- package/lib/infrastructure/locales/th-TH/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/th-TH/index.js +0 -47
- package/lib/infrastructure/locales/th-TH/index.js.map +0 -1
- package/lib/infrastructure/locales/tl-PH/index.d.ts +0 -34
- package/lib/infrastructure/locales/tl-PH/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/tl-PH/index.js +0 -47
- package/lib/infrastructure/locales/tl-PH/index.js.map +0 -1
- package/lib/infrastructure/locales/tr-TR/index.d.ts +0 -34
- package/lib/infrastructure/locales/tr-TR/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/tr-TR/index.js +0 -47
- package/lib/infrastructure/locales/tr-TR/index.js.map +0 -1
- package/lib/infrastructure/locales/uk-UA/index.d.ts +0 -34
- package/lib/infrastructure/locales/uk-UA/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/uk-UA/index.js +0 -47
- package/lib/infrastructure/locales/uk-UA/index.js.map +0 -1
- package/lib/infrastructure/locales/vi-VN/index.d.ts +0 -34
- package/lib/infrastructure/locales/vi-VN/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/vi-VN/index.js +0 -47
- package/lib/infrastructure/locales/vi-VN/index.js.map +0 -1
- package/lib/infrastructure/locales/zh-CN/index.d.ts +0 -34
- package/lib/infrastructure/locales/zh-CN/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/zh-CN/index.js +0 -47
- package/lib/infrastructure/locales/zh-CN/index.js.map +0 -1
- package/lib/infrastructure/locales/zh-TW/index.d.ts +0 -34
- package/lib/infrastructure/locales/zh-TW/index.d.ts.map +0 -1
- package/lib/infrastructure/locales/zh-TW/index.js +0 -47
- package/lib/infrastructure/locales/zh-TW/index.js.map +0 -1
- package/lib/infrastructure/storage/AsyncStorageWrapper.d.ts +0 -12
- package/lib/infrastructure/storage/AsyncStorageWrapper.d.ts.map +0 -1
- package/lib/infrastructure/storage/AsyncStorageWrapper.js +0 -29
- package/lib/infrastructure/storage/AsyncStorageWrapper.js.map +0 -1
- package/lib/infrastructure/storage/LocalizationStore.d.ts +0 -31
- package/lib/infrastructure/storage/LocalizationStore.d.ts.map +0 -1
- package/lib/infrastructure/storage/LocalizationStore.js +0 -192
- package/lib/infrastructure/storage/LocalizationStore.js.map +0 -1
- package/src/infrastructure/locales/ar-SA/auth.json +0 -32
- package/src/infrastructure/locales/ar-SA/branding.json +0 -9
- package/src/infrastructure/locales/ar-SA/datetime.json +0 -140
- package/src/infrastructure/locales/ar-SA/errors.json +0 -43
- package/src/infrastructure/locales/ar-SA/flashcards.json +0 -287
- package/src/infrastructure/locales/ar-SA/general.json +0 -61
- package/src/infrastructure/locales/ar-SA/index.ts +0 -49
- package/src/infrastructure/locales/ar-SA/navigation.json +0 -58
- package/src/infrastructure/locales/ar-SA/onboarding.json +0 -76
- package/src/infrastructure/locales/ar-SA/settings.json +0 -53
- package/src/infrastructure/locales/bg-BG/auth.json +0 -32
- package/src/infrastructure/locales/bg-BG/branding.json +0 -9
- package/src/infrastructure/locales/bg-BG/datetime.json +0 -140
- package/src/infrastructure/locales/bg-BG/errors.json +0 -43
- package/src/infrastructure/locales/bg-BG/flashcards.json +0 -287
- package/src/infrastructure/locales/bg-BG/general.json +0 -61
- package/src/infrastructure/locales/bg-BG/index.ts +0 -49
- package/src/infrastructure/locales/bg-BG/navigation.json +0 -58
- package/src/infrastructure/locales/bg-BG/onboarding.json +0 -76
- package/src/infrastructure/locales/bg-BG/settings.json +0 -53
- package/src/infrastructure/locales/cs-CZ/auth.json +0 -32
- package/src/infrastructure/locales/cs-CZ/branding.json +0 -9
- package/src/infrastructure/locales/cs-CZ/datetime.json +0 -140
- package/src/infrastructure/locales/cs-CZ/errors.json +0 -43
- package/src/infrastructure/locales/cs-CZ/flashcards.json +0 -287
- package/src/infrastructure/locales/cs-CZ/general.json +0 -61
- package/src/infrastructure/locales/cs-CZ/index.ts +0 -49
- package/src/infrastructure/locales/cs-CZ/navigation.json +0 -58
- package/src/infrastructure/locales/cs-CZ/onboarding.json +0 -76
- package/src/infrastructure/locales/cs-CZ/settings.json +0 -53
- package/src/infrastructure/locales/da-DK/auth.json +0 -32
- package/src/infrastructure/locales/da-DK/branding.json +0 -9
- package/src/infrastructure/locales/da-DK/datetime.json +0 -140
- package/src/infrastructure/locales/da-DK/errors.json +0 -43
- package/src/infrastructure/locales/da-DK/flashcards.json +0 -287
- package/src/infrastructure/locales/da-DK/general.json +0 -61
- package/src/infrastructure/locales/da-DK/index.ts +0 -49
- package/src/infrastructure/locales/da-DK/navigation.json +0 -58
- package/src/infrastructure/locales/da-DK/onboarding.json +0 -76
- package/src/infrastructure/locales/da-DK/settings.json +0 -53
- package/src/infrastructure/locales/de-DE/auth.json +0 -32
- package/src/infrastructure/locales/de-DE/branding.json +0 -9
- package/src/infrastructure/locales/de-DE/datetime.json +0 -140
- package/src/infrastructure/locales/de-DE/errors.json +0 -43
- package/src/infrastructure/locales/de-DE/flashcards.json +0 -287
- package/src/infrastructure/locales/de-DE/general.json +0 -61
- package/src/infrastructure/locales/de-DE/index.ts +0 -49
- package/src/infrastructure/locales/de-DE/navigation.json +0 -58
- package/src/infrastructure/locales/de-DE/onboarding.json +0 -76
- package/src/infrastructure/locales/de-DE/settings.json +0 -53
- package/src/infrastructure/locales/el-GR/auth.json +0 -32
- package/src/infrastructure/locales/el-GR/branding.json +0 -9
- package/src/infrastructure/locales/el-GR/datetime.json +0 -140
- package/src/infrastructure/locales/el-GR/errors.json +0 -43
- package/src/infrastructure/locales/el-GR/flashcards.json +0 -287
- package/src/infrastructure/locales/el-GR/general.json +0 -61
- package/src/infrastructure/locales/el-GR/index.ts +0 -49
- package/src/infrastructure/locales/el-GR/navigation.json +0 -58
- package/src/infrastructure/locales/el-GR/onboarding.json +0 -76
- package/src/infrastructure/locales/el-GR/settings.json +0 -53
- package/src/infrastructure/locales/en-AU/branding.json +0 -11
- package/src/infrastructure/locales/en-AU/datetime.json +0 -140
- package/src/infrastructure/locales/en-AU/errors.json +0 -43
- package/src/infrastructure/locales/en-AU/flashcards.json +0 -83
- package/src/infrastructure/locales/en-AU/general.json +0 -61
- package/src/infrastructure/locales/en-AU/index.ts +0 -46
- package/src/infrastructure/locales/en-AU/navigation.json +0 -58
- package/src/infrastructure/locales/en-AU/onboarding.json +0 -76
- package/src/infrastructure/locales/en-AU/settings.json +0 -53
- package/src/infrastructure/locales/en-CA/branding.json +0 -11
- package/src/infrastructure/locales/en-CA/datetime.json +0 -140
- package/src/infrastructure/locales/en-CA/errors.json +0 -43
- package/src/infrastructure/locales/en-CA/flashcards.json +0 -83
- package/src/infrastructure/locales/en-CA/general.json +0 -61
- package/src/infrastructure/locales/en-CA/index.ts +0 -46
- package/src/infrastructure/locales/en-CA/navigation.json +0 -58
- package/src/infrastructure/locales/en-CA/onboarding.json +0 -76
- package/src/infrastructure/locales/en-CA/settings.json +0 -53
- package/src/infrastructure/locales/en-GB/branding.json +0 -11
- package/src/infrastructure/locales/en-GB/datetime.json +0 -140
- package/src/infrastructure/locales/en-GB/errors.json +0 -43
- package/src/infrastructure/locales/en-GB/flashcards.json +0 -83
- package/src/infrastructure/locales/en-GB/general.json +0 -61
- package/src/infrastructure/locales/en-GB/index.ts +0 -46
- package/src/infrastructure/locales/en-GB/navigation.json +0 -58
- package/src/infrastructure/locales/en-GB/onboarding.json +0 -76
- package/src/infrastructure/locales/en-GB/settings.json +0 -53
- package/src/infrastructure/locales/es-ES/auth.json +0 -32
- package/src/infrastructure/locales/es-ES/branding.json +0 -9
- package/src/infrastructure/locales/es-ES/datetime.json +0 -140
- package/src/infrastructure/locales/es-ES/errors.json +0 -43
- package/src/infrastructure/locales/es-ES/flashcards.json +0 -287
- package/src/infrastructure/locales/es-ES/general.json +0 -61
- package/src/infrastructure/locales/es-ES/index.ts +0 -49
- package/src/infrastructure/locales/es-ES/navigation.json +0 -58
- package/src/infrastructure/locales/es-ES/onboarding.json +0 -76
- package/src/infrastructure/locales/es-ES/settings.json +0 -53
- package/src/infrastructure/locales/es-MX/auth.json +0 -32
- package/src/infrastructure/locales/es-MX/branding.json +0 -9
- package/src/infrastructure/locales/es-MX/datetime.json +0 -140
- package/src/infrastructure/locales/es-MX/errors.json +0 -43
- package/src/infrastructure/locales/es-MX/flashcards.json +0 -276
- package/src/infrastructure/locales/es-MX/general.json +0 -61
- package/src/infrastructure/locales/es-MX/index.ts +0 -49
- package/src/infrastructure/locales/es-MX/navigation.json +0 -58
- package/src/infrastructure/locales/es-MX/onboarding.json +0 -76
- package/src/infrastructure/locales/es-MX/settings.json +0 -53
- package/src/infrastructure/locales/fi-FI/auth.json +0 -32
- package/src/infrastructure/locales/fi-FI/branding.json +0 -9
- package/src/infrastructure/locales/fi-FI/datetime.json +0 -140
- package/src/infrastructure/locales/fi-FI/errors.json +0 -43
- package/src/infrastructure/locales/fi-FI/flashcards.json +0 -287
- package/src/infrastructure/locales/fi-FI/general.json +0 -61
- package/src/infrastructure/locales/fi-FI/index.ts +0 -49
- package/src/infrastructure/locales/fi-FI/navigation.json +0 -58
- package/src/infrastructure/locales/fi-FI/onboarding.json +0 -76
- package/src/infrastructure/locales/fi-FI/settings.json +0 -53
- package/src/infrastructure/locales/fr-CA/auth.json +0 -32
- package/src/infrastructure/locales/fr-CA/branding.json +0 -9
- package/src/infrastructure/locales/fr-CA/datetime.json +0 -140
- package/src/infrastructure/locales/fr-CA/errors.json +0 -43
- package/src/infrastructure/locales/fr-CA/flashcards.json +0 -287
- package/src/infrastructure/locales/fr-CA/general.json +0 -61
- package/src/infrastructure/locales/fr-CA/index.ts +0 -49
- package/src/infrastructure/locales/fr-CA/navigation.json +0 -58
- package/src/infrastructure/locales/fr-CA/onboarding.json +0 -76
- package/src/infrastructure/locales/fr-CA/settings.json +0 -53
- package/src/infrastructure/locales/fr-FR/auth.json +0 -32
- package/src/infrastructure/locales/fr-FR/branding.json +0 -9
- package/src/infrastructure/locales/fr-FR/datetime.json +0 -140
- package/src/infrastructure/locales/fr-FR/errors.json +0 -43
- package/src/infrastructure/locales/fr-FR/flashcards.json +0 -287
- package/src/infrastructure/locales/fr-FR/general.json +0 -61
- package/src/infrastructure/locales/fr-FR/index.ts +0 -49
- package/src/infrastructure/locales/fr-FR/navigation.json +0 -58
- package/src/infrastructure/locales/fr-FR/onboarding.json +0 -76
- package/src/infrastructure/locales/fr-FR/settings.json +0 -53
- package/src/infrastructure/locales/hi-IN/auth.json +0 -32
- package/src/infrastructure/locales/hi-IN/branding.json +0 -9
- package/src/infrastructure/locales/hi-IN/datetime.json +0 -140
- package/src/infrastructure/locales/hi-IN/errors.json +0 -43
- package/src/infrastructure/locales/hi-IN/flashcards.json +0 -287
- package/src/infrastructure/locales/hi-IN/general.json +0 -61
- package/src/infrastructure/locales/hi-IN/index.ts +0 -49
- package/src/infrastructure/locales/hi-IN/navigation.json +0 -58
- package/src/infrastructure/locales/hi-IN/onboarding.json +0 -76
- package/src/infrastructure/locales/hi-IN/settings.json +0 -53
- package/src/infrastructure/locales/hr-HR/auth.json +0 -32
- package/src/infrastructure/locales/hr-HR/branding.json +0 -9
- package/src/infrastructure/locales/hr-HR/datetime.json +0 -140
- package/src/infrastructure/locales/hr-HR/errors.json +0 -43
- package/src/infrastructure/locales/hr-HR/flashcards.json +0 -276
- package/src/infrastructure/locales/hr-HR/general.json +0 -61
- package/src/infrastructure/locales/hr-HR/index.ts +0 -49
- package/src/infrastructure/locales/hr-HR/navigation.json +0 -58
- package/src/infrastructure/locales/hr-HR/onboarding.json +0 -76
- package/src/infrastructure/locales/hr-HR/settings.json +0 -53
- package/src/infrastructure/locales/hu-HU/auth.json +0 -32
- package/src/infrastructure/locales/hu-HU/branding.json +0 -9
- package/src/infrastructure/locales/hu-HU/datetime.json +0 -140
- package/src/infrastructure/locales/hu-HU/errors.json +0 -43
- package/src/infrastructure/locales/hu-HU/flashcards.json +0 -287
- package/src/infrastructure/locales/hu-HU/general.json +0 -61
- package/src/infrastructure/locales/hu-HU/index.ts +0 -49
- package/src/infrastructure/locales/hu-HU/navigation.json +0 -58
- package/src/infrastructure/locales/hu-HU/onboarding.json +0 -76
- package/src/infrastructure/locales/hu-HU/settings.json +0 -53
- package/src/infrastructure/locales/id-ID/auth.json +0 -32
- package/src/infrastructure/locales/id-ID/branding.json +0 -9
- package/src/infrastructure/locales/id-ID/datetime.json +0 -140
- package/src/infrastructure/locales/id-ID/errors.json +0 -43
- package/src/infrastructure/locales/id-ID/flashcards.json +0 -287
- package/src/infrastructure/locales/id-ID/general.json +0 -61
- package/src/infrastructure/locales/id-ID/index.ts +0 -49
- package/src/infrastructure/locales/id-ID/navigation.json +0 -58
- package/src/infrastructure/locales/id-ID/onboarding.json +0 -76
- package/src/infrastructure/locales/id-ID/settings.json +0 -53
- package/src/infrastructure/locales/it-IT/auth.json +0 -32
- package/src/infrastructure/locales/it-IT/branding.json +0 -9
- package/src/infrastructure/locales/it-IT/datetime.json +0 -140
- package/src/infrastructure/locales/it-IT/errors.json +0 -43
- package/src/infrastructure/locales/it-IT/flashcards.json +0 -287
- package/src/infrastructure/locales/it-IT/general.json +0 -61
- package/src/infrastructure/locales/it-IT/index.ts +0 -49
- package/src/infrastructure/locales/it-IT/navigation.json +0 -58
- package/src/infrastructure/locales/it-IT/onboarding.json +0 -76
- package/src/infrastructure/locales/it-IT/settings.json +0 -53
- package/src/infrastructure/locales/ja-JP/auth.json +0 -32
- package/src/infrastructure/locales/ja-JP/branding.json +0 -9
- package/src/infrastructure/locales/ja-JP/datetime.json +0 -140
- package/src/infrastructure/locales/ja-JP/errors.json +0 -43
- package/src/infrastructure/locales/ja-JP/flashcards.json +0 -287
- package/src/infrastructure/locales/ja-JP/general.json +0 -61
- package/src/infrastructure/locales/ja-JP/index.ts +0 -49
- package/src/infrastructure/locales/ja-JP/navigation.json +0 -58
- package/src/infrastructure/locales/ja-JP/onboarding.json +0 -76
- package/src/infrastructure/locales/ja-JP/settings.json +0 -53
- package/src/infrastructure/locales/ko-KR/auth.json +0 -32
- package/src/infrastructure/locales/ko-KR/branding.json +0 -9
- package/src/infrastructure/locales/ko-KR/datetime.json +0 -140
- package/src/infrastructure/locales/ko-KR/errors.json +0 -43
- package/src/infrastructure/locales/ko-KR/flashcards.json +0 -287
- package/src/infrastructure/locales/ko-KR/general.json +0 -61
- package/src/infrastructure/locales/ko-KR/index.ts +0 -49
- package/src/infrastructure/locales/ko-KR/navigation.json +0 -58
- package/src/infrastructure/locales/ko-KR/onboarding.json +0 -76
- package/src/infrastructure/locales/ko-KR/settings.json +0 -53
- package/src/infrastructure/locales/ms-MY/auth.json +0 -32
- package/src/infrastructure/locales/ms-MY/branding.json +0 -9
- package/src/infrastructure/locales/ms-MY/datetime.json +0 -140
- package/src/infrastructure/locales/ms-MY/errors.json +0 -43
- package/src/infrastructure/locales/ms-MY/flashcards.json +0 -287
- package/src/infrastructure/locales/ms-MY/general.json +0 -61
- package/src/infrastructure/locales/ms-MY/index.ts +0 -49
- package/src/infrastructure/locales/ms-MY/navigation.json +0 -58
- package/src/infrastructure/locales/ms-MY/onboarding.json +0 -76
- package/src/infrastructure/locales/ms-MY/settings.json +0 -53
- package/src/infrastructure/locales/nl-NL/auth.json +0 -32
- package/src/infrastructure/locales/nl-NL/branding.json +0 -9
- package/src/infrastructure/locales/nl-NL/datetime.json +0 -140
- package/src/infrastructure/locales/nl-NL/errors.json +0 -43
- package/src/infrastructure/locales/nl-NL/flashcards.json +0 -287
- package/src/infrastructure/locales/nl-NL/general.json +0 -61
- package/src/infrastructure/locales/nl-NL/index.ts +0 -49
- package/src/infrastructure/locales/nl-NL/navigation.json +0 -58
- package/src/infrastructure/locales/nl-NL/onboarding.json +0 -76
- package/src/infrastructure/locales/nl-NL/settings.json +0 -53
- package/src/infrastructure/locales/no-NO/auth.json +0 -32
- package/src/infrastructure/locales/no-NO/branding.json +0 -9
- package/src/infrastructure/locales/no-NO/datetime.json +0 -140
- package/src/infrastructure/locales/no-NO/errors.json +0 -43
- package/src/infrastructure/locales/no-NO/flashcards.json +0 -287
- package/src/infrastructure/locales/no-NO/general.json +0 -61
- package/src/infrastructure/locales/no-NO/index.ts +0 -49
- package/src/infrastructure/locales/no-NO/navigation.json +0 -58
- package/src/infrastructure/locales/no-NO/onboarding.json +0 -76
- package/src/infrastructure/locales/no-NO/settings.json +0 -53
- package/src/infrastructure/locales/pl-PL/auth.json +0 -32
- package/src/infrastructure/locales/pl-PL/branding.json +0 -9
- package/src/infrastructure/locales/pl-PL/datetime.json +0 -140
- package/src/infrastructure/locales/pl-PL/errors.json +0 -43
- package/src/infrastructure/locales/pl-PL/flashcards.json +0 -287
- package/src/infrastructure/locales/pl-PL/general.json +0 -61
- package/src/infrastructure/locales/pl-PL/index.ts +0 -49
- package/src/infrastructure/locales/pl-PL/navigation.json +0 -58
- package/src/infrastructure/locales/pl-PL/onboarding.json +0 -76
- package/src/infrastructure/locales/pl-PL/settings.json +0 -53
- package/src/infrastructure/locales/pt-BR/auth.json +0 -32
- package/src/infrastructure/locales/pt-BR/branding.json +0 -9
- package/src/infrastructure/locales/pt-BR/datetime.json +0 -140
- package/src/infrastructure/locales/pt-BR/errors.json +0 -43
- package/src/infrastructure/locales/pt-BR/flashcards.json +0 -287
- package/src/infrastructure/locales/pt-BR/general.json +0 -61
- package/src/infrastructure/locales/pt-BR/index.ts +0 -49
- package/src/infrastructure/locales/pt-BR/navigation.json +0 -58
- package/src/infrastructure/locales/pt-BR/onboarding.json +0 -76
- package/src/infrastructure/locales/pt-BR/settings.json +0 -53
- package/src/infrastructure/locales/pt-PT/auth.json +0 -32
- package/src/infrastructure/locales/pt-PT/branding.json +0 -9
- package/src/infrastructure/locales/pt-PT/datetime.json +0 -140
- package/src/infrastructure/locales/pt-PT/errors.json +0 -43
- package/src/infrastructure/locales/pt-PT/flashcards.json +0 -287
- package/src/infrastructure/locales/pt-PT/general.json +0 -61
- package/src/infrastructure/locales/pt-PT/index.ts +0 -49
- package/src/infrastructure/locales/pt-PT/navigation.json +0 -58
- package/src/infrastructure/locales/pt-PT/onboarding.json +0 -76
- package/src/infrastructure/locales/pt-PT/settings.json +0 -53
- package/src/infrastructure/locales/ro-RO/auth.json +0 -32
- package/src/infrastructure/locales/ro-RO/branding.json +0 -9
- package/src/infrastructure/locales/ro-RO/datetime.json +0 -140
- package/src/infrastructure/locales/ro-RO/errors.json +0 -43
- package/src/infrastructure/locales/ro-RO/flashcards.json +0 -287
- package/src/infrastructure/locales/ro-RO/general.json +0 -61
- package/src/infrastructure/locales/ro-RO/index.ts +0 -49
- package/src/infrastructure/locales/ro-RO/navigation.json +0 -58
- package/src/infrastructure/locales/ro-RO/onboarding.json +0 -76
- package/src/infrastructure/locales/ro-RO/settings.json +0 -53
- package/src/infrastructure/locales/ru-RU/auth.json +0 -32
- package/src/infrastructure/locales/ru-RU/branding.json +0 -9
- package/src/infrastructure/locales/ru-RU/datetime.json +0 -140
- package/src/infrastructure/locales/ru-RU/errors.json +0 -43
- package/src/infrastructure/locales/ru-RU/flashcards.json +0 -276
- package/src/infrastructure/locales/ru-RU/general.json +0 -61
- package/src/infrastructure/locales/ru-RU/index.ts +0 -49
- package/src/infrastructure/locales/ru-RU/navigation.json +0 -58
- package/src/infrastructure/locales/ru-RU/onboarding.json +0 -76
- package/src/infrastructure/locales/ru-RU/settings.json +0 -53
- package/src/infrastructure/locales/sk-SK/auth.json +0 -32
- package/src/infrastructure/locales/sk-SK/branding.json +0 -9
- package/src/infrastructure/locales/sk-SK/datetime.json +0 -140
- package/src/infrastructure/locales/sk-SK/errors.json +0 -43
- package/src/infrastructure/locales/sk-SK/flashcards.json +0 -287
- package/src/infrastructure/locales/sk-SK/general.json +0 -61
- package/src/infrastructure/locales/sk-SK/index.ts +0 -49
- package/src/infrastructure/locales/sk-SK/navigation.json +0 -58
- package/src/infrastructure/locales/sk-SK/onboarding.json +0 -76
- package/src/infrastructure/locales/sk-SK/settings.json +0 -53
- package/src/infrastructure/locales/sv-SE/auth.json +0 -32
- package/src/infrastructure/locales/sv-SE/branding.json +0 -9
- package/src/infrastructure/locales/sv-SE/datetime.json +0 -140
- package/src/infrastructure/locales/sv-SE/errors.json +0 -43
- package/src/infrastructure/locales/sv-SE/flashcards.json +0 -287
- package/src/infrastructure/locales/sv-SE/general.json +0 -61
- package/src/infrastructure/locales/sv-SE/index.ts +0 -49
- package/src/infrastructure/locales/sv-SE/navigation.json +0 -58
- package/src/infrastructure/locales/sv-SE/onboarding.json +0 -76
- package/src/infrastructure/locales/sv-SE/settings.json +0 -53
- package/src/infrastructure/locales/th-TH/auth.json +0 -32
- package/src/infrastructure/locales/th-TH/branding.json +0 -9
- package/src/infrastructure/locales/th-TH/datetime.json +0 -140
- package/src/infrastructure/locales/th-TH/errors.json +0 -43
- package/src/infrastructure/locales/th-TH/flashcards.json +0 -287
- package/src/infrastructure/locales/th-TH/general.json +0 -61
- package/src/infrastructure/locales/th-TH/index.ts +0 -49
- package/src/infrastructure/locales/th-TH/navigation.json +0 -58
- package/src/infrastructure/locales/th-TH/onboarding.json +0 -76
- package/src/infrastructure/locales/th-TH/settings.json +0 -53
- package/src/infrastructure/locales/tl-PH/auth.json +0 -32
- package/src/infrastructure/locales/tl-PH/branding.json +0 -9
- package/src/infrastructure/locales/tl-PH/datetime.json +0 -140
- package/src/infrastructure/locales/tl-PH/errors.json +0 -43
- package/src/infrastructure/locales/tl-PH/flashcards.json +0 -287
- package/src/infrastructure/locales/tl-PH/general.json +0 -61
- package/src/infrastructure/locales/tl-PH/index.ts +0 -49
- package/src/infrastructure/locales/tl-PH/navigation.json +0 -58
- package/src/infrastructure/locales/tl-PH/onboarding.json +0 -76
- package/src/infrastructure/locales/tl-PH/settings.json +0 -53
- package/src/infrastructure/locales/tr-TR/auth.json +0 -32
- package/src/infrastructure/locales/tr-TR/branding.json +0 -9
- package/src/infrastructure/locales/tr-TR/datetime.json +0 -140
- package/src/infrastructure/locales/tr-TR/errors.json +0 -43
- package/src/infrastructure/locales/tr-TR/flashcards.json +0 -287
- package/src/infrastructure/locales/tr-TR/general.json +0 -61
- package/src/infrastructure/locales/tr-TR/index.ts +0 -49
- package/src/infrastructure/locales/tr-TR/navigation.json +0 -58
- package/src/infrastructure/locales/tr-TR/onboarding.json +0 -76
- package/src/infrastructure/locales/tr-TR/settings.json +0 -53
- package/src/infrastructure/locales/uk-UA/auth.json +0 -32
- package/src/infrastructure/locales/uk-UA/branding.json +0 -9
- package/src/infrastructure/locales/uk-UA/datetime.json +0 -140
- package/src/infrastructure/locales/uk-UA/errors.json +0 -43
- package/src/infrastructure/locales/uk-UA/flashcards.json +0 -287
- package/src/infrastructure/locales/uk-UA/general.json +0 -61
- package/src/infrastructure/locales/uk-UA/index.ts +0 -49
- package/src/infrastructure/locales/uk-UA/navigation.json +0 -58
- package/src/infrastructure/locales/uk-UA/onboarding.json +0 -76
- package/src/infrastructure/locales/uk-UA/settings.json +0 -53
- package/src/infrastructure/locales/vi-VN/auth.json +0 -32
- package/src/infrastructure/locales/vi-VN/branding.json +0 -9
- package/src/infrastructure/locales/vi-VN/datetime.json +0 -140
- package/src/infrastructure/locales/vi-VN/errors.json +0 -43
- package/src/infrastructure/locales/vi-VN/flashcards.json +0 -287
- package/src/infrastructure/locales/vi-VN/general.json +0 -61
- package/src/infrastructure/locales/vi-VN/index.ts +0 -49
- package/src/infrastructure/locales/vi-VN/navigation.json +0 -58
- package/src/infrastructure/locales/vi-VN/onboarding.json +0 -76
- package/src/infrastructure/locales/vi-VN/settings.json +0 -53
- package/src/infrastructure/locales/zh-CN/auth.json +0 -32
- package/src/infrastructure/locales/zh-CN/branding.json +0 -9
- package/src/infrastructure/locales/zh-CN/datetime.json +0 -140
- package/src/infrastructure/locales/zh-CN/errors.json +0 -43
- package/src/infrastructure/locales/zh-CN/flashcards.json +0 -287
- package/src/infrastructure/locales/zh-CN/general.json +0 -61
- package/src/infrastructure/locales/zh-CN/index.ts +0 -49
- package/src/infrastructure/locales/zh-CN/navigation.json +0 -58
- package/src/infrastructure/locales/zh-CN/onboarding.json +0 -76
- package/src/infrastructure/locales/zh-CN/settings.json +0 -53
- package/src/infrastructure/locales/zh-TW/auth.json +0 -32
- package/src/infrastructure/locales/zh-TW/branding.json +0 -9
- package/src/infrastructure/locales/zh-TW/datetime.json +0 -140
- package/src/infrastructure/locales/zh-TW/errors.json +0 -43
- package/src/infrastructure/locales/zh-TW/flashcards.json +0 -287
- package/src/infrastructure/locales/zh-TW/general.json +0 -61
- package/src/infrastructure/locales/zh-TW/index.ts +0 -49
- package/src/infrastructure/locales/zh-TW/navigation.json +0 -58
- package/src/infrastructure/locales/zh-TW/onboarding.json +0 -76
- package/src/infrastructure/locales/zh-TW/settings.json +0 -53
package/package.json
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-localization",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Universal localization system for React Native apps with i18n support",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"build": "tsc",
|
|
9
8
|
"typecheck": "tsc --noEmit",
|
|
10
9
|
"lint": "tsc --noEmit",
|
|
11
|
-
"clean": "rm -rf lib",
|
|
12
|
-
"prebuild": "npm run clean",
|
|
13
|
-
"prepublishOnly": "npm run build",
|
|
14
10
|
"locales:generate": "node scripts/createLocaleLoaders.js",
|
|
15
11
|
"locales:generate:lang": "node scripts/createLocaleLoaders.js",
|
|
16
12
|
"version:patch": "npm version patch -m 'chore: release v%s'",
|
|
@@ -71,7 +67,6 @@
|
|
|
71
67
|
"access": "public"
|
|
72
68
|
},
|
|
73
69
|
"files": [
|
|
74
|
-
"lib",
|
|
75
70
|
"src",
|
|
76
71
|
"scripts",
|
|
77
72
|
"README.md",
|
|
@@ -81,43 +81,50 @@ function createAutoLoader(languageCode) {
|
|
|
81
81
|
return false;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
// Create require
|
|
85
|
-
// Use require instead of import for JSON files to ensure proper Metro bundler handling
|
|
86
|
-
const requires = [];
|
|
87
|
-
const namespaces = [];
|
|
88
|
-
const descriptions = [];
|
|
89
|
-
|
|
90
|
-
files.forEach(file => {
|
|
91
|
-
const moduleName = file.replace('.json', '');
|
|
92
|
-
requires.push(`const ${moduleName} = require('./${file}');`);
|
|
93
|
-
namespaces.push(moduleName);
|
|
94
|
-
descriptions.push(` * - ${moduleName}: ${file}`);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// Create the auto-loader content with nested structure
|
|
84
|
+
// Create the auto-loader content with require.context for automatic discovery
|
|
98
85
|
const content = `/**
|
|
99
|
-
* Auto-
|
|
86
|
+
* Auto-loader for ${languageCode} translation modules
|
|
100
87
|
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
88
|
+
* AUTOMATIC TRANSLATION FILE DETECTION:
|
|
89
|
+
* - Uses Metro bundler's require.context to auto-discover .json files
|
|
90
|
+
* - Adding new translation file = just create .json file (zero manual updates)
|
|
91
|
+
* - Build-time resolution (fast, no runtime overhead)
|
|
92
|
+
* - Works for all languages automatically
|
|
103
93
|
*
|
|
104
|
-
*
|
|
94
|
+
* OFFLINE-ONLY TRANSLATIONS (All domains work without backend):
|
|
95
|
+
* - Automatically imports ALL .json files in this directory
|
|
96
|
+
* - Alphabetically sorted for consistency
|
|
97
|
+
* - Type-safe with TypeScript
|
|
105
98
|
*
|
|
106
|
-
*
|
|
107
|
-
|
|
99
|
+
* USAGE:
|
|
100
|
+
* 1. Create new translation file: my_domain.json
|
|
101
|
+
* 2. File is auto-discovered and loaded
|
|
102
|
+
* 3. Access via t('my_domain.key')
|
|
103
|
+
*
|
|
104
|
+
* This file is automatically generated by setup-languages.js or createLocaleLoaders.js
|
|
105
|
+
* but can be manually edited if needed.
|
|
108
106
|
*
|
|
109
107
|
* Generated: ${new Date().toISOString()}
|
|
110
108
|
*/
|
|
111
109
|
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
|
|
110
|
+
// Metro bundler require.context - auto-discover all .json files
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
112
|
+
const translationContext = (require as any).context('./', false, /\\.json$/);
|
|
115
113
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
114
|
+
/**
|
|
115
|
+
* Load all JSON modules automatically
|
|
116
|
+
* Extracts module name from path (e.g., './auth.json' -> 'auth')
|
|
117
|
+
*/
|
|
118
|
+
const translations: Record<string, any> = {};
|
|
119
|
+
|
|
120
|
+
translationContext.keys().forEach((key: string) => {
|
|
121
|
+
// Extract module name from path: './auth.json' -> 'auth'
|
|
122
|
+
const match = key.match(/\\.\\/([^/]+)\\.json$/);
|
|
123
|
+
if (match) {
|
|
124
|
+
const moduleName = match[1];
|
|
125
|
+
translations[moduleName] = translationContext(key);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
121
128
|
|
|
122
129
|
export default translations;
|
|
123
130
|
`;
|
|
@@ -159,9 +159,122 @@ async function setupLanguages() {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
// Create index.ts files for all languages (including en-US)
|
|
163
|
+
console.log(`\n📝 Creating index.ts loaders for all languages...`);
|
|
164
|
+
let createdIndexFiles = 0;
|
|
165
|
+
|
|
166
|
+
// Create index.ts for en-US
|
|
167
|
+
const enUSIndexPath = path.join(enUSDir, 'index.ts');
|
|
168
|
+
if (!fs.existsSync(enUSIndexPath)) {
|
|
169
|
+
const enUSIndexContent = `/**
|
|
170
|
+
* Auto-loader for en-US translation modules
|
|
171
|
+
*
|
|
172
|
+
* AUTOMATIC TRANSLATION FILE DETECTION:
|
|
173
|
+
* - Uses Metro bundler's require.context to auto-discover .json files
|
|
174
|
+
* - Adding new translation file = just create .json file (zero manual updates)
|
|
175
|
+
* - Build-time resolution (fast, no runtime overhead)
|
|
176
|
+
* - Works for all languages automatically
|
|
177
|
+
*
|
|
178
|
+
* OFFLINE-ONLY TRANSLATIONS (All domains work without backend):
|
|
179
|
+
* - Automatically imports ALL .json files in this directory
|
|
180
|
+
* - Alphabetically sorted for consistency
|
|
181
|
+
* - Type-safe with TypeScript
|
|
182
|
+
*
|
|
183
|
+
* USAGE:
|
|
184
|
+
* 1. Create new translation file: my_domain.json
|
|
185
|
+
* 2. File is auto-discovered and loaded
|
|
186
|
+
* 3. Access via t('my_domain.key')
|
|
187
|
+
*
|
|
188
|
+
* This file is automatically generated by setup-languages.js
|
|
189
|
+
* but can be manually edited if needed.
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
// Metro bundler require.context - auto-discover all .json files
|
|
193
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
194
|
+
const translationContext = (require as any).context('./', false, /\\.json$/);
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Load all JSON modules automatically
|
|
198
|
+
* Extracts module name from path (e.g., './auth.json' -> 'auth')
|
|
199
|
+
*/
|
|
200
|
+
const translations: Record<string, any> = {};
|
|
201
|
+
|
|
202
|
+
translationContext.keys().forEach((key: string) => {
|
|
203
|
+
// Extract module name from path: './auth.json' -> 'auth'
|
|
204
|
+
const match = key.match(/\\.\\/([^/]+)\\.json$/);
|
|
205
|
+
if (match) {
|
|
206
|
+
const moduleName = match[1];
|
|
207
|
+
translations[moduleName] = translationContext(key);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
export default translations;
|
|
212
|
+
`;
|
|
213
|
+
fs.writeFileSync(enUSIndexPath, enUSIndexContent, 'utf8');
|
|
214
|
+
console.log(` 📄 Created: en-US/index.ts`);
|
|
215
|
+
createdIndexFiles++;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Create index.ts for all other languages
|
|
219
|
+
for (const langCode of LANGUAGES) {
|
|
220
|
+
const langDir = path.join(localesDir, langCode);
|
|
221
|
+
const indexPath = path.join(langDir, 'index.ts');
|
|
222
|
+
|
|
223
|
+
if (fs.existsSync(langDir) && !fs.existsSync(indexPath)) {
|
|
224
|
+
const indexContent = `/**
|
|
225
|
+
* Auto-loader for ${langCode} translation modules
|
|
226
|
+
*
|
|
227
|
+
* AUTOMATIC TRANSLATION FILE DETECTION:
|
|
228
|
+
* - Uses Metro bundler's require.context to auto-discover .json files
|
|
229
|
+
* - Adding new translation file = just create .json file (zero manual updates)
|
|
230
|
+
* - Build-time resolution (fast, no runtime overhead)
|
|
231
|
+
* - Works for all languages automatically
|
|
232
|
+
*
|
|
233
|
+
* OFFLINE-ONLY TRANSLATIONS (All domains work without backend):
|
|
234
|
+
* - Automatically imports ALL .json files in this directory
|
|
235
|
+
* - Alphabetically sorted for consistency
|
|
236
|
+
* - Type-safe with TypeScript
|
|
237
|
+
*
|
|
238
|
+
* USAGE:
|
|
239
|
+
* 1. Create new translation file: my_domain.json
|
|
240
|
+
* 2. File is auto-discovered and loaded
|
|
241
|
+
* 3. Access via t('my_domain.key')
|
|
242
|
+
*
|
|
243
|
+
* This file is automatically generated by setup-languages.js
|
|
244
|
+
* but can be manually edited if needed.
|
|
245
|
+
*/
|
|
246
|
+
|
|
247
|
+
// Metro bundler require.context - auto-discover all .json files
|
|
248
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
249
|
+
const translationContext = (require as any).context('./', false, /\\.json$/);
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Load all JSON modules automatically
|
|
253
|
+
* Extracts module name from path (e.g., './auth.json' -> 'auth')
|
|
254
|
+
*/
|
|
255
|
+
const translations: Record<string, any> = {};
|
|
256
|
+
|
|
257
|
+
translationContext.keys().forEach((key: string) => {
|
|
258
|
+
// Extract module name from path: './auth.json' -> 'auth'
|
|
259
|
+
const match = key.match(/\\.\\/([^/]+)\\.json$/);
|
|
260
|
+
if (match) {
|
|
261
|
+
const moduleName = match[1];
|
|
262
|
+
translations[moduleName] = translationContext(key);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
export default translations;
|
|
267
|
+
`;
|
|
268
|
+
fs.writeFileSync(indexPath, indexContent, 'utf8');
|
|
269
|
+
console.log(` 📄 Created: ${langCode}/index.ts`);
|
|
270
|
+
createdIndexFiles++;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
162
274
|
console.log(`\n✅ Setup completed!`);
|
|
163
275
|
console.log(` Directories created: ${createdDirs}`);
|
|
164
276
|
console.log(` Files created: ${createdFiles}`);
|
|
277
|
+
console.log(` Index files created: ${createdIndexFiles}`);
|
|
165
278
|
console.log(` Total languages: ${LANGUAGES.length + 1} (including en-US)`);
|
|
166
279
|
console.log(
|
|
167
280
|
`\n📝 Next steps:`,
|
|
@@ -46,11 +46,8 @@ const loadPackageTranslations = (): Record<string, any> => {
|
|
|
46
46
|
try {
|
|
47
47
|
const translations = packageLocalesContext(key);
|
|
48
48
|
packageTranslations[languageCode] = translations.default || translations;
|
|
49
|
-
/* eslint-disable-next-line no-console */
|
|
50
|
-
if (__DEV__) console.log(`[i18n] ✅ Loaded package translations: ${languageCode}`);
|
|
51
49
|
} catch (error) {
|
|
52
|
-
|
|
53
|
-
if (__DEV__) console.warn(`[i18n] ⚠️ Failed to load package translations for ${languageCode}:`, error);
|
|
50
|
+
// Ignore individual language loading errors
|
|
54
51
|
}
|
|
55
52
|
}
|
|
56
53
|
});
|
|
@@ -84,17 +81,11 @@ try {
|
|
|
84
81
|
projectTranslations[languageCode] = {};
|
|
85
82
|
}
|
|
86
83
|
projectTranslations[languageCode] = translations.default || translations;
|
|
87
|
-
/* eslint-disable-next-line no-console */
|
|
88
|
-
if (__DEV__) console.log(`[i18n] ✅ Loaded project translations: ${languageCode}`);
|
|
89
84
|
} catch (error) {
|
|
90
|
-
|
|
91
|
-
if (__DEV__) console.warn(`[i18n] ⚠️ Failed to load project translations for ${languageCode}:`, error);
|
|
85
|
+
// Ignore individual language loading errors
|
|
92
86
|
}
|
|
93
87
|
}
|
|
94
88
|
});
|
|
95
|
-
|
|
96
|
-
/* eslint-disable-next-line no-console */
|
|
97
|
-
if (__DEV__) console.log('[i18n] ✅ Loaded project translations from DDD structure');
|
|
98
89
|
} catch (e1) {
|
|
99
90
|
try {
|
|
100
91
|
// Try alternative DDD structure path
|
|
@@ -116,9 +107,6 @@ try {
|
|
|
116
107
|
}
|
|
117
108
|
}
|
|
118
109
|
});
|
|
119
|
-
|
|
120
|
-
/* eslint-disable-next-line no-console */
|
|
121
|
-
if (__DEV__) console.log('[i18n] ✅ Loaded project translations from alternative DDD structure');
|
|
122
110
|
} catch (e2) {
|
|
123
111
|
try {
|
|
124
112
|
// Try simple structure path
|
|
@@ -140,13 +128,8 @@ try {
|
|
|
140
128
|
}
|
|
141
129
|
}
|
|
142
130
|
});
|
|
143
|
-
|
|
144
|
-
/* eslint-disable-next-line no-console */
|
|
145
|
-
if (__DEV__) console.log('[i18n] ✅ Loaded project translations from simple structure');
|
|
146
131
|
} catch (e3) {
|
|
147
132
|
// No project translations found - this is OK, use package defaults only
|
|
148
|
-
/* eslint-disable-next-line no-console */
|
|
149
|
-
if (__DEV__) console.log('[i18n] ℹ️ No project-specific translations found, using package defaults only');
|
|
150
133
|
}
|
|
151
134
|
}
|
|
152
135
|
}
|
|
@@ -209,9 +192,6 @@ const buildResources = (): Record<string, { translation: any }> => {
|
|
|
209
192
|
};
|
|
210
193
|
});
|
|
211
194
|
|
|
212
|
-
/* eslint-disable-next-line no-console */
|
|
213
|
-
if (__DEV__) console.log(`[i18n] 📦 Loaded ${Object.keys(resources).length} languages:`, Object.keys(resources).join(', '));
|
|
214
|
-
|
|
215
195
|
return resources;
|
|
216
196
|
};
|
|
217
197
|
|
|
@@ -227,17 +207,11 @@ const initializeI18n = () => {
|
|
|
227
207
|
if (isInitialized) return;
|
|
228
208
|
|
|
229
209
|
try {
|
|
230
|
-
/* eslint-disable-next-line no-console */
|
|
231
|
-
if (__DEV__) console.log('[i18n] Initializing i18next...');
|
|
232
|
-
|
|
233
210
|
// Check if initReactI18next is available
|
|
234
211
|
if (!initReactI18next) {
|
|
235
212
|
throw new Error('initReactI18next is undefined');
|
|
236
213
|
}
|
|
237
214
|
|
|
238
|
-
/* eslint-disable-next-line no-console */
|
|
239
|
-
if (__DEV__) console.log('[i18n] initReactI18next found, initializing...');
|
|
240
|
-
|
|
241
215
|
i18n.use(initReactI18next).init({
|
|
242
216
|
resources,
|
|
243
217
|
lng: DEFAULT_LANGUAGE,
|
|
@@ -257,14 +231,8 @@ const initializeI18n = () => {
|
|
|
257
231
|
});
|
|
258
232
|
|
|
259
233
|
isInitialized = true;
|
|
260
|
-
/* eslint-disable-next-line no-console */
|
|
261
|
-
if (__DEV__) console.log('[i18n] i18next initialized successfully');
|
|
262
234
|
} catch (error) {
|
|
263
|
-
/* eslint-disable-next-line no-console */
|
|
264
|
-
if (__DEV__) console.error('[i18n] Initialization error:', error);
|
|
265
235
|
// Don't throw - allow app to continue without i18n
|
|
266
|
-
/* eslint-disable-next-line no-console */
|
|
267
|
-
if (__DEV__) console.warn('[i18n] Continuing without i18n initialization');
|
|
268
236
|
}
|
|
269
237
|
};
|
|
270
238
|
|
|
@@ -242,7 +242,6 @@ export const getDeviceLocale = (): string => {
|
|
|
242
242
|
return DEFAULT_LANGUAGE;
|
|
243
243
|
} catch (error) {
|
|
244
244
|
// If any error occurs, fallback to default
|
|
245
|
-
console.warn('[Localization] Failed to detect device locale:', error);
|
|
246
245
|
return DEFAULT_LANGUAGE;
|
|
247
246
|
}
|
|
248
247
|
};
|
|
@@ -1,49 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Auto-
|
|
2
|
+
* Auto-loader for en-US translation modules
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* AUTOMATIC TRANSLATION FILE DETECTION:
|
|
5
|
+
* - Uses Metro bundler's require.context to auto-discover .json files
|
|
6
|
+
* - Adding new translation file = just create .json file (zero manual updates)
|
|
7
|
+
* - Build-time resolution (fast, no runtime overhead)
|
|
8
|
+
* - Works for all languages automatically
|
|
6
9
|
*
|
|
7
|
-
*
|
|
10
|
+
* OFFLINE-ONLY TRANSLATIONS (All domains work without backend):
|
|
11
|
+
* - Automatically imports ALL .json files in this directory
|
|
12
|
+
* - Alphabetically sorted for consistency
|
|
13
|
+
* - Type-safe with TypeScript
|
|
8
14
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
* - errors: errors.json
|
|
14
|
-
* - flashcards: flashcards.json
|
|
15
|
-
* - general: general.json
|
|
16
|
-
* - navigation: navigation.json
|
|
17
|
-
* - onboarding: onboarding.json
|
|
18
|
-
* - settings: settings.json
|
|
15
|
+
* USAGE:
|
|
16
|
+
* 1. Create new translation file: my_domain.json
|
|
17
|
+
* 2. File is auto-discovered and loaded
|
|
18
|
+
* 3. Access via t('my_domain.key')
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* This file is automatically generated by setup-languages.js script
|
|
21
|
+
* but can be manually edited if needed.
|
|
21
22
|
*/
|
|
22
23
|
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
const
|
|
26
|
-
const branding = require('./branding.json');
|
|
27
|
-
const datetime = require('./datetime.json');
|
|
28
|
-
const errors = require('./errors.json');
|
|
29
|
-
const flashcards = require('./flashcards.json');
|
|
30
|
-
const general = require('./general.json');
|
|
31
|
-
const navigation = require('./navigation.json');
|
|
32
|
-
const onboarding = require('./onboarding.json');
|
|
33
|
-
const settings = require('./settings.json');
|
|
24
|
+
// Metro bundler require.context - auto-discover all .json files
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
26
|
+
const translationContext = (require as any).context('./', false, /\.json$/);
|
|
34
27
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
28
|
+
/**
|
|
29
|
+
* Load all JSON modules automatically
|
|
30
|
+
* Extracts module name from path (e.g., './auth.json' -> 'auth')
|
|
31
|
+
*/
|
|
32
|
+
const translations: Record<string, any> = {};
|
|
33
|
+
|
|
34
|
+
translationContext.keys().forEach((key: string) => {
|
|
35
|
+
// Extract module name from path: './auth.json' -> 'auth'
|
|
36
|
+
const match = key.match(/\.\/([^/]+)\.json$/);
|
|
37
|
+
if (match) {
|
|
38
|
+
const moduleName = match[1];
|
|
39
|
+
translations[moduleName] = translationContext(key);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
48
42
|
|
|
49
43
|
export default translations;
|
|
@@ -15,7 +15,6 @@ export const StorageWrapper = {
|
|
|
15
15
|
const value = await AsyncStorage.getItem(key);
|
|
16
16
|
return value ?? defaultValue;
|
|
17
17
|
} catch (error) {
|
|
18
|
-
console.warn('[Localization] Failed to get storage value:', error);
|
|
19
18
|
return defaultValue;
|
|
20
19
|
}
|
|
21
20
|
},
|
|
@@ -24,7 +23,7 @@ export const StorageWrapper = {
|
|
|
24
23
|
try {
|
|
25
24
|
await AsyncStorage.setItem(key, value);
|
|
26
25
|
} catch (error) {
|
|
27
|
-
|
|
26
|
+
// Ignore storage errors
|
|
28
27
|
}
|
|
29
28
|
},
|
|
30
29
|
};
|
|
@@ -33,84 +33,42 @@ export const useLocalizationStore = create<LocalizationState>((set, get) => ({
|
|
|
33
33
|
* - Fallback: English (en-US) if device locale not supported
|
|
34
34
|
*/
|
|
35
35
|
initialize: async () => {
|
|
36
|
-
/* eslint-disable-next-line no-console */
|
|
37
|
-
if (__DEV__) console.log('[LocalizationStore] Starting initialization...');
|
|
38
|
-
|
|
39
36
|
try {
|
|
40
37
|
// ✅ CRITICAL FIX: Don't reset isInitialized if already initialized
|
|
41
38
|
// This prevents UI flash on re-initialization
|
|
42
39
|
const { isInitialized: alreadyInitialized } = get();
|
|
43
40
|
if (alreadyInitialized) {
|
|
44
|
-
/* eslint-disable-next-line no-console */
|
|
45
|
-
if (__DEV__) console.log('[LocalizationStore] Already initialized, skipping...');
|
|
46
41
|
return;
|
|
47
42
|
}
|
|
48
43
|
|
|
49
|
-
/* eslint-disable-next-line no-console */
|
|
50
|
-
if (__DEV__) console.log('[LocalizationStore] Getting saved language preference...');
|
|
51
44
|
// Get saved language preference
|
|
52
45
|
const savedLanguage = await StorageWrapper.getString(STORAGE_KEYS.LANGUAGE, DEFAULT_LANGUAGE);
|
|
53
|
-
/* eslint-disable-next-line no-console */
|
|
54
|
-
if (__DEV__) console.log('[LocalizationStore] Saved language:', savedLanguage);
|
|
55
46
|
|
|
56
47
|
// ✅ DEVICE LOCALE DETECTION: Use device locale on first launch
|
|
57
48
|
let languageCode: string;
|
|
58
49
|
if (savedLanguage && savedLanguage !== DEFAULT_LANGUAGE) {
|
|
59
50
|
// User has previously selected a language → Use their choice
|
|
60
|
-
/* eslint-disable-next-line no-console */
|
|
61
|
-
if (__DEV__) console.log('[LocalizationStore] Using saved language preference:', savedLanguage);
|
|
62
51
|
languageCode = savedLanguage;
|
|
63
52
|
} else {
|
|
64
53
|
// First launch → Detect device locale automatically
|
|
65
|
-
/* eslint-disable-next-line no-console */
|
|
66
|
-
if (__DEV__) console.log('[LocalizationStore] First launch, detecting device locale...');
|
|
67
54
|
languageCode = getDeviceLocale();
|
|
68
|
-
/* eslint-disable-next-line no-console */
|
|
69
|
-
if (__DEV__) console.log('[LocalizationStore] Detected device locale:', languageCode);
|
|
70
55
|
// Save detected locale for future launches
|
|
71
56
|
await StorageWrapper.setString(STORAGE_KEYS.LANGUAGE, languageCode);
|
|
72
|
-
/* eslint-disable-next-line no-console */
|
|
73
|
-
if (__DEV__) console.log('[LocalizationStore] Saved detected locale to storage');
|
|
74
57
|
}
|
|
75
58
|
|
|
76
59
|
// ✅ DEFENSIVE: Validate language exists, fallback to default
|
|
77
|
-
/* eslint-disable-next-line no-console */
|
|
78
|
-
if (__DEV__) console.log('[LocalizationStore] Validating language code:', languageCode);
|
|
79
60
|
const language = getLanguageByCode(languageCode);
|
|
80
61
|
const finalLanguage = language ? languageCode : DEFAULT_LANGUAGE;
|
|
81
62
|
const finalLanguageObj = getLanguageByCode(finalLanguage);
|
|
82
|
-
|
|
83
|
-
if (!language) {
|
|
84
|
-
/* eslint-disable-next-line no-console */
|
|
85
|
-
console.warn('[LocalizationStore] ⚠️ Language not found:', languageCode, 'falling back to:', DEFAULT_LANGUAGE);
|
|
86
|
-
}
|
|
87
63
|
|
|
88
|
-
/* eslint-disable-next-line no-console */
|
|
89
|
-
if (__DEV__) console.log('[LocalizationStore] Changing i18n language to:', finalLanguage);
|
|
90
64
|
await i18n.changeLanguage(finalLanguage);
|
|
91
65
|
|
|
92
|
-
/* eslint-disable-next-line no-console */
|
|
93
|
-
if (__DEV__) console.log('[LocalizationStore] Setting store state...');
|
|
94
66
|
set({
|
|
95
67
|
currentLanguage: finalLanguage,
|
|
96
68
|
isRTL: finalLanguageObj?.rtl || false,
|
|
97
69
|
isInitialized: true, // ✅ Always set true to unblock UI
|
|
98
70
|
});
|
|
99
|
-
|
|
100
|
-
/* eslint-disable-next-line no-console */
|
|
101
|
-
if (__DEV__) console.log('[LocalizationStore] ✅ Initialization complete. Language:', finalLanguage, 'RTL:', finalLanguageObj?.rtl || false);
|
|
102
71
|
} catch (error) {
|
|
103
|
-
/* eslint-disable-next-line no-console */
|
|
104
|
-
console.error('[LocalizationStore] ❌ FATAL: Initialization failed:', error);
|
|
105
|
-
/* eslint-disable-next-line no-console */
|
|
106
|
-
if (error instanceof Error) {
|
|
107
|
-
/* eslint-disable-next-line no-console */
|
|
108
|
-
console.error('[LocalizationStore] Error name:', error.name);
|
|
109
|
-
/* eslint-disable-next-line no-console */
|
|
110
|
-
console.error('[LocalizationStore] Error message:', error.message);
|
|
111
|
-
/* eslint-disable-next-line no-console */
|
|
112
|
-
console.error('[LocalizationStore] Error stack:', error.stack);
|
|
113
|
-
}
|
|
114
72
|
// Set to default language even on error to prevent app from breaking
|
|
115
73
|
try {
|
|
116
74
|
await i18n.changeLanguage(DEFAULT_LANGUAGE);
|
|
@@ -119,11 +77,7 @@ export const useLocalizationStore = create<LocalizationState>((set, get) => ({
|
|
|
119
77
|
isRTL: false,
|
|
120
78
|
isInitialized: true, // Set true even on error to unblock UI
|
|
121
79
|
});
|
|
122
|
-
/* eslint-disable-next-line no-console */
|
|
123
|
-
console.warn('[LocalizationStore] ⚠️ Fallback to default language due to error');
|
|
124
80
|
} catch (fallbackError) {
|
|
125
|
-
/* eslint-disable-next-line no-console */
|
|
126
|
-
console.error('[LocalizationStore] ❌ CRITICAL: Even fallback failed:', fallbackError);
|
|
127
81
|
throw fallbackError;
|
|
128
82
|
}
|
|
129
83
|
}
|
|
@@ -134,42 +88,26 @@ export const useLocalizationStore = create<LocalizationState>((set, get) => ({
|
|
|
134
88
|
* Updates i18n, state, and persists to AsyncStorage
|
|
135
89
|
*/
|
|
136
90
|
setLanguage: async (languageCode: string) => {
|
|
137
|
-
/* eslint-disable-next-line no-console */
|
|
138
|
-
if (__DEV__) console.log('[LocalizationStore] Changing language to:', languageCode);
|
|
139
|
-
|
|
140
91
|
try {
|
|
141
92
|
const language = getLanguageByCode(languageCode);
|
|
142
93
|
|
|
143
94
|
// ✅ DEFENSIVE: Early return if unsupported language
|
|
144
95
|
if (!language) {
|
|
145
|
-
/* eslint-disable-next-line no-console */
|
|
146
|
-
console.warn('[LocalizationStore] ⚠️ Unsupported language code:', languageCode);
|
|
147
96
|
return;
|
|
148
97
|
}
|
|
149
98
|
|
|
150
|
-
/* eslint-disable-next-line no-console */
|
|
151
|
-
if (__DEV__) console.log('[LocalizationStore] Updating i18n language...');
|
|
152
99
|
// Update i18n
|
|
153
100
|
await i18n.changeLanguage(languageCode);
|
|
154
101
|
|
|
155
|
-
/* eslint-disable-next-line no-console */
|
|
156
|
-
if (__DEV__) console.log('[LocalizationStore] Updating store state...');
|
|
157
102
|
// Update state
|
|
158
103
|
set({
|
|
159
104
|
currentLanguage: languageCode,
|
|
160
105
|
isRTL: language.rtl || false,
|
|
161
106
|
});
|
|
162
107
|
|
|
163
|
-
/* eslint-disable-next-line no-console */
|
|
164
|
-
if (__DEV__) console.log('[LocalizationStore] Persisting language preference...');
|
|
165
108
|
// Persist language preference
|
|
166
109
|
await StorageWrapper.setString(STORAGE_KEYS.LANGUAGE, languageCode);
|
|
167
|
-
|
|
168
|
-
/* eslint-disable-next-line no-console */
|
|
169
|
-
if (__DEV__) console.log('[LocalizationStore] ✅ Language changed successfully to:', languageCode);
|
|
170
110
|
} catch (error) {
|
|
171
|
-
/* eslint-disable-next-line no-console */
|
|
172
|
-
console.error('[LocalizationStore] ❌ Error changing language:', error);
|
|
173
111
|
throw error;
|
|
174
112
|
}
|
|
175
113
|
},
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Localization Repository Interface
|
|
3
|
-
* Defines language configuration and types
|
|
4
|
-
*/
|
|
5
|
-
export interface Language {
|
|
6
|
-
code: string;
|
|
7
|
-
name: string;
|
|
8
|
-
nativeName: string;
|
|
9
|
-
flag: string;
|
|
10
|
-
rtl?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface ILocalizationRepository {
|
|
13
|
-
getSupportedLanguages(): Language[];
|
|
14
|
-
getLanguageByCode(code: string): Language | undefined;
|
|
15
|
-
isLanguageSupported(code: string): boolean;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=ILocalizationRepository.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ILocalizationRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/ILocalizationRepository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,qBAAqB,IAAI,QAAQ,EAAE,CAAC;IACpC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ILocalizationRepository.js","sourceRoot":"","sources":["../../../src/domain/repositories/ILocalizationRepository.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/lib/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React Native Localization
|
|
3
|
-
* Universal localization system with i18n support for React Native apps
|
|
4
|
-
*/
|
|
5
|
-
export { useLocalization, useLocalizationStore } from './infrastructure/storage/LocalizationStore';
|
|
6
|
-
export { LocalizationProvider } from './infrastructure/components/LocalizationProvider';
|
|
7
|
-
export { LanguageSwitcher } from './infrastructure/components/LanguageSwitcher';
|
|
8
|
-
export { useLanguageNavigation } from './infrastructure/components/useLanguageNavigation';
|
|
9
|
-
export { default as i18n } from './infrastructure/config/i18n';
|
|
10
|
-
export { SUPPORTED_LANGUAGES, LANGUAGES, // Alias for SUPPORTED_LANGUAGES (backward compatibility)
|
|
11
|
-
DEFAULT_LANGUAGE, getLanguageByCode, isLanguageSupported, getDefaultLanguage, getDeviceLocale, searchLanguages, } from './infrastructure/config/languages';
|
|
12
|
-
export type { Language, ILocalizationRepository } from './domain/repositories/ILocalizationRepository';
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAGnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAG1F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,SAAS,EAAE,yDAAyD;AACpE,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC"}
|
package/lib/index.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React Native Localization
|
|
3
|
-
* Universal localization system with i18n support for React Native apps
|
|
4
|
-
*/
|
|
5
|
-
// Hooks
|
|
6
|
-
export { useLocalization, useLocalizationStore } from './infrastructure/storage/LocalizationStore';
|
|
7
|
-
// Components
|
|
8
|
-
export { LocalizationProvider } from './infrastructure/components/LocalizationProvider';
|
|
9
|
-
export { LanguageSwitcher } from './infrastructure/components/LanguageSwitcher';
|
|
10
|
-
export { useLanguageNavigation } from './infrastructure/components/useLanguageNavigation';
|
|
11
|
-
// Configuration
|
|
12
|
-
export { default as i18n } from './infrastructure/config/i18n';
|
|
13
|
-
export { SUPPORTED_LANGUAGES, LANGUAGES, // Alias for SUPPORTED_LANGUAGES (backward compatibility)
|
|
14
|
-
DEFAULT_LANGUAGE, getLanguageByCode, isLanguageSupported, getDefaultLanguage, getDeviceLocale, searchLanguages, } from './infrastructure/config/languages';
|
|
15
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAEnG,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAE1F,gBAAgB;AAChB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,SAAS,EAAE,yDAAyD;AACpE,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,mCAAmC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface LanguageSwitcherProps {
|
|
3
|
-
showName?: boolean;
|
|
4
|
-
showFlag?: boolean;
|
|
5
|
-
color?: string;
|
|
6
|
-
navigationScreen?: string;
|
|
7
|
-
style?: any;
|
|
8
|
-
textStyle?: any;
|
|
9
|
-
}
|
|
10
|
-
export declare const LanguageSwitcher: React.FC<LanguageSwitcherProps>;
|
|
11
|
-
export default LanguageSwitcher;
|
|
12
|
-
//# sourceMappingURL=LanguageSwitcher.d.ts.map
|