在Android Studio中无法设置默认语言

9

我在Android Studio中收到有关未翻译字符串的警告 - 它告诉我它们还没有被翻译成英语。这似乎是因为我有一个“en-rGB”资源文件夹。但是,我已经尝试遵循lint中的说明指定默认语言,但并没有起作用。

我有以下的strings.xml文件:

values/strings.xml:

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

    <string name="string1">Howdy</string>
    <string name="string2">Howdy</string>
</resources>

values-en-rGB/strings.xml:

<resources>

    <string name="string1">Hello</string>
</resources>

values-fr/strings.xml:

<resources>

    <string name="string1">Bonjour</string>
    <string name="string2">Bonjour</string>
</resources>

values-fr-rCA/strings.xml:

<resources>

    <string name="string2">Bonjour</string>
</resources>

期望结果: 没有警告,两个字符串都被翻译成英语和法语。

实际结果: Lint会警告string2,说它没有被翻译成英语。 请注意,我包括了fr-rCA以表明这不是一个区域问题。只要已经翻译成“非地区化”的法语,它就不需要被翻译成加拿大法语。在这种情况下,即使string1没有被翻译成加拿大法语,因为它已经被翻译成法语,所以它不会收到警告。

我不能将主资源文件更改为英语(values-en),因为这将导致错误,即没有默认资源。这是真的。

我不想一般地抑制警告,因为我打算添加其他语言,我确实希望出现未被翻译成我包含的其他语言的字符串的警告。

我想知道的是告诉lint默认语言的正确方法。我已经按照“不完整翻译”警告的说明做了:

您可以通过在资源文件的根元素中指定tools:locale="languageCode",告诉lint(和其他工具)您的res/values/文件夹中的默认语言。 (tools前缀是指命名空间声明   http://schemas.android.com/tools。)

但是这似乎行不通。我做错了吗,还是这是lint的问题?


1
我赞同@C.Schone所说的。只需将默认的string2复制到en-rGB中,因为它们最终会变成相同的,这应该可以消除你的警告。我处理翻译的最佳方式是,所有的strings.xml文件都应该将所有条目作为默认的values/strings.xml,无论该值是否需要翻译。 - ahasbini
1
@ahasbini 只需将默认的string2复制到en-rGB,因为它们最终会变成相同的。这里之所以容易,是因为只有1个字符串和只需要1种其他语言。想象一下100个字符串和20种语言。 - Tim
所有条目都需要存在于所有字符串文件中,只有默认文件需要包含所有字符串。 - Tim
@Tim 我同意,但根据 OP 的描述,这个 lint 似乎没有那种逻辑,这就是问题所在! - ahasbini
如何为Android应用程序设置默认语言 - Hassan Kalhoro
显示剩余3条评论
1个回答

8

这是一个bug:https://issuetracker.google.com/issues/142590628

我有一个热修复方案:将values/strings.xml自动复制到values-en文件夹中

1. 创建values-en文件夹

2. 将其粘贴到app/build.gradle

task copyEnResource {
    copy {
        from ('src/main/res/values/strings.xml')
        into ('src/main/res/values-en/')
    }
}

preBuild.dependsOn copyEnResource

演示:

翻译Android Studio问题


谢谢,我会试一下。虽然有点笨重,但只要是自动化的,我想维护应该不会太麻烦。 - richjhart

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