diff options
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/Travelynx.pm | 33 | ||||
-rw-r--r-- | lib/Travelynx/Helper/Locales.pm | 22 |
2 files changed, 55 insertions, 0 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 7dba658..3ddce00 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -26,6 +26,7 @@ use Travelynx::Helper::DBRIS; use Travelynx::Helper::EFA; use Travelynx::Helper::HAFAS; use Travelynx::Helper::IRIS; +use Travelynx::Helper::Locales; use Travelynx::Helper::MOTIS; use Travelynx::Helper::Sendmail; use Travelynx::Helper::Traewelling; @@ -157,6 +158,31 @@ sub startup { } ); + $self->hook( + 'before_render' => sub { + my ($self) = @_; + + # TODO load languages from user profile, if set + + my @languages = ('en-GB'); + if ( my $languages = $self->req->headers->accept_language ) { + @languages = (); + + #say "-- Accept-Language: $languages"; + for my $lang ( split( qr{ \s* , \s* }x, $languages ) ) { + if ( $lang =~ m{ ^ de }x ) { + push( @languages, 'de-DE' ); + } + elsif ( $lang =~ m{ ^ en }x ) { + push( @languages, 'en-GB' ); + } + } + } + $self->stash( loc_handle => + Travelynx::Helper::Locales->get_handle(@languages) ); + } + ); + $self->attr( cache_iris_main => sub { my ($self) = @_; @@ -412,6 +438,13 @@ sub startup { ); $self->helper( + 'L' => sub { + my ( $self, @args ) = @_; + $self->stash('loc_handle')->maketext(@args); + } + ); + + $self->helper( 'now' => sub { return DateTime->now( time_zone => 'Europe/Berlin' ); } diff --git a/lib/Travelynx/Helper/Locales.pm b/lib/Travelynx/Helper/Locales.pm new file mode 100644 index 0000000..12e95d1 --- /dev/null +++ b/lib/Travelynx/Helper/Locales.pm @@ -0,0 +1,22 @@ +package Travelynx::Helper::Locales; + +use strict; +use warnings; + +use base qw(Locale::Maketext); + +our %lexicon = ( + _AUTO => 1, +); + +use Locale::Maketext::Lexicon { + _decode => 1, + '*' => [ Gettext => 'share/locales/*.po' ], +}; + +sub init { + my ($self) = @_; + return $self->SUPER::init( @_[ 1 .. $#_ ] ); +} + +1; |