@umituz/react-native-localization 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/infrastructure/config/i18n.d.ts +1 -4
- package/lib/infrastructure/config/i18n.d.ts.map +1 -1
- package/lib/infrastructure/config/i18n.js +27 -204
- package/lib/infrastructure/config/i18n.js.map +1 -1
- package/lib/infrastructure/config/languages.d.ts +1 -1
- package/lib/infrastructure/config/languages.d.ts.map +1 -1
- package/lib/infrastructure/config/languages.js +2 -2
- package/lib/infrastructure/config/languages.js.map +1 -1
- package/lib/infrastructure/config/languagesData.d.ts +22 -3
- package/lib/infrastructure/config/languagesData.d.ts.map +1 -1
- package/lib/infrastructure/config/languagesData.js +53 -31
- package/lib/infrastructure/config/languagesData.js.map +1 -1
- package/lib/infrastructure/storage/AsyncStorageWrapper.d.ts.map +1 -1
- package/lib/infrastructure/storage/AsyncStorageWrapper.js +2 -6
- package/lib/infrastructure/storage/AsyncStorageWrapper.js.map +1 -1
- package/lib/infrastructure/storage/LocalizationStore.d.ts +2 -7
- package/lib/infrastructure/storage/LocalizationStore.d.ts.map +1 -1
- package/lib/infrastructure/storage/LocalizationStore.js +35 -116
- package/lib/infrastructure/storage/LocalizationStore.js.map +1 -1
- package/package.json +7 -5
- package/src/infrastructure/config/i18n.ts +27 -195
- package/src/infrastructure/config/languages.ts +3 -3
- package/src/infrastructure/config/languagesData.ts +64 -32
- package/src/infrastructure/storage/AsyncStorageWrapper.ts +2 -4
- package/src/infrastructure/storage/LocalizationStore.ts +39 -140
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* i18next Configuration
|
|
3
3
|
* Nested translation structure - common translations spread, domain translations nested
|
|
4
|
-
*
|
|
5
|
-
* CRITICAL: Package must be installed for i18n to work
|
|
6
|
-
* If package is not installed, i18n will gracefully degrade
|
|
7
4
|
*/
|
|
8
|
-
import i18n from
|
|
5
|
+
import i18n from 'i18next';
|
|
9
6
|
export default i18n;
|
|
10
7
|
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -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;;;GAGG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAmD3B,eAAe,IAAI,CAAC"}
|
|
@@ -1,226 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* i18next Configuration
|
|
3
3
|
* Nested translation structure - common translations spread, domain translations nested
|
|
4
|
-
*
|
|
5
|
-
* CRITICAL: Package must be installed for i18n to work
|
|
6
|
-
* If package is not installed, i18n will gracefully degrade
|
|
7
|
-
*/
|
|
8
|
-
import i18n from "i18next";
|
|
9
|
-
import { initReactI18next } from "react-i18next";
|
|
10
|
-
import { DEFAULT_LANGUAGE } from "./languages";
|
|
11
|
-
/**
|
|
12
|
-
* Check if required dependencies are available
|
|
13
4
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (!i18n || !initReactI18next) {
|
|
18
|
-
/* eslint-disable-next-line no-console */
|
|
19
|
-
if (__DEV__)
|
|
20
|
-
console.warn("[i18n] Required dependencies not found. i18n will not work.");
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
/* eslint-disable-next-line no-console */
|
|
27
|
-
if (__DEV__)
|
|
28
|
-
console.warn("[i18n] Error checking dependencies:", error);
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
};
|
|
5
|
+
import i18n from 'i18next';
|
|
6
|
+
import { initReactI18next } from 'react-i18next';
|
|
7
|
+
import { DEFAULT_LANGUAGE } from './languages';
|
|
32
8
|
/**
|
|
33
9
|
* Import all translations from modular folder structure
|
|
34
10
|
* Each locale has an index.ts that merges all JSON files
|
|
35
11
|
*
|
|
36
|
-
* Structure:
|
|
12
|
+
* Structure (OFFLINE-ONLY):
|
|
37
13
|
* locales/
|
|
38
14
|
* en-US/ (universal translations in localization domain)
|
|
39
|
-
* index.ts (merges
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* ... (all 39 languages)
|
|
15
|
+
* index.ts (merges common.json, navigation.json, settings.json, onboarding.json, errors.json)
|
|
16
|
+
*
|
|
17
|
+
* All translations are offline-compatible and work without backend.
|
|
43
18
|
*/
|
|
44
|
-
// Import
|
|
45
|
-
import
|
|
46
|
-
import bgBG from "../locales/bg-BG";
|
|
47
|
-
import csCZ from "../locales/cs-CZ";
|
|
48
|
-
import daDK from "../locales/da-DK";
|
|
49
|
-
import deDE from "../locales/de-DE";
|
|
50
|
-
import elGR from "../locales/el-GR";
|
|
51
|
-
import enAU from "../locales/en-AU";
|
|
52
|
-
import enCA from "../locales/en-CA";
|
|
53
|
-
import enGB from "../locales/en-GB";
|
|
54
|
-
import enUS from "../locales/en-US";
|
|
55
|
-
import esES from "../locales/es-ES";
|
|
56
|
-
import esMX from "../locales/es-MX";
|
|
57
|
-
import fiFI from "../locales/fi-FI";
|
|
58
|
-
import frCA from "../locales/fr-CA";
|
|
59
|
-
import frFR from "../locales/fr-FR";
|
|
60
|
-
import hiIN from "../locales/hi-IN";
|
|
61
|
-
import hrHR from "../locales/hr-HR";
|
|
62
|
-
import huHU from "../locales/hu-HU";
|
|
63
|
-
import idID from "../locales/id-ID";
|
|
64
|
-
import itIT from "../locales/it-IT";
|
|
65
|
-
import jaJP from "../locales/ja-JP";
|
|
66
|
-
import koKR from "../locales/ko-KR";
|
|
67
|
-
import msMY from "../locales/ms-MY";
|
|
68
|
-
import nlNL from "../locales/nl-NL";
|
|
69
|
-
import noNO from "../locales/no-NO";
|
|
70
|
-
import plPL from "../locales/pl-PL";
|
|
71
|
-
import ptBR from "../locales/pt-BR";
|
|
72
|
-
import ptPT from "../locales/pt-PT";
|
|
73
|
-
import roRO from "../locales/ro-RO";
|
|
74
|
-
import ruRU from "../locales/ru-RU";
|
|
75
|
-
import skSK from "../locales/sk-SK";
|
|
76
|
-
import svSE from "../locales/sv-SE";
|
|
77
|
-
import thTH from "../locales/th-TH";
|
|
78
|
-
import tlPH from "../locales/tl-PH";
|
|
79
|
-
import trTR from "../locales/tr-TR";
|
|
80
|
-
import ukUA from "../locales/uk-UA";
|
|
81
|
-
import viVN from "../locales/vi-VN";
|
|
82
|
-
import zhCN from "../locales/zh-CN";
|
|
83
|
-
import zhTW from "../locales/zh-TW";
|
|
19
|
+
// Import universal translations from localization domain
|
|
20
|
+
import localizationEnUS from '../locales/en-US';
|
|
84
21
|
/**
|
|
85
22
|
* Translation Resources
|
|
86
|
-
* All 39 supported languages loaded
|
|
87
23
|
* Nested structure - domain-based organization with direct key access
|
|
88
|
-
* Example: settings.theme.title, onboarding.welcome.title
|
|
24
|
+
* Example: settings.theme.title, onboarding.welcome.title
|
|
89
25
|
*/
|
|
90
26
|
const resources = {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
"el-GR": { translation: elGR },
|
|
97
|
-
"en-AU": { translation: enAU },
|
|
98
|
-
"en-CA": { translation: enCA },
|
|
99
|
-
"en-GB": { translation: enGB },
|
|
100
|
-
"en-US": { translation: enUS },
|
|
101
|
-
"es-ES": { translation: esES },
|
|
102
|
-
"es-MX": { translation: esMX },
|
|
103
|
-
"fi-FI": { translation: fiFI },
|
|
104
|
-
"fr-CA": { translation: frCA },
|
|
105
|
-
"fr-FR": { translation: frFR },
|
|
106
|
-
"hi-IN": { translation: hiIN },
|
|
107
|
-
"hr-HR": { translation: hrHR },
|
|
108
|
-
"hu-HU": { translation: huHU },
|
|
109
|
-
"id-ID": { translation: idID },
|
|
110
|
-
"it-IT": { translation: itIT },
|
|
111
|
-
"ja-JP": { translation: jaJP },
|
|
112
|
-
"ko-KR": { translation: koKR },
|
|
113
|
-
"ms-MY": { translation: msMY },
|
|
114
|
-
"nl-NL": { translation: nlNL },
|
|
115
|
-
"no-NO": { translation: noNO },
|
|
116
|
-
"pl-PL": { translation: plPL },
|
|
117
|
-
"pt-BR": { translation: ptBR },
|
|
118
|
-
"pt-PT": { translation: ptPT },
|
|
119
|
-
"ro-RO": { translation: roRO },
|
|
120
|
-
"ru-RU": { translation: ruRU },
|
|
121
|
-
"sk-SK": { translation: skSK },
|
|
122
|
-
"sv-SE": { translation: svSE },
|
|
123
|
-
"th-TH": { translation: thTH },
|
|
124
|
-
"tl-PH": { translation: tlPH },
|
|
125
|
-
"tr-TR": { translation: trTR },
|
|
126
|
-
"uk-UA": { translation: ukUA },
|
|
127
|
-
"vi-VN": { translation: viVN },
|
|
128
|
-
"zh-CN": { translation: zhCN },
|
|
129
|
-
"zh-TW": { translation: zhTW },
|
|
27
|
+
'en-US': {
|
|
28
|
+
translation: {
|
|
29
|
+
...localizationEnUS,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
130
32
|
};
|
|
131
33
|
/**
|
|
132
34
|
* Initialize i18next
|
|
133
|
-
* Deferred initialization to avoid React Native renderer conflicts
|
|
134
|
-
* Only initializes if dependencies are available
|
|
135
35
|
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
/* eslint-disable-next-line no-console */
|
|
149
|
-
if (__DEV__)
|
|
150
|
-
console.log("[i18n] Initializing i18next...");
|
|
151
|
-
/* eslint-disable-next-line no-console */
|
|
152
|
-
if (__DEV__)
|
|
153
|
-
console.log("[i18n] Resources count:", Object.keys(resources).length);
|
|
154
|
-
/* eslint-disable-next-line no-console */
|
|
155
|
-
if (__DEV__)
|
|
156
|
-
console.log("[i18n] Default language:", DEFAULT_LANGUAGE);
|
|
157
|
-
/* eslint-disable-next-line no-console */
|
|
158
|
-
if (__DEV__)
|
|
159
|
-
console.log("[i18n] Checking initReactI18next...");
|
|
160
|
-
if (!initReactI18next) {
|
|
161
|
-
throw new Error("initReactI18next is undefined");
|
|
162
|
-
}
|
|
163
|
-
/* eslint-disable-next-line no-console */
|
|
164
|
-
if (__DEV__)
|
|
165
|
-
console.log("[i18n] initReactI18next found");
|
|
166
|
-
/* eslint-disable-next-line no-console */
|
|
167
|
-
if (__DEV__)
|
|
168
|
-
console.log("[i18n] Using initReactI18next...");
|
|
169
|
-
i18n.use(initReactI18next);
|
|
170
|
-
/* eslint-disable-next-line no-console */
|
|
171
|
-
if (__DEV__)
|
|
172
|
-
console.log("[i18n] initReactI18next applied");
|
|
173
|
-
/* eslint-disable-next-line no-console */
|
|
174
|
-
if (__DEV__)
|
|
175
|
-
console.log("[i18n] Calling i18n.init...");
|
|
176
|
-
i18n.init({
|
|
177
|
-
resources,
|
|
178
|
-
lng: DEFAULT_LANGUAGE,
|
|
179
|
-
fallbackLng: DEFAULT_LANGUAGE,
|
|
180
|
-
interpolation: {
|
|
181
|
-
escapeValue: false, // React already escapes values
|
|
182
|
-
},
|
|
183
|
-
react: {
|
|
184
|
-
useSuspense: false, // Disable suspense for React Native
|
|
185
|
-
},
|
|
186
|
-
compatibilityJSON: "v4", // Use i18next v4 JSON format
|
|
187
|
-
});
|
|
188
|
-
/* eslint-disable-next-line no-console */
|
|
189
|
-
if (__DEV__)
|
|
190
|
-
console.log("[i18n] i18n.init completed");
|
|
191
|
-
isInitialized = true;
|
|
192
|
-
/* eslint-disable-next-line no-console */
|
|
193
|
-
if (__DEV__)
|
|
194
|
-
console.log("[i18n] i18next initialized successfully");
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
/* eslint-disable-next-line no-console */
|
|
198
|
-
if (__DEV__)
|
|
199
|
-
console.error("[i18n] Initialization error:", error);
|
|
200
|
-
/* eslint-disable-next-line no-console */
|
|
201
|
-
if (__DEV__)
|
|
202
|
-
console.error("[i18n] Error details:", {
|
|
203
|
-
message: error instanceof Error ? error.message : String(error),
|
|
204
|
-
stack: error instanceof Error ? error.stack : "No stack",
|
|
205
|
-
name: error instanceof Error ? error.name : "Unknown",
|
|
206
|
-
});
|
|
207
|
-
// Don't throw - allow app to continue without i18n
|
|
208
|
-
/* eslint-disable-next-line no-console */
|
|
209
|
-
if (__DEV__)
|
|
210
|
-
console.warn("[i18n] Continuing without i18n initialization");
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
// Defer initialization until React is ready
|
|
214
|
-
// React Native doesn't have window, so we check for global
|
|
215
|
-
if (typeof global !== "undefined") {
|
|
216
|
-
// Use setTimeout to defer initialization
|
|
217
|
-
setTimeout(() => {
|
|
218
|
-
initializeI18n();
|
|
219
|
-
}, 0);
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
// Fallback: initialize immediately
|
|
223
|
-
initializeI18n();
|
|
224
|
-
}
|
|
36
|
+
i18n.use(initReactI18next).init({
|
|
37
|
+
resources,
|
|
38
|
+
lng: DEFAULT_LANGUAGE,
|
|
39
|
+
fallbackLng: DEFAULT_LANGUAGE,
|
|
40
|
+
interpolation: {
|
|
41
|
+
escapeValue: false, // React already escapes values
|
|
42
|
+
},
|
|
43
|
+
react: {
|
|
44
|
+
useSuspense: false, // Disable suspense for React Native
|
|
45
|
+
},
|
|
46
|
+
compatibilityJSON: 'v4', // Use i18next v4 JSON format
|
|
47
|
+
});
|
|
225
48
|
export default i18n;
|
|
226
49
|
//# sourceMappingURL=i18n.js.map
|
|
@@ -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;;;GAGG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;;GAUG;AAEH,yDAAyD;AACzD,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE;QACP,WAAW,EAAE;YACX,GAAG,gBAAgB;SACpB;KACF;CACF,CAAC;AAEF;;GAEG;AACH,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;IAC9B,SAAS;IACT,GAAG,EAAE,gBAAgB;IACrB,WAAW,EAAE,gBAAgB;IAE7B,aAAa,EAAE;QACb,WAAW,EAAE,KAAK,EAAE,+BAA+B;KACpD;IAED,KAAK,EAAE;QACL,WAAW,EAAE,KAAK,EAAE,oCAAoC;KACzD;IAED,iBAAiB,EAAE,IAAI,EAAE,6BAA6B;CACvD,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - Fallback: English (en-US) if device locale not supported
|
|
13
13
|
* - User choice: Persists after manual language selection
|
|
14
14
|
*/
|
|
15
|
-
import
|
|
15
|
+
import { Language } from '../../domain/repositories/ILocalizationRepository';
|
|
16
16
|
export declare const SUPPORTED_LANGUAGES: Language[];
|
|
17
17
|
export declare const DEFAULT_LANGUAGE = "en-US";
|
|
18
18
|
export declare const getLanguageByCode: (code: string) => Language | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AAG7E,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAAc,CAAC;AAEzD,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAoKxC,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,QAAQ,GAAG,SAE3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,QAErC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,QAAO,MAkClC,CAAC"}
|
|
@@ -170,8 +170,7 @@ export const getDefaultLanguage = () => {
|
|
|
170
170
|
export const getDeviceLocale = () => {
|
|
171
171
|
try {
|
|
172
172
|
// Get device locale (e.g., "en-US", "tr-TR", or just "en")
|
|
173
|
-
const
|
|
174
|
-
const deviceLocale = locales[0]?.languageTag;
|
|
173
|
+
const deviceLocale = Localization.locale;
|
|
175
174
|
if (!deviceLocale) {
|
|
176
175
|
return DEFAULT_LANGUAGE;
|
|
177
176
|
}
|
|
@@ -194,6 +193,7 @@ export const getDeviceLocale = () => {
|
|
|
194
193
|
}
|
|
195
194
|
catch (error) {
|
|
196
195
|
// If any error occurs, fallback to default
|
|
196
|
+
console.warn('[Localization] Failed to detect device locale:', error);
|
|
197
197
|
return DEFAULT_LANGUAGE;
|
|
198
198
|
}
|
|
199
199
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/infrastructure/config/languages.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/infrastructure/config/languages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Language Configuration
|
|
3
|
+
* Strategic language support with 29 languages (top revenue markets only)
|
|
4
|
+
* Optimized for maximum monetization with minimal maintenance cost
|
|
5
|
+
* Generated from App Factory language_config.yaml
|
|
4
6
|
*/
|
|
5
|
-
|
|
7
|
+
export interface Language {
|
|
8
|
+
code: string;
|
|
9
|
+
name: string;
|
|
10
|
+
nativeName: string;
|
|
11
|
+
flag: string;
|
|
12
|
+
}
|
|
6
13
|
export declare const LANGUAGES: Language[];
|
|
14
|
+
/**
|
|
15
|
+
* Get language by code
|
|
16
|
+
*/
|
|
17
|
+
export declare const getLanguageByCode: (code: string) => Language | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Get default language (en-US)
|
|
20
|
+
*/
|
|
21
|
+
export declare const getDefaultLanguage: () => Language;
|
|
22
|
+
/**
|
|
23
|
+
* Search languages by name or native name
|
|
24
|
+
*/
|
|
25
|
+
export declare const searchLanguages: (query: string) => Language[];
|
|
7
26
|
//# sourceMappingURL=languagesData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languagesData.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/languagesData.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"languagesData.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/languagesData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,EA8B/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,QAAQ,GAAG,SAE3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,QAErC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,QAAQ,EAOvD,CAAC"}
|
|
@@ -1,36 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Language Configuration
|
|
3
|
+
* Strategic language support with 29 languages (top revenue markets only)
|
|
4
|
+
* Optimized for maximum monetization with minimal maintenance cost
|
|
5
|
+
* Generated from App Factory language_config.yaml
|
|
4
6
|
*/
|
|
5
7
|
export const LANGUAGES = [
|
|
6
|
-
{ code: 'ar-SA', name: 'Arabic', nativeName: 'العربية', flag: '🇸🇦'
|
|
7
|
-
{ code: 'bg-BG', name: 'Bulgarian', nativeName: 'Български', flag: '🇧🇬'
|
|
8
|
-
{ code: 'cs-CZ', name: 'Czech', nativeName: 'Čeština', flag: '🇨🇿'
|
|
9
|
-
{ code: 'da-DK', name: 'Danish', nativeName: 'Dansk', flag: '🇩🇰'
|
|
10
|
-
{ code: 'de-DE', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪'
|
|
11
|
-
{ code: 'en-US', name: 'English', nativeName: 'English', flag: '🇺🇸'
|
|
12
|
-
{ code: 'es-ES', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸'
|
|
13
|
-
{ code: 'fi-FI', name: 'Finnish', nativeName: 'Suomi', flag: '🇫🇮'
|
|
14
|
-
{ code: 'fr-FR', name: 'French', nativeName: 'Français', flag: '🇫🇷'
|
|
15
|
-
{ code: 'hi-IN', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳'
|
|
16
|
-
{ code: 'hu-HU', name: 'Hungarian', nativeName: 'Magyar', flag: '🇭🇺'
|
|
17
|
-
{ code: 'id-ID', name: 'Indonesian', nativeName: 'Bahasa Indonesia', flag: '🇮🇩'
|
|
18
|
-
{ code: 'it-IT', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹'
|
|
19
|
-
{ code: 'ja-JP', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵'
|
|
20
|
-
{ code: 'ko-KR', name: 'Korean', nativeName: '한국어', flag: '🇰🇷'
|
|
21
|
-
{ code: 'ms-MY', name: 'Malay', nativeName: 'Bahasa Melayu', flag: '🇲🇾'
|
|
22
|
-
{ code: 'nl-NL', name: 'Dutch', nativeName: 'Nederlands', flag: '🇳🇱'
|
|
23
|
-
{ code: 'no-NO', name: 'Norwegian', nativeName: 'Norsk', flag: '🇳🇴'
|
|
24
|
-
{ code: 'pl-PL', name: 'Polish', nativeName: 'Polski', flag: '🇵🇱'
|
|
25
|
-
{ code: 'pt-PT', name: 'Portuguese', nativeName: 'Português', flag: '🇵🇹'
|
|
26
|
-
{ code: 'ro-RO', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴'
|
|
27
|
-
{ code: 'ru-RU', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺'
|
|
28
|
-
{ code: 'sv-SE', name: 'Swedish', nativeName: 'Svenska', flag: '🇸🇪'
|
|
29
|
-
{ code: 'th-TH', name: 'Thai', nativeName: 'ไทย', flag: '🇹🇭'
|
|
30
|
-
{ code: 'tl-PH', name: 'Filipino', nativeName: 'Filipino', flag: '🇵🇭'
|
|
31
|
-
{ code: 'tr-TR', name: 'Turkish', nativeName: 'Türkçe', flag: '🇹🇷'
|
|
32
|
-
{ code: 'uk-UA', name: 'Ukrainian', nativeName: 'Українська', flag: '🇺🇦'
|
|
33
|
-
{ code: 'vi-VN', name: 'Vietnamese', nativeName: 'Tiếng Việt', flag: '🇻🇳'
|
|
34
|
-
{ code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文', flag: '🇨🇳'
|
|
8
|
+
{ code: 'ar-SA', name: 'Arabic', nativeName: 'العربية', flag: '🇸🇦' },
|
|
9
|
+
{ code: 'bg-BG', name: 'Bulgarian', nativeName: 'Български', flag: '🇧🇬' },
|
|
10
|
+
{ code: 'cs-CZ', name: 'Czech', nativeName: 'Čeština', flag: '🇨🇿' },
|
|
11
|
+
{ code: 'da-DK', name: 'Danish', nativeName: 'Dansk', flag: '🇩🇰' },
|
|
12
|
+
{ code: 'de-DE', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪' },
|
|
13
|
+
{ code: 'en-US', name: 'English', nativeName: 'English', flag: '🇺🇸' },
|
|
14
|
+
{ code: 'es-ES', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸' },
|
|
15
|
+
{ code: 'fi-FI', name: 'Finnish', nativeName: 'Suomi', flag: '🇫🇮' },
|
|
16
|
+
{ code: 'fr-FR', name: 'French', nativeName: 'Français', flag: '🇫🇷' },
|
|
17
|
+
{ code: 'hi-IN', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳' },
|
|
18
|
+
{ code: 'hu-HU', name: 'Hungarian', nativeName: 'Magyar', flag: '🇭🇺' },
|
|
19
|
+
{ code: 'id-ID', name: 'Indonesian', nativeName: 'Bahasa Indonesia', flag: '🇮🇩' },
|
|
20
|
+
{ code: 'it-IT', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹' },
|
|
21
|
+
{ code: 'ja-JP', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵' },
|
|
22
|
+
{ code: 'ko-KR', name: 'Korean', nativeName: '한국어', flag: '🇰🇷' },
|
|
23
|
+
{ code: 'ms-MY', name: 'Malay', nativeName: 'Bahasa Melayu', flag: '🇲🇾' },
|
|
24
|
+
{ code: 'nl-NL', name: 'Dutch', nativeName: 'Nederlands', flag: '🇳🇱' },
|
|
25
|
+
{ code: 'no-NO', name: 'Norwegian', nativeName: 'Norsk', flag: '🇳🇴' },
|
|
26
|
+
{ code: 'pl-PL', name: 'Polish', nativeName: 'Polski', flag: '🇵🇱' },
|
|
27
|
+
{ code: 'pt-PT', name: 'Portuguese', nativeName: 'Português', flag: '🇵🇹' },
|
|
28
|
+
{ code: 'ro-RO', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴' },
|
|
29
|
+
{ code: 'ru-RU', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺' },
|
|
30
|
+
{ code: 'sv-SE', name: 'Swedish', nativeName: 'Svenska', flag: '🇸🇪' },
|
|
31
|
+
{ code: 'th-TH', name: 'Thai', nativeName: 'ไทย', flag: '🇹🇭' },
|
|
32
|
+
{ code: 'tl-PH', name: 'Filipino', nativeName: 'Filipino', flag: '🇵🇭' },
|
|
33
|
+
{ code: 'tr-TR', name: 'Turkish', nativeName: 'Türkçe', flag: '🇹🇷' },
|
|
34
|
+
{ code: 'uk-UA', name: 'Ukrainian', nativeName: 'Українська', flag: '🇺🇦' },
|
|
35
|
+
{ code: 'vi-VN', name: 'Vietnamese', nativeName: 'Tiếng Việt', flag: '🇻🇳' },
|
|
36
|
+
{ code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文', flag: '🇨🇳' },
|
|
35
37
|
];
|
|
38
|
+
/**
|
|
39
|
+
* Get language by code
|
|
40
|
+
*/
|
|
41
|
+
export const getLanguageByCode = (code) => {
|
|
42
|
+
return LANGUAGES.find(lang => lang.code === code);
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Get default language (en-US)
|
|
46
|
+
*/
|
|
47
|
+
export const getDefaultLanguage = () => {
|
|
48
|
+
return LANGUAGES.find(lang => lang.code === 'en-US');
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Search languages by name or native name
|
|
52
|
+
*/
|
|
53
|
+
export const searchLanguages = (query) => {
|
|
54
|
+
const lowerQuery = query.toLowerCase();
|
|
55
|
+
return LANGUAGES.filter(lang => lang.name.toLowerCase().includes(lowerQuery) ||
|
|
56
|
+
lang.nativeName.toLowerCase().includes(lowerQuery));
|
|
57
|
+
};
|
|
36
58
|
//# sourceMappingURL=languagesData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languagesData.js","sourceRoot":"","sources":["../../../src/infrastructure/config/languagesData.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"languagesData.js","sourceRoot":"","sources":["../../../src/infrastructure/config/languagesData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncStorageWrapper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/AsyncStorageWrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,YAAY;;CAEf,CAAC;AAEX,eAAO,MAAM,cAAc;mBACJ,MAAM,gBAAgB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AsyncStorageWrapper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/AsyncStorageWrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,YAAY;;CAEf,CAAC;AAEX,eAAO,MAAM,cAAc;mBACJ,MAAM,gBAAgB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;mBAU9C,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3D,CAAC"}
|
|
@@ -13,9 +13,7 @@ export const StorageWrapper = {
|
|
|
13
13
|
return value ?? defaultValue;
|
|
14
14
|
}
|
|
15
15
|
catch (error) {
|
|
16
|
-
|
|
17
|
-
if (__DEV__)
|
|
18
|
-
console.warn('[Localization] Failed to get storage value:', error);
|
|
16
|
+
console.warn('[Localization] Failed to get storage value:', error);
|
|
19
17
|
return defaultValue;
|
|
20
18
|
}
|
|
21
19
|
},
|
|
@@ -24,9 +22,7 @@ export const StorageWrapper = {
|
|
|
24
22
|
await AsyncStorage.setItem(key, value);
|
|
25
23
|
}
|
|
26
24
|
catch (error) {
|
|
27
|
-
|
|
28
|
-
if (__DEV__)
|
|
29
|
-
console.warn('[Localization] Failed to set storage value:', error);
|
|
25
|
+
console.warn('[Localization] Failed to set storage value:', error);
|
|
30
26
|
}
|
|
31
27
|
},
|
|
32
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncStorageWrapper.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/AsyncStorageWrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,YAAY,MAAM,2CAA2C,CAAC;AAErE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,wBAAwB;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,YAAoB;QAC/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,OAAO,KAAK,IAAI,YAAY,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,
|
|
1
|
+
{"version":3,"file":"AsyncStorageWrapper.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/AsyncStorageWrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,YAAY,MAAM,2CAA2C,CAAC;AAErE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,wBAAwB;CAC1B,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,YAAoB;QAC/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,OAAO,KAAK,IAAI,YAAY,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACnE,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,KAAa;QACxC,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Localization Store
|
|
3
3
|
* Zustand state management for language preferences with AsyncStorage persistence
|
|
4
|
-
*
|
|
5
|
-
* REFACTORED: Now uses centralized AsyncStorageWrapper for DRY compliance
|
|
6
|
-
* - Eliminates duplicate AsyncStorage calls
|
|
7
|
-
* - Consistent error handling and logging
|
|
8
|
-
* - Type-safe storage operations
|
|
9
4
|
*/
|
|
10
|
-
import type { Language } from
|
|
5
|
+
import type { Language } from '../../domain/repositories/ILocalizationRepository';
|
|
11
6
|
interface LocalizationState {
|
|
12
7
|
currentLanguage: string;
|
|
13
8
|
isRTL: boolean;
|
|
@@ -22,7 +17,7 @@ export declare const useLocalizationStore: import("zustand").UseBoundStore<impor
|
|
|
22
17
|
* Provides current language, RTL state, language switching, and translation function
|
|
23
18
|
*/
|
|
24
19
|
export declare const useLocalization: () => {
|
|
25
|
-
t:
|
|
20
|
+
t: any;
|
|
26
21
|
currentLanguage: string;
|
|
27
22
|
currentLanguageObject: Language;
|
|
28
23
|
isRTL: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalizationStore.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/LocalizationStore.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"LocalizationStore.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/LocalizationStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AAElF,UAAU,iBAAiB;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IAC/B,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,oBAAoB,gFAqE9B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;gCA/EE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;sBAClC,OAAO,CAAC,IAAI,CAAC;CAoGhC,CAAC"}
|