i18next是否支持为翻译添加描述或上下文?对比FBT功能
i18next 中添加翻译描述/上下文的方案
1. 自定义字段存储描述
i18next 并不限制翻译资源的结构,你可以直接在翻译JSON文件中为每个翻译项添加自定义的description字段,和FBT的方式类似。示例:
{ "welcome": { "translation": "欢迎", "description": "网站首页的欢迎语,面向新用户展示" }, "button.submit": { "translation": "提交", "description": "表单底部的提交按钮文本,用于触发表单校验与提交" } }
使用时,通过t函数获取翻译文本:
// 获取翻译文本 t('welcome.translation') // 若需要读取描述(比如给译者工具用),可以直接访问资源对象 i18next.getResource('zh', 'translation', 'welcome').description
2. 官方上下文(Context)机制
如果你的需求是根据上下文切换不同翻译(比如性别、场景差异),i18next 内置了上下文功能。示例:
{ "greeting": "你好", "greeting_female": "您好女士", "greeting_male": "您好先生" }
使用时传入上下文参数:
t('greeting', { context: 'female' }) // 输出「您好女士」
不过这个机制主要用于动态切换翻译文本,而非给译者添加注释描述,更适合场景化的翻译差异。
3. 键的结构化设计(无需塞描述到键名)
虽然网上建议键名简短,但i18next完全支持结构化的键名来隐含上下文,同时结合自定义description字段补充细节,不用把描述硬塞进键里。比如:
{ "checkout.button.confirm": { "translation": "确认结账", "description": "结账流程最后一步的确认按钮,点击后发起支付请求" } }
这种结构化键名已经能体现文本的使用场景,再配合description字段给译者提供足够的背景信息,兼顾简洁性和可读性。
内容的提问来源于stack exchange,提问作者Premkumar Giridhar
相关产品推荐
相关产品推荐

