我负责为公司编写产品文档,我想用 LaTeX 来完成。如何处理外部翻译?
目前我的公司使用Word编写产品的英文文档,然后将其发送.docx
给外部翻译:整个过程非常简单。
如果我改用 LaTeX,我该如何管理文档的外部翻译?我担心向翻译人员提供原始源代码(没有任何详细说明)可能会导致混乱和错误,但向他们提供编译后的源代码.pdf
并要求他们添加带有 pdf 注释的翻译肯定太费力了,我无法将翻译后的文本重新插入源代码中。有折衷方案吗?
一种可能的方法:我可以编写一个脚本,生成一个.xlsx
文件,其中每行包含一行源代码.tex
,使用 Excel 条件格式突出显示不翻译的行(例如以 开头的行),或混合了 LaTeX 语法和要翻译的文本的行,并要求翻译人员将翻译插入第二列。之后,我可以编写另一个脚本,将和翻译的文本\includegraphics
结合起来并生成一个返回。.xlsx
.tex
答案1
一种可能的方法是使用命令构建脚本。每个命令都必须加载单独的内容,源代码可以放在 csv 文件中,列有语言代码 de|en|fr
使用 datatool 可以做到这一点,但这种方法很慢。发送 csv 文件可以轻松完成,而且没有人知道您通过 latex 处理此内容...
\documentclass{scrreprt}
\usepackage{etex}
\reserveinserts{28}
\usepackage{morewrites}
\usepackage[english,german]{babel} % English language
\usepackage[T1]{fontenc} % Use 8-bit encoding that has 256 glyphs
\usepackage[utf8]{inputenc} % Uses the utf8 input encoding
\usepackage{datatool}
\usepackage{fp}
\usepackage{filecontents}
\newcommand{\fetchinfo}[3]{%
% Get the column index for the column labelled ``c1''
\DTLgetcolumnindex{\columnidx}{#3}{c1}%
% Get the row where that column matches the given text:
\DTLgetrowindex{\rowidx}{#3}{\columnidx}{#2}%
% Set it as the current row
\dtlgetrow{#3}{\rowidx}%
% Get the index for the required column
\DTLgetcolumnindex{\columnidx}{#3}{c\langselectkey}%
\dtlgetentryfromcurrentrow{#1}{\columnidx}%
}
\begin{filecontents*}{cvdatabase-A.csv}
LANGID;CATA;CATB;MIN;MAX;ADDA;ADDB;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18
Langaugecode;SYSTEM;;2;3;;;DE;EN;ESP;SRB;SLO;;;;;;;;;;;;;
cmdAAAA;Content;Chapter;3;10;Main;;"German Text";"English Text";"ESP";"SRB";"SLO";;;;;;;;;;;;;
\end{filecontents*}
\FPupn{langselect}{1} % take 1 for german, 2 for english, 3, add more languages to the csv file
\DTLsetseparator{;}
\FPupn{langselectkey}{0}
\FPupn{langselectkey}{langselect 7 + 0 round}
\typeout{CSV-A Load Start}
\DTLifdbexists{cva}{\DTLdeletedb{cva}}{ }
\DTLloadrawdb[keys={c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25}]{cva}{cvdatabase-A.csv}
\typeout{CSV-A Load finished}
\typeout{pause}
% \input{../dblaa}
\fetchinfo{\cmdAAAA}{cmdAAAA}{cva}
\begin{document}
\selectlanguage{german}
\cmdAAAA
You have to replace each text to a command and add the command to the csv file, also you have to load it via fetchinfo....
\end{document}
正如上面提到的那样,它会非常慢......
答案2
我为每个文本块定义一个新的空命令,例如\newcommand{\descript}{}
在主文件中,
然后我将我想要显示的文本放入一个文件中:例如 german.tex,其中我有
\renewcommand{\descript}{
Das ist der Text.
}
在主文件中,调用\input{german.tex}
然后在适当的位置\descript
您可以更进一步,将布局(列等)分离为命令或文件。然后您的主文件最终看起来会像这样,它会在同一个布局中依次打印所有语言(因为布局调用了语言文件中定义的命令):
\input{german.tex}
\input{layout.tex}
\input{french.tex}
\input{layout.tex}