Translate Toolkit & Pootle

Tools to help you make your software local

User Tools

Localising using XLIFF files

This page explains the necessary work to allow the translate toolkit and/or Pootle to do the complete locasation using XLIFF files. It provides a roadmap for the programming tasks to make this whole process possible and is used to track the progress on this roadmap.


Current PO process

  • New SDF file
  • oo2po to create the templates
  • pot2po to update the current PO files to the new POT files
  • translate, review, rinse, repeat until golden brown
  • po2oo

XLIFF based process

  • New SDF file
  • oo2xliff? to create the templates
  • xliffmerge - to update the current xliff to the new xliff template
  • translate, review, rinse, repeat until golden brown
  • po2oo


CP == Capel, AP == Andreas

  • Make pogrep work with multiple filetypes - AP
  • Make pofilter work with multiple filetypes - AP FIXME doesn't place (pofilter) comments correctly in XLIFF
  • Split pot2po into initialisation (updating) and TM tools - CP
    • new tool that does Translation Memory lookup - based on Pootle/tools/updatetm?
    • pot2po with current functionality to update an existing po file to new POT file
    • restore the old TM functionality by calling the methods of the new TM tool.
  • Make pomerge work with multiple filetypes (already does, but rewrite factory part to use storage.factory) (very short) Wasn't so very short… -- Andreas
  • oo2xliff - AP?
    • Decide on the default filestyle (consider using multiple file-tags, although our support for them is not great)
    • Decide how to deal with duplicates (same default (merge), drop msgid_all, keep?)
  • implement the functionality of xliff2oo, probably inside po2oo - AP?
  • define context accessors in (msgctx in PO, something else in XLIFF) (po: msgctx, xliff: context-groups - somewhat already done) - CP?
  • display context in Pootle -CP?
  • use context in Pootle merge code


  • pomerge
    • make pomerge ignore (pofilter) messages (and/or xliff equivalent)
    • consider merging on ID instead of on location (same?)
  • pofilter
    • Only filter messages without approved/final state?
    • In place filtering write output to the input files
    • Ignore false positives that are indicated somehow
  • use the new tm tool in lookupserver
  • continuous renaming of methods and rewriting with newer APIs.


  • oo2xliff - new program? Do we want to use the multifile features of XLIFF? Probably not
  • xliffmerge - new program. It works fundamentally different from pot2po, or does it?
  • translate, review, rinse, repeat until golden brown
  • extend po2oo to do xliff2oo

Things Dwayne remembered

  • Must ensure that pofilter checks can work with OOo
    • A way to mark checks as false positives would be good
  • Searching must also work, not sure if this reuses parts of pogrep
  • Stats needs to also be non-PO centric

old notes

  • seperate tm out from pot2po (updatetm)
  • pofilter - Tchecker, etc.
    • subset (filtering) or full files + extra info ???
    • In place file editing
    • way to indicate false positives
  • pomerge
  • pogrep
  • Pootle
    • Mark a false positive
    • dependence on po specific pofilter
    • dependence on po specific pogrep