The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Name

Class::Usul::L10N - Localize text strings

Synopsis

   use Class::Usul::L10N;

   my $l10n = Class::Usul::L10N->new( {
      localedir    => 'path_to_message_catalogs',
      log          => Log::Handler->new, } );

   $local_text = $l10n->localize( 'message_to_localize', {
      domain_names => [ 'message_file', 'another_message_file' ],
      locale       => 'de_DE',
      params       => { name => 'value', }, } );

Description

Localize text strings by looking them up in a GNU Gettext PO message catalog

Configuration and Environment

A POSIX locale id has the form

   <language>_<country>.<charset>@<key>=<value>;...

If the use_country attribute is set to true in the constructor call then the language and country are used from locale. By default use_country is false and only the language from the locale attribute is used

Defines the following attributes;

domain_names

Names of the mo/po files to search for

l10n_attributes

Hash ref passed to the File::Gettext constructor

source_name

Either po for Portable Object (the default) or mo for the Machine Object

use_country

See above

localedir

Base directory to search for mo/po files

lock

Optional IPC::SRLock object passed to File::Gettext

log

Optional logging object

tempdir

Directory to use for temporary files

Subroutines/Methods

BUILDARGS

Monkey with the constructors signature

BUILD

Finish initializing the object

get_po_header

   $po_header_hash_ref = $l10n->get_po_header( { locale => 'de' } );

Returns a hash ref containing the keys and values of the PO header record

invalidate_cache

   $l10n->invalidate_cache;

Causes a reload of the domain files the next time a message is localized

localize

   $local_text = $l10n->localize( $key, $args );

Localizes the message. The message catalog is loaded from a GNU Gettext portable object file. Returns the $key if the message is not in the catalog (and $args->{no_default} is not true). Language is selected by the $args->{locale} attribute. Expands positional parameters of the form [_<n>] if $args->{params} is an array ref of values to substitute. Otherwise expands named attributes of the form {attr_name} using the $args hash for substitution values. If $args->{quote_bind_values} is true the placeholder values are displayed wrapped in quotes, The attribute $args->{count} is passed to the portable object files plural function which is used to select either the singular or plural form of the translation. If $args->{context} is supplied it is prepended to the $key before the lookup in the catalog takes place

Diagnostics

Asserts that the locale attribute is set

Dependencies

Class::Usul::Constants
Class::Usul::Functions
File::DataClass::Types
File::Gettext
File::Gettext::Constants
Moo
Try::Tiny

Incompatibilities

There are no known incompatibilities in this module

Bugs and Limitations

There are no known bugs in this module. Please report problems to the address below. Patches are welcome

Author

Peter Flanigan, <Support at RoxSoft.co.uk>

Acknowledgements

Larry Wall - For the Perl programming language

License and Copyright

Copyright (c) 2014 Peter Flanigan. All rights reserved

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic

This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE