【问题标题】:react-i18next: All namespaces in one file + pass namespace in decoratorreact-i18next:一个文件中的所有命名空间+在装饰器中传递命名空间
【发布时间】:2016-11-30 18:12:41
【问题描述】:

我浏览了所有i18next documentation,但仍然对如何操作感到困惑。到目前为止,我复制了他们的示例,我有以下内容。

目录结构:

locales
->en
  ->ns1.json
  ->ns2.json
->fr
  ->ns1.json
  ->ns2.json

i18下一个配置:

i18n
  .use(XHR)
  .init({
    lng: 'en',
    fallbackLng: 'en',
    debug: false,
    interpolation: {
      escapeValue: false,
    },
  })

我像这样装饰我的组件:

@translate(['ns1'], { wait: true })

所以我有语言目录,并且每个命名空间有一个文件。每个命名空间本质上是一个视图的翻译。所以我大致有一个从命名空间到 React 组件的映射。

我想要做的是将所有这些命名空间放在 3 个文件中(因为我的所有组件都分为应用程序的 3 个部分 - 管理员、用户、通用)。这 3 个文件中的每一个都有一堆命名空间。我希望每个组件仍然有一个命名空间,所以我不仅要指定文件,还要指定 @translate 装饰器中的命名空间,这样我就不必每次都在我的翻译函数中指定它。

这可能吗?如果不是,我可以将所有命名空间放在一个文件中而不是 3 个吗?

【问题讨论】:

    标签: javascript reactjs i18next


    【解决方案1】:

    您可以向 hoc 添加更多命名空间 - 这会断言那些在渲染时加载(或在设置等待选项时等待它们)

    @translate(['ns1', 'ns2'], { wait: true })

    ns1 将是传递给 props 的 t 函数中的默认命名空间:

    t('key') -> 将在 ns1 中搜索关键字

    访问 ns2:

    t('ns2:key') -> 将在 ns2 中搜索关键字

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多