Rails で JavaScript 文字列を翻訳する方法

Rails I18n と JavaScript に渡すエレガントなメッセージ

「国際化」のプロセスは通常、すべての文字列およびその他のロケール固有のビット (日付や通貨形式など) をアプリケーションから抽象化することを意味します。 「ローカライズ」のプロセスは、これらのビットの翻訳とローカライズされた形式を提供することを意味します。

Ruby on Rails の I18n の仕組み

私の言語の限界は私の世界の限界です。 ‒ルートヴィヒ・ウィトゲンシュタイン。 世界には 6,909 以上の異なる言語があり、そのほとんどが非常に多くの異なる点 (複数化ルールなど) で異なるため、内部化のための特定のツールを提供するのは困難です。ただし、言語の壁が無制限であるため、Rails I18n API は以下に重点を置いています。

  • 英語および同様の言語のサポートをすぐに提供
  • 他の言語向けにすべてを簡単にカスタマイズおよび拡張できるようになります

このソリューションの一環として、 Railsフレームワーク – たとえば、Active Record 検証メッセージ、時刻と日付の形式 – は国際化されているため、 ローカリゼーション Rails アプリケーションの変更は、これらのデフォルトを「オーバーライド」することを意味します。

 1.1 図書館の全体的なアーキテクチャ

したがって、Ruby I18n gem は 2 つの部分に分割されます。

  • i18n フレームワークのパブリック API – ライブラリの動作方法を定義するパブリック メソッドを備えた Ruby モジュール
  • デフォルトのバックエンド (意図的に名前が付けられています) 単純 バックエンド)、これらのメソッドを実装する

ユーザーは常に I18n モジュールのパブリック メソッドにのみアクセスする必要がありますが、バックエンドの機能について知っておくと役に立ちます。

ここでは、JavaScript で国際化を実装する最も簡単な方法を示します。

a) スクリプトを使用する

<script type=”text/javascript”>
window.I18n = <%= I18n.backend.send(:translations).to_json.html_safe %>
</script>

b) 以下のコードを追加できます JS ファイル;

I18n[“en-US”][“アルファ”][“ようこそ”];

c) から助けを求めてください アプリケーションヘルパー 以下のメソッドを追加します。

def current_translations

@translations ||= I18n.backend.send(:translations)

@translations[I18n.locale].with_independent_access

終わり

d) バックエンドがまだ初期化されていない場合は、初期化する必要があります。

I18n.backend.initialized でない限り、I18n.backend.send(:init_translations)?

# 翻訳を安全に json にダンプできるようになりました

e) 以下を呼び出します アプリケーション.html.erb ;

<script type=”text/javascript”>

window.I18n = <%= current_translations.to_json.html_safe %>

</script>

f) JavaScript で現在のロケールを知る必要がないようにするため。

I18n[“アルファ”][“ようこそ”];または I18n α ようこそ。

g) 国際化とローカリゼーションのためのさまざまなライブラリとプラグイン:

i18ネクスト – https://github.com/i18next/i18next

I18n 宝石 – https://github.com/svenfuchs/i18n

requirejs-i18n – https://requirejs.org/docs/api.html#i18n

レールカーマ 最新のツールと技術を使用して独自のアプリケーションを構築します。チェックアウト 私たちのポートフォリオ ソフトウェア業界の形の変化に当社がどのように貢献しているかを理解するため。Ruby on Rails 開発についてさらに詳しく知るには、 今すぐご連絡ください!

ルバイブ・シージェイ
シニア Ruby on Rails 開発者

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese