'=' => '(%s)',
'_' => 'translate([==[%s]==])',
':' => 'translate([==[%s]==])',
- '+' => 'include([==[%s]==)',
+ '+' => 'include([==[%s]==])',
'#' => '--[==[%s]==]',
'' => '%s'
};
# Translate the .htm source into a valid Lua source using bracket quotes
# to avoid the need for complex escaping.
- $source =~ s|<%-?([=_:+#]?)(.*?)-?%>|sprintf "]==]; $sub->{$1}; [==[", $2|sge;
+ $source =~ s!<%-?([=_:+#]?)(.*?)-?%>!
+ my $t = $1;
+ my $s = $2;
+
+ # Split translation expressions on first non-escaped pipe.
+ if ($t eq ':' || $t eq '_') {
+ $s =~ s/^((?:[^\|\\]|\\.)*)\|(.*)$/$1]==],[==[$2/;
+ }
+
+ sprintf "]==]; $sub->{$t}; [==[", $s
+ !sge;
# Discover expressions like "lng.translate(...)" or "luci.i18n.translate(...)"
# and return them as extra keyword so that xgettext recognizes such expressions
my ($path, $source) = @_;
my ($file) = $path =~ m!([^/]+)$!;
- $source =~ s/("(?:title)")\s*:\s*("(?:[^"\\]|\\.)*")/$1: _($2)/sg;
+ $source =~ s/("(?:title|description)")\s*:\s*("(?:[^"\\]|\\.)*")/$1: _($2)/sg;
return ($source);
}
print $msguniq_in "msgid \"\"\nmsgstr \"Content-Type: text/plain; charset=UTF-8\"\n";
-if (open F, "find @ARGV -type f '(' -name '*.htm' -o -name '*.lua' -o -name '*.js' -o -path '*/menu.d/*.json' ')' |")
+if (open F, "find @ARGV -type f '(' -name '*.htm' -o -name '*.lua' -o -name '*.js' -o -path '*/menu.d/*.json' -o -path '*/acl.d/*.json' -o -path '*/statistics/plugins/*.json' ')' |")
{
while (defined( my $file = readline F))
{