2012-11-28 62 views
1

我使用MooTools的1.4.1(全更多);繼承繼承區域設置不正常工作

Locale.define('de-CH').inherit('de-DE', 'Date'); 

當我使用這個語言環境(DE-CH)遇到的問題,並獲得其如下

var myLocale = Locale.getCurrent() 

myLocale.sets.Date沒有定義,定義的唯一的事情是myLocale.sets.FormValidator,但這只是因爲這是明確設置,而不是繼承。

例如,驗證日期時,顯然會導致錯誤。

因此,在我看來,我做錯了什麼或繼承機制的地方有一個錯誤。

任何人都有經驗?謝謝。

+0

'Locale.inherit('de-CH','de-DE','Date');'和'Locale.use('de-CH')'然後應該有那個 –

+0

我必須在哪裏放置那?在MooTools文件裏或在我自己的代碼裏面?目前,MooTools的代碼有這樣一行'Locale.define('de-CH')。inherit('de-DE','Date');' – wnstnsmth

+0

好吧,無論如何,它不能解決問題。無論如何,在MooTools中有一些錯誤,更多的來源,有一個明確的聲明來繼承'de-DE'中的'Date',但它在Locale對象中根本不顯示?奇怪的。 – wnstnsmth

回答

2

您不應該直接使用區域設置的sets屬性。 sets屬性將只包含在該語言環境中定義的集合。繼承集僅在繼承的語言環境中定義(您可以通過查看myLocale.inherits.sets實際查看,但不應直接使用)。

取而代之的是,使用myLocale.get('Date')將返回您需要的集合。

使用Locale.get('Date')也能發揮作用,並始終返回集合當前活動的區域設置(通過設置Locale.use('de-CH'))的。

您還可以使用類似.get('Date.months')的呼叫來獲取特定的屬性。

更多信息可在MooTools' Locale documentation找到。

+0

聽起來不錯並且有意義,但是在Form.Validator.addAllThese中存在一個bug,它在其中添加了「validate-date」對象,即在test-Function中:var dateLocale = Locale.getCurrent()。sets。日期「,如果語言環境是一個繼承的,則是未定義的!所以我的問題與Locale沒有關係,而是與Form.Validator中的一個bug有關。或者我仍然在做錯什麼? – wnstnsmth

+1

這確實是'Form.Validator'中的一個錯誤。固定在'master'中: https://github.com/mootools/mootools-more/issues/1168 –

+0

剛纔看到了,感謝您的合作。 – wnstnsmth