2016-10-15 3 views
0

Я установил экспресс-локалиexpress-locale всегда возвращает значение по умолчанию - почему?

npm install --save express-locale 

и настроить его так:

app = express(); 
app.use(locale({ 
    priority: ['accept-language', 'cookie', 'domain', 'default'] 
})); 

но когда страница называется:

app.get('/', (req, res) => { 
    console.log(req.locale); 
}); 

Я всегда получаю:

{код: 'en_GB', источник: 'default'}

Независимо от того, как я изменяю предпочтительный язык моего браузера. Я просмотрел код в этом модуле, и я вижу ссылку на req.acceptedLanguages (при попытке решить для «accept-language»), который в моем случае всегда возвращает undefined (что объясняет, почему он идет по умолчанию), но что я не понимаю, если посмотреть на

console.log(req.header('Accept-Language')); 

я получаю:

С.В., ан-ГБ; д = 0,8, ан; д = 0,6, ы, д = 0,4, пт; д = 0,2, ast; q = 0,2, en-US; q = 0,2

, из которого ясно, что я должен иметь шведский язык в качестве основного языка ... так что это wron g с этим?

как отдельный, но связанный с этим вопрос: даже если req.acceptedLanguages вернул значение, оно было бы без языкового стандарта. Фактически, sv не является достаточным для вывода языкового стандарта, поскольку на шведском языке говорят в Швеции (sv-SE) и Финляндии (sv-FI). почему это имеет значение? потому что я пытаюсь показать цену, и она должна быть в валюте пользователя (Sweden = kroner, Finland = Euro), но без локали я не могу понять это. как это вообще делается?

ответ

0

Я потянулся к автору и вернулся что-то полезное, см: https://github.com/smhg/express-locale/issues/4

В req.acceptedLanguages ​​вопрос Экспресс 4-специфичны и решена в c17d901. Он не был опубликован до npm, поскольку мы сначала должны добавить Экспресс 3 и Экспресс 4 конкретных теста. Должно возникнуть в ближайшее время.

Добавьте это в package.json, чтобы проверить последние изменения:

"экспресс-локаль": "GIT: //github.com/smhg/express-locale#c17d901"

Смежные вопросы