~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to docs-xml/xslt/db2latex-xsl/xsl/common/l10n.xsl

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version='1.0'?>
 
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 
3
                xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
 
4
                exclude-result-prefixes="l"
 
5
                version='1.0'>
 
6
 
 
7
<!-- ********************************************************************
 
8
     $Id: l10n.xsl,v 1.8 2004/01/28 02:09:23 j-devenish Exp $
 
9
     ********************************************************************
 
10
 
 
11
     This file is part of the XSL DocBook Stylesheet distribution.
 
12
 
 
13
     This file contains localization templates (for internationalization)
 
14
 
 
15
     Copyright (C) 1999, 2000, 2001, 2002 Norman Walsh.
 
16
     ******************************************************************** -->
 
17
 
 
18
<xsl:param name="l10n.xml" select="document('../common/l10n.xml')"/>
 
19
<xsl:param name="local.l10n.xml" select="document('')"/>
 
20
<xsl:param name="l10n.gentext.language" select="''"/>
 
21
<xsl:param name="l10n.gentext.default.language" select="'fr'"/>
 
22
<xsl:param name="l10n.gentext.use.xref.language" select="false()"/>
 
23
 
 
24
<xsl:template name="l10n.language">
 
25
  <xsl:param name="target" select="."/>
 
26
  <xsl:param name="xref-context" select="false()"/>
 
27
 
 
28
  <xsl:variable name="mc-language">
 
29
    <xsl:choose>
 
30
      <xsl:when test="$l10n.gentext.language != ''">
 
31
        <xsl:value-of select="$l10n.gentext.language"/>
 
32
      </xsl:when>
 
33
 
 
34
      <xsl:when test="$xref-context or $l10n.gentext.use.xref.language != 0">
 
35
        <!-- can't do this one step: attributes are unordered! -->
 
36
        <xsl:variable name="lang-scope"
 
37
                      select="($target/ancestor-or-self::*[@lang]
 
38
                               |$target/ancestor-or-self::*[@xml:lang])[last()]"/>
 
39
        <xsl:variable name="lang-attr"
 
40
                      select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
 
41
        <xsl:choose>
 
42
          <xsl:when test="string($lang-attr) = ''">
 
43
            <xsl:value-of select="$l10n.gentext.default.language"/>
 
44
          </xsl:when>
 
45
          <xsl:otherwise>
 
46
            <xsl:value-of select="$lang-attr"/>
 
47
          </xsl:otherwise>
 
48
        </xsl:choose>
 
49
      </xsl:when>
 
50
 
 
51
      <xsl:otherwise>
 
52
        <!-- can't do this one step: attributes are unordered! -->
 
53
        <xsl:variable name="lang-scope"
 
54
                      select="($target/ancestor-or-self::*[@lang]
 
55
                           |$target/ancestor-or-self::*[@xml:lang])[last()]"/>
 
56
        <xsl:variable name="lang-attr"
 
57
                      select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
 
58
 
 
59
        <xsl:choose>
 
60
          <xsl:when test="string($lang-attr) = ''">
 
61
            <xsl:value-of select="$l10n.gentext.default.language"/>
 
62
          </xsl:when>
 
63
          <xsl:otherwise>
 
64
            <xsl:value-of select="$lang-attr"/>
 
65
          </xsl:otherwise>
 
66
        </xsl:choose>
 
67
      </xsl:otherwise>
 
68
    </xsl:choose>
 
69
  </xsl:variable>
 
70
 
 
71
  <xsl:variable name="language" select="translate($mc-language,
 
72
                                        'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 
73
                                        'abcdefghijklmnopqrstuvwxyz')"/>
 
74
 
 
75
  <xsl:variable name="adjusted.language">
 
76
    <xsl:choose>
 
77
      <xsl:when test="contains($language,'-')">
 
78
        <xsl:value-of select="substring-before($language,'-')"/>
 
79
        <xsl:text>_</xsl:text>
 
80
        <xsl:value-of select="substring-after($language,'-')"/>
 
81
      </xsl:when>
 
82
      <xsl:otherwise>
 
83
        <xsl:value-of select="$language"/>
 
84
      </xsl:otherwise>
 
85
    </xsl:choose>
 
86
  </xsl:variable>
 
87
 
 
88
  <xsl:choose>
 
89
    <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=$adjusted.language]">
 
90
      <xsl:value-of select="$adjusted.language"/>
 
