2015-05-10 5 views
0

Я использую express и i18next-node. У меня проблема, когда я пытаюсь изменить lang внутри моего маршрута. У меня нет проблем, если я положил его на URL. Мой INIT:express, i18next-node и setLng

i18n.init({ 
saveMissing: true, 
sendMissingTo : 'all', 
fallbackLng : 'it-IT', 
ignoreRoutes: ['img/', 'public/', 'css/', 'js/'], 
useCookie: true, 
debug: true 
}); 

в моем маршруте (и я увидел u18next node setLng seems that doesn´t work) У меня есть

var theLang = 'fr-FR'; 
console.log(req.i18n.lng()); // this gives me it-IT 
req.i18n.setLng(theLang); // I thouth this would change the lang to fr-FR 
console.log('now I have ' +theLang+ ' '+ i18n.lng()); 

результат является FR-FR он-IT

почему? Как я могу его изменить? У меня еще нет сеанса, это первая страница, которую пользователь получает, в зависимости от url (у которого нет lang), я выбрал язык. Что мне делать? благодаря

+0

У меня сложилось впечатление, что, когда второй console.log называется, Ланг еще не установлен. Что я могу сделать, чтобы убедиться, что он установлен, прежде чем продолжить? – Pat070

+0

решил загрузить все языки во время инициализации – Pat070

ответ

0

setLng имеет обратный вызов, попробуйте:

req.i18n.setLng(theLang, function(){ 
    console.log('now I have ' +theLang+ ' '+ i18n.lng()); 
});