Autor | Zpráva | ||
---|---|---|---|
Ajtak Profil |
Zdravím.
Plánuji udělat multijazyčný web bez použití databáze. Potřeboval bych poradit, jakým směrem se ubírat, při tvorbě jazyků. Chtěl bych to mít v nějakých souborech ty jazyky. Chtěl bych, aby v administraci měl možnost editace, ale nechci, aby se načetl soubor do textového pole. Představoval bych si to tak, jak na následujícím obrázku.. ![]() Jakým směrem se ubírat? Jakým způsobem (krom db) by to bylo nejjednodušší? Díky za odpovědi..,.. |
||
Micruss Profil |
Co je tak špatného na použití databáze? Pokud píšeš články nebo něco podobného tak jak chceš udělat název např cz/en včetně textu ?
Pokud ovšem chceš překládat jen některý části webu, který se netahají z databáze tak bych volil cestu přes soubor <? require "lang/EN_en.inc"; # v souboru EN_en.inc; DEFINE('MAIN_PAGE', 'Main page'); # a pak jenom echo a dáš si to tam kam potřebuješ echo '<h1>'.MAIN_PAGE.'</h1>'; ?> jinak pokud vypisuješ různé věci z databáze tak je dobrý udělat i sloupec v tom jiném jazyku |
||
Ajtak Profil |
Micruss:
Takto jsem to nejprve chtěl udělat, ale nedokážu si představit, jak toto dostanu do těch polí, aby se to dalo upravovat v administraci... Viz IMG ![]() |
||
nemeja Profil |
Normálně budeš mít id slovního spojení a k tomu relaci 1:N.
sloupečky můžeš mít id | jazyk | text a pak budeš mít funkci vratText($id, $jazyk); které předáš dané id textu a jazyk v kterém to chceš vrátit. případně můžeš použít XML soubor |
||
Micruss Profil |
hmm>m napadá mě to uložit do array();
$lang = array( 'MAIN_PAGE'=>'Main Page' ); #pak jen to uložit jako define foreach($lang as $key=>$val) { DEFINE($key, $val); } # a v administraci bys udělal něco podobnýho echo "<table>"; echo "<tr><td>Proměná</td><td>Hodnota</td></tr>"; foreach($lang as $key=>$val) { echo "<tr><td><input type='text' value='$key'></td><td><input type='text' value='$val'></td></tr>"; } echo "</table>"; ale pak bys musel ukládat ten soubor fwrite();... ale jak říkám lepší je databáze no ;) |
||
nemeja Profil |
Micruss:
Proč array? Víš jak špatně by se to spravovalo? To už je lepší ten XML soubor, na ten jsou parsery. Pokud by se jednalo o velký web, tak by server musel držet opravdu velké pole v paměti. Databáze je na to opravdu jako dělaná a tento výpis se dá skvěle použít i s ní. |
||
Micruss Profil |
#7 · Zasláno: 8. 9. 2013, 20:08:33
Mno vidíš to.. mě ani nenapadlo ;) každopádně přes XML by to měl nejlepší řešení a nejlechčí :) nechápu proč mě to nenapadlo dřív... :D asi bych měl jít už spát -.-
|
||
Ajtak Profil |
#8 · Zasláno: 8. 9. 2013, 20:26:05
S XML bohužel nemám zkušenosti.
Jak by vypadal příklad prosím? |
||
nemeja Profil |
#9 · Zasláno: 8. 9. 2013, 20:36:05
<web> <1> <cs>Hlavní stránka</cs> <en>Main page</en> </1> <2> <cs>Vítejte</cs> <en>Welcome</en> </2> </web> |
||
Ajtak Profil |
Po zamyšlení se, jsem dospěl toto závěru, že skutečně bude nejlepší možnost využít SQL databáze. Bude to nejbezpečnější z hlediska editace a práv, a pokud se nemýlím, tak i rychlejší než načítání ze souboru...
|
||
Kubo2 Profil |
#11 · Zasláno: 8. 9. 2013, 20:52:16
Ajtak:
„nedokážu si představit, jak toto dostanu do těch polí, aby se to dalo upravovat v administraci“ V administrácii dáš iba výber jazyka: Po nastavení si, povedzme, niekam, napríklad do DB alebo SESSION uložíš informáciu o aktuálne používanom jazyku, a podľa toho budeš vyberať správny súbor: <?php require "$lang.lang.php"; [...] |
||
Ajtak Profil |
#12 · Zasláno: 8. 9. 2013, 20:56:23
Kubo2:
Jo, to je mi jasné, ale mě šlo spíš o to, jak to zobrazovat v těch polích jednotlivých aby se to dalo upravovat. Jako nebyl by problém, načíst obsah celého souboru do textarea, a pak uložit změny zpátky, ale v tom, že by se to s nějvětší pravděpodobností, nedalo načíst do těch jednotlivých polích... |
||
Medvídek Profil |
Ajtak:
Podobný nástroj jsem nedávno dělal pro naše překladatele: Web pak mají možnost přepnout do speciálního jazyka IDL, kde se míto textů zobrazí ID překladu, aby nemuseli dohledávat, kde se jaký překlad používá. ![]() |
||
japlavaren Profil |
1. databaza
2. ukladat do php suboru ako assoc pole a potom volat include: slovnik: array( 'first' => 'prva', 'second' => 'druha', ); <?php $file = __DIR__ . '/lang.php'; function load($file){ $dictionary = @include $file; if(!is_array($dictionary)) $dictionary = array(); return $dictionary; } function save($file, array $disctionaty){ $content = '<?php return ' . var_export($data, $return = true) . ';'; @file_put_contents($file, $content); } |
||
aDAm Profil |
#15 · Zasláno: 9. 9. 2013, 14:20:35
panove a co tak na to použít funkce přímo v php a zvolit normální translator co vám dokáže dělat i množná čísla atd.?
|
||
nemeja Profil |
#16 · Zasláno: 9. 9. 2013, 23:15:49
aDAm:
Nejsem si jistej, jestli zrovna použití překladače je stoprocentní. O jaké funkce se jedná? Myslím, že využití databáze + nějakého šablonovacího systému je naprosto v pořádku. |
||
aDAm Profil |
#17 · Zasláno: 10. 9. 2013, 12:41:20
nemeja:
tak podle toho co chce překládat, pokud systemove texty tak je imho použití překladače vhodnější než to tahat z db, pokud to jsou články atd. tak je zase vhodné použít databázi. |
||
Časová prodleva: 12 let
|
0