【发布时间】:2017-04-10 18:41:07
【问题描述】:
我有一个 XLIFF 文件,用于将 iPhone 应用程序翻译成另一种语言。
它是这样的:
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.2"
xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
<file original="kWallet/Base.lproj/BonusProgram.storyboard"
source-language="de"
datatype="plaintext"
target-language="en">
<header>
<tool tool-id="com.apple.dt.xcode"
tool-name="Xcode"
tool-version="8.2.1"
build-num="8C1002"/>
</header>
<body>
<trans-unit id="VNf-SH-yf4.normalTitle">
<source>Nicht mehr teilnehmen</source>
<target>Nicht mehr teilnehmen</target>
<note>Class = "UIButton"; normalTitle = "Nicht mehr teilnehmen"; ObjectID = "VNf-SH-yf4";</note>
</trans-unit>
<trans-unit id="bks-T0-HXe.normalTitle">
<source>Teilnehmen</source>
<target>Teilnehmen</target>
<note>Class = "UIButton"; normalTitle = "Teilnehmen"; ObjectID = "bks-T0-HXe";</note>
</trans-unit>
<trans-unit id="inq-dy-gMC.title">
<source>Bonus</source>
<target>Bonus</target>
<note>Class = "UITabBarItem"; title = "Bonus"; ObjectID = "inq-dy-gMC";</note>
</trans-unit>
<trans-unit id="mub-0G-Dk1.title">
<source>Bonus Program</source>
<target>Bonus Program</target>
<note>Class = "UINavigationItem"; title = "Bonus Program"; ObjectID = "mub-0G-Dk1";</note>
</trans-unit>
<trans-unit id="rAv-9a-ssv.title">
<source>Bonus</source>
<target>Bonus</target>
<note>Class = "UINavigationItem"; title = "Bonus"; ObjectID = "rAv-9a-ssv";</note>
</trans-unit>
</body>
</file>
</xliff>
现在我需要做以下事情:
我已经将翻译保存在以下格式的文本文件中:
"source" = "target",例如"Im App Store anzeigen" = "Show in App Store"
/* Show in App Store Text */
"Im App Store anzeigen" = "Show in App Store";
所以我要创建一个脚本,它读取我的文本文件并在每一行之后调用 xslt 转换,将 2 个值传递给它。
现在我需要了解如何使用 xslt 解决转换问题。基本上它需要搜索<source> == "Nicht mehr teilnehmen",然后用我要传递给xslt转换器的第二个值替换它的<target>兄弟(在本例中为"Stop participating")
我认为这应该很容易,但不幸的是,我没有足够的 xslt 经验来自己解决这个问题。感谢您的帮助。
【问题讨论】:
-
出现各种问题。每个源语言字符串是唯一的吗?或者,相同的源语言字符串是否可以在多个不同的地方多次出现,甚至可能使用不同的目标语言字符串?另外,文本文件中的字符串是否可以包含引号,如果可以,是否进行了转义?
-
另外,我很好奇您的工作流程。 XLIFF 是本地化数据的行业标准文件格式,如今大多数 CAT 工具都支持 XLIFF 进行直接处理。您的工作流程是什么,例如,您的 XLIFF 的源文本同时包含
<source>和<target>,而您的实际本地化数据则以某种单独的文本格式存储? -
每个源语言字符串可以出现多次,也需要多次替换。确实会出现引号,都像这样转义
\"string\" -
@EiríkrÚtlendi 问题是,在 XLIFF 之前,Xcode 只使用普通的属性文件(例如 en.strings)。我们在这些文件中已经有了这些英文翻译,但是当 xcode 生成新的 XLIFF 文件时,它不会处理那些 .strings 文件中已经存在的翻译。因此,在最好的情况下,我只需将所有翻译从 .strings 移动到 .xliff 一次
-
源-目标字符串是否都是一对一匹配的?或者一个源字符串可以等同于多个不同的目标字符串?