使用React和i18next来实现多语言翻译

总结

本文介绍了在使用React构建的全球部署的Web应用程序中实现多语言支持的方法。具体而言,将使用名为i18next的库来添加多语言支持功能。

创建React项目并安装所需的软件包。

首先,创建一个React项目并安装所需的包。运行以下命令。

npx create-react-app react-i18next-sample

接下来,我们将安装与i18next相关的软件包。

npm i i18next react-i18next i18next-browser-languagedetector

将英语翻译成日语

首先,使用i18next设置从英语到日语的翻译。为此,请编辑以下文件。

我們將在這個檔案中初始化i18next和相關套件,並設定將英文翻譯成日文的資源。

import i18next from 'i18next';
import { initReactI18next } from 'react-i18next';
import languageDetector from 'i18next-browser-languagedetector';

i18next
    .use(initReactI18next)
    .use(languageDetector)
    .init({
        debug: true,
        fallbackLng: 'en',
        resources: {
            en: {
                translation: {
                    learn: 'Learn React',
                }
            }
        }
    });

在这个文件中,我们将引入 i18n.js。

import './i18n';

在这个文件中,我们会从 i18n 中获取翻译函数,并在组件中使用它。

import { useTranslation } from 'react-i18next';

function App() {
  const { t } = useTranslation();
  return (
    <div className="App">
      <header className="App-header">
        {/* ... */}
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          {t('learn')}
        </a>
      </header>
    </div>
  );
}

export default App;
}

使用i18nKey将description的内容翻译成中文。

然后,通过使用i18nKey来翻译描述,在组件内部进行操作。首先,将以下代码添加到src/App.js文件中。

import { useTranslation, Trans } from 'react-i18next';

<Trans i18nKey="description">
    how to use i18next
</Trans>

此外,您需要将src/i18n.js文件的内容更改如下。

resources: {
    en: {
        translation: {
            learn: 'Learn React',
            description: 'how to use i18next',
        },
    },
},

创建语言切换按钮

最后,创建一个语言切换按钮。这样,用户就可以切换语言。在src/App.js文件中添加以下代码。

const lngs = {
    en: { nativeName: 'English' },
    ja: { nativeName: 'Japanese' },
};

const { t, i18n } = useTranslation();

<div>
    {Object.keys(lngs).map((lng) => (
        <button
            type="submit"
            key={lng}
            onClick={() => i18n.changeLanguage(lng)}
            disabled={i18n.resolvedLanguage === lng}
        >
            {lngs[lng].nativeName}
        </button>
    ))}
</div>

此外,将以下内容添加到src/i18n.js文件中。

ja: {
    translation: {
        learn: 'Reactを学ぶ',
        description: 'i18nextの使い方',
    },
},

概括

使用React和i18next,您已经准备好实现多语言翻译了。通过在i18n.js文件中添加翻译资源,并创建语言切换按钮,您可以构建支持多语言的React应用。用户可以轻松切换语言,并实现应用程序的多语言支持。

bannerAds