<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Hold the PMA\libraries\LanguageManager class * * @package PhpMyAdmin */ namespace PMA\libraries; use PMA\libraries\Language; /** * Language selection manager * * @package PhpMyAdmin */ class LanguageManager { /** * @var array Definition data for languages * * Each member contains: * - Language code * - English language name * - Native language name * - Match regullar expression * - MySQL locale */ private static $_language_data = array( 'af' => array( 'af', 'Afrikaans', '', 'af|afrikaans', '', ), 'ar' => array( 'ar', 'Arabic', 'العربية', 'ar|arabic', 'ar_AE', ), 'az' => array( 'az', 'Azerbaijani', 'Azərbaycanca', 'az|azerbaijani', '', ), 'bn' => array( 'bn', 'Bangla', 'বাংলা', 'bn|bangla', '', ), 'be' => array( 'be', 'Belarusian', 'Беларуская', 'be|belarusian', 'be_BY', ), 'be@latin' => array( 'be@latin', 'Belarusian (latin)', 'Biełaruskaja', 'be[-_]lat|be@latin|belarusian latin', '', ), 'bg' => array( 'bg', 'Bulgarian', 'Български', 'bg|bulgarian', 'bg_BG', ), 'bs' => array( 'bs', 'Bosnian', 'Bosanski', 'bs|bosnian', '', ), 'br' => array( 'br', 'Breton', 'Brezhoneg', 'br|breton', '', ), 'brx' => array( 'brx', 'Bodo', 'बड़ो', 'brx|bodo', '', ), 'ca' => array( 'ca', 'Catalan', 'Català', 'ca|catalan', 'ca_ES', ), 'ckb' => array( 'ckb', 'Sorani', 'سۆرانی', 'ckb|sorani', '', ), 'cs' => array( 'cs', 'Czech', 'Čeština', 'cs|czech', 'cs_CZ', ), 'cy' => array( 'cy', 'Welsh', 'Cymraeg', 'cy|welsh', '', ), 'da' => array( 'da', 'Danish', 'Dansk', 'da|danish', 'da_DK', ), 'de' => array( 'de', 'German', 'Deutsch', 'de|german', 'de_DE', ), 'el' => array( 'el', 'Greek', 'Ελληνικά', 'el|greek', '', ), 'en' => array( 'en', 'English', '', 'en|english', 'en_US', ), 'en_gb' => array( 'en_GB', 'English (United Kingdom)', '', 'en[_-]gb|english (United Kingdom)', 'en_GB', ), 'eo' => array( 'eo', 'Esperanto', 'Esperanto', 'eo|esperanto', '', ), 'es' => array( 'es', 'Spanish', 'Español', 'es|spanish', 'es_ES', ), 'et' => array( 'et', 'Estonian', 'Eesti', 'et|estonian', 'et_EE', ), 'eu' => array( 'eu', 'Basque', 'Euskara', 'eu|basque', 'eu_ES', ), 'fa' => array( 'fa', 'Persian', 'فارسی', 'fa|persian', '', ), 'fi' => array( 'fi', 'Finnish', 'Suomi', 'fi|finnish', 'fi_FI', ), 'fr' => array( 'fr', 'French', 'Français', 'fr|french', 'fr_FR', ), 'fy' => array( 'fy', 'Frisian', 'Frysk', 'fy|frisian', '', ), 'gl' => array( 'gl', 'Galician', 'Galego', 'gl|galician', 'gl_ES', ), 'gu' => array( 'gu', 'Gujarati', 'ગુજરાતી', 'gu|gujarati', 'gu_IN', ), 'he' => array( 'he', 'Hebrew', 'עברית', 'he|hebrew', 'he_IL', ), 'hi' => array( 'hi', 'Hindi', 'हिन्दी', 'hi|hindi', 'hi_IN', ), 'hr' => array( 'hr', 'Croatian', 'Hrvatski', 'hr|croatian', 'hr_HR', ), 'hu' => array( 'hu', 'Hungarian', 'Magyar', 'hu|hungarian', 'hu_HU', ), 'hy' => array( 'hy', 'Armenian', 'Հայերէն', 'hy|armenian', '', ), 'ia' => array( 'ia', 'Interlingua', '', 'ia|interlingua', '', ), 'id' => array( 'id', 'Indonesian', 'Bahasa Indonesia', 'id|indonesian', 'id_ID', ), 'it' => array( 'it', 'Italian', 'Italiano', 'it|italian', 'it_IT', ), 'ja' => array( 'ja', 'Japanese', '日本語', 'ja|japanese', 'ja_JP', ), 'ko' => array( 'ko', 'Korean', '한국어', 'ko|korean', 'ko_KR', ), 'ka' => array( 'ka', 'Georgian', 'ქართული', 'ka|georgian', '', ), 'kk' => array( 'kk', 'Kazakh', 'Қазақ', 'kk|kazakh', '', ), 'km' => array( 'km', 'Khmer', 'ខ្មែរ', 'km|khmer', '', ), 'kn' => array( 'kn', 'Kannada', 'ಕನ್ನಡ', 'kn|kannada', '', ), 'ksh' => array( 'ksh', 'Colognian', 'Kölsch', 'ksh|colognian', '', ), 'ky' => array( 'ky', 'Kyrgyz', 'Кыргызча', 'ky|kyrgyz', '', ), 'li' => array( 'li', 'Limburgish', 'Lèmbörgs', 'li|limburgish', '', ), 'lt' => array( 'lt', 'Lithuanian', 'Lietuvių', 'lt|lithuanian', 'lt_LT', ), 'lv' => array( 'lv', 'Latvian', 'Latviešu', 'lv|latvian', 'lv_LV', ), 'mk' => array( 'mk', 'Macedonian', 'Macedonian', 'mk|macedonian', 'mk_MK', ), 'ml' => array( 'ml', 'Malayalam', 'Malayalam', 'ml|malayalam', '', ), 'mn' => array( 'mn', 'Mongolian', 'Монгол', 'mn|mongolian', 'mn_MN', ), 'ms' => array( 'ms', 'Malay', 'Bahasa Melayu', 'ms|malay', 'ms_MY', ), 'ne' => array( 'ne', 'Nepali', 'नेपाली', 'ne|nepali', '', ), 'nb' => array( 'nb', 'Norwegian', 'Norsk', 'nb|norwegian', 'nb_NO', ), 'nl' => array( 'nl', 'Dutch', 'Nederlands', 'nl|dutch', 'nl_NL', ), 'pa' => array( 'pa', 'Punjabi', 'ਪੰਜਾਬੀ', 'pa|punjabi', '', ), 'pl' => array( 'pl', 'Polish', 'Polski', 'pl|polish', 'pl_PL', ), 'pt_br' => array( 'pt_BR', 'Brazilian Portuguese', 'Português', 'pt[-_]br|brazilian portuguese', 'pt_BR', ), 'pt' => array( 'pt', 'Portuguese', 'Português', 'pt|portuguese', 'pt_PT', ), 'ro' => array( 'ro', 'Romanian', 'Română', 'ro|romanian', 'ro_RO', ), 'ru' => array( 'ru', 'Russian', 'Русский', 'ru|russian', 'ru_RU', ), 'si' => array( 'si', 'Sinhala', 'සිංහල', 'si|sinhala', '', ), 'sk' => array( 'sk', 'Slovak', 'Slovenčina', 'sk|slovak', 'sk_SK', ), 'sl' => array( 'sl', 'Slovenian', 'Slovenščina', 'sl|slovenian', 'sl_SI', ), 'sq' => array( 'sq', 'Slbanian', 'Shqip', 'sq|albanian', 'sq_AL', ), 'sr@latin' => array( 'sr@latin', 'Serbian (latin)', 'Srpski', 'sr[-_]lat|sr@latin|serbian latin', 'sr_YU', ), 'sr' => array( 'sr', 'Serbian', 'Српски', 'sr|serbian', 'sr_YU', ), 'sv' => array( 'sv', 'Swedish', 'Svenska', 'sv|swedish', 'sv_SE', ), 'ta' => array( 'ta', 'Tamil', 'தமிழ்', 'ta|tamil', 'ta_IN', ), 'te' => array( 'te', 'Telugu', 'తెలుగు', 'te|telugu', 'te_IN', ), 'th' => array( 'th', 'Thai', 'ภาษาไทย', 'th|thai', 'th_TH', ), 'tk' => array( 'tk', 'Turkmen', 'Türkmençe', 'tk|turkmen', '', ), 'tr' => array( 'tr', 'Turkish', 'Türkçe', 'tr|turkish', 'tr_TR', ), 'tt' => array( 'tt', 'Tatarish', 'Tatarça', 'tt|tatarish', '', ), 'ug' => array( 'ug', 'Uyghur', 'ئۇيغۇرچە', 'ug|uyghur', '', ), 'uk' => array( 'uk', 'Ukrainian', 'Українська', 'uk|ukrainian', 'uk_UA', ), 'ur' => array( 'ur', 'Urdu', 'اُردوُ', 'ur|urdu', 'ur_PK', ), 'uz@latin' => array( 'uz@latin', 'Uzbek (latin)', 'O‘zbekcha', 'uz[-_]lat|uz@latin|uzbek-latin', '', ), 'uz' => array( 'uz', 'Uzbek (cyrillic)', 'Ўзбекча', 'uz[-_]cyr|uz@cyrillic|uzbek-cyrillic', '', ), 'vi' => array( 'vi', 'Vietnamese', 'Tiếng Việt', 'vi|vietnamese', 'vi_VN', ), 'vls' => array( 'vls', 'Flemish', 'West-Vlams', 'vls|flemish', '', ), 'zh_tw' => array( 'zh_TW', 'Chinese traditional', '中文', 'zh[-_](tw|hk)|chinese traditional', 'zh_TW', ), // only TW and HK use traditional Chinese while others (CN, SG, MY) // use simplified Chinese 'zh_cn' => array( 'zh_CN', 'Chinese simplified', '中文', 'zh(?)([-_][[:alpha:]]{2,3})?|chinese simplified', 'zh_CN', ), ); private $_available_locales; private $_available_languages; private $_lang_failed_cfg; private $_lang_failed_cookie; private $_lang_failed_request; private static $instance; /** * Returns LanguageManager singleton * * @return LanguageManager */ public static function getInstance() { if (self::$instance === NULL) { self::$instance = new LanguageManager; } return self::$instance; } /** * Returns list of available locales * * @return array */ public function listLocaleDir() { $result = array('en'); /* Check for existing directory */ if (!is_dir(LOCALE_PATH)) { return $result; } /* Open the directory */ $handle = @opendir(LOCALE_PATH); /* This can happen if the kit is English-only */ if ($handle === false) { return $result; } /* Process all files */ while (false !== ($file = readdir($handle))) { $path = LOCALE_PATH . '/' . $file . '/LC_MESSAGES/phpmyadmin.mo'; if ($file != "." && $file != ".." && @file_exists($path) ) { $result[] = $file; } } /* Close the handle */ closedir($handle); return $result; } /** * Returns (cached) list of all available locales * * @return array of strings */ public function availableLocales() { if (! $this->_available_locales) { if (empty($GLOBALS['cfg']['FilterLanguages'])) { $this->_available_locales = $this->listLocaleDir(); } else { $this->_available_locales = preg_grep( '@' . $GLOBALS['cfg']['FilterLanguages'] . '@', $this->listLocaleDir() ); } } return $this->_available_locales; } /** * Returns (cached) list of all available languages * * @return array of Language objects */ public function availableLanguages() { if (! $this->_available_languages) { $this->_available_languages = array(); foreach($this->availableLocales() as $lang) { $lang = strtolower($lang); if (isset($this::$_language_data[$lang])) { $data = $this::$_language_data[$lang]; $this->_available_languages[$lang] = new Language( $data[0], $data[1], $data[2], $data[3], $data[4] ); } else { $this->_available_languages[$lang] = new Language( $lang, ucfirst($lang), ucfirst($lang), $lang, '' ); } } } return $this->_available_languages; } /** * Returns (cached) list of all available languages sorted * by name * * @return array of Language objects */ public function sortedLanguages() { $this->availableLanguages(); uasort($this->_available_languages, function($a, $b) { return $a->cmp($b); } ); return $this->_available_languages; } /** * Return Language object for given code * * @param string $code Language code * * @return object|false Language object or false on failure */ public function getLanguage($code) { $code = strtolower($code); $langs = $this->availableLanguages(); if (isset($langs[$code])) { return $langs[$code]; } return false; } /** * Return currently active Language object * * @return object Language object */ public function getCurrentLanguage() { return $this->_available_languages[strtolower($GLOBALS['lang'])]; } /** * Activates language based on configuration, user preferences or * browser * * @return Language */ public function selectLanguage() { // check forced language if (! empty($GLOBALS['cfg']['Lang'])) { $lang = $this->getLanguage($GLOBALS['cfg']['Lang']); if ($lang !== false) { return $lang; } $this->_lang_failed_cfg = true; } // Don't use REQUEST in following code as it might be confused by cookies // with same name. Check user requested language (POST) if (! empty($_POST['lang'])) { $lang = $this->getLanguage($_POST['lang']); if ($lang !== false) { return $lang; } $this->_lang_failed_request = true; } // check user requested language (GET) if (! empty($_GET['lang'])) { $lang = $this->getLanguage($_GET['lang']); if ($lang !== false) { return $lang; } $this->_lang_failed_request = true; } // check previous set language if (! empty($_COOKIE['pma_lang'])) { $lang = $this->getLanguage($_COOKIE['pma_lang']); if ($lang !== false) { return $lang; } $this->_lang_failed_cookie = true; } $langs = $this->availableLanguages(); // try to find out user's language by checking its HTTP_ACCEPT_LANGUAGE variable; $accepted_languages = PMA_getenv('HTTP_ACCEPT_LANGUAGE'); if ($accepted_languages) { foreach (explode(',', $accepted_languages) as $header) { foreach ($langs as $language) { if ($language->matchesAcceptLanguage($header)) { return $language; } } } } // try to find out user's language by checking its HTTP_USER_AGENT variable $user_agent = PMA_getenv('HTTP_USER_AGENT'); if (! empty($user_agent)) { foreach ($langs as $language) { if ($language->matchesUserAgent($user_agent)) { return $language; } } } // Didn't catch any valid lang : we use the default settings if (isset($langs[$GLOBALS['cfg']['DefaultLang']])) { return $langs[$GLOBALS['cfg']['DefaultLang']]; } // Fallback to English return $langs['en']; } /** * Displays warnings about invalid languages. This needs to be postponed * to show messages at time when language is initialized. * * @return void */ public function showWarnings() { // now, that we have loaded the language strings we can send the errors if ($this->_lang_failed_cfg || $this->_lang_failed_cookie || $this->_lang_failed_request ) { trigger_error( __('Ignoring unsupported language code.'), E_USER_ERROR ); } } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
bfShapeFiles | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
controllers | Folder | 0755 |
|
|
dbi | Folder | 0755 |
|
|
di | Folder | 0755 |
|
|
engines | Folder | 0755 |
|
|
gis | Folder | 0755 |
|
|
navigation | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
properties | Folder | 0755 |
|
|
rte | Folder | 0755 |
|
|
sql-parser | Folder | 0755 |
|
|
Advisor.php | File | 15.13 KB | 0644 |
|
Config.php | File | 54.7 KB | 0644 |
|
Console.php | File | 14.82 KB | 0644 |
|
DatabaseInterface.php | File | 95.6 KB | 0644 |
|
DbList.php | File | 1.9 KB | 0644 |
|
DbQbe.php | File | 68.87 KB | 0644 |
|
DbSearch.php | File | 17.21 KB | 0644 |
|
DisplayResults.php | File | 206 KB | 0644 |
|
Error.php | File | 12.7 KB | 0644 |
|
ErrorHandler.php | File | 16.48 KB | 0644 |
|
File.php | File | 18.82 KB | 0644 |
|
Font.php | File | 4.24 KB | 0644 |
|
Footer.php | File | 10.52 KB | 0644 |
|
Header.php | File | 25.34 KB | 0644 |
|
Index.php | File | 23.79 KB | 0644 |
|
IndexColumn.php | File | 4.46 KB | 0644 |
|
Language.php | File | 4.27 KB | 0644 |
|
LanguageManager.php | File | 20.75 KB | 0644 |
|
Linter.php | File | 5.02 KB | 0644 |
|
ListAbstract.php | File | 3.15 KB | 0644 |
|
ListDatabase.php | File | 4.62 KB | 0644 |
|
Menu.php | File | 21.14 KB | 0644 |
|
Message.php | File | 18.67 KB | 0644 |
|
OutputBuffering.php | File | 3.59 KB | 0644 |
|
PDF.php | File | 3.94 KB | 0644 |
|
Partition.php | File | 7.26 KB | 0644 |
|
Psr4Autoloader.php | File | 4.85 KB | 0644 |
|
RecentFavoriteTable.php | File | 11.78 KB | 0644 |
|
Response.php | File | 12.61 KB | 0644 |
|
SavedSearches.php | File | 11.67 KB | 0644 |
|
Scripts.php | File | 7.38 KB | 0644 |
|
ServerStatusData.php | File | 15.72 KB | 0644 |
|
StorageEngine.php | File | 13.61 KB | 0644 |
|
SubPartition.php | File | 3.52 KB | 0644 |
|
SysInfo.php | File | 799 B | 0644 |
|
SysInfoLinux.php | File | 1.92 KB | 0644 |
|
SysInfoSunOS.php | File | 1.86 KB | 0644 |
|
SysInfoWINNT.php | File | 3.08 KB | 0644 |
|
SystemDatabase.php | File | 3.66 KB | 0644 |
|
Table.php | File | 88.12 KB | 0644 |
|
Template.php | File | 4.45 KB | 0644 |
|
Theme.php | File | 11.34 KB | 0644 |
|
ThemeManager.php | File | 12.91 KB | 0644 |
|
Tracker.php | File | 30.35 KB | 0644 |
|
Types.php | File | 6.08 KB | 0644 |
|
TypesMySQL.php | File | 17.26 KB | 0644 |
|
Util.php | File | 172.46 KB | 0644 |
|
VersionInformation.php | File | 7.87 KB | 0644 |
|
ZipFile.php | File | 6.63 KB | 0644 |
|
advisor.lib.php | File | 1.6 KB | 0644 |
|
advisory_rules.txt | File | 25.94 KB | 0644 |
|
autoloader.php | File | 450 B | 0644 |
|
bookmark.lib.php | File | 8.5 KB | 0644 |
|
browse_foreigners.lib.php | File | 9.83 KB | 0644 |
|
central_columns.lib.php | File | 49.38 KB | 0644 |
|
charset_conversion.lib.php | File | 3.54 KB | 0644 |
|
check_user_privileges.lib.php | File | 10.65 KB | 0644 |
|
cleanup.lib.php | File | 1.29 KB | 0644 |
|
common.inc.php | File | 34.38 KB | 0644 |
|
config.default.php | File | 66.5 KB | 0644 |
|
config.values.php | File | 10.17 KB | 0644 |
|
core.lib.php | File | 29.94 KB | 0644 |
|
create_addfield.lib.php | File | 15.68 KB | 0644 |
|
database_interface.inc.php | File | 2.63 KB | 0644 |
|
db_common.inc.php | File | 3.12 KB | 0644 |
|
db_designer.lib.php | File | 10.4 KB | 0644 |
|
db_table_exists.lib.php | File | 3.21 KB | 0644 |
|
display_change_password.lib.php | File | 5.45 KB | 0644 |
|
display_create_table.lib.php | File | 1.53 KB | 0644 |
|
display_export.lib.php | File | 38.11 KB | 0644 |
|
display_git_revision.lib.php | File | 3.04 KB | 0644 |
|
display_import.lib.php | File | 24.34 KB | 0644 |
|
display_import_ajax.lib.php | File | 3.13 KB | 0644 |
|
display_select_lang.lib.php | File | 2.36 KB | 0644 |
|
error.inc.php | File | 1.21 KB | 0644 |
|
error_report.lib.php | File | 10.25 KB | 0644 |
|
export.lib.php | File | 35.16 KB | 0644 |
|
file_listing.lib.php | File | 2.37 KB | 0644 |
|
iconv_wrapper.lib.php | File | 3.88 KB | 0644 |
|
import.lib.php | File | 50.64 KB | 0644 |
|
index.lib.php | File | 1.37 KB | 0644 |
|
information_schema_relations.lib.php | File | 10.95 KB | 0644 |
|
insert_edit.lib.php | File | 112.79 KB | 0644 |
|
ip_allow_deny.lib.php | File | 9.35 KB | 0644 |
|
js_escape.lib.php | File | 4.43 KB | 0644 |
|
kanji-encoding.lib.php | File | 4.46 KB | 0644 |
|
language_stats.inc.php | File | 1.45 KB | 0644 |
|
logging.lib.php | File | 521 B | 0644 |
|
mime.lib.php | File | 704 B | 0644 |
|
mult_submits.inc.php | File | 10.64 KB | 0644 |
|
mult_submits.lib.php | File | 20.44 KB | 0644 |
|
mysql_charsets.inc.php | File | 4.09 KB | 0644 |
|
mysql_charsets.lib.php | File | 10.47 KB | 0644 |
|
mysql_relations.lib.php | File | 5.12 KB | 0644 |
|
normalization.lib.php | File | 33.98 KB | 0644 |
|
opendocument.lib.php | File | 7.94 KB | 0644 |
|
operations.lib.php | File | 73.64 KB | 0644 |
|
parse_analyze.lib.php | File | 2.12 KB | 0644 |
|
plugin_interface.lib.php | File | 19.69 KB | 0644 |
|
plugin_interface.lib.php.bak | File | 19.69 KB | 0644 |
|
pmd_common.php | File | 24.2 KB | 0644 |
|
relation.lib.php | File | 68.41 KB | 0644 |
|
relation_cleanup.lib.php | File | 13.84 KB | 0644 |
|
replication.inc.php | File | 8.82 KB | 0644 |
|
replication_gui.lib.php | File | 37.45 KB | 0644 |
|
sanitizing.lib.php | File | 6.3 KB | 0644 |
|
select_server.lib.php | File | 3.4 KB | 0644 |
|
server_common.inc.php | File | 1.22 KB | 0644 |
|
server_common.lib.php | File | 1.92 KB | 0644 |
|
server_privileges.lib.php | File | 179.22 KB | 0644 |
|
server_status.lib.php | File | 9.92 KB | 0644 |
|
server_status_advisor.lib.php | File | 1.89 KB | 0644 |
|
server_status_monitor.lib.php | File | 26.22 KB | 0644 |
|
server_status_processes.lib.php | File | 9.57 KB | 0644 |
|
server_status_queries.lib.php | File | 4.86 KB | 0644 |
|
server_status_variables.lib.php | File | 28.95 KB | 0644 |
|
server_user_groups.lib.php | File | 12.8 KB | 0644 |
|
server_users.lib.php | File | 1.35 KB | 0644 |
|
session.inc.php | File | 5.22 KB | 0644 |
|
session.lib.php | File | 735 B | 0644 |
|
special_schema_links.lib.php | File | 17.51 KB | 0644 |
|
sql.lib.php | File | 77.51 KB | 0644 |
|
sql.lib.php.bak | File | 77.51 KB | 0644 |
|
sql_query_form.lib.php | File | 15.71 KB | 0644 |
|
string.lib.php | File | 800 B | 0644 |
|
stringMb.lib.php | File | 1.86 KB | 0644 |
|
stringNative.lib.php | File | 6.82 KB | 0644 |
|
sysinfo.lib.php | File | 1.34 KB | 0644 |
|
tbl_columns_definition_form.inc.php | File | 13.55 KB | 0644 |
|
tbl_common.inc.php | File | 1.3 KB | 0644 |
|
tbl_info.inc.php | File | 3.54 KB | 0644 |
|
tbl_partition_definition.inc.php | File | 5.55 KB | 0644 |
|
tracking.lib.php | File | 54.93 KB | 0644 |
|
transformations.lib.php | File | 14.63 KB | 0644 |
|
url_generating.lib.php | File | 6.77 KB | 0644 |
|
user_preferences.inc.php | File | 2.38 KB | 0644 |
|
user_preferences.lib.php | File | 8.17 KB | 0644 |
|
util.lib.php | File | 749 B | 0644 |
|
vendor_config.php | File | 2.49 KB | 0644 |
|
zip_extension.lib.php | File | 5.38 KB | 0644 |
|