是否有可能在一个单独的资源文件中翻译某些字符串,但不是全部,而没有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不要将该文件用作标准?
答案 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")
}