Jazyková mutace – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jazyková mutace – PHP – Fórum – Programujte.comJazyková mutace – PHP – Fórum – Programujte.com

 

Ondra
~ Anonymní uživatel
244 příspěvků
3. 10. 2012   #1
-
0
-

Ahoj,

už nějaký čas se snažim přijít na co nejlepší řešení vytvoření jazykové verze webu a to jak z pohledu snadné údržby (texty v externích souborech), tak z pohledu SEO - nechci, aby vyhledávače braly různé jazykové verze jako jeden web.

Co se týče tvaru URL, rád bych využíval "podadresářový" systém, tj. www.neco.cz/en   www.neco.cz/cs  atd.

Prozatím funguji takto: jednotlivé texty mám přeložené v externích souborech (en_content.php, cs_content.php) a nadefinované jako konstanty. Aktuální jazyk rozpoznávám z $_GET['lang']. 

Odkaty mám vyřešené takto:

<a rel="nofollow" href="index.php?page=sluzby&lang=<?php echo $_GET['lang'];?>">

Aktuální tvar URL tedy vypadá např.:   www.neco.cz?…

Zbývá mi tedy dořešit, jak z toho dostat   www.neco.cz/en/serivces (počítám s použitím mod_rewrite)

Můj dotaz tedy zní: pokud to takto udělám, budou vyhledávače indexovat jednotlivé jazykové verze jako jednotlivé weby? Nebo jsem něco udělal vyloženě špatně? Díky!

Nahlásit jako SPAM
IP: 78.108.97.–
CZechBoY+4
Věrný člen
3. 10. 2012   #2
-
0
-

#1 Ondra
variantě s parametry se vyhni, to bdue indexovat jako jeden web s trilionem adres, možná ani to ne

přepiš adresy a udělej si Rewrite přes .htaccess

Nahlásit jako SPAM
IP: 94.112.108.–
Ondra
~ Anonymní uživatel
244 příspěvků
3. 10. 2012   #3
-
0
-

#2 CZechBoY
Jo, dobře, díky :) Takže chápu to správně, že:

stranka.com/en    se mi mod rewritem přehodí na   stranka.com/index.php?lang=en a já pak už jen podle $_GET['lang'] načtu příslušnej jazykovej soubor?

Veškerý soubory a skripty budu mít v rootu a ta složka "en" vlastně ani nebude existovat?

Nahlásit jako SPAM
IP: 78.108.97.–
CZechBoY+4
Věrný člen
3. 10. 2012   #4
-
0
-

#3 Ondra
může existovat ale i nemusí, někdy to je i výhoda (například zajištění, že požadovaný jazyk existuje aniž bys to kontroloval PHP či v databázi)

Nahlásit jako SPAM
IP: 94.112.108.–
null_while
~ Moderátor
+6
Věrný člen
14. 10. 2012   #5
-
0
-

Pro menší i střední projekty ti vystačí něco takového: 

    function language_element($word_id,$language)
    {            
        $query = "SELECT word_id, " . $language . "
                  FROM translation
                  WHERE word_id = '" . $word_id . "'";
                  
        $result = mysql_query($query);
        while ($translation = mysql_fetch_array($result, MYSQL_NUM)) 
        {
            $word = $translation['1'];
            return $word;
        }
    }

V tabulce translation potom vytvoř tedy PRIMÁRNÍ, AI - word_id a dále jazykové mutace typu varchar, které chceš... (cs,en,de,fr,pl,sk, apod...)

$active_language = 'cs';
echo language_element('slovo-pro-ulozeni',$active_language);
Nahlásit jako SPAM
IP: 84.16.103.–
WEBNIA.cz - tvorba webových stránek
null_while
~ Moderátor
+6
Věrný člen
14. 10. 2012   #6
-
0
-

Samozřejmě potom můžeš do proměnné active language ukládat hodnoty získané z SESSION nebo get. Já je přeposílám z tabulky account, kde je uložen výhradní jazyk pro daného uživatele.

Nahlásit jako SPAM
IP: 84.16.103.–
WEBNIA.cz - tvorba webových stránek
CZechBoY+4
Věrný člen
15. 10. 2012   #7
-
0
-

#5 null_while
už vidim jak s timhle skládám celou stránku, to bude na 20dotazů obyč stránka :)

Nahlásit jako SPAM
IP: 213.192.10.–
null_while
~ Moderátor
+6
Věrný člen
15. 10. 2012   #8
-
0
-

Jednoduše to můžeš přenést do pole a to sebrat z db najednou, já to poslal jako jedno řešení, které mám na portfoliu a překládá zhruba 3 odstavce, což je velmi rychlé. 

Nahlásit jako SPAM
IP: 84.16.103.–
WEBNIA.cz - tvorba webových stránek
CZechBoY+4
Věrný člen
15. 10. 2012   #9
-
0
-

#8 null_while
na tohle by se zrovna hodil yield :) na ten si ale ještě docela počkáme

Nahlásit jako SPAM
IP: 213.192.10.–
null_while
~ Moderátor
+6
Věrný člen
20. 10. 2012   #10
-
0
-

#9 CZechBoY
Nemyslím si, že by yield byl nejlepším řešením nebo zrovna tím nejvhodnějším. 

Nahlásit jako SPAM
IP: 84.16.103.–
WEBNIA.cz - tvorba webových stránek
CZechBoY+4
Věrný člen
20. 10. 2012   #11
-
0
-

#10 null_while
yield udělá něco, s čim pak můžeš shromáždit všechny dotazy do DB a dát to třeba jako jeden ne?
v případě překladů to je dobrá věc

Nahlásit jako SPAM
IP: 213.192.10.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý