1

对于我的 PreferenceActivity,我使用的是典型的preferences.xml 文件。

ListPreference 的 entryValues 并不是要本地化的。是否可以使用某种数组文字直接定义 entryValues 属性?

我在下面的第一次尝试不起作用,“拉,推”被认为是一个字符串:

<ListPreference
        android:key="server_reception_mode"
        android:title="@string/title_server_reception_mode_preference"
        android:entries="@array/entries_server_reception_mode_preference"
        android:entryValues="pull, push" />
4

3 回答 3

3

您可以声明一个<string-array>字符串数组。例如:

<string-array name="entry_values">
    <item>pull</item>
    <item>push</item>
</string-array>

然后您可以在 XML 中使用它:

<ListPreference
    android:key="server_reception_mode"
    android:title="@string/title_server_reception_mode_preference"
    android:entries="@array/entries_server_reception_mode_preference"
    android:entryValues="@array/entry_values" />

如果您只想避免翻译,您可以使用Android 源代码中使用的约定:它们有名为 , 等的资源values/donottranslate.xml文件values/donottranslate-names.xml

于 2012-01-06T20:22:04.417 回答
1

查看该属性的文档,不:entryValues

必须是对另一个资源的引用 [...]

当然,仅仅因为你有一个字符串资源并不意味着你必须本地化它。

于 2012-01-06T20:23:13.997 回答
0

您需要在资源中创建一个数组。你不能像你希望的那样直接声明它。

对于这些类型的数组,我通常会创建第二个 XML 文件,其中包含不需要翻译的所有条目(如 array-notranslate.xml)。这样,如果您将 xml 文件交给某人进行翻译,他们就不必处​​理它。

于 2012-01-06T20:24:18.197 回答