如何在react-i18next的Trans组件中正确使用 非换行空格?
解决Trans组件中非换行空格( )生效的问题
方案1:直接使用Unicode非换行空格
把翻译文案里的 替换成Unicode非换行空格(U+00A0),这个字符本身自带非换行属性,Trans组件会直接识别并正确渲染。输入方式:
- Windows:
Alt+0160(需开启数字小键盘) - Mac:
Option+Space
方案2:自定义组件处理
在renderedTags中新增一个专门处理非换行空格的组件:
renderedTags = { br: <br />, b: <b />, strong: <strong />, i: <i />, p: <p />, a: <a />, span: <span />, nbsp: <span style={{ whiteSpace: 'nowrap' }}> </span>, // 新增非换行空格组件 };
同时修改翻译文案,把&nbsp;替换为<nbsp>标签:
Oops. The link no longer works for some<nbsp>reason
Trans组件会自动用你定义的nbsp组件渲染,实现非换行效果。
方案3:通过i18n后置处理器替换
在i18next初始化时添加后置处理器,自动把&nbsp;替换为Unicode非换行空格:
i18next.init({ // 你的其他配置项 postProcess: ['replaceNbsp'], }); // 添加后置处理器逻辑 i18next.addPostProcessor('replaceNbsp', (translatedValue) => { return translatedValue.replace(/&nbsp;/g, '\u00A0'); });
这样所有翻译文本里的&nbsp;都会被自动转换,无需修改文案或组件配置。
内容的提问来源于stack exchange,提问作者vld0s
相关产品推荐
相关产品推荐

