我目前正在使用i18n翻译字符串,而我正在寻找一种方法将变量附加到路径上。
此变量可以是大约8个不同的值,每个值都需要不同的转换。我的语言环境文件已包含翻译,但我不知道如何将我的变量添加到翻译路径中。我没有认为variable interpolation在这里帮助我。
content.state //variable
t ('.state') //locale path
我正在寻找一种方法将content.state变量添加到语言环境路径的末尾,以便根据content.state的内容进行转换。目前我唯一的解决方案是覆盖所有州的大型if / else。
解决:我试图找到一种方法将变量添加到车把内的语言环境路径,最后使用concat帮助程序。
{{ t (concat "state." content.state)}}
答案 0 :(得分:4)
你可以这样做(例子):
I18n.t('helpers.links.add', variable: "Your Variable Value")
然后,在您的翻译文件(yml)上:
helpers:
links:
add: "Add %{variable}"
这样,在我的例子中,输出将是:添加变量值。
希望这有帮助!
答案 1 :(得分:0)
我也在寻找这个。我的问题是能够在翻译链接中添加变量。我使用上下文完美地管理了它。
假设您要从后端返回“ en”和“ fr”时显示“英语”和“法语”。
在翻译文件(en.json和fr.json)中添加上下文:
{
...
"language_en":"English",
"language_fr":"French",
...
}
在您的前端,假设您的变量名称为 objectLanguage ,请使用以下上下文:
t('language', { context: objectLanguage })
i18next将查找特定的上下文并正确渲染为“英语”或“法语”!
可以找到文档here。
编辑:更简单,如果您编写代码,则可以使用引号:
t(`language.${objectLanguage}.label`)
指向链接:
{
...
"language.en.label":"English",
"language.fr.label":"French",
...
}
它也可以正常工作。
希望这可以帮助某人。