Проблема при изменении Locale на ARABIC в приложении Android - PullRequest
0 голосов
/ 24 сентября 2018

Мое приложение Android поддерживает два языка: арабский и английский.Арабский язык является языком по умолчанию.

Теперь, чтобы сделать арабский язык языком по умолчанию, я меняю локаль приложения на арабский в заставке.И я сохранил английские и арабские строковые файлы для изменения локали.Но когда я нажимаю на некоторые другие случайные фрагменты (например, пункт меню «Навигация»), статические строки моего приложения изменяются на английскую локаль.

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

Можете ли вы предложить какое-либо решение?

Редактировать: я использую общие настройки для сохранения языка.

1 Ответ

0 голосов
/ 24 сентября 2018

Первый шаг, который вы хотите сделать, чтобы сохранить язык в вашем sqlite (например: язык, сохраненный в настройках таблицы в sqlite):

mDatabase = new SqliteItemDatabase(getApplicationContext());

        final List<Setting> allsettings = mDatabase.listSettings();
       String the_lang = "";
       if(position == 0)
       {
           the_lang = "en";


       }
        else if(position == 1)
        {
            the_lang = "ar";


        }
LocaleHelper.setLocale(LAngSelect.this, the_lang);// =>set language

        mDatabase.updateSettings(new Setting(allsettings.get(0).getId(),the_lang));
mDatabase.close();

Второй шаг: установить действие справа налево, которое вы хотите добавитьв каждой деятельности:

 mDatabase = new SqliteItemDatabase(this);
        final List<Setting> allsettings = mDatabase.listSettings();
        String langs = allsettings.get(0).getLang() ;
        if(langs.equals("ar")) {
            //HERE CHECK CONDITION FOR YOUR LANGUAGE if it is AR then
//change if it is english then don't
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
                //Resources res = getResources(); //resource handle

            }
        }
...