summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-07-18 16:11:19 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-07-18 16:11:19 +0200
commit814cb4a4dd4017606829ecc6b6c70822bf52a30e (patch)
tree41ff682b2e7327b21060f62eab863681af431fc2
parent731b789855914cb94ec091604e32aa68a678404a (diff)
Add list of preferred languages to user settings
-rwxr-xr-xlib/Travelynx.pm10
-rw-r--r--lib/Travelynx/Command/database.pm22
2 files changed, 30 insertions, 2 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 3ddce00..bb1346f 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -165,7 +165,10 @@ sub startup {
# TODO load languages from user profile, if set
my @languages = ('en-GB');
- if ( my $languages = $self->req->headers->accept_language ) {
+ if ( $self->is_user_authenticated ) {
+ @languages = @{ $self->current_user->{languages} };
+ }
+ elsif ( my $languages = $self->req->headers->accept_language ) {
@languages = ();
#say "-- Accept-Language: $languages";
@@ -178,8 +181,11 @@ sub startup {
}
}
}
+
+ # de-DE is our fall-back language and thus always appended
$self->stash( loc_handle =>
- Travelynx::Helper::Locales->get_handle(@languages) );
+ Travelynx::Helper::Locales->get_handle( @languages, 'de-DE' )
+ );
}
);
diff --git a/lib/Travelynx/Command/database.pm b/lib/Travelynx/Command/database.pm
index 34efde6..009da30 100644
--- a/lib/Travelynx/Command/database.pm
+++ b/lib/Travelynx/Command/database.pm
@@ -3359,6 +3359,28 @@ qq{select distinct checkout_station_id from in_transit where backend_id = 0;}
}
);
},
+
+ # v66 -> v67
+ # Add language settings to profile
+ sub {
+ my ($db) = @_;
+ $db->query(
+ qq{
+ drop view users_with_backend;
+ alter table users add column language varchar(128);
+ update schema_version set version = 67;
+ create view users_with_backend as select
+ users.id as id, users.name as name, status, public_level,
+ language, email, password, registered_at, last_seen,
+ deletion_requested, deletion_notified, use_history,
+ accept_follows, notifications, profile, backend_id, iris,
+ hafas, efa, dbris, motis, backend.name as backend_name
+ from users
+ left join backends as backend on users.backend_id = backend.id
+ ;
+ }
+ );
+ },
);
sub sync_stations {