引き続きCatalystでごにょごにょしてるんですが、(NanoAにもそろそろ戻りたい気もしてきた) hidekさんの http://blog.hide-k.net/archives/2009/01/catalyst_4.php を参考にしつつ、C::P::FV::S::Autoでフォームの検証をしようとしてエラーメッセージに日本語を書いたら化けた。ほんでtypesterさんに聞いてみたら先に$c->config->{validator}->{profiles}を作っとけばC::P::FV::S::Autoで作らないので、profiles.ymlをロードするプラグインを先にさせば解決できるよ、とのことでした。 MyApp.pmで↓

use Catalyst qw(
....
                FormValidator::Simple

                +MyApp::Util::ProfileLoader
                FormValidator::Simple::Auto
                );

こんな感じにして、MyApp::Util::ProfileLoaderを書いて

package MyApp::Util::ProfileLoader;
use strict;
use YAML;
use Encode;

sub setup {    my $c = shift;
    my $config = $c->config->{validator};

    Catalyst::Exception->throw( message =>
          __PACKAGE__ . qq/: You need to load "Catalyst::Plugin::FormValidator::Simple"/ ) 
      unless $c->isa('Catalyst::Plugin::FormValidator::Simple');

    $c->log->warn( __PACKAGE__ . qq/: You must set validator profiles/ )
      unless $config->{profiles};
    if ( $config->{profiles} and ref $config->{profiles} ne 'HASH' ) {
        my $profiles = eval {
            no warnings 'once';
            local $YAML::UseAliases = 0;
            YAML::Load( Encode::decode( 'utf8', YAML::Dump( YAML::LoadFile( $config->{profiles} ) ) ) ); # XXX: remove yaml aliases

        };
        Catalyst::Exception->throw( message => __PACKAGE__ . qq/: $@/ ) if $@;

        $config->{profiles} = $profiles;
    }
    $c->NEXT::setup(@_);
}

1;

って感じでC::P::FV::S::Autoのsetupの前半部分をパクりつつdecodeを挟んでおいた。これでちゃんと日本語が化けずに出るようになった。ほんで、typoたんはC::P::I18Nでprofiles.ymlの中のメッセージも国際化してるそうです。