Aby rozwinąć na odpowiedź Roba próbuje się i18n.js plugin dla require.js, oto kroki Śledziłem (pracuję off szablon startowy Durandal w Visual Studio).
- Pobierz i18n.js plugin i umieścić go w folderze
App
.
Utwórz folder App/nls
, w którym należy umieścić pakiety zasobów require.js, np. App/nls/welcomeBundle.js
.
define({
"root": {
"displayName": "Welcome to the Durandal Starter Project!"
},
"fr-fr": true
});
Zobaczysz dodałem linię do opowiedzenia require.js że jest francuska wersja jest dostępna. Ten zostanie utworzony w App/nls/fr-fr/welcomeBundle.js
, który zrobił mi trochę poniżej (zmienił się le: D)
define({
"displayName": "Welcome to le Durandal Starter Project!"
});
require.js musi być wstępnie skonfigurowany z lokalizacji (nie można zrobić dynamicznie). Więc w pliku main.js oświadczam poniżej getLocale()
funkcji, które mogę używać do konfigurowania ustawień regionalnych dla require.js:
function getLocale() {
var locale = 'en-us';
if (localStorage) {
var storedLocale = localStorage.getItem('locale');
locale = storedLocale || locale;
}
return locale;
}
requirejs.config({
paths: {
'text': 'durandal/amd/text'
},
locale: getLocale()
});
W module welcome.js I następnie załadować paczkę i użyć go do własność displayName:
define(function(require) {
var bundle = require('i18n!nls/welcomeBundle');
return {
displayName: bundle.displayName,
...
}
});
i wtedy ustawić locale na francuski i przeładować stronę za pomocą JavaScript:
localStorage.setItem('locale', 'fr-fr');
location.reload();
nadzieję, że pomoże :)
Edit: 04/04/2013: zaktualizowałem powyższy zainicjować ustawienia regionalne w pliku main.js a nie w module shell.js, jak z jakiegoś powodu ustawienia regionalne nie były używane poprawnie podczas ładowania pakietu w module powłoki. Należy zaznaczyć, że powinien on zostać skonfigurowany tak szybko, jak to możliwe.