React の国際化 react-intl の使用

React の国際化 react-intl の使用

React で国際化を実現するにはどうすればよいでしょうか? react-intlプラグインは、Reactの国際化を実装するための一連のメソッドを提供します。具体的な実装は次のとおりです。

1. React環境を構築し、対応するプラグインをダウンロードする

デフォルトでは、Node.js はすでにインストールされています。インストールされていない場合は、Baidu からインストールしてください。ここでは詳細には触れません。

公式のReactスキャフォールディングを使用してReactプロジェクトを構築します。すでにReactプロジェクトがある場合は、この手順を無視できます。次に、関連する依存関係react-intlをダウンロードします。

npx 作成-React-アプリ react-intl-デモ  
npm i react-intl -S

ダウンロードが完了するまでお待ちください

プロジェクトのルートディレクトリにあるsrcフォルダを探し、その中にlocaleという新しいフォルダを作成して言語パックの設定ファイルを保存してください。ここでは中国語と英語のみが切り替わり、他の言語のその後の操作は同じです。

ここに画像の説明を挿入

次に、関連する設定ファイルを記述します

ロケールのintl.jsファイルを見つけて、関連するプラグインを導入してカプセル化し、公開します。

React をインポートし、{useContext} を 'react' から取得します。
import { IntlProvider } from 'react-intl' // react-redux の Provider と同様に、言語の国際化が必要なコンポーネントの最外層にラップされ、コンポーネントとコンポーネント内のサブコンポーネントが react-intlim によって提供される API とメソッドを使用できるようにします。port { mainContext } from '../reducer' // ここでは、useReducer を使用して、ルート ディレクトリに 1 つ作成し、言語のグローバル状態管理を制御します。import zh_CN from './cn' // 中国語パッケージimport en_US from './en' // 英語パッケージconst Inter = (props) => {
    // デフォルトの言語設定を取得します。また、これを、react 自体が提供する redux Mobx や useReducer などのグローバル状態管理と組み合わせて使用​​することもできます。const { state } = useContext(mainContext)
  const chooseLocale = (val) => { 
    _val = val || navigator.language.split('_')[0] とします
    スイッチ (_val) {
      'en'の場合:
        戻る en_US
      ケース 'zh':
        zh_CNを返す
      デフォルト:
        zh_CNを返す
    }
  }
  let locale = state.locale // ロケールを取得する
  {children} = propsとします
  // サブコンポーネントをラップして react-intl の API を共有し、多言語対応を実現します (
    <IntlProvider
      キー={ロケール}
      ロケール={ロケール}
      デフォルトロケール='zh'
      メッセージ={chooseLocale(ロケール)}
    >
      {子供たち}
    </IntlProvider>
  )
}

エクスポートデフォルトインター

翻訳元

定数zh_CN = {
    開始: '開始'、
    スイッチ: 'スイッチ'
  }
  エクスポートデフォルト zh_CN
  

ja.js より

定数 en_US = {
    開始: '開始'、
    スイッチ: 'スイッチ'
  }
  エクスポート デフォルト en_US
  

Reducer.js (src ディレクトリに新規作成)

Reactをインポートし、{useReducer}を'react'からインポートします。
定数CHANGE_LOCALE = 'CHANGE_LOCALE'

const mainContext = React.createContext()

const リデューサー = (状態、アクション) => {
  スイッチ(アクションタイプ){
    CHANGE_LOCALEの場合:
      戻り値 { ...状態、ロケール: action.locale || 'zh' }
    デフォルト:
      状態を返す
  }
}

const ContextProvider = (props) => {
  const [状態, ディスパッチ] = useReducer(reducer, {
    ロケール: 'zh'
  })
  戻る (
    <mainContext.Provider 値 = {{ state, dispatch }}>
      {props.children}
    </mainContext.Provider>
  )
}

エクスポート { リデューサー、メインコンテキスト、コンテキストプロバイダー }

3. 関連ファイルをインポートしてApp.jsで使用する

アプリ

'./App.css' をインポートします。
'./reducer' から {ContextProvider} をインポートします。
'./locale/intl' から Inter をインポートします
'./views' から View をインポートします

