View | Details | Raw Unified | Return to bug 12017
Collapse All | Expand All

(-)a/C4/Languages.pm (-1 / +58 lines)
Lines 49-55 BEGIN { Link Here
49
        &getLanguages
49
        &getLanguages
50
        &getAllLanguages
50
        &getAllLanguages
51
    );
51
    );
52
    @EXPORT_OK = qw(getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage);
52
    @EXPORT_OK = qw(getLanguagesIso getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage);
53
    $DEBUG = 0;
53
    $DEBUG = 0;
54
}
54
}
55
55
Lines 106-111 sub getFrameworkLanguages { Link Here
106
    return \@languages;
106
    return \@languages;
107
}
107
}
108
108
109
=head2 getLanguagesIso
110
111
Get all languages codes and iso639_2 selected by iso639_2
112
Expect a hash with a defined value for each iso code
113
Returns a reference to an array of hashes:
114
115
 my $languages = getLanguage_iso( %enabled );
116
 for my $language( @$languages ) {
117
    print "$language->{rfc4646_subtag}\n"; # language code in rfc4646
118
    print "$language->{iso638_2_code}\n";  # language code in iso 639-2
119
    print "$language->{enabled}\n";        # 1 if enabled iso638_2_code
120
 }
121
122
=cut
123
124
sub getLanguagesIso {
125
    # Get all languages codes and iso639_2 selected by iso639_2
126
    # Expect a hash with a defined value for each iso code
127
    my $enabled = shift;
128
    my $langs   = getLangCodes();
129
    my @result;
130
    for my $code ( keys %$langs ) {
131
        push @result, {
132
            rfc4646_subtag => $code,
133
            iso639_2_code  => $langs->{$code},
134
            enabled        => ( $enabled->{ $langs->{$code} } ) ? 1 : 0,
135
            }
136
    }
137
    return \@result;
138
}
139
140
=head2 getLangCodes
141
142
Get all language codes and iso639_2 codes
143
as a hash with code as key and iso as value
144
Returns a reference to a hash:
145
146
 my $languages = getIsoCodes();
147
 for my $code ( keys %$languages ) {
148
    print "$code\n";              # language code in rfc4646
149
    print "$languages->{code}\n"; # language code in iso 639-2
150
 }
151
152
=cut
153
154
sub getLangCodes {
155
    my  %result;
156
    my $dbh = C4::Context->dbh;
157
    my $sth = $dbh->prepare('SELECT * FROM language_rfc4646_to_iso639');
158
    $sth->execute();
159
    while (my $rfc_to_iso = $sth->fetchrow_hashref) {
160
        $result{$rfc_to_iso->{'rfc4646_subtag'}} = $rfc_to_iso->{'iso639_2_code'};
161
    }
162
    return \%result;
163
}
164
165
109
=head2 getTranslatedLanguages
166
=head2 getTranslatedLanguages
110
167
111
Returns a reference to an array of hashes:
168
Returns a reference to an array of hashes:
(-)a/admin/systempreferences.pl (-19 / +4 lines)
Lines 48-54 use MIME::Base64; Link Here
48
use C4::Auth;
48
use C4::Auth;
49
use C4::Context;
49
use C4::Context;
50
use C4::Koha;
50
use C4::Koha;
51
use C4::Languages qw(getTranslatedLanguages);
51
use C4::Languages qw(getLanguagesIso);
52
use C4::ClassSource;
52
use C4::ClassSource;
53
use C4::Log;
53
use C4::Log;
54
use C4::Output;
54
use C4::Output;
Lines 162-189 sub GetPrefParams { Link Here
162
        }
162
        }
163
    } elsif ( $data->{'type'} eq 'Languages' ) {
163
    } elsif ( $data->{'type'} eq 'Languages' ) {
164
        my $currently_selected_languages;
164
        my $currently_selected_languages;
165
        foreach my $language ( split /\s+/, $data->{'value'} ) {
165
        foreach my $language ( split /\,/, $data->{'value'} ) {
166
            $currently_selected_languages->{$language} = 1;
166
            $currently_selected_languages->{$language} = 1;
167
        }
167
        }
168
168
169
        # current language
169
        my $languages_loop = getLanguagesIso( $currently_selected_languages );
170
        my $lang = $params->{'lang'};
171
        my $theme;
172
        my $interface;
173
        if ( $data->{'variable'} =~ /opac/ ) {
174
170
175
            # this is the OPAC
171
        $params->{'pref_languages_loop'}    = $languages_loop;
176
            $interface = 'opac';
177
            $theme     = C4::Context->preference('opacthemes');
178
        } else {
179
180
            # this is the staff client
181
            $interface = 'intranet';
182
            $theme     = C4::Context->preference('template');
183
        }
184
        my $languages_loop = getTranslatedLanguages( $interface, $theme, $lang, $currently_selected_languages );
185
186
        $params->{'languages_loop'}    = $languages_loop;
187
        $params->{'type_langselector'} = 1;
172
        $params->{'type_langselector'} = 1;
188
    } else {
173
    } else {
189
        $params->{'type_free'} = 1;
174
        $params->{'type_free'} = 1;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt (-98 / +22 lines)
Lines 122-178 Link Here
122
                    </select>
122
                    </select>
123
                [% END %]
123
                [% END %]
124
        [% IF ( type_langselector ) %]
124
        [% IF ( type_langselector ) %]
125
        [% IF ( languages_loop ) %]
125
            [% IF ( pref_languages_loop ) %]
126
    <table>
126
                <select name="value" size=10 multiple="multiple">
127
        [% FOREACH languages_loo IN languages_loop %]
127
                [% FOREACH languages_loo IN pref_languages_loop.sort('iso639_2_code')  %]
128
        <tr><td>
128
                    [% IF ( languages_loo.enabled ) %]
129
            [% IF ( languages_loo.plural ) %]
129
                    <option value="[% languages_loo.iso639_2_code %]" selected="selected">
130
            [% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]
131
            [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]<table><tr><td>
132
                [% IF ( sublanguages_loo.sublanguage_current ) %]
133
                    <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %])
