From 687ed8abb414736e58b00081a3d8b5bc36eee82a Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 24 Apr 2024 16:39:52 +0100 Subject: [PATCH] Bug 33237: Move and simplify language selection logic This patch moves the language selection into GetPreparedLetter, drops the interface check step and ensures the default template always uses the default include language as per the OPACLanguages settings. Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer (cherry picked from commit c50bb140a872e67e07426fc3fc20bceb88c7d1e3) Signed-off-by: Fridolin Somers --- C4/Letters.pm | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index 148c80b5f3..12f7a1f14e 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -607,6 +607,7 @@ sub GetPreparedLetter { $letter = $template->unblessed; $letter->{'content-type'} = 'text/html; charset="UTF-8"' if $letter->{is_html}; } + $lang = $letter->{'lang'}; my $objects = $params{objects} || {}; my $tables = $params{tables} || {}; @@ -618,6 +619,14 @@ sub GetPreparedLetter { return; my $want_librarian = $params{want_librarian}; + # Best guess at language 'default' notice is written for include handling + if ( $lang eq 'default' ) { + + # Pick the first selected syspref language + my @languages = split /,/, C4::Context->preference('OPACLanguages'); + $lang = shift @languages; + } + $letter->{content} = _process_tt( { content => $letter->{content}, @@ -1669,21 +1678,7 @@ sub _process_tt { my $loops = $params->{loops}; my $objects = $params->{objects} || {}; my $substitute = $params->{substitute} || {}; - my $interface = C4::Context->interface; - my $lang; - if ( defined( $params->{lang} ) && $params->{lang} ne 'default' ) { - $lang = $params->{lang}; - } elsif ( $interface eq 'intranet' || $interface eq 'opac' ) { - - #use interface language - $lang = C4::Languages::getlanguage(); - } else { - - # Pick the first selected syspref language - my @languages = split /,/, C4::Context->preference('language'); - $lang = shift @languages; - } - $lang //= 'en'; + my $lang = $params->{lang} // 'en'; my ($theme, $availablethemes); my $htdocs = C4::Context->config('intrahtdocs'); -- 2.39.5