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

Magnolia自定义内容应用及导航菜单未加载对应语言内容排查

问题分析与可能原因

你在Sites应用中配置了本地化,通过/locale/路径能正常显示翻译内容,但自定义内容应用和导航菜单栏始终默认显示英文,即便页面已配置翻译后的导航标题,结合你提供的代码,可能的原因如下:

1. 自定义内容未获取本地化版本

你的代码中使用cmsfn.contentByPath("/", "articles")和cmsfn.contentByPath("/alqasemi/articles")直接获取内容节点,但没有指定本地化上下文。默认情况下,这类方法会拉取站点的默认语言版本,而非当前请求对应的本地化版本。

需要修改内容获取逻辑,确保传入当前请求的本地化参数,比如:

[#assign articles = cmsfn.contentByPath("/", "articles", locale)]

(注:locale需为当前请求上下文的本地化对象,可通过Sites内置上下文变量获取)

2. 导航菜单本地化配置未生效

  • 检查导航项的本地化绑定:确认每个导航条目是否关联了对应语言的页面版本,而非仅修改标题文本。部分Sites系统中,导航菜单需要单独配置本地化条目,不能直接复用默认语言的导航结构。
  • 验证导航渲染逻辑:如果导航是自定义模板渲染的,需确保渲染时调用的是当前locale对应的导航标题字段,而非硬编码或默认语言字段。

3. 日期格式化未适配本地化规则

代码中${article.publish_date?string.MMMM}直接使用默认日期格式,未关联当前locale的日期本地化配置。不同语言的月份名称(如MMMM格式)依赖本地化格式化器,否则会显示默认英文的月份名称。

修改为本地化日期格式化:

${article.publish_date?string("MMMM", locale)}

4. I18n资源文件存在问题

虽然代码中使用了i18n.get()方法,但需确认:

  • 对应语言的资源文件(如messages_zh_CN.properties)是否存在且路径正确。
  • 资源文件中的键名与代码完全匹配(注意大小写和拼写:比如代码里的footer.viewAlqaswmiNews疑似拼写错误,可能实际资源文件中是footer.viewAlqasemiNews)。
  • 当前请求的locale是否正确传递到i18n对象中,确保它能加载对应语言的资源。

5. 自定义应用未继承站点本地化上下文

自定义内容应用可能没有继承主站点的本地化上下文,导致默认使用英文。需要检查:

  • 自定义应用的请求处理逻辑是否正确获取并传递当前locale参数。
  • 模板渲染时,是否将locale变量注入到Freemarker的上下文环境中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:00:14