2009-10-19 14 views
9

Tengo un programa con varios dominios, algunos archivos fuente contienen llamadas dgettext() con diferentes dominios de texto.gettext: extrae cadenas de dgettext() a archivos domain.po

¿Cómo extraer gettext-strings a múltiples archivos .po? Por ejemplo, llame al dgettext('one', 'Hello') debe ir a one.po, y dgettext('two', 'Bye') a two.po. xgettext simplemente ignora el dominio de texto y lo pone todo en un solo archivo.

+0

Encontré una [sugerencia] (http://stackoverflow.com/a/5354360/645186) sobre cómo analizar cada dominio por separado. Sin embargo, esto es una solución. – Shef

Respuesta

0

Si está usando linux, use el programa gtranslator para manipular * .po y probar sus archivos * .po.

2

Primero necesita una forma de separar los dominios.

Por ejemplo, digamos que usted tiene un dominio para lib y uno para aplicación, a continuación, crear un acceso directo para la llamada dgettext();

_app(msg) -> dgettext("app", msg); 

y otro para el dominio lib:

_lib(msg) -> dgettext("lib", msg); 

Añadir estas llamadas en todo su código, como este;

show_message(_app("Choose a directory to save your work.")); 
show_message(_lib("No space left on device.")); 

Recuerde que es necesario llamar a bindtextdomain() para ambos dominios en la inicialización de la aplicación.

para extraerlos es necesario especificar diferentes palabras clave para xgettext en todos los nombres de archivo en el árbol de código fuente que contiene estos marcadores:

xgettext --keyword=_app -d domain1 filenames... 
xgettext --keyword=_lib -d domain2 filenames... 

Por último, compilar tanto de los archivos .po en su variante .mo binaria y copiarlos/instalarlos en la ubicación correcta.

+0

Ya conocía esta solución, como se menciona en los comentarios de la pregunta, pero gracias por el esfuerzo. – Shef

+0

Si cree que es una solución alternativa, no creo que haya soluciones al problema que no sean soluciones provisionales. La alternativa sería escribir su propio programa que extraiga las llamadas a dgettext(), pero entonces prácticamente duplicaría toda la lógica de xgettext. –

+1

Esto no es una solución, pero voy a premiarte con la recompensa, porque de lo contrario se desperdiciará. – Shef

Cuestiones relacionadas