我可以在javascript中调用t()而不是I18n.t()吗?

Is i possible to call t() instead of I18n.t() in javascript?

本文关键字:I18n 调用 javascript 我可以      更新时间:2023-09-26

我正在使用 i18n-js 将语言环境加载到我的 js 应用程序中。当我在我的视图中使用翻译功能时,我希望能够只说t('Hello')而不是I18n.t('Hello')。如何让这样的别名工作?

import I18n from 'i18n';
const Hello = () => {
  return (
    <div>{I18n.t("hello", {name: "John"})}</div>
  )
}

您可以将t函数分配给window

window.t = I18n.t;

然后你可以只使用t('Hello').但是,正如@Thilo提到的,这可能会导致一些并发症。


更好的选择是编写一个小包装器:

function t(key){
    return I18n.t(key);
}

@deceze建议的最佳选择是以下一行:

var t = I18n.t.bind(I18n);

单行,无论调用的范围如何,都应有效。