Проблема локализации магазина игр Android - PullRequest
0 голосов
/ 08 января 2019

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

Это мой код Java, который устанавливает местный язык.

 private static Context updateResources(Context context) {

        Locale locale = new Locale("fa","AF");
        Locale.setDefault(locale);
        Resources res = context.getResources();
        Configuration config = new Configuration(res.getConfiguration());
        if (Build.VERSION.SDK_INT >= 17) {
            config.setLocale(locale);
            context = context.createConfigurationContext(config);
        } else {
            config.locale = locale;
            res.updateConfiguration(config, res.getDisplayMetrics());
        }
        return context;
    }

Это мой файл макета на английском языке.

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="update">Update</string>
    <string name="app_version_title">New version</string>
    <string name="app_version_title_second">is now available</string>
    <string name="logout_msg">Are you sure you want to logout?</string>
    <string name="logout_title">Log Out?</string>
    <string name="languages">Languages</string>
    <string name="km">Km</string>
</resources>

Это мой файл макета Persion.

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="update">به روز رسانی </string>
    <string name="app_version_title">نسخه جدید</string>
    <string name="app_version_title_second">موجود است</string>
    <string name="logout_msg">آیا مطمئین هستید که خارج میشوید؟ </string>
    <string name="logout_title">خروج؟</string>
    <string name="languages">زبانها</string>
    <string name="km">کیلومتر</string>
</resources>

Это структура моей папки Values.

значения strings.xml Значения-фа-Raf strings.xml

Ответы [ 3 ]

0 голосов
/ 07 марта 2019

Если вы используете пакет приложений для публикации в магазине игр, функция пакета приложений для Android будет разбивать пакет на apks на основе языков для оптимизации и файла apk меньшего размера. Подробнее здесь . Таким образом, на устройстве будет установлен только тот APK, который соответствует языку пользователя. Поэтому динамическое изменение языка не будет работать, потому что установленный apk будет содержать только тот язык, который совпадает с локалью телефона пользователя. Чтобы предотвратить разделение на основе языка, необходимо добавить следующее в файл app build.gradle, как показано ниже.

android {
  ...
  ...
  bundle {
    language {
        enableSplit = false
    }
}

}

0 голосов
/ 11 марта 2019

Я думаю, что когда вы собираетесь создать подписанный пакет или APK, вы выбираете «Android App Bundle», вы должны выбрать «APK», поскольку вы используете локализацию strings.xml, вы можете прочитать подробнее здесь,

enter image description here

0 голосов
/ 09 января 2019

У меня возникла точно такая же проблема. В вашем коде нет ничего плохого.

Это доставило мне тяжелые времена, но я наконец понял это.

Когда вы загружаете приложение из Google play - и вы пытаетесь установить языковой стандарт, который не существует в списке языков, который пользователь определяет в настройках - приложение будет использовать strings.xml

по умолчанию.

попросите кого-нибудь, кто столкнулся с этой проблемой, добавить персидский язык в список языков в настройках - затем он должен удалить приложение - и заново установить его - приложение будет использовать ваш strings.xml values-fa-rAF.

Когда вы думаете об этом - в этом есть какой-то смысл.

В любом случае - если это критично, вы можете проверить во время выполнения тексты и показать сообщение пользователю и дать ему указание решить проблему.

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...