默认语言缺失翻译("..."在"en"中未被翻译)

10
我想生成已签名的apk文件,但出现以下错误:
Error:(65) Error: "..." is not translated in "en" (English) [MissingTranslation]

我的项目中只包含默认文件夹(没有任何语言的附加文件夹),例如values文件夹和一个语言,即德语(这意味着我有一个values-de文件夹)。

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

问题

为什么Android Studio告诉我缺少英语(en)语言,尽管我没有单独的en文件夹?也许en文件夹是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>

1
我这样做,对于所有可翻译且已翻译成德语的数组条目都会出现此错误...它们的英语值在values/arrays.xml文件中,而它们的德语值在 values-de/ arrays.xml 中。 - prom85
实际上,我添加了一个示例... 我在我的 arrays.xml 中获取所有可翻译的值的此错误... 那么,Android Studio应该如何知道我的默认语言是 en?实际上,它不知道,不是有意为之。我没有定义默认资源的区域设置... - prom85
3个回答

16

我不知道en是从哪里来的,但如果我在xml文件中像以下这样定义我的默认资源的语言

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

错误消失了...

可能是因为一些gradle导入中有en文件夹...


3
从那时起已经过了很长时间,但即使我添加了 tools:locale="en" ,错误仍然持续显示。有任何想法吗? - musooff

2
也许是由于string-array导致构建出现混淆了?最好的做法是将数组仅放在一个values文件夹中,并将字符串定义为外部资源。因此,与其使用您的条目,这样做会更好:
<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 ...

这样,您就不必保持两个字符串数组的同步以便按顺序更新,只需使用原始字符串值即可。

"en" 的设定有点奇怪 - 在本地化文档中,Google 从未提到英语。他们只谈论“默认”语言。这是有道理的,因为 values 是与语言无关的。您可以在西班牙语中编写默认内容,并拥有一个 values-en 文件夹,这并不重要。

其他需要检查的事项 - 您是否在项目文件夹中使用了本地库?也许它们有在 values-en 文件夹中的资源,这可能会使构建系统混淆。


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

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

对我来说也一样。某些模块包含了空的values-en文件夹,这导致了这些警告/错误。非常感谢你的提示 :) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接