Как оптимизировать условный перевод текста?

Как оптимизировать условный перевод текста?

Я работаю над коротким рассказом, написанным на французском языке и содержащим ряд коротких диалогов на английском. Один мой друг предположил, что было бы любезностью по отношению к потенциальным читателям перевести английский контент на французский с помощью сносок. Однако я хотел бы легко предлагать обе версии, изменив глобальный параметр, как показано в MWE: сибез сносок. Интересно, оптимален ли выбранный подход. Более того, я пытаюсь придумать еще и третью версию, которая была бы полностью на французском, т. е. заменив английский текст содержимым сноски, но также изменив шрифт с на \emphобычный. Я использую \emphшрифт, чтобы отличать текст на английском от основного документа на французском.

Есть ли практический способ сделать это или это излишество?

\documentclass[a5paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}
\usepackage[english, french]{babel}

\def\lang {e} %variable used for conditional translated footnotes

\begin{document}
\selectlanguage{english}

\begin{enumerate}

\item \emph{--- The manager needs to see you before you leave}
\ifthenelse{\equal{\lang}{}} {}{\footnote{\selectlanguage{french}   Monsieur, le patron veut vous voir avant votre départ !}}!

\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse. 

\item \emph{--- The manager needs to see you before you leave}
\ifthenelse{\equal{\lang}{e}} {}{\footnote{\selectlanguage{french}Monsieur, le patron veut vous voir avant votre départ !}}!
\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse. 
\end{enumerate}
\end{document} 

решение1

Чтобы быстро ответить на ваш последний вопрос: это не излишество, но это не удобно и, таким образом, немного непрактично. В следующем примере (который также содержит вашу попытку) я определил макрос - оптимизирующий ваш подход, как и просили - который называется , \englphraseкоторый работает как \englphrase[french translation]{english text}. Он добавит сноску с французским переводом, только если вы дадите ее в необязательном аргументе.

\documentclass[a5paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}
\usepackage[english, french]{babel}

\def\lang{e} %variable used for conditional translated footnotes

\let\markforphrase\emph
\newcommand{\englphrase}[2][]{%
\selectlanguage{english}
\markforphrase{#2}%
\if\relax\detokenize{#1}\relax\else\footnote{\selectlanguage{french} #1}\fi
\selectlanguage{french}
}

\begin{document}
\selectlanguage{english}

\begin{enumerate}

\item \emph{--- The manager needs to see you before your leave!}
\ifthenelse{\equal{\lang}{}} {}{\footnote{\selectlanguage{french}   Monsieur, le patron veut vous voir avant votre départ !}}

\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse.

\item \emph{--- The manager needs to see you before your leave!}
\ifthenelse{\equal{\lang}{e}} {}{\footnote{\selectlanguage{french}Monsieur, le patron veut vous voir avant votre départ !}}
\selectlanguage{french}
Je tournai la tête et levai les yeux vers le visage de la serveuse.
\end{enumerate}

%A demonstration of the optimized approach
\medskip\hrule\medskip
\parindent=0in

---\englphrase[Monsieur, le patron veut vous voir avant votre départ!]{The manager needs to see you before your leave!}

Je tournai la tête et levai les yeux vers le visage de la serveuse.

---\englphrase{The manager needs to see you before your leave!}

Je tournai la tête et levai les yeux vers le visage de la serveuse.
\end{document}

Редактировать:Я пропустил важный момент. Вам также нужно что-то вроде \transltnoffотключения переводов глобально, чтобы легко предоставить как английскую, так и французскую версию вашей книги. Попробуйте:

\newif\iftransltn
\transltntrue
\let\transltnoff=\transltnfalse %this is just to make the macro sound intuitive
\let\markforphrase=\emph
\newcommand{\englphrase}[2][]{%
\foreignlanguage{english}{\markforphrase{#2}}% thanks egreg :-)
\iftransltn%
  \if\relax\detokenize{#1}\relax\else
    \footnote{#1}
  \fi%
\fi%
}

%\transltnoff

решение2

В конце концов я придумал следующее решение:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}% 
\usepackage{ifthen}
\usepackage[english, french]{babel}

\def\lang {ef} %variable used for conditional text e=english, f=french, ef=english with translated footnotes

\newcommand{\CondText}[2]{%
\ifthenelse{\equal{\lang}{e}} {{\selectlanguage{english}\emph{#1}}} {}
\ifthenelse{\equal{\lang}{ef}} {{\selectlanguage{english}\emph{#1}}
\footnote{\selectlanguage{french} #2}} {}
\ifthenelse{\equal{\lang}{f}} {{\selectlanguage{french} #2}}{}
}%

\begin{document}
\CondText {--- Sir, the manager needs to see you before you go !} {--- Monsieur, le patron veut vous voir avant votre départ !}
\end{document}

Связанный контент