gpt4 book ai didi

android - 应用程序android内部的语言切换

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:43 24 4
gpt4 key购买 nike

如何实现语言切换而无需在 Android 应用程序中手动设置区域设置?我知道该应用程序将在启动期间根据区域设置加载 strings.xml,但我不希望根据系统区域设置进行此选择,而是让用户在设置中指定。

或者,手动设置语言环境可以吗?

最佳答案

您可以扩展 Application 类(您也必须在 list 中声明它)并在其中放入类似的东西。

每当你想更改语言时,你都可以调用

((App)getApplicationContext()).changeLang(lang);

来自您的 Activity 。R.string.locale_lang 只是存储在 strings.xml 中用于共享首选项的键

public class App extends Application {

private Locale locale = null;

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (locale != null) {
Locale.setDefault(locale);
Configuration config = new Configuration(newConfig);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}

@Override
public void onCreate() {
super.onCreate();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String lang = settings.getString(getString(R.string.locale_lang), "");
changeLang(lang);
}

public void changeLang(String lang) {
Configuration config = getBaseContext().getResources().getConfiguration();
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {

Editor ed = PreferenceManager.getDefaultSharedPreferences(this).edit();
ed.putString(getString(R.string.locale_lang), lang);
ed.commit();

locale = new Locale(lang);
Locale.setDefault(locale);
Configuration conf = new Configuration(config);
conf.locale = locale;
getBaseContext().getResources().updateConfiguration(conf, getBaseContext().getResources().getDisplayMetrics());
}
}

public String getLang(){
return PreferenceManager.getDefaultSharedPreferences(this).getString(this.getString(R.string.locale_lang), "");
}



}

关于android - 应用程序android内部的语言切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com