- my $languages_loop = [
- {
- language_code => "",
- language_name => "No Limit",
- language_locale_name => "",
- selected => "selected",
- },
- {
- language_code => "ara",
- language_name =>
- "العربية",
- language_locale_name => "Arabic",
- ,
- },
- {
- language_code => "bul",
- language_name =>
- "Български",
- language_locale_name => "Bulgarian",
- ,
- },
- {
- language_code => "chi",
- language_name => "中文",
- language_locale_name => "Chinese",
- ,
- },
- {
- language_code => "scr",
- language_name => "Hrvatski",
- language_locale_name => "Croatian",
- ,
- },
- {
- language_code => "cze",
- language_name => "čeština",
- language_locale_name => "Czech",
- ,
- },
- {
- language_code => "dan",
- language_name => "Dænsk",
- language_locale_name => "Danish",
- ,
- },
- {
- language_code => "dut",
- language_name => "nedərlɑns",
- language_locale_name => "Dutch",
- ,
- },
- {
- language_code => "en",
- language_name => "English",
- language_locale_name => "English",
- ,
- },
- {
- language_code => "fr",
- language_name => "Français",
- language_locale_name => "French",
- ,
- },
- {
- language_code => "ger",
- language_name => "Deutsch",
- language_locale_name => "German",
- ,
- },
- {
- language_code => "gre",
- language_name =>
- "ελληνικά",
- language_locale_name => "Greek, Modern [1453- ]",
- ,
- },
- {
- language_code => "heb",
- language_name => "עברית",
- language_locale_name => "Hebrew",
- ,
- },
- {
- language_code => "hin",
- language_name => "हिन्दी",
- language_locale_name => "Hindi",
- ,
- },
- {
- language_code => "hun",
- language_name => "Magyar",
- language_locale_name => "Hungarian",
- ,
- },
- {
- language_code => "ind",
- language_name => "",
- language_locale_name => "Indonesian",
- ,
- },
- {
- language_code => "ita",
- language_name => "Italiano",
- language_locale_name => "Italian",
- ,
- },
- {
- language_code => "jpn",
- language_name => "日本語",
- language_locale_name => "Japanese",
- ,
- },
- {
- language_code => "kor",
- language_name => "한국어",
- language_locale_name => "Korean",
- ,
- },
- {
- language_code => "lat",
- language_name => "Latina",
- language_locale_name => "Latin",
- ,
- },
- {
- language_code => "nor",
- language_name => "Norsk",
- language_locale_name => "Norwegian",
- ,
- },
- {
- language_code => "per",
- language_name => "فارسى",
- language_locale_name => "Persian",
- ,
- },
- {
- language_code => "pol",
- language_name => "Polski",
- language_locale_name => "Polish",
- ,
- },
- {
- language_code => "por",
- language_name => "Português",
- language_locale_name => "Portuguese",
- ,
- },
- {
- language_code => "rum",
- language_name => "Română",
- language_locale_name => "Romanian",
- ,
- },
- {
- language_code => "rus",
- language_name =>
- "Русский",
- language_locale_name => "Russian",
- ,
- },
- {
- language_code => "spa",
- language_name => "Español",
- language_locale_name => "Spanish",
- ,
- },
- {
- language_code => "swe",
- language_name => "Svenska",
- language_locale_name => "Swedish",
- ,
- },
- {
- language_code => "tha",
- language_name =>
- "ภาษาไทย",
- language_locale_name => "Thai",
- ,
- },
- {
- language_code => "tur",
- language_name => "Türkçe",
- language_locale_name => "Turkish",
- ,
- },
- {
- language_code => "ukr",
- language_name =>
-"Українська",
- language_locale_name => "Ukrainian",
- ,
- },
-
- ];
- return $languages_loop;
+ my @languages_loop;
+ my $dbh=C4::Context->dbh;
+ my $current_language = shift || 'en';
+ my $sth = $dbh->prepare('SELECT * FROM language_subtag_registry WHERE type=\'language\'');
+ $sth->execute();
+ while (my $language_subtag_registry = $sth->fetchrow_hashref) {
+
+ # pull out all the script descriptions for each language
+ 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 = ?");
+ $sth2->execute($language_subtag_registry->{subtag},$current_language);
+
+ my $sth3 = $dbh->prepare("SELECT description FROM language_descriptions WHERE type='language' AND subtag=? AND lang=?");
+
+ # add the correct description info
+ while (my $language_descriptions = $sth2->fetchrow_hashref) {
+ $sth3->execute($language_subtag_registry->{subtag},$language_subtag_registry->{subtag});
+ my $native_description;
+ while (my $description = $sth3->fetchrow_hashref) {
+ $native_description = $description->{description};
+ }
+
+ # fill in the ISO6329 code
+ $language_subtag_registry->{iso639_2_code} = $language_descriptions->{iso639_2_code};
+ # fill in the native description of the language, as well as the current language's translation of that if it exists
+ if ($native_description) {
+ $language_subtag_registry->{language_description} = $native_description;
+ $language_subtag_registry->{language_description}.=" ($language_descriptions->{description})" if $language_descriptions->{description};
+ }
+ else {
+ $language_subtag_registry->{language_description} = $language_descriptions->{description};
+ }
+ }
+ push @languages_loop, $language_subtag_registry;
+ }
+ return \@languages_loop;