React 国際化 react-i18next の詳細な説明

React 国際化 react-i18next の詳細な説明

ここに画像の説明を挿入

導入

react-i18next は、 i18nextをベースにした強力な国際化フレームワークです。 reactおよびreact-nativeアプリケーションで使用できます。 現在、非常に主流の国際化ソリューションです。

i18nextには次の利点があります。

  • i18next をベースにしているので react に限らず、一度学んで他の場所でも使えます。
  • hoc、フック、クラスのシナリオで国際化のための複数のコンポーネントを提供します
  • サーバーサイドレンダリングに適しています
  • 2011 年に開始された長い歴史があり、ほとんどのフロントエンド フレームワークよりも古いものです。
  • 長い歴史があるため、より成熟しており、i18next が解決できない国際化の問題はありません。
  • 多くのプラグインがサポートされており、例えば、プラグインを使用して現在のシステムのロケールを検出し、サーバーまたはファイルシステムから翻訳リソースを読み込むことができます。

インストール

i18nextreact-i18next両方の依存関係をインストールする必要があります。

npm install react-i18next i18next --save
または
yarn add react-i18next i18next --save


構成

国際化関連の設定を保存するために、 srcの下に新しいi18nフォルダを作成します。

i18nに 3 つの新しいファイルを作成します。

  • config.ts : i18n を初期化し、プラグインを構成する
  • en.json : 英語言語設定ファイル
  • zh.json : 中国語言語設定ファイル

ここに画像の説明を挿入

ja.js で

{
    「ヘッダー」: {
        "登録":"登録",
        "signin":"サインイン",
        "ホーム": "ホーム"
    },
    「フッター」: {
        「詳細」: 「React のすべての権利は留保されています」
    },
    "家": {
        "hot_recommended": "ホットなおすすめ",
        "new_arrival": "新着",
        "joint_venture": "ジョイントベンチャー"
    }
}

.js は、

{
    「ヘッダー」: {
        "登録":"登録",
        "signin":"ログイン",
        "ホーム": "ホーム"
    },
    「フッター」: {
        「詳細」: 「著作権 @ React」
    },
    "家": {
        "hot_recommended": "ホットなおすすめ",
        "new_arrival": "新着",
        "joint_venture": "ジョイントベンチャー"
    }
}

config.ts

'i18next' から i18n をインポートします。
'react-i18next' から { initReactI18next } をインポートします。

'./en.json' から translation_en をインポートします。
'./zh.json' から translation_zh をインポートします。

定数リソース = {
    ja: 翻訳:
        翻訳: translation_en,
    },
    ja: {
        翻訳: translation_zh,
    },
};

i18n.use(initReactI18next).init({
    リソース、
    長さ: 'zh',
    補間:
        エスケープ値: false、
    },
});

デフォルトの i18n をエクスポートします。

使用

参照プロファイル

index.tsx内のi18n構成ファイルを参照します: import './i18n/config';

'react' から React をインポートします。
'react-dom' から ReactDOM をインポートします。
'./index.css' をインポートします。
'./App' から App をインポートします。
import './i18n/config'; // 設定ファイルを参照 ReactDOM.render(
    <React.StrictMode>
        <アプリ />
    </React.StrictMode>,
    ドキュメント.getElementById('ルート')
);

コンポーネントでの使用

方法1

クラスコンポーネントwithTranslation高階関数(HOC)を使用して、言語構成のデータ注入を完了します。

'react' から React をインポートします。
'./Home.module.css' からスタイルをインポートします。

//HOC高階関数withTranslationとi18n ts型定義WithTranslationを導入する 
「react-i18next」から{withTranslation, WithTranslation}をインポートします。

クラス HomeComponent は React.Component<WithTranslation> を拡張します {
    与える() {
        定数 t は、 this.props に代入されます。
        戻る <>
           <h1>{t('header.home')}</h1>
           <ul>
               <li>{t('home.hot_recommended')}</li>
               <li>{t('home.new_arrival')}</li>
               <li>{t('home.joint_venture')}</li>
           </ul>
        </>
    }
}

