ホームページ ウェブフロントエンド jsチュートリアル React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明

React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明

Dec 28, 2017 am 11:28 AM
react-native グローバリゼーション 道具

この記事では主にReact-Nativeのグローバル言語切り替えツールライブラリreact-native-i18nの詳細な説明を紹介していますが、編集者が非常に優れていると思ったので、参考として共有させていただきます。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

プロパティ 説明
サポートRNバージョン すべてのバージョン
サポートされているプラ​​ットフォーム iOS+Android
NativeModかどうかuleは必須です はい
ですポータブル? はい
jniモジュールが含まれているかどうか いいえ

使用:

1.install (省略、すべてgitで書かれています。npmのものだけです)

2.これらは静的な属性参照であるため、保存と置換に redux を使用することも、直接使用することもできます (この記事では例として en と zh を取り上げます)。

まず、英語版の設定ファイル en/index.js をビルドします

export default {
 home: {
  greeting: 'Greeting in en',
  tab_home: 'Home',
  tab_donate: 'Donate',
  tab_demo: 'Demo',
  language: 'language',
  live_demo: 'Live Demo',
  buy_me_coffee: 'Buy me a coffee',
  gitee: 'Gitee',
  star_me: 'Star me',
  donate: 'donate',
  exit: 'exit?',
 },
 donate: {
  donate: 'donate us~~~',
  donate_desc: '© 2017 Pactera Technology International Limited. All rights reserved.',
 },
 demo: {
  dialog: 'dialog',
  button: 'button',
  switch: 'switch',
  action_sheet: 'Action Sheet',
 }
};
ログイン後にコピー

次に、中国語の zh/index.js

export default {
 home: {
  greeting: 'Greeting in zh',
  tab_home: '首页',
  tab_donate: '捐赠',
  tab_demo: '例子',
  language: '语言',
  live_demo: '例子',
  buy_me_coffee: '请我一杯coffee',
  gitee: 'Gitee',
  star_me: '关注我',
  donate: '贡献',
  exit: '是否退出?',
 },
 donate: {
  donate: '支持我们~~',
  donate_desc: '© 2017 Pactera Technology International Limited. All rights reserved.',
 },
 demo: {
  dialog: '提示框',
  button: '按钮',
  switch: '开关',
  action_sheet: '',
 }
};
ログイン後にコピー

属性名、構造は同じですが、属性が異なりますもちろん、ここには 2 つの静的ファイルがあります。シナリオでサーバーが JSON を送信できる必要がある場合、この部分は完全に動的になります。

2.1 デフォルトの言語環境

上記で 2 つの言語設定を書きましたが、初期化にはどちらが使用されますか?ビジネス層を呼び出す前に、いくつかのプリセットを作成できます

i18n/index.js

import i18n from 'react-native-i18n';
import en from './en';
import zh from './zh';

i18n.defaultLocale = 'en';
i18n.fallbacks = true;
i18n.translations = {
 en,
 zh,
};

export {i18n};
ログイン後にコピー

デフォルトのコンテキストは en で、フォールバック状態が許可されます (true の場合、順序は下方トラバーサル変換になります)。 、デフォルトで変換されるファイルは en と zh の 2 つだけですが、必要に応じて後でこれを追加することもできます。

2.2 ビジネス層の呼び出し

まず、パッケージを逆にします


「デフォルトのインデックスのディレクトリ」から {i18n} をインポートします

呼び出し (トーストを例にします)

 ToastAndroid.show(i18n.t('home.exit'),ToastAndroid.SHORT);
ログイン後にコピー

2 つの出力結果以下の通り:

React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明

React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明

ソースコード解析

このライブラリの実装は 2 つの部分に分かれており、1 つの部分はネイティブバージョン判定およびその他の機能と、js 部分 fnando/i18n のコア実装です。 -js

i18n-js は、さまざまな形式とコンテンツの変換と言語コンテンツの切り替えをサポートする軽量の js 翻訳ライブラリです。アドレスは次のとおりです: https://github.com/fnando/i18n-js

翻訳変換部分はI18nがやっているのですが、Nativeは何をするのでしょうか?調べてみましょう (Android を例に挙げます。Apple はそれを理解できません、ごめんなさい)

React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明ネイティブ コードには 2 つのクラスしかないので、ネイティブ コードを直接コピーすれば、プロジェクトは I18n に依存すると前に言いました。 .js. このエフェクト

RNI18nPackage は、通常の Package クラスであり、その機能は、メイン アプリケーションの getPackages() メソッドのリストにモジュールを追加し、それをまとめてパッケージに入れることです。

特定の関数はすべて RNI18nModule にあります

public class RNI18nModule extends ReactContextBaseJavaModule {

