@@ -, +, @@
---
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 ) %]
-
- [% 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 ) %]
-
- [% 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 @@