我正在我的应用程序中实现标记管理器我想在用户更改应用程序语言后立即更改标记管理器值的语言,他可以通过我的应用程序中的单击按钮来完成。
如果用户正在更改手机语言,那么它工作正常,但我想在用户更改应用语言(而非手机语言)时使其正常工作。
在我的应用中,这就是我改变语言的方式。
public void setLocal() {
Configuration config = getResources().getConfiguration();
String languageSetting = Utility.getLanguageSetting();
String localeSaved = new Locale("en").getLanguage();
if (languageSetting.equalsIgnoreCase("hindi")) {
localeSaved = new Locale("hi").getLanguage();
}
config.locale = new Locale(localeSaved);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
答案 0 :(得分:0)
我写了一些像你这样的代码,效果很好。不同之处在于我在更改语言后重新创建了活动,并且还在Application
的{{1}}方法中添加了一些代码,以便在所有活动创建之前更改语言。
onCreate()
答案 1 :(得分:0)
"代码管理器语言更改" 仅在用户更改电话语言时才有效,这对用户来说非常糟糕
这就是我如何实现的
1.我在标签管理器上只创建了一个变量
2.为两种语言创建单个json
3。
{
'text': 'Welcome',
'text_hindi': 'वेलकम'
}
4.内部应用
/* get text for welcome based on app language*/
public String getText(boolean isEnglish) {
String text = null;
if (isEnglish) {
text = getTagContainerHolder().getTagContainer().getString("text");
} else {
text = getTagContainerHolder().getTagContainer().getString("text_hindi");
}
return text;
}
/* This is how i change language of my app when user click button*/
public void setLocal(boolean isEnglish) {
Configuration config = getResources().getConfiguration();
String localeSaved = new Locale("en").getLanguage();
if (!isEnglish) {
localeSaved = new Locale("hi").getLanguage();
}
config.locale = new Locale(localeSaved);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
现在,即使在Play商店中发布我的应用程序后,我也可以从标签管理器动态更改我的欢迎文本