2

我需要在我的应用程序中更改标签的本地化。我为英语和印地语创建了两个字符串文件夹。当我更改本地化时,它工作正常并且所有标签都以印地语显示。

private void setLanguage(Boolean changeLang) {
    if (changeLang) {
        Locale.setDefault(new Locale("hi", "IN"));
        Configuration config = new Configuration();
        config = viewDashboard.getBaseContext().getResources().getConfiguration();
        config.locale = new Locale("hi", "IN");
        viewDashboard
                .getBaseContext()
                .getResources()
                .updateConfiguration(
                        config,
                        viewDashboard.getBaseContext().getResources()
                                .getDisplayMetrics());

    } else {
        Locale.setDefault(new Locale("en", "EN"));
        Configuration config = new Configuration();
        config = viewDashboard.getBaseContext().getResources().getConfiguration();
        config.locale = new Locale("en", "EN");
        viewDashboard
                .getBaseContext()
                .getResources()
                .updateConfiguration(
                        config,
                        viewDashboard.getBaseContext().getResources()
                                .getDisplayMetrics());

    }
}

但它也会将日期选择器语言更改为我不需要的印地语。同样,很少有文本视图也显示印地语字体,即我从日期选择器设置日期或在计算后显示总金额,对话框“确定”和“取消”转换为我不想要的印地语。我的问题是如何防止日期选择器和对话框按钮标签在以编程方式更改本地化后转换为印地语。

4

1 回答 1

0

我已经这样做了,我认为这对你很有帮助。只需将两个参数传递给这个方法,一个是语言,另一个是你调用这个方法的活动。

public static void setLocale(String language, Activity activity)
{
    Locale locale= new Locale(language);
    Locale.setDefault(locale);

    Configuration config = new Configuration();
    config.locale = locale;

    thisActivity = activity;

    thisActivity.getBaseContext().getResources().updateConfiguration(config, thisActivity.getBaseContext().getResources().getDisplayMetrics());
}
于 2013-07-17T04:36:59.543 回答