sub translate_to :Chained('object') :PathPart('to') :Args(1) {
my ($self, $c, $to) = @_;
my $object = $c->stash->{object};
+ unless ($object->can_translate_to($to)) {
+ $c->detach('/error_404');
+ }
$c->stash(
result => $object->translated_to($to)
);
has 'id' => (is => 'ro', required => 1);
has 'text' => (is => 'ro', required => 1);
-has '_translator' => (is => 'ro', required => 1, init_arg => 'translator');
+has '_translator' => (
+ is => 'ro', required => 1, init_arg => 'translator',
+ handles => [ 'can_translate_to' ],
+);
sub translated {
my ($self) = @_;
$self->translate_to($self->default_target, $text);
}
+sub can_translate_to {
+ my ($self, $target) = @_;
+ return exists $self->_translators->{$target};
+}
+
sub translate_to {
my ($self, $target, $text) = @_;
$self->_translators->{$target}->translate($text);