mcpField
I
i18n

i18n

github.com/lobehub开发83.6k4.6k 次安装今天更新
代码仓库

关于 i18n

i18n 是 LobeHub 的国际化协作指南,面向维护本地化内容的开发者。它说明翻译键规范、编辑流程及生成语言的处理方式。

主要功能

  1. 01默认英文与 react-i18next
  2. 02点分隔的扁平键命名
  3. 03通过 lobe-i18n 生成翻译
  4. 04日常自动翻译工作流
  5. 05处理已有键的文本变更

适用场景

  1. 01为新功能添加本地化键
  2. 02预览简体中文和英文翻译
  3. 03更新已变更文本的翻译
  4. 04排查生成语言未更新的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lobehub/lobehub --skill i18n

安装后在 Claude Code 中输入/i18n确认已加载。

详细介绍

LobeHub 国际化指南

  • 默认语言:英语(en-US)
  • 框架:react-i18next
  • 仅编辑 packages/locales/src/default/ 中的文件 - 切勿手动编写 locales/ JSON 中的翻译(en-US/zh-CN 预览除外);生成的语言版本只能通过 lobe-i18n 更改,此外还包括 更改现有键的英文文本 中所述的删除键操作
  • 默认情况下,将生成的语言版本交由每日运行的 auto-i18n.yml 工作流处理;只有在需要立即生成时才手动运行 bun run i18n

键命名约定

使用点号表示法的扁平键(而非嵌套对象):

// ✅ Correct
export default {
  'alert.cloud.action': '立即体验',
  'sync.actions.sync': '立即同步',
  'sync.status.ready': '已连接',
};

// ❌ Avoid nested objects
export default {
  alert: { cloud: { action: '...' } },
};

模式: {feature}.{context}.{action|status}

参数: 使用 {{variableName}} 语法

'alert.cloud.desc': '我们提供 {{credit}} 额度积分',

避免键冲突:

// ❌ Conflict
'clientDB.solve': '自助解决',
'clientDB.solve.backup.title': '数据备份',

// ✅ Solution
'clientDB.solve.action': '自助解决',
'clientDB.solve.backup.title': '数据备份',

工作流

  1. 将键添加到 packages/locales/src/default/{namespace}.ts
  2. 在 packages/locales/src/default/index.ts 中导出新的命名空间
  3. 对于开发预览:手动翻译 locales/zh-CN/{namespace}.json 和 locales/en-US/{namespace}.json
  4. 其他所有语言版本交由 .github/workflows/auto-i18n.yml 处理;该工作流每天运行,并自动创建翻译 PR
  5. 只有在分支需要立即获取这些翻译时才手动运行 bun run i18n;该命令运行较慢,且需要 OPENAI_API_KEY
更改现有键的英文文本

lobe-i18n(包括每日工作流和 bun run i18n)只会翻译某个语言版本中缺失的键。它不会重新翻译英文值已更改的键,因此编辑现有值会导致所有生成的语言版本一直保留旧文本(例如,扩展后的 settingsSearch.tabKeywords.* 在 16 个语言版本中陈旧了数周)。

当更改会影响现有键的含义或内容(而不只是修正错别字)时,请采取以下任一做法:

  • 重命名该键,使其在所有语言版本中都变为缺失状态,从而重新翻译。
  • 在同一个 PR 中重新翻译:从所有生成的 locales/*/{namespace}.json 中删除该键(en-US/zh-CN 除外),运行 bun run i18n,并且只提交这些键——该命令也会填充其他缺失的键,这些键应交由每日工作流 PR 处理。
  • 如果旧翻译在每日运行前无碍使用,请从生成的语言版本中删除该键,使其回退到英文,并由工作流重新翻译。当本地化文本会影响实际使用时(例如,用户会用自己语言输入的搜索关键词),不要采用此做法。

用法

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');

常用命名空间

最常用: common(共享 UI)、chat(聊天功能)、setting(设置)

其他:auth、changelog、components、discover、editor、electron、error、file、hotkey、knowledgeBase、memory、models、plugin、portal、providers、tool、topic

评论

支持 Markdown