Autor Zpráva
Mufna
Profil
Zdravím Vás. Chtěl bych vyřešit přepínání jazykových verzí na svém webu tak, aby uživatel vždy "zůstal v jedné jazyk verzi" do doby, než na jakékoliv podstránce přepne do jiné verze. Zatím mi funguje to, že když jsem na podstránce XY v češtině - tedy v defaultně nastaveném jazyce - tak ji můžu přepnout do jiného jazyka a zpět. Jakmile ale přepnu jakoukoliv podstránku do ENG a pak přes menu přejdu na jinou podstránku, tak ta se mi už zobrazí opět v češtině.

Kromě toho prosím, zda mi můžete říci, jestli řeším dobře načítání podstránek přes $_GET['page'] + myslím, že soubor check_language.php v podobě, jakou zatím mám, není úplně OK - myslím tím v návaznosti na zbytek mého kódu. Mám ho řešit nějak jinak ?

Kód mám zatím:

soubor check_language.php v adresáři "libs/"
<?php 

$dir = 'lang/';
$languages = array(
    'cz' => 'czech',
    'en' => 'english',
);

if (isset($_GET['lang']) AND array_key_exists($_GET['lang'], $languages)) {
    require ($dir.$languages[$_GET['lang']].'.php');
} else {
    require ($dir.'czech.php');
}

?>


soubor html.php v rootu webu
<?php
    session_start();
    require_once("libs/check_if_mobile_device.php");
    require_once("libs/check_language.php");

function wrt_header() {
       následuje záhlaví s DOCTYPE, metatagy a začátek <body>, kde je mimo jiné přepínač jazyka:
       <div id="switcher">
          <span><a href="<?php echo $_GET['page'].'.php?lang=cz'; ?>">ÄŚesky</a></span>
          <span><a href="<?php echo $_GET['page'].'.php?lang=en'; ?>">English</a></span>
       </div>
<?php
  return;
}


začátek každé podstránky (podstránky jsou umístěny v rootu webu):
<?php
    session_start();
    $_GET['page']='nazev_stranky';
    require("html.php");

    wrt_header();
    wrt_menu();
?>
tiso
Profil
Mufna - lepšie riešenie je mať jazykové verzie v podadresáry (/en), hlavná môže byť v roote. Potom nepotrebuješ takéto harakiri...
Mufna
Profil
tiso

To jsem měl původně, ale musel jsem mít v každém jazykovém podadresáři všechny podstránky (tedy bylo to 2x to samé, akorát s jiným obsahem - jazykem. Chtěl jsem to právě zjednodušit tak, aby podstránky byly pouze 1x - a do nich načítám z jazykových verzí text. Myslím, že to je univerzálnější a nemusím vše kopírovat do všech případných jazykových adresářů.

To ukládání aktuálního jazyka chci řešit přes $_SESSION - jinak to asi nepůjde. Akorát přesně nevím, jak to mám udělat.
Alphard
Profil
nevím, co je nejlepší, takže budu raději mlčet, ale nelíbí se mi ukládání přes session, pak se to nedá záložkovat, poslat odkaz, vyhledat v historii atd.
já si např. nechávám dost stránek v panelech a čtu je, až mám čas a z představy, že si dnes něco uložím a zítra otevřu něco jiného nejsem dvakrát nadšený
Mufna
Profil
Alphard
z představy, že si dnes něco uložím a zítra otevřu něco jiného nejsem dvakrát nadšený

já zatím neřeším uživatelské relace (je to samozřejmě důležitý, ale to jde myslím klidně vyřešit později). Mě šlo hlavně o 2 věci: aby to bylo jednoduchý (pouze 1 soubor podstránky) + aby šlo kdykoliv a kdekoliv (na jakékoliv podstránce) přepnout na jinou jazykovou verzi (abych se nemusel třeba vracet na nějaký "jazykový rozcestník" či tak něco.

Vidím to na nějakou funkci, kterou budu muset vložit do každé podstránky a bude kontrolovat hodnotu uloženou v $_SESSION. A tu hodnotu budu muset přiřazovat někde u toho přepínače.
svadla
Profil
ja to resim pomoci hezkych url
web.cz/cz/neco je ceska verze
web.cz/en/neco je anglicka verze

kdekoliv vim v jakem jsem jazyku a tudiz v tom jazyku dodrzuji i odkazy dale a neni problem odkazovat na url
tiso
Profil
Mufna bylo to 2x to samé
To je práve chyba ktorú si minule urobil... Je lepšie mať adresy v tvare /moja-ceska-stranka.php a /en/my-english-page.php (prípadne bez prípony)
miesto tvojho pôvodného: /cz/moja-ceska-stranka.php a /en/moja-ceska-stranka.php
alebo budúceho: /moja-ceska-stranka.php, /moja-ceska-stranka.php?lang=cz, /moja-ceska-stranka.php?lang=en

S pomocou mod_rewrite dosiahneš "staré" (jednoducho) alebo "moje" (zložito) adresy a "novú" funkčnosť

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0