Skip to content

Commit

Permalink
fix(i18n): make sure that all potential languages are loadable with js
Browse files Browse the repository at this point in the history
  • Loading branch information
jdalsem committed Feb 12, 2015
1 parent 38dae26 commit cfa860e
Show file tree
Hide file tree
Showing 3 changed files with 164 additions and 5 deletions.
153 changes: 153 additions & 0 deletions engine/classes/Elgg/I18n/Translator.php
Original file line number Diff line number Diff line change
Expand Up @@ -384,5 +384,158 @@ function getMissingLanguageKeys($language) {

return false;
}

/**
* Returns an array of language codes.
*
* @return array
*/
function getAllLanguageCodes() {
return array(
"aa", // "Afar"
"ab", // "Abkhazian"
"af", // "Afrikaans"
"am", // "Amharic"
"ar", // "Arabic"
"as", // "Assamese"
"ay", // "Aymara"
"az", // "Azerbaijani"
"ba", // "Bashkir"
"be", // "Byelorussian"
"bg", // "Bulgarian"
"bh", // "Bihari"
"bi", // "Bislama"
"bn", // "Bengali; Bangla"
"bo", // "Tibetan"
"br", // "Breton"
"ca", // "Catalan"
"cmn", // "Mandarin Chinese" // ISO 639-3
"co", // "Corsican"
"cs", // "Czech"
"cy", // "Welsh"
"da", // "Danish"
"de", // "German"
"dz", // "Bhutani"
"el", // "Greek"
"en", // "English"
"eo", // "Esperanto"
"es", // "Spanish"
"et", // "Estonian"
"eu", // "Basque"
"fa", // "Persian"
"fi", // "Finnish"
"fj", // "Fiji"
"fo", // "Faeroese"
"fr", // "French"
"fy", // "Frisian"
"ga", // "Irish"
"gd", // "Scots / Gaelic"
"gl", // "Galician"
"gn", // "Guarani"
"gu", // "Gujarati"
"he", // "Hebrew"
"ha", // "Hausa"
"hi", // "Hindi"
"hr", // "Croatian"
"hu", // "Hungarian"
"hy", // "Armenian"
"ia", // "Interlingua"
"id", // "Indonesian"
"ie", // "Interlingue"
"ik", // "Inupiak"
"is", // "Icelandic"
"it", // "Italian"
"iu", // "Inuktitut"
"iw", // "Hebrew (obsolete)"
"ja", // "Japanese"
"ji", // "Yiddish (obsolete)"
"jw", // "Javanese"
"ka", // "Georgian"
"kk", // "Kazakh"
"kl", // "Greenlandic"
"km", // "Cambodian"
"kn", // "Kannada"
"ko", // "Korean"
"ks", // "Kashmiri"
"ku", // "Kurdish"
"ky", // "Kirghiz"
"la", // "Latin"
"ln", // "Lingala"
"lo", // "Laothian"
"lt", // "Lithuanian"
"lv", // "Latvian/Lettish"
"mg", // "Malagasy"
"mi", // "Maori"
"mk", // "Macedonian"
"ml", // "Malayalam"
"mn", // "Mongolian"
"mo", // "Moldavian"
"mr", // "Marathi"
"ms", // "Malay"
"mt", // "Maltese"
"my", // "Burmese"
"na", // "Nauru"
"ne", // "Nepali"
"nl", // "Dutch"
"no", // "Norwegian"
"oc", // "Occitan"
"om", // "(Afan) Oromo"
"or", // "Oriya"
"pa", // "Punjabi"
"pl", // "Polish"
"ps", // "Pashto / Pushto"
"pt", // "Portuguese"
"pt_br", // 'Brazilian Portuguese'
"qu", // "Quechua"
"rm", // "Rhaeto-Romance"
"rn", // "Kirundi"
"ro", // "Romanian"
"ru", // "Russian"
"rw", // "Kinyarwanda"
"sa", // "Sanskrit"
"sd", // "Sindhi"
"sg", // "Sangro"
"sh", // "Serbo-Croatian"
"si", // "Singhalese"
"sk", // "Slovak"
"sl", // "Slovenian"
"sm", // "Samoan"
"sn", // "Shona"
"so", // "Somali"
"sq", // "Albanian"
"sr", // "Serbian"
"ss", // "Siswati"
"st", // "Sesotho"
"su", // "Sundanese"
"sv", // "Swedish"
"sw", // "Swahili"
"ta", // "Tamil"
"te", // "Tegulu"
"tg", // "Tajik"
"th", // "Thai"
"ti", // "Tigrinya"
"tk", // "Turkmen"
"tl", // "Tagalog"
"tn", // "Setswana"
"to", // "Tonga"
"tr", // "Turkish"
"ts", // "Tsonga"
"tt", // "Tatar"
"tw", // "Twi"
"ug", // "Uigur"
"uk", // "Ukrainian"
"ur", // "Urdu"
"uz", // "Uzbek"
"vi", // "Vietnamese"
"vo", // "Volapuk"
"wo", // "Wolof"
"xh", // "Xhosa"
"yi", // "Yiddish"
"yo", // "Yoruba"
"za", // "Zuang"
"zh", // "Chinese"
"zu", // "Zulu"
);
}

}
10 changes: 5 additions & 5 deletions engine/lib/languages.php
Original file line number Diff line number Diff line change
Expand Up @@ -243,13 +243,13 @@ function get_missing_language_keys($language) {
* @return void
*/
function _elgg_translations_init() {
$translations = _elgg_services()->translator->getInstalledTranslations();
foreach ($translations as $key => $language) {
$translations = _elgg_services()->translator->getAllLanguageCodes();
foreach ($translations as $language_code) {
// make the js view available for each language
elgg_extend_view("js/languages/$key.js", "js/languages");
elgg_extend_view("js/languages/$language_code.js", "js/languages");

// register the js view for use in simplecache
elgg_register_simplecache_view("js/languages/$key.js");
elgg_register_simplecache_view("js/languages/$language_code.js");
}
}

Expand Down
6 changes: 6 additions & 0 deletions views/default/js/languages.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@
$all_translations = elgg_get_config('translations');
$translations = $all_translations['en'];

if ($language != 'en' && !isset($all_translations[$language])) {
// try to reload missing translations
reload_all_translations();
$all_translations = elgg_get_config('translations');
}

if ($language != 'en' && isset($all_translations[$language])) {
$translations = array_merge($translations, $all_translations[$language]);
}
Expand Down

0 comments on commit cfa860e

Please sign in to comment.