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の国際化が完了しました! これで、React の国際化における react-intl の使用に関するこの記事は終了です。React の国際化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: my.cnf (my.ini) 重要なパラメータの最適化設定手順
>>: MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法
WeChat アプレットのスクロール ビューでは、プルアップして読み込むときにバグが多く発生します...
この記事では、参考までにMYSQLログとバックアップとリストアについて紹介します。具体的な内容は以下...
HTML ページでは、div 内のコンテンツが制限を超えた後に自動的にスクロール バーを表示する必要...
textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...
すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...
序文プロジェクト開発では、アイコンを使用する方法はたくさんあります。iconfont で適切なアイコ...
フォームの送信方法をまとめると次のようになります。 1. 送信ボタンを使用して送信します。送信ボタン...
この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...
1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...
この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...
目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...
Linux のufw (Uncomplicated Firewall) を見て、ファイアウォールに変...
ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...
エラーメッセージ:エラー 2002: ソケット '/tmp/mysql.sock' ...
http1.1 プロトコルのデフォルトのリクエスト ヘッダーでは、図に示すように、デフォルトで ke...