12 |
|
|
13 |
my $DEBUG = 0; |
my $DEBUG = 0; |
14 |
|
|
15 |
my %lang = (en => 'english', |
# The following translates an ISO language code into a babel language |
16 |
da => 'danish', |
# name. Often there is more than one possible name, in which case |
17 |
de => 'german', |
# I have more or less chosen one at random. There are many languages |
18 |
eo => 'french', |
# that can be typeset with LaTeX but that aren't handled by the babel |
19 |
); |
# system -- what should be done in these cases? |
20 |
|
my %iso2babel = |
21 |
|
( |
22 |
|
'af' => 'afrikaans', |
23 |
|
'bg' => 'bulgarian', |
24 |
|
'br' => 'breton', |
25 |
|
'ca' => 'catalan', |
26 |
|
'cs' => 'czech', |
27 |
|
'cy' => 'welsh', |
28 |
|
'da' => 'danish', |
29 |
|
'de' => 'ngermanb', |
30 |
|
'de_DE' => 'ngermanb', |
31 |
|
'de_AT' => 'naustrian', |
32 |
|
'el' => 'greek', |
33 |
|
'en' => 'english', |
34 |
|
'en_CA' => 'canadian', |
35 |
|
'en_UK' => 'british', |
36 |
|
'en_US' => 'american', |
37 |
|
'eo' => 'esperanto', |
38 |
|
'es' => 'spanish', |
39 |
|
'et' => 'estonian', |
40 |
|
'eu' => 'basque', |
41 |
|
'fi' => 'finnish', |
42 |
|
'fr' => 'frenchb', |
43 |
|
'fr_CA' => 'canadien', |
44 |
|
'ga' => 'irish', |
45 |
|
'gd' => 'scottish', |
46 |
|
'gl' => 'galician', |
47 |
|
'he' => 'hebrew', |
48 |
|
'hr' => 'croatian', |
49 |
|
'hu' => 'hungarian', |
50 |
|
'hu' => 'magyar', |
51 |
|
'id' => 'bahasa', |
52 |
|
'is' => 'icelandic', |
53 |
|
'it' => 'italian', |
54 |
|
'la' => 'latin', |
55 |
|
'nl' => 'dutch', |
56 |
|
'nno' => 'nynorsk', |
57 |
|
'no' => 'norsk', |
58 |
|
'pl' => 'polish', |
59 |
|
'pt' => 'portuguese', |
60 |
|
'pt_BR' => 'brazil', |
61 |
|
'ro' => 'romanian', |
62 |
|
'ru' => 'russian', |
63 |
|
'ru' => 'russianb', |
64 |
|
'sk' => 'slovak', |
65 |
|
'sl' => 'slovene', |
66 |
|
'smi' => 'samin', |
67 |
|
'sr' => 'serbian', |
68 |
|
'sv' => 'swedish', |
69 |
|
'tr' => 'turkish', |
70 |
|
'uk' => 'ukraineb', |
71 |
|
'wen' => 'usorbian', # or 'lsorbian', |
72 |
|
); |
73 |
|
|
74 |
|
# The following translates babel language names into ISO language codes. |
75 |
|
my %babel2iso = |
76 |
|
( |
77 |
|
UKenglish => 'en_UK', |
78 |
|
acadian => 'fr_CA', |
79 |
|
afrikaans => 'af', |
80 |
|
american => 'en_US', |
81 |
|
austrian => 'de_AT', |
82 |
|
bahasa => 'id', |
83 |
|
basque => 'eu', |
84 |
|
brazil => 'pt_BR', |
85 |
|
brazilian => 'pt_BR', |
86 |
|
breton => 'br', |
87 |
|
british => 'en_UK', |
88 |
|
bulgarian => 'bg', |
89 |
|
canadian => 'en_CA', |
90 |
|
canadien => 'fr_CA', |
91 |
|
catalan => 'ca', |
92 |
|
croatian => 'hr', |
93 |
|
czech => 'cs', |
94 |
|
danish => 'da', |
95 |
|
dutch => 'nl', |
96 |
|
english => 'en', |
97 |
|
esperanto => 'eo', |
98 |
|
estonian => 'et', |
99 |
|
finnish => 'fi', |
100 |
|
francais => 'fr', |
101 |
|
french => 'fr', |
102 |
|
frenchb => 'fr', |
103 |
|
galician => 'gl', |
104 |
|
german => 'de', |
105 |
|
germanb => 'de', |
106 |
|
greek => 'el', |
107 |
|
hebrew => 'he', |
108 |
|
hungarian => 'hu', |
109 |
|
icelandic => 'is', |
110 |
|
irish => 'ga', |
111 |
|
italian => 'it', |
112 |
|
latin => 'la', |
113 |
|
lsorbian => 'wen', # ISO code for Sorbian, Lower variant desig. unknown |
114 |
|
magyar => 'hu', |
115 |
|
naustrian => 'de_AT', |
116 |
|
ngerman => 'de', |
117 |
|
ngermanb => 'de', |
118 |
|
norsk => 'no', # Bokmaal |
119 |
|
nynorsk => 'nno', |
120 |
|
polish => 'pl', |
121 |
|
portuges => 'pt', |
122 |
|
portuguese => 'pt', |
123 |
|
romanian => 'ro', |
124 |
|
russian => 'ru', |
125 |
|
russianb => 'ru', |
126 |
|
samin => 'smi', # this really is North Sami, ISO code unknown |
127 |
|
scottish => 'gd', |
128 |
|
serbian => 'sr', |
129 |
|
slovak => 'sk', |
130 |
|
slovene => 'sl', |
131 |
|
spanish => 'es', |
132 |
|
swedish => 'sv', |
133 |
|
turkish => 'tr', |
134 |
|
ukraineb => 'uk', |
135 |
|
ukrainian => 'uk', |
136 |
|
usorbian => 'wen', # ISO code for Sorbian, Upper variant desig. unknown |
137 |
|
welsh => 'cy', |
138 |
|
); |
139 |
|
|
140 |
sub procaux { |
sub procaux { |
141 |
my $self = shift; |
my $self = shift; |
161 |
# an external file, but at present it's OK just to do it here. |
# an external file, but at present it's OK just to do it here. |
162 |
if ($1 eq 'plain') { |
if ($1 eq 'plain') { |
163 |
$self->{STYLE} = { |
$self->{STYLE} = { |
164 |
cite => 'numerical', # undef might be better |
cite => 'numerical', # undef might be better |
165 |
titlefont => "emph", |
titlefont => "emph", |
166 |
# More definitions are needed, of course! |
# More definitions are needed, of course! |
167 |
}; |
}; |
168 |
} else { |
} else { |
169 |
croak "Unknown style '$1'"; |
croak "Unknown style '$1'"; |
170 |
} |
} |
267 |
my $self = shift; |
my $self = shift; |
268 |
my ($lang, $t) = @_; |
my ($lang, $t) = @_; |
269 |
my $r; |
my $r; |
270 |
if ($lang and defined($lang{$lang})) { |
if ($lang and defined($iso2babel{$lang})) { |
271 |
# also add a test for the bibliography language (perhaps no need |
# also add a test for the bibliography language (perhaps no need |
272 |
# to switch) |
# to switch) |
273 |
$r = "\\foreignlanguage{$lang{$lang}}{$t}"; |
$r = "\\foreignlanguage{$iso2babel{$lang}}{$t}"; |
274 |
} else { |
} else { |
275 |
warn "Unknown language code $lang" if $lang; |
warn "Unknown language code $lang" if $lang; |
276 |
$r = $t; |
$r = $t; |