MissingTranslation用于默认语言(" ..."未翻译在" en")

时间:2015-01-23 09:37:33

标签: android android-resources lint

我想生成一个已签名的apk并收到以下错误:

Error:(65) Error: "..." is not translated in "en" (English) [MissingTranslation]

我的项目只包含默认文件夹(没有语言的插件),例如values文件夹和ONE语言,这是德语(意思是,我有一个values-de文件夹)

我的默认语言是英语,因此所有不属于特殊语言的资源都应该是英语。

问题

为什么android工作室告诉我,它缺少en语言,虽然我没有单个文件夹?也许en-folder是gradle导入的一部分?我可以以某种方式排除它们吗?实际上,我不知道en来自哪里,因为我不在任何地方使用它......

示例

我只有valuesvalues-de文件夹!

values我有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="pause_alarms">
        <item>Silent</item>
        <item>Vibrate</item>
        <item>Sound</item>
        <item>Vibrate + Sound</item>
    </string-array>
</resources>

values-de我有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="pause_alarms">
        <item>Leise</item>
        <item>Vibrieren</item>
        <item>Ton</item>
        <item>Vibrieren + Ton</item>
    </string-array>
</resources>

3 个答案:

答案 0 :(得分:6)

我不知道en的来源,但如果我在xml文件中定义默认资源的语言,如下所示

<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:locale="en">

错误消失......

可能,我猜,有些gradle导入有en文件夹......

答案 1 :(得分:2)

也许构建被字符串数组弄糊涂了?将数组仅存储在一个值文件夹中并将字符串定义为外部资源是一种很好的做法。因此,不要输入,最好这样做:

<string-array name="pause_alarms">
    <item>@string/silent</item>
    <item>@string/vibrate</item>
    ... etc ...
</string-array>

然后在res / values / strings.xml

<string name="silent">Silent</string>
<string name="vibrate">Vibrate</string>
 ... etc ...

并在res / values-de / strings.xml

<string name="silent">Leise</string>
<string name="vibrate">Vibrieren</string>
 ... etc ...

这样您就不必保持2个字符串数组的最新状态并按顺序同步,只需原始字符串值。

&#34; en&#34;事情很奇怪 - 在本地化的文档中,谷歌从不提及英语。他们只谈论&#34;默认&#34;语言。有道理,因为价值观与语言无关。您可以用西班牙语编写默认值并且有一个values-en文件夹,这没什么关系。

要检查的其他事项 - 您是否在项目文件夹中使用本地库?也许他们在一个values-en文件夹中有资源被捡起来并使构建系统混乱?

答案 2 :(得分:0)

在我的情况下,问题是由于存在名为values-en的文件夹而导致缺少其他文件夹中存在的某些文件。