\setuplayout
	[backspace=2cm,width=middle]

% \usetypescript[antykwa-poltawskiego]
% \setupbodyfont[antykwa-poltawskiego,10pt]
\usetypescript[antykwa-poltawskiego][ec]
\setupbodyfont[antykwa-poltawskiego,10pt]

\setuphead
	[section,subject]
	[style=\bfc]
\setuphead
	[subsection,subsubject]
	[style=\bfb]
\setuppagenumbering
	[location={footer}]
\setuplayout
	[header=0pt,headerdistance=0pt,height=24cm]
\setupwhitespace
	[medium]

\def\TeXLive{\TeX\ Live}
\def\MiKTeX{MiK\TeX}
\def\W32TeX{W32\TeX}
\def\pTeX{p\TeX}

\starttext

\section{\TeX\ distributions}

\subsection{\TeXLive}

In \TeXLive\ you can install different language collections \type{collection-lang}{\tt\sl <foo>}.

\placefigure[force]{}{\externalfigure[img/texlive-collection.png][width=340pt]}

For example, the German collection \type{collection-langgerman} contains packages \type{hyphen-german} and \type{dehyph-exptl} which both contain hyphenation patterns (in addition to many other packages related to German language). The Greek collection \type{collection-langgreek} contains \type{hyphen-greek} and \type{hyphen-ancientgreek} among other packages. The package \type{dehyph-exptl} is maintained independently, while all packages \type{hyphen-}{\tt\sl<foo>} belong to \type{hyph-utf8}.




Hyphenation packages may contain one or more patterns. For example \type{hyphen-norwegian} contains two directives for adding two hyphenation patterns:
\starttyping
execute AddHyphen \
        name=bokmal synonyms=norwegian,norsk \
        lefthyphenmin=2 \
        righthyphenmin=2 \
        file=loadhyph-nb.tex \
        file_patterns=hyph-nb.pat.txt \
        file_exceptions=hyph-nb.hyp.txt
execute AddHyphen \
        name=nynorsk \
        lefthyphenmin=2 \
        righthyphenmin=2 \
        file=loadhyph-nn.tex \
        file_patterns=hyph-nn.pat.txt \
        file_exceptions=hyph-nn.hyp.txt
\stoptyping

The keywords {\bf name} and {\bf synonyms} are used as language name to access the patterns in \TeX, {\bf file} is used as pattern loader for 8-bit engines and \XeTeX, while {\bf file\_patterns} and {\bf file\_exceptions} are plain text files used by \LuaTeX.

The information from \type{AddHyphen} directives end up in three different files: \type{language.dat} used by \LaTeX, \type{language.def} used by plain \eTeX\  and \type{language.dat.lua} used by \LuaTeX.

All the three are placed in\crlf
\strut\type{    $TEXMFSYSVAR/tex/generic/config},\crlf
for example in\crlf
\strut\type{    /usr/local/texlive/2017/texmf-var/tex/generic/config},\crlf
while a static copy also exists in\crlf
\strut\type{    $TEXMFDIST/tex/generic/config},\crlf
but that one contains all languages and only makes sense if you have a complete checkout from SVN repository for example.

\placefigure[force]{\type{language.dat}}{
\starttyping
% from hyphen-norwegian:
bokmal loadhyph-nb.tex
=norwegian
=norsk
nynorsk loadhyph-nn.tex
\stoptyping
}

\placefigure[force]{\type{language.def}}{
\starttyping
% from hyphen-norwegian:
\addlanguage{bokmal}{loadhyph-nb.tex}{}{2}{2}
\addlanguage{norwegian}{loadhyph-nb.tex}{}{2}{2}
\addlanguage{norsk}{loadhyph-nb.tex}{}{2}{2}
\addlanguage{nynorsk}{loadhyph-nn.tex}{}{2}{2}
\stoptyping
}

\placefigure[force]{\type{language.dat.lua} (the keyword \type{loader} is not used anywhere at the moment)}{
\starttyping
-- from hyphen-norwegian:
	['bokmal'] = {
		loader = 'loadhyph-nb.tex',
		lefthyphenmin = 2,
		righthyphenmin = 2,
		synonyms = { 'norwegian', 'norsk' },
		patterns = 'hyph-nb.pat.txt',
		hyphenation = 'hyph-nb.hyp.txt',
	},
	['nynorsk'] = {
		loader = 'loadhyph-nn.tex',
		lefthyphenmin = 2,
		righthyphenmin = 2,
		synonyms = {  },
		patterns = 'hyph-nn.pat.txt',
		hyphenation = 'hyph-nn.hyp.txt',
	},
\stoptyping
}

The files \type{language.dat} and \type{language.def} are used both by 8-bit and native Unicode engines. On one hand this simplifies things, while on the other it makes very little sense to include sanskrit patterns in \pdfTeX\ -- the package doesn't load any patterns in that case any way. It might be that there will be multiple copies of \type{language.dat} for different engines in future.

\subsection{\MiKTeX}

