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

Posted

技术标签:

【中文标题】Lint:如何忽略“<key> 未翻译成 <language>”错误?【英文标题】:Lint: How to ignore "<key> is not translated in <language>" errors? 【发布时间】:2012-07-11 17:46:27 【问题描述】:

我无法编译/调试我们的 android 应用,因为本地化文件还不完善。

我的 IDE 的验证工具 Lint 创建错误说:

newCardsOrderVals 未在 ar、bg、ca、cs 中翻译

使用 Ant 编译/安装/运行可以正常工作,但我想使用我的 IDE 来简化调试。

有没有办法关闭此特定检查,或者理想情况下将其设为警告而不是错误?

我知道在发布之前我们确实需要正确地获取本地化文件,但目前这不是优先事项,因为屏幕本身的修改非常频繁。

【问题讨论】:

有没有办法配置所有语言都标记为“未翻译”?我收到诸如“es、he 和 iw”之类的错误。为什么我会得到这些语言?如何配置我的 Android 应用以将设置限制为仅“en”? @inder:可能是因为你的 res/ 文件夹中有“values-he”等目录? 不,我没有任何这样的目录。只有值、布局和可绘制对象。 es,他和 iw 来自 Facebook SDK 库。 这是 Android Lint 中的一个错误:code.google.com/p/android/issues/detail?id=50525 【参考方案1】:

Android 工作室:

“文件”>“设置”并在搜索框中输入“MissingTranslation”

日食:

Windows/Linux:在“窗口”>“首选项”>“Android”>“Lint 错误检查”中 Mac:“Eclipse”>“首选项”>“Android”>“Lint 错误检查”

找到MissingTranslation 行,并将其设置为Warning,如下所示:

【讨论】:

...它在“窗口”>“首选项”>“Android”>“Lint 错误检查”下 有帮助,但是我很久没有这个问题了,直到突然出现。我不知道为什么。 感谢您的宝贵帖子 仅供参考,在 Android Studio 下,“文件”>“设置”和“MissingTranslation”进入搜索框。【参考方案2】:

您可以像这样在定义上设置属性translatable="false":

<string name="account_setup_imap" translatable="false">IMAP</string>

欲了解更多信息:http://tools.android.com/recent/non-translatablestrings

【讨论】:

我说“本地化文件还不是完美的”。他们正在一点一点地被填满。 translatable="false" 会阻止任何人进行翻译。 虽然答案与问题没有直接关系,但我想,它为像我这样在谷歌“如何制作 lint 不要担心我的应用程序常量/参数”。谢谢你,efor18!【参考方案3】:

要在 gradle 构建中忽略这一点,请将其添加到构建文件的 android 部分:

lintOptions 
   disable 'MissingTranslation'

【讨论】:

非常感谢,真的为我节省了几天寻找所有正确字符串的时间。 不错,就这样 将此添加到我的应用程序模块中为我解决了问题。【参考方案4】:

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

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

【讨论】:

这可能是最正确的方法,无需为所有项目禁用 lint【参考方案5】:

如果要关闭有关特定字符串的警告,可以使用以下命令:

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 一劳永逸的好方法,这样团队的所有开发人员都不必修改他们的 IDE 设置。有什么办法让它成为警告,而不是完全压制? 您可以构建自定义 Lint 规则来调整特定事物的严重性状态。这里有一个例子:tools.android.com/tips/lint-custom-rules【参考方案6】:

lint.xml 文件中插入:

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

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

更多详情:Suppressing Lint Warnings。

【讨论】:

【参考方案7】:

在资源根选项卡的 /res/values.xml 文件中添加以下行,如下所示:

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

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

【讨论】:

【参考方案8】:

在你的 gradle 文件中添加以下内容

    lintOptions 
       disable 'MissingTranslation'
    

【讨论】:

【参考方案9】:

另外,

不依赖于项目的属性,Eclipse 首选项。 在 Mac 中,Eclipse > 首选项

【讨论】:

【参考方案10】:

另一种方法是使用 Gradle 的“resConfigs”选项指示您打算支持的语言并过滤掉其余语言。

查看this other answer了解详情

我认为这更好,因为您不必完全忽略您真正想要支持的语言的合法翻译错误

【讨论】:

【参考方案11】:

您也可以将不想翻译的资源放入名为donottranslate.xml 的文件中。

示例及说明:http://tools.android.com/recent/non-translatablestrings

【讨论】:

这是最好的方法,而且很有条理。【参考方案12】:

他们中的许多人给出了不同的工作答案,我也遇到了相同的 lint 错误 我通过使用 eclipse 执行以下操作使其忽略。

    点击 Windows 点击首选项 选择 android > Lint 错误检查。 点击全部忽略 > 应用 > 确定。

就是这样。

【讨论】:

这将忽略所有 lint 首选项。不仅是缺失的翻译【参考方案13】:

以下内容对我有用。

点击窗口 点击首选项 选择 android > Lint 错误检查。 查找并选择相关的 Lint 检查和 将严重性设置为“忽略”(右下角)

【讨论】:

以上是关于Lint:如何忽略“<key> 未翻译成 <language>”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何忽略 Sublime Text 3 Anaconda 行的 lint 错误?

sass-lint 是不是忽略了某行?

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

Husky/lint-staged 是不是可以排除/忽略文件?

Android 性能优化:使用 Lint 优化代码去除多余资源

clang-format 打破 lint 注释