如何最佳化條件文字翻譯?

如何最佳化條件文字翻譯?

我正在寫一篇用法語寫的短篇小說,其中包含一些英文的簡短對話。一位朋友建議,透過腳註將英文內容翻譯成法文可能是對潛在讀者的一種禮貌。然而,我想透過更改 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}

相關內容