> [: Chris Leonard :] > Does anyone know of such a tool? It would ideally be aware of PO file > structure to treat string subunits of a PO file as a single "chunk" as > opposed to a simple *nix diff which would be line-by-line. You could try Pology, http://pology.nedohodnik.net/. It contains an actual PO diffing script, poediff, where what "PO diff" means is documented in the user guide. But it will not produce what you described as the ideal output; this is very simple, and can be produced by the attached script using Pology library. -- Chusslove Illich (Часлав Илић)
#!/usr/bin/env python # -*- coding: UTF-8 -*- import sys from pology.catalog import Catalog old_pot, new_pot = sys.argv[1:] old_cat = Catalog(old_pot) new_cat = Catalog(new_pot) old_uniq_pot = old_cat.name + "-unique.pot" old_uniq_cat = Catalog(old_uniq_pot, create=True, truncate=True) for msg in old_cat: if msg not in new_cat: old_uniq_cat.add_last(msg) old_uniq_cat.sync() new_uniq_pot = new_cat.name + "-unique.pot" new_uniq_cat = Catalog(new_uniq_pot, create=True, truncate=True) for msg in new_cat: if msg not in old_cat: new_uniq_cat.add_last(msg) new_uniq_cat.sync() common_pot = old_cat.name + "-" + new_cat.name + "-common.pot" common_cat = Catalog(common_pot, create=True, truncate=True) for msg in old_cat: if msg in new_cat: common_cat.add_last(msg) common_cat.sync()
Attachment:
signature.asc
Description: This is a digitally signed message part.