Da, nije toliki problem napraviti skript koji to rešava primenom "grube sile", ali voleo bih da zajedničkim snagama dođemo do sistemskog rešenja koje bi bilo primenljivo i u ostalim slučajevima prevođenja. Ako ovde uopšte ima zainteresovanih za tako nešto?
Trebalo je ukupno oko 3 sata za pravljenje skripta i upotrebljivog prevoda, od čega je najveći deo vremena potrošen na zezanje sa regularnim izrazima. Ceo skript ima odprilike 10-ak linija koda:
Code:
<?
$file = "serbian_lat-utf-8.inc.php";
$utf8lattocir = array (
"A" => "A", "B" => "B", "C" => "C", "D" => "D", "E" => "E",
"F" => "F", "G" => "G", "H" => "H", "I" => "I", "J" => "J",
"K" => "K", "L" => "L", "Lj" => "Lj", "M" => "M", "N" => "N",
"Nj" => "Nj", "O" => "O", "P" => "P", "R" => "R", "S" => "S",
"T" => "T", "U" => "U", "V" => "V", "Z" => "Z", "Š" => "Š",
"Ð" => "Đ", "Č" => "Č", "Ć" => "Ć", "Ž" => "Ž", "Dž" => "Dž",
"a" => "a", "b" => "b", "c" => "c", "d" => "d", "e" => "e",
"f" => "f", "g" => "g", "h" => "h", "i" => "i", "j" => "j",
"k" => "k", "l" => "l", "lj" => "lj", "m" => "m", "n" => "n",
"nj" => "nj", "o" => "o", "p" => "p", "r" => "r", "s" => "s",
"t" => "t", "u" => "u", "v" => "v", "z" => "z", "š" => "š",
"đ" => "đ", "č" => "č", "ć" => "ć", "ž" => "ž", "dž" => "dž" );
print "<pre>";
$lines = file($file);
foreach ($lines as $line) {
$words = explode(" ", $line);
foreach ($words as $word) {
if (preg_match("/@[\w]+/i", $word) or
preg_match("/[qwxy]/i", $word) or
preg_match("/[A-Z]{3,}/", $word)) {
echo $word . " ";
}
else {
echo strtr($word, $utf8lattocir) . " ";
}
}
}
print "</pre>";
?>
Mislim da je prilično jednostavan: čita liniju po liniju, i prebacuje sve reči u ćirilicu OSIM onih koje:
1) počinju sa @. Zapravo, treba napraviti regularni izraz koji odgovara reči koja počinje sa $ (znači naziv PHP promenljive). Nakon sat i nešto zezanja sa preg_match, eregi, strpos i sl., sve $ sam promenio u UltraEditu u @, pa nakon konverzije skriptom vratio nazad u $. Ima li neko rešenje za ovo?
2) sadrže slova koja ne postoje u srpskom - QWXY
3) sadrže 3 ili više velikih slova -- gotovo sve reči napisane velikim slovima u prevodu su engleski izrazi.
Ono što još treba dodati su regularni izrazi koji će obezbediti da se ne prevode:
1) html tagovi (<b>, <i>, <br />, ...), url-ovi i e-mail adrese
2) sve reči koje počinju sa % (%s, %pma_s1%, i sl.)
3) sve što počinje sa \ (\n, \r\n, i sl.)
i time se dobija 95% upotrebljiv prevod. Mene je mrzelo da se zezam oko poslednje tri stavke, pa sam to odradio ručno u UE. Ako neko ima volje i slobodnog vremena...
p.s. Baš lepo, ovo je izgleda jedini forum koji automatski ubija svu ćirilicu :( Slova u nizu iza znaka "=>" treba da budu ćirilična (ceo skript treba da bude u UTF-8). Npr:
Code:
..."H" => "X", ...