134
                    [% IF ( sublanguages_loo.enabled ) %]
135
                        <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
136
                    [% ELSE %]
137
                        <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" />
138
                    [% END %]
139
                    </label>
140
141
                [% ELSE %]
142
                    <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %])
143
                    [% IF ( sublanguages_loo.enabled ) %]
144
                        <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
145
                    [% ELSE %]
130
                    [% ELSE %]
146
                        <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" />
131
                    <option value="[% languages_loo.iso639_2_code %]" >
147
                    [% END %]
132
                    [% END %]
148
                    </label>
133
                    ([% languages_loo.iso639_2_code %]) [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag t = 1 %] [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag %]
149
                [% END %]</td></tr></table>
134
                    </option>
150
            [% END %]
135
                 [% END %]
151
136
                 </select>
152
            [% ELSE %]
137
             [% END %]
153
                [% IF ( languages_loo.current ) %]
154
            <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %])
155
                [% IF ( languages_loo.group_enabled ) %]
156
                    <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
157
                [% ELSE %]
158
                    <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" />
159
                [% END %]
160
                    </label>
161
                [% ELSE %]
162
            <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %])
163
                [% IF ( languages_loo.group_enabled ) %]
164
                    <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
165
                [% ELSE %]
166
                    <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" />
167
                [% END %]
168
                    </label>
169
                [% END %]
170
            [% END %]
171
        </td></tr>
172
        [% END %]
173
    </table>
174
        [% END %]
175
176
        [% END %]
138
        [% END %]
177
139
178
                [% IF ( type_yesno ) %]
140
                [% IF ( type_yesno ) %]
Lines 299-355 Link Here
299
                </select>
261
                </select>
300
                [% END %]
262
                [% END %]
301
                [% IF ( loo.type_langselector ) %]
263
                [% IF ( loo.type_langselector ) %]
302
                [% IF ( loo.languages_loop ) %]
264
                    [% IF ( loo.pref_languages_loop ) %]
303
                <table>
265
                        <select name="value" size="10" multiple="multiple">
304
                [% FOREACH languages_loo IN loo.languages_loop %]
266
                        [% FOREACH languages_loo IN loo.pref_languages_loop.sort('iso639_2_code')  %]
305
                <tr><td>
267
                            [% IF ( languages_loo.enabled ) %]
306
                    [% IF ( languages_loo.plural ) %]
268
                             <option value="[% languages_loo.iso639_2_code %]" selected="selected">
307
                    [% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %]
269
                             [% ELSE %]
308
                    [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]<table><tr><td>
270
                             <option value="[% languages_loo.iso639_2_code %]" >
309
                        [% IF ( sublanguages_loo.sublanguage_current ) %]
271
                             [% END %]
310
                            <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %])
272
                             <label>([% languages_loo.iso639_2_code %]) [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag t = 1 %]</label> [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag %]
311
                            [% IF ( sublanguages_loo.enabled ) %]
312
                                <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
313
                            [% ELSE %]
314
                                <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" />
315
                            [% END %]
316
                            </label>
317
318
                        [% ELSE %]
319
                            <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %])
320
                            [% IF ( sublanguages_loo.enabled ) %]
321
                                <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
322
                            [% ELSE %]
323
                                <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" />
324
                            [% END %]
325
                            </label>
326
                        [% END %]</td></tr></table>
327
                    [% END %]
328
329
                    [% ELSE %]
330
                        [% IF ( languages_loo.current ) %]
331
                    <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %])
332
                        [% IF ( languages_loo.group_enabled ) %]
333
                            <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
334
                        [% ELSE %]
335
                            <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" />
336
                        [% END %]
337
                            </label>
338
                        [% ELSE %]
339
                    <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %])
340
                        [% IF ( languages_loo.group_enabled ) %]
341
                            <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" />
342
                        [% ELSE %]
343
                            <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" />
344
                        [% END %]
345
                            </label>
346
                        [% END %]
273
                        [% END %]
274
                        </select>
347
                    [% END %]
275
                    [% END %]
348
                </td></tr>
276
                    <br />
349
                [% END %]
350
                </table>
351
                [% END %]
352
353
                [% END %]
277
                [% END %]
354
278
355
                [% IF ( loo.type_yesno ) %]
279
                [% IF ( loo.type_yesno ) %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt (-2 / +1 lines)
Lines 140-146 Link Here
140
		<p><label for="language-limit">Language: </label>                                        
140
		<p><label for="language-limit">Language: </label>                                        
141
		<select name="limit" id="language-limit">
141
		<select name="limit" id="language-limit">
142
        <option value="">No limit</option>
142
        <option value="">No limit</option>
143
		[% FOREACH search_languages_loo IN search_languages_loop %]
143
        [% FOREACH search_languages_loo IN search_languages_loop.sort('iso639_2_code') %]
144
		[% IF ( search_languages_loo.selected ) %]
144
		[% IF ( search_languages_loo.selected ) %]
145
		<option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[% search_languages_loo.language_description %]</option>
145
		<option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[% search_languages_loo.language_description %]</option>
146
		[% ELSE %]
146
		[% ELSE %]
147
- 

Return to bug 12017