Как добавить все предопределенные языки в ListPreference динамически? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть ListPreference для выбора языков.Текущие trnalsations определены в их собственном strings.xml, как видно на рисунке.Чтобы заполнить список предпочтений, я включаю элементы string-array в основной strings.xml, делая его статической конфигурацией.

Вопрос: есть ли способ сделать динамическую Language ListPreference, перебирая все strings.xml и извлекая из них информацию Locale, как во время выполнения?

Это текущая статическая настройка:

values ​​/ strings / strings.xml

<resources>

<!-- Preferences -->
<string name="pref_language">Language</string>
<string-array name="pref_language_list">
    <item>English</item>
    <item>Svenska</item>
    <item>Deutsch</item>
    <item>Français</item>
    <item>Português</item>
    <item>Español</item>
    <item>Pусский</item>
</string-array>
<string-array name="pref_language_values">
    <item>en</item>
    <item>se</item>
    <item>de</item>
    <item>fr</item>
    <item>pt</item>
    <item>es</item>
    <item>ba</item>
</string-array>
</resources>

xml / pref_general.xml

  <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <ListPreference
            android:entries="@array/pref_language_list"
            android:entryValues="@array/pref_language_values"
            android:key="language"
            android:title="@string/pref_language"
            android:icon="@drawable/language"
            />
    </PreferenceScreen>

Strings structure

1 Ответ

0 голосов
/ 03 декабря 2018

entries и entryValues должны работать.

, хотя я не понимаю этих бесполезных определений строк и назначений строк ...

добавьте их непосредственно в массивы;в values/arrays.xml;с атрибутом translatable="false".

, и эти языковые теги также не соответствуют расположению файла ресурсов.

<resources>

    <string-array name="pref_language_list" translatable="false">
        <item>English</item>
        <item>Svenska</item>
        <item>Deutsch</item>
        <item>Français</item>
        <item>Português</item>
        <item>Español</item>
        <item>Pусский</item>
    </string-array>

    <string-array name="pref_language_values" translatable="false">
        <item>en</item>
        <item>se-rSE</item>
        <item>de-rDE</item>
        <item>fr-rFR</item>
        <item>pt-rPT</item>
        <item>es-rES</item>
        <item>ba-rRU</item>
    </string-array>

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