Zdravím, Vopred sa ospravedlňujem za hlúpi názov otázky (pokiaľ nevyhovuje prosím o zmenu). Teraz k môjmu problému: Ako nastaviť a vlastne dá sa nastaviť translation tak aby automaticky nastavil jazyk podľa krajiny teda ak na stránku príde užívateľ z Česka zobrazí sa mu cs jazy teda bude url: http://example.xx/cs/web atď…

A ako nastaviť zapamätanie si jazyka? teda si nastavím jazyk cs defaultne mám sk po refreshe ostáva ale po zadaní stránky sa automatický nastaví defaultný jazyk čiže sk.

Toto je môj config.neon

extensions:
    translation: Kdyby\Translation\DI\TranslationExtension

translation:
    fallback: [sk_SK, sk]
    whitelist: [sk, cs]
    debugger: on
    resolvers:
        session: on
        request: on
        header: on

čiže session mám zapnutý a v debugbaru je toto

Missing translations: 0, Resources: 2
Locale resolution

Order of locale resolvers and final locale for each request
    Web:Homepage:default    sk
1.  SessionResolver
2.  LocaleParamResolver sk
3.  AcceptHeaderResolver    sk
4.  DefaultLocale   sk


Loaded resources
Locale  Domain  Resource filename
sk_SK   messages    app/lang/messages.sk_SK.neon
cs_CS   messages    app/lang/messages.cs_CS.neon

A Session debbuger

"Kdyby\Translation\LocaleResolver\SessionResolver" => NULL

Sorry za dlhú otázku ale vopred ďakujem za pomoc/odpoveď.

V první řadě je potřeba si uvědomit, že tyhle magický autodetekce jsou problémové, protože web k tomuhle není určený. Na jedné url by měl být jeden obsah, né 10 obsahů a pokaždé jiný podle toho jakou pošleš hlavičku.

Tedy je vhodné, mít jazyk v routeru a řídit se primárně routerem. V momentě kdy máš vyřešený tento mechanismus, můžeš přemýšlet nad tím, že při prvním přístupu na stránku ho přesměruješ na jinou jazykovou verzi. Ovšem musíš opět myslet na to, že indexovací roboty bys přesměrovávat neměl atd.

Já osobně bych se takové věci obloukem vyhl, protože je to velký wtf. Ale pokud to fakt chceš dělat, doporučil bych ti kouknout jak to technologicky a z hlediska UX řeší jiné weby. Kdyby/Translation ti v tom rozhodně bránit nebude, implementovat takový resolver je jednoduché.

Btw, přednášku jsi viděl? :) https://youtu.be/T7vKUwqSOiU

  • Comments:

  • Takže je podľa teba vhodnejšie ponechať defaultne nastavený jazyk a nechať na užívateľovi aby si svoj jazyk podľa krajiny vybral sám? Ale prečo neostáva vybraný jazyk? vyberem si preklad otvorím nové okno hodím doménu a je zas defaultný jazyk neviem čo treba tam nastaviť aby to uchovalo ten vybraný preklad, až po zavretí prehliadača by sa to prehodilo na default.

    by Senin at 1.4.2015 10:31

@Filip Procházka Tedy je vhodné, mít jazyk v routeru a řídit se primárně routerem. toto je môj Router

<?php
namespace App;
use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;
use Nette\Application\Routers\SimpleRouter;

class RouterFactory {

    /**
     * @return \Nette\Application\IRouter
     */
    public static function createRouter() {
        $router = new RouteList();
        $router[] = new Route('index.php', 'Web:Homepage:default', Route::ONE_WAY);
        $router[] = new Route('[<locale=en en|sk>/]web/<presenter>/<action>[/<id>]', array(
            'locale' => 'en',
            'module' => 'Web',
            'presenter' => 'Homepage',
            'action' => 'default',
            'id' => NULL,
        ));
        $router[] = new Route('[<locale=en en|sk>/]<presenter>/<action>[/<id>]', 'Web:Homepage:default');
        return $router;
    }

}

Je to tak správne a to čo si mal na mysli?

Sorry ani som nevedel, že kdyby má videa :) idem sa pozerať a učiť :D

Takže je podľa teba vhodnejšie ponechať defaultne nastavený jazyk a nechať na užívateľovi aby si svoj jazyk podľa krajiny vybral sám? Ale prečo neostáva vybraný jazyk? vyberem si preklad otvorím nové okno hodím doménu a je zas defaultný jazyk neviem čo treba tam nastaviť aby to uchovalo ten vybraný preklad, až po zavretí prehliadača by sa to prehodilo na default.


You must first log in to participate in this discussion