php - kopromis viac jazyčnej stránky

Programovacie jazyky, rady, poradňa...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

php - kopromis viac jazyčnej stránky

Príspevok od používateľa weroro »

Ahoj,
na tému multi-jazyčný web je tu niekoľko diskusií, ale stále sa neviem rozhodnúť.

Chcel by som nájsť nejaký kompromis medzi pomerne jednoduché vytvorenie VS. nízka systémová náročnosť.
Databázové riešenie je síce výborné ale je pomerne zle prenosné tj. ak by som vytváral web na rôznych hostingoch. Preto som ostal pri myšlienke súborov s jazykom.
Po dlhšej úvahe som skončil pri použití súboru so štruktúrou ini súboru, ale tu mi zas nesedí tá náročnosť na systém, keďže je ini súbor parsovaný do poľa, čo je podľa mňa blbosť využiť pri mutáciách napr. v 3 jazykoch pri stránke s 5 podstránkamy a pomerne väčšieho množstva pevného textu (nadpisy, labely, hlavičky, hinty). Je tu ešte možnosť použiť pre každý jazyk zvlášť súbor, ale to je zas neprehľadné (subjektívny pohľad).

Čo by ste navrhli vi ako kompromis človeku, ktorý nemá silný skill v PHP?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: php - kopromis viac jazyčnej stránky

Príspevok od používateľa audiotrack »

navrhol by som ti srať na subjektívne pohľady a použiť na každý jazyk zvlášť súbor. Ten súbor ale nerob ako ini, ale rovno do neho ulož pole, tzn:

Kód: Vybrať všetko

<?php
if (empty($lang) || !is_array($lang))
{
	$lang = array();
}

$lang = array_merge($lang, array(
    "CONST" => "konštanta",
    "NUMBER" => "číslo"
));
?>
a potom na stránke to vypíšeš ako echo $lang["NUMBER"];

stačí si načítať súbor s príslušným jazykom, teda include("lang/slovak.php"); a vybavené
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: php - kopromis viac jazyčnej stránky

Príspevok od používateľa S-player »

Mne osobne sa veľmi nepáči riešenie kde sú reťazce uložené v .PHP. Osobne som to poriešil tak ,že:

- Vytvoril som si zložku s názvom i18n ,do ktorej som si uložil dané jazykové mutácie. Všetky tieto mutácie sú uložené v .XML tz. i18n/en.xml, i18n/sk.xml atď...
- Vytvoril som si nový súbor (S triedou) Locale ,ktorá sa stará o výber daného stringu. V tejto triede si skontrolujem aktuálny jazyk (Ktorý mám uložený v session) a do premennej si uložím názov súboru napr. en.xml
- Pre výber daného stringu následne len zavolám funkciu L() (locale) tz. echo L("Hello"); (Samozrejme triedu treba includnúť do daného .php / Funkciu volať z triedy)
* Pokiaľ neexistuje súbor daného jazyka tak defaultný je stále en.xml / Pokiaľ neexistuje daný reťazec napríklad "Hello" tak len vypíšem tento predaný string...


// Je mi jasné ,že moje riešenie nieje také jednoduché ako to vyššie od audiotracka a pre niekoho možno aj zbytočne komplikované (Komplikovanejšie) no ja osobne preferujem toto :)
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: php - kopromis viac jazyčnej stránky

Príspevok od používateľa pcsiete »

S-player napísal: - Vytvoril som si zložku s názvom i18n ,do ktorej som si uložil dané jazykové mutácie. Všetky tieto mutácie sú uložené v .XML tz. i18n/en.xml, i18n/sk.xml atď...
- Vytvoril som si nový súbor (S triedou) Locale ,ktorá sa stará o výber daného stringu. V tejto triede si skontrolujem aktuálny jazyk (Ktorý mám uložený v session) a do premennej si uložím názov súboru napr. en.xml
- Pre výber daného stringu následne len zavolám funkciu L() (locale) tz. echo L("Hello"); (Samozrejme triedu treba includnúť do daného .php / Funkciu volať z triedy)
* Pokiaľ neexistuje súbor daného jazyka tak defaultný je stále en.xml / Pokiaľ neexistuje daný reťazec napríklad "Hello" tak len vypíšem tento predaný string...
Vyberať preklad z xml pri každom vypisovaní mi príde dosť pomalé. Lepšie je načítať si na začiatku všetky reťazce do arrayu a potom vypisovať.
Viacjazyčnú stránku by som riešil placeholdermi pre každý prekladaný reťazec (napr. pre "Vitajte na stránkach" by to bolo niečo ako $(welcome-msg)) a pri zobrazovaní stránky by som všetky výskyty tohoto reťazca nahradil jeho ekvivalentom pre aktívny jazyk. Niečo také pre 100% efektivitu potrebuje aj trochu úprav v kóde interpretera alebo servera.

Najlepšie bude použiť gettext, ten je dosť rozšírený (napr. websupport, wedos).
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: php - kopromis viac jazyčnej stránky

Príspevok od používateľa S-player »

pcsiete napísal:Vyberať preklad z xml pri každom vypisovaní mi príde dosť pomalé. Lepšie je načítať si na začiatku všetky reťazce do arrayu a potom vypisovať.
Áno aj tak sa to dá vylepšiť... Po pravde ja som rýchlosť nejako silno neriešil už len z toho dôvodu ,že jedna stránka obsahuje v priemere do 10 reťazcov. Vďaka ,ale za tip ;)
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: php - kopromis viac jazyčnej stránky

Príspevok od používateľa weroro »

Nevyužíva gettext náhodou MO súbory s jazykom? To je na mňa moc. Ostanem pri audiovom návrhu riešenia.
Napísať odpoveď