我已经添加了的strings.xml文件,我需要的语言。我用一个警告对话框中切换我的Android应用程序的语言。
当我在我的手机上或通过Android Studio中我的虚拟设备上运行的应用程序,他没有任何问题的语言变化的工作,但是当我打包应用程序,并上传到Play商店,他们不工作。
当应用程序从Play商店中下载,只有timepicker翻译其他语言,没有其他文字。
我已经写了setLocale的功能改变是从OnCreate中和语言选择器函数调用的应用程序的语言。
我存储在共享偏好的语言,这样,当应用程序被关闭的选项被保留。
OnCreate(){
SharedPreferences pref = MainActivity.this.getSharedPreferences("languageSelectionMode", MODE_PRIVATE);
languagetoLoad = pref.getString("languageSelectionNameTemp","en");}
setLocale(languagetoLoad);
这是setlocale函数
public void setLocale(String lang) {
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration conf = new Configuration(config);
conf.locale = locale;
getBaseContext().getResources().updateConfiguration(conf, getBaseContext().getResources().getDisplayMetrics());
SharedPreferences pref = MainActivity.this.getSharedPreferences("languageSelectionMode", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("languageSelectionNameTemp",lang);
editor.apply();
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
}
函数在那里我改变语言。
SharedPreferences pref = MainActivity.this.getSharedPreferences("languageSelectionMode", MODE_PRIVATE);
int languageLoaded = pref.getInt("languageSelectionId",0);
//Convert ListArray to Array ..... profileNames.toArray()
builder.setSingleChoiceItems(languageArray, languageLoaded, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which){
case 0:
languageChoice = "en";
languageChoiceId = 0;
break;
case 1:
languageChoice = "mr";
languageChoiceId = 1;
break;
case 2:
languageChoice = "hi";
languageChoiceId = 2;
break;
default:
languageChoice = "en";
languageChoiceId = 0;
}
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {SharedPreferences pref = MainActivity.this.getSharedPreferences("languageSelectionMode", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("languageSelectionId", languageChoiceId);
editor.apply();
setLocale(languageChoice);
}
找到了解决办法的地方。该应用程序是没有转化生产,因为Android的捆绑问题。普通APK是工作的罚款。
新增的gradle在文件中的以下行,它工作正常。
bundle{
language{
enableSplit = false
}
}