需在Dify前端启用中文等语言,必须先在next.config.js中声明locales并设defaultLocale,再将翻译文件置于web/public/locales/zh下,更新layout.tsx的supportedLocales和LocaleSwitcher中的localeNames,最后清除.next缓存并重新构建。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Dify控制台前端中替换默认英文界面为中文或其他语言,但发现修改完语言文件后无法生效,或构建时报错提示缺失翻译键、locale目录未被识别、i18n配置未挂载——这通常是因为Dify前端的i18n资源路径、编译流程与Next.js的国际化机制深度耦合,手动改文件不触发资源注入,也不参与构建时的JSON提取。
确认前端项目结构与i18n入口位置
进入Dify源码根目录下的web子目录,这是Next.js前端工程所在位置:cd dify/web。
检查next.config.js是否已启用next-intl插件支持:打开该文件,确认存在nextIntl配置块,且locales数组包含你目标语言代码(如'zh'),defaultLocale已设为你期望的默认语言。
【关键前提】若next.config.js中未声明zh,后续所有语言包文件都将被忽略,构建时不会生成对应locale路由,控制台访问/zh/console会404。
添加或替换语言包JSON文件
语言资源统一存放在web/public/locales目录下,按语言代码分文件夹组织,例如web/public/locales/zh。
方法一:直接覆盖现有中文包
若已有zh目录,用你校对后的common.json、console.json等文件替换对应文件。注意保留文件名和键名结构一致,否则Next.js运行时找不到key会回退到defaultLocale或显示MISSING_KEY。
方法二:新增一种语言(如繁体中文)
新建web/public/locales/zh-Hant目录 → 复制zh下全部JSON文件 → 逐个打开修改文字内容 → 特别注意检查format字段中的占位符(如{count}、{name})不能删除或错位,否则组件渲染时抛出React错误。
注入新语言到多语言选择器
第一步:打开web/app/[locale]/layout.tsx,找到const supportedLocales = [...]定义处。
第二步:将你的语言代码(如'zh-Hant')追加进数组,确保顺序与next.config.js中locales一致。
第三步:打开web/components/i18n/LocaleSwitcher.tsx,在localeNames对象中添加对应语言名称映射,例如:'zh-Hant': '繁體中文'。这一步漏掉,切换按钮里就不会出现该语言选项。
第四步:保存后清空.next缓存目录:rm -rf web/.next。Next.js的i18n编译缓存极顽固,不删会导致旧locale列表持续生效。
执行本地构建并验证语言加载
在web目录下运行:npm run build(或yarn build)。
构建成功后,检查输出日志末尾是否出现类似✅ Generated static files for locales: en, zh, zh-Hant的提示。没有该行,说明新语言未被识别,需回头检查next.config.js和layout.tsx两处配置。
启动本地服务:npm run start → 访问http://localhost:3000/zh/console,观察页面是否完全汉化、无MISSING_KEY残留、日期/数字格式符合本地习惯。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!







