Next: Quote-like Expressions, Previous: Default Keywords, Up: Perl [Contents][Index]
通常の実行時のメッセージ翻訳は、翻訳が格納されたデータベースから元の文字列を検索して、、翻訳された文字列を戻します。これをPerlで実装する“自然な”方法は、ハッシュのルックアップで、もちろんxgettext
もこのような実装をサポートしています。
print __"Hello world!"; print $__{"Hello world!"}; print $__->{"Hello world!"}; print $$__{"Hello world!"};
上の4つの行は、すべて同じことを行います。PerlのLocale::TextDomain
モジュールは、関数__()
にtiedされたハッシュ%__
をデフォルトでエクスポートします。また、このモジュールは%__
にたいするリファレンス$__
もエクスポートします。
xgettext
に--keyword
(または-k
)オプションを指定したときに、その引数の1文字目がパーセント記号(%)の場合、残りの部分のキーワードはハッシュの名前として解釈されます。引数の1文字目がダラー記号($)の場合、残りの部分のキーワードはハッシュにたいするリファレンスとして解釈されます。
Perlのコードとして許容できるなら(大抵の場合は問題ないはずです)、ハッシュキーを囲むシングルクォーテーション(またはダブルクォーテーション)は省略できることに注意してください:
print $gettext{Error};
ルールを正確にいうと: ハッシュキーが有効なCの識別子(!)の場合(例:
識別子の1文字目がアンダースコアーまたはASCII文字で、その後ろに任意の個数のアンダースコアー、または半角英数が続くような識別子)、その識別子を囲むクォート記号を省略できます。その他のUnicode文字は、use
utf8
pragmaを使っていない限り、認められません。