Next: What are Strings And Quote-like Expressions?, Previous: Which keywords will xgettext look for?, Up: Perl [Contents][Index]
Translating messages at runtime is normally performed by looking up the
original string in the translation database and returning the
translated version. The “natural” Perl implementation is a hash
lookup, and, of course, xgettext
supports such practice.
print __"Hello world!"; print $__{"Hello world!"}; print $__->{"Hello world!"}; print $$__{"Hello world!"};
The above four lines all do the same thing. The Perl module
Locale::TextDomain
exports by default a hash %__
that
is tied to the function __()
. It also exports a reference
$__
to %__
.
If an argument to the xgettext
option --keyword
,
resp. -k
starts with a percent sign, the rest of the keyword is
interpreted as the name of a hash. If it starts with a dollar
sign, the rest of the keyword is interpreted as a reference to a
hash.
Note that you can omit the quotation marks (single or double) around the hash key (almost) whenever Perl itself allows it:
print $gettext{Error};
The exact rule is: You can omit the surrounding quotes, when the hash
key is a valid C (!) identifier, i.e. when it starts with an
underscore or an ASCII letter and is followed by an arbitrary number
of underscores, ASCII letters or digits. Other Unicode characters
are not allowed, regardless of the use utf8
pragma.