Android Lint:如何忽略区域语言环境字符串文件中缺少的翻译警告,该文件故意仅覆盖某些默认翻译?

时间:2013-08-14 16:59:47

标签: android localization translation lint android-lint

是否有可能在一个单独的资源文件中翻译某些字符串,但不是全部,而没有Lint抱怨 MissingTranslation

例如:我的应用程序的字符串都在 res / values / strings.xml 中。其中一个字符串是

<string name="postal_code">Postal Code</string>

由于“邮政编码”在美国通常被称为“邮政编码”,我想在内容中添加另一个资源 res / values-en-rUS / strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="postal_code">Zip Code</string>
</resources>

但是,Lint会抱怨 values / strings.xml 中的其他字符串,而不是 values-en-rUS / strings.xml

我意识到您可以通过在 values / strings.xml 中指定tools:ignore来取消警告。但这是不可取的,因为Lint警告在翻译成另一种语言时实际上很有用。

相反,是否可以在 values-en-rUS / strings.xml 文件中禁止显示警告,例如,在查找缺少的翻译时告诉Lint不要将该文件用作标准?

7 个答案:

答案 0 :(得分:35)

根据这个答案,我找到了一个更好的解决方案:https://stackoverflow.com/a/13797364/190309

只需将ignore="MissingTranslation"添加到string.xml,例如:

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

  <!-- your strings here; no need now for the translatable attribute -->

</resources>

答案 1 :(得分:15)

Lint支持部分区域翻译,但需要知道默认字符串是什么语言。这样,它可以将部分区域翻译与不同语言环境中的缺失翻译区分开来。

values/strings.xml中指定区域设置:

<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">

来自lint:

  

默认情况下,此探测器允许语言区域提供      字符串的子集并回退到标准语言字符串。 [...]

     

您可以告诉lint(和其他工具)哪种语言是默认语言      在您的res / values /文件夹中通过指定工具:locale =&#34; languageCode&#34;对于      资源文件中的根元素。 (工具前缀      引用名称空间声明http://schemas.android.com/tools。)

将语言环境规范添加到默认语言文件中,您不应该为en-rUS收到错误,但仍会通知其他任何缺失的翻译。

答案 2 :(得分:14)

这似乎还没有回答,所以我给你看一个解决方案:

在您的DEFAULT xml文件中,您可以定义不需要翻译的字符串,如下所示:

<string name="developer" translatable="false">Developer Name</string>

这个字符串不需要翻译,lint也不会抱怨它......

答案 3 :(得分:4)

这是瑞士刀的答案,因此您可以根据自己的情况来忽略缺少的翻译消息:

  • 忽略所有MissingTranslation消息:

    编辑您的build.gradle文件:

    android {
        lintOptions{
            disable 'MissingTranslation'
        }
    }
    
  • 忽略具体MissingTranslation文件中的所有resources.xml消息:

    <?xml version="1.0" encoding="utf-8"?>
    <resources
        xmlns:tools="http://schemas.android.com/tools"
        tools:ignore="MissingTranslation">
    
          <!-- your strings here; no need now for the translatable attribute -->
    
    </resources>
    
  • 仅对一个字符串忽略MissingTranslation消息:

    <string name="developer" translatable="false">Developer Name</string>
    

答案 4 :(得分:0)

如果您使用的是Eclipse,请查看Lint警告视图的工具栏按钮。其中一个叫做“文件中的忽略”。这应该会有所帮助,但前提是Lint会将错误分配给您的“US”文件。该按钮只是修改项目中的lint.xml文件,因此您可以轻松地调查(和撤消)。

有关该文件特定抑制的更多详细信息位于http://tools.android.com/tips/lint/suppressing-lint-warnings

答案 5 :(得分:0)

对于 lint 配置文件 lint.xml

<issue id="MissingTranslation" severity="ignore" />

答案 6 :(得分:0)

如果使用 gradle 7

lint {
        disable("MissingTranslation")
    }