Railsとの国際化
4516 ワード
Wikipediaによると、国際化(最初の「i」と最後の「n」の間の正確な18のキャラクタがあるi 18 nとしての短縮)は、それがエンジニアリング変更なしでいろいろな言語と地域に適応することができるようにソフトウェアアプリケーションを設計するプロセスです.
Railsガイドによると、「国際化」のプロセスは、通常、あなたのアプリケーションからすべてのストリングと他のロケール特有のビット(日付や通貨形式など)を抽象化することを意味します.「ローカライズ」のプロセスは、これらのビットのための翻訳とローカライズされたフォーマットを提供することを意味します.
私はアプリのレール上の反応で構築に取り組んでいた.ほとんどのページが反応して書かれていたが、いくつかのページが書かれ、レールビューからレンダリングされた.これは、バックエンドとフロントエンドの両方に翻訳を提供する方法を理解する必要があることを意味しました.
私は記事とチュートリアルを捜しました、しかし、私は私が持っていた同じ問題を解決していたものを見つけることができませんでした.私は“i 18 n ing”レールのアプリの多くのチュートリアルを発見し、いくつかのレールとJavascriptではなく、レールと反応します.
いくらかの時間を調査した後に、私は試みることに決めましたrails-i18n and i18n-js ジェム.
それらの宝石を使うことは、私が持っていた問題を解決する良い方法のようでした.
私は、私がそれをした方法を共有したいです.
まず、宝石ファイルに宝石を追加します.
で使用可能なロケールを定義する
このラインを加えてミドルウェアを追加
ラン
ラン
これを反応ファイルに加える
ロケールが日本語に設定されている場合は、次のようになります.
ご覧のように、いくつかの翻訳文字列が長くなる可能性があります😱
このポストが誰かに役立つことを願っています.
ハッピーi 18 n ing!
Railsガイドによると、「国際化」のプロセスは、通常、あなたのアプリケーションからすべてのストリングと他のロケール特有のビット(日付や通貨形式など)を抽象化することを意味します.「ローカライズ」のプロセスは、これらのビットのための翻訳とローカライズされたフォーマットを提供することを意味します.
私はアプリのレール上の反応で構築に取り組んでいた.ほとんどのページが反応して書かれていたが、いくつかのページが書かれ、レールビューからレンダリングされた.これは、バックエンドとフロントエンドの両方に翻訳を提供する方法を理解する必要があることを意味しました.
私は記事とチュートリアルを捜しました、しかし、私は私が持っていた同じ問題を解決していたものを見つけることができませんでした.私は“i 18 n ing”レールのアプリの多くのチュートリアルを発見し、いくつかのレールとJavascriptではなく、レールと反応します.
いくらかの時間を調査した後に、私は試みることに決めましたrails-i18n and i18n-js ジェム.
rails-i18n
あなたのアプリケーションを翻訳するための簡単に使用できる拡張フレームワークを提供します.i18n-js
JavaScript側でレールI 18 nトランスレーションを生成する小さなライブラリです.これは、自動的に自動的には、レール側からYMLの翻訳ファイルを使用してJavaScriptファイルを生成するミドルウェアを提供します.それらの宝石を使うことは、私が持っていた問題を解決する良い方法のようでした.
私は、私がそれをした方法を共有したいです.
まず、宝石ファイルに宝石を追加します.
gem "i18n-js"
gem "rails-i18n"
実行して宝石をインストールすることを忘れないでくださいbundle install
WebPackerを使用している場合はnpm install i18n-js
あなたが資産パイプラインを使用しているならば、チェックしてくださいthis ReadMe .で使用可能なロケールを定義する
config/application.rb
. 私の場合、英語と日本語のサポートを追加しています.config.i18n.available_locales = [:en, :ja]
Railsコンソールで利用可能なすべてのロケールを確認できます.I18n::JS.filtered_translations.keys
=> [:en, :ja]
では、英語の文字列をen.yml
.en:
hello: "Hello world"
このように柵コンソールで動作しているかどうかを確認できます.I18n.t 'hello'
=> "Hello world"
では、日本語訳を追加しましょうja.yml
.ja:
hello: "こんにちは 世界"
これは、我々が細いファイルで翻訳にアクセスする方法です.h1 = t('hello')
現在、我々はレール側で働いて、反応側で翻訳を得ることに動きましょう.このラインを加えてミドルウェアを追加
config.middleware.use I18n::JS::Middleware
to config/application.rb
. ミドルウェアはフロントエンドで翻訳ファイルを生成します.ラン
rails generate i18n:js:config
, これはconfig/i18n-js.yml
これは私の設定ですconfig/i18n-js.yml
translations:
- file: 'app/javascript/bundles/i18n/en.js'
prefix: "import I18n from 'i18n-js';\n"
pretty_print: true
only: 'en.*'
- file: 'app/javascript/bundles/i18n/ja.js'
prefix: "import I18n from 'i18n-js';\n"
pretty_print: true
only: 'ja.*'
file
はJS翻訳ファイルのパスを指定します.prefix
がオプションであるが、それなしでは"i 18 nは定義されていません"エラーが発生しました.結果の翻訳ファイルの先頭に行を追加します.pretty_print
もオプションですが、私は間違いなくこれを置くことをお勧めします.それはあなたの出力ファイルに空白と押韻を追加します.ラン
rake i18n:js:export
これは、選択したパスに翻訳ファイルを生成します.これを反応ファイルに加える
import i18n from 'i18n-js'
バックエンドにデフォルトのロケールとロケールを設定するにはviews/layouts/application.slim
- javascript_tag do
I18n.locale = I18n.locale
I18n.defaultLocale = I18n.default_locale
そして、application.rb
config.i18n.default_locale = :ja
反応側に設定するには、これをレンダリングの中に追加することができます.I18n.defaultLocale = "ja"
I18n.locale = "ja"
JAは文字列である必要があります"ja"
最後に、我々のように反応からあなたのレールの翻訳にアクセスすることができます追加します.<h2>{I18n.t('hello')}</h2>
ロケールが英語に設定されている場合は、次のようになります.ロケールが日本語に設定されている場合は、次のようになります.
ご覧のように、いくつかの翻訳文字列が長くなる可能性があります😱
このポストが誰かに役立つことを願っています.
ハッピーi 18 n ing!
Reference
この問題について(Railsとの国際化), 我々は、より多くの情報をここで見つけました https://dev.to/codingmamakaz/internationalization-with-rails-and-i18n-js-1bjbテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol