2010-11-16 16 views
5

Pour traduire mon application PHP j'utilise compilé dans le module gettext. Voici une arborescence de répertoires de traductions faites selon docs:PHP: gettext nécessite-t-il LC_MESSAGES dirs?

locale/ 
    cs_CZ/ 
    LC_MESSAGES/ 
     messages.po 
     messages.mo 
    de_DE/ 
    LC_MESSAGES/ 
     messages.po 
     messages.mo 
    fr_FR/ 
    LC_MESSAGES/ 
     messages.po 
     messages.mo 

Question: est-il possible de se débarrasser du catalogue LC_MESSAGES? Est-ce que PHP pourra trouver des traductions si j'utilise cette structure?

locale/ 
    cs_CZ/ 
    messages.po 
    messages.mo 
    de_DE/ 
    messages.po 
    messages.mo 
    fr_FR/ 
    messages.po 
    messages.mo 

Mon PHP qui passe traductions:

<?php 
    setlocale(LC_ALL, 'fr_FR.UTF-8'); 
    bindtextdomain("messages", "locale"); 
    bind_textdomain_codeset("messages", 'UTF-8'); 
    textdomain("messages"); 
?> 

Merci à l'avance.

+3

Désolé, aucun moyen autour de ça. Il est câblé dans la bibliothèque gettext. – mario

Répondre

4

La seule solution de contournement possible consiste à créer un lien symbolique LC_MESSAGES -> . dans chaque sous-répertoire de langue. (Mais cela complique l'installation de l'application PHP. FTP peut rarement créer des liens symboliques.)

3

Je crains que LC_MESSAGES soit une exigence. Corrigez-moi si je me trompe, mais je pense que cela a quelque chose à voir avec le cache gettext.

0

Si vous voulez vraiment faire cela, vous pouvez utiliser ce paquet compositeur: gettext/gettext

vous pouvez donc avoir l'organisation de dossier que vous désirez ou même quelque chose comme ça:

locales/ 
    cs_CZ.mo 
    cs_CZ.po 
    de_DE.mo 
    de_DE.po 
    fr_FR.mo 
    fr_FR.po