尾藤正人です。 ウノウでは海外公開を前提に事業を展開しているので、ほぼ例外なくプログラムは国際化されています。先日公開した Melovie もちゃんと国際化されていて、ブラウザの言語の設定を変えると英語で表示されます。 最近テンプレートエンジンで Smarty を使い始めたのですが、そのままでは gettext とうまく組み合わせることができないので、ウノウでは独自の仕組みを入れています。日本語だと Smarty で gettext やってる情報が全然ないので、ウノウでやっている方法を紹介したいと思います。 Smarty で gettext を使うときの一番の問題点はメッセージの抽出です。Smarty は PHP とは文法が異なるので、そのままでは xgettext を使ってメッセージを抽出することができません。PHP 側で全てのメッセージを変数に代入するというのも一つの方法ですが、やはり
実行環境: ruby 1.9.3 Rails 3.1.3 I18n Railsアプリで表示を担当するのはビューなので国際化するのは当然ビューですね。ページに表示される文字すべてが対象となります。 ページに表示される文字をざっと分類してみましょう。 DBに格納されている文字列 HTMLに直接書く単語や文章 モデルの名前や属性の名前などモデルに関連する文字列 Railsのエラーメッセージ 1. DBに格納されている文字列 DBに格納されているデータを国際化(多言語化)する場合は、各ロケールごとのデータを用意する必要があります(日本語だけなら不要です)。 シンプルな方法としては、テーブルに複数のロケール用データをカラムを増やして各ロケールのデータを格納します。 TABLEの構造 +------+----------+------------+ | id | hello_en | hello_ja
国際化に対応したDB設計で一般的に用いられる方法と、メリット・デメリットを教えて下さい。 @単純にフィールドを増やす: contents (table) -id -comment_jpn -comment_usa -comment_fra -author .. @テーブル単位で増やす: contents_jpn (table) -id -comment -author .. contents_usa (table) -id -comment -author .. @マスター言語以外をまとめる: contents (table) : master扱い -id -comment -author .. contents_i18n (table) -id -content_id : fk -locale : usa,fra.. -comment .. @全言語を並列に: contents (tab
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く