通知文本未本地化 Android P
Notification texts are not localized in Android P
我正在开发一个使用英语和阿拉伯语的应用程序。我已经在 5.0.2 和 5.1 中使用阿拉伯语模式进行了测试。一切正常,通知文本也已本地化。
但在 Android 9 Pie (API 28) 中,通知文本仅以英语显示。 它没有本地化为阿拉伯语, 而整个应用程序本地化为阿拉伯语,但通知文本除外。
注意:正在触发来自前台服务的通知。
我正在 MainActivity 的 onCreate() 中更新新配置
现在我也更新了前台服务中的新配置,这解决了问题。
请在前台服务的onBind、onRebind、onUnbind中添加setLanguage();
方法
private void setLanguage() {
String language = SharedPreferencesUtils.getAppLanguage(this);
if (language.equals("en")) {
Swithch_to_English();
} else {
Swithch_to_Arabic();
}
}
private void Swithch_to_English() {
Locale current = getResources().getConfiguration().locale;
String current_language = current.toString();
if (!current_language.equals("en")) {
Configuration config = new Configuration();
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
config.locale = locale;
onConfigurationChanged(config);
}
}
private void Swithch_to_Arabic() {
Locale current = getResources().getConfiguration().locale;
String current_language = current.toString();
if (!current_language.equals("ar")) {
Configuration config = new Configuration();
String languageToLoad = "ar";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
config.locale = locale;
onConfigurationChanged(config);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
SharedPreferencesUtils
public static String getAppLanguage(Context context) {
SharedPreferences settings = context
.getSharedPreferences(context.getString(R.string.APP_DATA),
Context.MODE_PRIVATE);
return settings.getString(context.getString(R.string.selected_language), "en");
}
我正在开发一个使用英语和阿拉伯语的应用程序。我已经在 5.0.2 和 5.1 中使用阿拉伯语模式进行了测试。一切正常,通知文本也已本地化。
但在 Android 9 Pie (API 28) 中,通知文本仅以英语显示。 它没有本地化为阿拉伯语, 而整个应用程序本地化为阿拉伯语,但通知文本除外。
注意:正在触发来自前台服务的通知。
我正在 MainActivity 的 onCreate() 中更新新配置
现在我也更新了前台服务中的新配置,这解决了问题。
请在前台服务的onBind、onRebind、onUnbind中添加setLanguage();
方法
private void setLanguage() {
String language = SharedPreferencesUtils.getAppLanguage(this);
if (language.equals("en")) {
Swithch_to_English();
} else {
Swithch_to_Arabic();
}
}
private void Swithch_to_English() {
Locale current = getResources().getConfiguration().locale;
String current_language = current.toString();
if (!current_language.equals("en")) {
Configuration config = new Configuration();
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
config.locale = locale;
onConfigurationChanged(config);
}
}
private void Swithch_to_Arabic() {
Locale current = getResources().getConfiguration().locale;
String current_language = current.toString();
if (!current_language.equals("ar")) {
Configuration config = new Configuration();
String languageToLoad = "ar";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
config.locale = locale;
onConfigurationChanged(config);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
SharedPreferencesUtils
public static String getAppLanguage(Context context) {
SharedPreferences settings = context
.getSharedPreferences(context.getString(R.string.APP_DATA),
Context.MODE_PRIVATE);
return settings.getString(context.getString(R.string.selected_language), "en");
}