91
    </xsl:when>
 
92
    <!-- try just the lang code without country -->
 
93
    <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=substring-before($adjusted.language,'_')]">
 
94
      <xsl:value-of select="substring-before($adjusted.language,'_')"/>
 
95
    </xsl:when>
 
96
    <!-- or use the default -->
 
97
    <xsl:otherwise>
 
98
      <xsl:message>
 
99
        <xsl:text>No localization exists for "</xsl:text>
 
100
        <xsl:value-of select="$adjusted.language"/>
 
101
        <xsl:text>" or "</xsl:text>
 
102
        <xsl:value-of select="substring-before($adjusted.language,'_')"/>
 
103
        <xsl:text>". Using default "</xsl:text>
 
104
        <xsl:value-of select="$l10n.gentext.default.language"/>
 
105
        <xsl:text>".</xsl:text>
 
106
      </xsl:message>
 
107
      <xsl:value-of select="$l10n.gentext.default.language"/>
 
108
    </xsl:otherwise>
 
109
  </xsl:choose>
 
110
</xsl:template>
 
111
 
 
112
<xsl:template name="language.attribute">
 
113
  <xsl:param name="node" select="."/>
 
114
 
 
115
  <xsl:variable name="language">
 
116
    <xsl:choose>
 
117
      <xsl:when test="$l10n.gentext.language != ''">
 
118
        <xsl:value-of select="$l10n.gentext.language"/>
 
119
      </xsl:when>
 
120
 
 
121
      <xsl:otherwise>
 
122
        <!-- can't do this one step: attributes are unordered! -->
 
123
        <xsl:variable name="lang-scope"
 
124
                      select="($node/ancestor-or-self::*[@lang]
 
125
                               |$node/ancestor-or-self::*[@xml:lang])[last()]"/>
 
126
        <xsl:variable name="lang-attr"
 
127
                      select="($lang-scope/@lang | $lang-scope/@xml:lang)[1]"/>
 
128
 
 
129
        <xsl:choose>
 
130
          <xsl:when test="string($lang-attr) = ''">
 
131
            <xsl:value-of select="$l10n.gentext.default.language"/>
 
132
          </xsl:when>
 
133
          <xsl:otherwise>
 
134
            <xsl:value-of select="$lang-attr"/>
 
135
          </xsl:otherwise>
 
136
        </xsl:choose>
 
137
      </xsl:otherwise>
 
138
    </xsl:choose>
 
139
  </xsl:variable>
 
140
 
 
141
  <xsl:if test="$language != ''">
 
142
    <xsl:attribute name="lang">
 
143
      <xsl:value-of select="$language"/>
 
144
    </xsl:attribute>
 
145
  </xsl:if>
 
146
</xsl:template>
 
147
 
 
148
<xsl:template name="gentext">
 
149
  <xsl:param name="key" select="local-name(.)"/>
 
150
  <xsl:param name="lang">
 
151
    <xsl:call-template name="l10n.language"/>
 
152
  </xsl:param>
 
153
 
 
154
  <xsl:variable name="local.l10n.gentext"
 
155
                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
 
156
 
 
157
  <xsl:variable name="l10n.gentext"
 
158
                select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
 
159
 
 
160
  <xsl:choose>
 
161
    <xsl:when test="count($local.l10n.gentext) &gt; 0">
 
162
      <xsl:value-of select="$local.l10n.gentext/@text"/>
 
163
    </xsl:when>
 
164
    <xsl:when test="count($l10n.gentext) &gt; 0">
 
165
      <xsl:value-of select="$l10n.gentext/@text"/>
 
166
    </xsl:when>
 
167
    <xsl:otherwise>
 
168
      <xsl:message>
 
169
        <xsl:text>No "</xsl:text>
 
170
        <xsl:value-of select="$lang"/>
 
171
        <xsl:text>" localization of "</xsl:text>
 
172
        <xsl:value-of select="$key"/>
 
173
        <xsl:text>" exists</xsl:text>
 
174
        <xsl:choose>
 
175
          <xsl:when test="$lang = 'en'">
 
176
             <xsl:text>.</xsl:text>
 
177
          </xsl:when>
 
178
          <xsl:otherwise>
 
179
             <xsl:text>; using "en".</xsl:text>
 
180
          </xsl:otherwise>
 
181
        </xsl:choose>
 
182
      </xsl:message>
 
