Mercurial > hgbook
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 |
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 |