export const Home = withTranslation()(HomeComponent); // withTranslation高階関数を使用して言語設定のデータ注入を完了します

方法2

関数コンポーネントuseTranslationフックを使用して国際化を処理する

'react' から React をインポートします。
'react-i18next' から {useTranslation, Trans} をインポートします。

エクスポートconstホーム: React.FC = () => {
    const { t } = useTranslation()
    戻る (
		<div>
			<h1>{t('header.home')}</h1>
			<ul>
				<li>{t('home.hot_recommended')}</li>
				もう一つの方法があります */
				<li><Trans>home.new_arrival</Trans></li>
			</ul>
		</div>    
    );
};

言語を切り替える

'i18next' から i18n をインポートします。

定数changeLanguage= (val) => {
	i18n.changeLanguage(val); // valパラメータの値は'en'または'zh'です
};

または

'react' から React をインポートします。
'react-i18next' から {useTranslation} をインポートします。

エクスポートconstホーム: React.FC = () => {
    const { t, i18n } = useTranslation()
    戻る (
		<button onClick={()=>i18n.changeLanguage(i18n.language=='en'?'zh':'en')}>{i18n.language=='en'?'zh':'en'}</button>
    );
};

React 国際化 react-i18next に関するこの記事はこれで終わりです。React 国際化 react-i18next に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • react-intlはReactの国際化と多言語化メソッドを実装します
  • reactの国際化のためのプラグインであるreact-i18n-autoの使い方の詳細な説明
  • React 国際化実装コード例

<<:  純粋なCSSで立体的な画像配置効果を実現するサンプルコード

>>:  Nginx+tomcat ロードバランシングクラスタの実装方法

推薦する

モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)

1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...

MySQL で 1000 万件のレコードをすばやくクエリする方法

目次通常のページングクエリ最適化する方法大きなオフセット使用ID制限大量データ問題の最適化通常のペー...

複数の Docker コンテナが同じポート番号を持たない場合の解決策

背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...

CSS を使用して物流の進行状況のスタイルを実装するためのサンプルコード

効果: CSS スタイル: <スタイル タイプ="text/css">...

HTML ドロップダウン ボックスの SELECT オプションを変更する複数の方法

フォームが送信されると、返された HTML ページが再レンダリングされ、SELECT コントロールの...

Keras を使って SQL インジェクション攻撃を判断する (例の説明)

この記事では、ディープラーニングフレームワーク keras を使用して、SQL インジェクションの特...

クールなネオンライト効果を実現する純粋な CSS (デモ付き)

私は最近、YouTube の CSS アニメーション効果チュートリアル シリーズをフォローしています...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

JavaScriptのプロトタイプオブジェクトを徹底的に理解しましょう

目次1. プロトタイプとは何ですか? 1.1 関数プロトタイプオブジェクト1.2 コンストラクタを使...

Zabbix カスタム監視 nginx ステータス実装プロセス

目次Zabbix カスタム監視 nginx ステータス1. ステータスインターフェースを開く2. 監...

ユーザーエクスペリエンスの要素またはWebデザインの要素

システムとユーザー環境の設計<br />Apple システムの成功は、そのシステム アー...

Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明

この記事では、Docker で構築された Laravel および Vue プロジェクトの開発環境を紹...

VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

VMware仮想マシンでのCentos7ブリッジネットワーク構成の完全な手順は参考用です。具体的な内...

Dockerイメージの作成、アップロード、プル、デプロイを理解するための記事

目次1. 画像1. 鏡とは何ですか? 2. 画像の構成と目的(1) Dockerファイル(2)スクラ...

Easyswoole ワンクリック インストール スクリプトとパゴダ インストール エラー

よくある質問easyswoole を初めて使用する場合は、次のような問題に遭遇することがよくあります...