IExのローカライズドキュメントフォールバックパッケージです。このパッケー ジはExgettextパッケージのサンプルとして開発されています。
$ mix deps.compile
$ mix compile
現在の最新のバージョンのelixirパッケージをダウンロードおよび
ビルドしていきます。バージョン固定したい場合は、mix.exsの
depsの中などにtagを入れるなど工夫して固定してください。
HTMLドキュメント生成
====================
コンパイルされたら、通常のex_docプロジェクトと同様に、
mix docsでHTMLドキュメントの生成がされます。
```$ mix docs
Docs successfully generated.
View them at "doc/index.html".
この後、doc/index.htmlをブラウザで開くと翻訳された
リファレンスを参照できます。
iexからのhコマンド利用
======================
iexでmixプロジェクト付で起動すると、翻訳リソースを
読み込んでくれます。以下のようにして、本物のhコマンドと
Exgettextのhコマンドを入れ替えます。
$ iex -S mix
iex(1)> import Exgettext.Helper, [only: [h: 0, h: 1]]
nil
iex(2)> import IEx.Helpers, [except: [h: 0, h: 1]]
nil
iex(3)> h
* IEx.Helpers
インタラクティブElixirへようこそ。あなたは現在Elixirシェルをもっと楽し
くするために提供された沢山のヘルパーモジュールである`IEx.Helpers`モジュー
ルのドキュメントを参照しています。
このメッセージは通常`h/0`(これは引数の数が0個ということを示しています)
として参照されるヘルパー`h()`により起動され、表示されています。
他に沢山のヘルパーが有効です:
....
動作確認ではなく、実際に使用するときにはExgettextとL10nIexのライブラリ
をElixirのライブラリディレクトリなどに配置しておきます。
翻訳
======
このパッケージはExgettextを通じて間接的にGNU gettextフレームワークを利
用しています。したがって着本的なワークフローはgettextと同様ですが、作業
を単純化するためにmixタスクが提供されています。mixタスクはgettextユーティ
ティに`l10n.`を前置したものになります。
翻訳対象テキストの拾い出し l10n.xgettext --iex path
----------------------------------------------------
以下のようにappを指定してl10n.xgettextタスクを呼び出すとそのappの
@moduledocと@docを拾い出してpotファイルを作成します。
```mix l10n.xgettext --app source-of-app
source-of-appとして`app`のソースファイルへのパスを指定します。
これでpotファイルのリファレンスが相対パスになります。
potファイルはpriv/po/にl10n_iex.potという名前で作成されます。
(これにmsginitコマンドを実行することで言語.poが作成されます)
poファイルの作成 l10n.msginit
----------------------------------------------------
@docや@moduledocなどはソースファイル単位で.poファイルを
作成するため、新しいソースファイルがあったら、これを実行して
初期の.poファイルを生成しておきます。
既存翻訳テキストとのマージ l10n.msgmerge
-----------------------------------------------------
potファイルとpoファイルをマージして新しいバージョンのIEx用のpoファイル
を作成できます。以下のようにl10n.msgmergeタスクを呼び出すとマージ結果と
して言語.pox(poxファイル)ファイルが作成されます。
poxファイルを手動でリネームしてpoファイルを作成します。直接上書きしない
のは人間による確認が必要だからです(GNU gettextでのワークフローでも
そうなっていることが多いです)。
poファイルに対して、emacsのpoモードなどを活用して翻訳していきます。
翻訳は全て行う必要はなく、msgid単位に完結していればその分だけ翻訳テキス
トとして扱われます。その他のテキストは翻訳されずに出力されます。したがっ
てちょっとずつ翻訳していけばいいです。
IExがバージョンアップされたときなどはmsgmergeで既存のメッセージとマージ
することで、再翻訳の手間を少くすることができます。
翻訳テキストのコンパイル l10n.msgfmt
---------------------------------------------
poファイルはコンパイルが必要で、これを行うのがl10n.msgfmtタスクです。こ
の処理はGNU gettextユーティリティとはことなり、Exgettext独自のファイル
フォーマットになります。
拡張子exmoでpriv/lang/[言語]/に配置されます。
翻訳テキストのIExでの利用
----------------------------------------------
IExでl10n_iexのパスを通しておき、import Exgettext.Helper, [only:
[h: 1, h: 0]]; import IEx.Helpers, [except: [h: 1, h: 0]] を実行すると、
hコマンドが置き換えられ、環境変数LANGに応じた翻訳テキストを表示するよう
になります。
** TODO: Add description **