Тексты уведомлений не локализованы в Android P - PullRequest
0 голосов
/ 18 июня 2019

Я занимаюсь разработкой приложения на английском и арабском языках.Я тестировал в 5.0.2 и 5.1 с арабским режимом.Все работает нормально, тексты уведомлений также локализованы.

Но в Android 9 Pie (API 28) тексты уведомлений отображаются только на английском языке. Оно не локализовано на арабский, , в то время как все приложение локализовано на арабский, кроме текстов уведомлений.

Примечание. Я запускаю уведомление от Foreground Service.

1 Ответ

0 голосов
/ 22 июня 2019

Я обновлял новую конфигурацию в onCreate () в MainActivity

Теперь я тоже обновил новую конфигурацию в Foreground Service , и это исправило проблему.

Пожалуйста, добавьтеsetLanguage(); метод в onBind, onRebind и onUnbind в службе Foreground.

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");

}
...