2

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

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

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

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

4

3 回答 3

1

您可以通过基于正则表达式忽略lint.xml文件中的错误消息来做到这一点:

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

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

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

一些对我不起作用的合理方法

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

如果您恰好是想要抑制仅部分覆盖默认字符串文件的特定于区域的字符串文件的 MissingTranslation 错误的非常特殊的情况(例如,默认文件是英文,并且values-en-rUS/strings.xml希望在一个解法。

于 2015-04-29T19:02:34.100 回答
0

在警告标记上,按Ctrl-1以显示可用的快速修复。您可以在快速修复分辨率选择中选择忽略特定文件的警告。

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

于 2012-09-20T05:59:38.273 回答
-1

对于具有部分翻译的语言,您可以使用注释。由于您说那里只有几个字符串,因此您可以像这样在 xml 文件中抑制这些特定字符串:

字符串.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

于 2014-05-30T22:44:51.970 回答