Autor | Zpráva | ||
---|---|---|---|
majo80 Profil * |
#1 · Zasláno: 2. 3. 2011, 11:07:16
Potrebujem urobiť viacjazyčný web a chcel by som načítavať jednotlivé jazyky, resp. slová a vety čo sú na stránke, z externého súboru, nie z DB.Je niečo takéto možné? Môžete ma nasmerovať ako toto urobiť a aj ako to načítavať?
|
||
Joker Profil |
#2 · Zasláno: 2. 3. 2011, 11:16:17
majo80:
„Je niečo takéto možné?“ Samozřejmě. Moc nechápu na co konkrétně dotaz směřuje, záleží na návrhu aplikace, ale jinak databázi soubory nahradíte tak, že prostě komunikaci s databází změníte na komunikaci se soubory. Teoreticky to při (správně udělaném) objektově orientovaném návrhu databáze může být i docela jednoduché. |
||
majo80 Profil * |
#3 · Zasláno: 2. 3. 2011, 11:33:02
Celý web zatiaľ len vytváram a chcem ho mať vo viacerých jazykoch. Preto by som potreboval informácie ako načítavať z externého súboru jednotlivé vety do scriptov....
|
||
Joker Profil |
#4 · Zasláno: 2. 3. 2011, 11:49:16 · Upravil/a: Joker
majo80:
To nevylučuje databázi. Jestli to správně chápu, tématem je spíš „Jak na vícejazyčnou PHP aplikaci“, než „Načítání dat z databáze vs. ze souborů“? (edit: Otazník na konci, má to být otázka) |
||
Darker Profil |
#5 · Zasláno: 2. 3. 2011, 11:51:57
Joker:
majo80:„z externého súboru, nie z DB“ Asi DB nechce. majo80: Skus třeba simplexml. |
||
Medvídek Profil |
#6 · Zasláno: 2. 3. 2011, 11:52:55
majo80:
A co třeba přes pole? $lang["homepage"]="Hlavní stránka"; $lang["logout"]="Odhlásit"; echo '<h1>'.$lang["homepage"].'</h1>'; |
||
Darker Profil |
#7 · Zasláno: 2. 3. 2011, 11:59:32
Medvídek:
Dvě nevýhody: Někde bude mít pole přes dvě stránky. Ve funkcích nesmí zapomenout na global. |
||
Joker Profil |
#8 · Zasláno: 2. 3. 2011, 12:18:34
Já bych to asi tak jako tak zapouzdřil, ve strukturovaném programu do funkce, v objektovém do třídy.
V OOP mi pro to třída přijde dost vhodná, zejména když jazykové nastavení nejspíš bude mít další parametry (třeba obrázek vlaječky, kód jazyka, formát data a podobně) |
||
Chro Profil |
#9 · Zasláno: 2. 3. 2011, 12:22:42
majo80:
Soubor jazyky.txt: ZELVA_OMLUVA||Promiňte, ale žádnou želvu tady nemáme.||Prepáčťe, ale žiadnu korytnačku tu nemáme. ZELVA_POZADAVEK||Tak mi ji objednejte.||Tak mi ju objednajťe. Možné provedení skriptu: $jazyk = 'cs'; //nebo sk $soubor = 'jazyky.txt'; if (file_exists($soubor)) { if ($jazyk == 'cs') { $poradi_textu = 1; } else { $poradi_textu = 2; } $obsah = file($soubor); foreach ($obsah as $radek) { $polozky = explode('||', $radek); $id = trim($polozky[0]); $text = trim($polozky[$poradi_textu]); define($id, $text); } echo ZELVA_OMLUVA.' '.ZELVA_POZADAVEK; } |
||
Darker Profil |
#10 · Zasláno: 2. 3. 2011, 12:52:15
Chro:
Ať žije přehlednost, ale takz řešení. Nicméně by ten tvůj skript měl cachovat, jinak otevře soubor pokaždé, když bude doplňovat potřebné slovo. |
||
majo80 Profil * |
#11 · Zasláno: 2. 3. 2011, 13:52:37
Skôr by som bral to pole s tým, že každý jazyk by bol vo vlastnom externom súbore.
Darker: > Někde bude mít pole přes dvě stránky. > Ve funkcích nesmí zapomenout na global. Ako je toto presne myslené? |
||
Joker Profil |
#12 · Zasláno: 2. 3. 2011, 14:41:08
Chro:
No tak přesně od toho existuje XML, případně CSV, plus standardní funkce na jejich zpracování, aby se tohle nemuselo dělat. majo80: Já bych tu úvahu začal asi takhle (když uvažuji OOP): - Bude třída řekněme Language. - Atributy podle potřeby aplikace. - Metoda getText($idText) bude vracet řetězce. - Konstruktor bude mít parametr kód jazyka Použití by pak vypadalo nějak takhle: $lang = new Language("cs"); echo("<h1>".$lang->getText("homepage_heading")."</h1>"); Uvnitř třídy Language by pak mohlo být jako private pole s jednotlivými texty. Naplnění textů by zařídil konstruktor na základě kódu jazyka. Načítání jazyků už není až tak zásadní, jiný způsob načítání znamená jen jiný vnitřek konstruktoru třídy Language, všechno ostatní může zůstat. Ale když dám nějakou ukázku, řekněme, že by byly soubory <kód jazyka>.lng (například cs.lng) a vymyslíme vhodné formátování dat- no jelikož to bude vlastně sada dvojic id-text, šel by využít "ini" formát. Příklad- cs.lng: ; MojeAplikace 1.0, jazykový soubor pro češtinu homepage_heading = "Vítejte na mé stránce" hello_world = "Ahoj světe!" |
||
majo80 Profil * |
#13 · Zasláno: 2. 3. 2011, 14:48:02
Presne niečo takéto by som potreboval. Len teraz neviem, ako mám pristupovať k jednotlivým súborom s preloženými textami. Dajme tomu, že pomocou PHP zistím, že užívateľ chce češtinu a do premennej $zvolenyjazyk sa uloží hodnota cs...
|
||
Aesir Profil |
#14 · Zasláno: 2. 3. 2011, 14:55:27
|
||
majo80 Profil * |
#15 · Zasláno: 3. 3. 2011, 21:51:55
Aesir:
Tieto knižnice sú dosť obšírne a zložité. Ja potrebujem niečo jednoduché. |
||
Časová prodleva: 13 let
|
0