更改语言环境应用程序后,设备的更改类型数字格式

时间:2018-10-25 11:30:51

标签: android android-context android-date

我正在更改以下语言的语言环境应用程序:

@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");

1 个答案:

答案 0 :(得分:0)

我遇到了类似日期的问题 这是我固定的方法,希望对您有帮助

Calendar mydate = Calendar.getInstance();
        mydate.setTimeInMillis(unix * 1000);
        return
                String.format(Locale.US, "%02d", mydate.get(Calendar.DAY_OF_MONTH))
                        + "." +
                        String.format(Locale.US, "%02d", (mydate.get(Calendar.MONTH) + 1))
                        + "." + mydate.get(Calendar.YEAR);