运行时多语言 android 应用程序?

Multi language android app during Runtime?

我的目标是在运行时将应用程序语言从英文更改为中文,有什么建议吗?

 language_spinner = (Spinner)findViewById(R.id.settings_language_spinner);
 language_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                if (pos == 1){
                    Toast.makeText(parent.getContext(),"You have selected English",Toast.LENGTH_SHORT).show();
                    setLocale("en");

                }else if (pos == 2){
                    Toast.makeText(parent.getContext(),"You have selected Chinese",Toast.LENGTH_SHORT).show();
                    setLocale("zh");
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });


    }

    public void setLocale(String lang) {

        myLocale = new Locale(lang);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        if (!conf.locale.getLanguage().equals(lang)) {
            conf.locale = myLocale;
            res.updateConfiguration(conf, dm);
            Intent refresh = new Intent(this, SettingsActivity.class);
            startActivity(refresh);
            finish();
        }
    }

此代码在英文中可以正常使用,但在中文中无法正常使用 请帮助我找到解决方案..

我可以告诉你如何实现这个:

第一步:将values目录下的所有文本制作字符串文件为string-ch,ch为中文代码。并在代码中获取带有 getResources.getString(R.string.text_name); 的每个字符串,以便它可以在 运行 时获取英文或中文的字符串值。

步骤 2: 现在创建方法:

void changeLanguage(String language) {
        Locale locale = new Locale(language);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,
                getBaseContext().getResources().getDisplayMetrics());
    }

第 3 步: 在您想要更改语言的地方调用此方法假设如果您想根据设备语言更改应用程序的语言,那么您可以调用:

changeLanguage(Locale.getDefault().getLanguage());

在 Util 中创建以下函数,如 class

public static void setLocale(Activity activity, String languageCode) {
    Locale locale = new Locale(languageCode);
    Locale.setDefault(locale);
    Resources resources = activity.getResources();
    Configuration config = resources.getConfiguration();
    config.setLocale(locale);
    resources.updateConfiguration(config, resources.getDisplayMetrics());
}

从 activity 开始调用此函数。带有此代码片段的原始 post 可以在 Change app language programmatically in Android 页面找到。