忽略Android Lint“MissingTranslation”检查部分翻译

时间:2012-08-18 14:16:36

标签: android android-lint

在我的应用程序中,我有一套完整翻译的语言,另一组语言只有几个字符串的翻译。

对于有完整翻译的语言,我希望Lint警告我MissingTranslations。

对于具有部分翻译的语言,我希望Lint忽略MissingTranslations。

我无法弄清楚如何同时实现这两个目标。

3 个答案:

答案 0 :(得分:0)

在警告标记上,按 Ctrl - 1 以显示可用的快速修正。您可以在quickfix解析选择中选择ignore the warning for a certain file

您仍然需要自己选择是部分翻译还是完整翻译。

答案 1 :(得分:-1)

对于具有部分翻译的语言,您可以使用注释。既然你说你只有几个字符串,你可以在xml文件中抑制那些特定的字符串,如下所示:

的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

答案 2 :(得分:-2)

您可以通过根据lint.xml文件中的错误消息基于正则表达式忽略来执行此操作:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="MissingTranslation">
        <ignore regexp='^".*" is not translated in "ru" \(Russian\)$'/>
    </issue>
</lint>

这将抑制俄语的MissingTranslation错误,但不会抑制任何其他语言。基于对错误消息的忽略有点严重 - 如果他们改变措辞,一切都可能会破坏 - 但这是我所知道的唯一解决方案。

请注意,虽然正则表达式被记录为与“the error message”匹配,但它实际上仅应用于打印到屏幕的文本的一部分。上例中的正则表达式锚点显示了边界。

没有对我有用的一些合理方法是:

  • tools:ignore="MissingTranslation"添加到部分翻译的区域设置的<resources>元素。
  • <ignore path="src/main/res/values-ru/strings.xml"/>添加到lint.xml
  • 中的MissingTranslation问题块

如果您恰好是想要抑制区域特定字符串文件的MissingTranslation错误的特殊情况,该文件仅部分覆盖您的默认字符串文件(例如,默认文件是英语,并且您希望在{{1)中进行一些覆盖}}),请参阅this answer了解解决方案。