Android应用级语言配置:默认英文无法被系统选择的问题咨询
Android 应用级语言配置:默认英文资源无法作为可选语言的解决方法
当前配置情况
res/values/strings.xml:默认英文资源res/values-it/strings.xml:意大利语翻译资源
已配置Gradle:
androidResources { generateLocaleConfig = true }
同时创建res/resources.properties文件,内容:
unqualifiedResLocale=ita
遇到的问题
- 配置的默认区域设置未生效,应用仍使用系统默认语言
- 系统应用语言设置中仅显示「系统默认(当前设备为意大利语)」和两个意大利语选项,无法选择英文
临时解决方法
创建values-en文件夹并复制默认strings.xml,英文选项出现,但产生两份需同步维护的重复资源文件,存在冗余。
正规解决方案
无需复制默认资源文件,通过以下步骤即可让系统识别默认英文为可选语言:
修正
resources.properties配置
将unqualifiedResLocale的值改为en——该配置用于告诉构建工具,未指定区域的values文件夹对应的语言类型,因为你的默认资源是英文,所以要对应设置:unqualifiedResLocale=en验证Locale Config生成结果
构建应用后,可在build/intermediates/locale_config/debug目录下查看自动生成的locale_config.xml,确认其中包含<locale android:name="en"/>和<locale android:name="it"/>两个条目。保持Gradle配置不变
继续保留generateLocaleConfig = true,该配置会自动收集应用支持的语言列表,供系统语言设置识别。
原理说明
之前将unqualifiedResLocale设为ita,会让构建工具错误地将默认values文件夹识别为意大利语资源,和values-it内容重复,导致系统无法识别到英文选项。修正为en后,构建工具会正确标记默认资源为英文,结合values-it的意大利语资源,生成包含两种语言的Locale Config,系统设置里就会出现英文选项。
内容的提问来源于stack exchange,提问作者user.kt
相关产品推荐
相关产品推荐

