具有'i18next'文件夹和文件结构的React项目

时间:2019-10-29 22:53:31

标签: javascript reactjs i18next react-i18next

我们在React项目中使用“ i18next”库来实现多个国家/地区的本地化。 但是,如何有效地划分翻译以及将其加载到客户端的最佳方法是一个问题。

我们的项目是CRM,旨在供不同类型的用户使用,例如:管理员,经理,工作人员等。

我们的技术栈是:React + C#+ SQL DB

此外,我们已经定义我们只想对“按钮文本”重复使用翻译,所有其他翻译文本将被视为唯一且永远不会重复使用。

当前,我们有一个文件夹结构,其中每个翻译文件都是针对“用户类型” +“语言环境”组合生成的,例如:“ Worker_Sweden”,“ Admin_Finland”等。我尚未实现切换文件的逻辑根据用户类型。

  1. 保持这种想法,保持这种结构有意义吗?
  2. 什么是存储JSON转换文件的好方法?

我在这里看到三个选项:

1)例如,只需将其保留在“ ./assests/translations/en/common.json”中即可。

2)使用“ i18next-xhr-backend”之类的i18next插件吗?但是我找不到有关此库用法的任何详细文档。

3)将翻译文件加载到某些CDN并在检测到语言环境和用户类型之后将其从其中拉出吗?

import i18next from 'i18next';
import { initReactI18next } from "react-i18next";
import common_en from './assets/translations/en/common.json'
import common_no from './assets/translations/no/common.json'
import common_sv from './assets/translations/sv/common.json'
import common_da from './assets/translations/da/common.json'
import common_fi from './assets/translations/fi/common.json'

i18next
  .use(initReactI18next) // passes i18n down to react-i18next
  .init({
    resources: {
        'en': {
          common: common_en
        },
        'sv': {
            common: common_sv
        },
        'no': {
            common: common_no
        },
        'da': {
            common: common_da
        },
        'fi': {
            common: common_fi
        }
      },
      react: {
        wait: false,
        bindI18n: 'languageChanged loaded',
        bindStore: 'added removed',
        nsMode: 'default'
      },
      lng: "en",
      fallbackLng: "en",
      interpolation: {
        escapeValue: false
      }
  });

本地化过程对我来说是新事物,任何建议将不胜感激。

0 个答案:

没有答案