Usiamo gettext per le traduzioni nel nostro prodotto, ma hanno avuto un sacco di problemi con esso:ricambi per gettext
- Non è possibile usare un linguaggio meno che il sistema supporta.
Su Solaris 9 Sparc, se si ripristina l'ambiente su varie impostazioni locali inglesi, il messaggio non verrà ancora tradotto, se la macchina non ha le impostazioni internazionali corrispondenti. Il file di traduzione è presente, ma non possiamo accedervi.
- Utilizza ambiente per lavorare fuori la lingua
Questo causa problemi a server che vogliono tradurre i messaggi in diverse lingue. In teoria, questa potrebbe essere un'operazione completamente parallela e sicura per i thread, ma gettext significa che dobbiamo avere un blocco globale della traduzione.
- non possibile impostare la lingua predefinita
Con questo non voglio dire il testo nel codice. Usiamo MsgID nel codice, quindi quello che voglio è essere in grado di specificare una traduzione fall-back per andare a, se l'ambiente corrente definisce la lingua non è disponibile. Ma gettext non lo consente - devo provare, quindi resettare l'ambiente prima che possa ordinare una traduzione diversa. (Usando msgid non era la mia scelta - ho voluto seguire gli standard gettext e utilizzare l'inglese come gli ID, ma ero stata accettata, e sarebbe un sacco di lavoro per cambiare ora)
- Codifica l'ARE restituiti variano tra UTF-8 e la codifica locale corrente.
Non intendo i file .po: sono tutti in UTF-8 (fastidioso che msgfmt non gestisca BOM ma qualunque). Intendo l'output di gettext ngettext ecc, che sono in UTF-8 (indipendentemente dalla codifica locale/terminale) su AIX e HPUX, ma codifica locale su Solaris/Linux/FreeBSD, anche se ciò potrebbe essere dovuto a problemi iconv?
In ogni caso sarebbe bello non dover avere un codice speciale per piattaforme diverse - dovrò indagare se posso ottenere bind_textdomain_codeset(domain,codepage);
per aiutare contro questo problema.
Qualcuno sa di un open-source librerie di traduzione che forniscono un'interfaccia più utile?
non avevo vedere cose traduzione ICU prima - ho pensato che fosse una semplice conversione codifiche ... Decisamente interessante, dal momento che credo che l'ICU possa diventare una nostra dipendenza ad un certo punto. –
sulla dipendenza di sistema di gettext - e.g. Non è possibile tradurre un messaggio in giapponese a meno che non siano supportate le impostazioni internazionali di sistema ja_JP.UTF-8, anche se si utilizza un sistema UTF-8 e potrebbe essere in grado di visualizzare il giapponese. –
O anche un server che vuole essere in grado di generare giapponese, ad es.per un messaggio di posta elettronica, è necessario che le impostazioni internazionali siano disponibili solo per ottenere un messaggio di traduzione. –