假设我正在准备 LaTeX 包来提供警告框(警告、错误、提示、注意、仅供参考...)的抽象。
我希望这些字符串能够国际化。我不喜欢以下解决方案:
- “通用”框,让用户给出标题和图标。
- 向您的 sty 文件添加一个选项,以便用户可以配置语言
- 制作许多以语言代码为后缀的 sty 文件
“babel”包能够定义一些 i18n 字符串(目录、内容表等)。
是否可以将我的包中使用的字符串与 i18n 系统集成?
抱歉,但搜索 latex、i18n、babel、interface、integration 或其他任何内容都没有给我有用的结果(大多数人对如何让 babel 在他们的文档中工作存在疑问)。
提前致谢。
答案1
您可以尝试使用随附的»translator«包投影机类。它在类用户指南的第 25 节中进行了描述。
答案2
也许答案有点晚了,但是babel
它可以让你拥有带有语言名称的单独的 .cfg 文件(UKenglish.cfg、norsk.cfg、swedish.cfg 等)并使用 babel 宏addto{<caption_name>}
。
例如,UKenglish.cfg
我的目录中有一个文件texmf-local
,其中有我自己的宏使用以下定义:
%% UKenglish.cfg
%% Local config file UKenglish.cfg used by babel
%% to add an entry to english
\addto{\captionsUKenglish}{%
\def\Companynumbername{company number}%
\def\shVersion{Version}%
\def\shversion{version}%
}
我有一个对应的页面norsk.cfg
来涵盖我最常用的两种语言。
答案3
也许答案会晚一些,但我刚刚遇到了同样的问题,如果你想翻译 LaTeX 包中的某些内容,.cfg
如果你希望用户能够自己提供其他.cfg
文件,那么提供文件并不是一个好的解决方案。我的解决方案是使用\languagename
带有延迟评估的 babel 并定义适当命名的宏:
%% Suppose \lastpage is set somewhere. We define our translation strings:
\def\pagenameofenglish{Page \thepage\ of \lastpage}
\def\pagenameofgerman{Seite \thepage\ von \lastpage}
\def\pagenameofdutch{Pagina \thepage\ van \lastpage}
%% also remember to define all the language aliases...
\let\pagenameofUKenglish\pagenameofenglish
\let\pagenameofamerican\pagenameofenglish
%% ... and so on
%% We define english as our default language.
%% If babel is loaded with a new language, this gets overwritten.
\ifx\languagename\undefined\def\languagename{english}\fi
%% Use the translated string
%% The \csname expands everything what is given and builds a command from it,
%% e.g., if \languagename is "german", this gets expanded to \pagenameofgerman:
\def\pagenameof{\csname pagenameof\languagename\endcsname}
%% You can now use that e.g. in your fancyheader setup:
\cfoot{\pagenameof}