adminerevo/adminer/include/lang.inc.php

118 lines
5.3 KiB
PHP
Raw Normal View History

<?php
// not used in a single language version
$langs = array(
2011-02-08 18:58:33 +00:00
'en' => 'English', // Jakub Vrána - http://www.vrana.cz
2013-06-03 17:00:16 +00:00
'ar' => 'العربية', // Y.M Amine - Algeria - nbr7@live.fr
'bn' => 'বাংলা', // Dipak Kumar - dipak.ndc@gmail.com
'ca' => 'Català', // Joan Llosas
2011-02-08 18:58:33 +00:00
'cs' => 'Čeština', // Jakub Vrána - http://www.vrana.cz
'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com
2013-06-03 17:00:16 +00:00
'es' => 'Español', // Klemens Häckel - http://clickdimension.wordpress.com
'et' => 'Eesti', // Priit Kallas
2013-06-03 17:00:16 +00:00
'fa' => 'فارسی', // mojtaba barghbani - Iran - mbarghbani@gmail.com
'fr' => 'Français', // Francis Gagné, Aurélien Royer
2010-10-07 14:03:22 +00:00
'hu' => 'Magyar', // Borsos Szilárd (Borsosfi) - http://www.borsosfi.hu, info@borsosfi.hu
2013-06-03 17:00:16 +00:00
'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
'ko' => '한국어', // dalli - skcha67@gmail.com
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
2011-03-08 13:13:09 +00:00
'pl' => 'Polski', // Radosław Kowalewski - http://srsbiz.pl/
2013-12-20 23:06:11 +00:00
'pt' => 'Português', // André Dias
'pt-br' => 'Português (Brazil)', // Gian Live - gian@live.com, Davi Alexandre davi@davialexandre.com.br, RobertoPC - http://www.robertopc.com.br
'ro' => 'Limba Română', // .nick .messing - dot.nick.dot.messing@gmail.com
'ru' => 'Русский язык', // Maksim Izmaylov
2013-06-03 17:00:16 +00:00
'sk' => 'Slovenčina', // Ivan Suchy - http://www.ivansuchy.com, Juraj Krivda - http://www.jstudio.cz
'sl' => 'Slovenski', // Matej Ferlan - www.itdinamik.com, matej.ferlan@itdinamik.com
2012-09-01 15:47:29 +00:00
'sr' => 'Српски', // Nikola Radovanović - cobisimo@gmail.com
2013-06-03 17:00:16 +00:00
'ta' => 'த‌மிழ்', // G. Sampath Kumar, Chennai, India, sampathkumar11@gmail.com
2013-09-04 05:13:44 +00:00
'th' => 'ภาษาไทย', // Panya Saraphi, elect.tu@gmail.com - http://www.opencart2u.com/
2013-06-03 17:00:16 +00:00
'tr' => 'Türkçe', // Bilgehan Korkmaz - turktron.com
'uk' => 'Українська', // Valerii Kryzhov
2014-01-08 07:20:08 +00:00
'zh' => '简体中文', // Mr. Lodar, vea - urn2.net - vea.urn2@gmail.com
'zh-tw' => '繁體中文', // http://tzangms.com
2014-01-25 18:58:54 +00:00
'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com
2014-03-30 00:24:16 +00:00
'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
);
/** Get current language
* @return string
*/
function get_lang() {
global $LANG;
return $LANG;
}
/** Translate string
* @param string
* @param int
* @return string
*/
function lang($idf, $number = null) {
global $LANG, $translations;
2012-09-03 22:59:05 +00:00
$translation = ($translations[$idf] ? $translations[$idf] : $idf);
2011-07-11 15:33:55 +00:00
if (is_array($translation)) {
$pos = ($number == 1 ? 0
2011-05-06 21:08:11 +00:00
: ($LANG == 'cs' || $LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other
: ($LANG == 'fr' ? (!$number ? 0 : 1) // different forms for 0-1, other
: ($LANG == 'pl' ? ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2) // different forms for 1, 2-4, other
: ($LANG == 'sl' ? ($number % 100 == 1 ? 0 : ($number % 100 == 2 ? 1 : ($number % 100 == 3 || $number % 100 == 4 ? 2 : 3))) // different forms for 1, 2, 3-4, other
: ($LANG == 'lt' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1, 12-19, other
2012-08-24 09:52:10 +00:00
: ($LANG == 'ru' || $LANG == 'sr' || $LANG == 'uk' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1, 2-4, other
: 1
2012-03-27 06:24:58 +00:00
))))))); // http://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html
$translation = $translation[$pos];
}
$args = func_get_args();
array_shift($args);
2012-06-05 00:44:04 +00:00
$format = str_replace("%d", "%s", $translation);
if ($format != $translation) {
2014-03-20 04:56:42 +00:00
$args[0] = format_number($number);
2012-06-05 00:44:04 +00:00
}
return vsprintf($format, $args);
}
function switch_lang() {
2012-09-22 13:22:44 +00:00
global $LANG, $langs;
2012-09-07 06:32:42 +00:00
echo "<form action='' method='post'>\n<div id='lang'>";
2012-09-07 06:07:31 +00:00
echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();");
echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n";
2013-10-25 02:10:50 +00:00
echo "<input type='hidden' name='token' value='" . get_token() . "'>\n"; // $token may be empty in auth.inc.php
echo "</div>\n</form>\n";
}
2013-10-25 02:10:50 +00:00
if (isset($_POST["lang"]) && verify_token()) { // $error not yet available
2012-09-07 06:32:42 +00:00
cookie("adminer_lang", $_POST["lang"]);
$_SESSION["lang"] = $_POST["lang"]; // cookies may be disabled
$_SESSION["translations"] = array(); // used in compiled version
2012-09-07 06:32:42 +00:00
redirect(remove_from_uri());
}
$LANG = "en";
if (isset($langs[$_COOKIE["adminer_lang"]])) {
cookie("adminer_lang", $_COOKIE["adminer_lang"]);
$LANG = $_COOKIE["adminer_lang"];
} elseif (isset($langs[$_SESSION["lang"]])) {
$LANG = $_SESSION["lang"];
} else {
$accept_language = array();
preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~', str_replace("_", "-", strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])), $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$accept_language[$match[1]] = (isset($match[3]) ? $match[3] : 1);
}
arsort($accept_language);
foreach ($accept_language as $key => $q) {
if (isset($langs[$key])) {
$LANG = $key;
break;
}
$key = preg_replace('~-.*~', '', $key);
if (!isset($accept_language[$key]) && isset($langs[$key])) {
$LANG = $key;
break;
}
}
}