MissingTranslation为默认语言(“ ...”未翻译为“ en”)

问题描述 投票:8回答:2

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

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

[我的项目仅包含默认文件夹(没有语言的附加组件),例如values文件夹和一种语言,这是德语(意味着,我有values-de文件夹)

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

问题

为什么Android Studio告诉我,尽管我没有单个文件夹,但它缺少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>
android android-studio android-resources lint
2个回答
8
投票

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

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

错误消失...

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


2
投票

也许构建被字符串数组弄糊涂了?最好将数组仅放在一个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-en文件夹,没关系。

其他要检查的内容-您是否在项目文件夹中使用本地库?也许他们在values-en文件夹中拥有一些资源,这些资源被拿起并混淆了构建系统?

© www.soinside.com 2019 - 2024. All rights reserved.