Autor Zpráva
Ikki
Profil
Zdravím Vás přátelé.

Velmi rád bych Vás požádal o pomoc s vícejazyčným webem.
Projíždel jsem tu nespočetně mnoho témat, ale ani jednomu z nich jsem velmi neporozumněl.
Na netu jsem nalezl jeden "návod", který následně nefungoval.

Tak kdyby byl někdo tak ochotný, a napsal mi tu opravdu, co nejjednodušší variantu (návod), tak bych byl velmi rád.

S pozdravem Ikki
RastyAmateur
Profil
Ikki:
Je to uplně prosté. Uděláš si někde zvlášť soubor (nemusí to být, ale je to lepší), který si vložíš do těch tvých stránek. V tom souboru to bude vypadat asi takto:
$text["cz"] = array(
  "nadpis" => "Vítejte na mém webu";
  "paticka" => "Vytvořil pro Vás Ikki";
  );
$text["en"] = array(
  "nadpis" => "Welcome to my webpages";
  "paticka" => "Created by Ikko";
  );
a do dokumentu následovně budeš vkládat něco takového:
<div id="hlavicka"><h1><?php echo $text[$jazyk]["nadpis"]; ?></h1></div>

Je to jen příklad, je jedno, jak si ty pole uděláš. Je mnoho způsobů. Já to používám takto a vyhovuje mi to!
Ikki
Profil
A ještě jsem se pokoušel přes .Htaccess udělat, aby se dle toho měnila URL webu, tedy něco.cz/cs, nebo něco.cz?language=en
Mohl by jsi mi poradit ještě s tímto prosím?

E:/ A jaký by měl být odkaz, aby se měnili tyto jazyky?
RastyAmateur
Profil
Ikki:
Dělit na soubory to nemusíš, ale je to jedno. Podle toho, co ti vyhovuje. Na druhou stranu když to rozdělíš do souborů, tak by jsi nemusel určovat jazyky v těch polích. Myslím tím toto:

cz.php:
$text = array(
  "nadpis" => "Vítejte";
  "paticka" => "Vytvořil...";
  );

en.php:
$text = array(
  "nadpis" => "Welcome";
  "paticka" => "Created";
  );

Rozdíl je v tom, jak to pak budeš vkládat:
<?php
  require_once $jazyk.".php";
?>
<h1><?php echo $text["nadpis"] ?></h1>

Ohledně toho htaccess, nechápu, jak to myslíš. Pokud chceš mít jen hezčí adresu ve tvaru example.cz/cs, protože se ti nelíbí example.cz/?lang=cs, tak to jde.RewriteRule ^([a-z]+)\/? index\.php\?lang=$1. Ovšem s tím si nejsem plně jistý! S htaccess jsem dlouho nepracoval a ještě v tom je jedna věc - example.cz/en/druha-strana.php nebude fungovat. Já používám téměř všude tento zápis:
RewriteEngine on

RewriteRule ^([a-zA-Z0-9]+)\/?$ index\.php\?a=$1 
RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/?$ index\.php\?a=$1&b=$2 
RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/?$ index\.php\?a=$1&b=$2&c=$3 
RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/?$ index\.php\?a=$1&b=$2&c=$3&d=$4
RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/?$ index\.php\?a=$1&b=$2&c=$3&d=$4&e=$5
Ikki
Profil
Ten rozdíl tedy velmi nechápu.
Mám si vybrat, zda-li to dám do více souborů a budu to zapisat přes require_once, nebo do jednoho a zapisat to pouze přes echo?

