JQuery.i18n 将 none 现有密钥替换为密钥名称而不是后备文本

JQuery.i18n replaces none existing key with the key name instead of the fallback text

我指的是 JQuery.i18n 文档中的 https://github.com/wikimedia/jquery.i18n#data-api

<li data-i18n="message-key">Fallback text</li>

It is also possible to have the above li node with fallback text already in place.

很遗憾,我没有得到这项工作。当我在语言文件中没有 message-key 时,JQuery.i18n 将显示而不是 Fallback text 键:message-key

我的问题:

我做错了什么?一旦我将密钥添加到语言文件,它就会被替换,所以显然语言文件已正确加载,函数调用似乎也有效。

好像是个bug!我在检查 JQuery.i18n 代码时发现了问题。

都在jquery.i18n.js。它从第 169 行的代码开始:

if ( message === '' ) {
   message = key;
}

当没有为键定义的文本时执行if,然后消息成为键。

我评论了作业:

if ( message === '' ) {
   // message = key;
}

然后我不得不在第 244 行更改此代码:

} else {
   $this.text( i18n.parse( messageKey ) );
}

} else {
   const translatedText = i18n.parse( messageKey );
   if ( '' !== translatedText ) {
      $this.text( translatedText  );
   }
}

现在备用文本可以正常工作了。第 165 行中的以下评论似乎证实这是一个错误,开发人员知道它但不知何故他忍受了它:

        // FIXME: This changes the state of the I18N object,
        // should probably not change the 'this.parser' but just
        // pass it to the parser.

如果您应用此 hack,那么还要考虑对 html 和上面其他 tags 几行的修改。