Docusaurus中src/components组件的i18n实现问题求助
问题解答
- 结论:需要手动添加到code.json,同时你得先修改组件代码用Docusaurus的i18n API标记这段文本,不然直接加键也没法生效。
- 键名建议用带语义的命名空间格式,比如
"Foo.happy"(用组件名做前缀,避免和其他翻译键冲突),或者更具体的"components.Foo.happy"。
为什么docusaurus write-translations提取不到这段文本?
Docusaurus的自动翻译提取工具只会扫描用官方i18n钩子/组件包裹的文本,比如useTranslation的t()函数、<Translate>组件,直接写的字符串常量const Bar = 'happy'不属于可自动识别的标记,所以不会被提取。
具体操作步骤
- 修改组件代码:用
useTranslation钩子包裹这段文本,让翻译系统能识别它:
import { useTranslation } from '@docusaurus/Translate'; function Foo() { const { t } = useTranslation(); const Bar = t('Foo.happy'); // 这里的键名要和code.json里的对应 // 其他组件逻辑... }
- 手动添加到code.json:找到你的目标语言目录(比如
i18n/zh-CN/code.json),添加对应的键值对:
{ // 其他翻译键... "Foo.happy": "开心" }
键名的注意事项
- 尽量用唯一且有语义的命名,比如组件名+文本描述,避免和主题、插件自带的翻译键重复;
- 可以用点分隔层级,比如
"components.Foo.happy",方便管理大量组件的翻译文本。
内容的提问来源于stack exchange,提问作者user2364174
相关产品推荐
相关产品推荐

