Problème de traduction d'interface avec Symfony 1.1 ?
parArkenle 11.Feb.2009
Objectif du jour : rendre mon site savedgames.net multilingue (enfin tout du moins bilingue dans un premier temps, à savoir Anglais par défaut, et Français).
Je me précipite évidemment sur la doc et je fais les choses suivantes : dans mon settings.yml : all:
.settings: default_culture: en i18n: on standard_helpers: [I18n, Partial, Cache, Form] charset: utf-8 Je créé un fichier XLIFF messages.fr.xml contenant toutes mes traductions : <?xml version="1.0" ?>
<xliff version="1.0"> <file original="global" source-language="en" datatype="plaintext"> <body> <trans-unit id="1"> <source>Game version</source> <target>Version du jeu</target> </trans-unit> <trans-unit id="2"> <source>Language</source> <target>Langue</target> </trans-unit> </body> </file> </xliff> ...que je sauvegarde bien en UTF-8 (c'est important) et place soigneusement dans le répertoire i18n de mon application frontend. Super, ça à l'air trop simple - me dis-je... Premier constat : malgré mon standard_helpers: [I18n, Partial, Cache, Form], je me prend un erreur comme quoi les helpers i18n restent introuvables...bon, je me paluche donc un <?php use_helper('I18N') ?> dans chacun de mes template faisant appel aux helpers en question. Deuxième constat : rien n'est traduit ! Là, je tords ma configuration dans tous les sens, renomme mon fichier XLIFF en messages.fr_FR.xml, change le source-language à l'interieur en en_US, bref, j'essaye à peut près tout et n'importe quoi pendant à peu près 1h30...moment où mes nerfs commencent un peu à lâcher...jusqu'à ce post miraculeux. La solution est en fait simple : c'est visiblement un bug de Symfony, le i18n: on dans le all, n'a aucun effet, il faut le spécifier pour chaque environnement : prod:
.settings: i18n: on no_script_name: on logging_enabled: off dev: .settings: i18n: on error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?> web_debug: on cache: off no_script_name: off etag: off test: .settings: i18n: on error_reporting: <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?> cache: off web_debug: off no_script_name: off etag: off ...et comme par miracle, tout fonctionne. Tags : symfony interface translation problem traduction i18n |
|










