@umituz/react-native-localization 1.3.10 ā 1.5.0
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/lib/infrastructure/config/i18n.d.ts +5 -0
- package/lib/infrastructure/config/i18n.d.ts.map +1 -1
- package/lib/infrastructure/config/i18n.js +192 -17
- package/lib/infrastructure/config/i18n.js.map +1 -1
- package/lib/infrastructure/locales/en-US/index.d.ts +21 -26
- package/lib/infrastructure/locales/en-US/index.d.ts.map +1 -1
- package/lib/infrastructure/locales/en-US/index.js +32 -39
- package/lib/infrastructure/locales/en-US/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/createLocaleLoaders.js +35 -28
- package/scripts/setup-languages.js +113 -0
- package/src/infrastructure/config/i18n.ts +200 -18
- package/src/infrastructure/locales/en-US/index.ts +33 -39
- 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/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/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
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* i18next Configuration
|
|
3
3
|
* Nested translation structure - common translations spread, domain translations nested
|
|
4
|
+
*
|
|
5
|
+
* AUTOMATIC LANGUAGE LOADING:
|
|
6
|
+
* - Uses require.context to auto-discover all language directories
|
|
7
|
+
* - No manual imports needed - all languages loaded automatically
|
|
8
|
+
* - Project translations merged with package defaults
|
|
4
9
|
*/
|
|
5
10
|
import i18n from 'i18next';
|
|
6
11
|
export default i18n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/i18n.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAgR3B,eAAe,IAAI,CAAC"}
|
|
@@ -1,35 +1,210 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* i18next Configuration
|
|
3
3
|
* Nested translation structure - common translations spread, domain translations nested
|
|
4
|
+
*
|
|
5
|
+
* AUTOMATIC LANGUAGE LOADING:
|
|
6
|
+
* - Uses require.context to auto-discover all language directories
|
|
7
|
+
* - No manual imports needed - all languages loaded automatically
|
|
8
|
+
* - Project translations merged with package defaults
|
|
4
9
|
*/
|
|
5
10
|
import i18n from 'i18next';
|
|
6
11
|
import { initReactI18next } from 'react-i18next';
|
|
7
12
|
import { DEFAULT_LANGUAGE } from './languages';
|
|
8
13
|
/**
|
|
9
|
-
*
|
|
10
|
-
* Each locale has an index.ts that merges all JSON files
|
|
14
|
+
* AUTOMATIC LANGUAGE LOADING
|
|
11
15
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* en-US/ (universal translations in localization domain)
|
|
15
|
-
* index.ts (merges common.json, navigation.json, settings.json, onboarding.json, errors.json)
|
|
16
|
+
* Uses Metro bundler's require.context to automatically discover and load
|
|
17
|
+
* all language directories. No manual imports needed!
|
|
16
18
|
*
|
|
17
|
-
*
|
|
19
|
+
* Structure:
|
|
20
|
+
* locales/
|
|
21
|
+
* ar-SA/index.ts
|
|
22
|
+
* bg-BG/index.ts
|
|
23
|
+
* en-US/index.ts
|
|
24
|
+
* ... (all languages auto-discovered)
|
|
18
25
|
*/
|
|
19
|
-
//
|
|
20
|
-
|
|
26
|
+
// Auto-load all package locale directories using require.context
|
|
27
|
+
// This automatically discovers all language folders (ar-SA, bg-BG, en-US, etc.)
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
|
+
const packageLocalesContext = require.context('../locales', true, /\/index\.ts$/);
|
|
30
|
+
/**
|
|
31
|
+
* Load all package translations automatically
|
|
32
|
+
* Extracts language code from path (e.g., './ar-SA/index.ts' -> 'ar-SA')
|
|
33
|
+
*/
|
|
34
|
+
const loadPackageTranslations = () => {
|
|
35
|
+
const packageTranslations = {};
|
|
36
|
+
packageLocalesContext.keys().forEach((key) => {
|
|
37
|
+
// Extract language code from path: './ar-SA/index.ts' -> 'ar-SA'
|
|
38
|
+
const match = key.match(/\.\/([^/]+)\/index\.ts$/);
|
|
39
|
+
if (match) {
|
|
40
|
+
const languageCode = match[1];
|
|
41
|
+
try {
|
|
42
|
+
const translations = packageLocalesContext(key);
|
|
43
|
+
packageTranslations[languageCode] = translations.default || translations;
|
|
44
|
+
/* eslint-disable-next-line no-console */
|
|
45
|
+
if (__DEV__)
|
|
46
|
+
console.log(`[i18n] ā
Loaded package translations: ${languageCode}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
/* eslint-disable-next-line no-console */
|
|
50
|
+
if (__DEV__)
|
|
51
|
+
console.warn(`[i18n] ā ļø Failed to load package translations for ${languageCode}:`, error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return packageTranslations;
|
|
56
|
+
};
|
|
57
|
+
const packageTranslations = loadPackageTranslations();
|
|
58
|
+
/**
|
|
59
|
+
* Try to load project-specific translations
|
|
60
|
+
* Metro bundler will resolve these at build time if they exist
|
|
61
|
+
* If they don't exist, the require will fail gracefully
|
|
62
|
+
*/
|
|
63
|
+
let projectTranslations = {};
|
|
64
|
+
// Try to load project translations from common paths
|
|
65
|
+
// Metro bundler will include these if they exist at build time
|
|
66
|
+
try {
|
|
67
|
+
// Try DDD structure path with require.context for automatic discovery
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
69
|
+
const projectLocalesContext = require.context('../../../../../../src/domains/localization/infrastructure/locales', true, /\/index\.ts$/);
|
|
70
|
+
projectLocalesContext.keys().forEach((key) => {
|
|
71
|
+
const match = key.match(/\.\/([^/]+)\/index\.ts$/);
|
|
72
|
+
if (match) {
|
|
73
|
+
const languageCode = match[1];
|
|
74
|
+
try {
|
|
75
|
+
const translations = projectLocalesContext(key);
|
|
76
|
+
if (!projectTranslations[languageCode]) {
|
|
77
|
+
projectTranslations[languageCode] = {};
|
|
78
|
+
}
|
|
79
|
+
projectTranslations[languageCode] = translations.default || translations;
|
|
80
|
+
/* eslint-disable-next-line no-console */
|
|
81
|
+
if (__DEV__)
|
|
82
|
+
console.log(`[i18n] ā
Loaded project translations: ${languageCode}`);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
/* eslint-disable-next-line no-console */
|
|
86
|
+
if (__DEV__)
|
|
87
|
+
console.warn(`[i18n] ā ļø Failed to load project translations for ${languageCode}:`, error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
/* eslint-disable-next-line no-console */
|
|
92
|
+
if (__DEV__)
|
|
93
|
+
console.log('[i18n] ā
Loaded project translations from DDD structure');
|
|
94
|
+
}
|
|
95
|
+
catch (e1) {
|
|
96
|
+
try {
|
|
97
|
+
// Try alternative DDD structure path
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
99
|
+
const projectLocalesContext = require.context('../../../../../../domains/localization/infrastructure/locales', true, /\/index\.ts$/);
|
|
100
|
+
projectLocalesContext.keys().forEach((key) => {
|
|
101
|
+
const match = key.match(/\.\/([^/]+)\/index\.ts$/);
|
|
102
|
+
if (match) {
|
|
103
|
+
const languageCode = match[1];
|
|
104
|
+
try {
|
|
105
|
+
const translations = projectLocalesContext(key);
|
|
106
|
+
if (!projectTranslations[languageCode]) {
|
|
107
|
+
projectTranslations[languageCode] = {};
|
|
108
|
+
}
|
|
109
|
+
projectTranslations[languageCode] = translations.default || translations;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Ignore individual language errors
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
/* eslint-disable-next-line no-console */
|
|
117
|
+
if (__DEV__)
|
|
118
|
+
console.log('[i18n] ā
Loaded project translations from alternative DDD structure');
|
|
119
|
+
}
|
|
120
|
+
catch (e2) {
|
|
121
|
+
try {
|
|
122
|
+
// Try simple structure path
|
|
123
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
124
|
+
const projectLocalesContext = require.context('../../../../../../src/locales', true, /\/index\.ts$/);
|
|
125
|
+
projectLocalesContext.keys().forEach((key) => {
|
|
126
|
+
const match = key.match(/\.\/([^/]+)\/index\.ts$/);
|
|
127
|
+
if (match) {
|
|
128
|
+
const languageCode = match[1];
|
|
129
|
+
try {
|
|
130
|
+
const translations = projectLocalesContext(key);
|
|
131
|
+
if (!projectTranslations[languageCode]) {
|
|
132
|
+
projectTranslations[languageCode] = {};
|
|
133
|
+
}
|
|
134
|
+
projectTranslations[languageCode] = translations.default || translations;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
// Ignore individual language errors
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
/* eslint-disable-next-line no-console */
|
|
142
|
+
if (__DEV__)
|
|
143
|
+
console.log('[i18n] ā
Loaded project translations from simple structure');
|
|
144
|
+
}
|
|
145
|
+
catch (e3) {
|
|
146
|
+
// No project translations found - this is OK, use package defaults only
|
|
147
|
+
/* eslint-disable-next-line no-console */
|
|
148
|
+
if (__DEV__)
|
|
149
|
+
console.log('[i18n] ā¹ļø No project-specific translations found, using package defaults only');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
21
153
|
/**
|
|
22
154
|
* Translation Resources
|
|
23
|
-
*
|
|
24
|
-
*
|
|
155
|
+
* Merge package defaults with project-specific translations
|
|
156
|
+
* Project translations override package defaults (deep merge)
|
|
157
|
+
*/
|
|
158
|
+
const mergeTranslations = (packageTranslations, projectTranslations) => {
|
|
159
|
+
if (!projectTranslations || Object.keys(projectTranslations).length === 0) {
|
|
160
|
+
return packageTranslations;
|
|
161
|
+
}
|
|
162
|
+
// Deep merge: project translations override package defaults
|
|
163
|
+
const merged = { ...packageTranslations };
|
|
164
|
+
for (const key in projectTranslations) {
|
|
165
|
+
if (projectTranslations.hasOwnProperty(key)) {
|
|
166
|
+
if (typeof projectTranslations[key] === 'object' &&
|
|
167
|
+
projectTranslations[key] !== null &&
|
|
168
|
+
!Array.isArray(projectTranslations[key]) &&
|
|
169
|
+
typeof packageTranslations[key] === 'object' &&
|
|
170
|
+
packageTranslations[key] !== null &&
|
|
171
|
+
!Array.isArray(packageTranslations[key])) {
|
|
172
|
+
// Deep merge nested objects
|
|
173
|
+
merged[key] = mergeTranslations(packageTranslations[key], projectTranslations[key]);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Override with project translation
|
|
177
|
+
merged[key] = projectTranslations[key];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return merged;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Build resources object for all languages
|
|
185
|
+
* Automatically includes all package languages + project languages
|
|
25
186
|
*/
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
187
|
+
const buildResources = () => {
|
|
188
|
+
const resources = {};
|
|
189
|
+
// Get all unique language codes from both package and project translations
|
|
190
|
+
const allLanguageCodes = new Set([
|
|
191
|
+
...Object.keys(packageTranslations),
|
|
192
|
+
...Object.keys(projectTranslations),
|
|
193
|
+
]);
|
|
194
|
+
// Build resources for each language
|
|
195
|
+
allLanguageCodes.forEach((languageCode) => {
|
|
196
|
+
const packageTranslation = packageTranslations[languageCode] || {};
|
|
197
|
+
const projectTranslation = projectTranslations[languageCode] || {};
|
|
198
|
+
resources[languageCode] = {
|
|
199
|
+
translation: mergeTranslations(packageTranslation, projectTranslation),
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
/* eslint-disable-next-line no-console */
|
|
203
|
+
if (__DEV__)
|
|
204
|
+
console.log(`[i18n] š¦ Loaded ${Object.keys(resources).length} languages:`, Object.keys(resources).join(', '));
|
|
205
|
+
return resources;
|
|
32
206
|
};
|
|
207
|
+
const resources = buildResources();
|
|
33
208
|
/**
|
|
34
209
|
* Initialize i18next
|
|
35
210
|
* Deferred initialization to avoid React Native renderer conflicts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/infrastructure/config/i18n.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/infrastructure/config/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;;;;GAYG;AAEH,iEAAiE;AACjE,gFAAgF;AAChF,iEAAiE;AACjE,MAAM,qBAAqB,GAAI,OAAe,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAE3F;;;GAGG;AACH,MAAM,uBAAuB,GAAG,GAAwB,EAAE;IACxD,MAAM,mBAAmB,GAAwB,EAAE,CAAC;IAEpD,qBAAqB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QACnD,iEAAiE;QACjE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAChD,mBAAmB,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;gBACzE,yCAAyC;gBACzC,IAAI,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAI,OAAO;oBAAE,OAAO,CAAC,IAAI,CAAC,sDAAsD,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC;AAEtD;;;;GAIG;AACH,IAAI,mBAAmB,GAAwB,EAAE,CAAC;AAElD,qDAAqD;AACrD,+DAA+D;AAC/D,IAAI,CAAC;IACH,sEAAsE;IACtE,iEAAiE;IACjE,MAAM,qBAAqB,GAAI,OAAe,CAAC,OAAO,CAAC,mEAAmE,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAElJ,qBAAqB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;oBACvC,mBAAmB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;gBACzC,CAAC;gBACD,mBAAmB,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;gBACzE,yCAAyC;gBACzC,IAAI,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAI,OAAO;oBAAE,OAAO,CAAC,IAAI,CAAC,sDAAsD,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;AACtF,CAAC;AAAC,OAAO,EAAE,EAAE,CAAC;IACZ,IAAI,CAAC;QACH,qCAAqC;QACrC,iEAAiE;QACjE,MAAM,qBAAqB,GAAI,OAAe,CAAC,OAAO,CAAC,+DAA+D,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAE9I,qBAAqB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;wBACvC,mBAAmB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;oBACzC,CAAC;oBACD,mBAAmB,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;gBAC3E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,oCAAoC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IAClG,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,4BAA4B;YAC5B,iEAAiE;YACjE,MAAM,qBAAqB,GAAI,OAAe,CAAC,OAAO,CAAC,+BAA+B,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAE9G,qBAAqB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;gBACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACnD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC;wBACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;wBAChD,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;4BACvC,mBAAmB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;wBACzC,CAAC;wBACD,mBAAmB,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;oBAC3E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,oCAAoC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,yCAAyC;YACzC,IAAI,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,wEAAwE;YACxE,yCAAyC;YACzC,IAAI,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,mBAAwB,EAAE,mBAAwB,EAAO,EAAE;IACpF,IAAI,CAAC,mBAAmB,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,6DAA6D;IAC7D,MAAM,MAAM,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,IAAI,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,IACE,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC5C,mBAAmB,CAAC,GAAG,CAAC,KAAK,IAAI;gBACjC,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC5C,mBAAmB,CAAC,GAAG,CAAC,KAAK,IAAI;gBACjC,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EACxC,CAAC;gBACD,4BAA4B;gBAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAAG,GAAyC,EAAE;IAChE,MAAM,SAAS,GAAyC,EAAE,CAAC;IAE3D,2EAA2E;IAC3E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;QAC/B,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACnC,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;KACpC,CAAC,CAAC;IAEH,oCAAoC;IACpC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACxC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAEnE,SAAS,CAAC,YAAY,CAAC,GAAG;YACxB,WAAW,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;SACvE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5H,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;AAEnC;;;GAGG;AACH,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,IAAI,aAAa;QAAE,OAAO;IAE1B,IAAI,CAAC;QACH,yCAAyC;QACzC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE3D,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,yCAAyC;QACzC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAE3E,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;YAC9B,SAAS;YACT,GAAG,EAAE,gBAAgB;YACrB,WAAW,EAAE,gBAAgB;YAE7B,aAAa,EAAE;gBACb,WAAW,EAAE,KAAK,EAAE,+BAA+B;aACpD;YAED,KAAK,EAAE;gBACL,WAAW,EAAE,KAAK,EAAE,oCAAoC;aACzD;YAED,iBAAiB,EAAE,IAAI,EAAE,+DAA+D;YACxF,eAAe,EAAE,GAAG,EAAE,2CAA2C;YACjE,YAAY,EAAE,GAAG,EAAE,oCAAoC;SACxD,CAAC,CAAC;QAEH,aAAa,GAAG,IAAI,CAAC;QACrB,yCAAyC;QACzC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yCAAyC;QACzC,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAClE,mDAAmD;QACnD,yCAAyC;QACzC,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC;AAEF,4CAA4C;AAC5C,2DAA2D;AAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,yCAAyC;IACzC,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;KAAM,CAAC;IACN,mCAAmC;IACnC,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -1,34 +1,29 @@
|
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
flashcards: any;
|
|
28
|
-
general: any;
|
|
29
|
-
navigation: any;
|
|
30
|
-
onboarding: any;
|
|
31
|
-
settings: any;
|
|
32
|
-
};
|
|
23
|
+
/**
|
|
24
|
+
* Load all JSON modules automatically
|
|
25
|
+
* Extracts module name from path (e.g., './auth.json' -> 'auth')
|
|
26
|
+
*/
|
|
27
|
+
declare const translations: Record<string, any>;
|
|
33
28
|
export default translations;
|
|
34
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/locales/en-US/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/locales/en-US/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;GAGG;AACH,QAAA,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,CAAC;AAW7C,eAAe,YAAY,CAAC"}
|
|
@@ -1,47 +1,40 @@
|
|
|
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
|
-
//
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
datetime,
|
|
39
|
-
errors,
|
|
40
|
-
flashcards,
|
|
41
|
-
general,
|
|
42
|
-
navigation,
|
|
43
|
-
onboarding,
|
|
44
|
-
settings,
|
|
45
|
-
};
|
|
23
|
+
// Metro bundler require.context - auto-discover all .json files
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
25
|
+
const translationContext = require.context('./', false, /\.json$/);
|
|
26
|
+
/**
|
|
27
|
+
* Load all JSON modules automatically
|
|
28
|
+
* Extracts module name from path (e.g., './auth.json' -> 'auth')
|
|
29
|
+
*/
|
|
30
|
+
const translations = {};
|
|
31
|
+
translationContext.keys().forEach((key) => {
|
|
32
|
+
// Extract module name from path: './auth.json' -> 'auth'
|
|
33
|
+
const match = key.match(/\.\/([^/]+)\.json$/);
|
|
34
|
+
if (match) {
|
|
35
|
+
const moduleName = match[1];
|
|
36
|
+
translations[moduleName] = translationContext(key);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
46
39
|
export default translations;
|
|
47
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/infrastructure/locales/en-US/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/infrastructure/locales/en-US/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gEAAgE;AAChE,iEAAiE;AACjE,MAAM,kBAAkB,GAAI,OAAe,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,YAAY,GAAwB,EAAE,CAAC;AAE7C,kBAAkB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;IAChD,yDAAyD;IACzD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,YAAY,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -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:`,
|