183
 
 
184
      <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:gentext[@key=$key])[1]/@text"/>
 
185
    </xsl:otherwise>
 
186
  </xsl:choose>
 
187
</xsl:template>
 
188
 
 
189
<xsl:template name="gentext.element.name">
 
190
  <xsl:param name="element.name" select="name(.)"/>
 
191
  <xsl:param name="lang">
 
192
    <xsl:call-template name="l10n.language"/>
 
193
  </xsl:param>
 
194
 
 
195
  <xsl:call-template name="gentext">
 
196
    <xsl:with-param name="key" select="$element.name"/>
 
197
    <xsl:with-param name="lang" select="$lang"/>
 
198
  </xsl:call-template>
 
199
</xsl:template>
 
200
 
 
201
<xsl:template name="gentext.space">
 
202
  <xsl:text> </xsl:text>
 
203
</xsl:template>
 
204
 
 
205
<xsl:template name="gentext.edited.by">
 
206
  <xsl:call-template name="gentext">
 
207
    <xsl:with-param name="key" select="'Editedby'"/>
 
208
  </xsl:call-template>
 
209
</xsl:template>
 
210
 
 
211
<xsl:template name="gentext.by">
 
212
  <xsl:call-template name="gentext">
 
213
    <xsl:with-param name="key" select="'by'"/>
 
214
  </xsl:call-template>
 
215
</xsl:template>
 
216
 
 
217
<xsl:template name="gentext.dingbat">
 
218
  <xsl:param name="dingbat">bullet</xsl:param>
 
219
  <xsl:param name="lang">
 
220
    <xsl:call-template name="l10n.language"/>
 
221
  </xsl:param>
 
222
 
 
223
  <xsl:variable name="local.l10n.dingbat"
 
224
                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
 
225
 
 
226
  <xsl:variable name="l10n.dingbat"
 
227
                select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
 
228
 
 
229
  <xsl:choose>
 
230
    <xsl:when test="count($local.l10n.dingbat) &gt; 0">
 
231
      <xsl:value-of select="$local.l10n.dingbat/@text"/>
 
232
    </xsl:when>
 
233
    <xsl:when test="count($l10n.dingbat) &gt; 0">
 
234
      <xsl:value-of select="$l10n.dingbat/@text"/>
 
235
    </xsl:when>
 
236
    <xsl:otherwise>
 
237
      <xsl:message>
 
238
        <xsl:text>No "</xsl:text>
 
239
        <xsl:value-of select="$lang"/>
 
240
        <xsl:text>" localization of dingbat </xsl:text>
 
241
        <xsl:value-of select="$dingbat"/>
 
242
        <xsl:text> exists; using "en".</xsl:text>
 
243
      </xsl:message>
 
244
 
 
245
      <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:dingbat[@key=$dingbat])[1]/@text"/>
 
246
    </xsl:otherwise>
 
247
  </xsl:choose>
 
248
</xsl:template>
 
249
 
 
250
<xsl:template name="gentext.startquote">
 
251
  <xsl:call-template name="gentext.dingbat">
 
252
    <xsl:with-param name="dingbat">startquote</xsl:with-param>
 
253
  </xsl:call-template>
 
254
</xsl:template>
 
255
 
 
256
<xsl:template name="gentext.endquote">
 
257
  <xsl:call-template name="gentext.dingbat">
 
258
    <xsl:with-param name="dingbat">endquote</xsl:with-param>
 
259
  </xsl:call-template>
 
260
</xsl:template>
 
261
 
 
262
<xsl:template name="gentext.nestedstartquote">
 
263
  <xsl:call-template name="gentext.dingbat">
 
264
    <xsl:with-param name="dingbat">nestedstartquote</xsl:with-param>
 
265
  </xsl:call-template>
 
266
</xsl:template>
 
267
 
 
268
<xsl:template name="gentext.nestedendquote">
 
269
  <xsl:call-template name="gentext.dingbat">
 
270
    <xsl:with-param name="dingbat">nestedendquote</xsl:with-param>
 
271
  </xsl:call-template>
 
272
</xsl:template>
 
273
 
 
274
<xsl:template name="gentext.nav.prev">
 
275
  <xsl:call-template name="gentext">
 
276
    <xsl:with-param name="key" select="'nav-prev'"/>
 
277
  </xsl:call-template>
 
278
</xsl:template>
 
279
 
 
280
<xsl:template name="gentext.nav.next">
 
