Next: , Previous: , Up: Perl   [Contents][Index]


15.5.18.3 ハッシュキーを抽出する方法

通常の実行時のメッセージ翻訳は、翻訳が格納されたデータベースから元の文字列を検索して、、翻訳された文字列を戻します。これを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を使っていない限り、認められません。