Я меняю приложение на языке локали, как показано ниже:
@Override
protected void attachBaseContext(Context newBase) {
String languageID = new SessionManager(newBase).getIdLanguage();
super.attachBaseContext(ContextWrapper.wrap(newBase, languageID));
}
Проблема: Но когда я меняю приложение на языке локали, меняется цифра приложения.
НоМне не нужно менять digits
. (Мне нужны цифры на английском)
И мой ContextWrapper.class
ниже:
public class ContextWrapper extends android.content.ContextWrapper {
private ContextWrapper(Context base) {
super(base);
}
@SuppressWarnings("deprecation")
public static android.content.ContextWrapper wrap(Context context, String language) {
Configuration config = context.getResources().getConfiguration();
if (language != null && !TextUtils.isEmpty(language)) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
setSystemLocale(config, locale);
} else {
setSystemLocaleLegacy(config, locale);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
context = context.createConfigurationContext(config);
} else {
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
} else {
Locale locale = new Locale("en");
Locale.setDefault(locale);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
setSystemLocale(config, locale);
} else {
setSystemLocaleLegacy(config, locale);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
context = context.createConfigurationContext(config);
} else {
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
}
return new ContextWrapper(context);
}
@SuppressWarnings("deprecation")
private static void setSystemLocaleLegacy(Configuration config, Locale locale) {
config.locale = locale;
}
@TargetApi(Build.VERSION_CODES.N)
private static void setSystemLocale(Configuration config, Locale locale) {
config.setLocale(locale);
}
}
Что я могу сделать?
Как я могу установить digits
по умолчанию для приложения на en
?
Например, когда я устанавливаю язык локали на Arabic
, получите арабские цифры для цифр или арабский язык для дат.цифры.
Мне нужно решить эту проблему во всех приложениях, которые мне не нужно использовать снизу:
int i = 1;
NumberFormat nf = NumberFormat.getInstance(new Locale("hi", "IN"));
nf.format(i);
И я проверяю снизу, но не работаю:
Locale locale = new Locale("ar", "EN");