用途
该技能用于指导国际化(i18n)与本地化(L10n)的落地实践,帮助在项目中建立可翻译的结构、处理多语言与区域差异,并在发布前检查遗漏。
核心概念
资料给出的术语含义:i18n 指国际化,即让应用具备可翻译能力;L10n 指本地化,即实际的翻译工作;Locale 指语言加区域,例如 en-US、tr-TR;RTL 指从右到左的语言,如阿拉伯语、希伯来语。
何时使用 i18n
资料提供项目类型判断表:公开 Web 应用需要;SaaS 产品需要;内部工具可能(也许);单一区域应用可考虑未来;个人项目可选。
主要能力与实现模式
覆盖三种技术栈的实现示例。React 使用 react-i18next:通过 useTranslation 取得 t 函数,并以 t('welcome.title') 方式取翻译。Next.js 使用 next-intl:通过 useTranslations('Home') 取得 t,并以 t('title') 取翻译。Python 使用 gettext:以 gettext as _ 导入,并用 _("Welcome to our app") 标记可翻译文本。
文件结构
资料给出的 locales 目录按语言拆分,每种语言下按功能划分多个 JSON 文件,例如 en 目录下含 common.json、auth.json、errors.json;tr 目录结构相同;ar 目录标注为 RTL。
最佳实践
应做:使用翻译键而非原始文本;按功能命名空间拆分翻译;支持复数形式;按 locale 处理日期与数字格式;从一开始就规划 RTL;对复杂字符串使用 ICU 消息格式。不应做:在组件中硬编码字符串;拼接已翻译的字符串;假定文本长度(德语会长约 30%);忽略 RTL 布局;在同一文件中混用多种语言。
常见问题与解决
缺失翻译时回退到默认语言;硬编码字符串使用 linter 或检查脚本;日期格式使用 Intl.DateTimeFormat;数字格式使用 Intl.NumberFormat;复数形式使用 ICU 消息格式。
RTL 支持
资料建议使用 CSS 逻辑属性,例如用 margin-inline-start 代替 margin-left、用 padding-inline-end 代替 padding-right;对 RTL 下的图标可用 [dir="rtl"] .icon { transform: scaleX(-1); } 实现镜像。
发布前检查清单
所有面向用户的字符串使用翻译键;所有支持语言均存在 locale 文件;日期与数字格式使用 Intl API;如适用,已测试 RTL 布局;已配置回退语言;组件中没有硬编码字符串。
附带脚本
资料提供 scripts/i18n_checker.py,用途是检测硬编码字符串与缺失翻译,命令为 python scripts/i18n_checker.py <project_path>。以上为该技能资料中的全部明确信息;关于其收费、价格、平台支持范围与其他能力,资料暂未提供。