diff --git a/src/backend/nls.mk b/src/backend/nls.mk index 7672d67090..297d1cb190 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 48a4990163..a4824af1b8 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 38d9b157f2..8d744348f0 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 2c92237bd7..a127e63651 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 2c66d7833a..2a10b7668d 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 ae0911e850..2cd1efa9b0 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 dda3e29a7a..c95c3a496f 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 57846d159f..26041e53f7 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 98f25ea7e5..5be1859a90 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 0fdd234ad2..27d5e7cea8 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 be95c15a04..bb63f28b8c 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)