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

(-)a/C4/Languages.pm (-37 / +3 lines)
Lines 44-50 BEGIN { Link Here
44
        &getLanguages
44
        &getLanguages
45
        &getAllLanguages
45
        &getAllLanguages
46
    );
46
    );
47
    @EXPORT_OK = qw(getSearchLanguages getLanguages_iso getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language);
47
    @EXPORT_OK = qw(getSearchLanguages getLanguages_iso getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags accept_language);
48
    $DEBUG = 0;
48
    $DEBUG = 0;
49
}
49
}
50
50
Lines 262-304 sub getLanguages { Link Here
262
    if ($lang) {
262
    if ($lang) {
263
        $current_language = regex_lang_subtags($lang)->{'language'};
263
        $current_language = regex_lang_subtags($lang)->{'language'};
264
    }
264
    }
265
    my $sth = $dbh->prepare('SELECT * FROM language_subtag_registry WHERE type=\'language\'');
265
    my $sth = $dbh->prepare('SELECT * FROM language_rfc4646_to_iso639');
266
    $sth->execute();
266
    $sth->execute();
267
    while (my $language_subtag_registry = $sth->fetchrow_hashref) {
267
    while (my $language_subtag_registry = $sth->fetchrow_hashref) {
268
        my $desc;
268
        $language_subtag_registry->{subtag} = $language_subtag_registry->{rfc4646_subtag};
269
        # check if language name is stored in current language
270
        my $sth4= $dbh->prepare("SELECT description FROM language_descriptions WHERE type='language' AND subtag =? AND lang = ?");
271
        $sth4->execute($language_subtag_registry->{subtag},$current_language);
272
        while (my $language_desc = $sth4->fetchrow_hashref) {
273
             $desc=$language_desc->{description};
274
        }
275
        my $sth2= $dbh->prepare("SELECT * FROM language_descriptions LEFT JOIN language_rfc4646_to_iso639 on language_rfc4646_to_iso639.rfc4646_subtag = language_descriptions.subtag WHERE type='language' AND subtag =? AND language_descriptions.lang = ?");
276
        if ($desc) {
277
            $sth2->execute($language_subtag_registry->{subtag},$current_language);
278
        }
279
        else {
280
            $sth2->execute($language_subtag_registry->{subtag},$default_language);
281
        }
282
        my $sth3 = $dbh->prepare("SELECT description FROM language_descriptions WHERE type='language' AND subtag=? AND lang=?");
283
        # add the correct description info
284
        while (my $language_descriptions = $sth2->fetchrow_hashref) {
285
            $sth3->execute($language_subtag_registry->{subtag},$language_subtag_registry->{subtag});
286
            my $native_description;
287
            while (my $description = $sth3->fetchrow_hashref) {
288
                $native_description = $description->{description};
289
            }
290
291
            # fill in the ISO6329 code
292
            $language_subtag_registry->{iso639_2_code} = $language_descriptions->{iso639_2_code};
293
            # fill in the native description of the language, as well as the current language's translation of that if it exists
294
            if ($native_description) {
295
                $language_subtag_registry->{language_description} = $native_description;
296
                $language_subtag_registry->{language_description}.=" ($language_descriptions->{description})" if $language_descriptions->{description};
297
            }
298
            else {
299
                $language_subtag_registry->{language_description} = $language_descriptions->{description};
300
            }
301
        }
302
        if ( !$language_list || index (  $language_list, $language_subtag_registry->{ iso639_2_code } ) >= 0) {
269
        if ( !$language_list || index (  $language_list, $language_subtag_registry->{ iso639_2_code } ) >= 0) {
303
            push @languages_loop, $language_subtag_registry;
270
            push @languages_loop, $language_subtag_registry;
304
        }
271
        }
305
- 

Return to bug 12017