首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xslt进行本地化,是否存在处理XML中不同语言的标准?

使用xslt进行本地化,是否存在处理XML中不同语言的标准?
EN

Stack Overflow用户
提问于 2015-09-11 11:59:56
回答 1查看 334关注 0票数 2

我正在处理一个项目,在这个项目中,我需要创建一个html文件,该文件支持xslt转换中的几种语言。我已经阅读了几篇关于这方面的文章,并在这里查看了以前在堆栈溢出中的一些问题,比如:xslt本地化

将翻译放在一个单独的xml文档中的解决方案就像我想要的那样工作。但是,我想知道是否存在"translate.xml“文件的标准化/最佳实践?在上面提到的帖子中,举了以下例子:

代码语言:javascript
复制
<strings>
    <string language="en" key="ContactDetails">Contact Details</string>
    <string language="sv" key="ContactDetails">Kontaktuppgifter</string>
    [...]
</strings>   

正如我说过的,使用键从transalte.xml检索字符串的解决方案可以按我的意愿工作,但如果可以的话,我喜欢使用标准,所以我的问题是,这些类型的translate.xml文件是否有标准化的模式,或者在这样的"translate.xml“中是否有标签等命名的最佳实践?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-11 13:23:49

问得好!

是的,有一种处理语言的标准化方法。使用属性。名称空间神奇地存在于任何XML文档中,并且是核心XML规范的一部分。这是定义为接受语言说明符。,根据RFC-4646的说法。这些是常见的说明符,如enen-USeses-BR,它们指定了主语言和语言变体。

它的工作方式有点像名称空间。如果在元素上定义它,那么该元素的所有后代都会继承它,除非您重新定义它,或者取消定义它以表示语言独立的元素。

例如:

代码语言:javascript
复制
<text xml:lang="en">
    We are 
    <t xml:lang="en-US">organizing</t>
    <t xml:lang="en-GB">organising</t>
    a conference on the effects of 
    <t xml:lang="en-US">color</t>
    <t xml:lang="en-GB">colour</t>
    in December this year.
</text>

使用带有复制成语的查询语言(即XSLT ),它与函数一起工作得很好,它从最近的祖先或self中获取适用的语言,如果找到,返回布尔值true。如果您设置主语言,比如en-US,它也会找到类似于en的语言变体。

下面的代码假设XSLT1.0,但也适用于2.0和3.0 (这段代码由Michael更正,参见注释):

代码语言:javascript
复制
<!-- match English US language and default en -->
<xsl:template match="t[lang('en-US') or lang('en')">
    <xsl:apply-templates />
</xsl:template>

<!-- remove any other <t> -->
<xsl:template match="t" />

注意:始终在最外层的元素上设置默认语言,因为如果根本找不到语言,lang()将返回false。您可以使用表达式lang('')进行测试,只有在没有设置语言的情况下,表达式才会返回false。

对于您的XML文件,如果您每种语言都有一个文件,并且不像上面建议的那样混合和匹配,那么仍然可以通过在根元素上设置xml:lang来使用相同的方法。因为这将在整个树中被继承,所以仍然可以使用lang()函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32523027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档