2013-03-22 10 views
5

Sviluppo una soluzione ASP.NET MVC con Durandal e Breeze. Devo tradurre frontend in francese e olandese. Come procedere con Durandal/knockout?Conversione di viste con HotTowel (struttura Durandal) + VS2012

In una classica soluzione MVC di ASP.NET abbiamo l'opportunità di visualizzare le visualizzazioni lato server (grazie al rasoio).

Grazie per il vostro aiuto.

risposta

7

Ad ampliare la risposta di Rob di cercare le i18n.js Plugin per require.js, ecco i passi che ho seguito (sto lavorando off il modello di avvio Durandal in Visual Studio).

  1. Scaricare i18n.js plugin e inserirlo nella cartella App.
  2. Creare una cartella App/nls, che è dove si inseriranno i pacchetti di risorse require.js, ad es. App/nls/welcomeBundle.js.

    define({ 
        "root": { 
         "displayName": "Welcome to the Durandal Starter Project!" 
        }, 
        "fr-fr": true 
    }); 
    
  3. Vedrai ho aggiunto una linea per dire require.js che c'è una versione francese disponibili. Questo verrà creato in App/nls/fr-fr/welcomeBundle.js, che ho un pò fatto seguito (cambiato la per le: D)

    define({ 
        "displayName": "Welcome to le Durandal Starter Project!" 
    }); 
    
  4. require.js deve essere configurato inizialmente con il locale (non può essere fatto in modo dinamico). Quindi, nel file main.js, dichiaro il seguito getLocale() funzione, che io uso per configurare le impostazioni locali per 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. Nel modulo welcome.js ho quindi caricare il pacco e lo uso per la proprietà displayName:

    define(function(require) { 
        var bundle = require('i18n!nls/welcomeBundle'); 
        return { 
         displayName: bundle.displayName, 
         ... 
        } 
    }); 
    
  6. ho quindi impostare le impostazioni internazionali al francese e ricaricare la pagina tramite JavaScript:

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

Speranza che aiuta :)

Edit: 2013/04/04: ho aggiornato il sopra per inizializzare il locale nel file main.js e non nel modulo shell.js, come per qualche motivo il locale non veniva usato correttamente durante il caricamento del pacchetto nel modulo della shell. Immagina che dovrebbe essere configurato il prima possibile comunque.

Problemi correlati