与语言无关的字符串的最佳实践

时间:2012-03-21 17:32:23

标签: android android-lint

我的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忽略这些特定的字符串(或字符串文件)?

6 个答案:

答案 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'
}