/l10n_iex

localization of IEx

Primary LanguageElixir

L10nIex

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 **