我有两种语言英语和阿拉伯语的Android应用程序,我改变了这样的应用程序语言:
public void setLocale() {
if (SharedPreferencesHelper.getSharedPreferencesInt(this, AppConstant.LANGUAGE, AppConstant.LANGUAGE_EN_MFQ) == AppConstant.LANGUAGE_AR_MFQ) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
Locale locale = new Locale("ar");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
} else {
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}
当设备语言为英语和应用程序语言英语时,该应用程序可以正常工作,但是,当应用程序是阿拉伯语并且设备是英语时,某些片段会提供错误的语言,或者某些视图(如阿拉伯语中的文本和其他英语文本)在同一个片段,这是我的问题,我怎么能解决这个问题?
答案 0 :(得分:1)
我对您的问题没有答案,但我会告诉您我是如何使用英语/阿拉伯语创建应用程序的。
我使用了此博文中的LocaleHelper.java
课程:Change Language Programmatically in Android
并创建了一个自定义Activity类(覆盖基本上下文)作为应用程序中所有活动的基类
public class MyAppCompatActivity extends AppCompatActivity {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(LocaleHelper.onAttach(base, LocaleHelper.LOCALE_DEFAULT_LANG));
}
}
这对我很有用,希望有所帮助
答案 1 :(得分:0)
你的问题不太清楚。对于
当应用程序是阿拉伯语并且设备是英语时,某些片段会提供错误的语言
您的应用会默认选择字符串
values
个文件夹或values-en
。因此,您需要将英文字符串放在正常的values/strings.xml
或values-en/strings.xml
文件中。
对于设备语言阿拉伯语您需要创建一个文件夹values-ar
,并将所有字符串翻译为阿拉伯语,并将包含阿拉伯字符串的strings.xml
文件放在此文件夹中。
您需要查找任何硬编码字符串并将它们放在strings.xml
文件中。