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 に変更する方法
OracleデータベースからエクスポートされたデータをMySqlデータベースにインポートします。 1...
目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...
書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...
MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...
目次マッピングとは何かオブジェクトとマップの違いマップの共通メソッド宣言と初期化割り当てセットキー値...
プロジェクトを作成しているときに、ユーザーがアクションを実行し、特定の状態を変更し、ページを更新して...
目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...
序文多くのサイトが、ポイントやゴールドコインなど、情報のダウンロードに料金を請求していることは誰もが...
序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...
推薦する: Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル...
この記事では、スライディングスコアリングを実装するためのuniappの具体的なコードを参考までに共有...
レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...
VMware Toolsをインストールすると、仮想マシンホスト間で①テキストをコピーして貼り付けるこ...
1. left(name,4)は左の4文字をインターセプトしますリスト: SELECT LEFT(2...
1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...