我的Android应用中有6种不同的语言,我想创建一个选项来选择应用的语言。 我看到了那段代码,但应用程序在重启后重置语言:
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, AndroidLocalize.class);
startActivity(refresh);
finish();
}
如何保留用户选择的语言?
答案 0 :(得分:2)
您可以尝试这样的事情:
String sharedPrefName = "your_preference_name"
String key = "selected_language"
// save the selected language
SharedPreferences sharedpreferences = getSharedPreferences(sharedPrefName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(key, "english"); // replace "english" with user's selected language
editor.commit();
// retrieve selected language
SharedPreferences sharedpreferences = getSharedPreferences(sharedPrefName, Context.MODE_PRIVATE);
String language = sharedpreferences.getString(key, "english"); // replace "english" with your app's default language
// load the app with the language selected...
答案 1 :(得分:0)
Android的多语言支持很容易。使用语言代码的后缀为语言创建新值目录。对于german:values-de或french:values-fr而不是将strings.xml复制到其中并翻译每个条目。
当用户从语言列表中选择应用时,可以很容易地更改应用的语言。有一个像下面这样的方法接受语言环境作为字符串(如英语的“en”,印地语的“hi”),配置应用程序的语言环境并刷新当前活动以反映语言的变化。在您再次手动更改之前,您应用的区域设置不会更改。
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, AndroidLocalize.class);
startActivity(refresh);
finish();
}
确保导入以下包裹:
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;