动态 translation/translation 带有 i18next 的变量
dynamic translation/translation with variable with i18next
我怎么不能动态翻译resp。将变量与 i18next 一起使用?
例如在我的 JS 文件中我得到了这个:
这里我使用了一个变量并将其分配给 i18n 函数,但它不起作用:
//this does not work:
var dynamicTranslation = "myText.toBetranslated";
console.log("translation dynamic ", !{JSON.stringify(t(dynamicTranslation))});
在这里,我将上面的字符串直接硬编码到 i18n 函数中,它确实有效:
//inserted string is the same string as in dynamic translation but this does work:
console.log("translation static ", !{JSON.stringify(t("myText.toBetranslated"))});
结果我得到:
translation dynamic
translation static correct Translation
为了解决这个问题,我尝试通过设置超时来解决它:
setTimeout(function() {console.log("time out translation: " + !{JSON.stringify(t(dynamicTranslation))})}, 2000);
但它仍然会显示一个空结果:
time out translation:
玉句法。第一个代码不起作用,因为它是在后端站点用 jade 呈现的。在这一点上,jade 不考虑 JS 部分,只渲染它并将结果(连同未触及的 JS 代码)推送到前端。因此 t() 函数中带有变量的部分没有被翻译,因为它没有考虑 JS 代码。
我怎么不能动态翻译resp。将变量与 i18next 一起使用?
例如在我的 JS 文件中我得到了这个:
这里我使用了一个变量并将其分配给 i18n 函数,但它不起作用:
//this does not work:
var dynamicTranslation = "myText.toBetranslated";
console.log("translation dynamic ", !{JSON.stringify(t(dynamicTranslation))});
在这里,我将上面的字符串直接硬编码到 i18n 函数中,它确实有效:
//inserted string is the same string as in dynamic translation but this does work:
console.log("translation static ", !{JSON.stringify(t("myText.toBetranslated"))});
结果我得到:
translation dynamic
translation static correct Translation
为了解决这个问题,我尝试通过设置超时来解决它:
setTimeout(function() {console.log("time out translation: " + !{JSON.stringify(t(dynamicTranslation))})}, 2000);
但它仍然会显示一个空结果:
time out translation:
玉句法。第一个代码不起作用,因为它是在后端站点用 jade 呈现的。在这一点上,jade 不考虑 JS 部分,只渲染它并将结果(连同未触及的 JS 代码)推送到前端。因此 t() 函数中带有变量的部分没有被翻译,因为它没有考虑 JS 代码。