假设您正在制定一项需要翻译成其他语言的标准。文档结构(图表、表格结构等)在不同语言之间是一致的。是否有任何设施/技术/策略/软件包可以简化多语言文档的制作?
是否可以使用格特克斯-like 方法在(la)tex 中?
答案1
还有另一种方法可以在 LaTeX 文档中支持国际化。例如,下面是我前段时间制作的对英语和德语的支持:
\newif\ifen
\newif\ifde
\newcommand{\en}[1]{\ifen#1\fi}
\newcommand{\de}[1]{\ifde#1\fi}
接下来,如果需要,您可以为月份、日期格式等定义不同的命令:
\newcommand{\jan}{%
\en{January}%
\de{Januar}%
}
最后,你可以在文本中写如下内容:
\en{English text.}
\de{Deutscher Text.}
毕竟,当您创建了整个文档后,您可以在文档序言中简单地在语言设置之间切换 或\entrue
。\detrue
所有这些都允许您使多语言文本彼此保持最新状态。
答案2
您可能遇到的一个问题是使不同的语言版本保持彼此之间的最新状态。
一种可能的解决方案是将您的文档写成平行文本,将不同的语言混合在一起成为小块,以便作者可以在同一个窗口中看到多种语言。
处理此问题的一个好(简单)方法是使用“comment”包。以下是使用英语和葡萄牙语的示例大纲:
英文主文件:
\includecomment{xengl}
\excludecomment{xport}
\input{commonbody}
葡萄牙文主文件:
\excludecomment{xengl}
\includecomment{xport}
\input{commonbody}
共同体:
\begin{xengl}
Some English text, maybe up to a whole paragraph or list
\end{xengl}
\begin{xport}
Algum texto em português, talvez até um parágrafo
\end{xport}
常见的、与语言无关的文本可以存在于任一环境之外,并包含在两种语言版本中。
答案3
序言:我希望我理解的没错:您有多个文档,每个文档都用一种语言编写,内容相同。一个文档内部没有语言混合。
我会为每种语言创建一个目录。然后我将文档分成小文件(每章一个文件,也许每个部分一个文件。表格和图表放在各自的文件中)。
像这样:
english
english/main
english/preamble
english/chapter1
english/chapter2
german
german/main
german/preamble
german/chapter1
german/chapter2
french
french/main
french/preamble
french/chapter1
french/chapter2
然后我会从主文档开始(英语或你最熟悉的语言)。在文档中我添加注释作为同步点。
之后你需要一个 diff-tool 来比较目录和文件。文档中的同步注释会在比较过程中对齐文本。
对于我要创建的图形:
english/graphics
german/graphics
french/graphics
graphics
graphics
包含与语言无关的图形。如果您有与语言相关的图形(例如带有图例),则可以将其添加到子目录中。
然后你定义:
\graphicspath{{german/graphics}{../graphics}}
再多做一点工作,您就可以编写一个脚本,使用 parallel.sty 创建新的双语(或更多语)文档。然后,您可以使用打印的文档版本来代替 diff 工具。
答案4
我自己也对此感到疑惑,后来找到了一个使用 GNU gettext 的解决方案。一个名为的工具po4a适用于 Tex/LaTeX 文件。
po4a 有几个单独的命令:
- po4a-gettextize,将原始文件(及其翻译)转换为 PO 文件
- po4a-normalize,通过在 po4a 中解析文档文件并将其写回来对其进行规范化
- po4a-translate,将 PO 文件转换回文档格式
- po4a-updatepo,更新文档的翻译(PO 格式)
因此示例如下
po4a-gettextize -f latex -m main.tex -p xx.po -M UTF-8
主文件(-m
)main.tex
是源文件,我们得到输出(-p
)xx.po
,并且UTF-8
(-M
)作为非英语语言支持的文件编码。
其中latex
格式(-f
)告诉 po4a 使用 latex 环境和命令,如果tex
要使用的格式,则需要手动添加所有环境和命令。
因此,我们可以尽一切努力来支持一个或多个文档的多种语言版本。
要进一步使用其余命令,请查看手册页对于 po4a
新的环境和命令
如果我们想使用自定义命令或创建新环境,我们需要.tex
根据以下说明在文档中声明它们:手册页。
% Tells po4a that we have a non standard environment called tightemize
% po4a: environment tightemize
% tightemize is a custom list environment where we want each \item to be a separate translation object
% po4a: separator tightemize "\\\\item"
%rest of document
\documentclass{arcticle}
etc....
\begin(document)
\begin{tightemize}
\item Item 1
\item Item 2
\item Item 3
\end{tightemize}
也可以更改位于的LaTeX.pm
模块文件/usr/share/perl5/vendor_perl/Locale/Po4a
% Original environment
$env_separators{'itemize'} = "\\\\item";
% Here we can just copy the environment we want our new one to work as
$env_separators{'tightemize'} = "\\\\item";
% and adding it to the foreach abow
foreach (qw(abstract align align* cases center description displaymath document enumerate tightemize etc...
编辑 PO 文件
要编辑文件,有许多在线或本地程序,请查看拱门列表。