La localizzazione è difficile. È davvero difficile. Non sono solo "pairs of words" => "Wortpaare"
, è molto più complesso di così. Quello che la maggior parte delle persone dimentica quando guarda gettext e dice "Ugh, brutto" è che il processo di localizzazione è molto più importante dei dettagli tecnici dell'implementazione. Questo perché i traduttori effettivi in genere non sono programmatori e probabilmente non sono nemmeno interni. Questo provoca molti più mal di testa di quanto tu possa pensare. gettext è davvero vecchio, è stato testato in battaglia e ha dietro un'enorme toolchain ottimizzata per supportare questo processo. Se vuoi eseguire correttamente i18n e l10n, hai bisogno di un sistema potente. gettext è quello e ha il supporto di un'ampia gamma di strumenti. Il tuo Homebrewed Translation System™ no.
Prima di tutto, hai bisogno di un sistema robusto per estrarre stringhe traducibili. Senza essere in grado di estrarre automaticamente e in modo riproducibile le stringhe traducibili dal codice sorgente, hai una montagna di lavoro per ogni nuova stringa che desideri tradurre. In gettext, xgettext
lo fa.
Successivamente, è necessario uno strumento per sincronizzare le stringhe estratte con le traduzioni già esistenti in modo che non vengano perse traduzioni e che vengano mantenute solo le traduzioni leggermente modificate, se possibile. In gettext, msgmerge
lo fa.
Successivamente, vuoi un modo per aggiungere ulteriori informazioni alle stringhe. Vuoi essere in grado di raggrupparli per categoria, "dominio" e contesto, potresti voler aggiungere commenti per il traduttore al codice sorgente e potresti volere che i traduttori siano in grado di aggiungere commenti alle traduzioni. gettext supporta tutto ciò.
Successivamente, desideri un formato di file che abbia un buon supporto da una varietà di strumenti, dal momento che potresti inviare i tuoi file in Cina per farli tradurre lì. Il motivo per cui potresti inviarli a traduttori esterni è anche il motivo per cui hai bisogno di un buon strumento di sincronizzazione per unire le modifiche, poiché questo può essere un processo molto asincrono. I file PO sono molto ben supportati, perché gettext è così vecchio. Esistono molti strumenti open source e commerciali che supportano il processo di localizzazione a molti livelli, a seconda delle tue esigenze specifiche.
Non sottovalutare il compito di localizzazione, scegli uno strumento adatto al processo e imparalo. gettext è un ottimo strumento, se non addirittura il più adatto ai principianti.
Per quel che vale, ecco la mia estensione gettext per Twig , il che rende gettext per PHP ancora migliore.