]> mj.ucw.cz Git - ucwmac.git/commitdiff
Added a simple localization mechanism
authorMartin Mares <mj@ucw.cz>
Tue, 5 Jun 2018 17:37:33 +0000 (19:37 +0200)
committerMartin Mares <mj@ucw.cz>
Tue, 5 Jun 2018 17:37:40 +0000 (19:37 +0200)
ucw-algo.tex
ucwmac.tex

index 961e319d000e03ccd4573cc2391961f60f688d70..6259fbce4f9265f535df63de52f1ebe360ab2d77 100644 (file)
 %      \algout output description
 %      \endalgo
 
-\def\localealgo{Algorithm}
-\def\localeproc{Procedure}
-\def\localeinput{Input}
-\def\localeoutput{Output}
+% Localized strings
+\localedef{en}{alg:alg}{Algorithm}
+\localedef{en}{alg:proc}{Procedure}
+\localedef{en}{alg:in}{Input}
+\localedef{en}{alg:out}{Output}
 
 \def\algoinit{
 \goodbreak
@@ -29,8 +30,8 @@
 \itemcount=0
 }
 \def\typedalgo#1#2{\algoinit {\bo #1\/} \alg{#2}}
-\def\algo#1{\typedalgo{\localealgo}{#1}}
-\def\proc#1{\typedalgo{\localeproc}{#1}}
+\def\algo#1{\typedalgo{\localestr{alg:alg}}{#1}}
+\def\proc#1{\typedalgo{\localestr{alg:proc}}{#1}}
 \def\headlessalgo{\algoinit}
 \def\endalgo{\goodbreak\endlist\endgroup}
 \let\endproc=\endalgo
@@ -48,9 +49,9 @@
 \def\algoitemh{\ifx\next:\let\next=\algohang\else\let\next=\algoitemgo\fi\next}
 \def\algohang:{\advance\hangindent by 2em \hskip 2em\futurelet\next\algoitemh}
 \optdef\algoitemgo{\ifx\addid\undefined\else\addid{item}{\the\itemcount}\fi}
-\def\algin{\par\nobreak{\it \localeinput:\/} }
-\def\algout{\par\nobreak\parindent=0pt{\it localeoutput:\/} }
-\def\alginbreak{\hfil\break\hphantom{\it \localeinput:\/} }
+\def\algin{\par\nobreak{\it \localestr{alg:in}:\/} }
+\def\algout{\par\nobreak\parindent=0pt{\it \localestr{alg:in}:\/} }
+\def\alginbreak{\hfil\break\hphantom{\it \localestr{alg:out}:\/} }
 \def\algalias#1{ (#1)}
 
 % Algorithm name in text or in a formula
index 758d4787d1bfdc90ba819a6bd047ac49e4326b5e..5dd13f2fdf14291adb84ad86beccd87ddb8cb582 100644 (file)
 \let\plaintilde=~
 \protected\def~{\plaintilde}
 
+%%% Localization %%%
+
+% Current language
+\def\localelang{en}
+
+% Define a new localized string: \localedef{language}{identifier}{message}
+\def\localedef#1#2{\expandafter\def\csname loc:#1:#2\endcsname}
+
+% Expand a localized string in the current language: \localemsg{identifier}
+\def\localestr#1{%
+       \ifcsname loc:\localelang:#1\endcsname
+               \csname loc:\localelang:#1\endcsname
+       \else
+               \ucwwarn{Localized string #1 not defined in language \localelang}%
+               ???%
+       \fi
+}
+
 %%% Epilog %%%
 
 % Let's hide all internal macros