$Id: gettext.txt 1475 2007-11-07 15:11:25Z mjs $ WHAT'S THE DIFFERENCE BETWEEN .po AND .pot FILES? Nothing, now: Why doesn't xgettext create it under the name domainname.pot right away? The answer is: for historical reasons. When xgettext was specified, the distinction between a PO file and PO file template was fuzzy, and the suffix .pot' wasn't in use at that time. http://www.gnu.org/software/gettext/manual/gettext.html#Template HOW DO I CREATE A .po/.pot FILE? You probably want something like: find ../lib -name '*.php' -o -name '*.html' | \ xgettext --from-code=iso-8859-1 -kt -L PHP -o messages.pot -f - See http://www.gnu.org/software/gettext/manual/gettext.html#Template HOW DO TRANSLATE A .pot FILE?/HOW DO I CREATE A .po FILE? Essentially, you want to rename it to LANG.po, then edit it with some tool like Poedit. You can also use msginit: msginit -l fr # defaults to reading from messages.pot, creates fr.po See http://www.gnu.org/software/gettext/manual/gettext.html#Creating HOW DO I UPDATE A .pot FILE? (I.E. AFTER NEW STRINGS HAVE BEEN ADDED TO THE SOURCE.) You first want to produce a new template file (can either rebuild it completely, or use the -j option to xgettext to update the existing one), then merge with each of the individual language files: msgmerge -U -v LANG.po messages.pot (-U for in-place edit, -v for verbose mode.) Check the "fuzzy" matches--it often doesn't do a very good job! (Use -N to disable if necessary.) See http://www.gnu.org/software/gettext/manual/gettext.html#Updating