#!/usr/bin/perl
# Post-process the texinfo template to remove some entries which should not be
-# translated.
+# translated. Add translator notes to cross references.
use strict;
use warnings;
+use Text::Wrap 'wrap';
*OUT = *STDOUT;
if (@ARGV and $ARGV[0] =~ /^-o(.*)/)
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;
+
+ # 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;
}