13

我的应用程序支持 4 种语言。用户选择他们的语言。但这不适用于俄语。

if (dil.equals("eng")){
        Configuration c = new Configuration(context.getResources().getConfiguration());
        c.locale = Locale.ENGLISH;
        context.getResources().updateConfiguration(c,context.getResources().getDisplayMetrics());
        
    }
    else if (dil.equals("ger")){
        Configuration c = new Configuration(context.getResources().getConfiguration());
        c.locale = Locale.GERMAN;
        context.getResources().updateConfiguration(c,context.getResources().getDisplayMetrics());
        
    }
    else if (dil.equals("rus")){
        Configuration c = new Configuration(context.getResources().getConfiguration());
        c.locale = Locale.????????;
        context.getResources().updateConfiguration(c,context.getResources().getDisplayMetrics());
        
    }
    else
    {
        Configuration c = new Configuration(context.getResources().getConfiguration());
        c.locale = Locale.getDefault();
        context.getResources().updateConfiguration(c,context.getResources().getDisplayMetrics());
        
    }

我不知道该怎么做俄语。

c.locale = Locale.????????;
4

2 回答 2

37

使用此构造函数,您可以将语言环境设置为俄语,如下所示:

Locale myLocale = new Locale("ru","RU");

这是Java支持的语言环境列表。您可以看到“ru”是受支持的,但未经测试。

该文档还说有时提供基本本地化和国际化会更好,所以我从

Locale myLocale =  new Locale("ru") 

Locale myLocale = new Locale("ru","RU")
于 2012-06-07T12:12:12.880 回答
0

根据Locale 的 Android 文档

此类的构造函数不进行错误检查。您可以为不存在的语言和国家/地区创建区域设置,并且可以为不存在的组合创建实例(例如“de_US”代表“美国所说的德语”)。

请注意,语言环境数据不一定可用于此类中预定义为常量的任何语言环境,但 en_US 除外,这是 Java 保证始终可用的唯一语言环境。

假设所有设备都具有相同的可用区域设置也是错误的。在美国销售的设备几乎肯定会支持 en_US 和 es_US,但不一定支持任何具有相同语言但不同国家的语言环境(例如 en_GB 或 es_ES),也不一定支持其他语言的任何语言环境(例如 de_DE)。对于在欧洲销售的设备,情况可能正好相反。

此外,文档没有列出俄语的区域设置,因此看起来您必须创建一个。还要注意上面引用的第三段。所以也许最好自己提供。

检查这个 SO post以及它有一些关于 Locale 的有用提示

于 2012-06-07T12:02:28.923 回答