2013-03-22 7 views
5

के साथ विचारों का अनुवाद करना मैं डुरंडल और ब्रीज़ के साथ एक एएसपी.नेट एमवीसी समाधान विकसित करता हूं। मुझे फ्रंटेंड को फ्रेंच और डच में अनुवाद करने की आवश्यकता है। Durandal/knockout के साथ कैसे आगे बढ़ें?हॉटटॉवेल (डुरंडल फ्रेमवर्क) + वीएस2012

क्लासिक एएसपी.नेट एमवीसी समाधान में हमारे पास सर्वर पक्ष (रेज़र के लिए धन्यवाद) प्रस्तुत करने का अवसर है।

आपकी मदद के लिए धन्यवाद।

उत्तर

7

i18n.js कोशिश कर के रोब के जवाब पर विस्तार करने के लिए प्लगइन require.js के लिए, यहां दिए गए चरणों मैं पीछा किया (मैं काम कर रहा हूँ बंद है विजुअल स्टूडियो में Durandal स्टार्टर टेम्पलेट)।

  1. i18n.js plugin डाउनलोड करें और इसे App फ़ोल्डर में डालें।
  2. App/nls फ़ोल्डर बनाएं, जहां आप requ.js संसाधन बंडल डाल देंगे, उदा। App/nls/welcomeBundle.js

    define({ 
        "root": { 
         "displayName": "Welcome to the Durandal Starter Project!" 
        }, 
        "fr-fr": true 
    }); 
    
  3. आप मैं एक फ्रेंच संस्करण उपलब्ध उपलब्ध न हो require.js बताने के लिए एक लाइन जोड़ा देखेंगे। (ले करने के लिए बदल: डी) यह App/nls/fr-fr/welcomeBundle.js है, जो मैं थोड़े नीचे किया में बनाया जाएगा

    define({ 
        "displayName": "Welcome to le Durandal Starter Project!" 
    }); 
    
  4. 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() 
    }); 
    
  5. welcome.js मॉड्यूल में मैं तो बंडल लोड और के लिए इसका इस्तेमाल करते हैं DISPLAYNAME संपत्ति:

    define(function(require) { 
        var bundle = require('i18n!nls/welcomeBundle'); 
        return { 
         displayName: bundle.displayName, 
         ... 
        } 
    }); 
    
  6. मैं तो फ्रेंच के लिए स्थान निर्धारित करने और जावास्क्रिप्ट के माध्यम से पृष्ठ पुनः लोड:

    localStorage.setItem('locale', 'fr-fr'); 
    location.reload(); 
    

आशा में मदद करता है :)

संपादित: 2013-04-04: मैं ऊपर main.js फ़ाइल में स्थान प्रारंभ करने और, अद्यतन किसी कारण के रूप में shell.js मॉड्यूल में नहीं खोल मॉड्यूल में बंडल लोड करते समय लोकेल का सही ढंग से उपयोग नहीं किया जा रहा था। चित्रा कि इसे यथासंभव जल्द से जल्द कॉन्फ़िगर किया जाना चाहिए।

0

i18next के अलावा, आप slexaxton को आजमा सकते हैं।

उम्मीद है कि यह मदद करता है।

संबंधित मुद्दे