logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Locale::Maketext::Lexicon::Gettext - PO and MO file parser for Maketext

Authors

       •   Clinton Gormley <drtech@cpan.org>

       •   Audrey Tang <cpan@audreyt.org>

Description

       This module implements a perl-based "Gettext" parser for Locale::Maketext. It transforms all %1, %2,
       <%*>... sequences to "[_1]", "[_2]", "[_*]", and so on.  It accepts either plain PO file, or a MO file
       which will be handled with a pure-perl parser adapted from Imacat's "Locale::Maketext::Gettext".

       Since version 0.03, this module also looks for "%function(args...)"  in the lexicon strings, and
       transform it to "[function,args...]".  Any %1, %2... sequences inside the args will have their percent
       signs ("%") replaced by underscores ("_").

       The name of function above should begin with a letter or underscore, followed by any number of
       alphanumeric characters and/or underscores.  As an exception, the function name may also consist of a
       single asterisk ("*") or pound sign ("#"), which are "Locale::Maketext"'s shorthands for "quant" and
       "numf", respectively.

       As an additional feature, this module also parses MIME-header style metadata specified in the null msgstr
       (""), and add them to the %Lexicon with a "__" prefix.  For example, the example above will set
       "__Content-Type" to "text/plain; charset=iso8859-1", without the newline or the colon.

       Any normal entry that duplicates a metadata entry takes precedence.  Hence, a "msgid "__Content-Type""
       line occurs anywhere should override the above value.

Name

       Locale::Maketext::Lexicon::Gettext - PO and MO file parser for Maketext

Options

use_fuzzy
       When parsing PO files, fuzzy entries (entries marked with "#, fuzzy") are silently ignored.  If you wish
       to use fuzzy entries, specify a true value to the "_use_fuzzy" option:

           use Locale::Maketext::Lexicon {
               de => [Gettext => 'hello/de.mo'],
               _use_fuzzy => 1,
           };

   allow_empty
       When parsing PO files, empty entries (entries with "msgstr """) are silently ignored.  If you wish to
       allow empty entries, specify a true value to the "_allow_empty" option:

           use Locale::Maketext::Lexicon {
               de => [Gettext => 'hello/de.mo'],
               _allow_empty => 1,
           };

See Also

       Locale::Maketext, Locale::Maketext::Lexicon

Synopsis

       Called via Locale::Maketext::Lexicon:

           package Hello::I18N;
           use base 'Locale::Maketext';
           use Locale::Maketext::Lexicon {
               de => [Gettext => 'hello/de.mo'],
           };

       Directly calling "parse()":

           use Locale::Maketext::Lexicon::Gettext;
           my %Lexicon = %{ Locale::Maketext::Lexicon::Gettext->parse(<DATA>) };
           __DATA__
           #: Hello.pm:10
           msgid "Hello, World!"
           msgstr "Hallo, Welt!"

           #: Hello.pm:11
           msgid "You have %quant(%1,piece) of mail."
           msgstr "Sie haben %quant(%1,Poststueck,Poststuecken)."

Version

       version 1.00

See Also