Autor Zpráva
klaudius
Profil *
Chtěl jsem se zeptat, jak se dá vytvořit vícejazyčná webová aplikce.
Napadlo mě, že bych to mohl udělat tak, že bych si vytvořil datové slovníkové soubory jako třeba
CZ.dat
EN.dat

A například v cz.dat by na řádku 1 bylo třeba: "Vítám vás!"
A v anglickém souboru by bylo na tom samém místě: "Welcome!"

V PHP skriptu bych pak podle jazyka načítal texty buď z jednoho nebo z druhého souboru..

Určitě existuje i lepší řešení, prosím poraďte. Díky.
ronnie
Profil
Dělá se to pomocí gettext, podívej se na interval, byl tam seriál od koseka...
mastermind
Profil
zbytocne by to bola komplikacia.
co tak urobit dva php subory. eng.php a cz.php.
obsah napr:
eng.php:

<?$lang['vitaj'] = "welcome";?>

cz.php:

<?$lang['vitaj'] = "vitaj";?>

v samotnej stranke by si podla zvoleneho jazyka pouzil bud include('eng.php'); alebo include('cz.php');

mastermind
thingwath
Profil
Jsem pro gettext :-)
klaudius
Profil *
mastermind: takze jedno VELKE asociovaene pole? nebude to zpomalovat aplikaci?

thingwath: kde ho mohu stahnout? a jak se vlastne instalujou takove knihovny?
mastermind
Profil
nemusi to byt jedno mozes si to rozdelit na viac casti. vyhoda tohto riesenia je v tom, ze sa lahko preklada.
ronnie
Profil
Proboha, na takové aplikace je určitě nejlepší gettext knihovna, na interval.cz vychycházel článek, určitě je to lepší řešení než velké pole. Je to přehlednější a rychlejší, tak nevidím důvod, proč se štávát s asoc. polem:)
mastermind
Profil
jasne ze gettext je krajsie riesenie. on vsak chcel moznosti, tak som mu jednu poskytol :)
Leo
Profil
Ono je jedno, jake reseni pouzijete - z pohledu rychlosti - protoze ty stranky se urcite nebudou menit kazkou sekundu a tudiz se daji predzpracovat a kesovat, a snadnost uprav a jejich konzistence je dulezitejsi. Gettext pouziva jakesi binarni soubory, a ty me osobne nejsou sympaticke. Leo
thingwath
Profil
Binární soubory zřejmě kvůli té rychlosti a efektivitě. Že je to zrovna tobě jedno jak je to rychlé ještě neznamená, že se na to autoři mohou vykašlat :-) Nakonec jde o řešení co používá většina linuxových aplikací, třeba.
klaudius
Profil *
A jak na sve lokalni stanici nainstaluju Gettext? Kde ho stahnu? Pujde to, kdyz pouzivam Phptriad?
llook
Profil
Gettext bych nedoporučoval. Nebývá vždy nainstalovaný. Třeba taky proto, že z licenčních důvodů není distribuován spolu s PHP.
Několik článků o internacionalizaci vyšlo na Intervalu, zkus hledat tam.
Leo
Profil
"Že je to zrovna tobě jedno jak je to rychlé ještě neznamená, že se na to autoři mohou vykašlat :-)"

Nepsal jsem, ze je MI to jedno, ale ze je to jedno. Leo
PerToon
Profil
Připojím svůj dotaz radši do tohoto fóra, protože jde o podobný problém.
Celý web bude v originále anglický, ale pro české fanoušky bude mít českou verzi, která bude trochu odlišná, takže bych chtěl, aby každá stránka existovala dvakrát. Takže bych celý český web dal do jednoho adresáře. Ale zdá se mi divný aby všechno český bylo o jeden adresář níž. Je logický udělat - www.domena.org a cz.domena.org aby ekvivalentní stránky měly co nejpodobnější adresu?
llook
Profil
Nakonec jde o řešení co používá většina linuxových aplikací, třeba.
Většina GNU GPL aplikací. On je totiž gettext pod touto restriktivní licencí, takže znemožňuje použití ve většině komerčních aplikacích...
CATerPILAR
Profil *
A co když používám MyQSL databázte. Jak pak na vícejazyčné stránky?
Musím asi mít každou tabulku v databázi 2x a data do ní ukládat zvlášt česky a zvlášt anglicky?

To je docela pakárna, ne?
ronnie
Profil
CATerPILAR: podívej na interval, byla tam o tom série článků.
Leo
Profil
"Musím asi mít každou tabulku v databázi 2x a data do ní ukládat zvlášt česky a zvlášt anglicky?"

Muzete to ulozit/resit ruzne, ale verte, ze mnohem vetsi pakarna je mit rozsahlejsi rucne delany web ve dvou a vice jakykovych mutacich, kde najednou zjistite, ze musite u vsech neco predelat. Leo
igamenir
Profil
Nevím, jak funguje zmiňované gettext, ale osobně to řeším přes pole a include:
Prostě udělám include "language_".$_SESSION['lang'].".txt"; a v tomto souboru nadefinuji pole $titles. Z toho si pak beru jednotlivé texty.
uli
Profil *
a co to řešit pomocí define
Toto téma je uzamčeno. Odpověď nelze zaslat.

0