【发布时间】:2012-02-18 18:54:40
【问题描述】:
我有一个 XSLT 样式表,可以将 XML 数据转换为 XSL-FO(然后使用 Apache FOP 将其呈现为 PDF)。
现在,我需要将输出本地化为几种不同的语言。例如,XSLT 生成的表的列标题需要本地化。这是 XSLT 的简化 sn-p 生成带有列标题 "Date"、"Name" 和 "Something" 的表头:
...
<fo:table>
<fo:table-header>
<fo:table-row>
<fo:table-cell>
<fo:block>Date</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Name</fo:block>
</fo:table-cell>
<fo:table-cell>
</fo:block>Something</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
</fo:table-body>
<xsl:apply-templates select="item"/>
</fo:table-body>
</fo:table>
...
我们已经在系统的其他部分使用TMX 文件进行国际化,因此这似乎是一种自然的方式。下面是一个 TMX 文件的简化示例,其中包含两种语言的几个字符串:
<tmx version="1.4b">
<body>
<tu tuid="DATE">
<tuv xml:lang="en"><seg>Date</seg></tuv>
<tuv xml:lang="sv"><seg>Datum</seg></tuv>
</tu>
<tu tuid="NAME">
<tuv xml:lang="en"><seg>Name</seg></tuv>
<tuv xml:lang="sv"><seg>Namn</seg></tuv>
</tu>
</body>
</tmx>
所以基本上我想将 XSLT 中的硬编码列标题替换为对 TMX 文件中字符串的引用(使用 tuid 属性),以便相同的 XSLT 可以产生输出使用不同的语言。
但我似乎找不到任何有关如何将 TMX 文件与 XSLT 一起使用的资源。非常感谢提供一些好的教程的示例或指针。
【问题讨论】:
-
听起来像是一种用于翻译的 XML 格式。你能举例说明这些在你的情况下是什么样子吗?我认为您最好使用文档功能将它们作为外部文件访问,随时检索您需要的数据..
-
你能提供一个生成列标题的 XSLT 的 sn-p 吗?演示如何扩展您当前正在执行的操作以将数据包含在 TMX 文件中可能会更容易。此外,如果可能的话,带有相关数据的 TMX 文件片段将是有用的;这不是许多人熟悉的标准。
-
Flynn1179 & grtjn,感谢您的回复。有关详细信息,请参阅编辑后的帖子。
标签: xslt localization internationalization xsl-fo tmx