0

我正在使用 xslt fn:formate-dateTime() 来获取当前日期和时间,对于英语来说它工作正常。

但是每次我尝试获取不同语言(fr、de 等)的月份名称时,我只会在前面加上 [Language: en] 来获取当前日期和时间,而无法获取该语言的月份名称。

创建日期:[语言:en] 2011 年 4 月 6 日

这是我的代码,有人可以告诉我我在这里做错了什么。

<xsl:value-of select="format-dateTime(current-dateTime(),
                                      '[D01]/[MNn]/[Y0001]',
                                      ’de’,
                                      ’AD’,
                                      ’DE’)"/>

或者

<xsl:value-of select="format-dateTime(current-dateTime (),
                                      '[D01]/[MNn]/[Y0001]',
                                      ’fr’,
                                      ’AD’,
                                      ’FR’)"/>

我正在使用 Saxon 9 和在 tomcat 7 上运行的 Fop 1.0

4

2 回答 2

1

来自http://www.w3.org/TR/xslt20/#lang-cal-country

日期格式化函数中支持的语言、日历和国家的集合是由实现定义的。当这些参数中的任何一个被省略或为空序列时,将使用实现定义的默认值。

如果后备表示使用与请求不同的日历,则输出字符串必须以[Calendar: X]X 标识实际使用的日历作为前缀。如果可用,应使用请求的语言对字符串Calendar进行本地化。如果后备表示使用与请求不同的语言,则输出字符串应以 [Language: Y]Y 标识实际使用的语言作为前缀。该字符串 Language可以以与实现相关的方式进行本地化。如果值的特定组件无法以请求的格式输出,则应以该组件的默认格式输出。

来自http://www.saxonica.com/documentation/functions/intro/format-dateTime.xml

使用图片字符串控制的格式格式化日期。如果未指定语言,则该值取自当前 Java 语言环境。如果语言(明确提供或默认)不是“en”,系统会尝试定位一个名为 net.sf.saxon.number.Numberer_XX XX 是语言的类;此类必须提供执行本地化的方法。

于 2011-04-06T19:13:50.407 回答
0

实际上,关于撒克逊的信息有点过时了(就像http://www.saxonica.com/documentation/extensibility/localizing.xml上的信息一样- 令人尴尬)。

但是我们需要知道您使用的是哪个特定的 Saxon 版本:它在 9.1 和 9.2 之间发生了变化,并且在家庭版和专业版之间有所不同。在当前版本 9.3 中,Saxon-PE 和 Saxon-EE “开箱即用”提供了对 de 和 fr 等多种常用语言的支持,但必须使用 Saxon-HE 从源代码手动配置,通过编写 LocalizerFactory 并将其注册到配置中。

于 2011-04-06T21:19:40.227 回答