Steffen Winkler > Locale-MO-File-0.03 > Locale::MO::File

Download:
Locale-MO-File-0.03.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.03   Source  

NAME ^

Locale::MO::File - Write/read gettext MO files

$Id: File.pm 615 2012-03-13 13:28:39Z steffenw $

$HeadURL: https://dbd-po.svn.sourceforge.net/svnroot/dbd-po/Locale-MO-File/trunk/lib/Locale/MO/File.pm $

VERSION ^

0.03

SYNOPSIS ^

    require Locale::MO::File;

    my $mo = Locale::MO::File->new(
        filename => $filename,
        ...
        messages => [
            {
                msgid  => 'original',
                msgstr => 'translation',
                ...
            },
            ...
        ],
    });
    $mo->write_file;

    $mo->read_file;
    my $messages = $self->get_messages;

DESCRIPTION ^

The module allows to write or read gettext MO files.

Data to write are expected as array reference of hash references. Read data are stored in an array reference too.

Reading and writing is also available using an already open file handle. A given file handle will used but not closed.

Set encoding, newline and byte order to be compatible.

SUBROUTINES/METHODS ^

method new

This is the constructor method. All parameters are optional.

    my $mo = Locale::MO::File->new(
        filename      => $string,
        file_handle   => $file_handle, # filename expected for error messages only
        encoding      => $string,      # e.g. 'UTF-8', if not set: bytes
        newline       => $string,      # e.g. $CRLF or "\n", if not set: no change
        is_big_endian => $boolean,     # if not set: little endian
        messages      => $arrayref,    # default []
    );

methods to modify an existing object

set_filename, get_filename, clear_filename

Modification of attribute filename.

    $mo->set_filename($string);
    $string = $mo->get_filename;
    $mo->clear_filename;

set_file_handle, get_file_handle, clear_file_handle

Modification of attribute file_handle.

set_encoding, get_encoding, clear_encoding

Modification of attribute encoding.

set_newline, get_newline, clear_newline

Modification of attribute newline.

set_is_big_endian, is_big_endian, clear_is_big_endian

Modification of attribute is_big_endian. Only needed to write files.

method set_messages, get_messages

Modification of attribute messages.

    $mo->set_messages([
        # header
        {
            msgid   => q{},
            msgstr  => $header,
        },
        # typical
        {
            msgid   => $original,
            msgstr  => $translation,
        },
        # context
        {
            msgctxt => $context,
            msgid   => $original,
            msgstr  => $translation,
        },
        # plural
        {
            msgid         => $original_singular,
            msgid_plural  => $original_plural,
            msgstr_plural => [ $tanslation_0, ..., $translation_n ],
        },
        # context + plural
        {
            msgctxt       => $context,
            msgid         => $original_singular,
            msgid_plural  => $original_plural,
            msgstr_plural => [ $tanslation_0, ..., $translation_n ],
        },
    ]);

method write_file

The content of the "messages" array reference is first sorted and then written. So the header is always on top. The transferred "messages" array reference remains unchanged.

    $mo->write_file;

method read_file

Big endian or little endian will be detected automaticly. The read data will be stored in attribute messages.

    $mo = read_file;
    my $messages = $mo->get_messages;

EXAMPLE ^

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

DIAGNOSTICS ^

Full validation of messages array reference using Params::Validate.

CONFIGURATION AND ENVIRONMENT ^

none

DEPENDENCIES ^

Moose

MooseX::StrictConstructor

Const::Fast

English

Encode

IO::File

namespace::autoclean

Params::Validate

INCOMPATIBILITIES ^

not known

BUGS AND LIMITATIONS ^

Hashing table not written of this module version. So very slim MO files are the result.

SEE ALSO ^

http://www.gnu.org/software/hello/manual/gettext/MO-Files.html

AUTHOR ^

Steffen Winkler

LICENSE AND COPYRIGHT ^

Copyright (c) 2011 - 2012, 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.

syntax highlighting: