【发布时间】:2021-05-12 11:15:05
【问题描述】:
目前我将 Next.js 与 Next-i18next 一起用于 I18N,但我了解 React/i18next 实现基本相同。
我遇到的问题是我需要在一些翻译文本中插入下一个链接组件,但根据语言(英语与德语)的不同,文本和链接的顺序会发生变化。 例如,我正在努力解决的文本是:'Accept data policy' vs 'Datenschutzerklärung akzeptieren'
目前我有一个快速修复方法,方法是在翻译 JSON 文件中为文本和链接创建两个值,然后根据当前语言交换位置。显然,这不是一个可持续的解决方案。我曾尝试使用“Trans”组件,但这显示了一些意外行为,即仅在页面刷新后才开始翻译,否则您会看到 Trans 组件内的文本。
示例:
function LinkText({ href, children}) {
return <Link to={href || ''}>{children}</Link>;
}
return (
<Trans i18nKey="sentence">
text before link
<LinkText href="/data-policy">{t("dataPolicy")}</LinkText>
text after link
</Trans>
);
以及相关的 JSON:
{
"sentence": "agree to our <1><0/></1>",
"dataPolicy": "data policy"
}
这是我为在 React 中复制问题而制作的 CodeSandbox 的链接:link
(P.S 目前 i18next 的实现似乎并没有有效地替换 Codesandbox 中的语言,但我将其包含在内,因为代码是用于 MWE)
提前感谢您的帮助,这让我发疯了。
【问题讨论】:
标签: reactjs next.js interpolation i18next react-i18next