]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
xgettext: In language Python, fix a format string handling bug.
authorBruno Haible <bruno@clisp.org>
Wed, 7 Jun 2023 15:51:18 +0000 (17:51 +0200)
committerBruno Haible <bruno@clisp.org>
Wed, 7 Jun 2023 16:58:32 +0000 (18:58 +0200)
The option --flag=my_new_format:1:python-brace-format used to mark strings
inside my_new_format invocations as being 'python-format' instead of
'python-brace-format'.

* gettext-tools/src/xgettext.c (xgettext_record_flag): Use the correct index
into flag_table_python.
* gettext-tools/tests/xgettext-python-7: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

gettext-tools/src/xgettext.c
gettext-tools/tests/Makefile.am
gettext-tools/tests/xgettext-python-7 [new file with mode: 0755]

index 968aaf4576bcff49653285b1606e3f16eccec482..c3534ad145c6bd97bc640eb9882fa4583d6e7886 100644 (file)
@@ -1524,7 +1524,7 @@ xgettext_record_flag (const char *optionstring)
                                                     argnum, value, pass);
                     break;
                   case format_python_brace:
-                    flag_context_list_table_insert (&flag_table_python, 0,
+                    flag_context_list_table_insert (&flag_table_python, 1,
                                                     name_start, name_end,
                                                     argnum, value, pass);
                     break;
index 108e66186a628dfedeacd98b80da43a61b1dc4ed..0cc606a28c5c46181f5b1f555878ed1324cfad0d 100644 (file)
@@ -143,6 +143,7 @@ TESTS = gettext-1 gettext-2 \
        xgettext-rst-1 xgettext-rst-2 \
        xgettext-python-1 xgettext-python-2 xgettext-python-3 \
        xgettext-python-4 xgettext-python-5 xgettext-python-6 \
+       xgettext-python-7 \
        xgettext-python-stackovfl-1 xgettext-python-stackovfl-2 \
        xgettext-python-stackovfl-3 xgettext-python-stackovfl-4 \
        xgettext-ruby-1 \
diff --git a/gettext-tools/tests/xgettext-python-7 b/gettext-tools/tests/xgettext-python-7
new file mode 100755 (executable)
index 0000000..2b98ac6
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
+
+# Test Python support: --pass-python-brace-format.
+
+cat <<\EOF > xg-py-7.py
+my_old_format(gettext("blaold %d and %s"));
+my_new_format(gettext("blanew {foo} and {bar}"));
+EOF
+
+: ${XGETTEXT=xgettext}
+${XGETTEXT} --flag=my_old_format:1:python-format \
+            --flag=my_new_format:1:python-brace-format \
+            --omit-header --no-location -d xg-py-7.tmp xg-py-7.py || Exit 1
+LC_ALL=C tr -d '\r' < xg-py-7.tmp.po > xg-py-7.po || Exit 1
+
+cat <<EOF > xg-py-7.ok
+#, python-format
+msgid "blaold %d and %s"
+msgstr ""
+
+#, python-brace-format
+msgid "blanew {foo} and {bar}"
+msgstr ""
+EOF
+
+: ${DIFF=diff}
+${DIFF} xg-py-7.ok xg-py-7.po
+result=$?
+
+exit $result