2014-06-27 36 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'), 「Мая」, 「май」 ) –