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

标签 android android-studio localization android-resources lint

我在 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 默认语言的正确方法。我已按照“翻译不完整”警告的说明完成此操作:

You can tell lint (and other tools) which language is the default language in your res/values/ folder by specifying tools:locale="languageCode" for the root element in your resource file. (The tools prefix refers to the namespace declaration http://schemas.android.com/tools.)



但这似乎不起作用。我做错了吗,或者这是 Lint 的问题?

最佳答案

这是一个错误: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

演示:

Translation Android studio issues

关于android - 无法在 Android Studio 中设置默认语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59375358/

相关文章:

java - 防止对 Java/Kotlin 中的类的依赖,但允许扩展

Android 电子邮件 Intent 和邮件正文

android - APK app-debug-unaligned.apk 打包过程中文件重复

android - 异常 : View does not have a navController set

java - Gradle 项目同步失败。基本功能(例如编辑、调试)将无法正常工作

Android 模拟器运行几分钟后不断失去互联网连接

android - workstatus 观察者始终处于排队状态

ios - 无法本地化 iOS info.plist 文件中的字符串

php - 如何从 Laravel 中的路由操作中删除路由前缀

localization - 语言代码和语言环境代码的良好定义是什么?