¿Cómo eliminar automáticamente las cadenas gettext no utilizadas?
Frecuentes
Visto 2,415 veces
8
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?
2 Respuestas
9
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.pot
y 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
-1
С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 gettext xgettext or haz tu propia pregunta.
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. - getSurreal