 public RNI18nModule(ReactApplicationContext reactContext) {
 super(reactContext);
 }
 //RN调用的控件名
 @Override
 public String getName() {
 return "RNI18n";
 }

 //对取出的Locale列表进行格式化的方法
 private String toLanguageTag(Locale locale) {
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  return locale.toLanguageTag();
 }

 StringBuilder builder = new StringBuilder();
 builder.append(locale.getLanguage());

 if (locale.getCountry() != null) {
  builder.append("-");
  builder.append(locale.getCountry());
 }

 return builder.toString();
 }

 private WritableArray getLocaleList() {
 WritableArray array = Arguments.createArray();

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  //获取区域设置列表。这是获取区域的首选方法。
  LocaleList locales = getReactApplicationContext()
   .getResources().getConfiguration().getLocales();

  for (int i = 0; i < locales.size(); i++) {
  array.pushString(this.toLanguageTag(locales.get(i)));
  }
 } else {
  array.pushString(this.toLanguageTag(getReactApplicationContext()
   .getResources().getConfiguration().locale));
 }

 return array;
 }

 //js端可获取属性的列表
 @Override
 public Map<String, Object> getConstants() {
 HashMap<String, Object> constants = new HashMap<String,Object>();
 constants.put("languages", this.getLocaleList());
 return constants;
 }

 //提供给js端调用的方法,用来获取默认的语言环境,回调方式用的是promise
 @ReactMethod
 public void getLanguages(Promise promise) {
 try {
  promise.resolve(this.getLocaleList());
 } catch (Exception e) {
  promise.reject(e);
 }
 }
}
ログイン後にコピー

ロケールで何が起こるかを確認するにはトーストを追加してください


コードをコピーしてください

コードは次のとおりです:

Toast.makeText(getReactApplicationContext(), "locales.get(i ) "+locales.get(i),Toast.LENGTH_LONG).show();



効果は以下の通りです:


React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明内部実装を調べたかったのですが、それは非パブリック クラスであることが判明しました


React-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明

概要:

まず、Native はこの電話の LocaleList を取得し、最初の要素をフォーマットして、処理のために I18n.js に送信し、次に I18n に送信します。 js はキーに基づいて有効な言語ルールのセットを選択し、その後のプロセスは次のようになります。使用順序は同じです。

ライブラリ全体の統合度は比較的低く、使用する際に大きな落とし穴はなく、reduxと組み合わせるとより便利です。


関連する推奨事項:


多言語の React-intl 実装例の詳細な説明

PHP - 自動多言語切り替えの実装

PHP - 自動多言語切り替えの実装

以上がReact-Nativeのグローバル多言語切り替えツールライブラリreact-native-i18nの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Debian Snifferの出力結果を解釈する方法 Debian Snifferの出力結果を解釈する方法 Apr 12, 2025 pm 11:00 PM

DebiansNifferは、ネットワークパケットタイムスタンプをキャプチャして分析するために使用されるネットワークスニファーツールです。通常、数秒でパケットキャプチャの時間を表示します。ソースIPアドレス(SourceIP):パケットを送信したデバイスのネットワークアドレス。宛先IPアドレス(DestinationIP):データパケットを受信するデバイスのネットワークアドレス。ソースポート:パケットを送信するデバイスで使用されるポート番号。 Destinatio

Debian OpenSSL構成を確認する方法 Debian OpenSSL構成を確認する方法 Apr 12, 2025 pm 11:57 PM

この記事では、DebianシステムのOpenSSL構成を確認して、システムのセキュリティステータスをすばやく把握できるように、いくつかの方法を紹介します。 1.最初にOpenSSLバージョンを確認し、OpenSSLがインストールされているかどうかを確認し、バージョン情報を確認します。端末に次のコマンドを入力します。OpenSSlversionがインストールされていない場合、システムはエラーを促します。 2。構成ファイルを表示します。 OpenSSLのメイン構成ファイルは、通常/etc/ssl/openssl.cnfにあります。テキストエディター(Nanoなど)を使用して、次のように表示できます。sudonano/etc/ssl/openssl.cnfこのファイルには、キー、証明書、暗号化アルゴリズムなどの重要な構成情報が含まれています。 3。OPEを利用します

Debian Tomcatログのセキュリティ設定は何ですか? Debian Tomcatログのセキュリティ設定は何ですか? Apr 12, 2025 pm 11:48 PM

