summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-07-17 22:16:32 +0000
committerKarl Berry <karl@freefriends.org>2013-07-17 22:16:32 +0000
commitb89c6d74de55dd5e434d60c0fb3a81f66ad153db (patch)
treea6e6f3977c86c34cf8f955d186f2ee064db07d49 /Master
parenteec0a21648f82e9f409ed8151e1bc83f34bfec79 (diff)
translations (17jul13)
git-svn-id: svn://tug.org/texlive/trunk@31222 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/translations/README34
-rw-r--r--Master/texmf-dist/doc/latex/translations/translations_en.pdfbin0 -> 152864 bytes
-rw-r--r--Master/texmf-dist/doc/latex/translations/translations_en.tex596
-rw-r--r--Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-english.trsl87
-rw-r--r--Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-french.trsl87
-rw-r--r--Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-german.trsl87
-rw-r--r--Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-spanish.trsl87
-rw-r--r--Master/texmf-dist/tex/latex/translations/translations.sty611
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check1
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds2
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/translations.tlpsrc0
12 files changed, 1593 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/translations/README b/Master/texmf-dist/doc/latex/translations/README
new file mode 100644
index 00000000000..56a547c7002
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/translations/README
@@ -0,0 +1,34 @@
+--------------------------------------------------------------------------
+the TRANSLATIONS package v1.0 - 2013/07/16
+ a simple translator
+
+--------------------------------------------------------------------------
+Clemens Niederberger
+Web: https://github.com/cgnieder/translations
+E-Mail: contact@mychemistry.eu
+--------------------------------------------------------------------------
+Copyright 2011-2013 Clemens Niederberger
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Clemens Niederberger.
+--------------------------------------------------------------------------
+The translations package consists of the files
+ - translations.sty, translations_en.tex, translations_en.pdf,
+ translations-basic-dictionary-english.trsl,
+ translations-basic-dictionary-french.trsl,
+ translations-basic-dictionary-german.trsl,
+ translations-basic-dictionary-spanish.trsl
+ - README
+--------------------------------------------------------------------------
+If you have any ideas, questions, suggestions or bugs to report, please
+feel free to contact me.
+--------------------------------------------------------------------------
diff --git a/Master/texmf-dist/doc/latex/translations/translations_en.pdf b/Master/texmf-dist/doc/latex/translations/translations_en.pdf
new file mode 100644
index 00000000000..894f586651e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/translations/translations_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/translations/translations_en.tex b/Master/texmf-dist/doc/latex/translations/translations_en.tex
new file mode 100644
index 00000000000..5a368411a0b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/translations/translations_en.tex
@@ -0,0 +1,596 @@
+% arara: lualatex
+% !arara: lualatex
+% !arara: lualatex
+% --------------------------------------------------------------------------
+% the TRANSLATIONS package
+%
+% a simple translator
+%
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% Web: https://github.com/cgnieder/translations/
+% E-Mail: contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% Copyright 2011-2013 Clemens Niederberger
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Clemens Niederberger.
+% --------------------------------------------------------------------------
+% The translations package is part of the exsheets bundle
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+%
+% if you want to compile this documentation you'll need the document class
+% `cnpkgdoc' which you can get here:
+% https://bitbucket.org/cgnieder/cnpkgdoc/
+% the class is licensed LPPL 1.3 or later
+%
+% use `pdflatex' for compilation
+%
+\PassOptionsToPackage{supstfm=libertinesups}{superiors}
+\documentclass[DIV11,toc=index,toc=bib,numbers=noendperiod]{cnpkgdoc}
+% ----------------------------------------------------------------------------
+% document layout and typographic features
+\docsetup{
+ pkg = {translations} ,
+ repo = github ,
+ subtitle = {a simple translator} ,
+ language = en ,
+ modules = true ,
+ code-box = {
+ backgroundcolor = gray!7!white ,
+ skipbelow = .6\baselineskip plus .5ex minus .5ex ,
+ skipabove = .6\baselineskip plus .5ex minus .5ex ,
+ innerleftmargin = 1.5em ,
+ innerrightmargin = 2.5em
+ } ,
+ gobble = 1
+}
+\usepackage[oldstyle,proportional]{libertine}
+\usepackage{libertinehologopatch}
+\setmonofont[Scale=MatchLowercase]{Bitstream Vera Sans Mono}
+\usepackage[english]{selnolig}
+\cnpkgusecolorscheme{friendly}
+
+\usepackage{embrac}[2012/06/29]
+ \ChangeEmph{[}[,.02em]{]}[.055em,-.08em]
+ \ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em]
+\usepackage{microtype}
+\usepackage[multiple]{fnpct}
+
+\renewcommand*\othersectionlevelsformat[3]{\textcolor{main}{#3\autodot}\enskip}
+\renewcommand*\partformat{\textcolor{main}{\partname~\thepart\autodot}}
+
+\pagestyle{headings}
+
+\setcapindent{1.5em}
+\setkomafont{caption}{\normalfont\footnotesize\sffamily}
+\setkomafont{captionlabel}{\normalfont\footnotesize\sffamily\scshape}
+
+\usepackage{booktabs,array,ragged2e}
+
+% ----------------------------------------------------------------------------
+% code examples
+\addcmds{
+ cuisine,
+ DeclareDictTranslation, DeclareLanguage, DeclareLanguageAlias,
+ DeclareLanguageDialect, DeclareTranslation, DeclareTranslationFallback,
+ GetTranslation, GetTranslationFor,
+ kitchen,
+ LoadDictionary, LoadDictionaryFor,
+ mypackage@title,
+ NewTranslation,
+ ProvideDictionaryFor,
+ RenewTranslation,RequirePackage,
+ SaveTranslation, SaveTranslationFor, selectlanguage
+}
+
+% ----------------------------------------------------------------------------
+% other packages, bibliography, index
+\usepackage{array,longtable,booktabs}
+
+\usepackage{filecontents}
+\usepackage{imakeidx}
+\begin{filecontents*}{\jobname.ist}
+ heading_prefix "{\\bfseries "
+ heading_suffix "\\hfil}\\nopagebreak\n"
+ headings_flag 1
+ delim_0 "\\dotfill\\hyperpage{"
+ delim_1 "\\dotfill\\hyperpage{"
+ delim_2 "\\dotfill\\hyperpage{"
+ delim_r "}\\textendash\\hyperpage{"
+ delim_t "}"
+ suffix_2p "\\nohyperpage{\\,f.}"
+ suffix_3p "\\nohyperpage{\\,ff.}"
+\end{filecontents*}
+\indexsetup{othercode=\footnotesize}
+\makeindex[options={-s \jobname.ist},intoc,columns=3]
+
+% ----------------------------------------------------------------------------
+% example definitions that have to be done in the preamble:
+\DeclareTranslation{English}{Kueche}{kitchen}
+\DeclareTranslation{German}{Kueche}{K\"uche}
+\DeclareTranslation{Spanish}{Kueche}{cocina}
+\DeclareTranslation{French}{Kueche}{cuisine}
+\DeclareTranslation{English}{farbe}{color}
+\DeclareTranslation{British}{farbe}{colour}
+\LoadDictionaryFor{German}{translations-basic-dictionary}
+
+% ----------------------------------------------------------------------------
+% custom commands
+\usepackage{bbding}
+
+\newcommand*\required{\hfill\llap{required}\newline}
+\newcommand*\optional{\hfill\llap{optional}\newline}
+
+\newcommand*\unexpsign{{\tiny\FiveStar}}
+\newcommand*\expsign{\textcolor{red}{{\tiny\FiveStar}}}
+\renewcommand*\cnpkgdoctriangle{\unexpsign}
+\newcommand*\expandable{%
+ \def\cnpkgdoctriangle{%
+ \expsign
+ \gdef\cnpkgdoctriangle{\unexpsign}}}
+
+\newlength\nodewidth
+\setlength\nodewidth{.375\linewidth}
+\long\def\yes:{\textcolor{green}{\CheckmarkBold}\par}
+\long\def\no:{\textcolor{red}{\XSolidBrush}\par}
+\protected\def\fnote#1{\textsuperscript{#1}}
+
+\pdfstringdefDisableCommands{\def\llap#1{#1\space}\def\bigstar{*}}
+
+\begin{document}
+
+\section{Motivation}\secidx{Motivation}
+This package provides means for package authors to have an easy interface for
+internationalization of their packages. The functionality of this package is
+in many parts also covered by the package \paket*{translator} (part of the
+\paket{beamer} bundle). Internationalization is also possible with
+\paket{babel} and it's \cmd*{addto}\cmd{captions<language>} mechanism or
+\KOMAScript's \cmd{providecaptionname}. However, I believe that
+\translations\ is more flexible than all of these. Unlike \paket*{translator}
+it detects the used (\paket{babel} or \paket{polyglossia}) language itself and
+provides expandable retrieving of the translated key. \translations\ also
+provides support for language dialects which means package authors can for
+example distinguish between British, Australian, Canadian and US English.
+
+The first draft of the package was written since I missed an expandable
+version of \paket{translator}'s \cmd{translate} command. Once I had the
+package available I began using it in various of my other packages so it got
+extended to the needs I faced there.
+\secidx*{Motivation}
+
+\section{License and Requirements}\label{sec:license}\secidx{Requirements}
+\translations\ is placed under the terms of the \LaTeX{} Project Public
+License, version 1.3 or later (\url{http://www.latex-project.org/lppl.txt}).
+It has the status ``maintained.''
+
+\translations\ requires the packages \paket{etoolbox} and \paket*{scrlfile}
+(part of the \KOMAScript\ bundle\footnote{\CTANurl{koma-script}}).
+\secidx*{Requirements}
+
+\section{Usage}\secidx{Usage}
+\subsection{Background}\secidx[Background]{Usage}
+The \translations\ package enables the author of a package or a class (or a
+document) to declare translations in different languages of key words and
+fetch these translations in the document depending on the active language as
+set by \paket{babel} or \paket{polyglossia}. Since \translations\ checks
+which language is active it is generally not necessary to specify the language
+for which a translation should be fetched manually.
+
+\translations\ knows of three types of languages: main languages (see
+table~\ref{tab:languages} on page~\pageref{tab:languages}), language aliases
+(see table~\ref{tab:aliases} on page~\pageref{tab:aliases}) and language
+dialects (see table~\ref{tab:dialects} on page~\pageref{tab:dialects}). For
+the commands declaring or fetching a translation base languages and language
+aliases are equivalent. Dialects are similar to aliases but there are a few
+important differences.
+
+Figure~\ref{fig:scheme} shows what happens if \translations\ is asked to fetch
+a translation for a given key.
+
+\begin{figure}[htbp]
+ \centering
+ \begin{tikzpicture}
+ [
+ level/.style={sibling distance=.5\linewidth/#1},
+ every node/.style={
+ draw,
+ rounded corners=3pt,
+ align=left,
+ anchor=north,
+ font=\small\sffamily
+ }
+ ]
+ \node {check if any\fnote{a} translation is defined in given language}
+ child {
+ node[text width=\nodewidth]
+ {\yes: check if language is a dialect}
+ child {
+ node[text width=\nodewidth/2]
+ {\yes: check if dialect translation is given}
+ child {
+ node[text width=\nodewidth/2.75]
+ {\yes: use dialect translation}
+ }
+ child {
+ node[text width=\nodewidth/2.75]
+ {\no: use lan\-guage\fnote{b} translation}
+ }
+ }
+ child {
+ node[text width=\nodewidth/2]
+ {\no: use translation}}
+ }
+ child {
+ node[text width=\nodewidth]
+ {\no: check if fallback translation is given}
+ child {
+ node[text width=\nodewidth/2.75]
+ {\yes: use fallback translation}
+ }
+ child {
+ node[text width=\nodewidth/2.75]
+ {\no: use literal key}
+ }
+ } ;
+ \end{tikzpicture}
+ \caption{Schematic representation of \translations' translating
+ mechansim. Notes: \fnote{a} except for a possible fallback
+ translation. \fnote{b} \ie, the base language of the dialect.}
+ \label{fig:scheme}
+\end{figure}
+
+What happens if you declare a translation? There are three cases:
+\begin{enumerate}
+ \item You declare a translation for a base language: this is the normal case
+ where an internal macro is defined which can be fetched by the
+ \cmd{GetTranslation} command (see section~\ref{ssec:commands}).
+ \item You declare a translation for a language alias: this is the very same
+ as the first case since the same internal macro is defined.
+ \item You declare a translation for a dialect: this is two-fold. Either a
+ translation for the base language exists so only the translation for the
+ dialect is saved. If the translation for the base language does not exist
+ it is defined to be the same as the one for the dialect.
+\end{enumerate}
+
+\subsection{Available Commands}\label{ssec:commands}\secidx[Commands]{Usage}
+Below the commands provided by \translations\ are explained. The symbol
+\expsign{} means that the command is expandable, \unexpsign{} means that it
+isn't.
+\begin{beschreibung}
+ \Befehl{DeclareLanguage}{<lang>}\newline
+ Declare a language that can be used by \translations. If the language
+ already exists it will be silently redefined. This command can only be used
+ in the preamble.
+ \Befehl{DeclareLanguageAlias}{<lang2>}\ma{<lang1>}\newline
+ Declares \code{<lang2>} to be an alias of \code{<lang1>}. If \code{<lang1>}
+ doesn't exist yet a warning will be raised and it will be defined. This
+ command can only be used in the preamble.
+ \Befehl{DeclareLanguageDialect}{<dialect>}\ma{<lang>}\newline
+ Declares \code{<dialect>} to be a dialect of language \code{<lang>}. If a
+ translation for \code{<dialect>} is provided it is used by the translation
+ macros. If there is none the corresponding translation for \code{<lang>} is
+ used instead.
+ \Befehl{NewTranslation}{<lang>}\ma{<key>}\ma{<translation>}\newline
+ Defines a translation of key \code{<key>} for the language \code{<lang>}.
+ An error will be raised if a translation of \code{<key>} already exists.
+ This command can only be used in the preamble.
+ \Befehl{RenewTranslation}{<lang>}\ma{<key>}\ma{<translation>}\newline
+ Redefines a translation of key \code{<key>} for the language \code{<lang>}.
+ An error will be raised if no translation of \code{<key>} exists.
+ This command can only be used in the preamble.
+ \Befehl{DeclareTranslation}{<lang>}\ma{<key>}\ma{<translation>}\newline
+ Defines a translation of key \code{<key>} for the language \code{<lang>}.
+ No error will be raised if a translation of \code{<key>} already exists.
+ This command can only be used in the preamble.
+ \Befehl{DeclareTranslationFallback}{<key>}\ma{<fallback>}\newline
+ Defines a fallback translation for key \code{<key>} that is used in case no
+ translation of \code{<key>} for the currently active language has been
+ provided. No error will be raised if a fallback for \code{<key>} already
+ exists. This command can only be used in the preamble.
+ \expandable\Befehl{GetTranslationFor}{<lang>}\ma{<key>}\newline
+ Fetches and prints the translation of \code{<key>} for the language
+ \code{<lang>}. This command is expandable.
+ \expandable\Befehl{GetTranslation}{<key>}\newline
+ Fetches and prints the translation of \code{<key>} for the currently active
+ language (as for example set by \paket{babel}). This command is expandable.
+ \Befehl{GetTranslationForWarn}{<lang>}\ma{<key>}\newline
+ \sinceversion{1.0}Fetches and prints the translation of \code{<key>} for
+ the language \code{<lang>}. Issues a warning if no translation is
+ available.
+ \Befehl{GetTranslationWarn}{<key>}\newline
+ \sinceversion{1.0}Fetches and prints the translation of \code{<key>} for
+ the currently active language (as for example set by \paket{babel}).
+ Issues a warning if no translation is available.
+ \Befehl{SaveTranslationFor}{<cmd>}\ma{<lang>}\ma{<key>}\newline
+ Fetches and saves the translation of \code{<key>} for the language
+ \code{<lang>} in the macro \code{<cmd>}.
+ \Befehl{SaveTranslation}{<cmd>}\ma{<key>}\newline
+ Fetches and saves the translation of \code{<key>} for the currently active
+ language (as for example set by \paket{babel}) in the macro \code{<cmd>}.
+ \Befehl{LoadDictionary}{<name>}\newline
+ Loads a file named \code{<name>-<lang>.trsl} where \code{<lang>} corresponds
+ to the lowercase name of the current language as defined with
+ \cmd{DeclareLanguage}. This file should contain the translations for the
+ specified language.
+ \Befehl{LoadDictionaryFor}{<lang>}\ma{<name>}\newline
+ Loads a file named \code{<name>-<lang>.trsl}.
+ \Befehl{DeclareDictTranslation}{<key>}\ma{<translation>}\newline
+ This command is to be used in a dictionary file and picks up the language
+ of that file, see section~\ref{sec:dictionaries} for an example.
+ \Befehl{ProvideDictionaryFor}{<lang>}\ma{<name>}\oa{<date>}\newline
+ Needs to be in a dictionary file. This command tells \translations\ that
+ the file indeed is a dictionary and also sets the language for the
+ dictionary which is used by \cmd{DeclareDictTranslation}.
+ \expandable\Befehl{PrintDictionaryFor}{<lang>}\ma{<name>}\ma{<pre>}\ma{<mid>}\ma{<post>}\newline
+ \sinceversion{1.0}Prints all entries of dictionary \code{<name>} in
+ language \code{<lang>} in the order the entries have been declared. For
+ every entry the code\par
+ \code{<pre><key><mid><translation><post>}\par
+ is printed. The dictionary must have been loaded of course.
+\end{beschreibung}
+
+\subsection{A Small Example}\secidx[Example]{Usage}
+This section demonstrates with two short examples how the macros are used.
+The first example covers the basics: dlaring of translations and then
+retrieving and typesetting them.
+
+\begin{beispiel}
+ % in the preamble:
+ % \DeclareTranslation{English}{Kueche}{kitchen}
+ % \DeclareTranslation{German}{Kueche}{K\"uche}
+ % \DeclareTranslation{Spanish}{Kueche}{cocina}
+ % \DeclareTranslation{French}{Kueche}{cuisine}
+
+ \GetTranslation{Kueche}
+ \SaveTranslation\kitchen{Kueche}
+ \SaveTranslationFor\cuisine{french}{Kueche}
+
+ \selectlanguage{ngerman}
+ \GetTranslation{Kueche} \kitchen\ \GetTranslationFor{spanish}{Kueche}
+ \cuisine
+\end{beispiel}
+
+The next example demonstrates the use of dialects and how they fall back to
+the translation for the main language if no extra translation was declared:
+
+\begin{beispiel}
+ % in the preamble:
+ % \DeclareTranslation{English}{farbe}{color}
+ % \DeclareTranslation{British}{farbe}{colour}
+
+ \GetTranslationFor{English}{farbe} \\
+ \GetTranslationFor{British}{farbe} \\
+ \GetTranslationFor{American}{farbe}
+\end{beispiel}
+
+\subsection{Usage in Packages}\secidx[Packages]{Usage}
+\subsubsection{Basic Structure}\secidx[Packages!structure]{Usage}
+A typical usage in a package would look as follows:
+\begin{beispiel}[code only]
+ \RequirePackage{translations}
+ \DeclareTranslationFallback{mypackage-title}{Nice Title}
+ \DeclareTranslation{English}{mypackage-title}{Nice Title}
+ \DeclareTranslation{French}{mypackage-title}{Beau Titre}
+ \DeclareTranslation{German}{mypackage-title}{Sch\"{o}ner Titel}
+ ...
+ \def\mypackage@title{\GetTranslation{mypackage-title}}
+\end{beispiel}
+
+That is, a package defines some unique key for an expression and at least
+defines a fallback translation. Additionally translations for as many
+languages as the author wants are defined. A user then may add
+\cmd{DeclareTranslation}\ma{<language>}\ma{<translation>} if they find their
+translation missing.
+
+\subsubsection{The `fallback' language}\secidx[Packages!fallback]{Usage}
+If a user has neither loaded \paket{babel} nor \paket{polyglossia}
+\translations\ will use English as language and translate to English if the
+translation was provided. If the user \emph{has} loaded one of the language
+packages but has chosen a language for which no translation is defined the
+language `fallback' will be used, i.e., the translation provided with
+\cmd{DeclareTranslationFallback}. If no fallback translation is provided
+either the translation will expand to the literal string.
+
+The following three examples should make this concept clear:
+
+\begin{beispiel}[code only]
+ \documentclass{article}
+ \DeclareTranslation{German}{foo-literal}{bar}
+ \begin{document}
+ \GetTranslation{foo-literal} => `foo-literal'
+ \end{document}
+\end{beispiel}
+
+\begin{beispiel}[code only]
+ \documentclass{article}
+ \DeclareTranslationFallback{foo-literal}{foo}
+ \DeclareTranslation{German}{foo-literal}{bar}
+ \begin{document}
+ \GetTranslation{foo-literal} => `foo'
+ \end{document}
+\end{beispiel}
+
+\begin{beispiel}[code only]
+ \documentclass{article}
+ \usepackage[ngerman]{babel}
+ \DeclareTranslation{German}{foo-literal}{bar}
+ \begin{document}
+ \GetTranslation{foo-literal} => `bar'
+ \end{document}
+\end{beispiel}
+
+\subsection{Dictionaries}\label{sec:dictionaries}
+\secidx{Dictionaries}\secidx[Dictionaries]{Usage}
+\subsubsection{Own Dictionaries}\secidx[own]{Dictionaries}
+A typical dictionary file should look as follows:
+\begin{beispiel}[code only]
+ % this is file housing-german.trsl
+ \ProvideDictionaryFor{German}{housing}[<version info>]
+ \DeclareDictTranslation{kitchen (housing)}{K\"uche}
+ \DeclareDictTranslation{bathroom (housing)}{Bad}
+ \DeclareDictTranslation{living room (housing)}{Wohnzimmer}
+ \DeclareDictTranslation{bedroom (housing)}{Schlafzimmer}
+ ...
+ \endinput
+\end{beispiel}
+
+The usage is similar to the one in a package: unique keys are given
+translations, this time for the language the dictionary file is declared for
+only.
+
+\subsubsection{\translations' Basic Dictionaries}\secidx[basic]{Dictionaries}
+\translations\ already provides a basic dictionary for the languages English,
+French, German and Spanish. This dictionary is loaded automatically if the
+document language is one of these four. If you'd like to contribute and add
+the basic dictionary in your language this is more than welcome and highly
+appreciated! The easiest way to do this would be to copy one of the existing
+files \code{translations-basic-dictionary-<lang>.trsl} and modify the file
+accordingly. You can then send me the file via email and I'll add it to
+\translations.
+
+Table~\ref{tab:dict} lists all words provided by the basic dictionary for
+German.
+
+\begin{longtable}{ll}
+ \caption{All entries of \translations' basic dictionary in German.\label{tab:dict}} \\
+ \toprule
+ \rmfamily\bfseries key & \bfseries translation \\
+ \midrule
+ \endfirsthead
+ \toprule
+ \rmfamily\bfseries key & \bfseries translation \\
+ \midrule
+ \endhead
+ \bottomrule
+ \endlastfoot
+ \midrule
+ & \hfill\emph{continues} \\
+ \endfoot
+ \PrintDictionaryFor{German}{translations-basic-dictionary}{\ttfamily}{&}{\\}
+\end{longtable}
+
+\secidx*{Dictionaries}
+\secidx*{Usage}
+
+\section{Defined Languages}\label{sec:languages}\secidx{Languages}
+Quite a number of languages already are defined, either directly or via an
+alias. So, before you define a language you should take a look at the tables
+below if the language doesn't already exist. Table~\ref{tab:languages} lists
+all base languages, ``fallback'' being a dummy language used for fallback
+translations.
+
+\newcounter{column}
+\gdef\seplang{%
+ \stepcounter{column}%
+ \ifnumless{\value{column}}{4}
+ {&}
+ {\\\setcounter{column}{0}}%
+}
+\def\do#1{#1\seplang}
+\makeatletter
+\begin{longtable}{llll}
+ \caption{Base languages defines by \translations.\label{tab:languages}} \\
+ \toprule
+ \endhead
+ \bottomrule
+ \endlastfoot
+ \midrule
+ &&& \hfill\emph{continues} \\
+ \endfoot
+ \dolistloop\@trnslt@languages
+\end{longtable}
+\makeatother
+
+To every one of these languages at least one alias exists, the uppercase
+variant. This is due to the fact that it is common to write language names
+uppercased. All defined aliases are listed in table~\ref{tab:aliases}.
+
+\setcounter{column}{0}
+\gdef\seplang{%
+ \ifnumgreater{\value{column}}{3}
+ {\setcounter{column}{1}}
+ {\stepcounter{column}}%
+ \ifnumless{\value{column}}{4}
+ {&}
+ {\\}%
+}
+\def\aliases#1#2{#1\seplang #2\seplang}
+\def\do#1{\aliases#1}
+\makeatletter
+\begin{longtable}{ll@{\hspace*{4em}}ll}
+ \caption{All language aliases defined by \translations.\label{tab:aliases}}\\
+ \toprule
+ \bfseries alias & \bfseries language &
+ \bfseries alias & \bfseries language \\
+ \midrule
+ \endfirsthead
+ \toprule
+ \bfseries alias & \bfseries language &
+ \bfseries alias & \bfseries language \\
+ \midrule
+ \endhead
+ \bottomrule
+ \endlastfoot
+ \midrule
+ &&& \hfill\emph{continues} \\
+ \endfoot
+ \dolistloop\@trnslt@aliases@pair
+\end{longtable}
+\makeatother
+
+\translations\ also defines a few dialects. They are listed in
+table~\ref{tab:dialects}.
+
+\makeatletter
+\begin{longtable}{ll@{\hspace*{4em}}ll}
+ \caption{All dialects defined by \translations.\label{tab:dialects}}\\
+ \toprule
+ \bfseries dialect & \bfseries language &
+ \bfseries dialect & \bfseries language \\
+ \midrule
+ \endfirsthead
+ \toprule
+ \bfseries dialect & \bfseries language &
+ \bfseries dialect & \bfseries language \\
+ \midrule
+ \endhead
+ \bottomrule
+ \endlastfoot
+ \midrule
+ &&& \hfill\emph{continues} \\
+ \endfoot
+ \dolistloop\@trnslt@dialects@pair
+\end{longtable}
+\makeatother
+
+\secidx*{Languages}
+
+These languages should cover all languages which are currently covered by
+\paket{babel} and \paket{polyglossia}.
+
+\section{Implementation}\index{Implementation@\textbf{Implementation}}
+In the following code the lines 1--30 have been omitted. They only repeat the
+license statement which has already been mentioned in section~\ref{sec:license}.
+
+\implementation[linerange={31-1000},firstnumber=31]
+
+\indexprologue{\noindent Section titles are indicated \textbf{bold}, packages
+ \textsf{sans serif} and commands
+ \code{\textbackslash\textcolor{code}{brown}}.\par\bigskip}
+
+\printindex
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-english.trsl b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-english.trsl
new file mode 100644
index 00000000000..47dbcbeb39a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-english.trsl
@@ -0,0 +1,87 @@
+\ProvideDictionaryFor{English}{translations-basic-dictionary}
+
+\DeclareDictTranslation{Abstract}{Abstract}
+\DeclareDictTranslation{Addresses}{Addresses}
+\DeclareDictTranslation{addresses}{addresses}
+\DeclareDictTranslation{Address}{Address}
+\DeclareDictTranslation{address}{address}
+\DeclareDictTranslation{and}{and}
+\DeclareDictTranslation{Appendix}{Appendix}
+\DeclareDictTranslation{Authors}{Authors}
+\DeclareDictTranslation{authors}{authors}
+\DeclareDictTranslation{Author}{Author}
+\DeclareDictTranslation{author}{author}
+\DeclareDictTranslation{Bibliography}{Bibliography}
+\DeclareDictTranslation{cc}{cc}
+\DeclareDictTranslation{Chapters}{Chapters}
+\DeclareDictTranslation{chapters}{chapters}
+\DeclareDictTranslation{Chapter}{Chapter}
+\DeclareDictTranslation{chapter}{chapter}
+\DeclareDictTranslation{Conclusion}{Conclusion}
+\DeclareDictTranslation{conclusion}{conclusion}
+\DeclareDictTranslation{Contents}{Contents}
+\DeclareDictTranslation{Continuation}{Continuation}
+\DeclareDictTranslation{continuation}{continuation}
+\DeclareDictTranslation{cont}{cont}
+\DeclareDictTranslation{encl (plural)}{encl}
+\DeclareDictTranslation{encl (singular)}{encl}
+\DeclareDictTranslation{encl}{encl}
+\DeclareDictTranslation{Figures}{Figures}
+\DeclareDictTranslation{figures}{figures}
+\DeclareDictTranslation{Figure}{Figure}
+\DeclareDictTranslation{figure}{figure}
+\DeclareDictTranslation{From}{From}
+\DeclareDictTranslation{from}{from}
+\DeclareDictTranslation{Glossary}{Glossary}
+\DeclareDictTranslation{Index}{Index}
+\DeclareDictTranslation{Introduction}{Introduction}
+\DeclareDictTranslation{introduction}{introduction}
+\DeclareDictTranslation{List of Figures and Tables}{List of Figures and Tables}
+\DeclareDictTranslation{List of Figures}{List of Figures}
+\DeclareDictTranslation{List of Tables}{List of Tables}
+\DeclareDictTranslation{or}{or}
+\DeclareDictTranslation{Outline}{Outline}
+\DeclareDictTranslation{Overview}{Overview}
+\DeclareDictTranslation{Pages}{Pages}
+\DeclareDictTranslation{pages}{pages}
+\DeclareDictTranslation{Page}{Page}
+\DeclareDictTranslation{page}{page}
+\DeclareDictTranslation{Paragraphs}{Paragraphs}
+\DeclareDictTranslation{paragraphs}{paragraphs}
+\DeclareDictTranslation{Paragraph}{Paragraph}
+\DeclareDictTranslation{paragraph}{paragraph}
+\DeclareDictTranslation{Parts}{Parts}
+\DeclareDictTranslation{parts}{parts}
+\DeclareDictTranslation{Part}{Part}
+\DeclareDictTranslation{part}{part}
+\DeclareDictTranslation{Preface}{Preface}
+\DeclareDictTranslation{Proofs}{Proofs}
+\DeclareDictTranslation{proofs}{proofs}
+\DeclareDictTranslation{Proof}{Proof}
+\DeclareDictTranslation{proof}{proof}
+\DeclareDictTranslation{References}{References}
+\DeclareDictTranslation{Related work}{Related work}
+\DeclareDictTranslation{Related Work}{Related Work}
+\DeclareDictTranslation{Sections}{Sections}
+\DeclareDictTranslation{sections}{sections}
+\DeclareDictTranslation{Section}{Section}
+\DeclareDictTranslation{section}{section}
+\DeclareDictTranslation{See also}{See also}
+\DeclareDictTranslation{see also}{see also}
+\DeclareDictTranslation{See}{See}
+\DeclareDictTranslation{see}{see}
+\DeclareDictTranslation{Sketch of Proofs}{Sketch of Proofs}
+\DeclareDictTranslation{Sketch of proofs}{Sketch of proofs}
+\DeclareDictTranslation{Sketch of Proof}{Sketch of Proof}
+\DeclareDictTranslation{Sketch of proof}{Sketch of proof}
+\DeclareDictTranslation{Subsections}{Subsections}
+\DeclareDictTranslation{subsections}{subsections}
+\DeclareDictTranslation{Subsection}{Subsection}
+\DeclareDictTranslation{subsection}{subsection}
+\DeclareDictTranslation{Summary}{Summary}
+\DeclareDictTranslation{Tables}{Tables}
+\DeclareDictTranslation{tables}{tables}
+\DeclareDictTranslation{Table}{Table}
+\DeclareDictTranslation{table}{table}
+\DeclareDictTranslation{To}{To}
+\DeclareDictTranslation{to}{to}
diff --git a/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-french.trsl b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-french.trsl
new file mode 100644
index 00000000000..ce4965a5475
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-french.trsl
@@ -0,0 +1,87 @@
+\ProvideDictionaryFor{French}{translations-basic-dictionary}
+
+\DeclareDictTranslation{Abstract}{R\'{e}sum\'{e}}
+\DeclareDictTranslation{Addresses}{Adresses}
+\DeclareDictTranslation{addresses}{adresses}
+\DeclareDictTranslation{Address}{Adresse}
+\DeclareDictTranslation{address}{adresse}
+\DeclareDictTranslation{and}{et}
+\DeclareDictTranslation{Appendix}{Annexe}
+\DeclareDictTranslation{Authors}{Auteurs}
+\DeclareDictTranslation{authors}{auteur}
+\DeclareDictTranslation{Author}{Auteur}
+\DeclareDictTranslation{author}{auteur}
+\DeclareDictTranslation{Bibliography}{Bibliographie}
+\DeclareDictTranslation{cc}{Copie \`{a} }
+\DeclareDictTranslation{Chapters}{Chapitres}
+\DeclareDictTranslation{chapters}{chapitres}
+\DeclareDictTranslation{Chapter}{Chapitre}
+\DeclareDictTranslation{chapter}{chapitre}
+\DeclareDictTranslation{Conclusion}{Conclusion}
+\DeclareDictTranslation{conclusion}{conclusion}
+\DeclareDictTranslation{Contents}{Contenu}
+\DeclareDictTranslation{Continuation}{Suite}
+\DeclareDictTranslation{continuation}{suite}
+\DeclareDictTranslation{cont}{suite} % FIXME: unsure
+\DeclareDictTranslation{encl (plural)}{P.~J.}
+\DeclareDictTranslation{encl (singular)}{P.~J.}
+\DeclareDictTranslation{encl}{P.~J.}
+\DeclareDictTranslation{Figures}{Figures}
+\DeclareDictTranslation{figures}{figures}
+\DeclareDictTranslation{Figure}{Figure}
+\DeclareDictTranslation{figure}{figure}
+\DeclareDictTranslation{From}{De}
+\DeclareDictTranslation{from}{de}
+\DeclareDictTranslation{Glossary}{Glossaire}
+\DeclareDictTranslation{Index}{Index}
+\DeclareDictTranslation{Introduction}{Introduction}
+\DeclareDictTranslation{introduction}{introduction}
+\DeclareDictTranslation{List of Figures and Tables}{Liste des figures et des tableaux}
+\DeclareDictTranslation{List of Figures}{Liste des figures}
+\DeclareDictTranslation{List of Tables}{Liste des tableaux}
+\DeclareDictTranslation{or}{ou}
+\DeclareDictTranslation{Outline}{Plan}
+\DeclareDictTranslation{Overview}{Sommaire}
+\DeclareDictTranslation{Pages}{Pages}
+\DeclareDictTranslation{pages}{pages}
+\DeclareDictTranslation{Page}{Page}
+\DeclareDictTranslation{page}{page}
+\DeclareDictTranslation{Paragraphs}{Paragraphes}
+\DeclareDictTranslation{paragraphs}{paragraphes}
+\DeclareDictTranslation{Paragraph}{Paragraphe}
+\DeclareDictTranslation{paragraph}{paragraphe}
+\DeclareDictTranslation{Parts}{Parties}
+\DeclareDictTranslation{parts}{parties}
+\DeclareDictTranslation{Part}{Partie}
+\DeclareDictTranslation{part}{partie}
+\DeclareDictTranslation{Preface}{Pr\'{e}face}
+\DeclareDictTranslation{Proofs}{D\'{e}monstrations}
+\DeclareDictTranslation{proofs}{d\'{e}monstrations}
+\DeclareDictTranslation{Proof}{D\'{e}monstration}
+\DeclareDictTranslation{proof}{d\'{e}monstration}
+\DeclareDictTranslation{References}{R\'{e}f\'{e}rences}
+\DeclareDictTranslation{Related work}{travaux connexes}
+\DeclareDictTranslation{Related Work}{Travaux connexes}
+\DeclareDictTranslation{Sections}{Sections}
+\DeclareDictTranslation{sections}{sections}
+\DeclareDictTranslation{Section}{Section}
+\DeclareDictTranslation{section}{section}
+\DeclareDictTranslation{See also}{Voir aussi}
+\DeclareDictTranslation{see also}{voir aussi}
+\DeclareDictTranslation{See}{Voir}
+\DeclareDictTranslation{see}{voir}
+\DeclareDictTranslation{Sketch of Proofs}{Esquisse de preuves}
+\DeclareDictTranslation{Sketch of proofs}{Esquisse de preuves}
+\DeclareDictTranslation{Sketch of Proof}{Esquisse de preuve}
+\DeclareDictTranslation{Sketch of proof}{Esquisse de preuve}
+\DeclareDictTranslation{Subsections}{Sous-sections}
+\DeclareDictTranslation{subsections}{sous-sections}
+\DeclareDictTranslation{Subsection}{Sous-section}
+\DeclareDictTranslation{subsection}{sous-section}
+\DeclareDictTranslation{Summary}{R\'{e}sum\'{e}}
+\DeclareDictTranslation{Tables}{Tables}
+\DeclareDictTranslation{tables}{tables}
+\DeclareDictTranslation{Table}{Table}
+\DeclareDictTranslation{table}{table}
+\DeclareDictTranslation{To}{Vers}%??
+\DeclareDictTranslation{to}{vers}%??
diff --git a/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-german.trsl b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-german.trsl
new file mode 100644
index 00000000000..95732490944
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-german.trsl
@@ -0,0 +1,87 @@
+\ProvideDictionaryFor{German}{translations-basic-dictionary}
+
+\DeclareDictTranslation{Abstract}{Zusammenfassung}
+\DeclareDictTranslation{Addresses}{Adressen}
+\DeclareDictTranslation{addresses}{Adressen}
+\DeclareDictTranslation{Address}{Adresse}
+\DeclareDictTranslation{address}{Adresse}
+\DeclareDictTranslation{and}{und}
+\DeclareDictTranslation{Appendix}{Anhang}
+\DeclareDictTranslation{Authors}{Autoren}
+\DeclareDictTranslation{authors}{Autoren}
+\DeclareDictTranslation{Author}{Autor}
+\DeclareDictTranslation{author}{Autor}
+\DeclareDictTranslation{Bibliography}{Literaturverzeichnis}
+\DeclareDictTranslation{cc}{Verteiler}
+\DeclareDictTranslation{Chapters}{Kapitel}
+\DeclareDictTranslation{chapters}{Kapitel}
+\DeclareDictTranslation{Chapter}{Kapitel}
+\DeclareDictTranslation{chapter}{Kapitel}
+\DeclareDictTranslation{Conclusion}{Zusammenfassung}
+\DeclareDictTranslation{conclusion}{Zusammenfassung}
+\DeclareDictTranslation{Contents}{Inhaltsverzeichnis}
+\DeclareDictTranslation{Continuation}{Fortsetzung}
+\DeclareDictTranslation{continuation}{Fortsetzung}
+\DeclareDictTranslation{cont}{Forts}
+\DeclareDictTranslation{encl (plural)}{Anlagen}
+\DeclareDictTranslation{encl (singular)}{Anlage}
+\DeclareDictTranslation{encl}{Anlage(n)}
+\DeclareDictTranslation{Figures}{Abbildungen}
+\DeclareDictTranslation{figures}{Abbildungen}
+\DeclareDictTranslation{Figure}{Abbildung}
+\DeclareDictTranslation{figure}{Abbildung}
+\DeclareDictTranslation{From}{Von}
+\DeclareDictTranslation{from}{von}
+\DeclareDictTranslation{Glossary}{Glossar}
+\DeclareDictTranslation{Index}{Index}
+\DeclareDictTranslation{Introduction}{Einleitung}
+\DeclareDictTranslation{introduction}{Einleitung}
+\DeclareDictTranslation{List of Figures and Tables}{Abbildungs- und Tabellenverzeichnis}
+\DeclareDictTranslation{List of Figures}{Abbildungsverzeichnis}
+\DeclareDictTranslation{List of Tables}{Tabellenverzeichnis}
+\DeclareDictTranslation{or}{oder}
+\DeclareDictTranslation{Outline}{Gliederung}
+\DeclareDictTranslation{Overview}{\"Uber\-sicht}
+\DeclareDictTranslation{Pages}{Seiten}
+\DeclareDictTranslation{pages}{Seiten}
+\DeclareDictTranslation{Page}{Seite}
+\DeclareDictTranslation{page}{Seite}
+\DeclareDictTranslation{Paragraphs}{Ab\-s\"at\-ze}
+\DeclareDictTranslation{paragraphs}{Ab\-s\"at\-ze}
+\DeclareDictTranslation{Paragraph}{Absatz}
+\DeclareDictTranslation{paragraph}{Absatz}
+\DeclareDictTranslation{Parts}{Teile}
+\DeclareDictTranslation{parts}{Teile}
+\DeclareDictTranslation{Part}{Teil}
+\DeclareDictTranslation{part}{Teil}
+\DeclareDictTranslation{Preface}{Vorwort}
+\DeclareDictTranslation{Proofs}{Beweise}
+\DeclareDictTranslation{proofs}{Beweise}
+\DeclareDictTranslation{Proof}{Beweis}
+\DeclareDictTranslation{proof}{Beweis}
+\DeclareDictTranslation{References}{Literatur}
+\DeclareDictTranslation{Related work}{Verwandte Arbeiten}
+\DeclareDictTranslation{Related Work}{Verwandte Arbeiten}
+\DeclareDictTranslation{Sections}{Abschnitte}
+\DeclareDictTranslation{sections}{Abschnitte}
+\DeclareDictTranslation{Section}{Abschnitt}
+\DeclareDictTranslation{section}{Abschnitt}
+\DeclareDictTranslation{See also}{Siehe auch}
+\DeclareDictTranslation{see also}{siehe auch}
+\DeclareDictTranslation{See}{Siehe}
+\DeclareDictTranslation{see}{siehe}
+\DeclareDictTranslation{Sketch of Proofs}{Beweisskizzen}
+\DeclareDictTranslation{Sketch of proofs}{Beweisskizzen}
+\DeclareDictTranslation{Sketch of Proof}{Beweisskizze}
+\DeclareDictTranslation{Sketch of proof}{Beweisskizze}
+\DeclareDictTranslation{Subsections}{Unterabschnitte}
+\DeclareDictTranslation{subsections}{Unterabschnitte}
+\DeclareDictTranslation{Subsection}{Unterabschnitt}
+\DeclareDictTranslation{subsection}{Unterabschnitt}
+\DeclareDictTranslation{Summary}{Zusammenfassung}
+\DeclareDictTranslation{Tables}{Tabellen}
+\DeclareDictTranslation{tables}{Tabellen}
+\DeclareDictTranslation{Table}{Tabelle}
+\DeclareDictTranslation{table}{Tabelle}
+\DeclareDictTranslation{To}{An}
+\DeclareDictTranslation{to}{an}
diff --git a/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-spanish.trsl b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-spanish.trsl
new file mode 100644
index 00000000000..69e0824b103
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/translations/translations-basic-dictionary-spanish.trsl
@@ -0,0 +1,87 @@
+\ProvideDictionaryFor{Spanish}{translations-basic-dictionary}
+
+\DeclareDictTranslation{Abstract}{Resumen}
+\DeclareDictTranslation{Addresses}{Direcciones}
+\DeclareDictTranslation{addresses}{direcciones}
+\DeclareDictTranslation{Address}{Direcci\'{o}n}
+\DeclareDictTranslation{address}{direcci\'{o}n}
+\DeclareDictTranslation{and}{y}
+\DeclareDictTranslation{Appendix}{Ap\'{e}ndice}
+\DeclareDictTranslation{Authors}{Autores}
+\DeclareDictTranslation{authors}{autores}
+\DeclareDictTranslation{Author}{Autor}
+\DeclareDictTranslation{author}{autor}
+\DeclareDictTranslation{Bibliography}{Bibliograf\'{\i}a}
+\DeclareDictTranslation{cc}{c.c.}
+\DeclareDictTranslation{Chapters}{Cap\'{\i}tulos}
+\DeclareDictTranslation{chapters}{cap\'{\i}tulos}
+\DeclareDictTranslation{Chapter}{Cap\'{\i}tulo}
+\DeclareDictTranslation{chapter}{cap\'{\i}tulo}
+\DeclareDictTranslation{Conclusion}{Conclusi\'{o}n}
+\DeclareDictTranslation{conclusion}{conclusi\'{o}n}
+\DeclareDictTranslation{Contents}{Contenido}
+\DeclareDictTranslation{Continuation}{Continuaci\'{o}n}
+\DeclareDictTranslation{continuation}{continuaci\'{o}n}
+\DeclareDictTranslation{cont}{cont}
+\DeclareDictTranslation{encl (plural)}{adj.}
+\DeclareDictTranslation{encl (singular)}{adj.}
+\DeclareDictTranslation{encl}{adj.}
+\DeclareDictTranslation{Figures}{Figuras}
+\DeclareDictTranslation{figures}{figuras}
+\DeclareDictTranslation{Figure}{Figura}
+\DeclareDictTranslation{figure}{figura}
+\DeclareDictTranslation{From}{Desde}
+\DeclareDictTranslation{from}{desde}
+\DeclareDictTranslation{Glossary}{Glosario}
+\DeclareDictTranslation{Index}{\'{I}ndice}
+\DeclareDictTranslation{Introduction}{Introducci\'{o}n}
+\DeclareDictTranslation{introduction}{introducci\'{o}n}
+\DeclareDictTranslation{List of Figures and Tables}{Lista de Figuras y Tablas}
+\DeclareDictTranslation{List of Figures}{Lista de Figuras}
+\DeclareDictTranslation{List of Tables}{Lista de Tablas}
+\DeclareDictTranslation{or}{o}
+\DeclareDictTranslation{Outline}{Esbozo}
+\DeclareDictTranslation{Overview}{Visi\'{o}n General}
+\DeclareDictTranslation{Pages}{P\'{a}ginas}
+\DeclareDictTranslation{pages}{p\'{a}ginas}
+\DeclareDictTranslation{Page}{P\'{a}gina}
+\DeclareDictTranslation{page}{p\'{a}gina}
+\DeclareDictTranslation{Paragraphs}{P\'{a}rrafos}
+\DeclareDictTranslation{paragraphs}{p\'{a}rrafos}
+\DeclareDictTranslation{Paragraph}{P\'{a}rrafo}
+\DeclareDictTranslation{paragraph}{p\'{a}rrafo}
+\DeclareDictTranslation{Parts}{Partes}
+\DeclareDictTranslation{parts}{partes}
+\DeclareDictTranslation{Part}{Parte}
+\DeclareDictTranslation{part}{parte}
+\DeclareDictTranslation{Preface}{Prefacio}
+\DeclareDictTranslation{Proofs}{Demostraciones}
+\DeclareDictTranslation{proofs}{demostraciones}
+\DeclareDictTranslation{Proof}{Demostraci\'{o}n}
+\DeclareDictTranslation{proof}{demostraci\'{o}n}
+\DeclareDictTranslation{References}{Referencias}
+\DeclareDictTranslation{Related work}{Trabajo relacionado}
+\DeclareDictTranslation{Related Work}{Trabajo Relacionado}
+\DeclareDictTranslation{Sections}{Secciones}
+\DeclareDictTranslation{sections}{secciones}
+\DeclareDictTranslation{Section}{Secci\'{o}n}
+\DeclareDictTranslation{section}{secci\'{o}n}
+\DeclareDictTranslation{See also}{Ver tambi\'{e}n}
+\DeclareDictTranslation{see also}{ver tambi\'{e}n}
+\DeclareDictTranslation{See}{Ver}
+\DeclareDictTranslation{see}{ver}
+\DeclareDictTranslation{Sketch of Proofs}{Esbozo de Demostraciones}
+\DeclareDictTranslation{Sketch of proofs}{Esbozo de demostraciones}
+\DeclareDictTranslation{Sketch of Proof}{Esbozo de Demostraci\'{o}n}
+\DeclareDictTranslation{Sketch of proof}{Esbozo de demostraci\'{o}n}
+\DeclareDictTranslation{Subsections}{Subsecciones}
+\DeclareDictTranslation{subsections}{subsecciones}
+\DeclareDictTranslation{Subsection}{Subsecci\'{o}n}
+\DeclareDictTranslation{subsection}{subsecci\'{o}n}
+\DeclareDictTranslation{Summary}{Resumen}
+\DeclareDictTranslation{Tables}{Tablas}
+\DeclareDictTranslation{tables}{tablas}
+\DeclareDictTranslation{Table}{Tabla}
+\DeclareDictTranslation{table}{tabla}
+\DeclareDictTranslation{To}{Hasta}
+\DeclareDictTranslation{to}{hasta}
diff --git a/Master/texmf-dist/tex/latex/translations/translations.sty b/Master/texmf-dist/tex/latex/translations/translations.sty
new file mode 100644
index 00000000000..ddf88b8240f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/translations/translations.sty
@@ -0,0 +1,611 @@
+% --------------------------------------------------------------------------
+% the TRANSLATIONS package
+%
+% a simple translator
+%
+% This package is part of the exsheets bundle
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% Web: https://github.com/cgnieder/translations
+% E-Mail: contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% Copyright 2012 Clemens Niederberger
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Clemens Niederberger.
+% --------------------------------------------------------------------------
+% The translations package is part of the exsheets bundle.
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+\def\@trnslt@date{2013/07/16}
+\def\@trnslt@version{v1.0}
+
+\ProvidesPackage{translations}[\@trnslt@date\space \@trnslt@version\space a simple translator]
+\RequirePackage{etoolbox,scrlfile}
+
+% --------------------------------------------------------------------------
+% message handling
+\def\@trnslt@error@message{%
+ For details have a look at the `translations' manual.}
+
+\def\@trnslt@create@message#1{%
+ \ifstrequal{#1}{Error}
+ {%
+ \lowercase{\csdef{@trnslt@#1}}##1{%
+ \csuse{Package#1}{translations}{##1}{\@trnslt@error@message}}%
+ }{%
+ \lowercase{\csdef{@trnslt@#1}}##1{%
+ \csuse{Package#1}{translations}{##1}}%
+ }}
+\@trnslt@create@message{Error}
+\@trnslt@create@message{Warning}
+\@trnslt@create@message{WarningNoLine}
+\@trnslt@create@message{Info}
+
+\def\@trnslt@err@unknown@lang#1{%
+ \@trnslt@error{Unknown language `#1'}}
+
+\def\@trnslt@warn@unknown@lang#1{%
+ \@trnslt@warning{Unknown language `#1'}}
+
+\def\@trnslt@err@already@defined#1#2{%
+ \@trnslt@error{The #2 translation for `#1' is already defined.}}
+
+\def\@trnslt@err@not@defined#1#2{%
+ \@trnslt@error{The \@trnslt@language{#2} translation for `#1' is not defined yet.}}
+
+% --------------------------------------------------------------------------
+% check if babel or polyglossia is used
+\AtEndPreamble{
+ \@ifpackageloaded{babel}{}{
+ \@ifpackageloaded{polyglossia}{}
+ {\@trnslt@warning{No language package found. I am going to use `english'
+ as default language.}}
+ }
+ \ifdef\languagename{}
+ {\def\languagename{english}}
+ \def\@trnslt@current@language{\languagename}
+ \ifdef\bbl@afterfi{}
+ {\long\def\bbl@afterfi#1\fi{\fi#1}}
+}
+
+% --------------------------------------------------------------------------
+% book keeping: the following macros will be used as `etoolbox' lists that
+% keep record of defined languages, dialects and aliases
+\def\@trnslt@languages{}% all languages
+\def\@trnslt@aliases@pair{}% all aliases and their base
+\def\@trnslt@aliases@single{}% all aliases
+\def\@trnslt@dialects@pair{}% all dialects and their base
+\def\@trnslt@dialects@single{}% all dialects
+
+% --------------------------------------------------------------------------
+% define \@trnslt@if@<name> conditionals that don't leave the checked macro as
+% \relax behind and check for \@trnslt@<name>@#1. These conditionals should
+% also be expandable in an \edef-like context:
+\def\@trnslt@newif#1{%
+ \csdef{@trnslt@if@#1}##1{%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \@firstofone
+ {\expandafter\expandafter\expandafter}%
+ \ifcsname @trnslt@#1@##1\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}
+
+% --------------------------------------------------------------------------
+% \DeclareLanguage
+% #1: language
+\newrobustcmd*\DeclareLanguage[1]{%
+ \@trnslt@declare@language{#1}}
+\@onlypreamble\DeclareLanguage
+
+\def\@trnslt@declare@language#1{%
+ \@trnslt@if@language{#1}
+ {}{%
+ \csdef{@trnslt@language@#1}{#1}%
+ \listeadd\@trnslt@languages{#1}%
+ }%
+}
+
+\def\@trnslt@language#1{%
+ \csuse{@trnslt@language@#1}}
+
+\@trnslt@newif{language}
+
+% --------------------------------------------------------------------------
+% \DeclareLanguageDialect
+% #1: dialect
+% #2: language
+\newrobustcmd*\DeclareLanguageDialect[2]{%
+ \@trnslt@declare@languagedialect{#1}{#2}}
+\@onlypreamble\DeclareLanguageDialect
+
+\def\@trnslt@declare@languagedialect#1#2{%
+ \@trnslt@if@language{#2}
+ {}{%
+ \@trnslt@warn@unknown@lang{#2}%
+ \@trnslt@declare@language{#2}%
+ }%
+ \@trnslt@if@dialect{#1}
+ {% => ist schon als dialect definiert => irgendwelche weiteren checks?
+ }
+ {%
+ \@trnslt@if@alias{#2}
+ {%
+ \csedef{@trnslt@dialect@#1}{{\@trnslt@alias{#2}}{#1}}%
+ \@trnslt@declare@language{#1}%
+ \listeadd\@trnslt@dialects@single{#1}%
+ \listeadd\@trnslt@dialects@pair{{#1}{\@trnslt@alias{#2}}}%
+ }
+ {%
+ \csdef{@trnslt@dialect@#1}{{#2}{#1}}%
+ \@trnslt@declare@language{#1}%
+ \listeadd\@trnslt@dialects@single{#1}%
+ \listeadd\@trnslt@dialects@pair{{#1}{#2}}%
+ }%
+ }%
+}
+
+\def\@trnslt@dialect#1{%
+ \csuse{@trnslt@dialect@#1}}
+
+% this macros fetches the base language for a given dialect, expandably:
+\def\@trnslt@dialect@of#1{%
+ \@trnslt@if@dialect{#1}
+ {%
+ \expandafter\expandafter\expandafter
+ \@firstoftwo
+ \csname @trnslt@dialect@#1\endcsname
+ }{}%
+}
+
+\@trnslt@newif{dialect}
+
+% --------------------------------------------------------------------------
+% \DeclareLanguageAlias
+% #1: alias
+% #2: language
+\newrobustcmd*\DeclareLanguageAlias[2]{%
+ \@trnslt@declare@languagealias{#1}{#2}}
+\@onlypreamble\DeclareLanguageAlias
+
+\def\@trnslt@declare@languagealias#1#2{%
+ \@trnslt@if@language{#2}
+ {}{%
+ \@trnslt@warn@unknown@lang{#2}%
+ \@trnslt@declare@language{#2}%
+ }%
+ \csletcs{@trnslt@language@#1}{@trnslt@language@#2}%
+ \@trnslt@if@dialect{#2}
+ {\csletcs{@trnslt@dialect@#1}{@trnslt@dialect@#2}}
+ {}%
+ \ifinlist{#1}\@trnslt@aliases@single
+ {}{%
+ \csdef{@trnslt@alias@#1}{#2}%
+ \listeadd\@trnslt@aliases@pair{{#1}{#2}}%
+ \listeadd\@trnslt@aliases@single{#1}%
+ }%
+}
+
+\def\@trnslt@alias#1{%
+ \csuse{@trnslt@alias@#1}}
+
+\@trnslt@newif{alias}
+
+% --------------------------------------------------------------------------
+% dummy language: `fallback':
+\DeclareLanguage{fallback}
+\DeclareLanguageAlias{Fallback}{fallback}
+
+% --------------------------------------------------------------------------
+% \DeclareTranslation, \NewTranslation and \RenewTranslation
+% #1: language
+% #2: word
+% #3: replacement
+\newrobustcmd*\DeclareTranslation[3]{%
+ \@trnslt@declare@translation{#2}{#1}{#3}}
+\@onlypreamble\DeclareTranslation
+
+\newrobustcmd*\DeclareTranslationFallback[2]{%
+ \@trnslt@declare@translation{#1}{fallback}{#2}}
+\@onlypreamble\DeclareTranslationFallback
+
+\newrobustcmd*\NewTranslation[3]{%
+ \@trnslt@new@translation{#2}{#1}{#3}}
+\@onlypreamble\NewTranslation
+
+\newrobustcmd*\RenewTranslation[3]{%
+ \@trnslt@renew@translation{#2}{#1}{#3}}
+\@onlypreamble\RenewTranslation
+
+% #1: word
+% #2: language
+% #3: replacement
+\def\@trnslt@declare@translation#1#2#3{%
+ \@trnslt@if@language{#2}
+ {%
+ \@trnslt@if@dialect{#2}
+ {%
+ \csdef{@trnslt@word@#1@\@trnslt@dialect{#2}}{#3}%
+ \@trnslt@if@word\@trnslt@dialect@of{#1}{#2}
+ {}
+ {\csdef{@trnslt@word@#1@\@trnslt@dialect@of{#2}}{#3}}%
+ }
+ {\csdef{@trnslt@word@#1@\@trnslt@language{#2}}{#3}}%
+ % save the <word> as <word>:
+ \csdef{@trnslt@word@#1@literal}{#1}%
+ }
+ {\@trnslt@err@unknown@lang{#2}}%
+}
+
+\def\@trnslt@new@translation#1#2#3{%
+ \@trnslt@if@translation{#1}{#2}
+ {\@trnslt@err@already@defined{#1}{#2}}
+ {\@trnslt@declare@translation{#1}{#2}{#3}}}
+
+\def\@trnslt@renew@translation#1#2#3{%
+ \@trnslt@if@translation{#1}{#2}
+ {\@trnslt@declare@translation{#1}{#2}{#3}}
+ {\@trnslt@err@not@defined{#1}{#2}}}
+
+% --------------------------------------------------------------------------
+% now let's go through some trouble to check if a translation exists:
+\def\@trnslt@if@word#1#2#3{%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \@firstofone
+ {\expandafter\expandafter\expandafter}%
+ \ifcsname @trnslt@word@#2@#1{#3}\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}%
+
+\def\@trnslt@if@translation#1#2{%
+ \@trnslt@if@word\@trnslt@language{#1}{#2}
+ {\expandafter\@firstoftwo}
+ {%
+ \@trnslt@if@dialect{#2}
+ {%
+ \@trnslt@if@word\@trnslt@dialect{#1}{#2}
+ {\expandafter\@firstoftwo}
+ {%
+ \@trnslt@if@word\@trnslt@dialect@of{#1}{#2}
+ {\expandafter\@firstoftwo}
+ {\expandafter\@secondoftwo}%
+ }
+ }
+ {\expandafter\@secondoftwo}%
+ }%
+}
+
+% --------------------------------------------------------------------------
+% \GetTranslationFor and \GetTranslation
+% these need to be expandable!
+% #1: language
+% #2: word
+\newcommand*\GetTranslationFor[2]{%
+ \@trnslt@checkandget@translation@for{#2}{#1}}
+
+\newcommand*\GetTranslation[1]{%
+ \@trnslt@checkandget@translation@for{#1}{\@trnslt@current@language}}
+
+% unexpandable version of the commands that raise a warning if no translation
+% is available:
+\newcommand*\GetTranslationForWarn[2]{%
+ \@trnslt@getandwarn@translation@for{#2}{#1}}
+
+\newcommand*\GetTranslationWarn[1]{%
+ \@trnslt@getandwarn@translation@for{#1}{\@trnslt@current@language}}
+
+% #1: word #2: language
+\def\@trnslt@get@translation@for#1#2{%
+ \@trnslt@if@dialect{#2}
+ {%
+ \ifcsdef{@trnslt@word@#1@\@trnslt@dialect{#2}}
+ {\csuse{@trnslt@word@#1@\@trnslt@dialect{#2}}}
+ {\csuse{@trnslt@word@#1@\@trnslt@dialect@of{#2}}}%
+ }
+ {\csuse{@trnslt@word@#1@\@trnslt@language{#2}}}%
+}
+
+\def\@trnslt@checkandget@translation@for#1#2{%
+ \@trnslt@if@translation{#1}{#2}
+ {\@trnslt@get@translation@for{#1}{#2}}
+ {%
+ \@trnslt@if@translation{#1}{fallback}
+ {\csuse{@trnslt@word@#1@fallback}}
+ {\csuse{@trnslt@word@#1@literal}}%
+ }%
+}
+
+% this is not expandable!
+\protected\def\@trnslt@getandwarn@translation@for#1#2{%
+ \@trnslt@if@translation{#1}{#2}
+ {\@trnslt@get@translation@for{#1}{#2}}
+ {%
+ \@trnslt@warning{Translation for `#1' in #2 unknown. You may try to use
+ \string\DeclareTranslation{#2}{#1}{ ... } in your preamble.}%
+ \@trnslt@if@translation{#1}{fallback}
+ {%
+ \@trnslt@info{Using fallback translation for `#1'}%
+ \csuse{@trnslt@word@#1@fallback}
+ }
+ {\csuse{@trnslt@word@#1@literal}}%
+ }%
+}
+
+% --------------------------------------------------------------------------
+% \SaveTranslationFor and \SaveTranslation
+\newrobustcmd*\SaveTranslationFor[3]{%
+ \@trnslt@save@translation@for{#1}{#3}{#2}}
+
+\newrobustcmd*\SaveTranslation[2]{%
+ \@trnslt@save@translation@for{#1}{#2}{\@trnslt@current@language}}
+
+\def\@trnslt@save@translation@for#1#2#3{%
+ \edef#1{%
+ \@trnslt@if@translation{#2}{#3}
+ {\csuse{@trnslt@word@#2@\@trnslt@language{#3}}}
+ {}%
+ }}
+
+% --------------------------------------------------------------------------
+% \LoadDictionary and \LoadDictionaryFor
+\newrobustcmd*\LoadDictionary[1]{%
+ \@trnslt@load@dictionary@for{#1}{\@trnslt@current@language}}
+\@onlypreamble\LoadDictionary
+
+\newrobustcmd*\LoadDictionaryFor[2]{%
+ \@trnslt@load@dictionary@for{#2}{#1}}
+\@onlypreamble\LoadDictionaryFor
+
+% #1: name
+% #2: lang
+\def\@trnslt@load@dictionary@for#1#2{%
+ \AtBeginDocument{%
+ \InputIfFileExists{#1-\@trnslt@language{#2}.trsl}
+ {\@trnslt@check@dictionary{#1}{#2}}
+ {\@trnslt@warning{dictionary file `#1-\@trnslt@language{#2}.trsl' not
+ found.}}%
+ }}
+
+\def\@trnslt@check@dictionary#1#2{%
+ \AfterFile{#1-\@trnslt@language{#2}.trsl}
+ {%
+ \ifcsdef{@trnslt@dictionary@#1@\@trnslt@language{#2}}
+ {\@trnslt@info{loading dictionary `#1' for `#2'.}}
+ {%
+ \@trnslt@warning{file `#1-\@trnslt@language{#2}.trsl' does not
+ appear to be a dictionary}%
+ }%
+ }%
+}
+
+\def\@trnslt@load@dictionary@silent@for#1#2{%
+ \AtBeginDocument{\InputIfFileExists{#1-\@trnslt@language{#2}.trsl}{}{}}}
+
+\newrobustcmd*\ProvideDictionaryFor[2]{%
+ \@trnslt@provide@dictionary@for{#1}{#2}}
+\@onlypreamble\ProvideDictionaryFor
+
+\def\@trnslt@provide@dictionary@for#1#2{%
+ \def\@trnslt@dictionary@name{#2}%
+ \edef\@trnslt@dictionary@lang{\@trnslt@language{#1}}%
+ % this macro can be used to check if we have a dictionary and will also be
+ % used as a list for the dictionary entries:
+ \csdef{@trnslt@dictionary@\@trnslt@dictionary@name @\@trnslt@dictionary@lang}{}%
+ \@ifnextchar[
+ {\@trnslt@provide@dictionary@version}
+ {
+ \ProvidesFile
+ {#2-\@trnslt@dictionary@lang.trsl}%
+ [(\@trnslt@dictionary@lang\space translation file `#2')]
+ }%
+}
+
+\def\@trnslt@provide@dictionary@version[#1]{%
+ \ProvidesFile
+ {\@trnslt@dictionary@name-\@trnslt@dictionary@lang.trsl}%
+ [(\@trnslt@dictionary@lang\space translation file `\@trnslt@dictionary@name') #1]}
+
+% \@trnslt@dictionary@language
+\newrobustcmd*\DeclareDictTranslation[2]{%
+ \listcsadd
+ {@trnslt@dictionary@\@trnslt@dictionary@name @\@trnslt@dictionary@lang}
+ {{#1}{#2}}%
+ \@trnslt@declare@translation{#1}{\@trnslt@dictionary@lang}{#2}%
+}
+\@onlypreamble\DeclareDictTranslation
+
+% \PrintDictionaryFor
+% #1: lang
+% #2: name
+% #3: pre
+% #4: mid
+% #5: post
+\newcommand*\PrintDictionaryFor[5]{%
+ \@trnslt@print@dictionary@for{#1}{#2}{#3}{#4}{#5}}
+
+% #1: lang
+% #2: name
+% #3: pre
+% #4: mid
+% #5: post
+\def\@trnslt@print@dictionary@for#1#2#3#4#5{%
+ \forlistcsloop
+ {\@trnslt@print@dictionary@entry{#3}{#4}{#5}}
+ {@trnslt@dictionary@#2@\@trnslt@language{#1}}%
+}
+
+% #1: pre
+% #2: mid
+% #3: post
+% #4: {key}{translation}
+\def\@trnslt@print@dictionary@entry#1#2#3#4{%
+ \@trnslt@print@dictionary@entry@aux{#1}{#2}{#3}#4}
+
+% #1: pre
+% #2: mid
+% #3: post
+% #4: key
+% #5: translation
+\def\@trnslt@print@dictionary@entry@aux#1#2#3#4#5{#1#4#2#5#3}
+
+% --------------------------------------------------------------------------
+% predefined languages
+\DeclareLanguage{albanian}
+\DeclareLanguage{bulgarian}
+\DeclareLanguage{catalan}
+\DeclareLanguage{croatian}
+\DeclareLanguage{czech}
+\DeclareLanguage{danish}
+\DeclareLanguage{dutch}
+\DeclareLanguage{english}
+\DeclareLanguage{finnish}
+\DeclareLanguage{french}
+\DeclareLanguage{german}
+\DeclareLanguage{greek}
+\DeclareLanguage{hebrew}
+\DeclareLanguage{hungarian}
+\DeclareLanguage{icelandic}
+\DeclareLanguage{italian}
+\DeclareLanguage{norwegian}
+\DeclareLanguage{polish}
+\DeclareLanguage{portuges}
+\DeclareLanguage{romanian}
+\DeclareLanguage{russian}
+\DeclareLanguage{serbocroatian}
+\DeclareLanguage{slovak}
+\DeclareLanguage{slovenian}
+\DeclareLanguage{spanish}
+\DeclareLanguage{swedish}
+\DeclareLanguage{turkish}
+\DeclareLanguage{ukrainian}
+
+% --------------------------------------------------------------------------
+% aliases and dialects:
+\DeclareLanguageAlias {Albanian}{albanian}
+\DeclareLanguageAlias {Bulgarian}{bulgarian}
+\DeclareLanguageAlias {Catalan}{catalan}
+\DeclareLanguageAlias {Croatian}{croatian}
+\DeclareLanguageAlias {Czech}{czech}
+\DeclareLanguageAlias {Danish}{danish}
+\DeclareLanguageAlias {Dutch}{dutch}
+\DeclareLanguageAlias {Finnish}{finnish}
+\DeclareLanguageAlias {francais}{french}
+\DeclareLanguageAlias {Francais}{francais}
+\DeclareLanguageDialect{canadien}{french}
+\DeclareLanguageAlias {Canadien}{canadien}
+\DeclareLanguageAlias {French}{french}
+\DeclareLanguageDialect{american}{english}
+\DeclareLanguageAlias {American}{american}
+\DeclareLanguageDialect{australian}{english}
+\DeclareLanguageAlias {Australian}{australian}
+\DeclareLanguageDialect{british}{english}
+\DeclareLanguageAlias {British}{british}
+\DeclareLanguageDialect{canadian}{english}
+\DeclareLanguageAlias {Canadian}{canadian}
+\DeclareLanguageAlias {English}{english}
+\DeclareLanguageAlias {UKenglish}{british}
+\DeclareLanguageAlias {USenglish}{american}
+\DeclareLanguageDialect{austrian}{german}
+\DeclareLanguageAlias {Austrian}{austrian}
+\DeclareLanguageAlias {German}{german}
+\DeclareLanguageAlias {germanb}{german}
+\DeclareLanguageDialect{naustrian}{austrian}
+\DeclareLanguageAlias {ngerman}{german}
+\DeclareLanguageAlias {Greek}{greek}
+\DeclareLanguageAlias {polutonikogreek}{greek}
+\DeclareLanguageAlias {Hebrew}{hebrew}
+\DeclareLanguageAlias {Hungarian}{hungarian}
+\DeclareLanguageDialect{magyar}{hungarian}
+\DeclareLanguageAlias {Magyar}{magyar}
+\DeclareLanguageAlias {Icelandic}{icelandic}
+\DeclareLanguageAlias {Italian}{italian}
+\DeclareLanguageAlias {norsk}{norwegian}
+\DeclareLanguageAlias {Norsk}{norsk}
+\DeclareLanguageAlias {Norwegian}{norwegian}
+\DeclareLanguageAlias {nynorsk}{norwegian}
+\DeclareLanguageAlias {Nynorsk}{nynorsk}
+\DeclareLanguageAlias {Polish}{polish}
+\DeclareLanguageDialect{brazil}{portuges}
+\DeclareLanguageAlias {Brazil}{brazil}
+\DeclareLanguageAlias {brazilian}{brazil}
+\DeclareLanguageAlias {Brazilian}{brazilian}
+\DeclareLanguageAlias {Portuges}{portuges}
+\DeclareLanguageAlias {portuguese}{portuges}
+\DeclareLanguageAlias {Portuguese}{portuguese}
+\DeclareLanguageAlias {Romanian}{romanian}
+\DeclareLanguageAlias {Russian}{russian}
+\DeclareLanguageAlias {Serbocroatian}{serbocroatian}
+\DeclareLanguageAlias {Slovak}{slovak}
+\DeclareLanguageAlias {Slovenian}{slovenian}
+\DeclareLanguageAlias {Spanish}{spanish}
+\DeclareLanguageAlias {Swedish}{swedish}
+\DeclareLanguageDialect{swissgerman}{german}
+% this maybe should be a language of it's own:
+\DeclareLanguageAlias {Swiss}{swissgerman}
+\DeclareLanguageAlias {Swissgerman}{swissgerman}
+\DeclareLanguageAlias {Turkish}{turkish}
+\DeclareLanguageAlias {Ukrainian}{ukrainian}
+
+% --------------------------------------------------------------------------
+% load basic dictionary if available
+\AtBeginDocument{%
+ \@trnslt@load@dictionary@silent@for
+ {translations-basic-dictionary}
+ {\@trnslt@current@language}%
+}
+
+\endinput
+
+% --------------------------------------------------------------------------
+% HISTORY:
+2012/09/30 v0.2beta - first version (as part of the `exsheets' bundle)
+2012/10/05 v0.2 - \LoadDictionary and \LoadDictionaryFor added and loads of
+ languages defined.
+2013/03/10 v0.8 - basic dictionaries for English, German, French and Spanish
+ - new command \DeclareDictTranslation
+2013/04/04 v0.8a - bug fix in \DeclareDictTranslation
+2013/04/07 v0.9 - slightly improved messages
+2013/04/08 v0.9a - changed fallback warning into info
+ - synchronized version number with `exsheets' until now but
+ won't any more
+2013/06/22 v0.9b - added Swiss
+2013/06/28 v0.10 - declaring aliases of dialects now works as expected
+ - declarings dialects of an alias now correctly declares
+ the dialect to the correct base language
+ - corrected a few erroneous language declarations
+2013/07/12 v0.10a - \GetTranslation gets two-folded fallback: use
+ fallback-translation if no translation for the current
+ language has been defined; use literal string if /no/
+ language is used - this should never happen but /will/
+ happen if neither `babel' nor `polyglossia' have been
+ loaded, i.e., no language has been chosen /and/ the
+ package writer did not provide an English translation
+2013/07/16 v1.0 - removed from `exsheets' bundle - `translations' should
+ be a package of it's own
+ - load basic dictionary automatically if available
+ - rudimentary check in \LoadDictionary if loaded file is a
+ dictionary
+ - new command \PrintDictionaryFor
+ - redefined conditionals; they still seemed to make
+ trouble in some cases
+
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index a985ede1803..65f8d4275e1 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -471,6 +471,7 @@ my @TLP_working = qw(
translation-ecv-de translation-enumitem-de translation-europecv-de
translation-filecontents-de translation-moreverb-de
translation-natbib-fr translation-tabbing-fr
+ translations
tree-dvips treetex trfsigns trimspaces trivfloat trsym truncate
tsemlines
tucv tufte-latex tugboat tugboat-plain tui turkmen turnstile turnthepage
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 75e80434c4e..04798e72c5a 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -995,6 +995,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`);
'translation-europecv-de', "&MAKEnosymlinks",
'translation-footmisc-de', "die 'skipping, nocommercial'",
'translation-pst-jtree-de', "die 'skipping, nocommercial'",
+ 'translations',"&MAKEflatten",
'translator', "die 'skipping, now part of beamer'",
# 'tree-dvips', "die 'skipping, noinfo license, latex 2.09'",
'treesvr', "die 'skipping, await request, 1995'",
@@ -1551,6 +1552,7 @@ $standardtex='\.(.bx|cfg|sty|clo|ldf|cls|def|fd|cmap|4ht)$';
'tkz-orm', 'tkz.*\.sty', # no pgfmanual.sty
'tlc2', 'NULL', # doc package
'tools', '\.cfg|\.sty|\.clo|\.cls|\.def|\.fd$|.?\.tex|^\.tex$',
+ 'translations','\.trsl|' . $standardtex,
'translator', '\.dict|translator-language-mappings.tex|' . $standardtex,
'translation-array-fr', 'NULL', # doc
'translation-europecv-de', 'NULL', # doc
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index 79f0a33f0c8..31667219cd8 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -828,6 +828,7 @@ depend toolbox
depend topfloat
depend totcount
depend totpages
+depend translations
depend trfsigns
depend trimspaces
depend trsym
diff --git a/Master/tlpkg/tlpsrc/translations.tlpsrc b/Master/tlpkg/tlpsrc/translations.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/translations.tlpsrc