i18n.js कोशिश कर के रोब के जवाब पर विस्तार करने के लिए प्लगइन require.js के लिए, यहां दिए गए चरणों मैं पीछा किया (मैं काम कर रहा हूँ बंद है विजुअल स्टूडियो में Durandal स्टार्टर टेम्पलेट)।
- i18n.js plugin डाउनलोड करें और इसे
App
फ़ोल्डर में डालें।
App/nls
फ़ोल्डर बनाएं, जहां आप requ.js संसाधन बंडल डाल देंगे, उदा। App/nls/welcomeBundle.js
।
define({
"root": {
"displayName": "Welcome to the Durandal Starter Project!"
},
"fr-fr": true
});
आप मैं एक फ्रेंच संस्करण उपलब्ध उपलब्ध न हो require.js बताने के लिए एक लाइन जोड़ा देखेंगे। (ले करने के लिए बदल: डी) यह App/nls/fr-fr/welcomeBundle.js
है, जो मैं थोड़े नीचे किया में बनाया जाएगा
define({
"displayName": "Welcome to le Durandal Starter Project!"
});
require.js (गतिशील नहीं किया जा सकता है) स्थान के साथ शुरू में विन्यस्त किया जा करने की जरूरत है। तो main.js फ़ाइल में, मैं getLocale()
समारोह नीचे की घोषणा है, जो मैं 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()
});
welcome.js मॉड्यूल में मैं तो बंडल लोड और के लिए इसका इस्तेमाल करते हैं DISPLAYNAME संपत्ति:
define(function(require) {
var bundle = require('i18n!nls/welcomeBundle');
return {
displayName: bundle.displayName,
...
}
});
मैं तो फ्रेंच के लिए स्थान निर्धारित करने और जावास्क्रिप्ट के माध्यम से पृष्ठ पुनः लोड:
localStorage.setItem('locale', 'fr-fr');
location.reload();
आशा में मदद करता है :)
संपादित: 2013-04-04: मैं ऊपर main.js फ़ाइल में स्थान प्रारंभ करने और, अद्यतन किसी कारण के रूप में shell.js मॉड्यूल में नहीं खोल मॉड्यूल में बंडल लोड करते समय लोकेल का सही ढंग से उपयोग नहीं किया जा रहा था। चित्रा कि इसे यथासंभव जल्द से जल्द कॉन्फ़िगर किया जाना चाहिए।