HarmonyOS鸿蒙Next中在给应用做国际化语言适配时,编译器报错:“language_button is translated here but not found in the default locale. ”【错例解决】
HarmonyOS鸿蒙Next中在给应用做国际化语言适配时,编译器报错:“language_button is translated here but not found in the default locale. ”【错例解决】 在给应用做国际化语言适配时,在en_US或者zn_CH等资源目录下新增字符串时,编译器报错:“language_button is translated here but not found in the default locale. ”

更多关于HarmonyOS鸿蒙Next中在给应用做国际化语言适配时,编译器报错:“language_button is translated here but not found in the default locale. ”【错例解决】的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题背景:
- 这是因为默认语言(base文件)下缺少相对应的字段;如果用户系统中设置的不是英文或者中文,那么此时就会去base文件下寻找对应的字段;而你此时又没有这字段,所以容易发生错误,编辑器这段报错很好的帮我们解决了这类粗心问题。
解决方案:
- 只需要在默认语言(base文件)下补充上相对应的字段即可。
建议: 优先写好base文件下的string.json文件,然后将该文件复制到其它语言模块下进行相对应修改。


相关文档:
更多关于HarmonyOS鸿蒙Next中在给应用做国际化语言适配时,编译器报错:“language_button is translated here but not found in the default locale. ”【错例解决】的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个错误是因为在默认语言资源文件(通常是 base 目录下的 element/string.json)中缺少 language_button 这个字符串的定义。
在 HarmonyOS Next 的国际化适配中,所有需要翻译的字符串必须首先在默认语言资源文件中声明。其他语言资源文件(如 en_US、zh_CN)中的字符串条目,都应该是默认语言文件中已有条目的翻译版本。
解决方法如下:
-
定位并打开你的默认语言资源文件。 路径通常是:
项目目录 > entry > src > main > resources > base > element > string.json。 -
在
string.json文件中,添加language_button的键值对。 例如,如果你的应用默认语言是中文,可以这样添加:{ "string": [ { "name": "language_button", "value": "语言按钮" }, ... // 其他已有的字符串 ] }name是字符串的唯一标识符(key),必须与你在其他语言文件中使用的name完全一致。value是默认语言下显示的文本。
-
保存文件并重新编译项目。 完成上述修改后,编译器将能在默认语言资源中找到
language_button的定义,错误就会消失。此时,你在en_US/string.json中为language_button提供的英文翻译(例如"value": "Language")才会被正确识别和应用。
核心原则: 国际化翻译是一个“覆盖”过程。系统会先加载默认语言资源,然后根据当前系统语言设置,用对应语言目录下的资源去覆盖默认值。如果某个 key 在默认资源中不存在,系统就无法建立覆盖关系,因此会报错。
确保所有需要国际化的字符串都遵循 “先在默认资源文件(base)中定义,再在其他语言文件中翻译” 的流程,即可避免此类错误。


