diff options
author | Karl Berry <karl@freefriends.org> | 2013-06-28 21:55:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-06-28 21:55:58 +0000 |
commit | 864a1bbab21506fbb07551883dfca2ad457f2514 (patch) | |
tree | 630558a1f9e533f65ab5339e6d6a9748bff2c5b0 /Master/texmf-dist/tex/latex/exsheets/translations.sty | |
parent | 35f4733179fc116420810062bf3bd6891f86b5d9 (diff) |
exsheets (28jun13)
git-svn-id: svn://tug.org/texlive/trunk@31008 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/exsheets/translations.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/exsheets/translations.sty | 208 |
1 files changed, 150 insertions, 58 deletions
diff --git a/Master/texmf-dist/tex/latex/exsheets/translations.sty b/Master/texmf-dist/tex/latex/exsheets/translations.sty index 1f46c1ca8ce..9f751632426 100644 --- a/Master/texmf-dist/tex/latex/exsheets/translations.sty +++ b/Master/texmf-dist/tex/latex/exsheets/translations.sty @@ -28,8 +28,8 @@ % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -\def\@trnslt@date{2013/04/08} -\def\@trnslt@version{v0.9a} +\def\@trnslt@date{2013/06/28} +\def\@trnslt@version{v0.10} \ProvidesPackage{translations}[\@trnslt@date\space \@trnslt@version\space a simple translator] \RequirePackage{etoolbox} @@ -37,7 +37,7 @@ % -------------------------------------------------------------------------- % message handling \def\@trnslt@error@message{% - For details have a look at the `exsheets' manual.} + For details have a look at the `translations' manual.} \def\@trnslt@create@message#1{% \ifstrequal{#1}{Error} @@ -80,6 +80,14 @@ {\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{} +\def\@trnslt@aliases@pair{} +\def\@trnslt@aliases@single{} +\def\@trnslt@dialects@pair{} +\def\@trnslt@dialects@single{} + % -------------------------------------------------------------------------- % \DeclareLanguage and \DeclareLanguageAlias % #1: language @@ -88,51 +96,102 @@ \@onlypreamble\DeclareLanguage \def\@trnslt@declare@language#1{% - \csdef{@trnslt@language@#1}{#1}} + \@trnslt@if@language{#1} + {}{% + \csdef{@trnslt@language@#1}{#1}% + \listeadd\@trnslt@languages{#1}% + }% +} -% #1: alias +\def\@trnslt@language#1{% + \csuse{@trnslt@language@#1}} + +\def\@trnslt@if@language#1{% + \ifcsundef{@trnslt@language@#1} + {\expandafter\@secondoftwo} + {\expandafter\@firstoftwo}% +} + +% #1: dialect % #2: language -\newrobustcmd*\DeclareLanguageAlias[2]{% - \@trnslt@declare@languagealias{#1}{#2}} -\@onlypreamble\DeclareLanguageAlias +\newrobustcmd*\DeclareLanguageDialect[2]{% + \@trnslt@declare@languagedialect{#1}{#2}} +\@onlypreamble\DeclareLanguageDialect -\def\@trnslt@declare@languagealias#1#2{% - \ifcsdef{@trnslt@language@#2} +\def\@trnslt@declare@languagedialect#1#2{% + \@trnslt@if@language{#2} {}{% \@trnslt@warn@unknown@lang{#2}% \@trnslt@declare@language{#2}% }% - \lowercase{\@trnslt@if@dialect{#2}}{#2} - {% - \csletcs - {@trnslt@language@\@trnslt@language{#2}@dialect@#1} - {@trnslt@language@\@trnslt@language{#2}@dialect@#2}% + \@trnslt@if@dialect{#1} + {% => ist schon als dialect definiert => irgendwelche weiteren checks? } - {}% - \csletcs{@trnslt@language@#1}{@trnslt@language@#2}} + {% + \@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}}% + }% + }% +} -% #1: dialect +\def\@trnslt@dialect#1{% + \csuse{@trnslt@dialect@#1}} + +\def\@trnslt@dialect@of#1{% + \expandafter\expandafter\expandafter + \@trnslt@dialect@of@aux + \csname @trnslt@dialect@#1\endcsname\@empty +} +\def\@trnslt@dialect@of@aux#1#2{\ifx\relax#1\@empty\else#1\fi} + +\def\@trnslt@if@dialect#1{% + \ifcsundef{@trnslt@dialect@#1} + {\expandafter\@secondoftwo} + {\expandafter\@firstoftwo}% +} + +% #1: alias % #2: language -\newrobustcmd*\DeclareLanguageDialect[2]{% - \@trnslt@declare@languagedialect{#1}{#2}} -\@onlypreamble\DeclareLanguageDialect +\newrobustcmd*\DeclareLanguageAlias[2]{% + \@trnslt@declare@languagealias{#1}{#2}} +\@onlypreamble\DeclareLanguageAlias -\def\@trnslt@declare@languagedialect#1#2{% - \ifcsdef{@trnslt@language@#2} +\def\@trnslt@declare@languagealias#1#2{% + \@trnslt@if@language{#2} {}{% \@trnslt@warn@unknown@lang{#2}% \@trnslt@declare@language{#2}% }% - \csdef{@trnslt@language@\@trnslt@language{#2}@dialect@#1}{}% - \csletcs{@trnslt@language@#1}{@trnslt@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@if@dialect#1#2{% - \ifcsdef{@trnslt@language@\@trnslt@language{#2}@dialect@#1} - {\expandafter\@firstoftwo} - {\expandafter\@secondoftwo}} +\def\@trnslt@alias#1{% + \csuse{@trnslt@alias@#1}} -\def\@trnslt@language#1{% - \csuse{@trnslt@language@#1}} +\def\@trnslt@if@alias#1{% + \ifcsundef{@trnslt@alias@#1} + {\expandafter\@secondoftwo} + {\expandafter\@firstoftwo}% +} % dummy language: `fallback': \DeclareLanguage{fallback} @@ -151,37 +210,56 @@ \@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{% - \ifcsdef{@trnslt@language@#2} + \@trnslt@if@language{#2} {% + % save the <word> as <word>: \csdef{@trnslt@word@#1@literal}{#1}% - \lowercase{\@trnslt@if@dialect{#2}}{#2} - {\csdef{@trnslt@word@#1@#2}{#3}} + % check if the language is a dialect: + \@trnslt@if@dialect{#2} + {\csdef{@trnslt@word@#1@\@trnslt@dialect{#2}}{#3}} {}% - \ifcsdef{@trnslt@word@#1@\@trnslt@language{#2}} + % check if translation already exists: + \@trnslt@if@translation{#1}{#2} {} {\csdef{@trnslt@word@#1@\@trnslt@language{#2}}{#3}}% } - {\@trnslt@err@unknown@lang{#2}}} + {\@trnslt@err@unknown@lang{#2}}% +} \def\@trnslt@if@translation#1#2{% - \ifcsdef{@trnslt@word@#1@\@trnslt@language{#2}} - {\expandafter\@firstoftwo} - {\expandafter\@secondoftwo}} - -\newrobustcmd*\NewTranslation[3]{% - \@trnslt@new@translation{#2}{#1}{#3}} -\@onlypreamble\NewTranslation + \ifcsundef{@trnslt@word@#1@\@trnslt@language{#2}} + {% + \@trnslt@if@dialect{#2} + {% + \ifboolexpe{ + test {\ifcsundef{@trnslt@word@#1@\@trnslt@dialect{#2}}} or + test {\ifcsundef{@trnslt@word@#1@\@trnslt@dialect@of{#2}}} + } + {\expandafter\@firstoftwo} + {\expandafter\@secondoftwo}% + } + {\expandafter\@secondoftwo}% + } + {\expandafter\@firstoftwo}% +} \def\@trnslt@new@translation#1#2#3{% \@trnslt@if@translation{#1}{#2} {\@trnslt@err@already@defined{#1}{#2}} {\@trnslt@declare@translation{#1}{#2}{#3}}} -\newrobustcmd*\RenewTranslation[3]{% - \@trnslt@renew@translation{#2}{#1}{#3}} -\@onlypreamble\RenewTranslation - \def\@trnslt@renew@translation#1#2#3{% \@trnslt@if@translation{#1}{#2} {\@trnslt@declare@translation{#1}{#2}{#3}} @@ -200,16 +278,18 @@ % #1: word #2: language \def\@trnslt@get@translation@for#1#2{% - \@trnslt@if@translation{#1}{#2} + \@trnslt@if@dialect{#2} {% - \@trnslt@if@dialect{#2}{#2} - {% - \ifcsdef{@trnslt@word@#1@#2} - {\csuse{@trnslt@word@#1@#2}} - {\csuse{@trnslt@word@#1@\@trnslt@language{#2}}}% - } - {\csuse{@trnslt@word@#1@\@trnslt@language{#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@getandcheck@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.}% @@ -219,7 +299,8 @@ \csuse{@trnslt@word@#1@fallback} }% {\csuse{@trnslt@word@#1@literal}}% - }} + }% +} % -------------------------------------------------------------------------- % \SaveTranslationFor and \SaveTranslation @@ -329,8 +410,8 @@ \DeclareLanguageDialect{canadian}{english} \DeclareLanguageAlias {Canadian}{canadian} \DeclareLanguageAlias {English}{english} -\DeclareLanguageDialect{UKenglish}{english} -\DeclareLanguageDialect{USenglish}{english} +\DeclareLanguageAlias {UKenglish}{british} +\DeclareLanguageAlias {USenglish}{american} \DeclareLanguageDialect{austrian}{german} \DeclareLanguageAlias {Austrian}{austrian} \DeclareLanguageAlias {German}{german} @@ -365,6 +446,10 @@ \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} @@ -381,3 +466,10 @@ 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 langugae declarations + + |