更改语言环境并从其他包中获取字符串

时间:2016-08-05 13:41:38

标签: android string resources locale

基本上我想访问一些Androids系统String值。我知道他们的位置,我知道如何获得他们的价值,我唯一的问题是改变语言环境。我希望能够更改语言环境,然后从更改的语言环境中获取字符串值。

我的代码是:

PackageManager pm = getPackageManager();
try {
    Resources resources = pm.getResourcesForApplication("com.android.systemui"); //package location
    bes = (TextView) findViewById(R.id.showingText);
    final int id = v.getId();
    switch (id) {
        case R.id.buttonChangeLanguage1:
            LocaleHelper.setLocale(this, "de");
            bes.setText(R.string.testLokal);
            idS = resources.getIdentifier("battery_low_percent_format_saver_started", "string", "com.android.systemui"); //name of resource, type of resource, package of resource
            bes.setText(resources.getString(idS));
            break;
        case R.id.buttonChangeLanguage2:
            LocaleHelper.setLocale(this, "sl");
            idS = resources.getIdentifier("battery_low_percent_format_saver_started", "string", "com.android.systemui");
            bes.setText(resources.getString(idS));
            break;
}catch (PackageManager.NameNotFoundException e){
    e.printStackTrace();
    }
}

代码正常工作我只是没有获得不同Locale的String值,如上所述。我总是从默认语言环境中获取值,这是英语。

我从这里获取的LocaleHelper类:http://gunhansancar.com/change-language-programmatically-in-android/

1 个答案:

答案 0 :(得分:0)

使用getResources().getString(R.string.mystring);

在您的情况下bes.setText(resources.getString(R.string.testLokal));