Autor Zpráva
Ecko
Profil *
Dobrý začal som robiť viac jazyčný web no prišiel som k prvému problému..

mám kód:
       <?php
         
if(!isset($_SESSION['lang']) || $_GET['lang']!='') { 
  switch($_GET['lang']) { 
     case 'en': 
         $lang = 'en'; 
         break; 
     default: 
         $lang = 'sk'; 
         break; 
  } 
  $_SESSION['lang'] = $lang; 
} 

$jazyk = ($_SESSION['lang']); 

 //je fajn to osetrit, lebo co ked budeme chciet pouzit tu premennu aj niekde inde a zabudneme, ze sme ju neosetrili? 

 echo $text[$jazyk]['skuska'];
 

?> 
<a href="/?lang=sk">SK</a>  
<a href="/?lang=en">EN</a> 


no potom v tom kóde (to je index) includujem obsah pomocou jednej triedy
<?php $cont->showContent($_GET["action"]);?> 

tak to vyvolávam no potom v tom obsahu ak mám nie aké echo
echo $text[$jazyk]['skuska'];

tak mi nezobrazí žiadny text.. viete ako by som to vyriešil?
Tori
Profil
Když už jednou nastavíte jazyk, tak bych ho pak četla jen z jednoho místa (session, $cont->lang, ...), bez kopírování do dalších proměnných.
Jestli ta třída v $cont vybírá, co se zobrazí na stránce, pak by aktuální jazyk měl být její vlastnost. Předpokládám, že máte jeden index.php a podle URL se includuje obsah? Pak bych výběr jazyka dala na začátek index.php a konstruktoru ho předala v parametru:
session_start();

$preklady = array('default'=>'sk', 'en');  // nebo include 'predvolby.php'; atd.
if (!isset($_SESSION['lang']))
  $_SESSION['lang'] = $preklady['default'];
elseif (isset($_GET['lang']) && !empty($_GET['lang']))
  $_SESSION['lang'] = in_array($_GET['lang'], $preklady) ? $_GET['lang'] : $preklady['default'];

$cont = new MyClass($_SESSION['lang']);

edit: Výběr jazyka by mohl obstarávat i router, nebo i ta třída v $cont - tedy buď ta část, která má na starosti nastavení a předvolby aplikace, anebo ta která obstarává zobrazení obsahu. Nevím, co je u vás vhodnější, jak přesně je ten web udělaný. Jestli používáte jednu šablonu + vložené překlady textů (=>do nastavení), anebo pro každý jazyk jinou šablonu (=>do $cont), anebo framework (=> do routeru).

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