我们在React项目中使用“ i18next”库来实现多个国家/地区的本地化。 但是,如何有效地划分翻译以及将其加载到客户端的最佳方法是一个问题。
我们的项目是CRM,旨在供不同类型的用户使用,例如:管理员,经理,工作人员等。
我们的技术栈是:React + C#+ SQL DB
此外,我们已经定义我们只想对“按钮文本”重复使用翻译,所有其他翻译文本将被视为唯一且永远不会重复使用。
当前,我们有一个文件夹结构,其中每个翻译文件都是针对“用户类型” +“语言环境”组合生成的,例如:“ Worker_Sweden”,“ Admin_Finland”等。我尚未实现切换文件的逻辑根据用户类型。
我在这里看到三个选项:
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
}
});
本地化过程对我来说是新事物,任何建议将不胜感激。