PHP - viacjazyčný web (nezmenenie URL)

Programovacie jazyky, rady, poradňa...
Ex1T

PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Ex1T »

Zdravím,

budem písať stručne pretože ja som v google nič nenašiel a ak by niekto mal rovnaký problém, tak nech to tu nájde pomocou google.

Takže, mám súbor (napr. index.php), potrebujem vytvoriť viacjazyčný web tak, aby:
-Sa nezmenila URL adresa (čiže žiadne domena.sk/index.php/en/ alebo domena.sk/index.php?lang=en)
-Som každú časť textu dokázal preložiť čiže nejak takto by vyzeral súbor:

Kód: Vybrať všetko

... PHP, HTML, kódy, nepodstatná časť stránky ktorá nepotrebuje preklad textu ...
(prikaz pre SK preklad)"Dobrý deň!"
(prikaz pre EN preklad)"Hello!"
(prikaz pre CZ preklad)"Dobrý den!"
... PHP, HTML, kódy, nepodstatná časť stránky ktorá nepotrebuje preklad textu ...
a opäť nejaký riadok textu na preloženie 
A následne potrebujem, aby:
- Predvolený jazyk bol SK
- Užívateľ mal možnosť si v menu zmeniť tento jazyk (takže by som poprosil aj o vysvetlenie ako si zmeniť tento jazyk)

Pravdepodobne to bude rozsiahly skript, preto predom ďakujem tomu, kto si nájde čas a pomôže mi popr. ma aj takýmto spôsobom naučí ako sa to robí.

Snáď som pomohol aj ľuďom do budúcna ktorý majú podobný problém.
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Michaelo »

Sprav si priečinok: locale, do neho daj priečinky ako slovak, english, german a do každého z tých priečinkov dáš súbor locale.php s prekladom.
V súbore locale.php budú všetky texty vo formáte napr:

$global001 = "Vítajte na našom webe.";
$global002 = "blablabla.";

Na webe by si mal Include:

include "/locale/COOKIE/locale.php
A ak cookie nie je nastavene, tak defaultne includnes /locale/slova/locale.php

A potom by si používal cookies na zmenu jazyka.

Nevýhoda ale je, že ak je to dynamický web, nepreložíš tým príspevky používateľov a články by si musel písať viac jazyčne a teda upraviť aj DB a vyťahovanie textov z nej.
Ako som teraz vyššie spomenul, nepotrebuješ ani súbor locale.php a môžeš použiť aj DB.

Skús si stiahnuť PHP-Fusion napr. alebo iný CMS kde to už je nakódované a použi ten kód.
Zbytočne znovu hľadať Ameriku.
Ex1T

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Ex1T »

S tým rátam Michaelo. A poradíš mi ešte s tým cookies? Akým spôsobom dokážem zmeniť jazyk? Najlepšie by bolo keby si mi to vysvetlil aj na príklade.

Ďakujem !
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Michaelo »

Mal by si nejake tlacidlo ktore ta hodi na stranku

web.sk/nieco.php?jazyk=svk

Cez Get by si prisiel na to ze pouzivatel chce zmenit jazyk, tak ho nastavis a hodis ho s5 na adresu kde bol.

Napr toto ja pouzivam na zmenu stranky pre mobily a pre PC (snad pochopis ako na to potom):

Ten prvy kod zisti ci si na stranke web.sk/nieco.php?platform=mobile
Druhy zasa ci je nastaveny cookie...

Kód: Vybrať všetko

if (isset($_GET['platform']) && $_GET['platform'] == 'mobile'){
    setcookie("platform", "mobile", time()+(86400*7), "/");
    die(header('Location:/mobile'));
}

if (!isset($_COOKIE['platform']) && $detect->isMobile() && !$detect->isTablet()) {
    setcookie("platform", "mobile", time()+(86400*7), "/");
    die(header('Location:/mobile'));
}elseif (isset($_COOKIE['platform']) && $_COOKIE['platform'] == 'mobile'){
    die(header('Location:/mobile'));
}
Ex1T

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Ex1T »

Ďakujem. Idem sa s tým pohrať, keby niečo, ešte sem napíšem.
scriptType
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 110
Registrovaný: 22 feb 2011, 19:34

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa scriptType »

Prípadne keby si chcel elegantnejšie riešenie bez presmerovania, dá sa to spraviť tak že užívateľ si vyberie zo zoznamu nejaký jazyk, resp. naň klikne, javascriptom odchytíš nejakú hodnotu toho linku kde bude údaj o jazyku a potom vytvoríš cookie. Ďalej pracuješ cez PHP s tou cookie hodnotou a vieš ktorý jazyk textov zobraziť. Najlepšie to ťahať z DB, lebo keby si dávaš do súborov rovnaké premenné pre rôzne jazyky, tak by si v tom mal rýchlo bordel. (Tiež som to tak robil :smt059 )
Ex1T

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Ex1T »

práveže by to mohla byť fajn metóda .. ibaže by som potreboval pracovať s príkladom (moje schopnosti nie sú až také dobré aby som si to dokázal vytvoriť sám, preto to najlepšie pochopím na príklade).
Ďakujem.
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Michaelo »

Ok a ako nacita novy jazyk bez obnovenia stranky? :D
Ci chces aby robil cely web cez ajax?

A medzi DB a php subormi s textami nevidim velky rozdiel.
Ci bude mat nieco ako:

$global001 alebo $data_z_db[$prefix'global1'] kde $prefix bude ulozeny v cookie, je takmer jedno. Akurat ze pri DB by mal viac kodu.
94jakub
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2037
Registrovaný: 15 dec 2006, 13:18
Bydlisko: Martin/BA
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa 94jakub »

