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

标签 javascript function module internationalization

我正在使用i18n-js将语言环境加载到我的 js 应用程序中。当我在我的 View 中使用翻译函数时,我希望能够只说 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 mentioned ,这可能会导致一些并发症。

<小时/>

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

function t(key){
    return I18n.t(key);
}
<小时/>

最佳选项,suggested通过@deceze ,将是这一行:

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

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

关于javascript - 我可以在 javascript 中调用 t() 而不是 I18n.t() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36834438/

相关文章:

C++ 函数 "size_t PASCAL"

php - 从 Jquery $.getJSON 方法获取数组的全局数组到 REUSE 数组

javascript - 在 Material ui 中使用 useMediaQuery?

参数化函数的 Pythonic 方式(没有 lambda)

matlab - 将参数传递给目标函数 fmincon Matlab

python - 删除 b/__init__.py 并使用不同的代码创建 b.py 后,输出不会改变?

javascript - 将选项传递给 ES6 模块导入

perl - 尝试在 Perl 中使用 Module 并在模块不可用时打印消息

javascript - 在需要时内联加载 jQuery/CSS 还是始终通过外部加载?

javascript - React 组件,为什么你的一半 props 在表单提交时未定义?