NAME

Locale::TextDomain::OO::Lexicon::Role::File - Helper role to add lexicon from file

$Id: File.pm 617 2015-08-22 05:39:27Z steffenw $

$HeadURL: svn+ssh://steffenw@svn.code.sf.net/p/perl-gettext-oo/code/module/trunk/lib/Locale/TextDomain/OO/Lexicon/Role/File.pm $

VERSION

1.031

DESCRIPTION

This module provides methods to inplmement lexicon from file easy.

SYNOPSIS

with qw(
    Locale::TextDomain::OO::Lexicon::Role::File
);

SUBROUTINES/METHODS

attribute decode_code

Allows to implement your own way of decode messages. Add a code ref in constructor.

decode_code => sub {
    my ($charset, $text) = @_;
    defined $text
        or return $text;

    return decode( $charset, $text );
},

method lexicon_ref

$self->lexicon_ref({
    # required
    search_dirs => [ qw( ./my_dir ./my_other_dir ) ],
    # optional
    gettext_to_maketext => $boolean,
    # optional
    decode => $boolean,
    # required
    data => [
        # e.g. de.mo, en.mo read from:
        # search_dir/de.mo
        # search_dir/en.mo
        '*::' => '*.mo',

        # e.g. de.mo en.mo read from:
        # search_dir/subdir/de/LC_MESSAGES/domain.mo
        # search_dir/subdir/en/LC_MESSAGES/domain.mo
        '*:LC_MESSAGES:domain' => 'subdir/*/LC_MESSAGES/domain.mo',

        # Merge a region lexicon:
        # Take the header and messages of the "de::" lexicon,
        # overwrite the header and messages of the "de-at::" lexicon
        # and store that as "de-at::" lexicon with all messages now.
        merge_lexicon => 'de::', 'de-at::' => 'de-at::',

        # Copy a lexicon into another domain and/or category:
        copy_lexicon => 'i-default::' => 'i-default:LC_MESSAGES:domain',

        # Move a lexicon into another domain and/or category:
        move_lexicon => 'i-default::' => 'i-default:LC_MESSAGES:domain',

        # Delete a lexicon:
        delete_lexicon => 'i-default::',
    ],
});

method logger

Set the logger and get back them

$lexicon_hash->logger(
    sub {
        my ($message, $arg_ref) = @_;
        my $type = $arg_ref->{type};
        $log->$type($message);
        return;
    },
);
$logger = $lexicon_hash->logger;

$arg_ref contains

object => $lexicon_hash, # the object itself
type   => 'debug',
event  => 'lexicon,load', # The logger will be copied to
                          # Locale::TextDomain::OO::Singleton::Lexicon
                          # so more events are possible.

EXAMPLE

Inside of this distribution is a directory named example. Run this *.pl files.

DIAGNOSTICS

confess

CONFIGURATION AND ENVIRONMENT

none

DEPENDENCIES

Carp

Encode

English

Locale::TextDomain::OO::Singleton::Lexicon

Locale::TextDomain::OO::Util::ExtractHeader

Locale::TextDomain::OO::Util::JoinSplitLexiconKeys

Moo::Role

MooX::Types::MooseLike::Base

Path::Tiny

namespace::autoclean

Locale::TextDomain::OO::Lexicon::Role::GettextToMaketext

Locale::TextDomain::OO::Role::Logger

INCOMPATIBILITIES

not known

BUGS AND LIMITATIONS

none

SEE ALSO

Locale::TextDoamin::OO

AUTHOR

Steffen Winkler

LICENSE AND COPYRIGHT

Copyright (c) 2013 - 2017, 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.