技術ネタや音楽ネタなんかを書き散らしていくところ。
(技術ネタは"taiyoh's memorandum"で書くことにしました)
2009-02-20
Data::Localize
Perl | |
→Data::Localize & Catalyst::Model::Data::Localize : D-7 <altijd in beweging>
ちょうど今作成中のアプリケーションでC::P::I18Nを使ってたので、試してみました。嘘つきました。テストしかしてないです><
(id:lestrratさん、ありがとうございます!)
[taiyoh@taiyoh-laptop] $ make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/01_basic...........1/2 # Failed test at t/01_basic.t line 18. Wide character in print at /media/data/perl/lib/Test/Builder.pm line 1351. # got: 'John Doeさん、こんにちは!' # expected: 'Hello, John Doe!' # Looks like you failed 1 test of 2. t/01_basic........... Dubious, test returned 1 (wstat 256, 0x100) Failed 1/2 subtests t/02_namespace.......ok t/03_gettext.........1/5 Wide character in print at t/03_gettext.t line 37. t/03_gettext.........ok t/04_auto............ok t/99_pod-coverage....skipped: Enable TEST_POD environment variable to test POD t/99_pod.............skipped: Enable TEST_POD environment variable to test POD Test Summary Report ------------------- t/01_basic (Wstat: 256 Tests: 2 Failed: 1) Failed test: 2 Non-zero exit status: 1 Files=6, Tests=17, 2 wallclock secs ( 0.02 usr 0.03 sys + 1.46 cusr 0.12 csys = 1.63 CPU) Result: FAIL Failed 1/6 test programs. 1/17 subtests failed. make: *** [test_dynamic] エラー 255
デバッグオプションをつけて、t/01_basic.tだけ走らせてみると…
[taiyoh@taiyoh-laptop] $ DATA_LOCALIZE_DEBUG=1 perl -Ilib t/01_basic.t
1..2
ok 1 - use Data::Localize;
[Data::Localize]: add_localizer_map ja -> Data::Localize::Namespace=HASH(0x2338148)
[Data::Localize]: add_localizer_map en -> Data::Localize::Namespace=HASH(0x2338148)
[Data::Localize]: add_localizer_map * -> Data::Localize::Namespace=HASH(0x2338148)
[Data::Localize]: detect_languages auto-detected 'ja'
[Data::Localize]: localize - looking up ja
[Data::Localize::Namespace]: lexicon_get - Trying Test::Data::Localize::Namespace::ja
[Data::Localize::Namespace]: lexicon_get - class already loaded
[Data::Localize::Namespace]: lexicon_get - setting Test::Data::Localize::Namespace::ja to already loaded
[Data::Localize::Namespace]: returning lexicon from Test::Data::Localize::Namespace::ja
$VAR1 = {
'Hello, stranger!' => "[_1]\x{3055}\x{3093}\x{3001}\x{3053}\x{3093}\x{306b}\x{3061}\x{306f}!"
};
[Data::Localize::Localizer]: localize_for - Hello, stranger! -> Wide character in print at lib/Data/Localize/Localizer.pm line 26.
[_1]さん、こんにちは!
Wide character in print at lib/Data/Localize/Localizer.pm line 37.
Data::Localize::Namespace=HASH(0x2338148) -> localizing '[_1]さん、こんにちは!' with (John Doe), style is maketext
not ok 2
# Failed test at t/01_basic.t line 16.
Wide character in print at /media/data/perl/lib/Test/Builder.pm line 1351.
# got: 'John Doeさん、こんにちは!'
# expected: 'Hello, John Doe!'
# Looks like you failed 1 test of 2.
ああ…、
[taiyoh@taiyoh-laptop] $ echo $LANG ja_JP.UTF-8
これのことか…orz
なので、I18N::LangTags::Detectのambient_langprefs関数内のLANG関連で一番最初にみる変数を変えてみると…
[taiyoh@taiyoh-laptop] $ LANGUAGE=en make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/01_basic...........ok t/02_namespace.......ok t/03_gettext.........1/5 Wide character in print at t/03_gettext.t line 37. t/03_gettext.........ok t/04_auto............ok t/99_pod-coverage....skipped: Enable TEST_POD environment variable to test POD t/99_pod.............skipped: Enable TEST_POD environment variable to test POD All tests successful. Files=6, Tests=17, 2 wallclock secs ( 0.04 usr 0.00 sys + 1.52 cusr 0.08 csys = 1.64 CPU) Result: PASS
この辺は、どうするのが正しいのかは分かりません。ぱっと見でパッチなんか書けない><
まあ、僕が日本語locale使ってる軟弱者だからかもしれませんが…。一番手っ取り早いのは、テストスクリプトの冒頭に
$ENV{LANGUAGE} = 'en';
を入れてしまえば解決なのか。
(追記)
もちろん
| モダンPerl入門 (CodeZine BOOKS) | |
![]() | 牧 大輔 Amazonで詳しく見る by G-Tools |
買いました!
(追記:2009-02-27)
→Data::Localizeフィックス : D-7 <altijd in beweging>
ありがとうございます><ばっちりでした!
コメントを書く
トラックバック - http://d.hatena.ne.jp/sun-basix/20090220/1235129331

