【发布时间】:2018-04-15 17:18:38
【问题描述】:
(我在帖子底部添加了更新)
我目前正在开发一个支持多种语言的项目。我已经为所有语言编写了所有字符串。
我使用 BaseActivity、Application 类和 LocaleHelper 来管理我的应用程序的本地化。 然后我在我的应用程序上发现了这种行为。在我将Locale 设置为另一种语言后,某些活动中的字符串已更改且正确,但在 MainActivity 中却没有,即使它们具有相同的字符串。我试图重新启动应用程序,但它仍然无法正常工作。
我还有另一个活动,活动中的一些单词被翻译,但片段和 recyclerview 中的所有单词根本没有被翻译。
我仍然找不到翻译不正确的原因。有人可以帮帮我吗?
这里有一些sn-p:
应用类
@Override
public void onCreate() {
super.onCreate();
LocaleUtil.setLocale(new Locale(LocaleUtil.with(this).getPreference()));
LocaleUtil.updateConfig(this,getBaseContext().getResources().getConfiguration());
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
LocaleUtil.setLocale(new Locale(LocaleUtil.with(this).getPreference()));
LocaleUtil.updateConfig(this, newConfig);
}
基础活动
public BaseActivity() {
LocaleUtil.updateConfig(this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
initLocale();
super.onCreate(savedInstanceState);
}
public void initLocale(){
localeUtil = new LocaleUtil(this);
localeUtil.setListener(this);
localeUtil.setLanguageByCode(localeUtil.getPreference());
}
请帮帮我!谢谢!!
(更新)
我发现每当我想访问 Strings.xml 以获取 recyclerview 和片段中的任何视图时,我都必须再次 setLocale。这完全不方便,我担心性能。我很想听听更改语言的更好建议。
【问题讨论】:
-
您真的不应该像那样直接更改语言环境。它主要工作,但系统的工作方式是让您遵循系统区域设置,并且永远不要自己更改它。如果您想自己更改它,最好编写自己的字符串系统。
-
您好!对不起,也许我写错了标题。我的意思是我的应用程序上有这个“更改语言”设置,我只需要在应用程序上更改语言。您能否就如何编写我们的“自己的字符串系统”进行更多解释或参考?谢谢!
-
您找到解决方案了吗?我有同样的问题。
标签: java android string android-fragments localization