From 7b42b6e264b475b438ac4bcd31029942d4b04925 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 5 Jun 2018 19:37:33 +0200 Subject: [PATCH] Added a simple localization mechanism --- ucw-algo.tex | 19 ++++++++++--------- ucwmac.tex | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/ucw-algo.tex b/ucw-algo.tex index 961e319..6259fbc 100644 --- a/ucw-algo.tex +++ b/ucw-algo.tex @@ -11,10 +11,11 @@ % \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 diff --git a/ucwmac.tex b/ucwmac.tex index 758d478..5dd13f2 100644 --- a/ucwmac.tex +++ b/ucwmac.tex @@ -293,6 +293,24 @@ \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 -- 2.39.2