2012-05-03 7 views
5

Tengo una aplicación web donde tengo varias translataciones usando gettext. Pero ahora he hecho una reescritura importante de la aplicación y aunque la mayoría de las cadenas son las mismas, también hay bastantes que se cambiaron significativamente o se eliminaron.¿Cómo eliminar automáticamente cadenas de texto no utilizadas?

Uso xgettext para crear los archivos .po y es genial poder encontrar nuevas cadenas en el código y agregarlas a los archivos .po, pero no veo una opción para eliminar cadenas que no son encontrado en el código.

¿Existe alguna manera automática de eliminar las cadenas de los archivos .po que ya no están en el código?

+1

No es automático, pero mi trabajo es ejecutar xgettext dos veces. La primera ejecución utilizo el parámetro --no-location. La segunda ejecución vuelve a colocar la ubicación en los archivos. Ahora las cadenas de texto que ya no se utilizan no tienen una ubicación y se pueden identificar fácilmente para su eliminación. – getSurreal

Respuesta

0

Сan por lo

find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done 
3

Suponiendo que usted tiene un archivo de plantilla PO fresca que contiene sólo cadenas que deben estar en el catálogo definitivo PO en un archivo llamado messages.pot, y Catalogo de PO en message.po, puede haz esto:

msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po 

Esto marca las cadenas obsoletas. El conmutador --set-obsolete le dice a msgattrib que aplique el indicador obsoleto a todas las cadenas del archivo de destino, y --ignore-file le indica que ignore las cadenas que aparecen en el archivo especificado (la plantilla PO en nuestro caso).

Si también desea eliminar por completo, hay un paso más:

msgattrib --no-obsolete -o messages.po messages.po 

Puede leer más sobre msgattrib comando here.

Cuestiones relacionadas