summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rwxr-xr-xlib/Travelynx.pm33
-rw-r--r--lib/Travelynx/Helper/Locales.pm22
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;