DebiantomCatログのセキュリティを改善するには、次の重要なポリシーに注意する必要があります。1。許可制御とファイル管理:ログファイル許可:デフォルトのログファイル許可(640)はアクセスを制限します。 Catalina.shスクリプト(たとえば、0027から0022に変更)のUMASK値を変更するか、LOG4J2構成ファイルにFilePermissionsを直接設定して、適切な読み取り許可を確保することをお勧めします。ログファイルの場所:Tomcatログは通常、/opt/tomcat/logs(または同様のパス)にあり、このディレクトリの許可設定を定期的にチェックする必要があります。 2。ログの回転と形式:ログ回転:server.xmlを構成します

Tomcatログがメモリの漏れのトラブルシューティングに役立つ方法 Tomcatログがメモリの漏れのトラブルシューティングに役立つ方法 Apr 12, 2025 pm 11:42 PM

Tomcatログは、メモリリークの問題を診断するための鍵です。 Tomcatログを分析することにより、メモリの使用状況とガベージコレクション(GC)の動作に関する洞察を得ることができ、メモリリークを効果的に見つけて解決できます。 Tomcatログを使用してメモリリークをトラブルシューティングする方法は次のとおりです。1。GCログ分析最初に、詳細なGCロギングを有効にします。 Tomcatの起動パラメーターに次のJVMオプションを追加します:-xx:printgcdetails-xx:printgcdateStamps-xloggc:gc.logこれらのパラメーターは、GCタイプ、リサイクルオブジェクトサイズ、時間などの情報を含む詳細なGCログ(GC.log)を生成します。分析GC.LOG

Debian SnifferとWiresharkの比較 Debian SnifferとWiresharkの比較 Apr 12, 2025 pm 10:48 PM

この記事では、ネットワーク分析ツールのWiresharkとDebian Systemsの代替案について説明します。 「debiansniffer」と呼ばれる標準的なネットワーク分析ツールがないことは明らかです。 Wiresharkは業界をリードするネットワークプロトコルアナライザーであり、Debian Systemsは同様の機能を備えた他のツールを提供しています。機能的特徴の比較Wireshark:これは、リアルタイムネットワークデータキャプチャとデータパケットコンテンツの詳細な表示をサポートする強力なネットワークプロトコルアナライザーであり、ネットワークの問題の診断を促進するためのリッチなプロトコルサポート、フィルタリング、および検索機能を提供します。 Debianシステムの代替ツール:Debianシステムには、TCPDumpやTsharkなどのネットワークが含まれています

DDOS攻撃検出におけるDebianスニファーの役割 DDOS攻撃検出におけるDebianスニファーの役割 Apr 12, 2025 pm 10:42 PM

この記事では、DDOS攻撃検出方法について説明します。 「DebiansNiffer」の直接的なアプリケーションのケースは見つかりませんでしたが、次の方法はDDOS攻撃検出に使用できます:効果的なDDOS攻撃検出技術:トラフィック分析に基づく検出:突然のトラフィックの成長、特定のポートの接続の急増などのネットワークトラフィックの異常なパターンの識別。たとえば、PysharkライブラリとColoramaライブラリと組み合わせたPythonスクリプトは、ネットワークトラフィックをリアルタイムで監視し、アラートを発行できます。統計分析に基づく検出:データなどのネットワークトラフィックの統計的特性を分析することにより

Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Debian Apacheログを使用してWebサイトのパフォーマンスを向上させる方法 Apr 12, 2025 pm 11:36 PM

この記事では、Debianシステムの下でApacheログを分析することにより、Webサイトのパフォーマンスを改善する方法について説明します。 1.ログ分析の基本Apacheログは、IPアドレス、タイムスタンプ、リクエストURL、HTTPメソッド、応答コードなど、すべてのHTTP要求の詳細情報を記録します。 Debian Systemsでは、これらのログは通常、/var/log/apache2/access.logおよび/var/log/apache2/error.logディレクトリにあります。ログ構造を理解することは、効果的な分析の最初のステップです。 2。ログ分析ツールさまざまなツールを使用してApacheログを分析できます。コマンドラインツール:GREP、AWK、SED、およびその他のコマンドラインツール。

DebianのNginx SSLパフォーマンスを監視する方法 DebianのNginx SSLパフォーマンスを監視する方法 Apr 12, 2025 pm 10:18 PM

この記事では、Debianシステム上のNginxサーバーのSSLパフォーマンスを効果的に監視する方法について説明します。 Nginxexporterを使用して、NginxステータスデータをPrometheusにエクスポートし、Grafanaを介して視覚的に表示します。ステップ1:NGINXの構成最初に、NGINX構成ファイルのSTUB_STATUSモジュールを有効にして、NGINXのステータス情報を取得する必要があります。 NGINX構成ファイルに次のスニペットを追加します(通常は/etc/nginx/nginx.confにあるか、そのインクルードファイルにあります):location/nginx_status {stub_status

See all articles