以下のようなファイル構成にする。$ln
$ln->maketext('Selected Language'); の、'Selected Language' に対応して翻訳すべきところを MyProject::L10N::ja や MyProject::L10N::en に書けば、自動的に変換してくれる。
ちなみに I18N は Internationalization の I と n の間に18文字あるからだそう。L10N は? => Localization!
使用するモジュール
Locale::Maketext
注:Locale::Maketext は Perl 5.8 以降、標準で組み入れられているため、この仕組みは Perl 標準のものとなっている。
./MyProject/Test.pm
./MyProject/L10N.pm
./MyProject/L10N/ja.pm
./MyProject/L10N/en.pm
./MyProject/L10N/i_default.pm
Test.pm の内容:
package MyProject::Test;
use strict;
use MyProject::L10N;
sub new {
my $class = shift;
my $self = {};
return bless $self, $class;
}
sub output {
my $lang = shift;
my $lh = MyProject::L10N->get_handle($lang) || die "Error: L10N::$lang¥n";
print $lh->maketext('Selected Language'), "¥n";
}
ja.pm の内容
package MyProject::L10N::ja;
use strict;
use base qw(MyProject::L10N);
our %Lexicon = (
'_AUTO' => 1,
'Selected Language'=>'MyProject::L10N::ja に書いてある日本語'
);
1;
en.pm の内容
package MyProject::L10N::en;
use strict;
use base qw(MyProject::L10N);
our %Lexicon = (
'_AUTO' => 1,
'Selected Language'=>'English in L10N::en'
);
1;
en_us.pm の内容
package MyProject::L10N::en_us;
use strict;
use base qw(MyProject::L10N::en);
1;
i_default.pm の内容:
package MyProject::L10N::i_default;
use base qw(MyProject::L10N);
1;
__END__
トラックバック URL:
https://perltips.twinkle.cc/trackback/9