@umituz/react-native-localization 1.0.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.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +292 -0
  3. package/lib/domain/repositories/ILocalizationRepository.d.ts +17 -0
  4. package/lib/domain/repositories/ILocalizationRepository.d.ts.map +1 -0
  5. package/lib/domain/repositories/ILocalizationRepository.js +6 -0
  6. package/lib/domain/repositories/ILocalizationRepository.js.map +1 -0
  7. package/lib/index.d.ts +10 -0
  8. package/lib/index.d.ts.map +1 -0
  9. package/lib/index.js +12 -0
  10. package/lib/index.js.map +1 -0
  11. package/lib/infrastructure/components/LocalizationProvider.d.ts +11 -0
  12. package/lib/infrastructure/components/LocalizationProvider.d.ts.map +1 -0
  13. package/lib/infrastructure/components/LocalizationProvider.js +14 -0
  14. package/lib/infrastructure/components/LocalizationProvider.js.map +1 -0
  15. package/lib/infrastructure/config/i18n.d.ts +7 -0
  16. package/lib/infrastructure/config/i18n.d.ts.map +1 -0
  17. package/lib/infrastructure/config/i18n.js +49 -0
  18. package/lib/infrastructure/config/i18n.js.map +1 -0
  19. package/lib/infrastructure/config/languages.d.ts +34 -0
  20. package/lib/infrastructure/config/languages.d.ts.map +1 -0
  21. package/lib/infrastructure/config/languages.js +200 -0
  22. package/lib/infrastructure/config/languages.js.map +1 -0
  23. package/lib/infrastructure/config/languagesData.d.ts +7 -0
  24. package/lib/infrastructure/config/languagesData.d.ts.map +1 -0
  25. package/lib/infrastructure/config/languagesData.js +36 -0
  26. package/lib/infrastructure/config/languagesData.js.map +1 -0
  27. package/lib/infrastructure/locales/en-US/animation.json +30 -0
  28. package/lib/infrastructure/locales/en-US/audio.json +56 -0
  29. package/lib/infrastructure/locales/en-US/datetime.json +140 -0
  30. package/lib/infrastructure/locales/en-US/emoji.json +29 -0
  31. package/lib/infrastructure/locales/en-US/errors.json +43 -0
  32. package/lib/infrastructure/locales/en-US/forms.json +38 -0
  33. package/lib/infrastructure/locales/en-US/general.json +56 -0
  34. package/lib/infrastructure/locales/en-US/icons.json +34 -0
  35. package/lib/infrastructure/locales/en-US/index.d.ts +757 -0
  36. package/lib/infrastructure/locales/en-US/index.d.ts.map +1 -0
  37. package/lib/infrastructure/locales/en-US/index.js +35 -0
  38. package/lib/infrastructure/locales/en-US/index.js.map +1 -0
  39. package/lib/infrastructure/locales/en-US/location.json +49 -0
  40. package/lib/infrastructure/locales/en-US/media.json +49 -0
  41. package/lib/infrastructure/locales/en-US/navigation.json +52 -0
  42. package/lib/infrastructure/locales/en-US/onboarding.json +76 -0
  43. package/lib/infrastructure/locales/en-US/settings.json +65 -0
  44. package/lib/infrastructure/locales/en-US/toast.json +38 -0
  45. package/lib/infrastructure/storage/AsyncStorageWrapper.d.ts +12 -0
  46. package/lib/infrastructure/storage/AsyncStorageWrapper.d.ts.map +1 -0
  47. package/lib/infrastructure/storage/AsyncStorageWrapper.js +29 -0
  48. package/lib/infrastructure/storage/AsyncStorageWrapper.js.map +1 -0
  49. package/lib/infrastructure/storage/LocalizationStore.d.ts +30 -0
  50. package/lib/infrastructure/storage/LocalizationStore.d.ts.map +1 -0
  51. package/lib/infrastructure/storage/LocalizationStore.js +90 -0
  52. package/lib/infrastructure/storage/LocalizationStore.js.map +1 -0
  53. package/package.json +64 -0
  54. package/src/domain/repositories/ILocalizationRepository.ts +18 -0
  55. package/src/index.ts +24 -0
  56. package/src/infrastructure/components/LocalizationProvider.tsx +21 -0
  57. package/src/infrastructure/config/i18n.ts +57 -0
  58. package/src/infrastructure/config/languages.ts +245 -0
  59. package/src/infrastructure/config/languagesData.ts +38 -0
  60. package/src/infrastructure/locales/en-US/animation.json +30 -0
  61. package/src/infrastructure/locales/en-US/audio.json +56 -0
  62. package/src/infrastructure/locales/en-US/datetime.json +140 -0
  63. package/src/infrastructure/locales/en-US/emoji.json +29 -0
  64. package/src/infrastructure/locales/en-US/errors.json +43 -0
  65. package/src/infrastructure/locales/en-US/forms.json +38 -0
  66. package/src/infrastructure/locales/en-US/general.json +56 -0
  67. package/src/infrastructure/locales/en-US/icons.json +34 -0
  68. package/src/infrastructure/locales/en-US/index.ts +36 -0
  69. package/src/infrastructure/locales/en-US/location.json +49 -0
  70. package/src/infrastructure/locales/en-US/media.json +49 -0
  71. package/src/infrastructure/locales/en-US/navigation.json +52 -0
  72. package/src/infrastructure/locales/en-US/onboarding.json +76 -0
  73. package/src/infrastructure/locales/en-US/settings.json +65 -0
  74. package/src/infrastructure/locales/en-US/toast.json +38 -0
  75. package/src/infrastructure/storage/AsyncStorageWrapper.ts +30 -0
  76. package/src/infrastructure/storage/LocalizationStore.ts +118 -0
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Supported Languages Configuration
3
+ * Complete list of 29 languages supported by the app
4
+ *
5
+ * SINGLE SOURCE OF TRUTH: Imports from constants/languages.ts
6
+ * - All language definitions come from one central location
7
+ * - Ensures consistency across app.json, i18n config, and UI
8
+ * - Automatic synchronization between all language configurations
9
+ *
10
+ * DEVICE LOCALE DETECTION:
11
+ * - First launch: Automatically detects device locale
12
+ * - Fallback: English (en-US) if device locale not supported
13
+ * - User choice: Persists after manual language selection
14
+ */
15
+ import * as Localization from 'expo-localization';
16
+ import { LANGUAGES } from './languagesData';
17
+ // Single source of truth for supported languages
18
+ export const SUPPORTED_LANGUAGES = LANGUAGES;
19
+ export const DEFAULT_LANGUAGE = 'en-US';
20
+ /**
21
+ * Locale mapping for device locales to supported app locales
22
+ * Maps short codes (e.g., "en") and iOS variants (e.g., "en-GB", "zh-Hans") to our supported locales
23
+ *
24
+ * COMPREHENSIVE MAPPING:
25
+ * - Short codes (ar, bg, cs, da, de, etc.) → Full locale codes (ar-SA, bg-BG, etc.)
26
+ * - iOS regional variants → Our standard locales
27
+ * - All 29 supported languages included
28
+ */
29
+ const LOCALE_MAPPING = {
30
+ // Arabic
31
+ 'ar': 'ar-SA',
32
+ 'ar-SA': 'ar-SA',
33
+ 'ar-AE': 'ar-SA',
34
+ 'ar-EG': 'ar-SA',
35
+ // Bulgarian
36
+ 'bg': 'bg-BG',
37
+ 'bg-BG': 'bg-BG',
38
+ // Czech
39
+ 'cs': 'cs-CZ',
40
+ 'cs-CZ': 'cs-CZ',
41
+ // Danish
42
+ 'da': 'da-DK',
43
+ 'da-DK': 'da-DK',
44
+ // German
45
+ 'de': 'de-DE',
46
+ 'de-DE': 'de-DE',
47
+ 'de-AT': 'de-DE',
48
+ 'de-CH': 'de-DE',
49
+ // Greek (iOS has el, we map to en-US fallback since we don't support Greek)
50
+ 'el': 'en-US',
51
+ // English variants
52
+ 'en': 'en-US',
53
+ 'en-US': 'en-US',
54
+ 'en-GB': 'en-US',
55
+ 'en-AU': 'en-US',
56
+ 'en-CA': 'en-US',
57
+ 'en-NZ': 'en-US',
58
+ 'en-IE': 'en-US',
59
+ 'en-ZA': 'en-US',
60
+ // Spanish
61
+ 'es': 'es-ES',
62
+ 'es-ES': 'es-ES',
63
+ 'es-MX': 'es-ES',
64
+ 'es-AR': 'es-ES',
65
+ // Finnish
66
+ 'fi': 'fi-FI',
67
+ 'fi-FI': 'fi-FI',
68
+ // French
69
+ 'fr': 'fr-FR',
70
+ 'fr-FR': 'fr-FR',
71
+ 'fr-CA': 'fr-FR',
72
+ 'fr-BE': 'fr-FR',
73
+ 'fr-CH': 'fr-FR',
74
+ // Hindi
75
+ 'hi': 'hi-IN',
76
+ 'hi-IN': 'hi-IN',
77
+ // Croatian (iOS has hr, we map to en-US fallback since we don't support Croatian)
78
+ 'hr': 'en-US',
79
+ // Hungarian
80
+ 'hu': 'hu-HU',
81
+ 'hu-HU': 'hu-HU',
82
+ // Indonesian
83
+ 'id': 'id-ID',
84
+ 'id-ID': 'id-ID',
85
+ // Italian
86
+ 'it': 'it-IT',
87
+ 'it-IT': 'it-IT',
88
+ // Japanese
89
+ 'ja': 'ja-JP',
90
+ 'ja-JP': 'ja-JP',
91
+ // Korean
92
+ 'ko': 'ko-KR',
93
+ 'ko-KR': 'ko-KR',
94
+ // Malay
95
+ 'ms': 'ms-MY',
96
+ 'ms-MY': 'ms-MY',
97
+ // Norwegian (iOS uses nb for Norwegian Bokmål)
98
+ 'nb': 'no-NO',
99
+ 'no': 'no-NO',
100
+ 'no-NO': 'no-NO',
101
+ // Dutch
102
+ 'nl': 'nl-NL',
103
+ 'nl-NL': 'nl-NL',
104
+ 'nl-BE': 'nl-NL',
105
+ // Polish
106
+ 'pl': 'pl-PL',
107
+ 'pl-PL': 'pl-PL',
108
+ // Portuguese
109
+ 'pt': 'pt-PT',
110
+ 'pt-PT': 'pt-PT',
111
+ 'pt-BR': 'pt-PT',
112
+ // Romanian
113
+ 'ro': 'ro-RO',
114
+ 'ro-RO': 'ro-RO',
115
+ // Russian
116
+ 'ru': 'ru-RU',
117
+ 'ru-RU': 'ru-RU',
118
+ // Slovak (iOS has sk, we map to en-US fallback since we don't support Slovak)
119
+ 'sk': 'en-US',
120
+ // Swedish
121
+ 'sv': 'sv-SE',
122
+ 'sv-SE': 'sv-SE',
123
+ // Thai
124
+ 'th': 'th-TH',
125
+ 'th-TH': 'th-TH',
126
+ // Filipino/Tagalog
127
+ 'tl': 'tl-PH',
128
+ 'tl-PH': 'tl-PH',
129
+ 'fil': 'tl-PH',
130
+ // Turkish
131
+ 'tr': 'tr-TR',
132
+ 'tr-TR': 'tr-TR',
133
+ // Ukrainian
134
+ 'uk': 'uk-UA',
135
+ 'uk-UA': 'uk-UA',
136
+ // Vietnamese
137
+ 'vi': 'vi-VN',
138
+ 'vi-VN': 'vi-VN',
139
+ // Chinese Simplified (iOS uses zh-Hans)
140
+ 'zh': 'zh-CN',
141
+ 'zh-CN': 'zh-CN',
142
+ 'zh-Hans': 'zh-CN',
143
+ 'zh-Hans-CN': 'zh-CN',
144
+ // Chinese Traditional (iOS uses zh-Hant, we map to zh-CN since we only support Simplified)
145
+ 'zh-Hant': 'zh-CN',
146
+ 'zh-TW': 'zh-CN',
147
+ 'zh-HK': 'zh-CN',
148
+ };
149
+ export const getLanguageByCode = (code) => {
150
+ return SUPPORTED_LANGUAGES.find((lang) => lang.code === code);
151
+ };
152
+ export const isLanguageSupported = (code) => {
153
+ return SUPPORTED_LANGUAGES.some((lang) => lang.code === code);
154
+ };
155
+ export const getDefaultLanguage = () => {
156
+ return SUPPORTED_LANGUAGES[0]; // en-US
157
+ };
158
+ /**
159
+ * Get device locale and map it to supported language
160
+ * Called ONLY on first launch (when no saved language preference exists)
161
+ *
162
+ * @returns Supported language code or DEFAULT_LANGUAGE
163
+ *
164
+ * Examples:
165
+ * - Device: "en" → Returns: "en-US"
166
+ * - Device: "en-GB" → Returns: "en-US"
167
+ * - Device: "tr" → Returns: "tr-TR" (if supported)
168
+ * - Device: "de" → Returns: "en-US" (not supported, fallback)
169
+ */
170
+ export const getDeviceLocale = () => {
171
+ try {
172
+ // Get device locale (e.g., "en-US", "tr-TR", or just "en")
173
+ const deviceLocale = Localization.locale;
174
+ if (!deviceLocale) {
175
+ return DEFAULT_LANGUAGE;
176
+ }
177
+ // Check if exact match exists in LOCALE_MAPPING
178
+ if (LOCALE_MAPPING[deviceLocale]) {
179
+ return LOCALE_MAPPING[deviceLocale];
180
+ }
181
+ // Extract language code (e.g., "en" from "en-US")
182
+ const languageCode = deviceLocale.split('-')[0];
183
+ // Check if language code exists in LOCALE_MAPPING
184
+ if (LOCALE_MAPPING[languageCode]) {
185
+ return LOCALE_MAPPING[languageCode];
186
+ }
187
+ // Check if device locale is directly supported
188
+ if (isLanguageSupported(deviceLocale)) {
189
+ return deviceLocale;
190
+ }
191
+ // Fallback to default language
192
+ return DEFAULT_LANGUAGE;
193
+ }
194
+ catch (error) {
195
+ // If any error occurs, fallback to default
196
+ console.warn('[Localization] Failed to detect device locale:', error);
197
+ return DEFAULT_LANGUAGE;
198
+ }
199
+ };
200
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/infrastructure/config/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,iDAAiD;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAe,SAAS,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC;;;;;;;;GAQG;AACH,MAAM,cAAc,GAA2B;IAC7C,SAAS;IACT,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,YAAY;IACZ,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,QAAQ;IACR,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,SAAS;IACT,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,SAAS;IACT,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,4EAA4E;IAC5E,IAAI,EAAE,OAAO;IAEb,mBAAmB;IACnB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,UAAU;IACV,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,UAAU;IACV,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,SAAS;IACT,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,QAAQ;IACR,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,kFAAkF;IAClF,IAAI,EAAE,OAAO;IAEb,YAAY;IACZ,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,aAAa;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,UAAU;IACV,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,WAAW;IACX,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,SAAS;IACT,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,QAAQ;IACR,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,+CAA+C;IAC/C,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,QAAQ;IACR,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,SAAS;IACT,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,aAAa;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,WAAW;IACX,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,UAAU;IACV,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,8EAA8E;IAC9E,IAAI,EAAE,OAAO;IAEb,UAAU;IACV,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,OAAO;IACP,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,mBAAmB;IACnB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;IAEd,UAAU;IACV,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,YAAY;IACZ,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,aAAa;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAEhB,wCAAwC;IACxC,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,OAAO;IAErB,2FAA2F;IAC3F,SAAS,EAAE,OAAO;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAwB,EAAE;IACtE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE;IAC3D,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAa,EAAE;IAC/C,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;AACzC,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,IAAI,CAAC;QACH,2DAA2D;QAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;QAEzC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,gDAAgD;QAChD,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,kDAAkD;QAClD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhD,kDAAkD;QAClD,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,+CAA+C;QAC/C,IAAI,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,+BAA+B;QAC/B,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2CAA2C;QAC3C,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;QACtE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Languages Data
3
+ * Complete list of supported languages with metadata
4
+ */
5
+ import type { Language } from '../../domain/repositories/ILocalizationRepository';
6
+ export declare const LANGUAGES: Language[];
7
+ //# sourceMappingURL=languagesData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languagesData.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/languagesData.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AAElF,eAAO,MAAM,SAAS,EAAE,QAAQ,EA8B/B,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Languages Data
3
+ * Complete list of supported languages with metadata
4
+ */
5
+ export const LANGUAGES = [
6
+ { code: 'en-US', name: 'English', nativeName: 'English', flag: '🇺🇸', rtl: false },
7
+ { code: 'ar-SA', name: 'Arabic', nativeName: 'العربية', flag: '🇸🇦', rtl: true },
8
+ { code: 'bg-BG', name: 'Bulgarian', nativeName: 'Български', flag: '🇧🇬', rtl: false },
9
+ { code: 'cs-CZ', name: 'Czech', nativeName: 'Čeština', flag: '🇨🇿', rtl: false },
10
+ { code: 'da-DK', name: 'Danish', nativeName: 'Dansk', flag: '🇩🇰', rtl: false },
11
+ { code: 'de-DE', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪', rtl: false },
12
+ { code: 'es-ES', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸', rtl: false },
13
+ { code: 'fi-FI', name: 'Finnish', nativeName: 'Suomi', flag: '🇫🇮', rtl: false },
14
+ { code: 'fr-FR', name: 'French', nativeName: 'Français', flag: '🇫🇷', rtl: false },
15
+ { code: 'hi-IN', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳', rtl: false },
16
+ { code: 'hu-HU', name: 'Hungarian', nativeName: 'Magyar', flag: '🇭🇺', rtl: false },
17
+ { code: 'id-ID', name: 'Indonesian', nativeName: 'Bahasa Indonesia', flag: '🇮🇩', rtl: false },
18
+ { code: 'it-IT', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹', rtl: false },
19
+ { code: 'ja-JP', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵', rtl: false },
20
+ { code: 'ko-KR', name: 'Korean', nativeName: '한국어', flag: '🇰🇷', rtl: false },
21
+ { code: 'ms-MY', name: 'Malay', nativeName: 'Bahasa Melayu', flag: '🇲🇾', rtl: false },
22
+ { code: 'nl-NL', name: 'Dutch', nativeName: 'Nederlands', flag: '🇳🇱', rtl: false },
23
+ { code: 'no-NO', name: 'Norwegian', nativeName: 'Norsk', flag: '🇳🇴', rtl: false },
24
+ { code: 'pl-PL', name: 'Polish', nativeName: 'Polski', flag: '🇵🇱', rtl: false },
25
+ { code: 'pt-PT', name: 'Portuguese', nativeName: 'Português', flag: '🇵🇹', rtl: false },
26
+ { code: 'ro-RO', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴', rtl: false },
27
+ { code: 'ru-RU', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺', rtl: false },
28
+ { code: 'sv-SE', name: 'Swedish', nativeName: 'Svenska', flag: '🇸🇪', rtl: false },
29
+ { code: 'th-TH', name: 'Thai', nativeName: 'ไทย', flag: '🇹🇭', rtl: false },
30
+ { code: 'tl-PH', name: 'Filipino', nativeName: 'Tagalog', flag: '🇵🇭', rtl: false },
31
+ { code: 'tr-TR', name: 'Turkish', nativeName: 'Türkçe', flag: '🇹🇷', rtl: false },
32
+ { code: 'uk-UA', name: 'Ukrainian', nativeName: 'Українська', flag: '🇺🇦', rtl: false },
33
+ { code: 'vi-VN', name: 'Vietnamese', nativeName: 'Tiếng Việt', flag: '🇻🇳', rtl: false },
34
+ { code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文', flag: '🇨🇳', rtl: false },
35
+ ];
36
+ //# sourceMappingURL=languagesData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languagesData.js","sourceRoot":"","sources":["../../../src/infrastructure/config/languagesData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ {
2
+ "presets": {
3
+ "fadeIn": "Fade In",
4
+ "fadeOut": "Fade Out",
5
+ "slideInUp": "Slide In Up",
6
+ "slideInDown": "Slide In Down",
7
+ "slideInLeft": "Slide In Left",
8
+ "slideInRight": "Slide In Right",
9
+ "scaleIn": "Scale In",
10
+ "scaleOut": "Scale Out",
11
+ "bounce": "Bounce",
12
+ "shake": "Shake"
13
+ },
14
+ "gestures": {
15
+ "tap": "Tap",
16
+ "pan": "Pan",
17
+ "pinch": "Pinch",
18
+ "rotation": "Rotation",
19
+ "longPress": "Long Press"
20
+ },
21
+ "actions": {
22
+ "animate": "Animate",
23
+ "reset": "Reset Animation"
24
+ },
25
+ "labels": {
26
+ "duration": "Duration",
27
+ "damping": "Damping",
28
+ "stiffness": "Stiffness"
29
+ }
30
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "recording": {
3
+ "start": "Start Recording",
4
+ "stop": "Stop Recording",
5
+ "pause": "Pause Recording",
6
+ "resume": "Resume Recording",
7
+ "save": "Save Recording",
8
+ "delete": "Delete Recording",
9
+ "recording": "Recording...",
10
+ "paused": "Paused",
11
+ "duration": "Duration"
12
+ },
13
+ "playback": {
14
+ "play": "Play",
15
+ "pause": "Pause",
16
+ "stop": "Stop",
17
+ "replay": "Replay",
18
+ "forward": "Forward",
19
+ "backward": "Backward",
20
+ "speed": "Speed",
21
+ "volume": "Volume",
22
+ "mute": "Mute",
23
+ "unmute": "Unmute",
24
+ "loop": "Loop",
25
+ "playing": "Playing",
26
+ "buffering": "Buffering",
27
+ "finished": "Finished"
28
+ },
29
+ "permissions": {
30
+ "microphoneTitle": "Microphone Permission",
31
+ "microphoneMessage": "This app needs microphone access to record audio",
32
+ "deniedTitle": "Permission Denied",
33
+ "deniedMessage": "Please enable microphone permissions in Settings",
34
+ "openSettings": "Open Settings"
35
+ },
36
+ "quality": {
37
+ "low": "Low Quality",
38
+ "high": "High Quality"
39
+ },
40
+ "errors": {
41
+ "recordFailed": "Failed to start recording",
42
+ "stopFailed": "Failed to stop recording",
43
+ "playFailed": "Failed to play audio",
44
+ "loadFailed": "Failed to load audio",
45
+ "saveFailed": "Failed to save recording",
46
+ "permissionDenied": "Microphone permission denied",
47
+ "noRecording": "No recording available",
48
+ "invalidFile": "Invalid audio file"
49
+ },
50
+ "formats": {
51
+ "aac": "AAC",
52
+ "mp3": "MP3",
53
+ "m4a": "M4A",
54
+ "wav": "WAV"
55
+ }
56
+ }
@@ -0,0 +1,140 @@
1
+ {
2
+ "days": {
3
+ "full": {
4
+ "monday": "Monday",
5
+ "tuesday": "Tuesday",
6
+ "wednesday": "Wednesday",
7
+ "thursday": "Thursday",
8
+ "friday": "Friday",
9
+ "saturday": "Saturday",
10
+ "sunday": "Sunday"
11
+ },
12
+ "short": {
13
+ "mon": "Mon",
14
+ "tue": "Tue",
15
+ "wed": "Wed",
16
+ "thu": "Thu",
17
+ "fri": "Fri",
18
+ "sat": "Sat",
19
+ "sun": "Sun"
20
+ },
21
+ "abbreviated": {
22
+ "m": "M",
23
+ "t": "T",
24
+ "w": "W",
25
+ "th": "Th",
26
+ "f": "F",
27
+ "sa": "Sa",
28
+ "su": "Su"
29
+ }
30
+ },
31
+ "months": {
32
+ "full": {
33
+ "january": "January",
34
+ "february": "February",
35
+ "march": "March",
36
+ "april": "April",
37
+ "may": "May",
38
+ "june": "June",
39
+ "july": "July",
40
+ "august": "August",
41
+ "september": "September",
42
+ "october": "October",
43
+ "november": "November",
44
+ "december": "December"
45
+ },
46
+ "short": {
47
+ "jan": "Jan",
48
+ "feb": "Feb",
49
+ "mar": "Mar",
50
+ "apr": "Apr",
51
+ "may": "May",
52
+ "jun": "Jun",
53
+ "jul": "Jul",
54
+ "aug": "Aug",
55
+ "sep": "Sep",
56
+ "oct": "Oct",
57
+ "nov": "Nov",
58
+ "dec": "Dec"
59
+ }
60
+ },
61
+ "relative": {
62
+ "now": "Now",
63
+ "justNow": "Just now",
64
+ "today": "Today",
65
+ "yesterday": "Yesterday",
66
+ "tomorrow": "Tomorrow",
67
+ "thisWeek": "This week",
68
+ "lastWeek": "Last week",
69
+ "nextWeek": "Next week",
70
+ "thisMonth": "This month",
71
+ "lastMonth": "Last month",
72
+ "nextMonth": "Next month",
73
+ "thisYear": "This year",
74
+ "lastYear": "Last year",
75
+ "nextYear": "Next year",
76
+ "ago": "ago",
77
+ "fromNow": "from now",
78
+ "in": "in"
79
+ },
80
+ "units": {
81
+ "singular": {
82
+ "second": "second",
83
+ "minute": "minute",
84
+ "hour": "hour",
85
+ "day": "day",
86
+ "week": "week",
87
+ "month": "month",
88
+ "year": "year"
89
+ },
90
+ "plural": {
91
+ "seconds": "seconds",
92
+ "minutes": "minutes",
93
+ "hours": "hours",
94
+ "days": "days",
95
+ "weeks": "weeks",
96
+ "months": "months",
97
+ "years": "years"
98
+ },
99
+ "short": {
100
+ "s": "s",
101
+ "m": "m",
102
+ "h": "h",
103
+ "d": "d",
104
+ "w": "w",
105
+ "mo": "mo",
106
+ "y": "y"
107
+ }
108
+ },
109
+ "periods": {
110
+ "am": "AM",
111
+ "pm": "PM",
112
+ "morning": "Morning",
113
+ "afternoon": "Afternoon",
114
+ "evening": "Evening",
115
+ "night": "Night",
116
+ "midnight": "Midnight",
117
+ "noon": "Noon"
118
+ },
119
+ "formats": {
120
+ "date": "Date",
121
+ "time": "Time",
122
+ "datetime": "Date & Time",
123
+ "duration": "Duration",
124
+ "startDate": "Start Date",
125
+ "endDate": "End Date",
126
+ "startTime": "Start Time",
127
+ "endTime": "End Time",
128
+ "selectDate": "Select Date",
129
+ "selectTime": "Select Time"
130
+ },
131
+ "actions": {
132
+ "setDate": "Set Date",
133
+ "setTime": "Set Time",
134
+ "clearDate": "Clear Date",
135
+ "clearTime": "Clear Time",
136
+ "confirmDate": "Confirm Date",
137
+ "confirmTime": "Confirm Time",
138
+ "cancel": "Cancel"
139
+ }
140
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "picker": {
3
+ "title": "Select Emoji",
4
+ "search": "Search emojis...",
5
+ "searchPlaceholder": "Search",
6
+ "noResults": "No emojis found",
7
+ "recentlyUsed": "Recently Used"
8
+ },
9
+ "categories": {
10
+ "smileys_emotion": "Smileys & Emotion",
11
+ "people_body": "People & Body",
12
+ "animals_nature": "Animals & Nature",
13
+ "food_drink": "Food & Drink",
14
+ "travel_places": "Travel & Places",
15
+ "activities": "Activities",
16
+ "objects": "Objects",
17
+ "symbols": "Symbols",
18
+ "flags": "Flags"
19
+ },
20
+ "actions": {
21
+ "select": "Select",
22
+ "cancel": "Cancel",
23
+ "clear": "Clear Emoji"
24
+ },
25
+ "validation": {
26
+ "required": "Please select an emoji",
27
+ "invalid": "Invalid emoji"
28
+ }
29
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "validation": {
3
+ "required": "This field is required",
4
+ "invalidEmail": "Invalid email format",
5
+ "invalidPhone": "Invalid phone number",
6
+ "invalidUrl": "Invalid URL format",
7
+ "minLength": "Minimum length is {{min}} characters",
8
+ "maxLength": "Maximum length is {{max}} characters",
9
+ "minValue": "Minimum value is {{min}}",
10
+ "maxValue": "Maximum value is {{max}}",
11
+ "mustMatch": "Fields must match",
12
+ "invalidFormat": "Invalid format",
13
+ "invalidDate": "Invalid date",
14
+ "futureDate": "Date must be in the future",
15
+ "pastDate": "Date must be in the past"
16
+ },
17
+ "storage": {
18
+ "saveFailed": "Failed to save data",
19
+ "loadFailed": "Failed to load data",
20
+ "deleteFailed": "Failed to delete data",
21
+ "notFound": "Data not found"
22
+ },
23
+ "permission": {
24
+ "denied": "Permission denied",
25
+ "notGranted": "Permission not granted",
26
+ "cameraNotAvailable": "Camera not available",
27
+ "locationNotAvailable": "Location services not available",
28
+ "microphoneNotAvailable": "Microphone not available",
29
+ "photosNotAvailable": "Photo library not available"
30
+ },
31
+ "common": {
32
+ "somethingWentWrong": "Something went wrong",
33
+ "tryAgainLater": "Please try again later",
34
+ "unexpectedError": "An unexpected error occurred"
35
+ },
36
+ "actions": {
37
+ "dismiss": "Dismiss",
38
+ "retry": "Retry",
39
+ "cancel": "Cancel",
40
+ "goBack": "Go Back",
41
+ "contactSupport": "Contact Support"
42
+ }
43
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "validation": {
3
+ "required": "This field is required",
4
+ "invalidEmail": "Invalid email address",
5
+ "invalidPhone": "Invalid phone number",
6
+ "passwordTooShort": "Password must be at least 8 characters",
7
+ "passwordTooLong": "Password must be at most 128 characters",
8
+ "passwordsDontMatch": "Passwords do not match",
9
+ "nameTooShort": "Name must be at least 2 characters",
10
+ "nameTooLong": "Name must be at most 50 characters"
11
+ },
12
+ "fields": {
13
+ "email": "Email",
14
+ "password": "Password",
15
+ "passwordConfirmation": "Confirm Password",
16
+ "name": "Name",
17
+ "phone": "Phone Number",
18
+ "currentPassword": "Current Password",
19
+ "newPassword": "New Password",
20
+ "newPasswordConfirmation": "Confirm New Password",
21
+ "subject": "Subject",
22
+ "message": "Message"
23
+ },
24
+ "actions": {
25
+ "submit": "Submit",
26
+ "cancel": "Cancel",
27
+ "reset": "Reset",
28
+ "save": "Save",
29
+ "update": "Update"
30
+ },
31
+ "schemas": {
32
+ "login": "Login Form",
33
+ "register": "Registration Form",
34
+ "profile": "Profile Form",
35
+ "changePassword": "Change Password",
36
+ "contact": "Contact Form"
37
+ }
38
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "back": "Back",
3
+ "cancel": "Cancel",
4
+ "confirm": "Confirm",
5
+ "continue": "Continue",
6
+ "delete": "Delete",
7
+ "edit": "Edit",
8
+ "error": "Error",
9
+ "loading": "Loading...",
10
+ "notNow": "Not Now",
11
+ "ok": "OK",
12
+ "optional": "Optional",
13
+ "save": "Save",
14
+ "something_went_wrong": "Something went wrong",
15
+ "success": "Success",
16
+ "close": "Close",
17
+ "done": "Done",
18
+ "next": "Next",
19
+ "previous": "Previous",
20
+ "skip": "Skip",
21
+ "retry": "Retry",
22
+ "refresh": "Refresh",
23
+ "search": "Search",
24
+ "filter": "Filter",
25
+ "sort": "Sort",
26
+ "add": "Add",
27
+ "remove": "Remove",
28
+ "update": "Update",
29
+ "create": "Create",
30
+ "view": "View",
31
+ "details": "Details",
32
+ "share": "Share",
33
+ "download": "Download",
34
+ "upload": "Upload",
35
+ "submit": "Submit",
36
+ "reset": "Reset",
37
+ "clear": "Clear",
38
+ "apply": "Apply",
39
+ "yes": "Yes",
40
+ "no": "No",
41
+ "all": "All",
42
+ "none": "None",
43
+ "of": "of",
44
+ "select": "Select",
45
+ "selected": "Selected",
46
+ "required": "Required",
47
+ "empty": "Empty",
48
+ "noData": "No data available",
49
+ "noResults": "No results found",
50
+ "tryAgain": "Try again",
51
+ "learnMore": "Learn more",
52
+ "getStarted": "Get started",
53
+ "viewAll": "View all",
54
+ "showMore": "Show more",
55
+ "showLess": "Show less"
56
+ }