Autor Zpráva
guru
Profil *
Uz dlouho to zkousim, ale porad mi to nejde. Potrebuju nastavit jazyk pomoci formularovych <select> a <option> a potom ho prenaset pomoci sessions. Vypada to zatim takto:

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="get">
<select name="lang">
<option value="en" <?php if($_GET["lang"] == "en") {echo 'selected="selected"';} ?> >English</option>
<option value="cs" <?php if($_GET["lang"] == "cs") {echo 'selected="selected"';} ?> >Czech</option>
</select>
<input type="submit" value="change" />
</form>

<?php

session_start();
session_register("lang");

if(!isset($_SESSION["lang"])) {
$_SESSION["lang"] = $_GET["lang"];
}
if($_GET["lang"] != $_SESSION["lang"]) {
$_SESSION["lang"] = $_GET["lang"];
}

if($_SESSION["lang"] == "cs") {
echo "czech";
} else {
echo "english";
}

?>

<a href="language.php">Next</a>

Kdyz kliknu na odkaz, jazyk se zmeni pokazde na english. Co s tim? Diky.
guru
Profil *
Jo a zapomnel jsem.... Ta druha stranka vypada uplne stejne. (ale to by tak bylo i v realu, protoze formular bude viditelny na kazde strance.)
kuchi
Profil *
ja pouzivam pro ulozeni jazyka do sessions tohle:
//Nastavi vychozi jazyk cestinu pokud neni jinak nebo zapise jako jazyk cestinu pokud $_GET["language"] == "czech"
if (($_SESSION["language"] == "") or ($_GET["language"] == "czech"))
$_SESSION["language"] = "czech";//Vychozi jazyk
else
{
if ($_GET["language"] != "")
$_SESSION["language"] = $_GET["language"];//Jakykoliv jiny jazyk
}
Pricemz pres $_GET["language"] predavam hodnotu formulare...
zap
Profil
Tak podle mě tam máš několik chyb:
1) session_start(); máš pouštět před jakýmkoliv výstupem, tedy před kódem pro formulář
2) pokud používáš $_SESSION["lang"] = ... nepoužívej session_register()
3) jestli pracuješ se session, musíš si hodnotu předávat do dalších skriptů (pokud nepoužíváš transparentně, což asi ne když ti to nejede) jak u odkazů, tak u formuláře

Tedy nějak následovně::


<?php
session_start();
?>

<form action="<?php echo $_SERVER["PHP_SELF"]."?".SID; ?>" method="get">
<select name="lang">
<option value="en" <?php if($_GET["lang"] == "en") {echo 'selected="selected"';} ?> >English</option>
<option value="cs" <?php if($_GET["lang"] == "cs") {echo 'selected="selected"';} ?> >Czech</option>
</select>
<input type="submit" value="change" />
</form>

<?php


if(!isset($_SESSION["lang"])) {
$_SESSION["lang"] = $_GET["lang"];
}
if($_GET["lang"] != $_SESSION["lang"]) {
$_SESSION["lang"] = $_GET["lang"];
}

if($_SESSION["lang"] == "cs") {
echo "czech";
} else {
echo "english";
}


?>

<a href="language.php?<?php echo SID?>">Next</a>
guru
Profil *
Diky. Zkusim. Snad se to povede.
Retal
Profil
Ukládat volbu jazyka do session není dobré řešení. Má tři hlavní problémy:
1) Jedna URL má více různých obsahů
2) Vyhledávače neznají jiný než přednastavený jazyk
3) Na odlišné jazyky nelze odkázat.

Vyřešte to raději přes parametr v URL.
guru
Profil *
Pisu jak pisu, ale ani jedna z moznosti mi nefunguje. tak nevim........
guru
Profil *
No jo... ale co kdyz tam budu mit dalsi formular, ktery prida do URL parametry? bude to potom fungovat?
guru
Profil *
Ale to s tim URL se mi vubec nezda jako dobre reseni.
1. Kazdy odkaz musi mit navic pridany parametr.
2. Ani mi to nejede. :-)
Retal
Profil
guru
Řešením přes parametr v URL jsem myslel buď
example.com/cs/obsah/
example.com/en/content/

nebo
cs.example.com/obsah
en.example.com/content

nebo
example.com/content
priklad.cz/obsah

(Označení "parametr" jsem nezvolil nejvhodněji, ale snad si rozumíme.)
compact
Profil *
Jojo... Chapu. To uz jsem tak mel jednou postaveny web, ale ted nechci delat pro kazdy jazyk novou stranku, ale dat to do podminek pro vsechny dalsi pripadne jazyky.
guru
Profil *
No to jo... tak mi to ale pripada moc narocne. V sessions by to bylo elegantnejsi.
Toto téma je uzamčeno. Odpověď nelze zaslat.