Autor | Zpráva | ||
---|---|---|---|
zedna Profil |
#1 · Zasláno: 17. 5. 2011, 10:57:13 · Upravil/a: zedna
Ahoj pracuji na jednom redakčním systému a teď potřebuji vytvořit jazykové mutace, případně i možnost změnit si pomocí nějaké ikony jazyk webu.
Jaký způsob by podle vás byl nejlepší? Nejjednodušší mi připadá vytvořit jazykové soubory a přepínat je. Pokud ale někdo bude chtít i vícejazyčný obsah z databáze, tak bych stejně musel použít přepínání v databázi. zase nechci zbytečně "znepřehlednit" data v MySQL tím, že budu do různých tabulek přidávat jazykový sloupec.(pokud se mi vůbec vyplatí dělat možnost multijazyčného webu-obsahu) taky je možnost udělat jazykový soubor pro administraci apod. a pro obsah vytvořit sloupec jazyk a podle jazyka vypisovat obsah?ale to by platilo i pro menu, pluginy atd. tzn. je lepší jazykový soubor nebo překlady v databázi nebo ještě jiné řešení? |
||
ShiraNai7 Profil |
#2 · Zasláno: 17. 5. 2011, 13:12:37
zedna:
Pro systémové popisky jazykové soubory, pro obsah nějakým způsobem uzpůsobená databáze. |
||
zedna Profil |
#3 · Zasláno: 17. 5. 2011, 13:45:45
díky, takhle jsem si myslel že to asi udělám.
tu databázi asi udělám tak, že tam kde uživatel vkládá nějaký obsah (menu,kategorie,novinky,články,...) přidám kolonku pro jazyk a uživatel si vždicky zobrazí jaký chce jazyk..pokud nebude vyplněn, tak se zobrazí defaultní...uff to zas bude "papírování" |
||
Časová prodleva: 7 dní
|
|||
zedna Profil |
#4 · Zasláno: 24. 5. 2011, 12:15:35
nastal mi ale jeden problém, pokud chci aby si mohli svůj vlastní jazyk zvolit i neregistrovaní členové, pak sice jazyk nastavím do proměnné ale dál už se mi neuchová při přechodu na další stránku.
zkusil jsem použít tady z nějaké diskuze $lang = $_GET['lang']; If ($lang == ""){$lang = $_POST['lang']; } If ($lang == ""){$lang = "en"; } pro výběr jazyka ale při přechodu se jazyk nastaví vždy na "en". je blbost si to pokaždé předávat v odkazu, tak se ptám..je nějaký způsob jak tu proměnnou uchovat? napadlo mě session nebo cookie ale nemám s tím zkušenosti |
||
Stano Profil |
#5 · Zasláno: 25. 5. 2011, 22:52:02
zedna:
napadlo ta správne. cookies by boli asi vhodnejšie. |
||
zedna Profil |
#6 · Zasláno: 25. 5. 2011, 23:34:10
nj ale nebude to potom dělat problém při seo optimalizaci?myslím tím aby vyhledávače potom indexovaly všechny jazykové verze
|
||
joe Profil |
#7 · Zasláno: 26. 5. 2011, 00:36:34 · Upravil/a: joe
zedna:
$langs = array('en', 'cs'); $defaultLang = $langs[0]; $lang = isset($_GET['lang']) ? $_GET['lang'] : isset($_POST['lang']) ? $_POST['lang'] : $defaultLang; if(!in_array($lang, $langs)) { $lang = $defaultLang; } Jazyk pak musíš předávat do ostatních odkazů a nebo třeba můžeš v HTML využít tagu <base>, kam zadáš adresu s jazykem a ostatní odkazy pak budou relativní. Ukládat jazyk do cookies je zbytečné, když to máš v URL. Pokud máš více jazykový web, pak by měla být každá adresa rozlišitelná podle její URL. |
||
zedna Profil |
#8 · Zasláno: 26. 5. 2011, 09:44:59 · Upravil/a: zedna
super díky, vyzkouším.
jinak nevím jestli to půjde přes base, protože to dělám pro tento redakční systém, kde hlavní strana je http://cmsss.all4all.cz/index.php a pak tam je tam ještě možnost http://cmsss.all4all.cz/content.php?id=16 pro články. napadlo mě ještě jestli by to nešlo udělat pomocí htaccess, že bych na konec adresy dosahil proměnnou lang=$lang no ale nakonec to možná vyřeším úplně nejjednodušeji pomocí google translator tools: <div id="google_translate_element"></div><script> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'auto', layout: google.translate.TranslateElement.InlineLayout.SIMPLE }, 'google_translate_element'); } </script><script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> |
||
joe Profil |
#9 · Zasláno: 26. 5. 2011, 12:24:36
zedna:
Ani nevím, jestli by to přes htaccess nějak šlo, možná ano, ale je to zbytečné. Přes „google translator tools“ to je přes JavaScript, bude problém s indexací. |
||
zedna Profil |
#10 · Zasláno: 26. 5. 2011, 18:02:02
to je fakt, pak stačí jenom jedna jazyková verze.
je pravda, že htaccess taky nemusí každý použít. nicméně přemýšlel jsem už dřív nad automatickou detekcí jazyka uživatele a podle toho ten jazyk přiřadit k proměnné. tohle by pro mě bylo nejjednodušší ale asi to není příliš spolehlivé |
||
Časová prodleva: 4 dny
|
|||
zedna Profil |
#11 · Zasláno: 30. 5. 2011, 14:00:59
tak jsem použil ten tvůj kód joe ale stále tu mám problém s uchováním proměnné při přechodu na jinou stránku (i refresh).
pomocí formuláře si změním proměnnou: <form action='' method='POST'> <table width='200' border='0'> <tr><td>Jazyk/Language: <select name='lang'> <option value='cz'>Česky</option> <option value='en'>English</option> <option value='de'>Deustch</option> <option value='fr'>Francais</option> </select></td></tr> </table> </form> tu proměnnou vkládám i do <base>: <base href='$base_directory' lang='$lang' target='_self'> ale když si vypisuju proměnnou na stránce, tak se mi po přechodu vždicky hodí $defaultLang zkouším různý způsoby ale nedaří se mi stále uchovat proměnnou v array |
||
Časová prodleva: 3 dny
|
|||
zedna Profil |
#12 · Zasláno: 2. 6. 2011, 08:44:04
hotovo, vyřešeno. pomohl mi malý kontrolní script na stejný problém, kde session neukládala proměnnou
<?php ini_set('session.use_cookies', '0'); unset($_COOKIE[session_name()]); session_start(); if (!empty($_GET['data'])) $_SESSION['sessData'] = $_GET['data']; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title></title> </head> <body> <?php print_r($_SESSION); ?> <form> <input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo session_id(); ?>"> <input type="text" name="data"> <input type="submit"> </form> </body> </html> diskuzi, kde to je jsem našel zde |
||
Časová prodleva: 13 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0