]> granicus.if.org Git - postgresql/blobdiff - src/nls-global.mk
Some code review for xml.c:
[postgresql] / src / nls-global.mk
index a29036027c06ccc21d70c9ea088f4db9b04708ef..e2d44f3e41a69eed5b9f209757fe831cb9511ef5 100644 (file)
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/pgsql/src/nls-global.mk,v 1.2 2001/06/30 21:58:06 petere Exp $
+# $PostgreSQL: pgsql/src/nls-global.mk,v 1.12 2006/04/05 13:40:15 petere Exp $
 
 # Common rules for Native Language Support (NLS)
 #
@@ -6,11 +6,11 @@
 # needs to contain a file 'nls.mk' with the following make variable
 # assignments:
 #
-# CATALOG_NAME         -- name of the message catalog (xxx.po); probably
-#                          name of the program
+# CATALOG_NAME         -- name of the message catalog (xxx.po); probably
+#                         name of the program
 # AVAIL_LANGUAGES      -- list of languages that are provided/supported
-# GETTEXT_FILES         -- list of source files that contain message strings
-# GETTEXT_TRIGGERS      -- (optional) list of functions that contain
+# GETTEXT_FILES                -- list of source files that contain message strings
+# GETTEXT_TRIGGERS     -- (optional) list of functions that contain
 #                          translatable strings
 #
 # That's all, the rest is done here, if --enable-nls was specified.
@@ -32,8 +32,8 @@ else
 LANGUAGES = $(AVAIL_LANGUAGES)
 endif
 
-PO_FILES = $(addsuffix .po, $(LANGUAGES))
-MO_FILES = $(addsuffix .mo, $(LANGUAGES))
+PO_FILES = $(addprefix po/, $(addsuffix .po, $(LANGUAGES)))
+MO_FILES = $(addprefix po/, $(addsuffix .mo, $(LANGUAGES)))
 
 ifdef XGETTEXT
 XGETTEXT += --foreign-user -ctranslator
@@ -42,19 +42,20 @@ endif
 
 all-po: $(MO_FILES)
 
-distprep: $(srcdir)/$(CATALOG_NAME).pot
-
 %.mo: %.po
        $(MSGFMT) -o $@ $<
 
 ifdef XGETTEXT
 ifeq ($(word 1,$(GETTEXT_FILES)),+)
-$(srcdir)/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES))
+po/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES))
        $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) -f $<
 else
-$(srcdir)/$(CATALOG_NAME).pot: $(GETTEXT_FILES)
-       $(XGETTEXT) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $^
+po/$(CATALOG_NAME).pot: $(GETTEXT_FILES)
+# Change to srcdir explicitly, don't rely on $^.  That way we get
+# consistent #: file references in the po files.
+       $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(GETTEXT_FILES)
 endif
+       @$(mkinstalldirs) $(dir $@)
        mv messages.po $@
 else # not XGETTEXT
        @echo "You don't have 'xgettext'."; exit 1
@@ -62,48 +63,50 @@ endif # not XGETTEXT
 
 
 install-po: all-po installdirs-po
+ifneq (,$(LANGUAGES))
        for lang in $(LANGUAGES); do \
-         $(INSTALL_DATA) $$lang.mo $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(CATALOG_NAME).mo || exit 1; \
+         $(INSTALL_DATA) po/$$lang.mo '$(DESTDIR)$(localedir)'/$$lang/LC_MESSAGES/$(CATALOG_NAME).mo || exit 1; \
        done
+endif
 
 installdirs-po:
-       $(mkinstalldirs) $(foreach lang, $(LANGUAGES), $(DESTDIR)$(localedir)/$(lang)/LC_MESSAGES)
+       $(mkinstalldirs) $(foreach lang, $(LANGUAGES), '$(DESTDIR)$(localedir)'/$(lang)/LC_MESSAGES)
 
 uninstall-po:
-       rm -f $(foreach lang, $(LANGUAGES), $(DESTDIR)$(localedir)/$(lang)/LC_MESSAGES/$(CATALOG_NAME).mo)
+       rm -f $(foreach lang, $(LANGUAGES), '$(DESTDIR)$(localedir)'/$(lang)/LC_MESSAGES/$(CATALOG_NAME).mo)
 
 
 clean-po:
        rm -f $(MO_FILES)
-       @rm -f $(addsuffix .po.old, $(AVAIL_LANGUAGES))
-
-maintainer-clean-po: clean-po
-       rm -f $(srcdir)/$(CATALOG_NAME).pot
+       @rm -f $(addsuffix .old, $(PO_FILES))
+       rm -f po/$(CATALOG_NAME).pot
 
 
 maintainer-check-po: $(PO_FILES)
        for file in $^; do \
-         $(MSGFMT) -v -o /dev/null $$file || exit 1; \
+         $(MSGFMT) -c -v -o /dev/null $$file || exit 1; \
        done
 
 
-init-po: $(srcdir)/$(CATALOG_NAME).pot
+init-po: po/$(CATALOG_NAME).pot
 
 
-update-po: $(srcdir)/$(CATALOG_NAME).pot
+define merge-lang
+@printf 'merging $(1) '
+@if $(MSGMERGE) $(srcdir)/po/$(1).po $< -o po/$(1).po.new $(addprefix --compendium=,$(shell find $(top_srcdir) -name $(1).po -printf '%p ')); \
+then \
+    mv $(srcdir)/po/$(1).po po/$(1).po.old; \
+    mv po/$(1).po.new $(srcdir)/po/$(1).po; \
+else \
+    echo "msgmerge for $(1) failed"; \
+    rm -f po/$(1).po.new; \
+fi
+
+endef
+
+update-po: po/$(CATALOG_NAME).pot
 ifdef MSGMERGE
-#      XXX  should be $(LANGUAGES)?
-       @for lang in $(AVAIL_LANGUAGES); do \
-         echo "merging $$lang:"; \
-         if $(MSGMERGE) $(srcdir)/$$lang.po $< -o $$lang.po.new; \
-         then \
-           mv $(srcdir)/$$lang.po $$lang.po.old; \
-           mv $$lang.po.new $(srcdir)/$$lang.po; \
-         else \
-           echo "msgmerge for $$lang failed"; \
-           rm -f $$lang.po.new; \
-         fi; \
-       done
+       $(foreach lang,$(LANGUAGES),$(call merge-lang,$(lang)))
 else
        @echo "You don't have 'msgmerge'." ; exit 1
 endif
@@ -113,9 +116,9 @@ all: all-po
 install: install-po
 installdirs: installdirs-po
 uninstall: uninstall-po
-clean distclean: clean-po
-maintainer-clean: maintainer-clean-po
+clean distclean maintainer-clean: clean-po
 maintainer-check: maintainer-check-po
 
 .PHONY: all-po install-po installdirs-po uninstall-po clean-po \
-        maintainer-clean-po maintainer-check-po init-po update-po
+        maintainer-check-po init-po update-po
+.SILENT: installdirs-po