关于 internationalization-i18n
面向开发多语言应用的国际化与本地化技能,适用于需要支持不同地区用户的开发者。内容涵盖翻译、区域格式、从右向左布局及翻译流程,并提供多种 i18n 库和方案的指南。
主要功能
- 01翻译与消息管理
- 02复数规则与 ICU 消息
- 03区域化日期和数字格式
- 04从右向左语言支持
- 05语言区域检测与切换
- 06翻译工作流指导
适用场景
- 01为应用添加多种语言
- 02按地区格式化日期和数字
- 03支持阿拉伯语或希伯来语布局
- 04管理翻译字符串与工作流
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill internationalization-i18n安装后在 Claude Code 中输入/internationalization-i18n确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/date-and-time-formatting.mdi18next-javascripttypescript.mdlocale-detection.mdnumber-and-currency-formatting.mdpluralization-rules.mdpython-i18n-gettext.mdreact-intl-formatjs.mdrtl-right-to-left-language-support.mdserver-side-i18n.mdtranslation-management.mdtemplates/component-template.tsx详细介绍
国际化(i18n)与本地化
目录
概述
全面介绍如何在应用程序中实现国际化与本地化,涵盖消息翻译、复数形式、日期/时间/数字格式化、RTL 语言,以及与常用 i18n 库的集成。
适用场景
- 构建多语言应用程序
- 为国际用户提供支持
- 实现语言切换
- 按不同区域设置格式化日期、时间和数字
- 支持 RTL(从右向左)语言
- 提取和管理翻译字符串
- 实现复数规则
- 设置翻译工作流
快速入门
最小可运行示例:
// i18n.ts
import i18next from "i18next";
import Backend from "i18next-http-backend";
import LanguageDetector from "i18next-browser-languagedetector";
await i18next
.use(Backend)
.use(LanguageDetector)
.init({
fallbackLng: "en",
debug: process.env.NODE_ENV === "development",
interpolation: {
escapeValue: false, // React already escapes
},
backend: {
loadPath: "/locales/{{lng}}/{{ns}}.json",
},
detection: {
order: ["querystring", "cookie", "localStorage", "navigator"],
caches: ["localStorage", "cookie"],
},
});
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| i18next(JavaScript/TypeScript) | i18next(JavaScript/TypeScript) |
| React-Intl(Format.js) | React-Intl(Format.js) |
| Python i18n(gettext) | Python i18n(gettext) |
| 日期和时间格式化 | 日期和时间格式化 |
| 数字和货币格式化 | 数字和货币格式化 |
| 复数规则 | 复数规则 |
| RTL(从右向左)语言支持 | RTL(从右向左)语言支持 |
| 翻译管理 | 翻译管理 |
| 区域设置检测 | 区域设置检测 |
| 服务端 i18n | 服务端 i18n |
最佳实践
✅ 应该这样做
- 将所有面向用户的字符串提取到翻译文件中
- 对复杂消息使用 ICU 消息格式
- 为每种语言正确支持复数形式
- 使用适配区域设置的日期/时间/数字格式化
- 为阿拉伯语、希伯来语等语言实现 RTL 支持
- 提供回退语言(通常为英语)
- 使用命名空间组织翻译
- 使用伪本地化(ääçćëńţś)进行测试
- 存储区域设置偏好(cookie、localStorage)
- 在生产环境中聘请专业译者
- 实现翻译管理工作流
- 支持动态切换区域设置
- 使用翻译记忆工具
❌ 不要这样做
- 在代码中硬编码面向用户的字符串
- 拼接已翻译的字符串
- 假设所有语言都适用英语语法规则
- 对所有语言都使用通用复数形式(one/many)
- 忽略文本扩展问题(德语文本约长 30%)
- 以特定区域格式存储日期/时间
- 使用旗帜代表语言(旗帜 ≠ 语言)
- 脱离上下文翻译技术术语
- 混用翻译键和 UI 字符串
- 忘记翻译替代文本、标题和占位符
- 假设布局都是从左向右
评论
支持 Markdown