annotate tools/po4a/lib/Locale/Po4a/Common.pm @ 722:082bb76417f1

Add Po4a 0.37-dev(2009-03-08)
author Dongsheng Song <dongsheng.song@gmail.com>
date Thu, 12 Mar 2009 15:43:56 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
722
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
1 # Locale::Po4a::Common -- Common parts of the po4a scripts and utils
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
2 # $Id: Common.pm,v 1.20 2009-02-13 23:16:44 nekral-guest Exp $
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
3 #
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
4 # Copyright 2005 by Jordi Vilalta <jvprat@gmail.com>
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
5 #
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
6 # This program is free software; you may redistribute it and/or modify it
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
7 # under the terms of GPL (see COPYING).
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
8 #
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
9 # This module has common utilities for the various scripts of po4a
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
10
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
11 =head1 NAME
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
12
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
13 Locale::Po4a::Common - Common parts of the po4a scripts and utils
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
14
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
15 =head1 DESCRIPTION
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
16
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
17 Locale::Po4a::Common contains common parts of the po4a scripts and some useful
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
18 functions used along the other modules.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
19
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
20 In order to use Locale::Po4a programatically, one may want to disable
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
21 the use of Text::WrapI18N, by writing e.g.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
22
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
23 use Locale::Po4a::Common qw(nowrapi18n);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
24 use Locale::Po4a::Text;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
25
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
26 instead of:
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
27
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
28 use Locale::Po4a::Text;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
29
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
30 Ordering is important here: as most Locale::Po4a modules themselves
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
31 load Locale::Po4a::Common, the first time this module is loaded
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
32 determines whether Text::WrapI18N is used.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
33
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
34 =cut
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
35
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
36 package Locale::Po4a::Common;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
37
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
38 require Exporter;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
39 use vars qw(@ISA @EXPORT);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
40 @ISA = qw(Exporter);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
41 @EXPORT = qw(wrap_msg wrap_mod wrap_ref_mod textdomain gettext dgettext);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
42
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
43 use 5.006;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
44 use strict;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
45 use warnings;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
46
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
47 sub import {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
48 my $class=shift;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
49
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
50 my $wrapi18n=1;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
51 if (exists $_[0] && defined $_[0] && $_[0] eq 'nowrapi18n') {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
52 shift;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
53 $wrapi18n=0;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
54 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
55 $class->export_to_level(1, $class, @_);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
56
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
57 return if defined &wrapi18n;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
58
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
59 if ($wrapi18n && -t STDERR && -t STDOUT && eval { require Text::WrapI18N }) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
60
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
61 # Don't bother determining the wrap column if we cannot wrap.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
62 my $col=$ENV{COLUMNS};
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
63 if (!defined $col) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
64 my @term=eval "use Term::ReadKey; Term::ReadKey::GetTerminalSize()";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
65 $col=$term[0] if (!$@);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
66 # If GetTerminalSize() failed we will fallback to a safe default.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
67 # This can happen if Term::ReadKey is not available
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
68 # or this is a terminal-less build or such strange condition.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
69 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
70 $col=76 if (!defined $col);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
71
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
72 eval ' use Text::WrapI18N qw($columns);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
73 $columns = $col;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
74 ';
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
75
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
76 eval ' sub wrapi18n($$$) { Text::WrapI18N::wrap($_[0],$_[1],$_[2]) } '
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
77 } else {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
78
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
79 # If we cannot wrap, well, that's too bad. Survive anyway.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
80 eval ' sub wrapi18n($$$) { $_[0].$_[2] } '
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
81 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
82 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
83
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
84 sub min($$) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
85 return $_[0] < $_[1] ? $_[0] : $_[1];
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
86 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
87
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
88 =head1 FUNCTIONS
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
89
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
90 =head2 Showing output messages
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
91
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
92 =over
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
93
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
94 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
95
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
96 show_version($)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
97
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
98 Shows the current version of the script, and a short copyright message. It
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
99 takes the name of the script as an argument.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
100
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
101 =cut
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
102
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
103 sub show_version {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
104 my $name = shift;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
105
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
106 print sprintf(gettext(
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
107 "%s version %s.\n".
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
108 "written by Martin Quinson and Denis Barbier.\n\n".
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
109 "Copyright (C) 2002, 2003, 2004 Software of Public Interest, Inc.\n".
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
110 "This is free software; see source code for copying\n".
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
111 "conditions. There is NO warranty; not even for\n".
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
112 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
113 ), $name, $Locale::Po4a::TransTractor::VERSION)."\n";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
114 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
115
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
116 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
117
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
118 wrap_msg($@)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
119
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
120 This function displays a message the same way than sprintf() does, but wraps
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
121 the result so that they look nice on the terminal.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
122
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
123 =cut
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
124
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
125 sub wrap_msg($@) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
126 my $msg = shift;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
127 my @args = @_;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
128
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
129 return wrapi18n("", "", sprintf($msg, @args))."\n";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
130 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
131
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
132 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
133
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
134 wrap_mod($$@)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
135
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
136 This function works like wrap_msg(), but it takes a module name as the first
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
137 argument, and leaves a space at the left of the message.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
138
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
139 =cut
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
140
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
141 sub wrap_mod($$@) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
142 my ($mod, $msg) = (shift, shift);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
143 my @args = @_;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
144
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
145 $mod .= ": ";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
146 my $spaces = " " x min(length($mod), 15);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
147 return wrapi18n($mod, $spaces, sprintf($msg, @args))."\n";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
148 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
149
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
150 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
151
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
152 wrap_ref_mod($$$@)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
153
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
154 This function works like wrap_msg(), but it takes a file:line reference as the
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
155 first argument, a module name as the second one, and leaves a space at the left
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
156 of the message.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
157
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
158 =back
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
159
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
160 =cut
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
161
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
162 sub wrap_ref_mod($$$@) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
163 my ($ref, $mod, $msg) = (shift, shift, shift);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
164 my @args = @_;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
165
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
166 if (!$mod) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
167 # If we don't get a module name, show the message like wrap_mod does
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
168 return wrap_mod($ref, $msg, @args);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
169 } else {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
170 $ref .= ": ";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
171 my $spaces = " " x min(length($ref), 15);
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
172 $msg = "$ref($mod)\n$msg";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
173 return wrapi18n("", $spaces, sprintf($msg, @args))."\n";
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
174 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
175 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
176
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
177 =head2 Wrappers for other modules
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
178
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
179 =over
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
180
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
181 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
182
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
183 Locale::Gettext
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
184
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
185 When the Locale::Gettext module cannot be loaded, this module provide dummy
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
186 (empty) implementation of the following functions. In that case, po4a
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
187 messages won't get translated but the program will continue to work.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
188
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
189 If Locale::gettext is present, this wrapper also calls
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
190 setlocale(LC_MESSAGES, "") so callers don't depend on the POSIX module
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
191 either.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
192
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
193 =over
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
194
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
195 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
196
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
197 bindtextdomain($$)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
198
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
199 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
200
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
201 textdomain($)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
202
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
203 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
204
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
205 gettext($)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
206
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
207 =item
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
208
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
209 dgettext($$)
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
210
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
211 =back
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
212
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
213 =back
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
214
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
215 =cut
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
216
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
217 BEGIN {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
218 if (eval { require Locale::gettext }) {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
219 import Locale::gettext;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
220 require POSIX;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
221 POSIX::setlocale(&POSIX::LC_MESSAGES, '');
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
222 } else {
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
223 eval '
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
224 sub bindtextdomain($$) { }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
225 sub textdomain($) { }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
226 sub gettext($) { shift }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
227 sub dgettext($$) { return $_[1] }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
228 '
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
229 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
230 }
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
231
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
232 1;
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
233 __END__
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
234
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
235 =head1 AUTHORS
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
236
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
237 Jordi Vilalta <jvprat@gmail.com>
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
238
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
239 =head1 COPYRIGHT AND LICENSE
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
240
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
241 Copyright 2005 by SPI, inc.
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
242
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
243 This program is free software; you may redistribute it and/or modify it
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
244 under the terms of GPL (see the COPYING file).
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
245
082bb76417f1 Add Po4a 0.37-dev(2009-03-08)
Dongsheng Song <dongsheng.song@gmail.com>
parents:
diff changeset
246 =cut