=encoding utf8

=head1 NAME

Log::Report::Lexicon::MOTcompact - use translations from an MO file

=head1 INHERITANCE

 Log::Report::Lexicon::MOTcompact
   is a Log::Report::Lexicon::Table

=head1 SYNOPSIS

 # using a MO table efficiently
 my $mot = Log::Report::Lexicon::MOTcompact->read('mo/nl.mo')
    or die;

 my $header = $mot->msgid('');
 print $mot->msgstr($msgid, 3);

=head1 DESCRIPTION

This module is translating, based on MO files (binary versions of
the PO files, the "Machine Object" format)

Actually, this module is not "compact" anymore: not trading off
speed for memory.  That may change again in the future.

To get a MO file, you first need a PO file.  Then run F<msgfmt>, which
is part of the gnu gettext package.

   msgfmt -cv -o $domain.mo $domain.po

   # -c = --check-format & --check-header & --check-domain
   # -v = --verbose
   # -o = --output-file

Extends L<"DESCRIPTION" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"DESCRIPTION">.
 
=head1 METHODS

Extends L<"METHODS" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"METHODS">.
 
=head2 Constructors

Extends L<"Constructors" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"Constructors">.
 
=over 4

=item Log::Report::Lexicon::MOTcompact-E<gt>B<new>(%options)

Inherited, see L<Log::Report::Lexicon::Table/"Constructors">

=item Log::Report::Lexicon::MOTcompact-E<gt>B<read>($filename, %options)

Read the MOT table information from $filename.

 -Option --Default
  charset  <from header>

=over 2

=item charset => STRING

The character-set which is used for the file.  When not specified, it is
taken from the "Content-Type" field in the PO-file.

=back

=back

=head2 Attributes

Extends L<"Attributes" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"Attributes">.
 
=over 4

=item $obj-E<gt>B<filename>()

Returns the name of the source file for this data.

=item $obj-E<gt>B<index>()

Returns a HASH of all defined PO objects, organized by msgid.  Please try
to avoid using this: use L<msgid()|Log::Report::Lexicon::MOTcompact/"Managing PO's"> for lookup.

=item $obj-E<gt>B<originalCharset>()

Returns the character-set as found in the PO-file.  The strings are
converted into utf8 before you use them in the program.

=back

=head2 Managing PO's

Extends L<"Managing PO's" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"Managing PO's">.
 
=head3 Translation

Extends L<"Translation" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"Translation">.
 
=over 4

=item $obj-E<gt>B<msgid>( STRING, [$msgctxt] )

Lookup the translations with the STRING.  Returns a SCALAR, when only
one translation is known, and an ARRAY when we have plural forms.
Returns C<undef> when the translation is not defined.

=item $obj-E<gt>B<msgstr>( $msgid, [$count, $msgctxt] )

Returns the translated string for $msgid.  When not specified, $count is 1
(the singular form).

=back

=head3 Administration

Extends L<"Administration" in Log::Report::Lexicon::Table|Log::Report::Lexicon::Table/"Administration">.
 
=over 4

=item $obj-E<gt>B<add>($po)

Inherited, see L<Log::Report::Lexicon::Table/"Administration">

=item $obj-E<gt>B<header>($field)

Inherited, see L<Log::Report::Lexicon::Table/"Administration">

=item $obj-E<gt>B<nrPlurals>()

Inherited, see L<Log::Report::Lexicon::Table/"Administration">

=item $obj-E<gt>B<pluralIndex>($count)

Inherited, see L<Log::Report::Lexicon::Table/"Administration">

=item $obj-E<gt>B<setupPluralAlgorithm>()

Inherited, see L<Log::Report::Lexicon::Table/"Administration">

=item $obj-E<gt>B<translations>( [$active] )

Inherited, see L<Log::Report::Lexicon::Table/"Administration">

=back

=head1 DIAGNOSTICS

=over 4

=item Error: only acceptable parameter is 'ACTIVE'

=back

=head1 SEE ALSO

This module is part of Log-Report-Lexicon distribution version 1.12,
built on April 18, 2025. Website: F<http://perl.overmeer.net/CPAN/>

=head1 LICENSE

Copyrights 2007-2025 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://dev.perl.org/licenses/>

