2014-06-27 88 views
2

在俄语中,5月份英文单词的翻译可以是两个选项之一。如果有人说“五月三十一日”,那么May可以翻译成“Мая”,如果有人说“2014年5月”,那么May应该翻译为“май”,因为它不再使用“May” 。本月俄语翻译“五月”

使用Marklogic的fn:format-date函数的实现我无法确定如何获取May的“май”版本。

下面是函数调用:

fn:format-date(xs:date("2014-05-01"), "[MNn] [Y]", 'ru')

有没有办法让五月的“май”版本或不格式,迄今为止,只有再回到“Мая”?

从我可以告诉从图片格式的文档这是依赖于实现。可能是因为XQuery没有办法指定月份名称的不同版本。

回答

1

对于大多数Unicode和本地化相关功能,MarkLogic使用库“ICU”http://site.icu-project.org/。它是我们知道的最好的图书馆,但它不是完美无缺的。 该库不能理解日期显示的XQuery模式,因此需要一些复杂的工作来解析出XQuery模式,然后使用较低级别的API来获取相关数据。 即使如此,像日期和日期名称这样的东西在图书馆及其内部数据库可以表现的现实中更加微妙。

为了获得更好的控制,您需要编写一些或部分自己的日期时间格式器。 您可以使用工作的部件,然后进行替换以替换不需要的部件。 例如,你提供一个函数,返回基于总日期的权利月份名称 我 - 自己 - 月 - 格式化(),你可以使用

let $d := xs:date("2014-05-01"), 
    $f := fn:format-date($d, "%%%%MONTH%%%% [Y]", 'ru') , 
    $final := fn:replace($f , "%%%%MONTH%%%%" , my-own-month-formatter($d)) 

。用于从日期时间字段提取值的函数在xquery以及functx模块中可用 。

这里是functx

http://www.xqueryfunctions.com/xq/functx_month-name-en.html

+0

定制的日期名翻译功能的一个例子,如果你是一般的高兴,但要解决你所描述的具体情况: FN:更换( FN:格式-date(xs:date(“2014-05-01”),“[MNn] [Y]”,'ru'), “Мая”, “май” ) –