Ответ 1
Вы можете использовать req.headers [ "accept-language" ], чтобы получить язык/языковой стандарт, который пользователь установил в своем браузере.
Для упрощения поддержки вы можете захотеть изучить локальный модуль .
Пользователь запрашивает какую-либо страницу, и я хочу знать (на стороне сервера), что такое язык в его/ее браузере. Поэтому я мог бы отобразить шаблон с правильными сообщениями.
На стороне клиента легко:
var language = window.navigator.userLanguage || window.navigator.language
Вы можете использовать req.headers [ "accept-language" ], чтобы получить язык/языковой стандарт, который пользователь установил в своем браузере.
Для упрощения поддержки вы можете захотеть изучить локальный модуль .
request.acceptsLanguages
будет содержать анализируемую версию request.headers['accept-language']
.
Смотрите: http://expressjs.com/en/api.html#req.acceptsLanguages
С Express 4.x вы можете использовать сборку req.acceptsLanguages (lang [,...]), чтобы проверить, принимаются ли определенные языки.
var express = require('express');
app.get('/translation', function(request, response) {
var lang = request.acceptsLanguages('fr', 'es', 'en');
if (lang) {
console.log('The first accepted of [fr, es, en] is: ' + lang);
...
} else {
console.log('None of [fr, es, en] is accepted');
...
}
});
Чтобы получить список всех принятых языков, используя Express 4.x, вы можете использовать модуль accepts.
var express = require('express'), accepts = require('accepts');
app.get('/translation', function(request, response) {
console.log(accepts(request).languages());
...
});
Вам нужно проанализировать строку в req.headers["accept-language"]
. Это даст вам список приоритетов предпочитаемых языков от клиента. Вы также можете проверить req.acceptsLanguages(lang [, ...])
, если ваш язык поддерживается или нет.
Я бы настоятельно рекомендовал использовать express-request-language, чтобы выполнить любую работу по соответствию языков, так как это может быть очень сложно сделать правильно первый раз.
В большинстве случаев совпадение языка недостаточно. Пользователь может захотеть изменить предпочтительный язык. express-request-language
поможет вам сохранить предпочтительный язык в cookie, он также дает вашему серверу путь URL для изменения предпочтительного языка.
Все вышеперечисленные функциональные возможности можно выполнить всего несколькими парами кода:
app.use(requestLanguage({
languages: ['en-US', 'zh-CN'],
cookie: {
name: 'language',
options: { maxAge: 24*3600*1000 },
url: '/languages/{language}'
}
}));
В случае отсутствия соответствия промежуточное ПО также будет соответствовать языку по умолчанию (en-US
выше).