Různé jazykové verze a optimalizace pro vyhledávače

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
malkol
Člen | 133
+
0
-

Ahoj, mám jeden dotaz.
Pokud řeším rozdílné jazykové varianty webu pouze tím, že nastavuji v cookie lang='' a URI zustava stejne, jak budou vyhledávače indexovat? Zvládnou zaindexovat obě varianty, i když jsou vlastně stejné z pohledu URI ?

Nebo je vhodné jazyk nějak přidat do routy ?

díky

Matey
Člen | 142
+
+1
-

Rozhodne pridať jazyk do routy.

$router[] = new Route('[<locale=sk sk|cz|en>/]<presenter>/<action>[/<id>]', [
	'presenter' => 'Article',
	'action' => 'default',
	'id' => NULL
]);
malkol
Člen | 133
+
0
-

supr … dík za odpověď .. a jak to z toho dostanu ? našel jsem něco jako …

$request->params['locale'];

ale v requestu je ten jazyk jenom v tom url-path, ne ?

jak to uchopit, a začlenit do celého projektu ?

Editoval malkol (29. 2. 2016 12:23)

Matey
Člen | 142
+
0
-

V base presenteri si pridaj

/** @persistent */
public $locale = 'en'; // default lang

Takto sa ti ten jazyk nastavý podla url prípadne bude default a bude sa automaticky prenášať.

A k parametrom sa v presenteri pristupuje $this->getParameter('locale') a v komponentách to isté len sa na to spýtaš cez presenter $this->presenter->getParameter('locale').

malkol
Člen | 133
+
0
-

Oukej … ted to tedy mám nastavené přes routy a jazyk se v uri automaticky přenáší .. to je supr …

ještě bych mohl dostat jednu radu … pokud napíšu handle … něco jako

public function handleLang($jazyk,$request =null){
           if($jazyk!=null){
             $this->locale=$jazyk;
               	/* $this->restoreRequest($request);
                   $this->redirect($request);*/
            }
        }

chtěl bych samozřejmě po změně jazyka nechat uživatele na stejné stránce na které byl … mělo by to podle mě fungovat s tím restoreRequest + redirect (teoreticky by stačil pouze refresh)… ale pokud to udělám dostanu v obou případech :

Possible problem: you are sending a HTTP header while already having some data in output buffer. Try OutputDebugger or start session earlier.
Matey
Člen | 142
+
0
-

takto nejako

public function handleLang($locale)
{
	$this->redirect('this', locale => $locale);
}
malkol
Člen | 133
+
0
-

oukej .. funguje .. napadá mě další věc … jak se potom v Translatoru dostanu k té proměnné .. ta je přeci v presenteru … asi je blbost aby tam vstupovala v translate() že ?

doteď jsem to tahal z cookies ..

Matey
Člen | 142
+
0
-

no takto.. nvm čo za Translator používaš ale nejaký spôsob na predanie jazyka hádam obsahuje
ak máš len niečo vlastné tak je možno lepšie použiť https://componette.org/…translation/ a už len prekladať :)