Posterous theme by Cory Watilo

Poedit, gettext a Háefko

Jedná se repost článku ze starého blogu.

Po večeru hledání se mi konečně podařilo zprovoznit poedit, aby dokázal pořádně „vysosnout“ překlady. A co to má společného s Háefkem?

Díky skvělému editoru Poedit můžete jednoduše upravovat vlastní překlady. Komplikací je, že pokud něco přiděláte, nebo odděláte, je nutné to upravit v překladu hned, než na to zapomenete. Poedit nabízí velmi pěkné řešení, proskenuje váš php kód a všechny výskyty volání funkce gettext zaeviduje a vytvoří vám normální seznam klíčů pro překlad. Rád bych vám dnes ukázal řešení dvou problémů. 1) nastavit poedit, aby kód proskenoval 2) zprovoznit parsování i na jiných voláních funkce pro překlad.

Po instalaci si otevřete „Soubor → Konfigurace …“ a přejděte na záložku „Parsery“, zde editujte parser PHP. Upravte následující vstupní pole:

  • Seznam koncovek oddělených středníky: *.php;*.phtml;
  • Příkaz ke spuštění parseru: xgettext –force-po -o %o %C %K %F -L php

V české překladu je u příkladu koncovek chyba! V příkladu jsou koncovky odděleny čárkou, ale jednotlivé přípony oddělujte středníkem! Než jsem na toto přišel, tak mi to trvalo asi hodinu!

Dále si vytvořte / otevřete katalog. Přejděte na „Katalog → Nastavení“ a záložku „Cesty“. Buď vyplňte základní cestu, a pak přidejte požadované adresáře, nebo rovnou přidejte kompletní cestu k jednomu požadovanému adresář. Dále přejděte na záložku „Klíčová slova“.

Háefku se k překladu používají dvě základní funkce, které jsou aliasy k volání statických metod třídy L10n.

 <?php
     echo __('Translate me!!!');
     echo L10n::__('Translate me!!!');
 
     echo __n('%d comment', '%d comments', $comments);
     echo L10n::__n('%d comment', '%d comments', $comments);
 

Nyní je třeba nastavit Poeditu, že má parsovat také tyto funkce.
Přidejte proto tyto klíče:

  • __
  • __n:1,2

Díky tomuto budou již přeparsovány i tyto volání funkce!

Poedit-klice

Gettext a množné číslo

Možná jste se lekli, že funkci pro překlad množných čísel předáváme jen dva tvary. Čeština má přece tři! Ale ano, i na toto gettext myslí. Nutno ale podotknout, že je třeba aplikaci vyvíjet v en. V Poeditu pak třeba při vytváření katalogu vyplnit kolonku „Forma plurálů“ tímto obsahem:

nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;

Toto je definice českých plurálů. Nyní se vaše aplikace stává lehce lokalizovatelnou pro veškeré jazyky. Poedit vám pak nabídne vstupy pro překlad všech tří českých verzí.

Poedit-plural

Restart Apache

Nevím proč, ale když aktualizuji svůj „.mo“ soubor s překladem, musím restartovat Apache, aby se změny projevily.
Tento problém na starém blogu komentoval Roman Sklenář:

To restartování apache je velký neduh gettextu :( Asi jediný způsob jak to alespoň částečně obejít, je přejměnovat .mo soubor a tím Apache oblbnout a donutit ho načíst a nakešovat novou binárku.

Možná by mohlo fungovat i toto: na začátku skriptu/konstruk­toru třídy nastavím jméno .mo souboru na nějaký random a na konci ho nastavím na originál.

PhoB - podpora pro reverzní řazení

Do PhoBu přibyla jedna malá novinka. Nyní lze nakonfigurovat reverzní řazení. Stáhněte si nejnovější verzi ze stránek projektu a v index.php už uvidíte naznačenou konfigurační direktivu:

 $phob->config = array(
     'siteName' => 'PhotoBrowser',
     'skinName' => 'default',
     'showDirup' => true,
     'showExif' => true,
     'reverseOrder' => false,
 );
 

Jednoduše změňte hodnotu klíče reverseOrder na true a PhoB bude řadit fotografie a adresáře pozpátku.

Windows 7 po dvou týdnech reálného nasazení

Zkusil bych krátce shrnout, jak jsem spokojen s novými Windows po dvou týdnech reálného nasazení, jeden týden jsem na nic hodně pracoval (programování), druhý jsem se plně zase věnoval školním povinnostem (práce v "terénu", doc, tisk, síť, wifi, propojení s projektorem). A hned z úvodu: jsem nadšen.

Když jsem posledně psal, tak jsem si nevzpomněl na jednu novinku, úplně jsem ji vypustil z hlavy. O to větší bylo překvapení, že jsem na ni došel vlastní zkušeností. Windows 7 šetří mnohem více baterii, notebook mi mnohem déle vydržel. Nemám to nějak spočítané, ale jednoduše vím, že už některé dny nebudu vůbec nosit adaptér. Tedy, velmi pozitivní zkušenost.

Dále se opravdu osvědčilo jednoduché nastavení výstupu obrazu, tedy duplikace, či rozšíření obrazovky. Takhle jednoduše mi to ve Windows Vista nikdy nešlo. Správa wifi je také mnohem příjemnější, samotné připojení se mi zdá rychlejší. Opět bod pro W7.

Po cca dvou týdnech používání jsem si na nové rozhraní naprosto zvykl, jsem spokojen s novinkami a doporučuji všem upgrade. :)

Jaký byl rok 2009

Byl snad stejný jako ty předtím, dobré i nedobré věci. Člověk toho plno, klasicky, nestihl, ale přesto, podařilo se mi udělat a zažít plno dobrých a krásných věcí. V práci jsem se mnohému přiučil a udělal plno zajímavých věcí. Byl tomu také rok, co již dělám ve firmě. A byl to dobrý rok. V průběhu prázdnin jsem mj. navštívil s Lukášem Churým skvělou akci Builder party, opravdu mě to hodně dalo a těším se, že se tam letos s Curem opět vydáme.

Samozřejmě přes rok jsem taky hodně zapracoval na Háefku - mém frameworku. Přes prázdniny jsem doprogramoval průlomovou verzi 0.9, a nyní už jen chvílemi buxfixuji, ale není toho moc. A ano, dokonce skoro tři lidi používají Háefko. A i to udělá radost. Osobně ale už frameworky moc nepoužívám, v práci máme vlastní systém, velmi pěkný framework. Nebojte se ovšem ;) Háefko rozhodně nekončí, čeká ho velká premiéra nasazením jednoho připravovaného projektu pod záštitou programujte.

Ano, programujte.com, v roce 2009 jsem si nenašel příliš času na psaní článků. Zkusím to zlepšit. Minimálně se snažím být aktivním na php foru, které se musí chtě nechtě taky občas pořádně vyčistit. Všichni se samozřejmě těšíme už na Auroru, ale kdy ta přijde, to nevím nikdo.

A osobní život? No to víte, plno srandy :) Ale, jak jistě víte, mám nový mobil a Windows 7, a to je dobrý, ne? Teda, o mobilu zřejmě nevíte, brzy na něj vydám připravenou recenzi. Není to žádný super multi touch, je to klasická Nokia vyšší třídy.

Na závěr bych rád poděkoval vám věrným čtenářům a Zdeňkovi Večeřovi, který mi předal štafetu v bilancování roku 2009.