以编程方式更改res / string

时间:2014-10-29 13:25:35

标签: java android android-studio

我有一个应用程序,我想用三种语言。现在我用不同的语言创建3个字符串资源,我的整个应用程序引用第一个。是否可以在事件触发器上引用其他2?任何人都可以详细解释。我听说过locale对象,但我不太确定它是如何工作的

2 个答案:

答案 0 :(得分:0)

您知道可以使用特定于语言环境的资源目录来本地化字符串吗?

res/values/strings.xml
res/values-de-rCH/strings.xml
res/values-de-rAT/strings.xml

有关详细信息,请参阅http://developer.android.com/guide/topics/resources/localization.html#using-framework

答案 1 :(得分:0)

是的,您可以在运行时在事件上执行此操作。或单击事件使用此代码

private void changeLanguage(String lang) {
    // TODO Auto-generated method stub

    Configuration conf = getApplicationContext().getResources()
            .getConfiguration();
    conf.setToDefaults();
    ///
    if (conf.locale == null)
        conf.locale = Locale.getDefault();
    //////
    if (lang.equalsIgnoreCase("english")) {
        conf.locale = Locale.ENGLISH;
    } else if (lang.equalsIgnoreCase("chinese")) {
        conf.locale = Locale.TRADITIONAL_CHINESE;
    }

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    Resources resources = new Resources(
            getApplicationContext().getAssets(), metrics, conf);
     /* get localized string */
     String str = resources.getString(R.string.back);
     Log.i("mini", "Chinese:" + str);

}