Permalink
Browse files

Separate languages

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@267 7c3ca157-0c34-0410-bff1-cbf682f78f5c
  • Loading branch information...
1 parent 1f429ac commit 438ca058ef4b4011d1642a53fac342f193c43671 jakubvrana committed Jul 26, 2007
Showing with 197 additions and 185 deletions.
  1. +17 −8 _compile.php
  2. +14 −13 _lang.php
  3. +1 −0 index.php
  4. +3 −164 lang.inc.php
  5. +154 −0 lang/cs.inc.php
  6. +8 −0 lang/en.inc.php
View
@@ -4,21 +4,29 @@ function add_apo_slashes($s) {
}
function remove_lang($match) {
- $s = lang(strtr($match[2], array("\\'" => "'", "\\\\" => "\\")), false);
+ global $LANG, $translations;
+ $idf = strtr($match[2], array("\\'" => "'", "\\\\" => "\\"));
+ $s = ($translations[$LANG][$idf] ? $translations[$LANG][$idf] : $idf);
if ($match[3] == ",") {
return "$match[1]" . (is_array($s) ? "lang(array('" . implode("', '", array_map('add_apo_slashes', $s)) . "')," : "sprintf('" . add_apo_slashes($s) . "',");
}
return ($match[1] && $match[4] ? $s : "$match[1]'" . add_apo_slashes($s) . "'$match[4]");
}
function put_file($match) {
- $return = file_get_contents($match[4]);
- if ($match[4] == "./lang.inc.php") {
+ if ($match[4] == './lang/$LANG.inc.php') {
+ $return = "";
if (!$_COOKIE["lang"]) {
- $return = str_replace("\tif (\$number === false) { // used in _compile.php\n\t\treturn (\$translation ? \$translation : \$idf);\n\t}\n", "", $return);
- } elseif (preg_match("~case '$_COOKIE[lang]': (.*) break;~", $return, $match2) || preg_match("~default: (.*)~", $return, $match2)) {
- return "$match[1]\nfunction lang(\$ar, \$number) {\n\t$match2[1]\n\treturn \$ar[\$pos];\n}\n$match[5]";
+ foreach (glob("./lang/*.inc.php") as $filename) {
+ $match[4] = $filename;
+ $return .= put_file($match);
+ }
}
+ return $return;
+ }
+ $return = file_get_contents($match[4]);
+ if ($match[4] == "./lang.inc.php" && $_COOKIE["lang"] && (preg_match("~case '$_COOKIE[lang]': (.*) break;~", $return, $match2) || preg_match("~default: (.*)~", $return, $match2))) {
+ return "$match[1]\nfunction lang(\$ar, \$number) {\n\t$match2[1]\n\treturn sprintf(\$ar[\$pos], \$number);\n}\n$match[5]";
}
$return = preg_replace("~\\?>\n?\$~", '', $return);
if (substr_count($return, "<?php") <= substr_count($return, "?>") && !$match[5]) {
@@ -41,6 +49,7 @@ function put_file($match) {
echo "Usage: php _compile.php [lang]\nPurpose: Compile phpMinAdmin[-lang].php from index.php.\n";
exit(1);
}
+ include "./lang/$_COOKIE[lang].inc.php";
}
$filename = "phpMinAdmin.php";
$file = file_get_contents("index.php");
@@ -53,8 +62,8 @@ function put_file($match) {
$file = str_replace("<?php switch_lang(); ?>\n", "", $file);
$file = str_replace('<?php echo $LANG; ?>', $_COOKIE["lang"], $file);
}
-$file = str_replace("favicon.ico", '<?php echo preg_replace("~\\?.*~", "", $_SERVER["REQUEST_URI"]) . "?favicon="; ?>', $file);
-$file = str_replace("arrow.gif", '" . preg_replace("~\\?.*~", "", $_SERVER["REQUEST_URI"]) . "?gif=arrow', $file);
+$file = str_replace("favicon.ico", '<?php echo preg_replace("~\\\\?.*~", "", $_SERVER["REQUEST_URI"]) . "?favicon="; ?>', $file);
+$file = str_replace("arrow.gif", '" . preg_replace("~\\\\?.*~", "", $_SERVER["REQUEST_URI"]) . "?gif=arrow', $file);
$file = str_replace('session_start();', "if (isset(\$_GET['favicon'])) {\n\theader('Content-Type: image/x-icon');\n\techo base64_decode('" . base64_encode(file_get_contents("favicon.ico")) . "');\n\texit;\n} elseif (isset(\$_GET['gif'])) {\n\theader('Content-Type: image/gif');\n\techo base64_decode('" . base64_encode(file_get_contents("arrow.gif")) . "');\n\texit;\n}\n\nsession_start();", $file);
$file = str_replace('<link rel="stylesheet" type="text/css" href="default.css" />', "<style type='text/css'>\n" . file_get_contents("default.css") . "</style>", $file);
file_put_contents($filename, $file);
View
@@ -1,7 +1,11 @@
<?php
if ($_SERVER["argc"] > 1) {
- echo "Usage: php _lang.php\nPurpose: Update lang.inc.php from source code messages.\n";
- exit(1);
+ $_COOKIE["lang"] = $_SERVER["argv"][1];
+ include "./lang.inc.php";
+ if ($_SERVER["argc"] != 2 || !isset($translations[$_COOKIE["lang"]])) {
+ echo "Usage: php _lang.php [lang]\nPurpose: Update lang.inc.php from source code messages.\n";
+ exit(1);
+ }
}
$messages_all = array();
@@ -12,12 +16,10 @@
}
}
-$file = file_get_contents("lang.inc.php");
-preg_match_all("~\n\t'(.*)' => array\\(\n(.*\n)\t\\)~sU", $file, $translations, PREG_OFFSET_CAPTURE);
-foreach (array_reverse($translations[2], true) as $key => $translation) {
+foreach (($_COOKIE["lang"] ? array("lang/$_COOKIE[lang].inc.php") : glob("lang/*.inc.php")) as $filename) {
$messages = $messages_all;
- preg_match_all("~^(\\s*)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => .*[^,\n]),?~m", $translation[0], $matches, PREG_SET_ORDER);
- $s = "";
+ preg_match_all("~^(\\s*)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => .*[^,\n]),?~m", file_get_contents($filename), $matches, PREG_SET_ORDER);
+ $s = "<?php\n\$translations['" . basename($filename, ".inc.php") . "'] = array(\n";
foreach ($matches as $match) {
if (isset($messages[$match[3]])) {
$s .= "$match[1]$match[2],\n";
@@ -28,12 +30,11 @@
}
foreach($messages as $idf => $val) {
if ($val == "," && strpos($idf, "%d")) {
- $s .= "\t\t$idf => array(),\n";
- } elseif ($translations[1][$key][0] != 'en') {
- $s .= "\t\t$idf => '',\n";
+ $s .= "\t$idf => array(),\n";
+ } elseif ($filename != "lang/en.inc.php") {
+ $s .= "\t$idf => '',\n";
}
}
- $file = substr_replace($file, $s, $translation[1], strlen($translation[0]));
+ file_put_contents($filename, "$s);\n");
+ echo "$filename modified.\n";
}
-file_put_contents("lang.inc.php", $file);
-echo "lang.inc.php modified.\n";
View
@@ -7,6 +7,7 @@
$TOKENS = &$_SESSION["tokens"][$_GET["server"]][$_SERVER["REQUEST_URI"]];
include "./functions.inc.php";
include "./lang.inc.php";
+include "./lang/$LANG.inc.php";
include "./design.inc.php";
include "./abstraction.inc.php";
include "./auth.inc.php";
View
@@ -1,173 +1,12 @@
<?php
static $translations = array(
- 'en' => array(
- 'Query executed OK, %d row(s) affected.' => array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'),
- '%d byte(s)' => array('%d byte', '%d bytes'),
- 'Routine has been called, %d row(s) affected.' => array('Routine has been called, %d row affected.', 'Routine has been called, %d rows affected.'),
- '%d process(es) has been killed.' => array('%d process has been killed.', '%d processes have been killed.'),
- '%d row(s)' => array('%d row', '%d rows'),
- ),
- 'cs' => array(
- 'Login' => 'Přihlásit se',
- 'phpMinAdmin' => 'phpMinAdmin',
- 'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
- 'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
- 'Server' => 'Server',
- 'Username' => 'Uživatel',
- 'Password' => 'Heslo',
- 'Select database' => 'Vybrat databázi',
- 'Invalid database.' => 'Nesprávná databáze.',
- 'Create new database' => 'Vytvořit novou databázi',
- 'Table has been dropped.' => 'Tabulka byla odstraněna.',
- 'Table has been altered.' => 'Tabulka byla změněna.',
- 'Table has been created.' => 'Tabulka byla vytvořena.',
- 'Alter table' => 'Pozměnit tabulku',
- 'Create table' => 'Vytvořit tabulku',
- 'Unable to operate table' => 'Nepodařilo se zpracovat tabulku',
- 'Table name' => 'Název tabulky',
- 'engine' => 'úložiště',
- 'collation' => 'porovnávání',
- 'Column name' => 'Název sloupce',
- 'Type' => 'Typ',
- 'Length' => 'Délka',
- 'NULL' => 'NULL',
- 'Auto Increment' => 'Auto Increment',
- 'Options' => 'Volby',
- 'Save' => 'Uložit',
- 'Drop' => 'Odstranit',
- 'Database has been dropped.' => 'Databáze byla odstraněna.',
- 'Database has been created.' => 'Databáze byla vytvořena.',
- 'Database has been renamed.' => 'Databáze byla přejmenována.',
- 'Database has been altered.' => 'Databáze byla změněna.',
- 'Alter database' => 'Pozměnit databázi',
- 'Create database' => 'Vytvořit databázi',
- 'Unable to operate database' => 'Nepodařilo se zpracovat databázi',
- 'SQL command' => 'SQL příkaz',
- 'Dump' => 'Export',
- 'Logout' => 'Odhlásit',
- 'database' => 'databáze',
- 'Use' => 'Vybrat',
- 'No tables.' => 'Žádné tabulky.',
- 'select' => 'vypsat',
- 'Create new table' => 'Vytvořit novou tabulku',
- 'Item has been deleted.' => 'Položka byla smazána.',
- 'Item has been updated.' => 'Položka byla aktualizována.',
- 'Item has been inserted.' => 'Položka byla vložena.',
- 'Edit' => 'Upravit',
- 'Insert' => 'Vložit',
- 'Error during saving' => 'Chyba při ukládání',
- 'Save and insert' => 'Uložit a vložit',
- 'Delete' => 'Smazat',
- 'Database' => 'Databáze',
- 'Routines' => 'Procedury',
- 'Indexes has been altered.' => 'Indexy byly změněny.',
- 'Indexes' => 'Indexy',
- 'Unable to operate indexes' => 'Nepodařilo se zpracovat indexy',
- 'Alter indexes' => 'Pozměnit indexy',
- 'Add next' => 'Přidat další',
- 'Language' => 'Jazyk',
- 'Select' => 'Vypsat',
- 'New item' => 'Nová položka',
- 'Search' => 'Vyhledat',
- 'Sort' => 'Setřídit',
- 'DESC' => 'sestupně',
- 'Limit' => 'Limit',
- 'No rows.' => 'Žádné řádky.',
- 'Action' => 'Akce',
- 'edit' => 'upravit',
- 'Page' => 'Stránka',
- 'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'),
- 'Error in query' => 'Chyba v dotazu',
- 'Execute' => 'Provést',
- 'Table' => 'Tabulka',
- 'Foreign keys' => 'Cizí klíče',
- 'Triggers' => 'Triggery',
- 'View' => 'Pohled',
- 'Unable to select the table' => 'Nepodařilo se vypsat tabulku',
- 'Unable to show the table definition' => 'Nepodařilo se získat strukturu tabulky',
- 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
- 'Comment' => 'Komentář',
- 'Default values has been set.' => 'Výchozí hodnoty byly nastaveny.',
- 'Default values' => 'Výchozí hodnoty',
- 'BOOL' => 'BOOL',
- 'Show column comments' => 'Zobrazit komentáře sloupců',
- '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'),
- 'No commands to execute.' => 'Žádné příkazy k vykonání.',
- 'Unable to upload a file.' => 'Nepodařilo se nahrát soubor.',
- 'File upload' => 'Nahrání souboru',
- 'File uploads are disabled.' => 'Nahrávání souborů není povoleno.',
- 'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl změněn %d záznam.', 'Procedura byla zavolána, byly změněny %d záznamy.', 'Procedura byla zavolána, bylo změněno %d záznamů.'),
- 'Call' => 'Zavolat',
- 'Error during calling' => 'Chyba při volání',
- 'No MySQL extension' => 'Žádná MySQL extenze',
- 'None of supported PHP extensions (%s) are available.' => 'Není dostupná žádná z podporovaných PHP extenzí (%s).',
- 'Sessions must be enabled.' => 'Session proměnné musí být povolené.',
- 'Session expired, please login again.' => 'Session vypršela, přihlašte se prosím znovu.',
- 'Text length' => 'Délka textů',
- 'Syntax highlighting' => 'Zvýrazňování syntaxe',
- 'Foreign key has been dropped.' => 'Cizí klíč byl odstraněn.',
- 'Foreign key has been altered.' => 'Cizí klíč byl změněn.',
- 'Foreign key has been created.' => 'Cizí klíč byl vytvořen.',
- 'Foreign key' => 'Cizí klíč',
- 'Unable to operate foreign keys' => 'Nepodařilo se zpracovat cizí klíče',
- 'Target table' => 'Cílová tabulka',
- 'Change' => 'Změnit',
- 'Source' => 'Zdroj',
- 'Target' => 'Cíl',
- 'Add column' => 'Přidat sloupec',
- 'Alter' => 'Změnit',
- 'Add foreign key' => 'Přidat cizí klíč',
- 'ON DELETE' => 'Při smazání',
- 'ON UPDATE' => 'Při změně',
- 'Index Type' => 'Typ indexu',
- 'Column (length)' => 'Sloupec (délka)',
- 'View has been dropped.' => 'Pohled byl odstraněn.',
- 'View has been altered.' => 'Pohled byl změněn.',
- 'View has been created.' => 'Pohled byl vytvořen.',
- 'Alter view' => 'Pozměnit pohled',
- 'Create view' => 'Vytvořit pohled',
- 'Unable to operate view' => 'Nepodařilo se zpracovat pohled',
- 'Name' => 'Název',
- 'Process list' => 'Seznam procesů',
- '%d process(es) has been killed.' => array('Byl ukončen %d proces.', 'Byly ukončeny %d procesy.', 'Bylo ukončeno %d procesů.'),
- 'Unable to kill process' => 'Nepodařilo se ukončit proces.',
- 'Kill' => 'Ukončit',
- 'IN-OUT' => 'IN-OUT',
- 'Parameter name' => 'Název parametru',
- 'Database schema' => 'Schéma databáze',
- 'Create procedure' => 'Vytvořit proceduru',
- 'Create function' => 'Vytvořit funkci',
- 'Routine has been dropped.' => 'Procedura byla odstraněna.',
- 'Routine has been altered.' => 'Procedura byla změněna.',
- 'Routine has been created.' => 'Procedura byla vytvořena.',
- 'Alter function' => 'Změnit funkci',
- 'Alter procedure' => 'Změnit proceduru',
- 'Unable to operate routine' => 'Nepořadilo se zpracovat proceduru',
- 'Return type' => 'Návratový typ',
- 'Add trigger' => 'Přidat trigger',
- 'Trigger has been dropped.' => 'Trigger byl odstraněn.',
- 'Trigger has been altered.' => 'Trigger byl změněn.',
- 'Trigger has been created.' => 'Trigger byl vytvořen.',
- 'Alter trigger' => 'Změnit trigger',
- 'Create trigger' => 'Vytvořit trigger',
- 'Unable to operate trigger' => 'Nepořadilo se zpracovat trigger',
- 'Time' => 'Čas',
- 'Event' => 'Událost',
- 'MySQL version' => 'Verze MySQL',
- 'through PHP extension' => 'přes PHP extenzi',
- '%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'),
- 'ON UPDATE CURRENT_TIMESTAMP' => 'Při změně aktuální čas',
- 'Remove' => 'Odebrat',
- 'Are you sure?' => 'Opravdu?',
- ),
+ 'en' => array(),
+ 'cs' => array(),
);
function lang($idf, $number = null) {
global $LANG, $translations;
$translation = $translations[$LANG][$idf];
- if ($number === false) { // used in _compile.php
- return ($translation ? $translation : $idf);
- }
if (is_array($translation) && $translation) {
switch ($LANG) {
case 'cs': $pos = ($number == 1 ? 0 : (!$number || $number >= 5 ? 2 : 1)); break;
@@ -195,7 +34,7 @@ function switch_lang() {
$_COOKIE["lang"] = $_GET["lang"];
}
-if (strlen($_COOKIE["lang"])) {
+if (strlen($_COOKIE["lang"]) && isset($translations[$_COOKIE["lang"]])) {
$LANG = $_COOKIE["lang"];
} else {
$accept_language = array();
Oops, something went wrong.

0 comments on commit 438ca05

Please sign in to comment.