Písal o presmerovaní, nie obnovení. Problém však môže byť, keď bude mať užívateľ vypnutý Javascript.
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Michaelo »

Ja som ale nehovoril ze on ho musi presmerovat na inu php stranku.
Ja mam svoj script hodeny v header.php ktory je includnuty na vsetkych strankach, takze ak pridas ?platform=mobile kdekolvek na mojom webe, tak to bude fungovat a to iste som navrhoval tuto.
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa S-player »

Ex1T napísal:...pretože ja som v google nič nenašiel...
Pretože si poriadne nehľadal.
Ex1T

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Ex1T »

S-player napísal:
Pretože si poriadne nehľadal.
To sa ľahko povie. Poučíš ma a dáš mi link na nejakú stránku kde sa riešil/rozoberal presne môj problém? Ďakujem.
yoggy

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa yoggy »

hneď prvý odkaz v google

http://stackoverflow.com/questions/1506 ... tml-button

//1313 :oops:

pokiaľ to chceš bez menenia url adresy, najskôr definuj defaultný jazyk a potom niekde na stránke urob select s auto-submit. Následne spravíš PHP script ktorý bude spracovávať ten select a budeš pracovať s POST... Uložíš do cokies a s cookies načítaš lang. súbor...
Môžeš tam aj dorobiť aký jazyk ma vybratý a pod. A to je všetko, nič ťažké :)
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Michaelo »

V podstate si napisal to iste co ja.
Get je lepsi, pri poste ak chces obnovit stranku stale vyhadzuje to otravne okno.
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa funny102 »

Zdravím skúšal som to podľa no akosi mi to nejde.

Kód: Vybrať všetko

 http://stackoverflow.com/questions/15068132/change-language-of-site-with-an-html-button
Ako ste hore písali spravil som si locale/en/menu.php a locale/cz/menu.php
V nom mám celeho menu typu $locale['1'] = "Hlavní stranka";

Spravil som si vlajky typu
<a href="index.php?language=en"><img src="images/eng.png" id="vlajkaen"></a>
<a href="index.php?language=no"><img src="images/cz.jpg" id="vlajkacz"></a>

a v index.php (len som skopíroval to čo bolo na tej stranke a zmenil subory, nič ine)

Kód: Vybrať všetko

<?php 
if ( !empty($_GET['language']) ) {
    $_COOKIE['language'] = $_GET['language'] === 'en' ? 'en' : 'nl';
} else {
    $_COOKIE['language'] = 'nl';
}
setcookie('language', $_COOKIE['language']);
        if ( $_COOKIE['language'] == "en") {
   include("locale/en/menu.php");
} else {
   include("locale/cz/menu.php");
?>
a v menu som to dal vypísať cez echo ak sa nemýlim (neviem či je to dobre len tak som typol)
<li class="important"><a href="home.html" target="ifrejm"><?php echo $locale['1']; ?></a></li>

No čakal som ze sa zobrazí len text no nič sa mi nezobrazilo. Kde robím chybu?
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa S-player »

No mohol si sa aj pozrieť nato čo kopíruješ...

- "language=no" pritom ide o češtinu.
- Nastavuješ jazyk = nl (No language, Netherlands alebo čo tým chceš povedať?) a "zapínaš" češtinu.
- Prvá podmienka totálne odveci.
- V druhej podmienke ti chýba zložená zátvorka na konci.

Kód: Vybrať všetko

<a href="/index.php?lang=en"><img src="images/en.png" id="flag_en"></a> 
<a href="/index.php?lang=cz"><img src="images/cz.jpg" id="flag_cz"></a>

Kód: Vybrať všetko

<?php 
$lang = $_GET["lang"];
$lang = ($lang === "en" || $lang === "cz") ? $lang : "en"; // Defaultný jazyk - AJ

setcookie("language", $lang);
include("locale/".$lang."/menu.php");
?>
// Neviem či ti to bude fungovať, išlo mi o sprehľadnenie kódu nie vyriešenie problému.
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa funny102 »

S-player napísal:No mohol si sa aj pozrieť nato čo kopíruješ...

- "language=no" pritom ide o češtinu.
- Nastavuješ jazyk = nl (No language, Netherlands alebo čo tým chceš povedať?) a "zapínaš" češtinu.
áno to som si všimol a prehodil som to no stále mi to nešlo.
S-player napísal: - Prvá podmienka totálne odveci.
- V druhej podmienke ti chýba zložená zátvorka na konci.
Spravil som to ako si napísal no stále nič.
dobre to vypisujem ? cez echo? <?php echo $locale['1']; ?> ?

//autoeditácia príspevku (25 Apr 2014, 16:25)
funny102 napísal: áno to som si všimol a prehodil som to no stále mi to nešlo.

Spravil som to ako si napísal no stále nič.
dobre to vypisujem ? cez echo? <?php echo $locale['1']; ?> ?
lebo skúšal som si dat
<?php include ("locale/cz/menu.php") ?>
<p>Vitejte na naší stránce.<?php echo $locale['1']; ?></p>
a nevypísalo mi nič
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa Michaelo »

Include locale na vsetkych strankach:

Kód: Vybrať všetko

if (isset($_COOKIE['language']){
    include ("locale/".$_COOKIE['language']."/menu.php")
}else{
    include ("locale/cz/menu.php");
}


index.php

Kód: Vybrať všetko

if (isset($_GET['lang'])){
    setcookie("language", $_GET['lang'], time()+(86400*7), "/");
    die(header('Location:/home.html'));
}
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: PHP - viacjazyčný web (nezmenenie URL)

Príspevok od používateľa funny102 »

Dobre už mi to ide :) dakujem
Napísať odpoveď