@umituz/react-native-localization 1.2.0 → 1.2.2
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 +25 -159
- 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 +29 -155
- 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;AA6F3B,eAAe,IAAI,CAAC"}
|
|
@@ -1,179 +1,55 @@
|
|
|
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
35
|
* Deferred initialization to avoid React Native renderer conflicts
|
|
134
|
-
* Only initializes if dependencies are available
|
|
135
36
|
*/
|
|
136
37
|
let isInitialized = false;
|
|
137
38
|
const initializeI18n = () => {
|
|
138
39
|
if (isInitialized)
|
|
139
40
|
return;
|
|
140
|
-
// Check if dependencies are available
|
|
141
|
-
if (!checkDependencies()) {
|
|
142
|
-
/* eslint-disable-next-line no-console */
|
|
143
|
-
if (__DEV__)
|
|
144
|
-
console.warn("[i18n] Dependencies not available. Skipping initialization.");
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
41
|
try {
|
|
148
42
|
/* eslint-disable-next-line no-console */
|
|
149
43
|
if (__DEV__)
|
|
150
|
-
console.log(
|
|
151
|
-
|
|
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...");
|
|
44
|
+
console.log('[i18n] Initializing i18next...');
|
|
45
|
+
// Check if initReactI18next is available
|
|
160
46
|
if (!initReactI18next) {
|
|
161
|
-
throw new Error(
|
|
47
|
+
throw new Error('initReactI18next is undefined');
|
|
162
48
|
}
|
|
163
49
|
/* eslint-disable-next-line no-console */
|
|
164
50
|
if (__DEV__)
|
|
165
|
-
console.log(
|
|
166
|
-
|
|
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({
|
|
51
|
+
console.log('[i18n] initReactI18next found, initializing...');
|
|
52
|
+
i18n.use(initReactI18next).init({
|
|
177
53
|
resources,
|
|
178
54
|
lng: DEFAULT_LANGUAGE,
|
|
179
55
|
fallbackLng: DEFAULT_LANGUAGE,
|
|
@@ -183,36 +59,26 @@ const initializeI18n = () => {
|
|
|
183
59
|
react: {
|
|
184
60
|
useSuspense: false, // Disable suspense for React Native
|
|
185
61
|
},
|
|
186
|
-
compatibilityJSON:
|
|
62
|
+
compatibilityJSON: 'v4', // Use i18next v4 JSON format
|
|
187
63
|
});
|
|
188
|
-
/* eslint-disable-next-line no-console */
|
|
189
|
-
if (__DEV__)
|
|
190
|
-
console.log("[i18n] i18n.init completed");
|
|
191
64
|
isInitialized = true;
|
|
192
65
|
/* eslint-disable-next-line no-console */
|
|
193
66
|
if (__DEV__)
|
|
194
|
-
console.log(
|
|
67
|
+
console.log('[i18n] i18next initialized successfully');
|
|
195
68
|
}
|
|
196
69
|
catch (error) {
|
|
197
70
|
/* eslint-disable-next-line no-console */
|
|
198
71
|
if (__DEV__)
|
|
199
|
-
console.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
|
-
});
|
|
72
|
+
console.error('[i18n] Initialization error:', error);
|
|
207
73
|
// Don't throw - allow app to continue without i18n
|
|
208
74
|
/* eslint-disable-next-line no-console */
|
|
209
75
|
if (__DEV__)
|
|
210
|
-
console.warn(
|
|
76
|
+
console.warn('[i18n] Continuing without i18n initialization');
|
|
211
77
|
}
|
|
212
78
|
};
|
|
213
79
|
// Defer initialization until React is ready
|
|
214
80
|
// React Native doesn't have window, so we check for global
|
|
215
|
-
if (typeof global !==
|
|
81
|
+
if (typeof global !== 'undefined') {
|
|
216
82
|
// Use setTimeout to defer initialization
|
|
217
83
|
setTimeout(() => {
|
|
218
84
|
initializeI18n();
|
|
@@ -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;;;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,6BAA6B;SACvD,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"}
|
|
@@ -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":"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,
|
|
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"}
|