Locale::Maketext::Simple, Decode => 1 しても utf8 strings にならない
use strict; use warnings; use utf8;
use Locale::Maketext::Simple(
Path => 'lib/MyApp/I18N',
Decode => 1,
);
loc_lang('ja');
my $foo = loc('foobar');
if (utf8::is_utf8($foo)) {
print "utf8\n";
}
else {
print "bytes\n";
}
で、bytesに。
あーなんでだーー。
と思ったら、poファイルの先頭に
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
とかかいたら utf8 になった。
これは、なに。
perl-debug
とか言うパッケージがあったのか!!!!>Debian
いままでソースからわざわざ別の場所に入れてたよー。あー。
Catalyst::Plugin::Firebug
とか言うのを書いた。
ロードしておくとDebugモードのときに出力htmlに自動でFirebug liteのコードが埋め込まれるというやつ。
でも激しくDISられたので、ActionClassにしてリリースしなおす予定。うう><
あけましておめでとうございます!
今年初良いことは、DBICのinflate_result
上書きによるサブクラス化を知ったことです!
うおおやっべぇ便利すぎる。
詳しくは
DBIx::Class::Manual::Cookbook - Miscellaneous recipes - search.cpan.org
参照のこと。
知らなかったなぁ。いつから使えたのか。
もしかして typo? 機能
typoというか、
$c->redirect
とか
$c->uri_with
とか間違えて使って実行してエラーになってからあぁって思って気づくの、うぜぇええ。
書いてるときにリアルタイムに
もしかして: $c->req->uri_with ?
みたいにおしえてほしい><
BindLex
使い始めると、なしではめんどくてやってられなくなっちゃうなぁ。。うーむ。
--keeperr カワユス
いままでlightyのはく微妙にみにくいstderrで開発してたけど、最近myapp_fastcgi.plに追加されたkeeperrに以降。
見やすいな、やっぱw
ダサい解決法
package MyProvider;
use base qw/Template::Provider/;
sub _load {
my ($data, $error) = shift->SUPER::_load(@_);
if ($data && $data->{text}) {
$data->{text} =~ s/(\[%[ ]+INCLUDE[ ]+["'])(.+)(["'].*?%\])/$1common:$2$3/;
}
($data, $error);
}
とかいう適当なProviderをつくってcommon側はこれを指定したら動いた。け、ど、だせえええええ。
パッケージ化するかなぁ。
ダサいのでもっとうまい方法でやりたいんだけど。
MultiProviderの話
これ、 [% INCLUDE 'common:foo.tt' %]
とかしたとき、さらに foo.tt の中で [% INCLUDE 'bar.tt' %]
とすると common:bar.tt
がインクルードされてほしいのだけどそうはならないのがびみょい。
これ用の Template::Context 作ればいいきがするけど、Templateのソース読むのだるぃ。。
複数のアプリで共通のテンプレートファイルを使う
にはどうしたらいいのかなーとおもってTemplateのdocを眺めていたら
my $tt = Template->new({
LOAD_TEMPLATES => [
Template::Provider->new( INCLUDE_PATH => '/path/to/myapp/templates' ),
Template::Provider->new( INCLUDE_PATH => '/path/to/common/templates' ),
],
PREFIX_MAP => {
default => 0,
common => 1,
},
});
こんな感じでやれば、
[% INCLUDE 'common:header.tt' %]
ってやれば2個目のProviderが使われるようだ。なるほど。
0とか1とかはLOAD_TEMPLATESの配列の添え字を渡すみたい。。
ちなみにTemplate::FAQにのってる。