如何本地化 perl 包 (tar.gz)
How to localize perl package (tar.gz)
假设我有 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 的例子,但我对它不了解,无法让它工作。
感谢@Håkon:
解决方案:Dist:Zilla - 而不是 h2xs 方法。
如果使用 Debian,这些软件包是必需的:libdist-zilla-perl libdist-zilla-localetextdomain-perl libdist-zilla-plugin-localemsgfmt-perl
先从dzil init开始
$ dzil setup
接下来创建一个新包:
$ dzil new myscript
然后基本按照Dist::Zilla::LocaleTextDomain和
在要翻译的 script/module 中使用它:
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
扫描messages/strings待翻译:
$ 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/
- 太神奇了! :)
我希望其他人也会觉得这很有用。
假设我有 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 的例子,但我对它不了解,无法让它工作。
感谢@Håkon:
解决方案:Dist:Zilla - 而不是 h2xs 方法。
如果使用 Debian,这些软件包是必需的:libdist-zilla-perl libdist-zilla-localetextdomain-perl libdist-zilla-plugin-localemsgfmt-perl
先从dzil init开始
$ dzil setup
接下来创建一个新包:
$ dzil new myscript
然后基本按照Dist::Zilla::LocaleTextDomain和 在要翻译的 script/module 中使用它:
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
扫描messages/strings待翻译:
$ 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/
- 太神奇了! :)
我希望其他人也会觉得这很有用。