@umituz/react-native-settings 5.3.28 → 5.3.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/domains/faqs/presentation/screens/FAQScreen.tsx +1 -0
- package/src/domains/localization/infrastructure/config/LocaleMapping.ts +40 -1
- package/src/domains/localization/infrastructure/config/constants/defaultLanguages.ts +1 -0
- package/src/domains/localization/infrastructure/storage/LanguageInitializer.ts +7 -1
- package/src/domains/localization/infrastructure/storage/LanguageSwitcher.ts +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-settings",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.30",
|
|
4
4
|
"description": "Complete settings hub for React Native apps - consolidated package with settings, localization, about, legal, appearance, feedback, FAQs, rating, and gamification",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -49,7 +49,7 @@ export const LOCALE_MAPPING: Record<string, string> = {
|
|
|
49
49
|
'zh-TW': 'zh-TW',
|
|
50
50
|
'zh-HK': 'zh-TW',
|
|
51
51
|
|
|
52
|
-
// Others
|
|
52
|
+
// Others — language code (short) → full locale
|
|
53
53
|
'ar': 'ar-SA',
|
|
54
54
|
'bg': 'bg-BG',
|
|
55
55
|
'cs': 'cs-CZ',
|
|
@@ -70,9 +70,48 @@ export const LOCALE_MAPPING: Record<string, string> = {
|
|
|
70
70
|
'ro': 'ro-RO',
|
|
71
71
|
'ru': 'ru-RU',
|
|
72
72
|
'sk': 'sk-SK',
|
|
73
|
+
'sl': 'sl-SI',
|
|
73
74
|
'sv': 'sv-SE',
|
|
74
75
|
'th': 'th-TH',
|
|
76
|
+
'tl': 'tl-PH',
|
|
77
|
+
'fil': 'tl-PH',
|
|
75
78
|
'tr': 'tr-TR',
|
|
76
79
|
'uk': 'uk-UA',
|
|
77
80
|
'vi': 'vi-VN',
|
|
81
|
+
|
|
82
|
+
// Full locale codes (direct mapping for robustness)
|
|
83
|
+
'ar-SA': 'ar-SA',
|
|
84
|
+
'bg-BG': 'bg-BG',
|
|
85
|
+
'cs-CZ': 'cs-CZ',
|
|
86
|
+
'da-DK': 'da-DK',
|
|
87
|
+
'de-DE': 'de-DE',
|
|
88
|
+
'de-AT': 'de-DE',
|
|
89
|
+
'de-CH': 'de-DE',
|
|
90
|
+
'el-GR': 'el-GR',
|
|
91
|
+
'fi-FI': 'fi-FI',
|
|
92
|
+
'hi-IN': 'hi-IN',
|
|
93
|
+
'hr-HR': 'hr-HR',
|
|
94
|
+
'hu-HU': 'hu-HU',
|
|
95
|
+
'id-ID': 'id-ID',
|
|
96
|
+
'it-IT': 'it-IT',
|
|
97
|
+
'it-CH': 'it-IT',
|
|
98
|
+
'ja-JP': 'ja-JP',
|
|
99
|
+
'ko-KR': 'ko-KR',
|
|
100
|
+
'ms-MY': 'ms-MY',
|
|
101
|
+
'ms-SG': 'ms-MY',
|
|
102
|
+
'nl-NL': 'nl-NL',
|
|
103
|
+
'nl-BE': 'nl-NL',
|
|
104
|
+
'pl-PL': 'pl-PL',
|
|
105
|
+
'ro-RO': 'ro-RO',
|
|
106
|
+
'ru-RU': 'ru-RU',
|
|
107
|
+
'ru-BY': 'ru-RU',
|
|
108
|
+
'ru-KZ': 'ru-RU',
|
|
109
|
+
'sk-SK': 'sk-SK',
|
|
110
|
+
'sl-SI': 'sl-SI',
|
|
111
|
+
'sv-SE': 'sv-SE',
|
|
112
|
+
'th-TH': 'th-TH',
|
|
113
|
+
'tl-PH': 'tl-PH',
|
|
114
|
+
'tr-TR': 'tr-TR',
|
|
115
|
+
'uk-UA': 'uk-UA',
|
|
116
|
+
'vi-VN': 'vi-VN',
|
|
78
117
|
};
|
|
@@ -32,6 +32,7 @@ export const DEFAULT_LANGUAGES: Language[] = [
|
|
|
32
32
|
{ code: 'ro-RO', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴', isRTL: false },
|
|
33
33
|
{ code: 'ru-RU', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺', isRTL: false },
|
|
34
34
|
{ code: 'sk-SK', name: 'Slovak', nativeName: 'Slovenčina', flag: '🇸🇰', isRTL: false },
|
|
35
|
+
{ code: 'sl-SI', name: 'Slovenian', nativeName: 'Slovenščina', flag: '🇸🇮', isRTL: false },
|
|
35
36
|
{ code: 'sv-SE', name: 'Swedish', nativeName: 'Svenska', flag: '🇸🇪', isRTL: false },
|
|
36
37
|
{ code: 'th-TH', name: 'Thai', nativeName: 'ไทย', flag: '🇹🇭', isRTL: false },
|
|
37
38
|
{ code: 'tl-PH', name: 'Filipino', nativeName: 'Filipino', flag: '🇵🇭', isRTL: false },
|
|
@@ -13,6 +13,7 @@ import { languageRepository } from '../repository/LanguageRepository';
|
|
|
13
13
|
import { getDeviceLocale } from '../config/languages';
|
|
14
14
|
|
|
15
15
|
const LANGUAGE_STORAGE_KEY = '@localization:language';
|
|
16
|
+
const USER_SET_KEY = '@localization:user-set';
|
|
16
17
|
const DEFAULT_LANGUAGE = 'en-US';
|
|
17
18
|
|
|
18
19
|
export class LanguageInitializer {
|
|
@@ -36,10 +37,15 @@ export class LanguageInitializer {
|
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
private static async determineLanguageCode(savedLanguage: string): Promise<string> {
|
|
39
|
-
|
|
40
|
+
// If user explicitly selected a language (even en-US), respect their choice
|
|
41
|
+
const userSetResult = await storageRepository.getString(USER_SET_KEY, '');
|
|
42
|
+
const userHasSetLanguage = userSetResult.success && userSetResult.data === 'true';
|
|
43
|
+
|
|
44
|
+
if (userHasSetLanguage && savedLanguage) {
|
|
40
45
|
return savedLanguage;
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
// First launch or no explicit user selection — detect from device
|
|
43
49
|
const deviceLocale = getDeviceLocale();
|
|
44
50
|
await storageRepository.setString(LANGUAGE_STORAGE_KEY, deviceLocale);
|
|
45
51
|
return deviceLocale;
|
|
@@ -12,6 +12,7 @@ import { languageRepository } from '../repository/LanguageRepository';
|
|
|
12
12
|
import { isDev } from '../../../../utils/devUtils';
|
|
13
13
|
|
|
14
14
|
const LANGUAGE_STORAGE_KEY = '@localization:language';
|
|
15
|
+
const USER_SET_KEY = '@localization:user-set';
|
|
15
16
|
|
|
16
17
|
export class LanguageSwitcher {
|
|
17
18
|
/**
|
|
@@ -36,6 +37,7 @@ export class LanguageSwitcher {
|
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
await storageRepository.setString(LANGUAGE_STORAGE_KEY, languageCode);
|
|
40
|
+
await storageRepository.setString(USER_SET_KEY, 'true');
|
|
39
41
|
|
|
40
42
|
if (isDev()) {
|
|
41
43
|
}
|