17 komentářů k článku Django: Internacionalizace:

  1. Jakub Vrána

    Zásadní chyba

    Zásadní chyba tohoto řešení je v tom, že identifikátor jazyka se nepřenáší v URL. Jedním z důsledků je, že do indexu vyhledávačů se dostane jen jedna jazyková verze. Další problém tkví v tom, že stránky nejdou kešovat v HTTP.

    Funkce string_concat je ukázaná na zcela nevhodném příkladě.

    Proč v příkladu pro stažení není soubor settings.py? Je to jeden z nejdůležitějších souborů a rekonstruovat ho ručně dá dost práce.

    1. Pavel DvořákAutor příspěvku

      Re: Zásadní chyba

      Díky za odezvu. Tu první výhradu Django samo o sobě vyřešit neumí, musí se mu pomoct rozšířením nebo si napsat vlastní přesměrování URL.

      U druhé výhrady mě nenapadá, jak by měl vypadat vhodný příklad funkce string_concat. Jedná se o jednoduchou funkci, která vezme nějaký seznam řetězců a sestaví řetězec nový – nevidím v tom nic, co by mělo kohokoliv zmást.

      Co se týče souboru settings.py, ten je závislý na adresářové struktuře. Seriál je koncipován tak, že si čtenář díl po dílu postupně buduje projekt, jestliže má o to zájem. Tento soubor je opravdu důležitý a myslím si, že by se v něm každý Djangista měl naučit vyznat a být schopen si sestavit ke každého projektu vlastní.

      1. Jakub Vrána

        Re: Zásadní chyba

        Lepší příklad by byl třeba string_concat([_(u’Sta­v‘), ‚: ‚, _(u‘nový‘)]. Příklad z článku rozděluje řetězec, který by měl být přeložen vcelku a ještě navíc z něj kus nepřeloží. Z dobrého příkladu by měla být vidět nejen syntaxe, ale i smysluplné použití.

        Při chybějícím settings.py tedy nechápu, proč se v článku projekt vůbec nabízí ke stažení. Stejný argument by šel totiž použít i na jeho ostatní části. Verze pro stažení by měla sloužit k tomu, aby si čtenář ověřil, jestli má všechno správně nebo aby se podíval, jestli to vůbec správně funguje. Když tam chybí nejdůležitější soubor, tak to oba účely plní špatně.

      2. os.path

        Re: Zásadní chyba

        ad 3)settings.py je závislý na adresářové struktuře, protože s ním tak nakládáte vy, stačilo by v něm použít os.path a na adresářové struktuře by již závislý nebyl, tím že v tomto seriálu tyto cesty píšete „natvrdo“ dáváte dle mého názoru úplným začátečníkům špatné návyky.

      3. PMD

        Re: Zásadní chyba

        Zdravím, zdá se mi, že žádoucí chování by bylo: pokud není v url specifikován jazyk a není nastaveno cookie, zjisti jazyk z hlavičky requestu a teprve pokud ten není mezi podporovanými jazyky, použij nastavení settings.py. Podle výsledku nastav cookie a přesměruj nás na správně „lokalizované“ url.
        Vámi odkazovaná aplikace je sice užitečná pro vyhledávače, ale uživatelům na drzovku nastaví implicitní jazyk podle settings.py a proto nejde použít zároveň s LocaleMiddleware, které si čte ACCEPT_LANGUAGE a stará se o ty cookies. Tlučou se spolu kdo má pravdu.
        Docela by mě potěšilo, kdyby existovalo _univerzální_ řešení a nemusel bych ho psát sám. Znáte nějaké?

    2. .

      Re: Zásadní chyba

      Co ti brani napsat si vlastni middleware, kterej bude v URL resit identifikator jazyka?

      Vrat se k PHP a Django nech na pokoji.

      1. Pavel DvořákAutor příspěvku

        Re: Zásadní chyba

        Prosím, žádné osobní výpady. Návrhy na zlepšení Jakuba Vrány byly rozhodně opodstatněné a cením si jich.

  2. kiot

    Jak udelat jen a pouze CZ verzi?

    Dobry den,
    chtel bych mit web pripraven k multijazycnosti s EN identifikatory, ale zatim mit vse pouze v CZ jazyce.

    Identifikatory {% trans „i want this in EN“ %}.

    Problem je v tom, ze pokud prijdu na stranky s jazykem pro ktery neni preklad (EN, PT, …) , tak potrebuju nastavit, aby se automaticky nastavila CZ verze.

    Muzete me poradit, jak se toho da dosahnout?

    Dekuji,
    Tom

    1. Pavel DvořákAutor příspěvku

      Re: Jak udelat jen a pouze CZ verzi?

      V tom případě bych uvedl v konfigurační konstantě LANGUAGES pouze češtinu.

      1. kiot

        Re: Jak udelat jen a pouze CZ verzi?

        Zajimave je, ze pokud si vlozim do projektu (‚cs‘, u’Čeština‘), tak se mi objevi error serveru. nevite cim to muze byt?

        Muj kus kodu ze settings.py

        LANGUAGE_CODE = ‚cs‘
        LANGUAGES = (
        (‚cs‘, u’Čeština‘)
        )
        USE_I18N = True

        MIDDLEWARE_CLASSES = (
        ‚django.middle­ware.common.Com­monMiddleware‘,
        ‚django.contrib­.sessions.mid­dleware.Sessi­onMiddleware‘,
        ‚django.contrib­.auth.middlewa­re.Authentica­tionMiddleware‘,
        ‚django.middle­ware.locale.Lo­caleMiddleware‘,
        )

        TEMPLATE_CONTEX­T_PROCESSORS = (
        „django.core.con­text_processor­s.auth“,
        „django.core.con­text_processor­s.debug“,
        „django.core.con­text_processor­s.i18n“,
        „django.core.con­text_processor­s.media“,
         )

        1. Pavel DvořákAutor příspěvku

          Re: Jak udelat jen a pouze CZ verzi?

          Je na začátku souboru správně definované kódování? Musí tam být řádek  # coding: utf-8.

          1. kiot

            Re: Jak udelat jen a pouze CZ verzi?

            Mam tam znacku:
            # coding=UTF-8

            Pri pouziti
            # coding: utf-8 me to napise unsupported encoding

            1. Mintaka

              Re: Jak udelat jen a pouze CZ verzi?

              Používám na začátku souboru
              # –– coding: utf-8 –

              ( ty -*- jsou tam pro parádu ale leckde se používají)

              Kromě téhle informace, která se hledá (tuším) na prvních dvou řádcích souboru je také dobré si zkontrolovat, zda editor ukládá daný soubor opravdu ve formátu utf-8

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3114