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. ”

cke_504.jpeg


更多关于HarmonyOS鸿蒙Next中在给应用做国际化语言适配时,编译器报错:“language_button is translated here but not found in the default locale. ”【错例解决】的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

问题背景:

  • 这是因为默认语言(base文件)下缺少相对应的字段;如果用户系统中设置的不是英文或者中文,那么此时就会去base文件下寻找对应的字段;而你此时又没有这字段,所以容易发生错误,编辑器这段报错很好的帮我们解决了这类粗心问题。

解决方案:

  • 只需要在默认语言(base文件)下补充上相对应的字段即可。

建议: 优先写好base文件下的string.json文件,然后将该文件复制到其它语言模块下进行相对应修改。

cke_4873.jpeg

cke_5306.jpeg

相关文档:

更多关于HarmonyOS鸿蒙Next中在给应用做国际化语言适配时,编译器报错:“language_button is translated here but not found in the default locale. ”【错例解决】的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


该错误提示表明 language_button 在翻译文件中被引用,但在默认语言(如 en_US)的 string.json 文件中未定义。请检查 entry/src/main/resources/base/element/string.json 文件,确保 name"language_button" 的字符串资源已正确定义。

这个错误是因为在默认语言资源文件(通常是 base 目录下的 element/string.json)中缺少 language_button 这个字符串的定义。

在 HarmonyOS Next 的国际化适配中,所有需要翻译的字符串必须首先在默认语言资源文件中声明。其他语言资源文件(如 en_USzh_CN)中的字符串条目,都应该是默认语言文件中已有条目的翻译版本。

解决方法如下:

  1. 定位并打开你的默认语言资源文件。 路径通常是:项目目录 > entry > src > main > resources > base > element > string.json

  2. string.json 文件中,添加 language_button 的键值对。 例如,如果你的应用默认语言是中文,可以这样添加:

    {
      "string": [
        {
          "name": "language_button",
          "value": "语言按钮"
        },
        ... // 其他已有的字符串
      ]
    }
    
    • name 是字符串的唯一标识符(key),必须与你在其他语言文件中使用的 name 完全一致。
    • value 是默认语言下显示的文本。
  3. 保存文件并重新编译项目。 完成上述修改后,编译器将能在默认语言资源中找到 language_button 的定义,错误就会消失。此时,你在 en_US/string.json 中为 language_button 提供的英文翻译(例如 "value": "Language")才会被正确识别和应用。

核心原则: 国际化翻译是一个“覆盖”过程。系统会先加载默认语言资源,然后根据当前系统语言设置,用对应语言目录下的资源去覆盖默认值。如果某个 key 在默认资源中不存在,系统就无法建立覆盖关系,因此会报错。

确保所有需要国际化的字符串都遵循 “先在默认资源文件(base)中定义,再在其他语言文件中翻译” 的流程,即可避免此类错误。

回到顶部