1 | \def\translatorversion{0.10} |
---|
2 | |
---|
3 | \ProvidesPackage{translator}[2005/03/25 ver \translatorversion] |
---|
4 | |
---|
5 | % Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. |
---|
6 | % |
---|
7 | % This program can be redistributed and/or modified under the terms |
---|
8 | % of the LaTeX Project Public License Distributed from CTAN |
---|
9 | % archives in directory macros/latex/base/lppl.txt. |
---|
10 | |
---|
11 | \RequirePackage{keyval} |
---|
12 | |
---|
13 | \def\trans@languages{English} |
---|
14 | |
---|
15 | \define@key{translator}{babel name}{\def\trans@alias{#1}} |
---|
16 | |
---|
17 | \newcommand\uselanguage[2][]{% |
---|
18 | \g@addto@macro\trans@languages{,#2}% |
---|
19 | \let\trans@alias\@empty% |
---|
20 | \setkeys{translator}{#1}% |
---|
21 | \ifx\trans@alias\@empty% |
---|
22 | \else% |
---|
23 | \expandafter\def\csname tr@ml@\trans@alias\endcsname{#2}% |
---|
24 | \fi% |
---|
25 | } |
---|
26 | |
---|
27 | \input{utiles/translator-language-mappings} |
---|
28 | |
---|
29 | \define@key{translator}{to}{\def\trans@to{#1}} |
---|
30 | |
---|
31 | \newcommand\iftranslationdefined[4][]{% |
---|
32 | \def\trans@to{\trans@defaultto}% |
---|
33 | \setkeys{translator}{#1}% |
---|
34 | \expandafter\ifx\csname tr@@@\trans@to @#2\endcsname\@undefined% |
---|
35 | \let\trans@next=\@firstoftwo% |
---|
36 | \else% |
---|
37 | \let\trans@next=\@secondoftwo% |
---|
38 | \fi% |
---|
39 | \trans@next{#3}{#4}% |
---|
40 | } |
---|
41 | |
---|
42 | \newcommand\deftranslation[3][]{% |
---|
43 | \def\trans@to{\trans@defaultto}% |
---|
44 | \setkeys{translator}{#1}% |
---|
45 | \expandafter\def\csname tr@@@\trans@to @#2\endcsname{#3}% |
---|
46 | } |
---|
47 | |
---|
48 | \newcommand\newtranslation[3][]{% |
---|
49 | \iftranslationdefined[#1]{#2}{% |
---|
50 | \PackageError{translator}{Translation of ``#2'' already defined.}{}% |
---|
51 | }% |
---|
52 | {% |
---|
53 | \deftranslation[#1]{#2}{#3}% |
---|
54 | }% |
---|
55 | } |
---|
56 | |
---|
57 | \newcommand\renewtranslation[3][]{% |
---|
58 | \iftranslationdefined[#1]{#2}{% |
---|
59 | \deftranslation[#1]{#2}{#3}% |
---|
60 | }% |
---|
61 | {% |
---|
62 | \PackageError{translator}{Translation of ``#2'' not defined.}{}% |
---|
63 | }% |
---|
64 | } |
---|
65 | |
---|
66 | \newcommand\providetranslation[3][]{% |
---|
67 | \iftranslationdefined[#1]{#2}{% |
---|
68 | }% |
---|
69 | {% |
---|
70 | \deftranslation[#1]{#2}{#3}% |
---|
71 | }% |
---|
72 | } |
---|
73 | |
---|
74 | \DeclareRobustCommand\translate[2][]{% |
---|
75 | \edef\trans@to{\languagename,English}% |
---|
76 | \setkeys{translator}{#1}% |
---|
77 | \let\trans@trans\@empty% |
---|
78 | \let\trans@list\@empty% |
---|
79 | \@for\trans@lang:=\trans@to\do% |
---|
80 | {% |
---|
81 | \expandafter\ifx\csname tr@ml@\trans@lang\endcsname\relax% |
---|
82 | \else% |
---|
83 | \expandafter\let\expandafter\trans@lang\expandafter=\csname tr@ml@\trans@lang\endcsname% |
---|
84 | \fi% |
---|
85 | \edef\trans@list{\trans@list,\trans@lang}% |
---|
86 | }% |
---|
87 | \@for\trans@lang:=\trans@list\do% |
---|
88 | {% |
---|
89 | \expandafter\ifx\csname tr@@@\trans@lang @#2\endcsname\relax% |
---|
90 | \else% |
---|
91 | \ifx\trans@trans\@empty% |
---|
92 | \expandafter\expandafter\expandafter\def |
---|
93 | \expandafter\expandafter\expandafter\trans@trans |
---|
94 | \expandafter\expandafter\expandafter{\csname tr@@@\trans@lang @#2\endcsname} |
---|
95 | \fi% |
---|
96 | \fi% |
---|
97 | }% |
---|
98 | \ifx\trans@trans\@empty% |
---|
99 | \def\trans@trans{#2}% |
---|
100 | \fi% |
---|
101 | \trans@trans% |
---|
102 | } |
---|
103 | |
---|
104 | |
---|
105 | |
---|
106 | \def\trans@dictionaries{} |
---|
107 | |
---|
108 | \newcommand\usedictionary[1]{% |
---|
109 | \g@addto@macro\trans@dictionaries{\usedictionary{#1}}% |
---|
110 | } |
---|
111 | |
---|
112 | \def\trans@defaultto{English} |
---|
113 | |
---|
114 | \AtBeginDocument{% |
---|
115 | \renewcommand\usedictionary[1]{% |
---|
116 | \@for\trans@lang:=\trans@languages\do{% |
---|
117 | \ifx\trans@lang\@empty% |
---|
118 | \else% |
---|
119 | \expandafter\ifx\csname ver@#1-\trans@lang.dict\endcsname\relax% |
---|
120 | \edef\trans@temp{% |
---|
121 | \def\noexpand\trans@defaultto{\trans@lang}% |
---|
122 | \noexpand\InputIfFileExists{#1-\trans@lang.dict}{}{}% |
---|
123 | \def\noexpand\trans@defaultto{\trans@defaultto}% |
---|
124 | }% |
---|
125 | \trans@temp% |
---|
126 | \fi% |
---|
127 | \fi% |
---|
128 | }}% |
---|
129 | \trans@dictionaries% |
---|
130 | } |
---|
131 | |
---|
132 | \def\ProvidesDictionary#1#2{% |
---|
133 | \begingroup |
---|
134 | \catcode`\ 10 % |
---|
135 | \@makeother\/% |
---|
136 | \@ifnextchar[%] |
---|
137 | {\@providesdictionary{#1}{#2}}{\@providesdictionary{#1}{#2}[]}% |
---|
138 | } |
---|
139 | \def\@providesdictionary#1#2[#3]{% |
---|
140 | \wlog{Dictionary: #1, Language: #2 #3}% |
---|
141 | \expandafter\xdef\csname ver@#1-#2.dict\endcsname{#3}% |
---|
142 | \endgroup% |
---|
143 | } |
---|
144 | |
---|
145 | |
---|
146 | \endinput |
---|