Perl の国際化対応: Locale::Maketext

以下のようなファイル構成にする。$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