提交 cb5a7bc2 编写于 作者: P Peter Eisentraut

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
上级 7a5a843a
......@@ -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 >$@
......
......@@ -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
......@@ -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
......@@ -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
......@@ -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
......@@ -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
......@@ -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
......
......@@ -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)
......@@ -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)
......@@ -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
......@@ -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)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册