aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2011-06-27 00:13:10 +0300
committerPeter Eisentraut <peter_e@gmx.net>2011-06-27 00:37:21 +0300
commitcb5a7bc2dce4377036bd70a69b2b7b3bc821036f (patch)
tree0aabced33a09c1658c8fc305d5be7dbacff715ad
parent7a5a843a2a63636458397823f090d5e28a02b6a4 (diff)
downloadpostgresql-cb5a7bc2dce4377036bd70a69b2b7b3bc821036f.tar.gz
postgresql-cb5a7bc2dce4377036bd70a69b2b7b3bc821036f.zip
Add the possibility to pass --flag arguments to xgettext calls
The --flag argument can be used to tell xgettext the arguments of which functions should be flagged with c-format in the PO files, instead of guessing based on the presence of format specifiers, which fails if no format specifiers are present but the translation accidentally introduces one. Appropriate flag settings have been added for each message catalog. based on a patch by Christoph Berg for bug #6066
-rw-r--r--src/backend/nls.mk5
-rw-r--r--src/bin/pg_dump/nls.mk5
-rw-r--r--src/bin/psql/nls.mk1
-rw-r--r--src/interfaces/ecpg/ecpglib/nls.mk1
-rw-r--r--src/interfaces/ecpg/preproc/nls.mk1
-rw-r--r--src/interfaces/libpq/nls.mk1
-rw-r--r--src/nls-global.mk13
-rw-r--r--src/pl/plperl/nls.mk1
-rw-r--r--src/pl/plpgsql/src/nls.mk1
-rw-r--r--src/pl/plpython/nls.mk5
-rw-r--r--src/pl/tcl/nls.mk1
11 files changed, 33 insertions, 2 deletions
diff --git a/src/backend/nls.mk b/src/backend/nls.mk
index 7672d67090e..297d1cb1902 100644
--- a/src/backend/nls.mk
+++ b/src/backend/nls.mk
@@ -5,6 +5,11 @@ GETTEXT_FILES = + gettext-files
GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) \
GUC_check_errmsg GUC_check_errdetail GUC_check_errhint \
write_stderr yyerror parser_yyerror
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS) \
+ GUC_check_errmsg:1:c-format \
+ GUC_check_errdetail:1:c-format \
+ GUC_check_errhint:1:c-format \
+ write_stderr:1:c-format
gettext-files: distprep
find $(srcdir)/ $(srcdir)/../port/ -name '*.c' -print >$@
diff --git a/src/bin/pg_dump/nls.mk b/src/bin/pg_dump/nls.mk
index 48a4990163b..a4824af1b8c 100644
--- a/src/bin/pg_dump/nls.mk
+++ b/src/bin/pg_dump/nls.mk
@@ -7,3 +7,8 @@ GETTEXT_FILES = pg_dump.c common.c pg_backup_archiver.c pg_backup_custom.c \
../../port/exec.c
GETTEXT_TRIGGERS = write_msg:2 die_horribly:3 exit_horribly:3 simple_prompt \
ExecuteSqlCommand:3 ahlog:3
+GETTEXT_FLAGS = \
+ write_msg:2:c-format \
+ die_horribly:3:c-format \
+ exit_horribly:3:c-format \
+ ahlog:3:c-format
diff --git a/src/bin/psql/nls.mk b/src/bin/psql/nls.mk
index 38d9b157f2c..8d744348f0b 100644
--- a/src/bin/psql/nls.mk
+++ b/src/bin/psql/nls.mk
@@ -5,3 +5,4 @@ GETTEXT_FILES = command.c common.c copy.c help.c input.c large_obj.c \
mainloop.c print.c startup.c describe.c sql_help.h sql_help.c \
../../port/exec.c
GETTEXT_TRIGGERS = N_ psql_error simple_prompt
+GETTEXT_FLAGS = psql_error:1:c-format
diff --git a/src/interfaces/ecpg/ecpglib/nls.mk b/src/interfaces/ecpg/ecpglib/nls.mk
index 2c92237bd7f..a127e636516 100644
--- a/src/interfaces/ecpg/ecpglib/nls.mk
+++ b/src/interfaces/ecpg/ecpglib/nls.mk
@@ -3,3 +3,4 @@ CATALOG_NAME = ecpglib
AVAIL_LANGUAGES = de es fr it ja pt_BR tr zh_CN
GETTEXT_FILES = connect.c error.c execute.c misc.c
GETTEXT_TRIGGERS = ecpg_gettext
+GETTEXT_FLAGS = ecpg_gettext:1:pass-c-format
diff --git a/src/interfaces/ecpg/preproc/nls.mk b/src/interfaces/ecpg/preproc/nls.mk
index 2c66d7833af..2a10b7668d7 100644
--- a/src/interfaces/ecpg/preproc/nls.mk
+++ b/src/interfaces/ecpg/preproc/nls.mk
@@ -3,3 +3,4 @@ CATALOG_NAME = ecpg
AVAIL_LANGUAGES = de es fr it ja ko pt_BR tr zh_CN zh_TW
GETTEXT_FILES = descriptor.c ecpg.c pgc.c preproc.c type.c variable.c
GETTEXT_TRIGGERS = mmerror:3
+GETTEXT_FLAGS = mmerror:3:c-format
diff --git a/src/interfaces/libpq/nls.mk b/src/interfaces/libpq/nls.mk
index ae0911e850d..2cd1efa9b03 100644
--- a/src/interfaces/libpq/nls.mk
+++ b/src/interfaces/libpq/nls.mk
@@ -3,3 +3,4 @@ CATALOG_NAME = libpq
AVAIL_LANGUAGES = cs de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW
GETTEXT_FILES = fe-auth.c fe-connect.c fe-exec.c fe-lobj.c fe-misc.c fe-protocol2.c fe-protocol3.c fe-secure.c
GETTEXT_TRIGGERS = libpq_gettext pqInternalNotice:2
+GETTEXT_FLAGS = libpq_gettext:1:pass-c-format pqInternalNotice:2:c-format
diff --git a/src/nls-global.mk b/src/nls-global.mk
index dda3e29a7a3..c95c3a496fa 100644
--- a/src/nls-global.mk
+++ b/src/nls-global.mk
@@ -12,6 +12,9 @@
# GETTEXT_FILES -- list of source files that contain message strings
# GETTEXT_TRIGGERS -- (optional) list of functions that contain
# translatable strings
+# GETTEXT_FLAGS -- (optional) list of gettext --flag arguments to mark
+# function arguments that contain C format strings
+# (functions must be listed in TRIGGERS and FLAGS)
#
# That's all, the rest is done here, if --enable-nls was specified.
#
@@ -41,6 +44,7 @@ endif
# _ is defined in c.h, so it's global
GETTEXT_TRIGGERS += _
+GETTEXT_FLAGS += _:1:pass-c-format
# common settings that apply to backend and all backend modules
@@ -49,6 +53,11 @@ BACKEND_COMMON_GETTEXT_TRIGGERS = \
errdetail errdetail_log errdetail_plural:1,2 \
errhint \
errcontext
+BACKEND_COMMON_GETTEXT_FLAGS = \
+ errmsg:1:c-format errmsg_plural:1:c-format errmsg_plural:2:c-format \
+ errdetail:1:c-format errdetail_log:1:c-format errdetail_plural:1:c-format errdetail_plural:2:c-format \
+ errhint:1:c-format \
+ errcontext:1:c-format
all-po: $(MO_FILES)
@@ -59,7 +68,7 @@ all-po: $(MO_FILES)
ifeq ($(word 1,$(GETTEXT_FILES)),+)
po/$(CATALOG_NAME).pot: $(word 2, $(GETTEXT_FILES)) $(MAKEFILE_LIST)
ifdef XGETTEXT
- $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) -f $<
+ $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(addprefix --flag=, $(GETTEXT_FLAGS)) -f $<
else
@echo "You don't have 'xgettext'."; exit 1
endif
@@ -68,7 +77,7 @@ po/$(CATALOG_NAME).pot: $(GETTEXT_FILES) $(MAKEFILE_LIST)
# Change to srcdir explicitly, don't rely on $^. That way we get
# consistent #: file references in the po files.
ifdef XGETTEXT
- $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(GETTEXT_FILES)
+ $(XGETTEXT) -D $(srcdir) -n $(addprefix -k, $(GETTEXT_TRIGGERS)) $(addprefix --flag=, $(GETTEXT_FLAGS)) $(GETTEXT_FILES)
else
@echo "You don't have 'xgettext'."; exit 1
endif
diff --git a/src/pl/plperl/nls.mk b/src/pl/plperl/nls.mk
index 57846d159fb..26041e53f7d 100644
--- a/src/pl/plperl/nls.mk
+++ b/src/pl/plperl/nls.mk
@@ -3,3 +3,4 @@ CATALOG_NAME = plperl
AVAIL_LANGUAGES = de es fr it ja pt_BR ro tr zh_CN zh_TW
GETTEXT_FILES = plperl.c SPI.c
GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS)
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/pl/plpgsql/src/nls.mk b/src/pl/plpgsql/src/nls.mk
index 98f25ea7e54..5be1859a903 100644
--- a/src/pl/plpgsql/src/nls.mk
+++ b/src/pl/plpgsql/src/nls.mk
@@ -3,3 +3,4 @@ CATALOG_NAME = plpgsql
AVAIL_LANGUAGES = de es fr it ja ko pt_BR ro zh_CN zh_TW
GETTEXT_FILES = pl_comp.c pl_exec.c pl_gram.c pl_funcs.c pl_handler.c pl_scanner.c
GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) yyerror plpgsql_yyerror
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS)
diff --git a/src/pl/plpython/nls.mk b/src/pl/plpython/nls.mk
index 0fdd234ad23..27d5e7cea8f 100644
--- a/src/pl/plpython/nls.mk
+++ b/src/pl/plpython/nls.mk
@@ -3,3 +3,8 @@ CATALOG_NAME = plpython
AVAIL_LANGUAGES = de es fr it ja pt_BR ro tr zh_CN zh_TW
GETTEXT_FILES = plpython.c
GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS) PLy_elog:2 PLy_exception_set:2 PLy_exception_set_plural:2,3
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS) \
+ PLy_elog:2:c-format \
+ PLy_exception_set:2:c-format \
+ PLy_exception_set_plural:2:c-format \
+ PLy_exception_set_plural:3:c-format
diff --git a/src/pl/tcl/nls.mk b/src/pl/tcl/nls.mk
index be95c15a04c..bb63f28b8c0 100644
--- a/src/pl/tcl/nls.mk
+++ b/src/pl/tcl/nls.mk
@@ -3,3 +3,4 @@ CATALOG_NAME = pltcl
AVAIL_LANGUAGES = de es fr it ja pt_BR ro tr zh_CN zh_TW
GETTEXT_FILES = pltcl.c
GETTEXT_TRIGGERS = $(BACKEND_COMMON_GETTEXT_TRIGGERS)
+GETTEXT_FLAGS = $(BACKEND_COMMON_GETTEXT_FLAGS)