přepínání jazykových verzí
16 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Potřebovala bych poradit, pokud mám jeden soubor, ve kterém je umístěn kód php (viz kód 1), funguje mi přepínání jazykové verze. Pokud ho rozdělím do dvou souborů (viz soubor + kód 2), nefunguje. V čem je problém? Poraďte, prosím... kód 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <? if (!isset($lg)) { // není-li zvolena verze, zvolit automaticky $lg = explode(",",$HTTP_ACCEPT_LANGUAGE); $lg = StrToLower(Substr(chop($lg[0]),0,2)); // vybrat první dva znaky preferovaného jazyka } if ($lg=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi $lg="cs"; if (($lg<>"en") && ($lg<>"cs")) // ověřit, zda není požadována nedostupná verze $lg="en"; if (($lg=="cs") or ($lg=="sk")): echo "<title>Výroba modelů a maket</title>"; else: echo "<title>Production of models</title>"; endif ?> </head> <body> <? if (($lg=="cs") or ($lg=="sk")): echo "<h1>Výroba modelů a maket</h1>"; else: echo "<h1>Production of models</h1>"; endif ?> <a href="?lg=cs">česky</a> | <a href="?lg=en">English</a> </body> soubor: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <? require "http://lasinka.wz.cz/verze.php"?> </body> kód 2: <? if (!isset($lg)) { // není-li zvolena verze, zvolit automaticky $lg = explode(",",$HTTP_ACCEPT_LANGUAGE); $lg = StrToLower(Substr(chop($lg[0]),0,2)); // vybrat první dva znaky preferovaného jazyka } if ($lg=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi $lg="cs"; if (($lg<>"en") && ($lg<>"cs")) // ověřit, zda není požadována nedostupná verze $lg="en"; if (($lg<>"en") && ($lg<>"cs")) // ověřit, zda není požadována nedostupná verze $lg="en"; if (($lg=="cs") or ($lg=="sk")): echo "<title>Výroba modelů a maket</title>"; else: echo "<title>Production of models</title>"; endif ?> <? echo "</head>" ?> <? echo "<body>" ?> <? if (($lg=="cs") or ($lg=="sk")): echo "<h1>Výroba modelů a maket</h1>"; else: echo "<h1>Production of models</h1>"; endif ?> <a href="?lg=cs">česky</a> | <a href="?lg=en">English</a>
-
1. Nevkladej to tam absolutni cestou, protoze tak se ti strati promenne 2. Tohle je blbost:<? if (($lg=="cs") or ($lg=="sk")):, lang nemuze byt sk, vzdy se prepina na cs ...
-
Díky za radu, nedošlo mi, že vlastně nepotřebuji if (($lg=="cs") or ($lg=="sk")):, protože mám předtím slovenštinu převedenou na češtinu, s php teprve začínám, takže mám ještě spoustu mezer. Je nějaký způsob, jak vyřešit, aby se proměnné neztratily, čili aby se dala využít i absolutní cesta, pokud by soubory byly na dvou různých serverech? Vítám každou radu...
-
To by neslo, dej to na stejny server a pouzij relativni adresu (./soubor.php)
-
A netušíš, jestli je nějaká možnost, jak rozchodit tuhle situaci: mám kompletní web na jiném serveru, kde funguje sice php, ale nefunguje tam přepínání verzí v jednom souboru (čili kód 1), takže mne napadlo právě to, že by se dala část s detekcí umístit jako součást jiného mého webu tady, kde to funguje, a soubory propojit. Stěhovat celý web by sice bylo řešení, jenže potom by bylo dost práce měnit veškeré registrace ve vyhledávačích a katalozích.
-
Vim proc na tom webu nejde to prepinani (asi), ty spolehas na to, ze tam je zaplne register_globals, ale tam asi neni, takze pri predavani promenne pres URL pouzivej superglobalni promennou $_GET ($_GET['lg]) a tam to je, protoze kdyz je register_globals=off, tak se to nepredava do promenne $lg, ale pouze do $_GET (postaru $HTTP_GET_VARS), takze to hledej tam. Skus google, tato tematika je vsude omilana cast. Jinak pro jazykove verze doporucuji Session ...
-
Díky za vysvětlení a typy, tušila jsem, že bude příčinou něco takového, takže vzhledem ke svým dosavadním chabým znalostem a zkušenostem budu doplňovat poznatky a hledat nějaké řešení. Pokud by náhodou měl někdo i konkrétní typ na vhodný ucelený kód, byla bych mu neskonale vděčná...
-
Ale tak chabe znalosti v php mel asi kazdy, pokud budu mit cas a naladu (ted jsem nemocny, casu dost ;), tak napis ... 174706276
-
Tak v této podobě mi chodí přepínání verzí, ale nefunguje mi detekce jazyka, nejspíš se nedá použít zahajovací script v té podobě, jak ho mám. Poradí mi někdo, jak to napsat správně? Díky... <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <script language="php"> if (!isset($_GET["lg"])) { // není-li zvolena verze, zvolit automaticky $_GET["lg"] = explode(",",$HTTP_ACCEPT_LANGUAGE); $_GET["lg"] = StrToLower(Substr(chop($_GET["lg"][0]),0,2)); // vybrat první dva znaky preferovaného jazyka } if ($_GET["lg"]=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi $_GET["lg"]="cs"; if (($_GET["lg"]<>"en") && ($_GET["lg"]<>"cs")) // ověřit, zda není požadována nedostupná verze $_GET["lg"]="en"; if ($_GET["lg"]=="cs"): echo "<title>Výroba modelů a maket</title>"; else: echo "<title>Production of models</title>"; endif </script> </head> <body> <script language="php"> if ($_GET["lg"]=="cs"): echo "<h1>Výroba modelů a maket</h1>"; else: echo "<h1>Production of models</h1>"; endif </script> <a href="?lg=cs">česky</a> | <a href="?lg=en">English</a> </body>
-
1.Co znamená <script language="php">? Já používám vždycky jenom <? echo "blebleble"; ?> 2.možná by to mohlo být tím, že máš za tym: if ($_GET["lg"]=="sk") dvě lomítka a hodnotu máš až na dalšim řádku. Mělo by to vypadat asi takto: if ($_GET["lg"]=="sk") $_GET["lg"]="cs"; // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi if (($_GET["lg"]<>"en") && ($_GET["lg"]<>"cs")) $_GET["lg"]="en"; // ověřit, zda není požadována nedostupná verze Ale nevím, zda jsi tu nápovědu nenapsala pouze kvuli nám. Kdybys potřebovala něco o PHP napiš.
-
> 1.Co znamená <script language="php"> Jen dalsi zpusob, jak sdelit serveru, ze se jedna o php..
-
Ještě malá připomínka: na stránce http://lasinka.wz.cz/ předpokládám že tvoje, bys mohla povolit rozšiřování horního frámu, 1: dá se schovat reklama, 2: po naběhnutí nejsou vidět odkazy pod reklamou.
-
Ad [Sojkovec]: jo díky taky mě to napadlo, ale já tuhle verzi používam s JavaScriptem, tak jsem si nebyl jist.
-
Pif: ja vim, vypada to trochu podivne, ale funguje to...
-
Díky všem za rady, konečně mi funguje - výsledný script, který chodí i na serveru, kde jsou vypnuté register_globals je následující: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <? if (!isset($_GET["lg"])) { $_GET["lg"] = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']); $_GET["lg"] = StrToLower(Substr(chop($_GET["lg"][0]),0,2)); } if ($_GET["lg"]=="sk") $_GET["lg"]="cs"; if (($_GET["lg"]<>"en") && ($_GET["lg"]<>"cs")) $_GET["lg"]="en"; if ($_GET["lg"]=="cs"): echo "<title>Výroba modelů a maket</title>"; else: echo "<title>Production of models</title>"; endif; ?> </head> <body> <? if ($_GET["lg"]=="cs"): echo "<h1>Výroba modelů a maket</h1>"; else: echo "<h1>Production of models</h1>"; endif; ?> <a href="?lg=cs">česky</a> | <a href="?lg=en">English</a> </body> Bylo potřeba upravit začátek - doplnit: $_SERVER['HTTP_ACCEPT_LANGUAGE'] - tenhle účinný typ mi poskytl #lama, takže díky.
-
ad Pif díky taky za připomínku k rámům, ta stránka je moje, i když ne zrovna aktuální a využívaná, hlavně jsem potřebovala otestovat prostor, než na něj umístím stránky, které tvořím teď. Tvoji nabídku na pomoc s php vedu v patrnosti, ráda ji někdy využiju