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 <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Martin Renvoize 2024-04-24 16:39:52 +01:00 committed by Katrin Fischer
parent 25d64cc6b2
commit c50bb140a8
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834

View file

@ -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},
@ -1671,21 +1680,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');