1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus
{
loading
}{
ConTeXt
Language
Macros
Labels
}
15
16\registerctxluafile
{
lang
lab
}{}
17\registerctxluafile
{
lang
txt
}{}
18
19\unprotect
20
21
22
23\ifdefined
\sixperemspace
\else
24 \def
\sixperemspace
{
\normalUchar
"
2
0
0
6
}
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
#
1
text
\endcsname
74 \expandafter\noexpand\csname
#
1
language
\endcsname
75 \expandafter\noexpand\csname
dodogetupsome
#
1
text
\endcsname
76 \expandafter\noexpand\csname
left
#
1
text
\endcsname
77 \expandafter\noexpand\csname
right
#
1
text
\endcsname
78 \expandafter\noexpand\csname
#
1
texts
\endcsname
79 \expandafter\noexpand\csname
#
1
text
\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
#
1
text
}{
\protecttextprefixes
#
2
\def
\currenttextprefixclass
{
#
1
}
\dodoubleempty
\lang_labels_text_prefix_setup
}
87 \setuvalue
{
preset
#
1
text
}{
\protecttextprefixes
1
\def
\currenttextprefixclass
{
#
1
}
\dodoubleempty
\lang_labels_text_prefix_setup
}
88 \setuvalue
{
copy
#
1
text
}{
\protecttextprefixes
1
\def
\currenttextprefixclass
{
#
1
}
\dodoubleempty
\lang_labels_text_prefix_copy
}
89 \setuvalue
{
start
#
1
text
}{
\protecttextprefixes
1
\def
\currenttextprefixclass
{
#
1
}
\dotripleempty
\lang_labels_text_prefix_start
[#
1
]
}
90 \letvalue
{
stop
#
1
text
}
\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
#
1
text
}
\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
{
and
1
}}}}
378 last
{
\detokenize\expandafter
{
\normalexpanded
{
\labeltext
{
and
2
}}}}
379 \relax
}
380
381\setuplabeltext
[
\s!nl
]
[
and
1
=
{{
,
}}
,
and
2
=
{{
en
}}
]
382\setuplabeltext
[
\s!en
]
[
and
1
=
{{
,
}}
,
and
2
=
{{
,
}}
]
383\setuplabeltext
[
\s!de
]
[
and
1
=
{{
,
}}
,
and
2
=
{{
und
}}
]
384\setuplabeltext
[
\s!hr
]
[
and
1
=
{{
,
}}
,
and
2
=
{{
i
}}
]
385
386
387
388\unexpanded
\def
\LABELTEXT
#
1
{
\WORD
{
\labeltext
{
#
1
}}}
389
390\protect
\endinput
391