Lint:如何忽略“<key>在<language>中未翻译”错误?

189
我无法编译/调试我们的Android应用程序,因为本地化文件还不完美。我的IDE的验证工具Lint创建错误,指出:newCardsOrderVals在ar、bg、ca、cs中没有被翻译。使用Ant进行编译/安装/运行可以正常工作,但我想使用我的IDE来方便调试。有没有办法关闭此特定检查,或者最好将其变成警告而不是错误?我知道在发布之前,我们确实需要正确处理本地化文件,但目前它不是优先考虑的问题,因为屏幕本身经常被修改。

1
有没有一种方法可以配置哪些语言被标记为“未翻译”?我收到了像“es,he和iw”这样的错误。为什么会出现这些语言?如何配置我的Android应用程序以仅限于“en”集合? - inder
@inder:也许是因为你的res/文件夹中有类似“values-he”等目录? - Nicolas Raoul
1
不,我没有这样的目录。只有values、layout和drawable。 - inder
7
es, he 和 iw 来自于 Facebook SDK 库。 - madej
2
这是Android Lint中的一个错误:https://code.google.com/p/android/issues/detail?id=50525 - altumano
13个回答

348

Android Studio:

  • 选择 "文件" > "设置" 并在搜索框中输入 "MissingTranslation"

Eclipse:

  • Windows/Linux:在 "窗口" > "首选项" > "Android" > "Lint 错误检查"
  • Mac:在 "Eclipse" > "首选项" > "Android" > "Lint 错误检查"

找到 MissingTranslation 这一行,将其设置为如下的 警告

Missing translations, is not translated in


2
它位于“窗口”>“首选项”>“Android”>“Lint错误检查”下。 - Ollie Bennett
3
这很有帮助,但我已经很长时间没有遇到这个问题了,直到它突然出现。而且我不知道为什么。 - pktangyue
感谢您宝贵的帖子。 - Pawan asati
请注意,在 Android Studio 中,你需要打开 "文件" > "设置" 并在搜索框中输入 "MissingTranslation"。 - peer

86

1
我说过:“本地化文件还不完美”。它们正在逐渐填充中。如果设置为“translatable = false”,将防止任何人进行翻译。 - Nicolas Raoul
3
虽然这个回答并没有直接回答问题,但我猜想它为像我这样在谷歌搜索“如何让lint不担心我的应用程序常量/参数”时找到这个话题的人提供了出色的解决方案。非常感谢,efor18! - aka_sh

83
要忽略此问题,在gradle构建中将以下内容添加到您的构建文件的android部分:
lintOptions {
   disable 'MissingTranslation'
}

2
非常感谢,您真的为我节省了数天时间来查找所有正确的生产字符串。 - D-Kent
不错,成功了 - Paranoid Android
我将这个添加到我的应用程序模块中,问题得到了解决。 - Mercury

23

这将导致Lint忽略文件中所有字符串的翻译缺失错误,但如果需要,可以验证其他字符串资源文件。

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

这可能是最正确的操作方式,而不必为整个项目禁用lint。 - MatPag

11

如果您希望关闭有关特定字符串的警告,可以使用以下内容:

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>    

    <!--suppress MissingTranslation -->
    <string name="some_string">ignore my translation</string>
    ...

</resources>

如果你想对特定的字符串进行警告而不是错误,你需要构建一个自定义Lint规则来调整特定事物的严重程度状态。

http://tools.android.com/tips/lint-custom-rules


1
+1 做一次全面的处理是一个好方法,这样团队中的所有开发人员都不必修改他们的 IDE 设置。有没有办法将其变成警告而不是完全禁止? - Nicolas Raoul
您可以构建自定义 Lint 规则来调整特定事物的严重性状态。这里有一个示例:http://tools.android.com/tips/lint-custom-rules - Eduard

9

lint.xml 文件中插入以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    ...

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

更多详情请参见:抑制Lint警告

9
在资源根标签下的/res/values.xml文件中添加以下行:
<resources
xmlns:tools="http://schemas.android.com/tools" 
    tools:locale="en" tools:ignore="MissingTranslation">

tools:locale将本地语言设置为英语,后面的所有资源字符串和工具都不需要翻译,而tools:ignore则让Lint忽略资源字符串值的缺失翻译。


6
在 Android 部分的 Gradle 文件中添加以下内容:
    lintOptions {
       disable 'MissingTranslation'
    }

5
此外,Eclipse的偏好设置并不依赖于项目。
在Mac中,选择 Eclipse > Preferences。
enter image description here

4
另一种方法是使用Gradle中的'resConfigs'选项指示您打算支持的语言并过滤掉其余语言。请查看此答案,了解详情:https://dev59.com/2WYq5IYBdhLWcg3wvzGm#15013558
我认为这种方法更好,因为您不必完全忽略实际想要支持的语言中的合法翻译错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接