我不認爲DatePicker的測試確實是「開箱即用」。我不確定是否有防水的方式來獲取用戶端位置或客戶端腳本中的語言代碼。
我只是想:
var language = window.navigator.userLanguage || window.navigator.language;
console.log(language);
,並在Firefox中得到了在Chrome "sv"
和"en-GB"
,在同一臺機器。
我用PHP/HTTP請求頭獲得了大致相同的結果。想從服務器端獲取信息。 This問題點HTTP_ACCEPT_LANGUAGE
的最佳途徑,但是:
$_SERVER["HTTP_ACCEPT_LANGUAGE"] // gives me:
sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4 //in chrome
en-gb,en;q=0.5 //in firefox
如果您在DatePicker.js看文件,你必須在第一線:
---
name: Locale.en-US.DatePicker
description: English Language File for DatePicker
authors: Arian Stolwijk
requires: [More/Locale]
provides: Locale.en-US.DatePicker
...
這給我一種感覺,它被設置去en-US。它會工作,如果你手動設置它。
我的建議是遵循Dimitar的建議,並使用Locale.use()手動設置它。如果在調用DatePicker之前添加例如Locale.use('sv-SE');
,則將以yyyy-mm-dd格式獲取日期。
我做了一個腳本來讀取客戶端語言,試圖使其動態。它的工作原理,但沒有測試。這種分配比較MooTools的Locale.list()
和瀏覽器/ JavaScript的答案我張貼以上語言:
var language = window.navigator.userLanguage || window.navigator.language;
console.log(language); //gives the results I wrote above (sv/en-GB resp. Chrome/FF)
var list = Locale.list().length;
for (var i = 0; i < list; i++) {
if (Locale.list()[i] == language) { //check if it's a full match
Locale.use(language);
} else {
// go for the first part of the "sv-SE" and find a match
// this is a compromise, it gets the right language but might miss the right country
var langArray = language.split('-');
var locArray = Locale.list()[i].split('-');
for (var k = 0; k < list; k++) {
if (langArray[0] == locArray[0]) {
Locale.use(Locale.list()[i]);
}
}
}
}
console.log(Locale.getCurrent().name); // gives sv-SE/en-GB resp. Chrome/FF
new Picker.Date($$('input'), {
// etc...
如果你認爲它是有用的,你可以微調它... Fiddle here
日期選擇器(如果由arian編寫的)使用mootools-more中的'Locale'。嘗試'Locale.use()'並閱讀文檔http://mootools.net/docs/more/Locale/Locale –
感謝您的指針......雖然我必須承認,我認爲默認意味着它會做到這一點盒子?沒有?我很高興雖然玩耍並嘗試使用'Locale.use()'並將其輸出爲'Picker'的字符串。 –
仍然沒有找到一個可靠的解決方案 –