File: Translator.pod

package info (click to toggle)
liblog-report-perl 0.94-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 568 kB
  • sloc: perl: 3,649; makefile: 7
file content (122 lines) | stat: -rw-r--r-- 3,198 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
=head1 NAME

Log::Report::Translator - base implementation for translating messages

=head1 INHERITANCE

 Log::Report::Translator is extended by
   Log::Report::Translator::Gettext
   Log::Report::Translator::POT

=head1 SYNOPSIS

 # internal infrastructure
 my $msg = Log::Report::Message->new(_msgid => "Hello World\n");
 print Log::Report::Translator->new(...)->translate($msg);

 # normal use
 use Log::Report 'my-domain';
 print __"Hello World\n";

=head1 DESCRIPTION

A module (or distribution) has a certain way of translating messages,
usually C<gettext>.  The translator is based on the C<textdomain>
for the message, which can be specified as option per text element,
but usually is package scoped.

This base class does not translate at all: it will use the MSGID
(and MSGID_PLURAL if available).  It's a nice fallback if the
language packs are not installed.

=head1 METHODS

=head2 Constructors

=over 4

=item Log::Report::Translator-E<gt>B<new>(OPTIONS)

 -Option --Default
  charset  <from locale>
  lexicon  <see text>

=over 2

=item charset => STRING

When the locale contains a codeset in its name, then that will be
used.  Otherwise, the default is C<utf-8>.

=item lexicon => DIRECTORY|ARRAY-of-DIRECTORYs

The DIRECTORY where the translations can be found.  See
L<Log::Report::Lexicon::Index|Log::Report::Lexicon::Index> for the expected structure of such
DIRECTORY.

The default is based on the location of the module which instantiates
this translator.  The filename of the module is stripped from its C<.pm>
extension, and used as directory name.  Within that directory, there
must be a directory named C<messages>, which will be the root directory
of a L<Log::Report::Lexicon::Index|Log::Report::Lexicon::Index>.

=back

example: default lexicon directory

 # file xxx/perl5.8.8/My/Module.pm
 use Log::Report 'my-domain'
   , translator => Log::Report::Translator::POT->new;

 # lexicon now in xxx/perl5.8.8/My/Module/messages/

=back

=head2 Accessors

=over 4

=item $obj-E<gt>B<charset>

Returns the default charset, which can be overrule by the locale.

=item $obj-E<gt>B<lexicons>

Returns a list of L<Log::Report::Lexicon::Index|Log::Report::Lexicon::Index> objects, where the
translation files may be located.

=back

=head2 Translating

=over 4

=item $obj-E<gt>B<load>(DOMAIN, LOCALE)

Load the translation information in the text DOMAIN for the indicated LOCALE.
Multiple calls to L<load()|Log::Report::Translator/"Translating"> should not cost significant performance: the
data must be cached.

=item $obj-E<gt>B<translate>(MESSAGE)

Returns the translation of the MESSAGE, a C<Log::Report::Message> object,
based on the current locale.

Translators are permitted to peek into the internal HASH of the
message object, for performance reasons.

=back

=head1 SEE ALSO

This module is part of Log-Report distribution version 0.94,
built on August 23, 2011. Website: F<http://perl.overmeer.net/log-report/>

=head1 LICENSE

Copyrights 2007-2011 by Mark Overmeer. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://www.perl.com/perl/misc/Artistic.html>