使用宏作为 GetTranslation 的键

使用宏作为 GetTranslation 的键

为什么下面的代码不产生两行各只有一个单词“baz”的文本?(而是只有一行用于直接调用GetTranslation)。

\documentclass{article}

\RequirePackage{translations}

\DeclareTranslationFallback {foo-bar}{baz}
\DeclareTranslation{English}{foo-bar}{baz}

\newcommand{\asdf}[1]{
  \edef\translationkey{foo-#1}%
  \GetTranslation{\translationkey}
}

\begin{document}

\GetTranslation{foo-bar}

\asdf{bar}

\end{document}

我认为这与宏的评估时间有关。

答案1

事实上,该论点\translationkey必须扩展才能被消化\GetTranslation

\documentclass{article}

\RequirePackage{translations}

\DeclareTranslationFallback {foo-bar}{baz}
\DeclareTranslation{English}{foo-bar}{baz}

\newcommand{\asdf}[1]{%
  \edef\translationkey{foo-#1}%
  \expandafter\GetTranslation\expandafter{\translationkey}%
}

\begin{document}

\GetTranslation{foo-bar}

\asdf{bar}

\end{document}

在此处输入图片描述

相关内容