i18n
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLobeChat Internationalization Guide
LobeChat 国际化指南
- Default language: Chinese (zh-CN)
- Framework: react-i18next
- Only edit files in - Never edit JSON files in
src/locales/default/locales/ - Run to generate translations (or manually translate zh-CN/en-US for dev preview)
pnpm i18n
- 默认语言:中文(zh-CN)
- 框架:react-i18next
- 仅编辑 下的文件 - 切勿编辑
src/locales/default/下的JSON文件locales/ - 运行 生成翻译(或手动翻译zh-CN/en-US用于开发预览)
pnpm i18n
Key Naming Convention
键命名规范
Flat keys with dot notation (not nested objects):
typescript
// ✅ Correct
export default {
'alert.cloud.action': '立即体验',
'sync.actions.sync': '立即同步',
'sync.status.ready': '已连接',
};
// ❌ Avoid nested objects
export default {
alert: { cloud: { action: '...' } },
};Patterns:
{feature}.{context}.{action|status}Parameters: Use syntax
{{variableName}}typescript
'alert.cloud.desc': '我们提供 {{credit}} 额度积分',Avoid key conflicts:
typescript
// ❌ Conflict
'clientDB.solve': '自助解决',
'clientDB.solve.backup.title': '数据备份',
// ✅ Solution
'clientDB.solve.action': '自助解决',
'clientDB.solve.backup.title': '数据备份',使用点符号的扁平键(而非嵌套对象):
typescript
// ✅ 正确写法
export default {
'alert.cloud.action': '立即体验',
'sync.actions.sync': '立即同步',
'sync.status.ready': '已连接',
};
// ❌ 避免使用嵌套对象
export default {
alert: { cloud: { action: '...' } },
};命名模式:
{功能模块}.{上下文}.{操作|状态}参数使用:采用 语法
{{variableName}}typescript
'alert.cloud.desc': '我们提供 {{credit}} 额度积分',避免键冲突:
typescript
// ❌ 存在冲突
'clientDB.solve': '自助解决',
'clientDB.solve.backup.title': '数据备份',
// ✅ 解决方案
'clientDB.solve.action': '自助解决',
'clientDB.solve.backup.title': '数据备份',Workflow
工作流程
- Add keys to
src/locales/default/{namespace}.ts - Export new namespace in
src/locales/default/index.ts - For dev preview: manually translate and
locales/zh-CN/{namespace}.jsonlocales/en-US/{namespace}.json - Run to generate all languages (CI handles this automatically)
pnpm i18n
- 在 中添加键
src/locales/default/{namespace}.ts - 在 中导出新的命名空间
src/locales/default/index.ts - 开发预览:手动翻译 和
locales/zh-CN/{namespace}.jsonlocales/en-US/{namespace}.json - 运行 生成所有语言版本(CI会自动处理此步骤)
pnpm i18n
Usage
使用方法
tsx
import { useTranslation } from 'react-i18next';
const { t } = useTranslation('common');
t('newFeature.title')
t('alert.cloud.desc', { credit: '1000' })
// Multiple namespaces
const { t } = useTranslation(['common', 'chat']);
t('common:save')tsx
import { useTranslation } from 'react-i18next';
const { t } = useTranslation('common');
t('newFeature.title')
t('alert.cloud.desc', { credit: '1000' })
// 多命名空间使用
const { t } = useTranslation(['common', 'chat']);
t('common:save')Common Namespaces
常用命名空间
Most used: (shared UI), (chat features), (settings)
commonchatsettingOthers: auth, changelog, components, discover, editor, electron, error, file, hotkey, knowledgeBase, memory, models, plugin, portal, providers, tool, topic
最常用:(通用UI)、(聊天功能)、(设置)
commonchatsetting其他:auth、changelog、components、discover、editor、electron、error、file、hotkey、knowledgeBase、memory、models、plugin、portal、providers、tool、topic