我的Android应用程序包含许多与语言无关的字符串,例如关税和支持电话号码。我在/res/values
中放置了一个XML文件,其中包含例如:
<string name="helpdesk_number">0900 12345678</string>
<string name="helpdesk_tariff">60p</string>
<string name="helpdesk_address1">221B Baker Street</string>
<string name="helpdesk_address2">London NW1 6XE</string>
Lint抱怨说这些字符串没有翻译成其他语言:
Locale de缺少翻译:helpdesk_number,helpdesk_number,helpdesk_address1,helpdesk_address2 ...(56更多)
虽然为其他语言显示不同的关税可能有意义,但帮助台只在一个国家。
将这些字符串复制到其他语言是否有意义?或者是否有某种方法让Lint忽略这些特定的字符串(或字符串文件)?
答案 0 :(得分:5)
即将到来的(希望很快)ADT17将带来一些忽略一些lint警告的功能:
http://tools.android.com/recent/ignoringlintwarnings
http://tools.android.com/tips/lint/suppressing-lint-warnings
因此,使用ADT 17,您可以将lint.xml放在项目文件夹中,其中包含:
<issue id="MissingTranslation" severity="ignore" />
或者你也可以通过以下方式对每个字符串进行操作:
tools:ignore="MissingTranslation"
但该文件并非100%清楚,我现在没有时间打赌17 ..
后续行动:ADT17在您提出要求并解决您的问题后得到了解决!
答案 1 :(得分:4)
在最近的Lint版本中,您可以忽略特定&#34; MissingTranslation&#34;像这样的字符串:
的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 :(得分:3)
直接来自Lint工具:
如果不应翻译字符串,则可以在元素上添加属性translatable =“false”,或者可以在名为donottranslate.xml的资源文件中定义所有不可翻译的字符串。或者,您可以使用工具忽略该问题:ignore =“MissingTranslation”属性。
只需在默认的res / values文件夹中创建一个文件“donottranslate.xml”,Lint将忽略它。我把所有的app键/ ID等放在这里以及首选项中,因为那些不需要“翻译”,只占用其他文件中的空间。
答案 3 :(得分:3)
避免该消息的其他方法,添加到您的资源文件:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
答案 4 :(得分:1)
> Best practice for language-independent strings
在我的应用程序中,我有两个字符串资源文件,一个名为“NonTranslatabable.xml”,它将接收那些不会被翻译的字符串(appName,fileNames,..)。
在将应用翻译成其他语言时,如果必须翻译字符串,我不必考虑。
答案 5 :(得分:0)
将其添加到'android'
下的Gradle App文件中lintOptions {
disable 'MissingTranslation'
}