我想生成一个签名的apk并收到以下错误:
Error:(65) Error: "..." is not translated in "en" (English) [MissingTranslation]
[我的项目仅包含默认文件夹(没有语言的附加组件),例如values
文件夹和一种语言,这是德语(意味着,我有values-de
文件夹)
我的默认语言是英语,所以所有不属于特殊语言的资源都应该是英语。
问题
为什么Android Studio告诉我,尽管我没有单个文件夹,但它缺少en
语言?也许文件夹是gradle导入的一部分?我可以以某种方式排除它们吗?实际上,我不知道en
的来源,因为我不在任何地方使用它...
示例
我只有values
和values-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>
我不知道en
的来源,但是如果我在xml文件中定义默认资源的语言,如下所示
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:locale="en">
错误消失...
可能我只是想,某些gradle导入具有en
文件夹...
也许构建被字符串数组弄糊涂了?最好将数组仅放在一个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文件夹中拥有一些资源,这些资源被拿起并混淆了构建系统?