¿Cómo eliminar automáticamente las cadenas gettext no utilizadas?

Tengo una aplicación web donde tengo varias traducciones usando gettext. Pero ahora he realizado una reescritura importante de la aplicación y, aunque la mayoría de las cadenas son las mismas, también hay algunas que se modificaron significativamente o se eliminaron.

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 se encuentran en el código. .

¿Hay alguna forma automatizada de eliminar las cadenas de los archivos .po que ya no están en el código?

preguntado el 03 de mayo de 12 a las 17:05

No está automatizado, pero mi solución es ejecutar xgettext dos veces. La primera ejecución utilizo el parámetro --no-ubicación. La segunda ejecución vuelve a colocar la ubicación en los archivos. Ahora, las cadenas de texto que ya no se usan no tienen una ubicación y se pueden identificar fácilmente para eliminarlas. -

2 Respuestas

Supongamos que tiene un archivo de plantilla de orden de compra nuevo que contiene solo cadenas que deberían estar en el catálogo de orden de compra final en un archivo llamado messages.poty el catálogo de orden de compra de destino en messages.po, Puedes hacerlo:

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

Esto marca cualquier cadena obsoleta. El --set-obsolete switch le dice a msgattrib que aplique el obsoleto marca a todas las cadenas en el archivo de destino, y --ignore-file le dice que ignore las cadenas que aparecen en el archivo especificado (la plantilla PO en nuestro caso).

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

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

Puedes leer más sobre la msgattrib comando aquí.

contestado el 25 de mayo de 18 a las 20:05

Сan tan

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

Respondido 20 Oct 14, 16:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.