summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/translator/translator.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-02-23 00:27:02 +0000
committerKarl Berry <karl@freefriends.org>2008-02-23 00:27:02 +0000
commit6f5a4edf390b6e05291d7a4b816782b14122a205 (patch)
tree6e6095f00056f877d12b6a8d815f15226a339173 /Master/texmf-dist/tex/latex/translator/translator.sty
parent91ad785d9a7a438dc37b93d18c276dbcf0cc7373 (diff)
new package translator (22feb08)
git-svn-id: svn://tug.org/texlive/trunk@6740 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/translator/translator.sty')
-rw-r--r--Master/texmf-dist/tex/latex/translator/translator.sty157
1 files changed, 157 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/translator/translator.sty b/Master/texmf-dist/tex/latex/translator/translator.sty
new file mode 100644
index 00000000000..a911f429b9b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/translator/translator.sty
@@ -0,0 +1,157 @@
+% Copyright 2007 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the documentation file for more details.
+
+\def\translatorversion{1.00}
+
+\ProvidesPackage{translator}[2007/03/11 ver \translatorversion]
+
+\RequirePackage{keyval}
+
+\def\trans@languages{English}
+
+\newcommand\uselanguage[2][]{%
+ \g@addto@macro\trans@languages{,#2}%
+}
+
+\newcommand\languagealias[2]{%
+ \expandafter\def\csname tr@ml@#1\endcsname{#2}%
+}
+
+\input{translator-language-mappings}
+
+\newcommand\languagepath[1]{\def\trans@languagepath{#1}}
+\def\trans@languagepath{\languagename,English}
+
+\define@key{translator}{to}{\def\trans@to{#1}}
+
+\newcommand\iftranslationdefined[4][]{%
+ \def\trans@to{\trans@defaultto}%
+ \setkeys{translator}{#1}%
+ \expandafter\ifx\csname tr@@@\trans@to @#2\endcsname\@undefined%
+ \let\trans@next=\@firstoftwo%
+ \else%
+ \let\trans@next=\@secondoftwo%
+ \fi%
+ \trans@next{#3}{#4}%
+}
+
+\newcommand\deftranslation[3][]{%
+ \def\trans@to{\trans@defaultto}%
+ \setkeys{translator}{#1}%
+ \expandafter\def\csname tr@@@\trans@to @#2\endcsname{#3}%
+}
+
+\newcommand\newtranslation[3][]{%
+ \iftranslationdefined[#1]{#2}{%
+ \PackageError{translator}{Translation of ``#2'' already defined.}{}%
+ }%
+ {%
+ \deftranslation[#1]{#2}{#3}%
+ }%
+}
+
+\newcommand\renewtranslation[3][]{%
+ \iftranslationdefined[#1]{#2}{%
+ \deftranslation[#1]{#2}{#3}%
+ }%
+ {%
+ \PackageError{translator}{Translation of ``#2'' not defined.}{}%
+ }%
+}
+
+\newcommand\providetranslation[3][]{%
+ \iftranslationdefined[#1]{#2}{%
+ }%
+ {%
+ \deftranslation[#1]{#2}{#3}%
+ }%
+}
+
+
+
+\newcommand\translatelet[3][]{%
+ \edef\trans@to{\trans@languagepath}%
+ \setkeys{translator}{#1}%
+ \let\trans@trans\@empty%
+ \let\trans@list\@empty%
+ \@for\trans@lang:=\trans@to\do%
+ {%
+ \expandafter\ifx\csname tr@ml@\trans@lang\endcsname\relax%
+ \else%
+ \expandafter\let\expandafter\trans@lang\expandafter=\csname tr@ml@\trans@lang\endcsname%
+ \fi%
+ \edef\trans@list{\trans@list,\trans@lang}%
+ }%
+ \@for\trans@lang:=\trans@list\do%
+ {%
+ \expandafter\ifx\csname tr@@@\trans@lang @#3\endcsname\relax%
+ \else%
+ \ifx\trans@trans\@empty%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\trans@trans
+ \expandafter\expandafter\expandafter{\csname tr@@@\trans@lang @#3\endcsname}%
+ \fi%
+ \fi%
+ }%
+ \ifx\trans@trans\@empty%
+ \def\trans@trans{#3}%
+ \fi%
+ \let#2=\trans@trans%
+}
+
+
+
+\DeclareRobustCommand\translate[2][]{%
+ \translatelet[#1]\trans@temp{#2}%
+ \trans@temp%
+}
+
+
+
+\def\trans@dictionaries{}
+
+\newcommand\usedictionary[1]{%
+ \g@addto@macro\trans@dictionaries{\usedictionary{#1}}%
+}
+
+\def\trans@defaultto{English}
+
+\AtBeginDocument{%
+ \renewcommand\usedictionary[1]{%
+ \@for\trans@lang:=\trans@languages\do{%
+ \ifx\trans@lang\@empty%
+ \else%
+ \expandafter\ifx\csname ver@#1-\trans@lang.dict\endcsname\relax%
+ \edef\trans@temp{%
+ \def\noexpand\trans@defaultto{\trans@lang}%
+ \noexpand\InputIfFileExists{#1-\trans@lang.dict}{}{}%
+ \def\noexpand\trans@defaultto{\trans@defaultto}%
+ }%
+ \trans@temp%
+ \fi%
+ \fi%
+ }}%
+ \trans@dictionaries%
+}
+
+\def\ProvidesDictionary#1#2{%
+ \begingroup
+ \catcode`\ 10 %
+ \@makeother\/%
+ \@ifnextchar[%]
+ {\@providesdictionary{#1}{#2}}{\@providesdictionary{#1}{#2}[]}%
+ }
+\def\@providesdictionary#1#2[#3]{%
+ \wlog{Dictionary: #1, Language: #2 #3}%
+ \expandafter\xdef\csname ver@#1-#2.dict\endcsname{#3}%
+ \endgroup%
+}
+
+
+\endinput