2010-11-16 12 views
5

Per tradurre la mia app PHP, utilizzo compilato nel modulo gettext. Qui è un albero di directory di traduzioni in conformità con le docs:PHP: gettext richiede dirs LC_MESSAGES?

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 

Domanda: è possibile per sbarazzarsi del catalogo LC_MESSAGES? PHP sarà in grado di trovare traduzioni se utilizzo questa struttura?

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

mio PHP che commuta traduzioni:

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

Grazie in anticipo.

+3

Siamo spiacenti, nessun modo intorno a questo. È cablato nella libreria gettext. – mario

risposta

4

L'unica soluzione possibile è la creazione di un collegamento simbolico LC_MESSAGES -> . in ciascuna sottodirectory di lingua. (Ma questo complica l'installazione di applicazioni PHP. L'FTP raramente può creare collegamenti simbolici.)

3

Ho paura che sia il LC_MESSAGES.

Correggetemi se ho torto, ma penso che abbia qualcosa a che fare con la cache gettext.

0

Se si vuole veramente fare questo, è possibile utilizzare questo pacchetto compositore: gettext/gettext

così si può avere l'organizzazione delle cartelle come volete o anche qualcosa di simile:

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