281
  <xsl:call-template name="gentext">
 
282
    <xsl:with-param name="key" select="'nav-next'"/>
 
283
  </xsl:call-template>
 
284
</xsl:template>
 
285
 
 
286
<xsl:template name="gentext.nav.home">
 
287
  <xsl:call-template name="gentext">
 
288
    <xsl:with-param name="key" select="'nav-home'"/>
 
289
  </xsl:call-template>
 
290
</xsl:template>
 
291
 
 
292
<xsl:template name="gentext.nav.up">
 
293
  <xsl:call-template name="gentext">
 
294
    <xsl:with-param name="key" select="'nav-up'"/>
 
295
  </xsl:call-template>
 
296
</xsl:template>
 
297
 
 
298
<!-- ============================================================ -->
 
299
 
 
300
<xsl:template name="gentext.template">
 
301
  <xsl:param name="context" select="'default'"/>
 
302
  <xsl:param name="name" select="'default'"/>
 
303
  <xsl:param name="origname" select="$name"/>
 
304
  <xsl:param name="purpose"/>
 
305
  <xsl:param name="xrefstyle"/>
 
306
  <xsl:param name="referrer"/>
 
307
  <xsl:param name="lang">
 
308
    <xsl:call-template name="l10n.language"/>
 
309
  </xsl:param>
 
310
 
 
311
  <xsl:variable name="local.localization.node"
 
312
                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
 
313
 
 
314
  <xsl:variable name="localization.node"
 
315
                select="($l10n.xml/l:i18n/l:l10n[@language=$lang])[1]"/>
 
316
 
 
317
  <xsl:if test="count($localization.node) = 0
 
318
                and count($local.localization.node) = 0">
 
319
    <xsl:message>
 
320
      <xsl:text>No "</xsl:text>
 
321
      <xsl:value-of select="$lang"/>
 
322
      <xsl:text>" localization exists.</xsl:text>
 
323
    </xsl:message>
 
324
  </xsl:if>
 
325
 
 
326
  <xsl:variable name="local.context.node"
 
327
                select="$local.localization.node/l:context[@name=$context]"/>
 
328
 
 
329
  <xsl:variable name="context.node"
 
330
                select="$localization.node/l:context[@name=$context]"/>
 
331
 
 
332
  <xsl:variable name="en.context.node"
 
333
                select="$l10n.xml/l:i18n/l:l10n[@language='en']/l:context[@name=$context]"/>
 
334
 
 
335
  <xsl:if test="count($context.node) = 0
 
336
                and count($local.context.node) = 0">
 
337
    <xsl:message>
 
338
      <xsl:text>No context named "</xsl:text>
 
339
      <xsl:value-of select="$context"/>
 
340
      <xsl:text>" exists in the "</xsl:text>
 
341
      <xsl:value-of select="$lang"/>
 
342
      <xsl:text>" localization; trying "en".</xsl:text>
 
343
    </xsl:message>
 
344
  </xsl:if>
 
345
 
 
346
  <xsl:variable name="local.template.node"
 
347
                select="($local.context.node/l:template[@name=$name
 
348
                                                        and @style
 
349
                                                        and @style=$xrefstyle]
 
350
                        |$local.context.node/l:template[@name=$name
 
351
                                                        and not(@style)])[1]"/>
 
352
 
 
353
  <xsl:variable name="template.node"
 
354
                select="($context.node/l:template[@name=$name
 
355
                                                  and @style
 
356
                                                  and @style=$xrefstyle]
 
357
                        |$context.node/l:template[@name=$name
 
358
                                                  and not(@style)])[1]"/>
 
359
 
 
360
  <xsl:variable name="en.template.node"
 
361
                select="($en.context.node/l:template[@name=$name
 
362
                                                  and @style
 
363
                                                  and @style=$xrefstyle]
 
364
                        |$en.context.node/l:template[@name=$name
 
365
                                                  and not(@style)])[1]"/>
 
366
 
 
367
  <xsl:choose>
 
368
    <xsl:when test="$local.template.node/@text">
 
369
      <xsl:value-of select="$local.template.node/@text"/>
 
370
    </xsl:when>
 
371
    <xsl:when test="$template.node/@text">
 
372
      <xsl:value-of select="$template.node/@text"/>
 
373
    </xsl:when>
 
374
    <xsl:when test="$en.template.node/@text">
 
375
      <xsl:value-of select="$en.template.node/@text"/>
 
