【问题标题】:Android string-array locale verificationAndroid 字符串数组语言环境验证
【发布时间】:2011-10-12 12:01:30
【问题描述】:

我想知道是否有人发现了一种在 res/values 目录中验证字符串数组的好方法。

我使用默认语言环境通过代码创建,并且可能有类似的资源

<string-array name="array_example1">
    <item>One</item>
    <item>Two</item>
    <item>Three</item>
</string-array>

然后,当应用程序的翻译人员进行翻译时,他们还会创建一个字符串数组。有时,如果一个翻译落后于另一个资源文件,则数组中的条目可能没有那么多(可能只有上例中的“一”和“二”)

是否有任何简单的方法来验证条目数量是否不匹配?不匹配可能会导致代码出现问题,但由于该应用程序有 10 个多种语言的字符串数组,因此检查它们是否匹配非常耗时。

其他人对此有什么方法?

【问题讨论】:

  • 也许可以创建一个小脚本来解析文件并匹配它们?
  • 我不知道。一些自定义的 xml 比较工具,可能是?

标签: android locale


【解决方案1】:

我找到了一种更好的方法来阻止崩溃。我没有意识到字符串数组可以通过以下方式引用字符串资源:

<string-array name="array_example1">
    <item>@string/resOne</item>
    <item>@string/resTwo</item>
    <item>@string/resThree</item>
</string-array>

然后添加

<string name="resOne">One</string>
<string name="resTwo">Two</string>
<string name="resThree">Three</string>

因此,如果存在不匹配的情况,则只会显示该选项的默认语言并停止由于列表大小不同而导致的崩溃

【讨论】:

  • 完美解决方案!我认为这是可能的,我只是不知道语法:)
  • 我还建议将translatable="false" 属性设置为&lt;string-array&gt; 元素。这样,如果其他语言文件中存在此数组,Lint 会通知您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多