在俄语中,5月份英语单词的翻译可以是两种选择之一。如果有人说“5月31日”,那么May这个词被翻译为“Мая”,如果有人说“2014年5月”,那么May这个词应该翻译为“май”,因为它不再使用“May”
使用Marklogic实现的fn:format-date函数我无法确定如何获得May的“май”版本。
这是函数调用:
fn:format-date(xs:date("2014-05-01"), "[MNn] [Y]", 'ru')
有没有办法获得May的“май”版本或者格式日期只返回“Мая”?
从文档中我可以看出的图片格式,这取决于实现。可能是XQuery无法指定月份名称的不同版本。
答案 0 :(得分:1)
MarkLogic将库“ICU”http://site.icu-project.org/用于大多数Unicode和本地化相关功能。它是我们所知道的最好的图书馆,但它无论如何都不是完美的。 该库不了解日期显示的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 ) )
您提供了一个函数my-own-month-formatter(),它返回正确的月份名称 根据总日期。可以使用从日期时间字段中提取值的函数 在xquery以及functx模块中。
以下是functx
中自定义日期名称翻译功能的示例