In \MiKTeX\ application {\bf MiKTeX Options} which you can run from Start menu ({\em Maintenance} $\rightarrow$ {\em Settings} or {\em Maintenance (Admin)} $\rightarrow$ {\em Settings (Admin)\/}) or from command line (\type{mo.exe} or \type{mo_admin.exe}) you can select which languages you want to include into \TeX\ formats.

\placefigure[force]{user interface to select the desired languages}{\externalfigure[img/MiKTeX-languages.png]}%[width=7cm]

Based on that selection \MiKTeX\ creates three files \type{language.dat}, \type{language.def} and \type{language.dat.lua} in directory
\starttyping
    C:\ProgramData\MiKTeX\2.9\tex\generic\config
\stoptyping

The contents of those files are the same as described in \TeXLive\ section, but the needed information about names of languages and required files comes from
\starttyping
    C:\Program Files\MiKTeX 2.9\MiKTeX\config\languages.ini
\stoptyping
instead of special \type{hyphen-}{\tt\sl<foo>} packages.

(Exact location might depend on where you install \MiKTeX\ and whether you install it for all users or just for yourself. It may also depend on Windows version. The information above holds for \MiKTeX\ 2.9 on Windows 7 with system-wide installation.)

\placefigure[force]{\type{languages.ini}}{
\starttyping
[bokmal]
loader=loadhyph-nb.tex
lefthyphenmin=2
righthyphenmin=2
synonyms=norwegian,norsk
patterns=hyph-nb.pat.txt

[nynorsk]
loader=loadhyph-nn.tex
lefthyphenmin=2
righthyphenmin=2
patterns=hyph-nn.pat.txt
\stoptyping
}

% \subsection{\W32TeX}

\page

List of languages in \TeXLive\ 2017:
\startcolumns[two]
\starttyping
collection-langarabic
  hyphen-arabic
    arabic
  hyphen-farsi
    farsi,persian
collection-langchinese
  hyphen-chinese
    pinyin
collection-langcyrillic
  hyphen-belarusian
    belarusian
  hyphen-bulgarian
    bulgarian
  hyphen-churchslavonic
    churchslavonic
  hyphen-mongolian
    mongolian
    mongolianlmc
  hyphen-russian
    russian
  hyphen-serbian
    serbian
    serbianc
  hyphen-ukrainian
    ukrainian
collection-langczechslovak
  hyphen-czech
    czech
  hyphen-slovak
    slovak
collection-langenglish
  hyphen-english
    ukenglish,british,UKenglish
    usenglishmax
collection-langeuropean
  hyphen-armenian
    armenian
  hyphen-croatian
    croatian
  hyphen-danish
    danish
  hyphen-dutch
    dutch
  hyphen-estonian
    estonian
  hyphen-finnish
    finnish
  hyphen-friulan
    friulan
  hyphen-hungarian
    hungarian
  hyphen-icelandic
    icelandic
  hyphen-irish
    irish
  hyphen-kurmanji
    kurmanji
  hyphen-latin
    classiclatin
    latin
    liturgicallatin
  hyphen-latvian
    latvian
  hyphen-lithuanian
    lithuanian
  hyphen-norwegian
    bokmal,norwegian,norsk
    nynorsk
  hyphen-occitan
    occitan
  hyphen-piedmontese
    piedmontese
  hyphen-romanian
    romanian
  hyphen-romansh
    romansh
  hyphen-slovenian
    slovenian,slovene
  hyphen-swedish
    swedish
  hyphen-turkish
    turkish
  hyphen-uppersorbian
    uppersorbian
  hyphen-welsh
    welsh
collection-langfrench
  hyphen-basque
    basque
  hyphen-french
    french,patois,francais
collection-langgerman
  hyphen-german
    german
    ngerman
    swissgerman
collection-langgreek
  hyphen-greek
    monogreek
    greek,polygreek
  hyphen-ancientgreek
    ancientgreek
    ibycus
collection-langitalian
  hyphen-italian
    italian
collection-langother
  hyphen-afrikaans
    afrikaans
  hyphen-coptic
    coptic
  hyphen-esperanto
    esperanto
  hyphen-ethiopic
    ethiopic,amharic,geez
  hyphen-georgian
    georgian
  hyphen-indic
    assamese
    bengali
    gujarati
    hindi
    kannada
    malayalam
    marathi
    oriya
    panjabi
    tamil
    telugu
  hyphen-indonesian
    indonesian
  hyphen-interlingua
    interlingua
  hyphen-sanskrit
    sanskrit
  hyphen-thai
    thai
  hyphen-turkmen
    turkmen
collection-langpolish
  hyphen-polish
    polish
collection-langportuguese
  hyphen-portuguese
    portuguese,portuges
collection-langspanish
  hyphen-spanish
    spanish,espanol
  hyphen-catalan
    catalan
  hyphen-galician
    galician
\stoptyping
\stopcolumns

% \section{Special cases}
% 
% \subsection{German}
% 
% \subsection{Russian and Ukrainian}
% 
% \section{How to add your own language?}

\stoptext