Ruby の国際化

国際化の話、第 4 弾として Ruby の国際化について書いてみたいと思います。

Version 1.9 で多言語化が行われた Ruby ですが、 メッセージの切り替えの国際化 に関しては言語の機能として持っていませんし、標準で添付されるようなライブラリもありません。

また、 ruby のライブラリが集まっている RAA をみても GetText のラッパーはあるのですが、 クロスプラットホームで動作しませんし、私は GetText はリソースの分離ができないため、あまりいい国際化ライブラリではない と思っています。

しかし、 RoR に関しては、標準の国際化ライブラリがあります。
Rails も昔は GetText を使っていたのですが、最近は i18n というリソースの分離もできる pure ruby な国際化ライブラリがあり、 Rails アプリは簡単に国際化できるようになっています。
Rails の国際化のやり方は メッセージファイルとして YAML を使い、そこで定義したキーから、メッセージを取得するという方式です。
きちんと国際化できて、非常に助かるのですが、不満な点も若干あります。
  • メッセージファイルが見つからない場合に英語メッセージで表示されない
    • 翻訳できませんという英語のメッセージが代わりに入る
  • ファイル名に言語名(ja など)をつけているのに、 yaml ファイル内でも言語名を指定する必要がある
    • とりあえず、英語のメッセージを表示しようと en.yml を ja.yml としてコピーした後、ファイルの中も修正しないといけない
  • ライブラリというよりも Rails の問題かもしれませんが、メッセージファイルが UTF-8 しか使用できない。
    • Ruby がせっかく多言語化していても、 UTF-8 で文字コードを統一していると結局、漢字の区別ができない
ちなみに C++ の場合は翻訳ファイルが見つからない場合は、英語のメッセージが表示される仕組みを持ったものが多いです。

i18n は Rails 用なので、通常の Ruby アプリでは使用することが出来ません。
i18n のような Ruby でも使える国際化ライブラリはないかなと思っていたら、 R18n というものがありました。

R18n はキーに対応するメッセージがあるかチェックするメソッドもあるみたいですし、メッセージファイルがなければ英語を表示するというように出来そうです。また、まだ細かく見ていませんが、 i18n の残りの 2 つの点も回避できそうな気がします。

まだ、デフォルトで日本語をサポートしていないという問題がありますが、 これから Ruby アプリを作るときはこのライブラリを試してみようかなと思います。

関連記事
スポンサーサイト



Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
23位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
7位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

05月 | 2023年06月 | 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。