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.

おお。