@@ -47,7 +47,6 @@ import androidx.compose.ui.unit.LayoutDirection
47
47
import androidx.compose.ui.unit.dp
48
48
import androidx.core.os.LocaleListCompat
49
49
import com.dede.android_eggs.BuildConfig
50
- import com.dede.android_eggs.R
51
50
import com.dede.android_eggs.views.settings.compose.basic.ExpandOptionsPref
52
51
import com.dede.android_eggs.views.settings.compose.basic.Option
53
52
import com.dede.android_eggs.views.settings.compose.basic.OptionShapes
@@ -100,49 +99,44 @@ object LanguagePrefUtil {
100
99
private const val BURMESE = 34 // my-MM
101
100
private const val BENGALI = 35 // bn-BD
102
101
103
- class LangOp (
104
- val value : Int ,
105
- @StringRes val titleRes : Int ,
106
- @StringRes val localeTitleRes : Int ,
107
- val locale : Locale
108
- )
102
+ class LangOp (val value : Int , @StringRes val langRes : Int , val locale : Locale )
109
103
110
104
// @formatter:off
111
105
private val languageOptions = listOf (
112
- LangOp (SIMPLIFIED_CHINESE , R .string.language_zh_SC, StringsR .string.locale_lang_zh_SC, Locale .SIMPLIFIED_CHINESE ),
113
- LangOp (TRADITIONAL_CHINESE , R .string.language_zh_TC, StringsR .string.locale_lang_zh_TC, Locale .TRADITIONAL_CHINESE ),
114
- LangOp (ENGLISH , R .string.language_en, StringsR .string.locale_lang_en, Locale .ENGLISH ),
115
- LangOp (RUSSIAN , R .string.language_ru, StringsR .string.locale_lang_ru, createLocale(" ru" )),
116
- LangOp (ITALIAN , R .string.language_it, StringsR .string.locale_lang_it, Locale .ITALIAN ),
117
- LangOp (GERMANY , R .string.language_de, StringsR .string.locale_lang_de, Locale .GERMANY ),
118
- LangOp (SPANISH , R .string.language_es, StringsR .string.locale_lang_es, createLocale(" es" )),
119
- LangOp (PORTUGAL , R .string.language_pt, StringsR .string.locale_lang_pt, createLocale(" pt" )),
120
- LangOp (PORTUGAL_BRAZIL , R .string.language_pt_BR, StringsR .string.locale_lang_pt_BR, createLocale(" pt" , " BR" )),
121
- LangOp (INDONESIA , R .string.language_in_ID, StringsR .string.locale_lang_in_ID, createLocale(" in" , " ID" )),
122
- LangOp (ARABIC , R .string.language_ar_SA, StringsR .string.locale_lang_ar_SA, createLocale(" ar" , " SA" )),
123
- LangOp (CROATIAN , R .string.language_hr_HR, StringsR .string.locale_lang_hr_HR, createLocale(" hr" , " HR" )),
124
- LangOp (FRENCH , R .string.language_fr, StringsR .string.locale_lang_fr, Locale .FRENCH ),
125
- LangOp (POLISH , R .string.language_pl_PL, StringsR .string.locale_lang_pl_PL, createLocale(" pl" , " PL" )),
126
- LangOp (DUTCH , R .string.language_nl_NL, StringsR .string.locale_lang_nl_NL, createLocale(" nl" , " NL" )),
127
- // LangOp(LATIN, R.string.language_la_LA, StringsR.string.locale_lang_la_LA, createLocale("la", "LA")),
128
- LangOp (TURKISH , R .string.language_tr_TR, StringsR .string.locale_lang_tr_TR, createLocale(" tr" , " TR" )),
129
- LangOp (UKRAINIAN , R .string.language_uk_UA, StringsR .string.locale_lang_uk_UA, createLocale(" uk" , " UA" )),
130
- LangOp (JAPANESE , R .string.language_ja_JP, StringsR .string.locale_lang_ja_JP, Locale .JAPAN ),
131
- LangOp (KOREAN_KOREA , R .string.language_ko_KR, StringsR .string.locale_lang_ko_KR, createLocale(" ko" ," KR" )),
132
- LangOp (GREEK , R .string.language_el_GR, StringsR .string.locale_lang_el_GR, createLocale(" el" , " GR" )),
133
- LangOp (FINNISH , R .string.language_fi_FI, StringsR .string.locale_lang_fi_FI, createLocale(" fi" , " FI" )),
134
- LangOp (VIETNAMESE , R .string.language_vi_VN, StringsR .string.locale_lang_vi_VN, createLocale(" vi" , " VN" )),
135
- LangOp (HUNGARIAN , R .string.language_hu_HU, StringsR .string.locale_lang_hu_HU, createLocale(" hu" , " HU" )),
136
- LangOp (THAI , R .string.language_th_TH, StringsR .string.locale_lang_th_TH, createLocale(" th" , " TH" )),
137
- LangOp (NORWEGIAN , R .string.language_no_NO, StringsR .string.locale_lang_no_NO, createLocale(" no" , " NO" )),
138
- LangOp (FILIPINO , R .string.language_fil_PH, StringsR .string.locale_lang_fil_PH, createLocale(" fil" , " PH" )),
139
- LangOp (LAO , R .string.language_lo_LA, StringsR .string.locale_lang_lo_LA, createLocale(" lo" , " LA" )),
140
- LangOp (CZECH , R .string.language_cs_CZ, StringsR .string.locale_lang_cs_CZ, createLocale(" cs" , " CZ" )),
141
- LangOp (TAMIL , R .string.language_ta, StringsR .string.locale_lang_ta, createLocale(" ta" ," IN" )),
142
- LangOp (ROMANIAN , R .string.language_ro, StringsR .string.locale_lang_ro, createLocale(" ro" ," RO" )),
143
- LangOp (SWEDISH , R .string.language_sv_SE, StringsR .string.locale_lang_sv_SE, createLocale(" sv" ," SE" )),
144
- LangOp (BURMESE , R .string.language_my_MM, StringsR .string.locale_lang_my_MM, createLocale(" my" ," MM" )),
145
- LangOp (BENGALI , R .string.language_bn_BD, StringsR .string.locale_lang_bn_BD, createLocale(" bn" ," BD" )),
106
+ LangOp (SIMPLIFIED_CHINESE , StringsR .string.locale_lang_zh_SC, Locale .SIMPLIFIED_CHINESE ),
107
+ LangOp (TRADITIONAL_CHINESE , StringsR .string.locale_lang_zh_TC, Locale .TRADITIONAL_CHINESE ),
108
+ LangOp (ENGLISH , StringsR .string.locale_lang_en, Locale .ENGLISH ),
109
+ LangOp (RUSSIAN , StringsR .string.locale_lang_ru, createLocale(" ru" )),
110
+ LangOp (ITALIAN , StringsR .string.locale_lang_it, Locale .ITALIAN ),
111
+ LangOp (GERMANY , StringsR .string.locale_lang_de, Locale .GERMANY ),
112
+ LangOp (SPANISH , StringsR .string.locale_lang_es, createLocale(" es" )),
113
+ LangOp (PORTUGAL , StringsR .string.locale_lang_pt, createLocale(" pt" )),
114
+ LangOp (PORTUGAL_BRAZIL , StringsR .string.locale_lang_pt_BR, createLocale(" pt" , " BR" )),
115
+ LangOp (INDONESIA , StringsR .string.locale_lang_in_ID, createLocale(" in" , " ID" )),
116
+ LangOp (ARABIC , StringsR .string.locale_lang_ar_SA, createLocale(" ar" , " SA" )),
117
+ LangOp (CROATIAN , StringsR .string.locale_lang_hr_HR, createLocale(" hr" , " HR" )),
118
+ LangOp (FRENCH , StringsR .string.locale_lang_fr, Locale .FRENCH ),
119
+ LangOp (POLISH , StringsR .string.locale_lang_pl_PL, createLocale(" pl" , " PL" )),
120
+ LangOp (DUTCH , StringsR .string.locale_lang_nl_NL, createLocale(" nl" , " NL" )),
121
+ // LangOp(LATIN, StringsR.string.locale_lang_la_LA, createLocale("la", "LA")),
122
+ LangOp (TURKISH , StringsR .string.locale_lang_tr_TR, createLocale(" tr" , " TR" )),
123
+ LangOp (UKRAINIAN , StringsR .string.locale_lang_uk_UA, createLocale(" uk" , " UA" )),
124
+ LangOp (JAPANESE , StringsR .string.locale_lang_ja_JP, Locale .JAPAN ),
125
+ LangOp (KOREAN_KOREA , StringsR .string.locale_lang_ko_KR, createLocale(" ko" ," KR" )),
126
+ LangOp (GREEK , StringsR .string.locale_lang_el_GR, createLocale(" el" , " GR" )),
127
+ LangOp (FINNISH , StringsR .string.locale_lang_fi_FI, createLocale(" fi" , " FI" )),
128
+ LangOp (VIETNAMESE , StringsR .string.locale_lang_vi_VN, createLocale(" vi" , " VN" )),
129
+ LangOp (HUNGARIAN , StringsR .string.locale_lang_hu_HU, createLocale(" hu" , " HU" )),
130
+ LangOp (THAI , StringsR .string.locale_lang_th_TH, createLocale(" th" , " TH" )),
131
+ LangOp (NORWEGIAN , StringsR .string.locale_lang_no_NO, createLocale(" no" , " NO" )),
132
+ LangOp (FILIPINO , StringsR .string.locale_lang_fil_PH, createLocale(" fil" , " PH" )),
133
+ LangOp (LAO , StringsR .string.locale_lang_lo_LA, createLocale(" lo" , " LA" )),
134
+ LangOp (CZECH , StringsR .string.locale_lang_cs_CZ, createLocale(" cs" , " CZ" )),
135
+ LangOp (TAMIL , StringsR .string.locale_lang_ta, createLocale(" ta" ," IN" )),
136
+ LangOp (ROMANIAN , StringsR .string.locale_lang_ro, createLocale(" ro" ," RO" )),
137
+ LangOp (SWEDISH , StringsR .string.locale_lang_sv_SE, createLocale(" sv" ," SE" )),
138
+ LangOp (BURMESE , StringsR .string.locale_lang_my_MM, createLocale(" my" ," MM" )),
139
+ LangOp (BENGALI , StringsR .string.locale_lang_bn_BD, createLocale(" bn" ," BD" )),
146
140
)
147
141
// @formatter:on
148
142
@@ -221,7 +215,7 @@ object LanguagePrefUtil {
221
215
return languageOptions.sortedWith(LangOpComparator (context))
222
216
}
223
217
224
- private class LangOpComparator (val context : Context ) : Comparator<LangOp> {
218
+ private class LangOpComparator (private val context : Context ) : Comparator<LangOp> {
225
219
226
220
private val LangOp .compareValue: Int
227
221
get() = when (value) {
@@ -231,7 +225,7 @@ object LanguagePrefUtil {
231
225
}
232
226
233
227
private val LangOp .compareName: String
234
- get() = context.getString(titleRes )
228
+ get() = toLocalContext( context) .getString(langRes )
235
229
236
230
override fun compare (o1 : LangOp , o2 : LangOp ): Int {
237
231
var r = o1.compareValue.compareTo(o2.compareValue)
@@ -294,7 +288,7 @@ fun LanguagePref() {
294
288
if (langOp != null ) {
295
289
ValueOption (
296
290
leadingIcon = imageVectorIconBlock(imageVector = Icons .Rounded .Spellcheck ),
297
- title = stringResource(id = langOp.titleRes ),
291
+ title = stringResource(id = langOp.langRes ),
298
292
trailingContent = radioButtonBlock(languageOptionValue == langOp.value),
299
293
onOptionClick = onOptionClick,
300
294
value = langOp.value
@@ -365,17 +359,18 @@ private fun LanguageSelectedDialog(
365
359
Box (modifier = Modifier .padding(start = 14 .dp, end = 16 .dp)) {
366
360
RadioButton (selected = selectedLangOp == it, onClick = null )
367
361
}
362
+ val itemLocaleContext = remember(it) { it.toLocalContext(basicContext) }
368
363
Column (
369
364
modifier = Modifier
370
365
.weight(1f )
371
366
.padding(vertical = 4 .dp)
372
367
) {
373
368
Text (
374
- text = localeContext .getString(it.titleRes ),
369
+ text = itemLocaleContext .getString(it.langRes ),
375
370
style = MaterialTheme .typography.titleMedium
376
371
)
377
372
Text (
378
- text = localeContext.getString(it.localeTitleRes ),
373
+ text = localeContext.getString(it.langRes ),
379
374
style = MaterialTheme .typography.bodySmall,
380
375
)
381
376
}
0 commit comments