You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay 7.3+版本Javascript中Liferay.Language.get("key")失效问题

Liferay 7.4版本Liferay.Language.get调用返回key值失效解决方案

问题根因

Liferay自7.3版本起优化了前端多语言包的构建逻辑,默认仅会将编译阶段扫描识别到的多语言key注入前端语言包对象,动态传入的key不会被默认收录,因此调用时只会返回key本身。

可行解决方案

  • 常规开发场景(固定多语言key)
    不要通过变量传递多语言key,直接将字符串字面量传入Liferay.Language.get方法即可,示例:
    // 错误写法:变量传递key,构建阶段无法识别
    const langKey = 'login'
    const loginText = Liferay.Language.get(langKey)
    
    // 正确写法:直接传入字符串字面量,构建时会自动收录该key
    const loginText = Liferay.Language.get('login')
    
    这种写法下构建工具会自动识别到login这个多语言key,将其加入前端语言包,调用时即可正常返回对应语言的翻译值。
  • 动态key场景(需运行时确定多语言key)
    在对应前端模块的package.json文件中新增liferayLanguageExports配置项,将所有需要动态调用的多语言key全部列入配置,示例:
    {
      "name": "your-custom-module",
      "version": "1.0.0",
      "liferayLanguageExports": [
        "login",
        "logout",
        "submit",
        "cancel"
      ]
    }
    
    配置完成后重新构建部署模块,配置中列出的key都会被强制纳入前端语言包,后续动态调用也能正常返回翻译结果。
  • 临时调试场景(仅需控制台调用验证)
    可以直接在当前页面源码中搜索已加载的语言包JS文件,文件内包含当前页面已收录的所有多语言key与对应翻译值,直接检索即可查看对应翻译;也可临时将需要调试的key加入已部署模块的liferayLanguageExports配置,部署后再在控制台测试调用。

该调整是Liferay官方的优化策略,目的是缩减前端语言包体积,减少不必要的资源加载,提升页面加载性能,不属于功能bug。

内容的提问来源于stack exchange,提问作者Hani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:42:02