Using \foreignlanguage with an babel language name as well as passing optional arguments raises an as the (implicit) given keys can not be evaluated. Same with hyphenrules and otherlanguage*, whereas \selectlanguage and otherlanguage work as expected.
\documentclass{minimal}
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage[spelling=old]{german}
\makeatletter
\def\fooname{BaseFoo}
\gappto\captionsgerman{%
\def\fooname{\if@german@oldspelling OldFoo\else NewFoo\fi}%
}
\makeatother
\begin{document}
Dies ist ein Test: \fooname
\bigskip\centerline{foreignlanguage}
\foreignlanguage{german}{Dies ist ein Test: \fooname}
\foreignlanguage[spelling=new]{german}{Dies ist ein Test: \fooname}
\foreignlanguage[spelling=old]{german}{Dies ist ein Test: \fooname}
\foreignlanguage{ngerman}{Dies ist ein Test: \fooname}
\foreignlanguage{germanb}{Dies ist ein Test: \fooname}
\bigskip\centerline{hyphenrules}
\begin{hyphenrules}{german}
Dies ist ein Test: \fooname
\end{hyphenrules}
\begin{hyphenrules}[spelling=new]{german}
Dies ist ein Test: \fooname
\end{hyphenrules}
\begin{hyphenrules}[spelling=old]{german}
Dies ist ein Test: \fooname
\end{hyphenrules}
\begin{hyphenrules}{ngerman}
Dies ist ein Test: \fooname
\end{hyphenrules}
\begin{hyphenrules}{germanb}
Dies ist ein Test: \fooname
\end{hyphenrules}
\bigskip\centerline{otherlanguage*}
\begin{otherlanguage*}{german}
Dies ist ein Test: \fooname
\end{otherlanguage*}
\begin{otherlanguage*}[spelling=new]{german}
Dies ist ein Test: \fooname
\end{otherlanguage*}
\begin{otherlanguage*}[spelling=old]{german}
Dies ist ein Test: \fooname
\end{otherlanguage*}
\begin{otherlanguage*}{ngerman}
Dies ist ein Test: \fooname
\end{otherlanguage*}
\begin{otherlanguage*}{germanb}
Dies ist ein Test: \fooname
\end{otherlanguage*}
\bigskip\centerline{otherlanguage}
\begin{otherlanguage}{german}
Dies ist ein Test: \fooname
\end{otherlanguage}
\begin{otherlanguage}[spelling=new]{german}
Dies ist ein Test: \fooname
\end{otherlanguage}
\begin{otherlanguage}[spelling=old]{german}
Dies ist ein Test: \fooname
\end{otherlanguage}
\begin{otherlanguage}{ngerman}
Dies ist ein Test: \fooname
\end{otherlanguage}
\begin{otherlanguage}{germanb}
Dies ist ein Test: \fooname
\end{otherlanguage}
\bigskip\centerline{selectlanguage}
\selectlanguage{german}
Dies ist ein Test: \fooname
\selectlanguage[spelling=new]{german}
Dies ist ein Test: \fooname
\selectlanguage[spelling=old]{german}
Dies ist ein Test: \fooname
\selectlanguage{ngerman}
Dies ist ein Test: \fooname
\selectlanguage{germanb}
Dies ist ein Test: \fooname
\end{document}
BTW: I am aware that captions are not changed with the commands/environments in question, just wanted to make sure, that the general usage of the UI is valid.
Using
\foreignlanguage
with an babel language name as well as passing optional arguments raises an as the (implicit) given keys can not be evaluated. Same withhyphenrules
andotherlanguage*
, whereas\selectlanguage
andotherlanguage
work as expected.BTW: I am aware that captions are not changed with the commands/environments in question, just wanted to make sure, that the general usage of the UI is valid.