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

(-)a/C4/Languages.pm (-37 / +3 lines)
Lines 47-53 BEGIN { Link Here
47
        &getLanguages
47
        &getLanguages
48
        &getAllLanguages
48
        &getAllLanguages
49
    );
49
    );
50
    @EXPORT_OK = qw(getSearchLanguages getLanguagesIso getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage);
50
    @EXPORT_OK = qw(getSearchLanguages getLanguagesIso getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags accept_language getlanguage);
51
    $DEBUG = 0;
51
    $DEBUG = 0;
52
}
52
}
53
53
Lines 304-346 sub getLanguages { Link Here
304
    if ($lang) {
304
    if ($lang) {
305
        $current_language = regex_lang_subtags($lang)->{'language'};
305
        $current_language = regex_lang_subtags($lang)->{'language'};
306
    }
306
    }
307
    my $sth = $dbh->prepare('SELECT * FROM language_subtag_registry WHERE type=\'language\'');
307
    my $sth = $dbh->prepare('SELECT * FROM language_rfc4646_to_iso639');
308
    $sth->execute();
308
    $sth->execute();
309
    while (my $language_subtag_registry = $sth->fetchrow_hashref) {
309
    while (my $language_subtag_registry = $sth->fetchrow_hashref) {
310
        my $desc;
310
        $language_subtag_registry->{subtag} = $language_subtag_registry->{rfc4646_subtag};
311
        # check if language name is stored in current language
312
        my $sth4= $dbh->prepare("SELECT description FROM language_descriptions WHERE type='language' AND subtag =? AND lang = ?");
313
        $sth4->execute($language_subtag_registry->{subtag},$current_language);
314
        while (my $language_desc = $sth4->fetchrow_hashref) {
315
             $desc=$language_desc->{description};
316
        }
317
        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 = ?");
318
        if ($desc) {
319
            $sth2->execute($language_subtag_registry->{subtag},$current_language);
320
        }
321
        else {
322
            $sth2->execute($language_subtag_registry->{subtag},$default_language);
323
        }
324
        my $sth3 = $dbh->prepare("SELECT description FROM language_descriptions WHERE type='language' AND subtag=? AND lang=?");
325
        # add the correct description info
326
        while (my $language_descriptions = $sth2->fetchrow_hashref) {
327
            $sth3->execute($language_subtag_registry->{subtag},$language_subtag_registry->{subtag});
328
            my $native_description;
329
            while (my $description = $sth3->fetchrow_hashref) {
330
                $native_description = $description->{description};
331
            }
332
333
            # fill in the ISO6329 code
334
            $language_subtag_registry->{iso639_2_code} = $language_descriptions->{iso639_2_code};
335
            # fill in the native description of the language, as well as the current language's translation of that if it exists
336
            if ($native_description) {
337
                $language_subtag_registry->{language_description} = $native_description;
338
                $language_subtag_registry->{language_description}.=" ($language_descriptions->{description})" if $language_descriptions->{description};
339
            }
340
            else {
341
                $language_subtag_registry->{language_description} = $language_descriptions->{description};
342
            }
343
        }
344
        if ( !$language_list || index (  $language_list, $language_subtag_registry->{ iso639_2_code } ) >= 0) {
311
        if ( !$language_list || index (  $language_list, $language_subtag_registry->{ iso639_2_code } ) >= 0) {
345
            push @languages_loop, $language_subtag_registry;
312
            push @languages_loop, $language_subtag_registry;
346
        }
313
        }
347
- 

Return to bug 12017