[ mikis @ 28.07.2003. 03:37 ] @
Spremam se da napravim prevod phpMyAdmin jezičkog fajla, iz latinice u ćirilicu. Interesuje me vaše mišljenje, koji je najjednostavniji način da se ovo uradi? Kao što verovatno znate, fajl je PHP oblika:

Code:

<?php
/* $Id: serbian-windows-1250.inc.php3,v 1.97 2003/07/23 19:38:39 rabus Exp $ */

/**
 * Translated by: ...
 */

$charset = 'windows-1250';

// shortcuts for Byte, Kilo, Mega, Giga, Tera, Peta, Exa
$byteUnits = array('bajtova', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');

$strAccessDenied = 'Pristup odbijen';
$strAction = 'Akcija';

...


Znači, treba prevesti samo ono što je pod 'navodnicima' a preskočiti nazive promeljivih i komenare, s tim što treba voditi računa i o situacijama kao što je:

$strStrucDrop = 'Dodaj \'DROP TABLE\'';

(samu rutinu za UTF8 ćirilično/latiničnu konverziju već imam)
[ bOkIcA @ 28.07.2003. 14:23 ] @

...vidim da si izbacio cirilicnu verziju.

Ti jos treba pomoc oko ovoga?
[ mikis @ 28.07.2003. 21:27 ] @
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", ...
[ CONFIQ @ 05.08.2003. 07:51 ] @
što smešno zvuči

_______________________________________________
Dobrodošli na phpMyAdmin 2.5.3-rc1

MySQL 4.0.14 pokrenut na localhost, prijavljen kao confiq@localhost
_______________________________________________
(na ćirilici)
Defitivno.... Drugačije... Nego šta ako želim da bude UTF-8?

P.S. Znam da je off-topic al i onako je stara tema....

~Say FiQ