【问题标题】:i18next json dot in key or label键或标签中的 i18next json 点
【发布时间】:2026-02-05 11:05:02
【问题描述】:

JS:i18n.t("SOME TEXT TO BE TRANSLATED.")

JSON:"SOME TEXT TO BE TRANSLATED.": "Een stukje tekst om te vertalen"

i18n.t("SOME TEXT TO BE TRANSLATED.") 给我"SOME TEXT TO BE TRANSLATED.".

如果我删除“。” (点)来自标签和函数 t,而不是翻译文本。

如何解决?

【问题讨论】:

  • 好的,找到了解决方案。更改为 o.keyseparator = "#"

标签: i18next


【解决方案1】:

Documentation 说明默认情况下点被视为键分隔符。你可以

  • 将点替换为.
  • 在翻译后的字符串i18n.t("SOME TEXT TO BE TRANSLATED") + "."外加点
  • change key separator

    您可以通过在 init 上设置选项来更改命名空间和/或键分隔符:

    nsSeparator: ':::'
    keySeparator: '::'
    

【讨论】:

  • 我使用表情符号分隔符 =) nsSeparator: '???️', keySeparator: '??',
【解决方案2】:

您可以在初始化选项中设置 "keySeparator" : false。

【讨论】:

    【解决方案3】:

    您可以尝试使用https://github.com/cheton/i18next-text。它允许您使用 i18next 翻译而无需将密钥作为字符串,并且您无需担心 i18n 密钥命名。此外,您还可以使用 Handlebars 注册 i18n 助手。

    下面是一个简单的例子:

    var i18n = require('i18next');
    
    // extends i18n object to provide a new _() method
    i18n._ = require('i18next-text')._;
    
    i18n._('Save your time and work more efficiently.');
    

    Check out the demo 在 JSFiddle 上。

    【讨论】: