At least for the tests: Run t/db_dependent/api/v1/ill_requests.t several times. If you have several languages installed it will fail randomly: # $got->[0]{_strings}{status}{str} = 'Solicitado' # $expected->[0]{_strings}{status}{str} = 'Requested' or # $got->[0]{_strings}{status}{str} = 'Angefordert' # $expected->[0]{_strings}{status}{str} = 'Requested' This is because getlanguage hit the else: if ( $interface eq 'opac' || $interface eq 'intranet' ) { [...] } else { @languages = map { $_->{rfc4646_subtag} } @{ getTranslatedLanguages( $interface, $theme ) }; $language = Koha::Language->get_requested_language(); } and getTranslatedLanguages returns the languages in a random order. So there might be several problems highlighted here. You can easily recreate the problem with: use C4::Languages; use C4::Context; C4::Context->interface('api'); say C4::Languages::getlanguage();
Note that if HTTP_ACCEPT_LANGUAGE is set to a language that is installed it will be used correctly.