通知文本未在安卓 P 中本地化



我正在开发一个英语和阿拉伯语的应用程序。我已经在 5.0.2 和 5.1 中使用阿拉伯语模式进行了测试。一切正常,通知文本也已本地化。

但在 Android 9 Pie (API 28( 中,通知文本仅以英语显示。它未本地化为阿拉伯语,而除通知文本外,整个应用程序都本地化为阿拉伯语

注意:正在从前台服务触发通知。

我正在 MainActivity 的 onCreate(( 中更新新配置

现在我也更新了前台服务中的新配置,这解决了这个问题。

请在前台服务中添加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");
}

最新更新