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!

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í.

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.

Loading mentions Retweet
Posted 6 months ago

2 Comments

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.

Loading mentions Retweet
Posted 6 months ago

0 Comments

PhpEd - normalizace phpdoc komentářů a whitespace

PhpEd považuji za zřejmě nejlepší vývojové prostředí pro PHP aplikace. Suverénně nejlepší debugger, prostředí dělané jenom pro PHP a tak podobně. Ale také má mnoho much, naštěstí, dají se celkem vyřešit. Co mi v PhpEdu chybí, je automatické odstraňování bílých znaků na konci řádků a hnusný formát automaticky generované syntaxe phpdoc bloků.

PhpEd nabízí možnost (od verze professional) možnost vytvořit si php skript a sním "něco" provést. Tento PHP skript lze namapovat také na klávesovou zkratku. Dnes vám představím můj skript, který mi odstraní bílé znaky z konce řádků a dále převede tento škaredý formát phpdoc na ten "hezčí".

// starý formát
/**
* @param string $test
* @return string
*/

// nový formát
/**
 * @param string $test
 * @return string
*/

Jednoduše vytvořte na disku php skript s tímto obsahem:

<?php
$input = file_get_contents('php://stdin');
 
function deleteWhitespace($content)
{
    $lines = array();
    foreach (explode("\n", $content) as $line) {
        $lines[] = rtrim($line);
    }

    return implode("\n", $lines);
}

function insertSpacePhpdoc($content)
{
    return preg_replace('#^(\t+)?\*#m', '\1 *', $content);
}

$input = deleteWhitespace($input);
$input = insertSpacePhpdoc($input);
echo $input;
?>

Následně otevřete menu Settings / Tools / Integration, vytvořte New menu s nějakým rozumným názvem. Nastavte Execute na Shell, do Command vložte:

@php5@ -n -f "d:\www\cesta\k\vasemu\skripu.php"

a dále zatrhněte volby jako je níže na obrázku:

Volitelně vložte klávesovou zkratku. Po přiřazení klávesové zkratky nezapomeňte zkontrolovat/odstranit její vazbu na jinou akci. A to by mělo být vše.

Loading mentions Retweet
Posted 7 months ago

2 Comments