Locale::TextDomain::OO::Lexicon::Hash - Lexicon from data structure
$Id: Hash.pm 546 2014-10-31 09:35:19Z steffenw $
1.014
This module allows to create a lexicon from data structure.
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({ ... });
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' . ':OptionalProject' => [ # 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", ], }, ], });
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',
Inside of this distribution is a directory named example. Run this *.pl files.
confess
none
Locale::TextDomain::OO::Singleton::Lexicon
Locale::TextDomain::OO::Util::ExtractHeader
Locale::TextDomain::OO::Util::JoinSplitLexiconKeys
Locale::TextDomain::OO::Role::Logger
not known
none
Steffen Winkler
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.