@@ -, +, @@ --- C4/Languages.pm | 59 +++++++++- admin/systempreferences.pl | 23 +--- .../prog/en/modules/admin/systempreferences.tt | 120 ++++---------------- .../prog/en/modules/catalogue/advsearch.tt | 2 +- 4 files changed, 85 insertions(+), 119 deletions(-) --- a/C4/Languages.pm +++ a/C4/Languages.pm @@ -49,7 +49,7 @@ BEGIN { &getLanguages &getAllLanguages ); - @EXPORT_OK = qw(getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage); + @EXPORT_OK = qw(getLanguagesIso getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage); $DEBUG = 0; } @@ -106,6 +106,63 @@ sub getFrameworkLanguages { return \@languages; } +=head2 getLanguagesIso + +Get all languages codes and iso639_2 selected by iso639_2 +Expect a hash with a defined value for each iso code +Returns a reference to an array of hashes: + + my $languages = getLanguage_iso( %enabled ); + for my $language( @$languages ) { + print "$language->{rfc4646_subtag}\n"; # language code in rfc4646 + print "$language->{iso638_2_code}\n"; # language code in iso 639-2 + print "$language->{enabled}\n"; # 1 if enabled iso638_2_code + } + +=cut + +sub getLanguagesIso { + # Get all languages codes and iso639_2 selected by iso639_2 + # Expect a hash with a defined value for each iso code + my $enabled = shift; + my $langs = getLangCodes(); + my @result; + for my $code ( keys %$langs ) { + push @result, { + rfc4646_subtag => $code, + iso639_2_code => $langs->{$code}, + enabled => ( $enabled->{ $langs->{$code} } ) ? 1 : 0, + } + } + return \@result; +} + +=head2 getLangCodes + +Get all language codes and iso639_2 codes +as a hash with code as key and iso as value +Returns a reference to a hash: + + my $languages = getIsoCodes(); + for my $code ( keys %$languages ) { + print "$code\n"; # language code in rfc4646 + print "$languages->{code}\n"; # language code in iso 639-2 + } + +=cut + +sub getLangCodes { + my %result; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare('SELECT * FROM language_rfc4646_to_iso639'); + $sth->execute(); + while (my $rfc_to_iso = $sth->fetchrow_hashref) { + $result{$rfc_to_iso->{'rfc4646_subtag'}} = $rfc_to_iso->{'iso639_2_code'}; + } + return \%result; +} + + =head2 getTranslatedLanguages Returns a reference to an array of hashes: --- a/admin/systempreferences.pl +++ a/admin/systempreferences.pl @@ -48,7 +48,7 @@ use MIME::Base64; use C4::Auth; use C4::Context; use C4::Koha; -use C4::Languages qw(getTranslatedLanguages); +use C4::Languages qw(getLanguagesIso); use C4::ClassSource; use C4::Log; use C4::Output; @@ -162,28 +162,13 @@ sub GetPrefParams { } } elsif ( $data->{'type'} eq 'Languages' ) { my $currently_selected_languages; - foreach my $language ( split /\s+/, $data->{'value'} ) { + foreach my $language ( split /\,/, $data->{'value'} ) { $currently_selected_languages->{$language} = 1; } - # current language - my $lang = $params->{'lang'}; - my $theme; - my $interface; - if ( $data->{'variable'} =~ /opac/ ) { + my $languages_loop = getLanguagesIso( $currently_selected_languages ); - # this is the OPAC - $interface = 'opac'; - $theme = C4::Context->preference('opacthemes'); - } else { - - # this is the staff client - $interface = 'intranet'; - $theme = C4::Context->preference('template'); - } - my $languages_loop = getTranslatedLanguages( $interface, $theme, $lang, $currently_selected_languages ); - - $params->{'languages_loop'} = $languages_loop; + $params->{'pref_languages_loop'} = $languages_loop; $params->{'type_langselector'} = 1; } else { $params->{'type_free'} = 1; --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt @@ -122,57 +122,19 @@ [% END %] [% IF ( type_langselector ) %] - [% IF ( languages_loop ) %] - - [% FOREACH languages_loo IN languages_loop %] - - [% END %] -
- [% IF ( languages_loo.plural ) %] - [% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %] - [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]
- [% IF ( sublanguages_loo.sublanguage_current ) %] - - - [% ELSE %] - - [% END %]
- [% END %] - - [% ELSE %] - [% IF ( languages_loo.current ) %] - - [% ELSE %] - - [% END %] - [% END %] -
- [% END %] - + ([% languages_loo.iso639_2_code %]) [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag t = 1 %] [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag %] + + [% END %] + + [% END %] [% END %] [% IF ( type_yesno ) %] @@ -299,57 +261,19 @@ [% END %] [% IF ( loo.type_langselector ) %] - [% IF ( loo.languages_loop ) %] - - [% FOREACH languages_loo IN loo.languages_loop %] - - [% END %] -
- [% IF ( languages_loo.plural ) %] - [% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %] - [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]
- [% IF ( sublanguages_loo.sublanguage_current ) %] - - - [% ELSE %] - - [% END %]
- [% END %] - - [% ELSE %] - [% IF ( languages_loo.current ) %] - - [% ELSE %] - + [% IF ( loo.pref_languages_loop ) %] + [% END %] -
- [% END %] - +
[% END %] [% IF ( loo.type_yesno ) %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt @@ -140,7 +140,7 @@