diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Language.php | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Language.php')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Language.php | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Language.php b/srcs/phpmyadmin/libraries/classes/Language.php new file mode 100644 index 0000000..d88fdf9 --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/Language.php @@ -0,0 +1,204 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Hold the PhpMyAdmin\Language class + * + * @package PhpMyAdmin + */ +declare(strict_types=1); + +namespace PhpMyAdmin; + +use PhpMyAdmin\LanguageManager; + +/** + * Language object + * + * @package PhpMyAdmin + */ +class Language +{ + protected $code; + protected $name; + protected $native; + protected $regex; + protected $mysql; + + /** + * Constructs the Language object + * + * @param string $code Language code + * @param string $name English name + * @param string $native Native name + * @param string $regex Match regullar expression + * @param string $mysql MySQL locale code + * + */ + public function __construct($code, $name, $native, $regex, $mysql) + { + $this->code = $code; + $this->name = $name; + $this->native = $native; + if (strpos($regex, '[-_]') === false) { + $regex = str_replace('|', '([-_][[:alpha:]]{2,3})?|', $regex); + } + $this->regex = $regex; + $this->mysql = $mysql; + } + + /** + * Returns native name for language + * + * @return string + */ + public function getNativeName() + { + return $this->native; + } + + /** + * Returns English name for language + * + * @return string + */ + public function getEnglishName() + { + return $this->name; + } + + /** + * Returns verbose name for language + * + * @return string + */ + public function getName() + { + if (! empty($this->native)) { + return $this->native . ' - ' . $this->name; + } + + return $this->name; + } + + /** + * Returns language code + * + * @return string + */ + public function getCode() + { + return $this->code; + } + + /** + * Returns MySQL locale code, can be empty + * + * @return string + */ + public function getMySQLLocale() + { + return $this->mysql; + } + + /** + * Compare function used for sorting + * + * @param Language $other Other object to compare + * + * @return int same as strcmp + */ + public function cmp($other) + { + return strcmp($this->name, $other->name); + } + + /** + * Checks whether language is currently active. + * + * @return bool + */ + public function isActive() + { + return $GLOBALS['lang'] == $this->code; + } + + /** + * Checks whether language matches HTTP header Accept-Language. + * + * @param string $header Header content + * + * @return bool + */ + public function matchesAcceptLanguage($header) + { + $pattern = '/^(' + . addcslashes($this->regex, '/') + . ')(;q=[0-9]\\.[0-9])?$/i'; + return preg_match($pattern, $header); + } + + /** + * Checks whether language matches HTTP header User-Agent + * + * @param string $header Header content + * + * @return bool + */ + public function matchesUserAgent($header) + { + $pattern = '/(\(|\[|;[[:space:]])(' + . addcslashes($this->regex, '/') + . ')(;|\]|\))/i'; + return preg_match($pattern, $header); + } + + /** + * Checks whether language is RTL + * + * @return bool + */ + public function isRTL() + { + return in_array($this->code, ['ar', 'fa', 'he', 'ur']); + } + + /** + * Activates given translation + * + * @return void + */ + public function activate() + { + $GLOBALS['lang'] = $this->code; + + // Set locale + _setlocale(0, $this->code); + _bindtextdomain('phpmyadmin', LOCALE_PATH); + _textdomain('phpmyadmin'); + // Set PHP locale as well + if (function_exists('setlocale')) { + setlocale(0, $this->code); + } + + /* Text direction for language */ + if ($this->isRTL()) { + $GLOBALS['text_dir'] = 'rtl'; + } else { + $GLOBALS['text_dir'] = 'ltr'; + } + + /* TCPDF */ + $GLOBALS['l'] = []; + + /* TCPDF settings */ + $GLOBALS['l']['a_meta_charset'] = 'UTF-8'; + $GLOBALS['l']['a_meta_dir'] = $GLOBALS['text_dir']; + $GLOBALS['l']['a_meta_language'] = $this->code; + + /* TCPDF translations */ + $GLOBALS['l']['w_page'] = __('Page number:'); + + /* Show possible warnings from langauge selection */ + LanguageManager::getInstance()->showWarnings(); + } +} |
