保存用户选择的语言,Android
Save language chosen by user, Android
如何更改默认设置 string.xml?我可以将我的应用程序更改为五种不同的语言,但每当我关闭应用程序并重新打开它时。它返回到默认英语。
是否可以通过某种方式更改默认文件夹 "values"。例如,从默认值(英语)到 values-pt(葡萄牙语)。
非常感谢任何帮助!
您可以写入,然后读取 SharedPreferences
以管理用户选择的语言
保存:
SharedPreferences shp = getSharedPreferences(
"com.example.yourapp.PREFERENCES",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = shp.edit();
editor.putString("USER_LANGUAGE", language);
editor.commit();
加载:
SharedPreferences shp = getSharedPreferences(
"com.example.yourapp.PREFERENCES",Context.MODE_PRIVATE);
String language = shp.getString("USER_LANGUAGE","en");
加载语言时,修改语言环境以使用它
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
您可以使用以下
public void loadLocale() {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
String language = prefs.getString(langPref, "");
changeLang(language);
}
public void changeLang(String lang) {
if (lang.equalsIgnoreCase(""))
return;
myLocale = new Locale(lang);
saveLocale(lang);
Locale.setDefault(myLocale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = myLocale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
}
public void saveLocale(String lang) {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(langPref, lang);
editor.commit();
}
并在 onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_language);
loadLocale();
}
你可以试试这个:
要更改:
public void changeLanguage(String language) {
locale = new Locale(language);
saveLocale(language);
Locale.setDefault(locale);
conf.locale = locale;
getBaseContext().getResources().updateConfiguration(conf, null);
updateText();
}
保存:
public void saveLocale(String language) {
SharedPreferences sharedPreferences = getSharedPreferences("com.example.myapp.PREFERENCES", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("USER_LANGUAGE", language);
editor.commit();
}
待更新:
private void updateText() {
btn_chat.setText(R.string.live_chat);
}
要加载:
public void LoadLanguage(){
SharedPreferences shp = getSharedPreferences(
"com.example.myapp.PREFERENCES",Context.MODE_PRIVATE);
String language = shp.getString("USER_LANGUAGE","");
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
在 MainActivity 中,您可以检查应用程序使用的默认语言:
language = getResources().getString(R.string.lang);
然后如果语言是你想要的语言,通过check with语句,你应该执行updateText()
函数:
if (language.equals("zh")) {
btn_lang.setText(R.string.someName);
updateText();
}
不要忘记在 MainActivity 中执行 LoadLanguage()
以加载用户保存的语言。
这是一些适合我的代码:
public class MainActivity extends AppCompatActivity {
public static String storeLang;
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this);
storeLang = shp.getString(getString(R.string.key_lang), "");
// Create a new Locale object
Locale locale = new Locale(storeLang);
// Create a new configuration object
Configuration config = new Configuration();
// Set the locale of the new configuration
config.locale = locale;
// Update the configuration of the Accplication context
getResources().updateConfiguration(
config,
getResources().getDisplayMetrics()
);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
如何更改默认设置 string.xml?我可以将我的应用程序更改为五种不同的语言,但每当我关闭应用程序并重新打开它时。它返回到默认英语。
是否可以通过某种方式更改默认文件夹 "values"。例如,从默认值(英语)到 values-pt(葡萄牙语)。
非常感谢任何帮助!
您可以写入,然后读取 SharedPreferences
以管理用户选择的语言
保存:
SharedPreferences shp = getSharedPreferences(
"com.example.yourapp.PREFERENCES",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = shp.edit();
editor.putString("USER_LANGUAGE", language);
editor.commit();
加载:
SharedPreferences shp = getSharedPreferences(
"com.example.yourapp.PREFERENCES",Context.MODE_PRIVATE);
String language = shp.getString("USER_LANGUAGE","en");
加载语言时,修改语言环境以使用它
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
您可以使用以下
public void loadLocale() {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
String language = prefs.getString(langPref, "");
changeLang(language);
}
public void changeLang(String lang) {
if (lang.equalsIgnoreCase(""))
return;
myLocale = new Locale(lang);
saveLocale(lang);
Locale.setDefault(myLocale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = myLocale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
}
public void saveLocale(String lang) {
String langPref = "Language";
SharedPreferences prefs = getSharedPreferences("CommonPrefs",
Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(langPref, lang);
editor.commit();
}
并在 onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_language);
loadLocale();
}
你可以试试这个:
要更改:
public void changeLanguage(String language) {
locale = new Locale(language);
saveLocale(language);
Locale.setDefault(locale);
conf.locale = locale;
getBaseContext().getResources().updateConfiguration(conf, null);
updateText();
}
保存:
public void saveLocale(String language) {
SharedPreferences sharedPreferences = getSharedPreferences("com.example.myapp.PREFERENCES", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("USER_LANGUAGE", language);
editor.commit();
}
待更新:
private void updateText() {
btn_chat.setText(R.string.live_chat);
}
要加载:
public void LoadLanguage(){
SharedPreferences shp = getSharedPreferences(
"com.example.myapp.PREFERENCES",Context.MODE_PRIVATE);
String language = shp.getString("USER_LANGUAGE","");
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
在 MainActivity 中,您可以检查应用程序使用的默认语言:
language = getResources().getString(R.string.lang);
然后如果语言是你想要的语言,通过check with语句,你应该执行updateText()
函数:
if (language.equals("zh")) {
btn_lang.setText(R.string.someName);
updateText();
}
不要忘记在 MainActivity 中执行 LoadLanguage()
以加载用户保存的语言。
这是一些适合我的代码:
public class MainActivity extends AppCompatActivity {
public static String storeLang;
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this);
storeLang = shp.getString(getString(R.string.key_lang), "");
// Create a new Locale object
Locale locale = new Locale(storeLang);
// Create a new configuration object
Configuration config = new Configuration();
// Set the locale of the new configuration
config.locale = locale;
// Update the configuration of the Accplication context
getResources().updateConfiguration(
config,
getResources().getDisplayMetrics()
);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}