我很惊讶地发现在任何地方都没有提到这一点。
这是问题所在: 我有一个教程应用程序和我得到的大多数“1星”是由于抱怨我的应用程序不是他们的本地语言。 由于我不可能学习十几种语言,所以我决定至少可以使用谷歌翻译并提供更多资源。
由于翻译不完美,我想让用户选择切换回默认(英文)版本。
我希望如何做到这一点:
说我有以下文件夹:
值,值-fr,值-ja,值-sp
我想简单地在我的设置活动中添加一个旋转,让用户选择语言。因此,我可能会获得一个SharedPref变量,永久存储它并通过设置轻松更改它。
假设我将一个int值存储为sharedpref。如果它是(例子)0,我想要使用英文字符串......如果它是1,我想使用法语等等。
那么,我怎样才能实际更改values文件夹。 (我知道默认情况下,andorid会选择-fr,-ja,-en,具体取决于第一次设备启动时设置的区域设置。但我希望用户可以选择返回默认值,因为(再次)翻译可能不完美
答案 0 :(得分:3)
试试这个..
String languageToLoad = "en"; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
答案 1 :(得分:2)
之前我已经做过,但是作为一个复选框而不是微调器,希望它能帮到你这里做的事情:
首先在用户触摸按钮时显示警告消息:
Button btn2 = (Button) findViewById(R.id.button2); //here is your button
btn2.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
final CharSequence[] items = {"العربية", "English", "français", "русский", "中国", "اردو", "Indonesia"};//here you write your supported languages
AlertDialog.Builder builder = new AlertDialog.Builder(Main.this);//here the alert dailog that will show up when button touched
builder.setTitle(getResources().getString(R.string.language));
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
i=item;
if(items[i] == "العربية"){
setLocale("ar");
}if(items[i] == "English"){
setLocale("en");
}if(items[i] == "français"){
setLocale("fr");
}if(items[i] == "русский"){
setLocale("ru");
}if(items[i] == "中国"){
setLocale("zh");
}if(items[i] == "اردو"){
setLocale("ur");
}if(items[i] == "Indonesia"){
setLocale("in");
}
}
});
AlertDialog alert = builder.create();
alert.show();
alert.setCanceledOnTouchOutside(true);
}});
}
现在是语言选择器子类:
public void setLocale(String lang) {
Locale 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, Main.class);
refresh.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(refresh);
}
现在关于添加包含实际语言(ar,en,ru ...等)的语言文件夹,我将为您提供本教程https://www.youtube.com/watch?v=WugUIEJ_lvk 最后翻译使用谷歌翻译:)如果你有现金,我可以与翻译公司联系,或者你可以在开发者页面使用谷歌服务。
如果你需要什么,请问我......