【问题标题】:MissingTranslation for default language ( "..." is not translated in "en")默认语言的 MissingTranslation(“...”未在“en”中翻译)
【发布时间】:2015-01-23 09:37:33
【问题描述】:

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

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

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

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

问题

为什么 android studio 告诉我,它缺少 en 语言,虽然我没有一个 en-folder?也许 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>

【问题讨论】:

  • 我这样做了。对于所有可翻译并且被翻译成德语的数组条目,我都会收到此错误...并且values/arrays.xml 文件中有英文值,它们的德语值在values-de/arrays.xml...
  • 实际上,我添加了一个示例...我在我的arrays.xml 中收到所有可翻译值的thsi 错误... android studio 应该如何知道我的默认语言是en?其实,它不知道,不是故意的。我没有定义我的默认资源的语言环境...

标签: android android-studio android-resources lint


【解决方案1】:

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

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

错误消失了...

可能,我只是猜想,一些 gradle 导入有 en 文件夹...

【讨论】:

  • 从那以后已经很久了,但是即使我添加tools:locale="en",错误仍然会出现。有什么想法吗?
【解决方案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 个字符串数组是最新的并按顺序同步,只需原始字符串值即可。

“en”这个词很奇怪——在本地化文档中,Google 从未提及英语。他们只谈论“默认”语言。有道理,因为价值观是语言中立的。你可以用西班牙语写默认值并有一个 values-en 文件夹,没关系。

要检查的其他事项 - 您是否在项目文件夹中使用本地库?也许他们在 values-en 文件夹中有资源被拾取并混淆了构建系统?

【讨论】:

  • 实际上,这是一个很好的建议......但我找到了解决方案......我不知道en来自哪里,但如果我定义我的默认资源的语言在 xml 文件中(如&lt;resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en"&gt;,错误消失了...感谢您的提示
  • PS:我使用本地库,但我检查了所有这些,我从未使用过其他语言......但我没有检查 gradle 导入......
  • 很好,也许将其发布为解决方案并自动回答,以防其他人遇到此问题。你到底是怎么想出这个解决方案的? :)
  • 我会发布它...谷歌论坛上有一些帖子让我相信这可以工作...
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多