Как правильно локализовать ресурсы Android для поддержки нескольких языков? - PullRequest
0 голосов
/ 12 сентября 2018

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

Из-за этого я следовал Руководству разработчика по Android , чтобы поддерживать разные языки дляприложение и использовал редактор переводов в Android Studio, чтобы указать ресурсы, которые я хочу перевести.Тем не менее, предварительный просмотр Android Studio показывает правильные ресурсы, они не переводятся и вместо этого сохраняются со значением по умолчанию при запуске приложения.Я полагаю, что мог что-то пропустить и не могу найти, что это такое.

На следующих изображениях показаны каталоги и строки ресурсов в Android Studio:

Locale directories and resource files Strings in Translation Editor

Строки по умолчанию:

<resources>
    <string name="welcome_user">Welcome %1$s</string>
    <string name="logout">Logout</string>
    <string name="main_menu">Main menu</string>
    <string name="inventory">Inventory</string>
    <string name="login">Login</string>
</resources>

Испанские строки:

<resources>
    <string name="welcome_user">Bienvenido %1$s</string>
    <string name="logout">Cerrar sesión</string>
    <string name="main_menu">Menú principal</string>
    <string name="inventory">Inventario</string>
    <string name="login">"Iniciar sesión "</string>
</resources>

Я ссылаюсь на ресурсы в моем макете xmlкак обычно, как

android:id="@+id/textWelcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_user"

Следующие изображения показывают, что Android Studio показывает мне, когда я устанавливаю его на испанский язык (ресурсы String, отличные от указанных выше), и то, что отображается при запуске приложениядаже если язык устройства установлен на Español:

Spanish resources preview

Application

1 Ответ

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

Хорошо, я нашел ответ на этой записи после поиска соответствующей документации и вопросов.Проблема заключалась не в структурировании моих папок или в том, как я получил ресурсы.

Свойство resConfigs в моем файле Android Gradle было настроено только на поддержку языковых ресурсов, связанных с английскими ресурсами.Из-за этого параметра любой другой язык, который не был указан, был удален.

После того, как я добавил "es" и "nl", все оказалось так, как задумано.

productFlavors {
    dev {
        dimension "default"
        applicationIdSuffix '.dev'
        versionNameSuffix '-dev'
        resConfigs "en", "nl", "es" //The culprit I created and forgot 
    }
...