现在网站经常需要被来自世界不同地区的人访问。如果为每个地区的人单独建一个网站,会非常费时费力,所以最好的解决办法是根据用户的访问情况来翻译网站的内容。这种翻译一般是通过从数据库中获取对应的语言内容来替换页面内容。在react中,其实已经有人封装了一个多语言的扩展库。我们只需要安装它就可以在我们的react项目中实现网站的多语言切换。下面我们简单介绍一下使用方法。首先我们需要通过npm等包管理工具进行安装。npminstalli18nextreact-i18next@latest然后,我们创建一个i18n.js配置文件,它配置了多种语言。importi18nfrom'i18next';import{initReactI18next}from'react-i18next';i18n.use(initReactI18next).init({debug:true,fallbackLng:'en',interpolation:{escapeValue:false,//不需要reactasitescapebydefault},//语言资源resources:{en:{translation:{welcome:"WelcometoReact"}},zh:{translation:{welcome:"WelcometoReact"}},}});导出默认i18n;在这里,resources属性配置了每种语言对应的翻译。通常,我们从数据库中获取数据。这里为了演示,我们直接写在配置文件中。接下来,我们介绍如何在项目中使用它。从“react-i18next”导入{useTranslation};constlngs=[{code:"en",native:"English"},{code:"zh",native:"Chinese"},];exportdefaultfunctionApp(){const{t,i18n}=useTranslation();consthandleTrans=(code)=>{i18n.更改语言(代码);};return({t("welcome")}
{lngs.map((lng,i)=>{const{code,native}=lng;returnhandleTrans(code)}>{native};})}
);}这里我们放两个按钮,一个是中文的,一个是中文的是英文,点击Chinese显示中文内容,点击English显示英文内容,这里我们主要通过调用i18n.changeLanguage函数实现对应语言的转换。我们需要翻译的短语由t函数包装。对于用户语言的识别,我们主要可以通过以下几种方式进行识别。cookielocalStoragenavigatorquerystring(append?lng=LANGUAGEtoURL)htmlTagpathsubdomaini18next支持这些方法,但需要先安装。npminstalli18next-browser-languagedetector--save用法如下:importi18nfrom"i18next";importdetectorfrom"i18next-browser-languagedetector";import{reactI18nextModule}from"react-i18next";importtranslationENfrom'../public/locales/en/translation.json';importtranslationDEfrom'../public/locales/de/translation.json';//翻译constresources={en:{translation:translationEN},de:{translation:translationDE}};i18n.use(detector).use(reactI18nextModule)//将i18n向下传递给react-i18next.init({resources,fallbackLng:"en",//如果检测到的lng不可用则使用enkeySeparator:false,//我们不在表单消息中使用键。欢迎插值:{escapeValue:false//reactalreadysafesfromxss}});导出默认i18n;i18next此外还支持热更新和SSR,同时还提供Trans组件,让你轻松融入项目。总之,i18next是一款非常不错的多语言建站插件。更多使用方法和介绍可以参考官网。