2012-01-15 23 views
6

Sto usando Node.js insieme con Express framework e i18n module. Quindi io usointernazionalizzazione in Node.js, Express, i18n

var i18n = require('i18n'); 
app.configure(function() { 
    [...] 
    app.use(i18n.init); 
    app.use(app.router); 
}); 

nelle impostazioni della mia app. Tutto funziona bene, ma quello di cui ho veramente bisogno è forzare i18n a usare il linguaggio che voglio. Lo scenario è il seguente: quando l'utente non ha effettuato l'accesso, quindi i18n cerca il testo nella intestazione accept-language ed è ok. Ma quando l'utente ha effettuato l'accesso, desidero mantenere il langauage scelto da qualche parte nelle impostazioni utente, recuperarlo e forzare il modulo i18n a utilizzare questo linguaggio. Come fare questo (supponendo che so già come salvare/recuperare la lingua in/da db)?

+0

solo per citare [i18next - i18n per node.js] (http://i18next.com/node) potrebbe essere una buona alternativa - basta dare un'occhiata! – jamuhl

risposta

11

Ach, mi spiace. Dovrei aspettare un po 'e ispezionare il modulo i18n. Sembra che il modulo fornisce alle funzioni

i18n.getLocale(); 

che recupera il linguaggio attuale e

i18n.setLocale('en'); 

che imposta locale come vogliamo. La documentazione dovrebbe davvero menzionarlo. È importante, spero che la risposta aiuti qualcuno. :)

+0

ehi ... come hai fatto a far funzionare tutto questo alla fine? Ho provato a cambiare le impostazioni locali con il comando che hai scritto, ma si ripristina automaticamente e non so come funziona in modo che l'impostazione persista. – toxinlabs

+1

potresti dare un'occhiata a http://i18next.com/node in quanto aggiunge la stessa funzionalità e molto altro ancora. – jamuhl

+0

Dai un'occhiata anche a https://github.com/bdswiss/country-language se hai bisogno di conoscere le lingue parlate in un paese specifico. –

0

Questo è stato appena rilasciato ieri, ma suona come esso colpirà il problema si esegue in: locale