2 komentářů k článku Symfony po krůčkách – Translation – překlady jednoduše:

  1. Luděk Benedík

    Pěkný článek. Jen bych pro fallbacks doplnil:

    V kontrukci $translator = new Translator('cs_CZ'); vidíme hodnotu cs_CZ, kterou můžeme získávat např. z requestu. V takovém případě bude translátoru často namísto hodnoty cs_CZ předána hodnota cs. A teď důležitá věc! Postupné hledání jazyků cs_CZ a následně cs platí pouze pro překládáný jazyk, nikoliv pro jazyk registrovaných překladů. Jinak řečeno, registrované překlady pro jazyk cs_CZ jsou pouze pro jazyk cs_CZ a nikoliv pro jazyk cs. Nejlépe to bude vidět na příkladě.

    $translator = new Translator('en'); // en, en_GB, en_US
    $translator->addLoader('array', new ArrayLoader());
    $translator->addResource('array', array(
        'metro' => 'Underground',
    ), 'en_GB');
    $translator->addResource('array', array(
        'metro' => 'Subway',
    ), 'en_US');
    
    echo $translator->trans('metro', [], null, 'en');    // metro
    echo $translator->trans('metro', [], null, 'en_GB'); // Underground
    echo $translator->trans('metro', [], null, 'en_US'); // Subway
    

    Jak je na příkladě vidět, pro jazyk en překlad neexistuje.
    Proto je vhodné si pro každý registrovaný jazyk určit výchozí „mutaci“.
    Ukážeme si to opět nejlépe na příkladě.

    $translator = new Translator('en'); // en, en_GB, en_US
    $translator->addLoader('array', new ArrayLoader());
    $translator->addResource('array', array(
        'metro' => 'Underground',
    ), 'en');
    $translator->addResource('array', array(
        'metro' => 'Subway',
    ), 'en_US');
    
    echo $translator->trans('metro', [], null, 'en');    // Underground
    echo $translator->trans('metro', [], null, 'en_GB'); // Underground
    echo $translator->trans('metro', [], null, 'en_US'); // Subway
    
  2. Milan Krupa

    Pěkný článek, díky za něj. Jen mi tam trošku chybí dvě věci:

    1. možnost automatické extrakce řetězců pro překlad (app/console translation:update) a při té příležitosti zmínit jms/translation-bundle, který umí extrahovat nejen ze šablon, ale i z controllerů a formulářů.
    2. Máš nějaký osvědčený způsob, jak používat proměnné v překladu při používání zástupných klíčů? Jde o to, aby překladatel hned viděl, že v dané větě může použít proměnné a jak se jmenují.

    Např.
    Dnes je %date% a svátek má %name%“ => today.is.DATE.nameday.has.NAME

    případně pokud jsou klíče založené na struktuře webu:
    welcome.nameday.info.DATE-NAME (na welcome stránce přelož informaci o svátku; v překladu můžete použít proměnné %date% a %name%)

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=17071