Jde mi o to, aby tam byly nějaké vlaječky na které když kliknu, tak se změní ta URL a taktéž i ten jazyk.
RastyAmateur
Profil
Tak v tom případě je to jednoduché. Udělej to tak, jak jsem psal v [#2] a začátek dokumentu budeš mít asi nějak takto:
<?php
$lang = isset($_GET["lang"]) ? $_GET["lang"] : "cz"; # Výchozí jazyk cz
require_once "jazyky.php"; # Ten dokument z [#2]
?>
<!-- Tělo stránky -->
<h1><?php echo $text[$lang]["nadpis"]; ?></h1>
<a href="index.php?lang=en"><img src="vlajka_britanie.jpg">Anglicky</a>
Pak by se to tedy dalo vylepšit v htaccess... Ale do toho bych se já už nepouštěl - já bych tam natropil více chyb :D

+ je ještě potřeba prověřit, jestli jazyk vůbec existuje!!


To prověření by šlo udělat asi takto:
<?php
$lang = isset($_GET["lang"]) ? $_GET["lang"] : "cz"; # Výchozí jazyk cz
require_once "jazyky.php"; # Ten dokument z [#2]
if(!empty($text[$lang])){

  }
else{
  $lang = "cz"; # Jazyk neexistuje - nahrazené češtinou
  }
?>
Ikki
Profil
Pochopil jsem tělo stránky, ale co má být to nad tím? :D

Aktuálně mám tvé .htaccess.
Soubor lang.php v složce lang, a někde v indexu zapsaný "nadpis".

Ale co s tímto? -
<?php
$lang = isset($_GET["lang"]) ? $_GET["lang"] : "cz"; # Výchozí jazyk cz
require_once "jazyky.php"; # Ten dokument z [#2]
?>

To mám vložit do Header.php někam nahoru, nebo jak?
Promiň za mou demenci.
Keeehi
Profil
Do indexu nahoru.
Ikki
Profil
Z nějakého důvodu mi to nefunguje.
Můžete mi prosím vypsat body jak by to mělo vypadat?
Mám to vše dle přítele Rasty a nějak mi to nefunguje.


Již vyřešeno, děkuji RastyAmateur.
Chyba byla v $lang & $jazyk! :')

Ještě jednou děkuji mnohokrát! :')
RastyAmateur
Profil
Ikki:
Asi v tom máme bordel... Vezmeme to od začátku :-)
Ten princip je v tom, že si uděláš takové pole, aby sis vždy mohl něco vypsat s jediným rozdílem - jazyk. Takže nějak do klíčů těch polí musíš dostat jazyk. To je to $text["cs"], $text["en"]. Poté musíš mít něco konstatního, aby to vědělo, co to vlastně vypsat, a bylo to stále to samé. To je to $text["jazyk"]["nadpis"]. Asi nemusím více vysvětlovat. Z příkladu v [#2] by to mělo být úplně jasné!
Druhým krokem je to nahrát do toho souboru (pravděpodobně indexu), nějakým stylem z URL vybrat jazyk, zkontrolovat, jestli vůbec tvůj web ten jazyk podporuje a nakonec vše vypsat.
Nahrání souboru uděláš require_once "cesta/k/souboru/jazyky.php";. Pak to získání a zabezpečení url jsem psal v [#6]
$lang = isset($_GET["lang"]) ? $_GET["lang"] : "cz"; # Výchozí jazyk cz
require_once "jazyky.php"; # Ten dokument z [#2]
if(!empty($text[$lang])){
 
  }
else{
  $lang = "cz"; # Jazyk neexistuje - nahrazené češtinou
  }
a nakonec vypisuješ tím, že místo toho textu přímo v v souboru / části souboru s HTML kódem to nahradíš za <?php echo $text[$lang]["nejaka_znacka_co_to_ma_vypsat"]; ?>


Takže konečný kód s mým .htaccess souborem:
<?php
  $lang = isset($_GET["a"]) ? $_GET["a"] : "cz";
  require_once "jazyky.php";
  if(!empty($text[$lang])){
 
    }
  else{
    $lang = "cz";
    }
?>
<!doctype html>
  <head>
    <title><?php echo $text[$lang]["title"]; ?></title>
  </head>
  <body>
    <div class="cely_web">
      <div class="hlavicka">
        <h1><?php echo $text[$lang]["hlavicka_nadpis"]; ?></h1>
      </div>
    </div>
    <a href="/<?php echo $lang; ?>/druhastrana">Odkaz</a>
    <br>
    <a href="/en">English version</a>
    <a href="/de">Deutsch</a>
  </body>
</html>

** Pozn.: Je dobré to mít vše v jednom jazyce, a ne jako já $lang, class="hlavicka",...
Keeehi
Profil
Ten htaccess je naprosto příšerný. Toto dělá prakticky to samé
RewriteRule ^[a-zA-Z0-9/]*$ index.php

$parts = explode('/', $_SERVER['REQUEST_URI']);
RastyAmateur
Profil
Keeehi:
To je chytrý, asi začnu využívat :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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