Autor | Zpráva | ||
---|---|---|---|
Ikki Profil |
#1 · Zasláno: 23. 1. 2016, 17:47:13
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 |
#2 · Zasláno: 23. 1. 2016, 17:51:05
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"; ); <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 |
#4 · Zasláno: 23. 1. 2016, 18:01:36
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 |
#5 · Zasláno: 23. 1. 2016, 18:04:30
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> + 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 |
#7 · Zasláno: 23. 1. 2016, 18:10:31
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 |
#8 · Zasláno: 23. 1. 2016, 18:14:43
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 } <?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 |
#11 · Zasláno: 23. 1. 2016, 19:36:12
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 |
#12 · Zasláno: 23. 1. 2016, 19:41:01
Keeehi:
To je chytrý, asi začnu využívat :) |
||
Časová prodleva: 9 let
|
0