@@ -60,12 +60,137 @@ RCNDeviceModel FIRRemoteConfigDeviceSubtype(void) {
6060 return [[[NSLocale currentLocale ] objectForKey: NSLocaleCountryCode ] lowercaseString ];
6161}
6262
63- NSArray <NSString *> *FIRRemoteConfigAppManagerLocales (void ) {
64- // get the list of language codes
65- NSArray *locales = [NSLocale ISOLanguageCodes ];
63+ // TODO(rizafran): To migrate to use ISOLanguageCodes in the future
64+ NSDictionary <NSString *, NSArray *> *FIRRemoteConfigFirebaseLocaleMap (void ) {
65+ return @{
66+ // Albanian
67+ @" sq" : @[ @" sq_AL" ],
68+ // Belarusian
69+ @" be" : @[ @" be_BY" ],
70+ // Bulgarian
71+ @" bg" : @[ @" bg_BG" ],
72+ // Catalan
73+ @" ca" : @[ @" ca" , @" ca_ES" ],
74+ // Croatian
75+ @" hr" : @[ @" hr" , @" hr_HR" ],
76+ // Czech
77+ @" cs" : @[ @" cs" , @" cs_CZ" ],
78+ // Danish
79+ @" da" : @[ @" da" , @" da_DK" ],
80+ // Estonian
81+ @" et" : @[ @" et_EE" ],
82+ // Finnish
83+ @" fi" : @[ @" fi" , @" fi_FI" ],
84+ // Hebrew
85+ @" he" : @[ @" he" , @" iw_IL" ],
86+ // Hungarian
87+ @" hu" : @[ @" hu" , @" hu_HU" ],
88+ // Icelandic
89+ @" is" : @[ @" is_IS" ],
90+ // Indonesian
91+ @" id" : @[ @" id" , @" in_ID" , @" id_ID" ],
92+ // Irish
93+ @" ga" : @[ @" ga_IE" ],
94+ // Korean
95+ @" ko" : @[ @" ko" , @" ko_KR" , @" ko-KR" ],
96+ // Latvian
97+ @" lv" : @[ @" lv_LV" ],
98+ // Lithuanian
99+ @" lt" : @[ @" lt_LT" ],
100+ // Macedonian
101+ @" mk" : @[ @" mk_MK" ],
102+ // Malay
103+ @" ms" : @[ @" ms_MY" ],
104+ // Maltese
105+ @" mt" : @[ @" mt_MT" ],
106+ // Polish
107+ @" pl" : @[ @" pl" , @" pl_PL" , @" pl-PL" ],
108+ // Romanian
109+ @" ro" : @[ @" ro" , @" ro_RO" ],
110+ // Russian
111+ @" ru" : @[ @" ru_RU" , @" ru" , @" ru_BY" , @" ru_KZ" , @" ru-RU" ],
112+ // Slovak
113+ @" sk" : @[ @" sk" , @" sk_SK" ],
114+ // Slovenian
115+ @" sl" : @[ @" sl_SI" ],
116+ // Swedish
117+ @" sv" : @[ @" sv" , @" sv_SE" , @" sv-SE" ],
118+ // Turkish
119+ @" tr" : @[ @" tr" , @" tr-TR" , @" tr_TR" ],
120+ // Ukrainian
121+ @" uk" : @[ @" uk" , @" uk_UA" ],
122+ // Vietnamese
123+ @" vi" : @[ @" vi" , @" vi_VN" ],
124+ // The following are groups of locales or locales that sub-divide a
125+ // language).
126+ // Arabic
127+ @" ar" : @[
128+ @" ar" , @" ar_DZ" , @" ar_BH" , @" ar_EG" , @" ar_IQ" , @" ar_JO" , @" ar_KW" ,
129+ @" ar_LB" , @" ar_LY" , @" ar_MA" , @" ar_OM" , @" ar_QA" , @" ar_SA" , @" ar_SD" ,
130+ @" ar_SY" , @" ar_TN" , @" ar_AE" , @" ar_YE" , @" ar_GB" , @" ar-IQ" , @" ar_US"
131+ ],
132+ // Simplified Chinese
133+ @" zh_Hans" : @[ @" zh_CN" , @" zh_SG" , @" zh-Hans" ],
134+ // Traditional Chinese
135+ // Remove zh_HK until console added to the list. Otherwise client sends
136+ // zh_HK and server/console falls back to zh.
137+ // @"zh_Hant" : @[ @"zh_HK", @"zh_TW", @"zh-Hant", @"zh-HK", @"zh-TW" ],
138+ @" zh_Hant" : @[ @" zh_TW" , @" zh-Hant" , @" zh-TW" ],
139+ // Dutch
140+ @" nl" : @[ @" nl" , @" nl_BE" , @" nl_NL" , @" nl-NL" ],
141+ // English
142+ @" en" : @[
143+ @" en" , @" en_AU" , @" en_CA" , @" en_IN" , @" en_IE" , @" en_MT" , @" en_NZ" , @" en_PH" ,
144+ @" en_SG" , @" en_ZA" , @" en_GB" , @" en_US" , @" en_AE" , @" en-AE" , @" en_AS" , @" en-AU" ,
145+ @" en_BD" , @" en-CA" , @" en_EG" , @" en_ES" , @" en_GB" , @" en-GB" , @" en_HK" , @" en_ID" ,
146+ @" en-IN" , @" en_NG" , @" en-PH" , @" en_PK" , @" en-SG" , @" en-US"
147+ ],
148+ // French
149+ @" fr" :
150+ @[ @" fr" , @" fr_BE" , @" fr_CA" , @" fr_FR" , @" fr_LU" , @" fr_CH" , @" fr-CA" , @" fr-FR" , @" fr_MA" ],
151+ // German
152+ @" de" : @[ @" de" , @" de_AT" , @" de_DE" , @" de_LU" , @" de_CH" , @" de-DE" ],
153+ // Greek
154+ @" el" : @[ @" el" , @" el_CY" , @" el_GR" ],
155+ // India
156+ @" hi_IN" :
157+ @[ @" hi_IN" , @" ta_IN" , @" te_IN" , @" mr_IN" , @" bn_IN" , @" gu_IN" , @" kn_IN" , @" pa_Guru_IN" ],
158+ // Italian
159+ @" it" : @[ @" it" , @" it_IT" , @" it_CH" , @" it-IT" ],
160+ // Japanese
161+ @" ja" : @[ @" ja" , @" ja_JP" , @" ja_JP_JP" , @" ja-JP" ],
162+ // Norwegian
163+ @" no" : @[ @" nb" , @" no_NO" , @" no_NO_NY" , @" nb_NO" ],
164+ // Brazilian Portuguese
165+ @" pt_BR" : @[ @" pt_BR" , @" pt-BR" ],
166+ // European Portuguese
167+ @" pt_PT" : @[ @" pt" , @" pt_PT" , @" pt-PT" ],
168+ // Serbian
169+ @" sr" : @[ @" sr_BA" , @" sr_ME" , @" sr_RS" , @" sr_Latn_BA" , @" sr_Latn_ME" , @" sr_Latn_RS" ],
170+ // European Spanish
171+ @" es_ES" : @[ @" es" , @" es_ES" , @" es-ES" ],
172+ // Mexican Spanish
173+ @" es_MX" : @[ @" es-MX" , @" es_MX" , @" es_US" , @" es-US" ],
174+ // Latin American Spanish
175+ @" es_419" : @[
176+ @" es_AR" , @" es_BO" , @" es_CL" , @" es_CO" , @" es_CR" , @" es_DO" , @" es_EC" ,
177+ @" es_SV" , @" es_GT" , @" es_HN" , @" es_NI" , @" es_PA" , @" es_PY" , @" es_PE" ,
178+ @" es_PR" , @" es_UY" , @" es_VE" , @" es-AR" , @" es-CL" , @" es-CO"
179+ ],
180+ // Thai
181+ @" th" : @[ @" th" , @" th_TH" , @" th_TH_TH" ],
182+ };
183+ }
66184
185+ NSArray <NSString *> *FIRRemoteConfigAppManagerLocales (void ) {
186+ NSMutableArray *locales = [NSMutableArray array ];
187+ NSDictionary <NSString *, NSArray *> *localesMap = FIRRemoteConfigFirebaseLocaleMap ();
188+ for (NSString *key in localesMap) {
189+ [locales addObjectsFromArray: localesMap[key]];
190+ }
67191 return locales;
68192}
193+
69194NSString *FIRRemoteConfigDeviceLocale (void ) {
70195 NSArray <NSString *> *locales = FIRRemoteConfigAppManagerLocales ();
71196 NSArray <NSString *> *preferredLocalizations =
0 commit comments