Utilitzar catàlegs Gettext (Po/Mo) en Symfony 2.0.x

Una de les novetats de la versió 2.1 de Symfony és la incorporació de nous formats de fitxers per el seu mòdul Traductor.
Fins ara només suportava els formats xliff, php i yml, però en aquesta nova versió s’han incorporat nous formats com el .PO i el .MO.

Porto molts anys utilitzant els catàlegs Gettext (Po/Mo) per a les traduccions dels meus projectes, especialment gràcies a l’editor Poedit que permet mantenir els catàlegs d’una manera senzilla i àgil.

Si esteu utilitzant una versió anterior a la 2.1 de Symfony i voleu utilitzar el sistema de traduccions Po/Mo podeu fer-ho molt fàcilment, només cal seguir aquests passos:

1) Baixar del repositori de Symfony els dos fitxers per a carregar fitxers Po i Mo:

MoFileLoader.php
PoFileLoader.php

2) Copiar aquests dos fitxers a la carpeta vendor/symfony/symfony/src/Symfony/Component/Translation/Loader del nostre projecte

3) Editar el fitxer vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml i afegir-hi:

<parameters>
    ..
    <parameter key="translation.loader.po.class">Symfony\Component\Translation\Loader\PoFileLoader</parameter>
    <parameter key="translation.loader.mo.class">Symfony\Component\Translation\Loader\MoFileLoader</parameter>
    ..
</parameters>

<services>
    ..
    <service id="translation.dumper.po">
        <tag name="translation.dumper" alias="po" />
    </service>

    <service id="translation.dumper.mo">
        <tag name="translation.dumper" alias="mo" />
    </service>
    ..
</services>

4) I ja està! Ara ja podem utilitzar fitxers messages.ca.po dins de les carpetes “translations” dels nostres Bundles.