perlスクリプトを国際化したいと思ったので試してみた
#!/usr/bin/perl use strict; use warnings; use FindBin; use Locale::Maketext::Simple Style => 'gettext', Path => $FindBin::Bin; warn loc('hello');
このまま実行すると、
[danjou@guido] $ perl test.pl hello at test.pl line 7.
こうなる。
ここで、xgettext.plを実行して国際化のためのファイルをつくる。(Locale::Maketext::Lexiconを入れると一緒に/usr/bin/xgettext.plがインストールされる。)-dオプションでjaを指定して日本語用のファイルをつくる。
[danjou@guido] $ xgettext.pl -d ja test.pl [danjou@guido] $ ls ja.po test.pl
↓ファイルの中身はこんなのなので
# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: test.pl:7 msgid "hello" msgstr ""
↑これの一番下の行のmsgstr ""のところを「こんにちは」とすると↓こうなる。
[danjou@guido] $ perl test.pl こんにちは at test.pl line 7.
おお。