%D \module
%D   [       file=mult-sys,
%D        version=1996.06.01,
%D          title=\CONTEXT\ Multilingual Macros,
%D       subtitle=System,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D In boring module we define a lot of obscure but useful
%D system constants. By doing so we save lots of memory while
%D at the same time we prevent ourself from typing errors.

\writestatus{loading}{Context Multilingual Macros / System}

\unprotect

%D The constants are grouped in such a way that there is a
%D minimal change of conflicts.
%D
%D \starttyping
%D \definesystemconstants {word}
%D \definemessageconstant {word}
%D \stoptyping
%D
%D This commands generate \type{\s!word} and \type{\m!word}.

%D First we define some system constants used for both the
%D multi||lingual interface and multi||linguag typesetting.

\definesystemconstant {afrikaans}   \definesystemconstant {af}
\definesystemconstant {catalan}     \definesystemconstant {ca}
\definesystemconstant {chinese}     \definesystemconstant {cn}
\definesystemconstant {croation}    \definesystemconstant {hr}
\definesystemconstant {czech}       \definesystemconstant {cz}
\definesystemconstant {danish}      \definesystemconstant {da}
\definesystemconstant {dutch}       \definesystemconstant {nl}
\definesystemconstant {english}     \definesystemconstant {en}
\definesystemconstant {finish}      \definesystemconstant {fi}
\definesystemconstant {french}      \definesystemconstant {fr}
\definesystemconstant {german}      \definesystemconstant {de}
\definesystemconstant {hungarian}   \definesystemconstant {hu}
\definesystemconstant {italian}     \definesystemconstant {it}
\definesystemconstant {latin}       \definesystemconstant {la}
\definesystemconstant {norwegian}   \definesystemconstant {no}
\definesystemconstant {polish}      \definesystemconstant {pl}
\definesystemconstant {portuguese}  \definesystemconstant {pt}
\definesystemconstant {romanian}    \definesystemconstant {ro}
\definesystemconstant {russian}     \definesystemconstant {ru}
\definesystemconstant {slovak}      \definesystemconstant {sk}
\definesystemconstant {slovenian}   \definesystemconstant {sl}
\definesystemconstant {slovene}
\definesystemconstant {spanish}     \definesystemconstant {es}
\definesystemconstant {swedish}     \definesystemconstant {sv}
\definesystemconstant {turkish}     \definesystemconstant {tr}
\definesystemconstant {ukenglish}   \definesystemconstant {uk}
\definesystemconstant {ukrainian}   \definesystemconstant {ua}
\definesystemconstant {usenglish}   \definesystemconstant {us}
\definesystemconstant {greek}       \definesystemconstant {gr}

%D For proper \UNICODE\ support we need a few font related
%D constants.

\definesystemconstant {BoldItalic}
\definesystemconstant {BoldSlanted}
\definesystemconstant {Bold}
\definesystemconstant {Italic}
\definesystemconstant {Regular}
\definesystemconstant {Slanted}
\definesystemconstant {Unicode}

\definesystemconstant {Serif} \definesystemconstant {Regular}
\definesystemconstant {Sans}  \definesystemconstant {Support}
\definesystemconstant {Mono}  \definesystemconstant {Type}

\definesystemconstant {Caps}

%D As the name of their define command states, the next set of
%D constants is used in the message macro's.

\definemessageconstant {colors}
\definemessageconstant {columns}
\definemessageconstant {encodings}
\definemessageconstant {figures}
\definemessageconstant {files}
\definemessageconstant {floatblocks}
\definemessageconstant {fonts}
\definemessageconstant {handlings}
\definemessageconstant {interactions}
\definemessageconstant {javascript}
\definemessageconstant {layouts}
\definemessageconstant {linguals}
\definemessageconstant {references}
\definemessageconstant {specials}
\definemessageconstant {structures}
\definemessageconstant {symbols}
\definemessageconstant {systems}
\definemessageconstant {textblocks}
\definemessageconstant {verbatims}
\definemessageconstant {versions}

%D The word \type{height} takes 6~token memory cells. The
%D control sequence \type{\height} on the other hand uses only
%D one. Knowing this, we can improve the performance of \TEX,
%D both is terms of speed and memory usage, by using control
%D sequences instead of the words written in full.
%D
%D Where in the \ASCII\ file the second lines takes nine extra
%D characters, \TEX\ saves us 13~tokens.
%D
%D \starttyping
%D \hrule width 10pt height 2pt depth 1pt
%D \hrule \!!width 10pt \!!height 2pt \!!depth 1pt
%D \stoptyping
%D
%D One condition is that we have defined \type{\!!height},
%D \type{\!!width} and \type{\!!depth} as respectively
%D \type{height}, \type{width} and \type{depth}. Using this
%D scheme therefore only makes sense when a token sequence is
%D used more than once. Savings like this should of course be
%D implemented in english, just because \TEX\ is english.

\def\!!width  {width}
\def\!!height {height}
\def\!!depth  {depth}
\def\!!plus   {plus}
\def\!!minus  {minus}
\def\!!fill   {fill}
\def\!!to     {to}

%D The same goes for some \CONTEXT\ constants, used in the
%D definition of private commands:

\definesystemconstant  {next}
\definesystemconstant  {pickup}

\definesystemconstant  {ascii}
\definesystemconstant  {default}
\definesystemconstant  {unknown}

\definesystemconstant  {action}
\definesystemconstant  {compare}

\definesystemconstant  {do}
\definesystemconstant  {dodo}

\definesystemconstant  {complex}
\definesystemconstant  {simple}

\definesystemconstant  {start}
\definesystemconstant  {stop}

\definesystemconstant  {dummy}

\definesystemconstant  {local}
\definesystemconstant  {global}

\definesystemconstant  {done}

\definesystemconstant  {font}

%D A more experienced \TEX\ user will recognize the next four
%D constants. We need these because font-definitions are
%D partially english.

\definesystemconstant  {run}

\definesystemconstant  {fam}
\definesystemconstant  {text}
\definesystemconstant  {script}
\definesystemconstant  {scriptscript}

\definesystemconstant  {lefthyphenmin}
\definesystemconstant  {righthyphenmin}

\definesystemconstant  {skewchar}
\definesystemconstant  {hyphenchar}
\definesystemconstant  {encoding}
\definesystemconstant  {mapping}
\definesystemconstant  {patterns}
\definesystemconstant  {rscale}
\definesystemconstant  {handling}
\definesystemconstant  {ucmap}

\definesystemconstant  {property}
\definesystemconstant  {overprint}
\definesystemconstant  {layer}
\definesystemconstant  {effect}
\definesystemconstant  {negative}

\definesystemconstant  {black}
\definesystemconstant  {white}

%D Just to be complete we define the standard \TEX\ units.

\definesystemconstant  {cm}
\definesystemconstant  {em}
\definesystemconstant  {ex}
\definesystemconstant  {mm}
\definesystemconstant  {pt}
\definesystemconstant  {sp}
\definesystemconstant  {bp}
\definesystemconstant  {in}

%D These constants are used for internal and utility
%D commands.

\definesystemconstant  {check}
\definesystemconstant  {reset}
\definesystemconstant  {set}

\definesystemconstant  {entrya}
\definesystemconstant  {entryb}
\definesystemconstant  {entryc}
\definesystemconstant  {entry}
\definesystemconstant  {see}
\definesystemconstant  {from}
\definesystemconstant  {to}
\definesystemconstant  {page}
\definesystemconstant  {line}

\definesystemconstant  {synonym}

\definesystemconstant  {reference}
\definesystemconstant  {main}

\definesystemconstant  {list}

\definesystemconstant  {item}
\definesystemconstant  {itemcount}

\definesystemconstant  {number}
\definesystemconstant  {references}
\definesystemconstant  {between}
\definesystemconstant  {format}
\definesystemconstant  {old}

\definesystemconstant  {thisisblock}
\definesystemconstant  {thiswasblock}

\definesystemconstant  {figurepreset}

\definesystemconstant  {empty}

%D Some \CONTEXT\ commands take a two||pass aproach to
%D optimize the typesetting. Each two||pass object has its
%D own tag.

\definesystemconstant  {pass}

\definesystemconstant  {data}
\definesystemconstant  {float}
\definesystemconstant  {list}
\definesystemconstant  {page}
\definesystemconstant  {subpage}
\definesystemconstant  {margin}
\definesystemconstant  {profile}
\definesystemconstant  {versionbegin}
\definesystemconstant  {versionend}
\definesystemconstant  {cross}
\definesystemconstant  {paragraph}

%D A lot of macros use tags to distinguish between different
%D objects, e.g. lists and registers.

\definesystemconstant  {prt}  % part (deel)
\definesystemconstant  {chp}  % chapter (hoofdstuk)
\definesystemconstant  {sec}  % section (paragraaf)
\definesystemconstant  {tit}  % title (titel)
\definesystemconstant  {sub}  % subject (onderwerp)
\definesystemconstant  {mar}  % margin (marge)
\definesystemconstant  {num}  % number (doornummeren)
\definesystemconstant  {def}  % definition (doordefinieren)
\definesystemconstant  {for}  % formula (formule)
\definesystemconstant  {fnt}  % footnote (voetnoot)
\definesystemconstant  {ind}  % index (register)
\definesystemconstant  {lin}  % linked index
\definesystemconstant  {lst}  % list (opsomming)
\definesystemconstant  {flt}  % float (plaatsblok)
\definesystemconstant  {pag}  % page (pagina)
\definesystemconstant  {txt}  % text (tekst)
\definesystemconstant  {ref}  % reference (verwijzing)
\definesystemconstant  {lab}  % label (label)
\definesystemconstant  {aut}  % automatic (inhoud, index)
\definesystemconstant  {vwa}  % automatic (illustrations)
\definesystemconstant  {vwb}  % automatic (illustrations)

\definesystemconstant  {kop}  % kop  % still dutch

%D Reference labels can be tagged by users, for instance by
%D means of \type{tag:}. The reference mechanism itself uses
%D some tags too. These are definitely not to be used by users.
%D Here they are:

\definereferenceconstant {cross}      {:c:}  % cross reference
\definereferenceconstant {view}       {:v:}  % view reference
\definereferenceconstant {viewa}      {:a:}  % view reference test a
\definereferenceconstant {viewb}      {:b:}  % view reference test b
\definereferenceconstant {page}       {:p:}  % page referece
\definereferenceconstant {list}       {:l:}  % list reference
\definereferenceconstant {exec}       {:e:}  % execution reference
\definereferenceconstant {form}       {:m:}  % form reference
\definereferenceconstant {syst}       {:s:}  % system reference

\definereferenceconstant {from}       {:f:}  % from list reference
\definereferenceconstant {to}         {:t:}  % to list reference

\definereferenceconstant {object}     {:o:}  % object reference
\definereferenceconstant {driver}     {:d:}  % driver object reference
\definereferenceconstant {widget}     {:w:}  % field chain reference

\definereferenceconstant {java}       {:j:}  % java scripts

%D When we use numbers and dimensions the same applies as
%D with the keywords like \type{width} and \type{plus}
%D mentioned earlier.

\def\!!ten             {10}
\def\!!twelve          {12}
\def\!!hundred        {100}
\def\!!thousand      {1000}
\def\!!tenthousand  {10000}
\def\!!maxcard      {65536}
\def\!!medcard      {32768}

\def\!!zeropoint          {0pt}
\def\!!onepoint           {1pt}
\def\!!twopoint           {2pt}
\def\!!threepoint         {3pt}
\def\!!fourpoint          {4pt}
\def\!!fivepoint          {5pt}
\def\!!sixpoint           {6pt}
\def\!!sevenpoint         {7pt}
\def\!!eightpoint         {8pt}
\def\!!ninepoint          {9pt}
\def\!!tenpoint          {10pt}
\def\!!elevenpoint       {11pt}
\def\!!twelvepoint       {12pt}
\def\!!fourteenpointfour {14.4pt}

\newdimen \zeropoint      \zeropoint    = 0pt
\newdimen \onepoint       \onepoint     = 1pt
\newdimen \onebasepoint   \onebasepoint = 1bp
\chardef  \scaledpoint                  = 1

\let\onerealpoint\onepoint % needed for latex

\newcount\medcard \medcard\!!medcard % used in font module
\newcount\maxcard \maxcard\!!maxcard % used in font module

\ifx\thousandpoint\undefined \newdimen\thousandpoint \fi

\thousandpoint=1000pt

%D Another optimization is:

\let\points\onepoint

%D A rough test is:
%D
%D \starttyping
%D \def\TestMe % 7.75 sec on a P4/2G
%D   {\dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points
%D    \dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points}
%D
%D \def\TestMe % 11.5 sec on a P4/2G
%D   {\dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt%
%D   \dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt}
%D
%D \def\TestMe % 12.5 sec on a P4/2G
%D   {\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt%
%D    \dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt}
%D
%D \testfeatureonce {500000}{\TestMe}
%D \stoptyping

%D Variables are composed of a command specific tag and a user
%D supplied variable (system constant). The first tag \type{ag}
%D for instance is available as \type{\??ag} and expands to
%D \type{@@ag} in composed variables.

% vervallen : hd hr hm vt vr vm tr tn te br bm bo on om or

\definesystemvariable {ab}   % AlignedBoxes
\definesystemvariable {ag}   % AchterGrond
\definesystemvariable {al}   % ALinea's
\definesystemvariable {am}   % interActieMenu
\definesystemvariable {an}   % ANchor
\definesystemvariable {as}   % AlignmentSwitch
\definesystemvariable {ba}   % synchronisatieBAlk
\definesystemvariable {be}   % startstop (BeginEnd)
\definesystemvariable {bj}   % BlokJe
\definesystemvariable {bk}   % Blokken (floats)
\definesystemvariable {bl}   % BLanko
\definesystemvariable {bg}   % BleedinG
\definesystemvariable {bo}   % BlankO (definitions)
\definesystemvariable {bs}   % SelecteerBlokken
\definesystemvariable {bt}   % BuTton
\definesystemvariable {bu}   % BUffer
\definesystemvariable {bv}   % Brieven
\definesystemvariable {by}   % Per
\definesystemvariable {cb}   % CollectBox
\definesystemvariable {cc}   % Comment
\definesystemvariable {ci}   % CItaat
\definesystemvariable {cl}   % kleur (CoLor setup)
\definesystemvariable {cn}   % CollumN
\definesystemvariable {co}   % COmbinaties
\definesystemvariable {cp}   % CliP
\definesystemvariable {cr}   % kleur (ColoR)
\definesystemvariable {cs}   % kleur (ColorSeparation
\definesystemvariable {cv}   % ConVersie
\definesystemvariable {cy}   % CrYteria
\definesystemvariable {da}   % DAte
\definesystemvariable {dc}   % DroppedCaps
\definesystemvariable {dd}   % DoorDefinieren
\definesystemvariable {de}   % DEel
\definesystemvariable {dl}   % DunneLijnen
\definesystemvariable {dn}   % DoorNummeren
\definesystemvariable {dm}   % DefineMeasure
\definesystemvariable {do}   % DefinieerOpmaak
\definesystemvariable {du}   % DUmmy
\definesystemvariable {ds}   % DoorSpringen
\definesystemvariable {ef}   % ExternFiguur
\definesystemvariable {ec}   % EnCoding
\definesystemvariable {en}   % ENvironments
\definesystemvariable {ep}   % ExternfiguurPreset
\definesystemvariable {er}   % external resources
\definesystemvariable {ex}   % ExterneFiguren
\definesystemvariable {ht}   % HiddenText
\definesystemvariable {fc}   % FramedContent
\definesystemvariable {fd}   % FielD
\definesystemvariable {fe}   % FoxetExtensions
\definesystemvariable {ff}   % FontFile
\definesystemvariable {fg}   % FiGuurmaten
\definesystemvariable {fi}   % FIle
\definesystemvariable {fl}   % Floats
\definesystemvariable {fm}   % ForMules
\definesystemvariable {fp}   % FilegroeP
\definesystemvariable {fr}   % ForM
\definesystemvariable {fs}   % FileSynonym
\definesystemvariable {ft}   % FonTs
\definesystemvariable {fv}   % FontVariant
\definesystemvariable {fx}   % FoXet
\definesystemvariable {ha}   % HAng
\definesystemvariable {hs}   % HSpace
\definesystemvariable {ia}   % Interactie
\definesystemvariable {ib}   % InteractieBalk
\definesystemvariable {id}   % Index
\definesystemvariable {ig}   % ItemGroup
\definesystemvariable {ih}   % InHoudsopgave
\definesystemvariable {ii}   % stelIndexIn
\definesystemvariable {il}   % stelInvulRegelsin
\definesystemvariable {im}   % InMarge
\definesystemvariable {in}   % INspringen
\definesystemvariable {ip}   % InsertPages
\definesystemvariable {is}   % Items
\definesystemvariable {it}   % stelInTerliniein
\definesystemvariable {iv}   % stelInvulLijnenin
\definesystemvariable {ka}   % KAntlijn
\definesystemvariable {kd}   % KaDerteksten
\definesystemvariable {kj}   % KopJes (floats)
\definesystemvariable {kk}   % Kapitalen
\definesystemvariable {kl}   % KoLommen
\definesystemvariable {km}   % KenMerk
\definesystemvariable {ko}   % KOp(pen)
\definesystemvariable {kp}   % KopPelteken
\definesystemvariable {kr}   % KoRps
\definesystemvariable {ks}   % KolomSpan
\definesystemvariable {kt}   % KonTakten
\definesystemvariable {kw}   % KontaktWaarde
\definesystemvariable {la}   % LAnguage
\definesystemvariable {lb}   % LaBels
\definesystemvariable {ld}   % LegenDa
\definesystemvariable {le}   % LinetablE
\definesystemvariable {lg}   % taal (LanGuage)
\definesystemvariable {li}   % LIjst
\definesystemvariable {ll}   % Layers
\definesystemvariable {lx}   % LayerteXt
\definesystemvariable {ln}   % LijNen
\definesystemvariable {lo}   % LOgos
\definesystemvariable {lt}   % LiTeratuur
\definesystemvariable {ly}   % LaYout
\definesystemvariable {ma}   % MargeAchtergrond
\definesystemvariable {mb}   % MargeBlokken
\definesystemvariable {mg}   % Metapost paGe
\definesystemvariable {mk}   % MarKering
\definesystemvariable {mt}   % inline MaTh
\definesystemvariable {mo}   % Math Options
\definesystemvariable {nm}   % Nummering
\definesystemvariable {np}   % NaastPlaatsen
\definesystemvariable {nr}   % Nummeren
\definesystemvariable {of}   % OFfset
\definesystemvariable {oi}   % OmlijndInstellingen
\definesystemvariable {ol}   % OmLijnd
\definesystemvariable {on}   % ONderstreep
\definesystemvariable {oo}   % OpsOmmingen
\definesystemvariable {op}   % OPsomming
\definesystemvariable {or}   % OtpfilteR
\definesystemvariable {os}   % OffSet
\definesystemvariable {ot}   % OTpsequence
\definesystemvariable {ov}   % OVerlay
\definesystemvariable {ox}   % OffsetBox
\definesystemvariable {pa}   % PAlet
\definesystemvariable {pb}   % PuBlicatie
\definesystemvariable {pc}   % PageComment
\definesystemvariable {pe}   % PagEhandler
\definesystemvariable {pf}   % ProFiel
\definesystemvariable {pg}   % KoppelPagina
\definesystemvariable {ph}   % ParagrapH
\definesystemvariable {pl}   % PLaats
\definesystemvariable {pn}   % PaginaNummer
\definesystemvariable {pp}   % PaPier
\definesystemvariable {pr}   % PRogrammas
\definesystemvariable {ps}   % PoSitioneren
\definesystemvariable {pt}   % PageshifT
\definesystemvariable {py}   % PropertYs
\definesystemvariable {rd}   % RenDering
\definesystemvariable {rf}   % ReFereren
\definesystemvariable {rg}   % ReGel
\definesystemvariable {rl}   % ReferentieLijst
\definesystemvariable {rn}   % RegelNummer
\definesystemvariable {ro}   % ROteren
\definesystemvariable {rr}   % linenotes
\definesystemvariable {rs}   % RaSters
\definesystemvariable {rt}   % RoosTers
\definesystemvariable {rv}   % ReserVeerfiguur
\definesystemvariable {rw}   % RenderingWindow
\definesystemvariable {sa}   % ScAle
\definesystemvariable {sb}   % SectieBlok
\definesystemvariable {sc}   % SCherm
\definesystemvariable {sd}   % SounD
\definesystemvariable {se}   % SEctie
\definesystemvariable {sf}   % SpeciFics
\definesystemvariable {sg}   % SpacinG
\definesystemvariable {sh}   % ShapeText
\definesystemvariable {si}   % SplIt
\definesystemvariable {sk}   % SectieKop
\definesystemvariable {sl}   % SmalLer
\definesystemvariable {sm}   % SynonieMen
\definesystemvariable {sn}   % SubNummer
\definesystemvariable {so}   % SOrteren
\definesystemvariable {sp}   % SelecteerPapier
\definesystemvariable {ss}   % Symbool
\definesystemvariable {st}   % STickers
\definesystemvariable {su}   % SetUp
\definesystemvariable {sv}   % SysteemVariabelen
\definesystemvariable {sy}   % SYnchronisatie
\definesystemvariable {ta}   % TAb
\definesystemvariable {tb}   % TekstBlokken
\definesystemvariable {td}   % TextbackgrounDs
\definesystemvariable {te}   % TEmplate
\definesystemvariable {tf}   % TypeFace
\definesystemvariable {tg}   % Tex paGe
\definesystemvariable {ti}   % TabelInstellingen
\definesystemvariable {tk}   % Teksten
\definesystemvariable {tl}   % TekstLijnen
\definesystemvariable {tm}   % TypesynonyM
\definesystemvariable {tp}   % TyPen
\definesystemvariable {tx}   % TeXtflow
\definesystemvariable {ts}   % TypeScript
\definesystemvariable {tt}   % TabulaTe
\definesystemvariable {ty}   % TYpe
\definesystemvariable {uc}   % Unicode
\definesystemvariable {ui}   % UItvoer
\definesystemvariable {ur}   % URl
\definesystemvariable {ve}   % VErsie
\definesystemvariable {vn}   % VoetNoten
\definesystemvariable {vt}   % VerTical
\definesystemvariable {wr}   % WitRuimte
\definesystemvariable {xf}   % XML File
\definesystemvariable {xp}   % XML Processing
\definesystemvariable {xy}   % schaal
\definesystemvariable {za}   % ZetspiegelAanpassing

%D Next we define some language independant one letter
%D variables and keywords.

\defineinterfaceconstant {x} {x}  % x offset
\defineinterfaceconstant {y} {y}  % y offset
\defineinterfaceconstant {w} {w}  % width
\defineinterfaceconstant {h} {h}  % height
\defineinterfaceconstant {s} {s}  % size
\defineinterfaceconstant {t} {t}  % title
\defineinterfaceconstant {c} {c}  % creator
\defineinterfaceconstant {e} {e}  % extension
\defineinterfaceconstant {f} {f}  % file

\defineinterfaceconstant {a} {a}  % kunnen weg
\defineinterfaceconstant {b} {b}  % kunnen weg
\defineinterfaceconstant {c} {c}  % kunnen weg
\defineinterfaceconstant {d} {d}  % kunnen weg
\defineinterfaceconstant {e} {e}  % kunnen weg

\defineinterfaceconstant {s} {s}
\defineinterfaceconstant {r} {r}
\defineinterfaceconstant {g} {g}
\defineinterfaceconstant {b} {b}
\defineinterfaceconstant {c} {c}
\defineinterfaceconstant {m} {m}
\defineinterfaceconstant {y} {y}
\defineinterfaceconstant {k} {k}
\defineinterfaceconstant {a} {a} % alternative
\defineinterfaceconstant {t} {t} % transparency
\defineinterfaceconstant {p} {p} % percentage

\defineinterfaceconstant {t} {t}
\defineinterfaceconstant {h} {h}
\defineinterfaceconstant {b} {b}

\defineinterfaceconstant {rgb}  {rgb}
\defineinterfacevariable {rgb}  {rgb}

\defineinterfaceconstant {cmyk} {cmyk}
\defineinterfacevariable {cmyk} {cmyk}

\defineinterfaceconstant {mp} {mp}
\defineinterfacevariable {mp} {mp}

\defineinterfacevariable {s} {s}

\defineinterfacevariable {a} {a}
\defineinterfacevariable {b} {b}
\defineinterfacevariable {c} {c}
\defineinterfacevariable {d} {d}

%D The names of files and their extensions are fixed.
%D \CONTEXT\ uses as less files as possible. Utility files can
%D be recognized by the first two characters of the extension:
%D \type{tu}.

\definefileconstant {utilityfilename}    {texutil}

\definefileconstant {blockextension}     {tub}
\definefileconstant {figureextension}    {tuf}
\definefileconstant {inputextension}     {tui}
\definefileconstant {outputextension}    {tuo} % tup for previous run
\definefileconstant {optionextension}    {top}
\definefileconstant {temporaryextension} {tmp}
\definefileconstant {patternsextension}  {pat}
\definefileconstant {hyphensextension}   {hyp}
\definefileconstant {fontmapextension}   {map}

%D These files are loaded at start||up. They may contain system
%D specific setups (or calls to other files), old macro's, to
%D garantee compatibility and new macro's noy yet present in
%D the format.

\definefileconstant {errfilename} {cont-err}
\definefileconstant {sysfilename} {cont-sys}
\definefileconstant {oldfilename} {cont-old}
\definefileconstant {newfilename} {cont-new}
\definefileconstant {filfilename} {cont-fil}
\definefileconstant {modfilename} {cont-mod}

%D Handy for typescripts:

\definetypescriptconstant {name}    {name}
\definetypescriptconstant {default} {default}
\definetypescriptconstant {map}     {map}
\definetypescriptconstant {special} {special}
\definetypescriptconstant {size}    {size}

%D The next two files specify user settings as well as
%D \TEXEXEC\ settings when generating a format.

\definefileconstant {usrfilename} {cont-usr}
\definefileconstant {fmtfilename} {cont-fmt}

%D The setup files for the language, font, color and special
%D subsystems have a common prefix. This means that we have at
%D most three characters for unique filenames.

\definefileconstant {colorprefix}        {colo-}
\definefileconstant {encodingprefix}     {enco-}
\definefileconstant {filterprefix}       {filt-}
\definefileconstant {fontprefix}         {font-}
\definefileconstant {handlingprefix}     {hand-}
\definefileconstant {javascriptprefix}   {java-}
\definefileconstant {languageprefix}     {lang-}
\definefileconstant {mathprefix}         {math-}
\definefileconstant {metapostprefix}     {meta-}
\definefileconstant {regimeprefix}       {regi-}
\definefileconstant {specialprefix}      {spec-}
\definefileconstant {symbolprefix}       {symb-}
\definefileconstant {typeprefix}         {type-}
\definefileconstant {xtagprefix}         {xtag-}
\definefileconstant {propprefix}         {prop-}

\definefileconstant {moduleprefix}       {m-}
\definefileconstant {styleprefix}        {s-}
\definefileconstant {xstyleprefix}       {x-}
\definefileconstant {privateprefix}      {p-}
\definefileconstant {thirdprefix}        {t-}

%definefileconstant {beforeprefix}       {b-}
%definefileconstant {afterprefix}        {a-}

%D \CONTEXT\ follows different strategies for finding files.
%D The macros that are responsible for this 'clever' searching
%D make use of two (very important) path specifiers.

\definefileconstant {pathseparator}      {/}
\definefileconstant {currentpath}        {.}
\definefileconstant {parentpath}         {..}

%D The way fonts are defined and called upon is language
%D independant. We follow the scheme laid down by Knuth in
%D Plain \TEX. We'll explain their meaning later.

\defineinterfaceconstant {tf} {tf}
\defineinterfaceconstant {bf} {bf}
\defineinterfaceconstant {bs} {bs}
\defineinterfaceconstant {bi} {bi}
\defineinterfaceconstant {sl} {sl}
\defineinterfaceconstant {it} {it}
\defineinterfaceconstant {sc} {sc}
\defineinterfaceconstant {rm} {rm}
\defineinterfaceconstant {ss} {ss}
\defineinterfaceconstant {tt} {tt}
\defineinterfaceconstant {hw} {hw}
\defineinterfaceconstant {cg} {cg}
\defineinterfaceconstant {os} {os}
\defineinterfaceconstant {mm} {mm}
\defineinterfaceconstant {i}  {i}
\defineinterfaceconstant {nn} {nn}

\defineinterfaceconstant {x}  {x}
\defineinterfaceconstant {xx} {xx}

\defineinterfaceconstant {em} {em}

\defineinterfaceconstant {mi} {mi}
\defineinterfaceconstant {sy} {sy}
\defineinterfaceconstant {ex} {ex}
\defineinterfaceconstant {mr} {mr}

\defineinterfaceconstant {ma} {ma}
\defineinterfaceconstant {mb} {mb}
\defineinterfaceconstant {mc} {mc}

%D For figure inclusion we need:

\defineinterfaceconstant {tif}  {tif}
\defineinterfaceconstant {eps}  {eps}
\defineinterfaceconstant {mps}  {mps}
\defineinterfaceconstant {jpg}  {jpg}
\defineinterfaceconstant {pdf}  {pdf}
\defineinterfaceconstant {png}  {png}
\defineinterfaceconstant {avi}  {avi}
\defineinterfaceconstant {mov}  {mov}
\defineinterfaceconstant {svg}  {svg}
\defineinterfaceconstant {tex}  {tex}
\defineinterfaceconstant {tmp}  {tmp}

%D A careful reader will have noticed that in the module
%D \type{mult-ini} we defined \type{\selectinterface}. We were
%D not yet able to actually select an interface, because we
%D still had to define the constants and variables. Now we've
%D done so, selection is permitted.

\selectinterface

%D And only after this selection is done, we can define
%D messages, otherwise the default language is in use.

\ifinterfacetranslation \else

\startmessages  dutch  library: check
  title: controle
      1: '=' ontbreekt of zonder {} na '--' in regel --
      2: -- argument(en) verwacht in regel --
      3: -- -- vervangt een macro, gebruik HOOFDLETTERS!
\stopmessages

\startmessages  english library: check
  title: check
      1: missing or ungrouped '=' after '--' in line --
      2: -- argument(s) expected in line --
      3: -- -- replaces a macro, use CAPITALS!
\stopmessages

% 1: to be adapted

\startmessages  german library: check
  title: check
      1: Fehlendes '=' nach '--' in Zeile --
      2: -- Argument(e) in Zeile -- erwartet
      3: -- -- ersetzt ein Makro, verwende VERSALIEN!
\stopmessages

\startmessages  czech library: check
  title: kontrola
      1: postradam '=' po '--' na radku --
      2: ocekavam -- argument(y) na radku --
      3: -- -- nahrazuje makro, uzijte VERZALKY!
\stopmessages

\startmessages  italian library: check
  title: controllo
      1: '=' mancante o non raggruppato dopo '--' alla riga --
      2: -- argomento/i attesi alla riga --
      3: -- -- sostituisce una macro, usare le MAIUSCOLE!
\stopmessages

\startmessages  norwegian library: check
  title: kontroll
      1: manglende '=' etter '--' i linje --
      2: -- argument forventet i linje --
      3: -- -- overskygger en makro, bruk STORE BOKSTAVER!
\stopmessages

\startmessages  romanian library: check
  title: verificari
      1: lipseste '=' dupa '--' in linia --
      2: argumentul(ele) -- sunt asteptate in linia  --
      3: -- -- inlocuieste un macro, folositi MAJUSCULE!
\stopmessages

\fi

%D Ok, here are some more, because we've got ouselves some
%D extensions to \CONTEXT.

\definemessageconstant {addresses}
\definemessageconstant {documents}

\protect

\endinput
