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 的问题?
这是一个错误: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
Run Code Online (Sandbox Code Playgroud)
演示:
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |