diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/gettext.scm | 6 | ||||
-rw-r--r-- | gnu/packages/patches/po4a-partial-texinfo-menu-fix.patch | 242 |
3 files changed, 247 insertions, 2 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 9b75e16fb3..5f0f373054 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1781,6 +1781,7 @@ dist_patch_DATA = \ %D%/packages/patches/plib-CVE-2011-4620.patch \ %D%/packages/patches/plib-CVE-2012-4552.patch \ %D%/packages/patches/plotutils-spline-test.patch \ + %D%/packages/patches/po4a-partial-texinfo-menu-fix.patch \ %D%/packages/patches/polkit-disable-systemd.patch \ %D%/packages/patches/portaudio-audacity-compat.patch \ %D%/packages/patches/portmidi-modular-build.patch \ diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm index f2e01e6a3f..1408cc4cb4 100644 --- a/gnu/packages/gettext.scm +++ b/gnu/packages/gettext.scm @@ -240,11 +240,13 @@ from Markdown files.") (version "0.69") (source (origin (method url-fetch) - (uri (string-append "https://github.com/mquinson/po4a/releases/download/v" + (uri (string-append "https://github.com/mquinson/po4a" + "/releases/download/v" version "/po4a-" version ".tar.gz")) (sha256 (base32 - "15llrfdp4ilbrxy65hmmxka86xj0mrbqfiyzv715wrk16vqszm3w")))) + "15llrfdp4ilbrxy65hmmxka86xj0mrbqfiyzv715wrk16vqszm3w")) + (patches (search-patches "po4a-partial-texinfo-menu-fix.patch")))) (build-system perl-build-system) (arguments (list diff --git a/gnu/packages/patches/po4a-partial-texinfo-menu-fix.patch b/gnu/packages/patches/po4a-partial-texinfo-menu-fix.patch new file mode 100644 index 0000000000..8a075fa74c --- /dev/null +++ b/gnu/packages/patches/po4a-partial-texinfo-menu-fix.patch @@ -0,0 +1,242 @@ +Submitted upstream: https://github.com/mquinson/po4a/pull/437 + +From 43db5c0b14ec2a8ba44d338bce024df87256457b Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer <maxim.cournoyer@gmail.com> +Date: Thu, 27 Jul 2023 17:44:49 -0400 +Subject: [PATCH] lib: Texinfo: Translate partial menu node names. + +Fixes <https://issues.guix.gnu.org/64881>. + +* lib/Locale/Po4a/Texinfo.pm (translate_buffer_menuentry): Refine +regexp, so that it matches menu entries lacking a description. +Only call 'translate_buffer' on the description if it was provided. +* t/fmt/texinfo/partialmenus.trans: New file. +* t/fmt/texinfo/partialmenus.texi: Likewise. +* t/fmt/texinfo/partialmenus.pot: Likewise. +* t/fmt/texinfo/partialmenus.po: Likewise. +* t/fmt/texinfo/partialmenus.norm: Likewise. +* t/fmt-texinfo.t: Register the new 'partialmenus' test. +--- + lib/Locale/Po4a/Texinfo.pm | 7 +++--- + t/fmt-texinfo.t | 2 +- + t/fmt/texinfo/partialmenus.norm | 21 +++++++++++++++++ + t/fmt/texinfo/partialmenus.po | 40 ++++++++++++++++++++++++++++++++ + t/fmt/texinfo/partialmenus.pot | 40 ++++++++++++++++++++++++++++++++ + t/fmt/texinfo/partialmenus.texi | 14 +++++++++++ + t/fmt/texinfo/partialmenus.trans | 21 +++++++++++++++++ + 7 files changed, 141 insertions(+), 4 deletions(-) + create mode 100644 t/fmt/texinfo/partialmenus.norm + create mode 100644 t/fmt/texinfo/partialmenus.po + create mode 100644 t/fmt/texinfo/partialmenus.pot + create mode 100644 t/fmt/texinfo/partialmenus.texi + create mode 100644 t/fmt/texinfo/partialmenus.trans + +diff --git a/lib/Locale/Po4a/Texinfo.pm b/lib/Locale/Po4a/Texinfo.pm +index b4750699..1c3a4bae 100644 +--- a/lib/Locale/Po4a/Texinfo.pm ++++ b/lib/Locale/Po4a/Texinfo.pm +@@ -336,7 +336,7 @@ sub translate_buffer_menuentry { + + my $translated_buffer = ""; + +- if ( $buffer =~ m/^(.*?)(::)\s+(.*)$/s ++ if ( $buffer =~ m/^(.*?)(::)(?:\s+(.*))?$/s + or $buffer =~ m/^(.*?: .*?)(\.)\s+(.*)$/s ) + { + my ( $name, $sep, $description ) = ( $1, $2, $3 ); +@@ -347,8 +347,9 @@ sub translate_buffer_menuentry { + $translated_buffer .= ' ' x ( $menu_sep_width - 1 - $l ); + $l = $menu_sep_width - 1; + } +- ( $t, @e ) = $self->translate_buffer( $description, $no_wrap, @env ); +- ++ if ($description) { ++ ( $t, @e ) = $self->translate_buffer( $description, $no_wrap, @env ); ++ } + # Replace newlines with space for proper wrapping + # See https://github.com/mquinson/po4a/issues/122 + $t =~ s/\n/ /sg; +diff --git a/t/fmt-texinfo.t b/t/fmt-texinfo.t +index 4b067e43..d9ed5df3 100644 +--- a/t/fmt-texinfo.t ++++ b/t/fmt-texinfo.t +@@ -10,7 +10,7 @@ use Testhelper; + + my @tests; + +-for my $test (qw(longmenu comments tindex)) { ++for my $test (qw(longmenu partialmenus comments tindex)) { + push @tests, + { + 'format' => 'texinfo', +diff --git a/t/fmt/texinfo/partialmenus.norm b/t/fmt/texinfo/partialmenus.norm +new file mode 100644 +index 00000000..99240682 +--- /dev/null ++++ b/t/fmt/texinfo/partialmenus.norm +@@ -0,0 +1,21 @@ ++\input texinfo ++@c =========================================================================== ++@c ++@c This file was generated with po4a. Translate the source file. ++@c ++@c =========================================================================== ++ ++ ++@c These menus do not contain a description, which used to cause a ++@c Texinfo menu entry to not be translated. ++@menu ++* A menu entry without any description:: A menu entry without any ++ description ++* Optional menu name: The menu node:: Optional menu name: The menu node ++@end menu ++ ++@node A menu entry without any description ++@chapter A menu entry without any description ++ ++@node The menu node ++@chapter Optional menu name +diff --git a/t/fmt/texinfo/partialmenus.po b/t/fmt/texinfo/partialmenus.po +new file mode 100644 +index 00000000..31a14443 +--- /dev/null ++++ b/t/fmt/texinfo/partialmenus.po +@@ -0,0 +1,40 @@ ++# SOME DESCRIPTIVE TITLE ++# Copyright (C) YEAR Free Software Foundation, Inc. ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"POT-Creation-Date: 2023-07-27 17:29-0400\n" ++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" ++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#. type: chapter ++#: partialmenus.texi:8 partialmenus.texi:10 partialmenus.texi:11 ++#, no-wrap ++msgid "A menu entry without any description" ++msgstr "A MENU ENTRY WITHOUT ANY DESCRIPTION" ++ ++#. type: menuentry ++#: partialmenus.texi:8 ++msgid "Optional menu name: The menu node" ++msgstr "OPTIONAL MENU NAME: THE MENU NODE" ++ ++#. type: node ++#: partialmenus.texi:13 ++#, no-wrap ++msgid "The menu node" ++msgstr "THE MENU NODE" ++ ++#. type: chapter ++#: partialmenus.texi:14 ++#, no-wrap ++msgid "Optional menu name" ++msgstr "OPTIONAL MENU NAME" +diff --git a/t/fmt/texinfo/partialmenus.pot b/t/fmt/texinfo/partialmenus.pot +new file mode 100644 +index 00000000..0379f805 +--- /dev/null ++++ b/t/fmt/texinfo/partialmenus.pot +@@ -0,0 +1,40 @@ ++# SOME DESCRIPTIVE TITLE ++# Copyright (C) YEAR Free Software Foundation, Inc. ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"POT-Creation-Date: 2023-08-16 09:47-0400\n" ++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" ++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" ++"Language-Team: LANGUAGE <LL@li.org>\n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#. type: chapter ++#: partialmenus.texi:8 partialmenus.texi:10 partialmenus.texi:11 ++#, no-wrap ++msgid "A menu entry without any description" ++msgstr "" ++ ++#. type: menuentry ++#: partialmenus.texi:8 ++msgid "Optional menu name: The menu node" ++msgstr "" ++ ++#. type: node ++#: partialmenus.texi:13 ++#, no-wrap ++msgid "The menu node" ++msgstr "" ++ ++#. type: chapter ++#: partialmenus.texi:14 ++#, no-wrap ++msgid "Optional menu name" ++msgstr "" +diff --git a/t/fmt/texinfo/partialmenus.texi b/t/fmt/texinfo/partialmenus.texi +new file mode 100644 +index 00000000..f8663a2b +--- /dev/null ++++ b/t/fmt/texinfo/partialmenus.texi +@@ -0,0 +1,14 @@ ++\input texinfo ++ ++@c These menus do not contain a description, which used to cause a ++@c Texinfo menu entry to not be translated. ++@menu ++* A menu entry without any description:: ++* Optional menu name: The menu node:: ++@end menu ++ ++@node A menu entry without any description ++@chapter A menu entry without any description ++ ++@node The menu node ++@chapter Optional menu name +diff --git a/t/fmt/texinfo/partialmenus.trans b/t/fmt/texinfo/partialmenus.trans +new file mode 100644 +index 00000000..0ef742a1 +--- /dev/null ++++ b/t/fmt/texinfo/partialmenus.trans +@@ -0,0 +1,21 @@ ++\input texinfo ++@c =========================================================================== ++@c ++@c This file was generated with po4a. Translate the source file. ++@c ++@c =========================================================================== ++ ++ ++@c These menus do not contain a description, which used to cause a ++@c Texinfo menu entry to not be translated. ++@menu ++* A MENU ENTRY WITHOUT ANY DESCRIPTION:: A MENU ENTRY WITHOUT ANY ++ DESCRIPTION ++* OPTIONAL MENU NAME: THE MENU NODE:: OPTIONAL MENU NAME: THE MENU NODE ++@end menu ++ ++@node A MENU ENTRY WITHOUT ANY DESCRIPTION ++@chapter A MENU ENTRY WITHOUT ANY DESCRIPTION ++ ++@node THE MENU NODE ++@chapter OPTIONAL MENU NAME + +base-commit: 5b1cd768afdf4e9445812c5d43428495a0fde3c6 +-- +2.41.0 + |