i18n将变量附加到转换字符串

quhf5bfb  于 2022-09-28  发布在  其他
关注(0)|答案(2)|浏览(222)

我目前正在使用i18n转换字符串,我正在寻找一种将变量附加到路径的方法。
这个变量可能有8个不同的值,每个值需要不同的翻译。我的语言环境文件已经包含翻译,但我不知道如何将我的变量添加到翻译路径中。我不认为变量插值对我有帮助。

content.state //variable
t ('.state') //locale path

我正在寻找添加内容的方法。状态变量设置为语言环境路径的末尾,以便根据内容进行转换。目前我唯一的解决方案是一个覆盖所有州的大型if/else。
解决方法:我试图找到一种方法,将变量添加到把手内的语言环境路径中,最后使用了concat助手。

{{ t (concat "state." content.state)}}
ftf50wuq

ftf50wuq1#

您可以这样做(示例):

I18n.t('helpers.links.add', { variable: "Your Variable Value" })

然后,在翻译文件(yml)上:

helpers:
  links:
    add: "Add %{variable}"

这样,在我的示例中,输出将是:Add Your Variable Value。
希望这有帮助!

wrrgggsh

wrrgggsh2#

我也在找这个。我的问题是能够在翻译链接中添加变量。我用上下文处理得很好。
假设您希望在后端返回“en”和“fr”时显示“English”和“French”。
在翻译文件(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",
  ...
}

它也会工作得很好。
希望这能帮助别人。

相关问题