1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Language Macros Labels}
15
16\registerctxluafile{langlab}{}
17\registerctxluafile{langtxt}{}
18
19\unprotect
20
21
22
23\ifdefined\sixperemspace \else
24 \def\sixperemspace{\normalUchar"2006}
25\fi
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61\installcorenamespace{label}
62
63\let\currentlabelcategory\empty
64
65\unexpanded\def\definelabelclass
66 {\dodoubleempty\lang_labels_define_class}
67
68\def\lang_labels_define_class[#1][#2]
69 {\normalexpanded
70 {\lang_labels_define_class_indeed
71 {#1}
72 {\ifsecondargument#2\else\zerocount\fi}
73 \expandafter\noexpand\csname dogetupsome#1text\endcsname
74 \expandafter\noexpand\csname #1language\endcsname
75 \expandafter\noexpand\csname dodogetupsome#1text\endcsname
76 \expandafter\noexpand\csname left#1text\endcsname
77 \expandafter\noexpand\csname right#1text\endcsname
78 \expandafter\noexpand\csname #1texts\endcsname
79 \expandafter\noexpand\csname #1text\endcsname}}
80
81
82
83\let\thetextprefix\empty
84
85\unexpanded\def\lang_labels_define_class_indeed#1#2#3#4#5#6#7#8#9
86 {\setuvalue{setup#1text}{\protecttextprefixes#2\def\currenttextprefixclass{#1}\dodoubleempty\lang_labels_text_prefix_setup}
87 \setuvalue{preset#1text}{\protecttextprefixes1\def\currenttextprefixclass{#1}\dodoubleempty\lang_labels_text_prefix_setup}
88 \setuvalue{copy#1text}{\protecttextprefixes1\def\currenttextprefixclass{#1}\dodoubleempty\lang_labels_text_prefix_copy}
89 \setuvalue{start#1text}{\protecttextprefixes1\def\currenttextprefixclass{#1}\dotripleempty\lang_labels_text_prefix_start[#1]}
90 \letvalue{stop#1text}\relax
91 \def#4{\reallanguagetag{\defaultlanguage\currentmainlanguage}}
92 \ifnum#2=\plustwo
93 \def#3{#5#4}
94 \def#5##1##2
95 {\ifcsname\??label\currentlabelcategory#1:##1:##2\endcsname
96 \lastnamedcs
97 \else\ifcsname\??label#1:##1:##2\endcsname
98 \lastnamedcs
99
100
101 \else\ifcsname\??language##1\s!default\endcsname
102
103 \expandafter#5\lastnamedcs{##2}
104 \else\ifcsname\??label\currentlabelcategory#1:##2\endcsname
105 \lastnamedcs
106 \else\ifcsname\??label#1:##2\endcsname
107 \lastnamedcs
108 \else\ifcsname\??label\currentlabelcategory#1:\s!en:##2\endcsname
109 \lastnamedcs
110 \else\ifcsname\??label#1:\s!en:##2\endcsname
111 \lastnamedcs
112 \else
113 ##2
114 \fi\fi\fi\fi\fi\fi\fi}
115 \let#6\gobbleoneargument
116 \let#7\gobbleoneargument
117 \let#8\gobbletwoarguments
118 \let#9#3
119 \else
120 \unexpanded\def#3{#5#4}
121 \unexpanded\def#5##1##2
122 {\ifcsname\??label#1:##1:##2\endcsname
123
124 \expandafter\let\expandafter\thetextprefix\lastnamedcs
125 \else\ifcsname\??language#4\s!default\endcsname
126
127 \expandafter#5\lastnamedcs{##2}
128 \else\ifcsname\??label#1:##2\endcsname
129
130 \expandafter\let\expandafter\thetextprefix\lastnamedcs
131 \else\ifcsname\??label#1:\s!en:##2\endcsname
132
133 \expandafter\let\expandafter\thetextprefix\lastnamedcs
134 \else
135 \let\thetextprefix\dummytextprefix
136 \fi\fi\fi\fi}
137 \unexpanded\def#6##1{#3{##1}\expandafter\flushleftlabelclass \thetextprefix}
138 \unexpanded\def#7##1{#3{##1}\expandafter\flushrightlabelclass\thetextprefix}
139 \unexpanded\def#8##1{#3{##1}\expandafter\flushbothlabelclass \thetextprefix}
140 \unexpanded\def#9##1{#3{##1}\expandafter\flushleftlabelclass \thetextprefix}
141 \fi
142 \appendtoks
143 \let#6\firstofoneargument
144 \let#7\firstofoneargument
145 \let#8\firstofoneargument
146 \let#9\firstofoneargument
147 \to \everysimplifycommands}
148
149\let\flushleftlabelclass \firstoftwoarguments
150\let\flushrightlabelclass\secondoftwoarguments
151\def\flushbothlabelclass #1#2#3{#1#3#2}
152\def\dummytextprefix {\empty\empty}
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168\appendtoks \let\labellanguage\currentlanguage \to \everycurrentdate
169
170\newconstant\protecttextprefixes
171
172\let\currenttextprefixtag \s!unknown
173\let\currenttextprefixclass\s!unknown
174
175\def\lang_labels_text_prefix_start[#1][#2][#3]
176 {\ifthirdargument
177 \edef\currenttextprefixtag{\reallanguagetag{#2}}
178 \edef\currenttextprefixname{#3}
179 \else
180 \edef\currenttextprefixtag{\reallanguagetag\currentmainlanguage}
181 \edef\currenttextprefixname{#2}
182 \fi
183 \grabuntil{stop#1text}\lang_labels_text_prefix_start_indeed}
184
185\def\lang_labels_text_prefix_start_indeed#1
186 {\expandafter\edef\csname\??label\currenttextprefixclass:\currenttextprefixtag:\currenttextprefixname\endcsname
187 {{\clf_strip{#1}}\empty}}
188
189\def\lang_labels_text_prefix_setup[#1][#2]
190 {\ifsecondargument
191 \edef\currenttextprefixtag{\reallanguagetag{#1}}
192 \processcommalist[#2]\lang_labels_text_prefix_setup_indeed
193 \else
194 \edef\currenttextprefixtag{\reallanguagetag\currentmainlanguage}
195 \processcommalist[#1]\lang_labels_text_prefix_setup_indeed
196 \fi}
197
198\def\lang_labels_text_prefix_setup_indeed#1
199 {\lang_labels_text_prefix_assign[#1]}
200
201\def\lang_labels_text_prefix_assign[#1=#2]
202 {\lang_labels_text_prefix_assign_indeed{#1}[#2,,]}
203
204\def\lang_labels_text_prefix_assign_indeed#1
205 {\ifcase\protecttextprefixes
206
207 \expandafter\lang_labels_text_prefix_assign_yes
208 \or
209
210 \ifcsname\??label\currenttextprefixclass:\currenttextprefixtag:#1\endcsname
211 \expandafter\expandafter\expandafter\lang_labels_text_prefix_assign_nop
212 \else
213 \expandafter\expandafter\expandafter\lang_labels_text_prefix_assign_yes
214 \fi
215 \or
216
217 \expandafter\lang_labels_text_prefix_assign_dumb
218 \fi{#1}}
219
220\let\m_lang_labels_left \empty
221\let\m_lang_labels_right\empty
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238\def\lang_labels_text_prefix_assign_yes#1[#2,#3,#4]
239 {\def\m_lang_labels_left {#2}
240 \def\m_lang_labels_right{#3}
241 \expandafter\def\csname\??label\currenttextprefixclass:\currenttextprefixtag:#1
242 \ifx\m_lang_labels_right\empty
243 \ifx\m_lang_labels_left\empty
244 \endcsname{\empty\empty}
245 \else
246 \endcsname{{#2}\empty}
247 \fi
248 \else
249 \endcsname{{#2}{#3}}
250 \fi}
251
252\def\lang_labels_text_prefix_assign_nop#1[#2]
253 {}
254
255\def\lang_labels_text_prefix_assign_dumb#1[#2,#3]
256 {\expandafter\def\csname\??label\currenttextprefixclass:\currenttextprefixtag:#1\endcsname{#2}}
257
258\unexpanded\def\setlabeltextpair#1#2#3#4#5
259 {
260 \expandafter\def\csname\??label#1:\reallanguagetag{#2}:#3\endcsname{{#4}{#5}}}
261
262\def\lang_labels_text_prefix_copy[#1][#2]
263 {\ifsecondargument
264 \edef\currenttextprefixtag{\reallanguagetag{#1}}
265 \processcommalist[#2]\lang_labels_text_prefix_copy_indeed
266 \else
267 \edef\currenttextprefixtag{\reallanguagetag\currentmainlanguage}
268 \processcommalist[#1]\lang_labels_text_prefix_copy_indeed
269 \fi}
270
271\def\lang_labels_text_prefix_copy_indeed#1
272 {\lang_labels_text_prefix_copy_pair[#1]}
273
274\def\lang_labels_text_prefix_copy_pair[#1=#2]
275 {\lang_labels_text_prefix_copy_pair_indeed{#1}[#2,,]}
276
277
278
279
280
281
282
283
284\def\lang_labels_text_prefix_copy_pair_indeed#1[#2,#3]
285 {\expandafter\edef\csname\??label\currenttextprefixclass:#1\endcsname
286 {{\noexpand\csname\??label\currenttextprefixclass:\noexpand\reallanguagetag\noexpand\currentmainlanguage:#2\endcsname}{}}}
287
288\definelabelclass [head] [0]
289\definelabelclass [label] [0]
290\definelabelclass [mathlabel] [0]
291\definelabelclass [taglabel] [2]
292
293\clf_definelabels{head}{titles}\s!true\relax
294\clf_definelabels{label}{texts}\s!true\relax
295\clf_definelabels{mathlabel}{functions}\s!false\relax
296\clf_definelabels{taglabel}{tags}\s!false\relax
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314\installcorenamespace{translation}
315
316\unexpanded\def\translate
317 {\dosingleempty\lang_translate}
318
319\def\lang_translate[#1]
320 {\getparameters[\??translation][#1]
321 \ifcsname\??translation\currentlanguage\endcsname
322 \lastnamedcs
323 \else\ifcsname\??translation\s!en\endcsname
324 \lastnamedcs
325 \else
326 [translation #1]
327 \fi\fi}
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346\unexpanded\def\assigntranslation[#1]\to#2
347 {\getparameters[\??translation][#1]
348 \edef#2{\begincsname\??translation\currentlanguage\endcsname}}
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370\unexpanded\def\commalistsentence
371 {\dodoubleempty\typo_helpers_concat_comma_list}
372
373\def\typo_helpers_concat_comma_list[#1][#2]
374 {\clf_concatcommalist
375 text {#1}
376 separators {#2}
377 separator {\detokenize\expandafter{\normalexpanded{\labeltext{and1}}}}
378 last {\detokenize\expandafter{\normalexpanded{\labeltext{and2}}}}
379 \relax}
380
381\setuplabeltext [\s!nl] [and1={{, }}, and2={{ en }}]
382\setuplabeltext [\s!en] [and1={{, }}, and2={{, }}]
383\setuplabeltext [\s!de] [and1={{, }}, and2={{ und }}]
384\setuplabeltext [\s!hr] [and1={{, }}, and2={{ i }}]
385
386
387
388\unexpanded\def\LABELTEXT#1{\WORD{\labeltext{#1}}}
389
390\protect \endinput
391 |