Skip to content

Commit

Permalink
lib: Texinfo: Translate partial menu node names.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Apteryks authored and mquinson committed Oct 16, 2023
1 parent f4eaf4f commit 51c726f
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 4 deletions.
7 changes: 4 additions & 3 deletions lib/Locale/Po4a/Texinfo.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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 );
Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion t/fmt-texinfo.t
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
21 changes: 21 additions & 0 deletions t/fmt/texinfo/partialmenus.norm
Original file line number Diff line number Diff line change
@@ -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
40 changes: 40 additions & 0 deletions t/fmt/texinfo/partialmenus.po
Original file line number Diff line number Diff line change
@@ -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"
40 changes: 40 additions & 0 deletions t/fmt/texinfo/partialmenus.pot
Original file line number Diff line number Diff line change
@@ -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 ""
14 changes: 14 additions & 0 deletions t/fmt/texinfo/partialmenus.texi
Original file line number Diff line number Diff line change
@@ -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
21 changes: 21 additions & 0 deletions t/fmt/texinfo/partialmenus.trans
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 51c726f

Please sign in to comment.