Locale::Maketext::Extract::Plugin 以下にはいろいろ対応してるフォーマットがあったりする。まぁ大抵一緒なので頑張って使う必要もないけど、これらを使って .po ファイルを作らないまでも、msgid の抽出だけ行いたいという場合があったりします。そんなときは直接 LME インスタンスを作って extract_file をかけて compile すれば、とれるようになるみたいです。
use Locale::Maketext::Extract;
use Locale::Maketext::Extract::Plugin::Xslate;
use File::Zglob;
my $lme = Locale::Maketext::Extract->new(
plugins => {
perl => [ 'pm' ],
xslate => {
syntax => 'TTerse',
extensions => [qw/ tt /],
},
generic => [ 'js' ]
},
warnings => 1,
verbose => 0,
);
for (zglob('lib/**/*.pm'), zglob('template/**/*.tt'), zglob('static/**/*.js')) {
$lme->extract_file($_);
}
$lme->compile(1); # これをしないと msgids がとれない
for my $msgid ($lme->msgids) {
say $msgid;
$lme->msg_positions($msgid); # 見つかった場所がとれる
}