関数App() {
  戻る (
    <コンテキストプロバイダー>
      <インター>
        <表示 />
      </インター>
    </コンテキストプロバイダー>
  );
}
デフォルトのアプリをエクスポートします。

4番目に、新しいビューディレクトリを作成し、関連するプラグインとAPIを使用して国際化を実現します。

効果を試すためにビューに新しいindex.jsxファイルを作成します

react をインポートし、{useContext} を 'react' から取得します。
'../reducer' から { mainContext } をインポートします。
'react-intl' から { FormattedMessage } をインポートします。
 
関数インデックス() {
    const { ディスパッチ、状態 } = useContext(mainContext)
    const { ロケール } = 状態
    const changeLang = () => { // 状態の言語を変更して切り替えます。dispatch({
            タイプ: 'CHANGE_LOCALE'、
            ロケール: ロケール === 'zh' ? 'en' : 'zh'
        })
    }
    戻る (
        <div>
           <div>
            <フォーマットされたメッセージ id="開始" ></フォーマットされたメッセージ>
           </div>
           <div>
                <button onClick={changeLang} > <FormattedMessage id="switch" ></FormattedMessage></button>
           </div>
        </div>
    );
}
デフォルトのインデックスをエクスポートします。

最終ディレクトリの赤いボックスは新しく追加されたものです

ここに画像の説明を挿入

こんな感じで、簡単なReactの国際化が完了しました!
ぜひ試してみてください。プロジェクトで必要な場合は、この方法で移植することもできます。このデモはGitHubにアップロードされています。githubアドレスでクローンして自分で実行できます。

これで、React の国際化における react-intl の使用に関するこの記事は終了です。React の国際化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ReactプロジェクトにSCSSを導入する方法
  • ReactでAngularコンポーネントを導入する方法
  • ReactはコンテナコンポーネントとディスプレイコンポーネントをVueに導入します
  • React 合成イベントの説明
  • ReactのPropsの簡単な比較
  • antd+reactプロジェクトをviteに移行するためのソリューションの詳細な説明
  • Reactイベントスロットリング効果が失敗する理由と解決策
  • Amap を使用した React 実装例 (react-amap)
  • Reactの簡単な紹介

<<:  my.cnf (my.ini) 重要なパラメータの最適化設定手順

>>:  MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法

推薦する

IDEA が MySQL ポート番号占有に接続できない問題の解決方法

コマンドラインでMYSQLに正常にログインでき、NavicatもMySQLに正常に接続できますが、I...

MYSQL スロークエリとログ設定とテスト

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

mysql コマンドライン スクリプトの実行例

この記事では、例を使用して MySQL コマンドライン スクリプトの実行について説明します。ご参考ま...

WeChatアプレットの世界的な状況の詳細な説明

序文WeChat アプレットでは、App.js の globalData を中間ブリッジとして使用し...

ノード スキャフォールディングを使用してトークン検証を実装するサーバーを構築する方法

コンテンツスキャフォールディングを使用してノードプロジェクトを素早く構築するデータベースとやり取りす...

JavaScript キャンバス テトリス ゲーム

テトリスは非常に古典的な小さなゲームで、私もそれを書いてみました。しかし、できるだけ簡潔で論理的なコ...

Vue要素はテーブルの追加、削除、データの変更を実装します

この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...

Ubuntu 20.04 LTSの詳細なインストール履歴

この記事では、USB ブート ディスクの作成とシステムのインストールについて説明します。システム構成...

XHTML の珍しいが便利なタグ

Xhtml には、あまり使用されないが非常に便利なタグが多数あります。半分の労力で 2 倍の結果を達...

JS 手ぶれ補正機能の実装と使用シナリオ

目次1. 手ぶれ補正機能とは何ですか? 1. なぜ手ぶれ補正機能が必要なのでしょうか? 2. 手ぶれ...

MySQL 8.0.21 のインストール手順と問題解決

公式サイトをダウンロードまず公式ウェブサイトにアクセスしてMySQLをダウンロードしてくださいリンク...

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...

js における関数のネストとクロージャの詳細

目次1. 範囲2. 関数の戻り値3. 関数のネスト4. 終了5. クロージャの実用的応用1. 内部変...

Linux システムコマンドのメモ

この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...