summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-07-18 16:16:50 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-07-18 16:16:50 +0200
commit90c2c6505e933848268ed9c5bbe21e0b459cd72a (patch)
tree13450571678acf2ff84b8a0693126e1daebb4153
parent814cb4a4dd4017606829ecc6b6c70822bf52a30e (diff)
Use Accept-Language header if user has no preferred languages
-rwxr-xr-xlib/Travelynx.pm9
-rw-r--r--lib/Travelynx/Model/Users.pm11
2 files changed, 10 insertions, 10 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index bb1346f..907ce0c 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -164,14 +164,13 @@ sub startup {
# TODO load languages from user profile, if set
- my @languages = ('en-GB');
- if ( $self->is_user_authenticated ) {
+ my @languages;
+ if ( $self->is_user_authenticated
+ and @{ $self->current_user->{languages} } )
+ {
@languages = @{ $self->current_user->{languages} };
}
elsif ( 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' );
diff --git a/lib/Travelynx/Model/Users.pm b/lib/Travelynx/Model/Users.pm
index be9e80b..367523d 100644
--- a/lib/Travelynx/Model/Users.pm
+++ b/lib/Travelynx/Model/Users.pm
@@ -413,7 +413,7 @@ sub get {
my $user = $db->select(
'users_with_backend',
- 'id, name, status, public_level, email, '
+ 'id, name, status, public_level, email, language, '
. 'accept_follows, notifications, '
. 'extract(epoch from registered_at) as registered_at_ts, '
. 'extract(epoch from last_seen) as last_seen_ts, '
@@ -423,10 +423,11 @@ sub get {
)->hash;
if ($user) {
return {
- id => $user->{id},
- name => $user->{name},
- status => $user->{status},
- notifications => $user->{notifications},
+ id => $user->{id},
+ name => $user->{name},
+ languages => [ split( qr{[|]}, $user->{language} // q{} ) ],
+ status => $user->{status},
+ notifications => $user->{notifications},
accept_follows => $user->{accept_follows} == 2 ? 1 : 0,
accept_follow_requests => $user->{accept_follows} == 1 ? 1 : 0,
default_visibility => $user->{public_level} & 0x7f,