376
    </xsl:when>
 
377
    <xsl:otherwise>
 
378
      <xsl:choose>
 
379
        <xsl:when test="contains($name, '/')">
 
380
          <xsl:call-template name="gentext.template">
 
381
            <xsl:with-param name="context" select="$context"/>
 
382
            <xsl:with-param name="name" select="substring-after($name, '/')"/>
 
383
            <xsl:with-param name="origname" select="$origname"/>
 
384
            <xsl:with-param name="purpose" select="$purpose"/>
 
385
            <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
 
386
            <xsl:with-param name="referrer" select="$referrer"/>
 
387
            <xsl:with-param name="lang" select="$lang"/>
 
388
          </xsl:call-template>
 
389
        </xsl:when>
 
390
        <xsl:otherwise>
 
391
          <xsl:message>
 
392
            <xsl:text>No template for "</xsl:text>
 
393
            <xsl:value-of select="$origname"/>
 
394
            <xsl:text>" (or any of its leaves) exists
 
395
in the context named "</xsl:text>
 
396
            <xsl:value-of select="$context"/>
 
397
            <xsl:text>" in the "</xsl:text>
 
398
            <xsl:value-of select="$lang"/>
 
399
            <xsl:text>" localization.</xsl:text>
 
400
          </xsl:message>
 
401
        </xsl:otherwise>
 
402
      </xsl:choose>
 
403
    </xsl:otherwise>
 
404
  </xsl:choose>
 
405
</xsl:template>
 
406
 
 
407
<xsl:template name="gentext.template.exists">
 
408
  <xsl:param name="context" select="'default'"/>
 
409
  <xsl:param name="name" select="'default'"/>
 
410
  <xsl:param name="origname" select="$name"/>
 
411
  <xsl:param name="purpose"/>
 
412
  <xsl:param name="xrefstyle"/>
 
413
  <xsl:param name="referrer"/>
 
414
  <xsl:param name="lang">
 
415
    <xsl:call-template name="l10n.language"/>
 
416
  </xsl:param>
 
417
 
 
418
  <xsl:variable name="local.localization.node"
 
419
                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
 
420
 
 
421
  <xsl:variable name="localization.node"
 
422
                select="($l10n.xml/l:i18n/l:l10n[@language=$lang])[1]"/>
 
423
 
 
424
  <xsl:variable name="local.context.node"
 
425
                select="$local.localization.node/l:context[@name=$context]"/>
 
426
 
 
427
  <xsl:variable name="context.node"
 
428
                select="$localization.node/l:context[@name=$context]"/>
 
429
 
 
430
  <xsl:variable name="local.template.node"
 
431
                select="($local.context.node/l:template[@name=$name
 
432
                                                        and @style
 
433
                                                        and @style=$xrefstyle]
 
434
                        |$local.context.node/l:template[@name=$name
 
435
                                                        and not(@style)])[1]"/>
 
436
 
 
437
  <xsl:variable name="template.node"
 
438
                select="($context.node/l:template[@name=$name
 
439
                                                  and @style
 
440
                                                  and @style=$xrefstyle]
 
441
                        |$context.node/l:template[@name=$name
 
442
                                                  and not(@style)])[1]"/>
 
443
 
 
444
  <xsl:choose>
 
445
    <xsl:when test="$local.template.node/@text">1</xsl:when>
 
446
    <xsl:when test="$template.node/@text">1</xsl:when>
 
447
    <xsl:otherwise>
 
448
      <xsl:choose>
 
449
        <xsl:when test="contains($name, '/')">
 
450
          <xsl:call-template name="gentext.template.exists">
 
451
            <xsl:with-param name="context" select="$context"/>
 
452
            <xsl:with-param name="name" select="substring-after($name, '/')"/>
 
453
            <xsl:with-param name="origname" select="$origname"/>
 
454
            <xsl:with-param name="purpose" select="$purpose"/>
 
455
            <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
 
456
            <xsl:with-param name="referrer" select="$referrer"/>
 
457
            <xsl:with-param name="lang" select="$lang"/>
 
458
          </xsl:call-template>
 
459
        </xsl:when>
 
460
        <xsl:otherwise>0</xsl:otherwise>
 
461
      </xsl:choose>
 
462
    </xsl:otherwise>
 
463
  </xsl:choose>
 
464
</xsl:template>
 
465
 
 
466
</xsl:stylesheet>
 
467