source: presentations/branville2006/utiles/translator.sty @ 3

Last change on this file since 3 was 3, checked in by garonne, 18 years ago

premier jet

File size: 3.5 KB
Line 
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
Note: See TracBrowser for help on using the repository browser.