Webアプリケーションの国際化

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    Webアプリケーションの国際化 - Presentation Transcript

    1. Webアプリケーション の国際化 2007/08/09 - ウノウ株式会社 - 駒形真幸 <komagata@p0t.jp>
    2. GNU gettextを使おう
    3. GNU gettextのいいところ 多機能 ● (多過ぎて紹介しきれません・・・) 関連ツールが揃ってる ● 枯れてる ●
    4. 国際化の大体の手順 1. ソース中の文字列をgettext関数で置き 換える 2. 置き換えた部分を元にpotファイル (PO Template)を作る 3. potファイルから各言語用のpoファイル (Portable Object)にコピー・編集 4. poファイルをmoファイル (Machine Object)にコンパイル
    5. Rubyの例で説明 (他の言語でもあまり違わない)
    6. Ruby-GetTextで国際化 GNU gettextと共通のツールが使える ● (ファイルのパースはRacc) Railsをサポート ●
    7. Hello, Worldを国際化
    8. hello.rb: #!/usr/bin/env ruby require 'rubygems' require 'gettext' include GetText bindtextdomain('hello') puts _('Hello, World') # 文字列を_()関数で置き換える $ mkdir -p po/ja $ rgettext hello.rb -o po/hello.pot $ msginit -i po/hello.pot -o po/ja/hello.po -l ja msginitが言語によってpluralを設定してくれるので便利
    9. po/ja/hello.po (略) \"Plural-Forms: nplurals=1; plural=0;\\n\" #: hello.rb:8 msgid \"Hello, World\" msgstr \"こんにちは、世界\" _()関数の部分を自動的にmsgidとして抽出してくれてるので対応する文 字列をmststrに入れていく
    10. $ mkdir -p locale/ja/LC_MESSAGES $ rmsgfmt po/ja/hello.po -o locale/ja/LC_MESSAGES/hello.mo $ export GETTEXT_PATH='locale' $ ./hello.rb こんにちは、世界 rmsgfmtコマンドでpoファイルをmoファイルにコンパイルする。 $ export LANG=en_us.UTF-8 $ ./hello.rb Hello, World 環境変数の言語設定によって切り替わる。
    11. Railsアプリケーションの国際化
    12. デフォルトの状態
    13. Ruby-GetTextを利用
    14. config/environment.rb: の下の方 require 'gettext/rails' app/controller/application.rb class ApplicationController < ActionController::Base init_gettext 'rails_gettext' end
    15. Ruby-GetText自体がrailsのmoファイル を持ってるのでデフォルトのエラーメッセ ージなどがいきなり国際化
    16. アプリ固有部分も国際化
    17. lib/tasks/gettext.rake desc \"Update pot/po files.\" task :updatepo do require 'gettext/utils' GetText.update_pofiles( \"rails_gettext\", Dir.glob(\"{app,config,components,lib}/**/*.{rb,rhtml,rxml}\"), \"rails_gettext 0.0.1\" ) end desc \"Create mo-files\" task :createmo do require 'gettext/utils' GetText.create_mofiles(true, \"po\", \"locale\") end こんな感じのtaskを作っておくと楽に。
    18. Webアプリケーションの場合 言語はどうやって選ばれるのか
    19. 優先順位 1. GetText.localeの値 2. QUERY_STRINGのlangの値 3. クッキーに保持されたlangという値 4. HTTPヘッダのAccept-Language (ブラウザで設定できるアレ) ※↑優先順位高 / ↓優先順位低
    20. 国際化で言語毎にDBを分ける という選択 (ソースは共通)
    21. ユーザーは知らない言語が画面に あると使ってくれない
    22. どうやってソース共通で DBを分けるか
    23. config/environment.rb: GetText.locale = ENV['RAILS_LANG'] config/database.yml: development: adapter: sqlite3 database: db/development<%= ENV['RAILS_LANG'] %>.sqlite3 timeout: 5000 ※環境変数RAILS_LANGは勝手に作った変数です。
    24. その発想は無かったわ
    25. Apache + mod_fcgidの場合: DefaultInitEnv RAILS_LANG en mongrelなどの場合: export RAILS_LANG=en; ruby script/server
    26. 翻訳作業を簡単に 翻訳はエンジニアがやるとは限らない ● gettextによる国際化は非エンジニアには ● 辛い(覚えるのに時間もかかる) 翻訳する人が複数いる場合の管理が大 ● 変 → そこでPootle
    27. Pootle Webからpoファイルの編集、svnへのコミ ● ットが出来る ユーザー管理や言語管理もWebから出 ● 来る Python製 ● パッケージがあれば一発インスール ● (無いとインストール地獄)
    28. まとめ • gettextは歴史があり、なんだかんだ いって便利。 • poの編集はPootleがおすすめ。

    + komagatakomagata, 3 years ago

    custom

    3699 views, 2 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3699
      • 3436 on SlideShare
      • 263 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 74
    Most viewed embeds
    • 263 views on http://labs.unoh.net

    more

    All embeds
    • 263 views on http://labs.unoh.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories