#!/usr/bin/perl # Post-process the texinfo template to remove some entries which should not be # translated. Add translator notes to cross references. use strict; use warnings; use Text::Wrap 'wrap'; *OUT = *STDOUT; if (@ARGV and $ARGV[0] =~ /^-o(.*)/) { shift; my $out = $1 || shift || die "$0: missing output file\n"; open OUT, '>', $out or die "$0: can't open $out ($!)\n"; } $/ = ''; # read paragraphs while (<>) { # Path name for dir entry. Corrected by fixup-texi-trans. next if /^#\. type: menuentry/m and /^msgid "help2man: \(help2man\)"/m; # "Top" node is special to texinfo. next if /^#\. type: node/m and /^msgid "Top"/m; # Macro commands, and parameters. next if /^msgid "\@unmacro/m; next if /^msgid "\\\\text\\\\"/m; # Options. next if /^msgid "-[a-zA-Z]"/m; next if /^msgid "--[a-z-]+"/m; # Other untranslatable strings. next if /^#\. type: author/ and /^msgid "[^@]*\@email\{[^}]*\}"/m; next if /^msgid "help2man"/m; next if /^msgid "\@url\{[^}]*\}(\\n)?"/m; next if /^msgid "\@documentencoding UTF-8"/m; # Find cross references and add a note to translators. /^msgid "(.*)/sm or next; my @refs = $1 =~ /\@(?:p?x)?ref\{([^,}]*)\}/g; if (@refs) { for (@refs) { s/"\n"//g; # remove line breaks $_ = qq/"$_",/; # add quotes and comma } $refs[-1] =~ s/,$//; my $plural = ''; if (@refs > 1) { $plural = 's'; splice @refs, -1, 0, 'and'; } my $note = wrap "#. Translators: ", "#. ", "the translated cross-reference$plural @refs here must match the " . " target (type: node) translation$plural elsewhere in this file."; $_ = $note . "\n" . $_; } print OUT; }