【问题标题】:What does the notation !{JSON.stringify(t("some.thing"))}; mean?表示法是什么!{JSON.stringify(t("some.thing"))};意思是?
【发布时间】:2017-03-02 21:47:25
【问题描述】:

我有一个JS代码,上面写着

!{JSON.stringify(t("some.thing"))};

它用于 i18next 的翻译/国际化。但我不明白!{...} 部分。

我知道JSON.stringify 的作用。我知道否定运算符! 是什么意思。我不明白它与 t() 函数的结合:当我在没有 !{...} 部分的情况下使用它时,它会说

Uncaught ReferenceError: t is not defined

但是使用!{...} 部分,它可以正确翻译some.thing 部分。

some.thing 是针对不同语言的不同 JSON 文件中的键,例如英文 JSON 文件:

{
"some": {"thing": "something"}
}

还有一个用于德语的 JSON 文件:

{
"some": {"thing": "irgendetwas"}
}

根据您计算机上设置的语言,函数t("some.thing") 将返回相应的值。如果您的计算机的语言设置为英语,它将返回“something”。如果是德语,它将返回“irgendetwas”。

【问题讨论】:

  • 是缩小代码吗? t是什么功能?
  • 这会返回一个对象吗? t("some.thing");将此结果打印到控制台,而不使用所有其他代码。
  • @AniketSinha t() 是来自 i18next 国际化函数的函数。
  • @spozun: 在没有任何其他代码的情况下编写 t() 即 console.log(t("some.thing)); 返回错误消息 t() 未定义。但是把 t () 函数进入 !{...} 部分使其再次定义.....这就是我不明白的... :(
  • 它会返回一个对象吗?使用调试器,在这一行放置一个断点,然后将鼠标悬停在t 上以找出它的实现。

标签: javascript json internationalization i18next


【解决方案1】:

大括号与对象无关,感叹号与否定无关。这是 JavaScript 中使用的变量的玉语法:

http://naltatis.github.io/jade-syntax-docs/

【讨论】:

    【解决方案2】:

    !not equal to

    所以从技术上讲,这将转化为:

    如果JSON.stringify(t("some.thing")) 的输出是emptynull。返回true

    更多关于JavaScript Comparison and Logical Operators

    【讨论】:

    • @thadeuszlay 不客气。如果你明白我的意思,我猜 t() 是某种定位器。
    • 是的,它是一个本地化工具。正如我在问题中提到的,这是 i18next 国际化的一个功能。
    【解决方案3】:

    JSON.stringify 是一个 Javascript 内置函数,用于将 JSON 对象转换为字符串。反向操作将是JSON.parse()

    在您的代码中,t('some.thing') 似乎是一个缩小的函数,它返回一个 Object,然后将其转换为 string,然后使用否定运算符 ! 进行检查。

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多