【问题标题】:Best practice for language-independent strings与语言无关的字符串的最佳实践
【发布时间】:2012-03-21 17:32:22
【问题描述】:

我的 Android 应用程序包含许多与语言无关的字符串,例如资费和支持电话号码。我在/res/values 中放置了一个 XML 文件,例如:

<string name="helpdesk_number">0900 12345678</string>
<string name="helpdesk_tariff">60p</string>
<string name="helpdesk_address1">221B Baker Street</string>
<string name="helpdesk_address2">London NW1 6XE</string>

Lint 抱怨这些字符串没有翻译成其他语言:

语言环境缺少以下翻译:helpdesk_number、helpdesk_number、helpdesk_address1、helpdesk_address2...(另外 56 个)

虽然为其他语言显示不同的资费可能有意义,但帮助台仅在一个国家/地区。

将这些字符串复制到其他语言是否有意义?或者有什么方法可以让 Lint 忽略这些特定的字符串(或字符串文件)?

【问题讨论】:

    标签: android android-lint


    【解决方案1】:

    即将到来的(希望很快)ADT17 将带来一些忽略一些 lint 警告的功能:

    http://tools.android.com/recent/ignoringlintwarnings

    http://tools.android.com/tips/lint/suppressing-lint-warnings

    因此,使用 ADT 17,您可以在项目文件夹中放置一个 lint.xml,其中包含:

    &lt;issue id="MissingTranslation" severity="ignore" /&gt;

    或者您也可以通过以下方式为每个字符串执行此操作:

    tools:ignore="MissingTranslation"

    但文档对此并不是 100% 清楚,我目前没有时间对 17 进行 beta 测试 ..

    跟进:ADT17 在您提出要求后不久就发布了,应该可以解决您的问题!

    【讨论】:

    • 我在开发者预览中看到了一些相关的言论,但没想到这么具体。迫不及待想试一试!
    • 果然,ADT rev 17 可以忽略个别资源文件的 MissingTranslation Lint 警告。
    【解决方案2】:

    在最新版本的 Lint 中,您可以忽略 特定“MissingTranslation”字符串,如下所示:

    strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>    
    
        <!--suppress MissingTranslation -->
        <string name="some_string">ignore my translation</string>
        ...
    
    </resources>
    

    http://tools.android.com/tips/lint/suppressing-lint-warnings

    【讨论】:

      【解决方案3】:

      直接来自 Lint 工具:

      如果不应该翻译字符串,您可以在元素上添加属性translatable="false",或者您可以在名为donottranslate.xml 的资源文件中定义所有不可翻译的字符串。或者,您可以使用 tools:ignore="MissingTranslation" 属性忽略该问题。

      只需在默认的 res/values 文件夹中创建一个文件“donottranslate.xml”,Lint 就会忽略它。我将我所有的应用程序密钥/ID 等以及首选项都放在了这里,因为这些不需要“翻译”而只占用其他文件中的空间。

      【讨论】:

        【解决方案4】:

        避免该消息的其他方法,添加到您的资源文件:

        <?xml version="1.0" encoding="utf-8"?>
        <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
        

        【讨论】:

          【解决方案5】:
           > Best practice for language-independent strings
          

          在我的应用程序中,我有两个字符串资源文件,一个名为“NonTranslatabable.xml”,它将接收那些不会被翻译的字符串(appName、fileNames、..)。

          将应用程序翻译成其他语言时,我不必考虑是否必须翻译字符串。

          【讨论】:

          • 谢谢,但这实际上是我目前的情况。 Lint 会抱怨该文件中的字符串没有被翻译。
          • 对不起,我误解了你的问题的标题。
          【解决方案6】:

          将此添加到“android”下的 Gradle 应用文件中

          lintOptions {
              disable 'MissingTranslation'
          }
          

          【讨论】:

          • 这将完全禁用 lint 检查,我不推荐这样做。
          猜你喜欢
          • 2012-04-10
          • 2014-07-21
          • 1970-01-01
          • 1970-01-01
          • 2010-10-11
          • 1970-01-01
          • 2021-06-24
          • 2010-09-18
          • 1970-01-01
          相关资源
          最近更新 更多