# HG changeset patch
# User Martin Geisler <mg@daimi.au.dk>
# Date 2009-01-14 23:10:54
# Node ID 02e358a3a8a7f0f45b29e74fcd73c15253ad902a
# Parent  f7256cd9beffe9efd85957368781a88171ed9977

i18n: let Makefile generate i18n/hg.pot

The target update-pot extracts strings using pygettext and updates the
i18n/hg.pot file. The translators can then use msgmerge to merge the
new strings in hg.pot with their xx.po file when they want to.

The setup.py file now includes files under both templates/ and i18n/
as data files.

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -27,6 +27,7 @@ Output/Mercurial-*.exe
 .DS_Store
 tags
 cscope.*
+i18n/hg.pot
 
 syntax: regexp
 ^\.pc/
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -13,6 +13,7 @@ help:
 	@echo '  dist         - run all tests and create a source tarball in dist/'
 	@echo '  clean        - remove files created by other targets'
 	@echo '                 (except installed files or dist source tarball)'
+	@echo '  update-pot   - update i18n/hg.pot'
 	@echo
 	@echo 'Example for a system-wide installation under /usr/local:'
 	@echo '  make all && su -c "make install" && hg version'
@@ -74,6 +75,14 @@ tests:
 test-%:
 	cd tests && $(PYTHON) run-tests.py $(TESTFLAGS) $@
 
+update-pot:
+	mkdir -p i18n
+	pygettext -d doc -p i18n --docstrings \
+	mercurial/commands.py hgext/*.py hgext/*/__init__.py
+	pygettext -d all -p i18n mercurial hgext doc
+	msgcat i18n/doc.pot i18n/all.pot > i18n/hg.pot
+	rm i18n/doc.pot i18n/all.pot
 
 .PHONY: help all local build doc clean install install-bin install-doc \
-	install-home install-home-bin install-home-doc dist dist-notests tests
+	install-home install-home-bin install-home-doc dist dist-notests tests \
+	update-pot
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -149,6 +149,12 @@ try:
 except ImportError:
     pass
 
+datafiles = []
+for root in ('templates', 'i18n'):
+    for dir, dirs, files in os.walk(root):
+        datafiles.append((os.path.join('mercurial', dir),
+                          [os.path.join(dir, file_) for file_ in files]))
+
 setup(name='mercurial',
       version=version,
       author='Matt Mackall',
@@ -159,9 +165,7 @@ setup(name='mercurial',
       scripts=scripts,
       packages=packages,
       ext_modules=ext_modules,
-      data_files=[(os.path.join('mercurial', root),
-                   [os.path.join(root, file_) for file_ in files])
-                  for root, dirs, files in os.walk('templates')],
+      data_files=datafiles,
       cmdclass=cmdclass,
       options=dict(py2exe=dict(packages=['hgext', 'email']),
                    bdist_mpkg=dict(zipdist=True,