我们说myscript.tar.gz
包含h2xs -AX myscript
和bin/myScript.pl
生成的lib/MyPackage/MyModule.pm
包。手动编辑Makefile.PL
和MANIFEST
,以便我能够安装软件包并运行myScript.pl
。
myscript.pl:
#!/usr/bin/perl
use strict;
use warnings;
use MyPackage::MyModule;
my $generator = MyPackage::MyModule->new();
my $value = $generator->getValue();
#And the message to be translated/localized
print "Obtained value was $value";
如何本地化我的包裹?
我读到了这个:How can I add internationalization to my Perl script?等等,但它有点过时了。我也尝试过来自libintrl-perl的例子,但我并不是明智的,也无法让它发挥作用。
答案 0 :(得分:1)
感谢@Håkon:
如果使用Debian,这些软件包是必需的:libdist-zilla-perl libdist-zilla-localetextdomain-perl libdist-zilla-plugin-localemsgfmt-perl
首先从dzil init开始
$ dzil setup
接下来创建一个新包:
$ dzil new myscript
然后基本上跟随Dist::Zilla::LocaleTextDomain和 在脚本/模块中使用它来翻译:
use Locale::TextDomain "myscript";
#and format strings like this:
print __ "Obtaining value...";
print __x("Obtained value was {value}", value => $value);
将其添加到dist.ini
:
[LocaleTextDomain]
textdomain = myscript
扫描要翻译的消息/字符串:
$ dzil msg-scan
初始化语言翻译文件:
$ dzil msg-init en us ...
翻译*.po
目录
po/
个文件
可能测试:
$ dzil msg-compile po/en.po
$ LANGUAGE=en perl -Ilib -CAS -I. bin/myScript.pl
并在
之后删除语言测试目录$ rm LocaleData/ -r
现在只需创建包:
$dzil release
享受美丽的.tar.gz套餐。 在发布过程中,Dist :: Zilla提供将模块上传到PAUSE,但默认为不上传(仍在计算如何阻止该优惠)。
它实际上更方便 - 没有包含文件的MANIFEST只是把它们扔到lib/
和bin/
- 这太神奇了! :)
我希望其他人也能找到这个有用的东西。