i18nexus 翻译动态变量值

问题描述 投票:0回答:1

如何翻译来自数据库的动态值(产品名称),例如花的名称

我尝试使用这个:

        {t("common:product_name", { productName: "Название товара", })}

还有这个

但是我收到了非翻译值,我需要做什么来解决这个问题?

next.js internationalization i18next react-i18next
1个回答
0
投票

这不是国际化的工作原理,这些动态值用于将值注入到翻译字符串中,但不翻译该值。例如,你可以有一个像这样的字符串

Page {{count}} of {{total}}
,这样你就可以翻译该字符串并保留动态值,它可以被
t('pagination', {count: '2', total: '10'})
使用,对于英语,翻译将像这样
Page 2 of 10
,而
Страница 2 из 10 
俄语。

在构建应用程序时,这些翻译被视为普通 JSON,并且您的翻译管理器(例如:i18nexus、localize 等)与它们无关,并且 JSON 值由 i18n 框架使用,并且该框架不是一个可以即时翻译您价值观的实时翻译者。如果你的值必须被翻译并且这是必要的,我相信最好的方法是在你的数据库中有另一个表或集合用于 i18n 字符串翻译,例如,如果你有一个产品表,其值类似于

Product: id, name, quantity, price, etc...
,你可以创建另一个表(如
Translation: id, language, i18nValue, etc...
)用于存储数据库中的所有数据翻译,最后创建一个表用于将它们连接在一起(如
ProductTranslation: id, productId, translationId, field
)。这样您就可以获取与需要翻译的产品或表格相关的所有翻译,并在您的页面中使用它们。并使用产品本身的默认语言作为默认语言和后备字符串。或者,您可以使用翻译 API(例如:Google Translate、DeepL 等),可用于在运行中翻译它们,但完全不推荐,它会影响您的应用程序性能并且可能很昂贵。

© www.soinside.com 2019 - 2024. All rights reserved.