summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-08-16 10:29:25 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-08-16 11:04:21 -0400
commit352c49e1a5c48eb76389ee384eb95fc2e4a6ab32 (patch)
tree90e743e516962697532b2b5eefeb3db989f7d615 /gnu
parent310b0f72d8749376832fa1f149837a83d8e74629 (diff)
gnu: po4a: Apply patch to translate partial Texinfo menus.
Fixes <https://issues.guix.gnu.org/64881>. * gnu/packages/gettext.scm (po4a) [source]: Apply patch. * gnu/packages/patches/po4a-partial-texinfo-menu-fix.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/gettext.scm6
-rw-r--r--gnu/packages/patches/po4a-partial-texinfo-menu-fix.patch242
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
+