% --------------------------------------------------------------------------
%
% the CHEMMACROS package -- module: `lang'
%
% --------------------------------------------------------------------------
% Clemens Niederberger
% --------------------------------------------------------------------------
% https://github.org/cgnieder/chemmacros/
% contact@mychemistry.eu
% --------------------------------------------------------------------------
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
% Copyright 2011-2015 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.
% --------------------------------------------------------------------------
\ChemModule{lang}{2015/07/21 language settings for chemmacros}

\RequirePackage{translations}

\msg_new:nnn {chemmacros} {language-not-defined}
  {
    You~ chose~ the~ language~ `#1'~ which~ is~ not~ defined~ by~ chemmacros.~
    `english'~ is~ used~ instead.~ If~ you~ just~ mistyped~ try~ again!~
    Otherwise~ contact~ the~ author~ and~ he'll~ probably~ add~ your~ language.
  }

% --------------------------------------------------------------------------
% language settings:
\bool_new:N      \l__chemmacros_language_auto_bool
\bool_set_true:N \l__chemmacros_language_auto_bool
% this token list will hold the chosen language for chemmacros; since the
% language is either chosen automatically or by option it is only available at
% begin document
\tl_new:N        \l_chemmacros_language_tl
\tl_set:Nn       \l_chemmacros_language_tl { english }
\tl_new:N        \l__chemmacros_current_language_tl

% translate the key #1
\cs_new:Npn \chemmacros_translate:n #1
  {
    \bool_if:NTF \l__chemmacros_language_auto_bool
      { \GetTranslation{#1} }
      { \GetTranslationFor{\l_chemmacros_language_tl}{#1} }
  }

\DeclareExpandableDocumentCommand \ChemTranslate {m}
  { \chemmacros_translate:n {#1} }

\AtBeginDocument{
  \bool_if:NTF \l__chemmacros_language_auto_bool
    {
      \tl_set:Nx \l_chemmacros_language_tl
        { \@trnslt@language{\@trnslt@current@language} }
    }
    {
      \tl_set_eq:NN
        \l_chemmacros_language_tl
        \l__chemmacros_current_language_tl
    }
}

\keys_define:nn {chemmacros}
  {
    language .value_required:n = true ,
    language .code:n =
      \tl_if_eq:nnTF { #1 } { auto }
        { \bool_set_true:N \l__chemmacros_language_auto_bool }
        {
          \bool_set_false:N \l__chemmacros_language_auto_bool
          \tl_set:Nn \l__chemmacros_current_language_tl { #1 }
        } ,
    % do we still need these?
    german   .meta:n = { language = german } ,
    german   .meta:n = { language = ngerman } ,
    language .initial:n = auto
  }

% --------------------------------------------------------------------------
\DeclareTranslationFallback  {scheme-name} {Scheme}
\DeclareTranslation {German} {scheme-name} {Schema}

\DeclareTranslationFallback  {scheme-list} {List~ of~ Schemes}
\DeclareTranslation {German} {scheme-list} {Verzeichnis~ der~ Schemata}

% --------------------------------------------------------------------------
\DeclareTranslationFallback {K-acid}  {\mathrm{a}}
\DeclareTranslation{German} {K-acid}  {\mathrm{s}}
\DeclareTranslation{Dutch}  {K-acid}  {\mathrm{z}}

\DeclareTranslationFallback {K-base}  {\mathrm{b}}

\DeclareTranslationFallback {K-water} {\mathrm{w}}

% --------------------------------------------------------------------------
\DeclareTranslation{German}{phase-sld}{ f }
\DeclareTranslation{German}{phase-lqd}{ f\/l }

% --------------------------------------------------------------------------
\DeclareTranslationFallback  {list-of-reactions} { List~ of~ Reactions }
\DeclareTranslation{English} {list-of-reactions} { List~ of~ Reactions }
\DeclareTranslation{German}  {list-of-reactions} { Reaktionsverzeichnis }
\DeclareTranslation{Italian} {list-of-reactions} { Elenco~ delle~ reazioni }
\DeclareTranslation{French}  {list-of-reactions} { Table~ des~ r\'eactions }
\DeclareTranslation{Dutch}   {list-of-reactions} { Lijst~ van~ reacties }
%
\DeclareTranslationFallback  {reaction} { Reaction }
\DeclareTranslation{English} {reaction} { Reaction }
\DeclareTranslation{German}  {reaction} { Reaktion }
\DeclareTranslation{Italian} {reaction} { Reazione }
\DeclareTranslation{French}  {reaction} { R\'eaction }
\DeclareTranslation{Dutch}   {reaction} { Reactie }
% --------------------------------------------------------------------------

