Locale-Maketext-Gettext
view release on metacpan or search on metacpan
lib/Locale/Maketext/Gettext/Functions.pm view on Meta::CPAN
a text message into the native language of the user in that text
domain. Use "--keyword=dmaketext:2" for the xgettext utility.
=item $message = pmaketext($context, $key, @param...)
Attempts to translate a text message in a particular context into the
native language of the user. Use "--keyword=pmaketext:1c,2" for
the xgettext utility.
=item $message = dpmaketext($domain, $context, $key, @param...)
Temporarily switch to another text domain and attempts to translate
a text message in a particular context into the native language of
the user in that text domain. Use "--keyword=dpmaketext:2c,3" for
the xgettext utility.
=item encoding(ENCODING)
Set or retrieve the output encoding. The default is the same
encoding as the gettext MO file. You can specify C<undef>, to return
the result in unencoded UTF-8.
=item key_encoding(ENCODING)
Specify the encoding used in your original text. The C<maketext>
method itself is not multibyte-safe to the _AUTO lexicon. If you are
using your native non-English language as your original text and you
are having troubles like:
Unterminated bracket group, in:
Then, specify the C<key_encoding> to the encoding of your original
text. Returns the current setting.
B<WARNING:> You should always use US-ASCII text keys. Using
non-US-ASCII keys is always discouraged and is not guaranteed to
be working.
=item encode_failure(CHECK)
Set the action when encode fails. This happens when the output text
is out of the scope of your output encoding. For example, output
Chinese into US-ASCII. Refer to L<Encode(3)|Encode/3> for the
possible values of this C<CHECK>. The default is C<FB_DEFAULT>,
which is a safe choice that never fails. But part of your text may
be lost, since that is what C<FB_DEFAULT> does. Returns the current
setting.
=item die_for_lookup_failures(SHOULD_I_DIE)
Maketext dies for lookup failures, but GNU gettext never fails.
By default Lexicon::Maketext::Gettext follows the GNU gettext
behavior. But if you are Maketext-styled, or if you need a better
control over the failures (like me :p), set this to 1. Returns the
current setting.
=item reload_text()
Purges the MO text cache. By default MO files are cached after they
are read and parsed from the disk, to reduce I/O and parsing overhead
on busy sites. reload_text() purges this cache, so that updated MO
files can take effect at run-time. This is used when your MO file is
updated, but you cannot shutdown and restart the application. for
example, when you are a virtual host on a mod_perl-enabled Apache, or
when your mod_perl-enabled Apache is too vital to be restarted for
every update of your MO file, or if you are running a vital daemon,
such as an X display server.
=item %Lexicon = read_mo($MO_file)
Read and parse the MO file. Returns the read %Lexicon. The returned
lexicon is in its original encoding.
If you need the meta information of your MO file, parse the entry
C<$Lexicon{""}>. For example:
/^Content-Type: text\/plain; charset=(.*)$/im;
$encoding = $1;
=back
=head1 NOTES
B<NOTE:> Since localization classes are generated at run-time, it is
not possible to override the Maketext language functions, like
C<quant> or C<numerate>. If that is your concern, use
L<Locale::Maketext::Gettext(3)|Locale::Maketext::Gettext/3> instead.
Suggestions are welcome.
You can now add/remove languages/MO files at run-time. This is a
major improvement over the original
L<Locale::Maketext::Gettext(3)|Locale::Maketext::Gettext/3> (and
L<Locale::Maketext(3)|Locale::Maketext/3>). This is done by
registering localization classes with random IDs, so that the same
text domain can be re-declared infinitely, whenever needed (language
list changes, LOCALEDIR changes, etc.) This is not possible to the
object-interface of
L<Locale::Maketext::Gettext(3)|Locale::Maketext::Gettext/3> (and
L<Locale::Maketext(3)|Locale::Maketext/3>).
Language addition/removal takes effect only after C<bindtextdomain>
or C<textdomain> is called. It has no effect on C<maketext> calls.
This keeps a basic sanity in the lifetime of a running script.
If you set C<textdomain> to a domain that is not C<bindtextdomain> to
specific a locale directory yet, it will try search system locale
directories. The current system locale directory search order is:
/usr/share/locale, /usr/lib/locale, /usr/local/share/locale,
/usr/local/lib/locale. Suggestions are welcome.
=head1 STORY
The idea is that: I finally realized that, no matter how hard I try,
I<I can never get a never-failure C<maketext>.> A common wrapper
like:
sub __ { return $LH->maketext(@_) };
always fails if $LH is not initialized yet. For this reason,
C<maketext> can hardly be employed in error handlers to output
graceful error messages in the natural language of the user. So,
( run in 2.738 seconds using v1.01-cache-2.11-cpan-600a1bdf6e4 )