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

ric*_*art 8 android localization lint android-resources android-studio

我在 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>
Run Code Online (Sandbox Code Playgroud)

values-en-rGB/strings.xml

<resources>

    <string name="string1">Hello</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

values-fr/strings.xml

<resources>

    <string name="string1">Bonjour</string>
    <string name="string2">Bonjour</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

values-fr-rCA/strings.xml

<resources>

    <string name="string2">Bonjour</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

预期结果:应该没有警告,两个字符串都被翻译成英文和法文

实际结果:Lint 会警告 string2,说它没有翻译成英文。

请注意,我已经包含了 fr-rCA 以表明它不是区域性的东西。令人高兴的是,只要将其翻译为“未区域化”的法语,它也不需要翻译为加拿大法语。在这种情况下,它不会警告 string1,即使它没有被翻译成加拿大法语,因为它已经被翻译成法语。

我无法将主资源文件夹更改为英文 ( values-en),因为这会导致没有默认资源的错误。这是真的。

我一般不想取消警告,因为我计划添加其他语言,并且我确实希望对未翻译成我包含的其他语言的字符串显示警告。

我所追求的是将默认语言通知 lint 的正确方法。我已按照“翻译不完整”警告的说明进行了操作:

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

但这似乎不起作用。是我做错了,还是 lint 的问题?

duo*_*dt3 7

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

我有一个修补程序:自动复制values/strings.xmlvalues-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
Run Code Online (Sandbox Code Playgroud)

演示:

翻译 Android studio 问题