NAME
Locale::TextDomain::OO::Lexicon::Hash - Lexicon from data structure
$Id: Hash.pm 461 2014-01-09 07:57:37Z steffenw $
$HeadURL: svn+ssh://steffenw@svn.code.sf.net/p/perl-gettext-oo/code/module/trunk/lib/Locale/TextDomain/OO/Lexicon/Hash.pm $
VERSION
1.006
DESCRIPTION
This module allows to create a lexicon from data structure.
SYNOPSIS
require Locale::TextDomain::OO::Lexicon::Hash;
Locale::TextDomain::OO::Lexicon::Hash
->new(
# all parameters are optional
logger => sub {
my ($message, $arg_ref) = @_;
my $type = $arg_ref->{type}; # debug
Log::Log4perl->get_logger(...)->$type($message);
return;
},
)
->lexicon_ref({ ... });
SUBROUTINES/METHODS
method lexicon_ref
Fill in lexicon data from Perl data structure.
For language "de-de", no category (default) and no domain (default) the lexicon name is "de-de::".
For language "en", category "LC_MESSAGES" and domain "test" the lexicon name is "en:LC_MESSAGES:test".
The keys of each item are stolen from PO file. Except the keys "msgstr_plural[0]", "msgstr_plural[1]", ... "msgstr_plural[N]" are written as key "msgstr_plural" with an array reference as value.
$self->lexicon_ref({
'de:MyCategory:MyDomain' => [
# header in a very minimalistic form
{
msgid => "",
msgstr => ""
. "Content-Type: text/plain; charset=UTF-8\n"
. "Plural-Forms: nplurals=2; plural=n != 1;",
},
# single translation
{
msgid => "help",
msgstr => "Hilfe",
},
# with context
{
msgctxt => "datetime",
msgid => "date",
msgstr => "Datum",
},
# plural
{
msgid => "person",
msgid_plural => "persons",
msgstr_plural => [
"Person",
"Personen",
],
},
# plural with context
{
msgctxt => "appointment",
msgid => "date",
msgid_plural => "dates",
msgstr_plural => [
"Date",
"Dates",
],
},
],
});
method logger
Set the logger
$lexicon_hash->logger(
sub {
my ($message, $arg_ref) = @_;
my $type = $arg_ref->{type};
Log::Log4perl->get_logger(...)->$type($message);
return;
},
);
$arg_ref contains
object => $lexicon_hash, # the object itself
type => 'debug',
event => 'lexicon,load',
EXAMPLE
Inside of this distribution is a directory named example. Run this *.pl files.
DIAGNOSTICS
confess
CONFIGURATION AND ENVIRONMENT
none
DEPENDENCIES
Locale::TextDomain::OO::Singleton::Lexicon
Locale::TextDomain::OO::Lexicon::Role::ExtractHeader
Locale::TextDomain::OO::Role::Logger
INCOMPATIBILITIES
not known
BUGS AND LIMITATIONS
none
SEE ALSO
AUTHOR
Steffen Winkler
LICENSE AND COPYRIGHT
Copyright (c) 2013 - 2014, Steffen Winkler <steffenw at cpan.org>
. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.