Подтвердить что ты не робот

Как я могу получить язык браузера в node.js(express.js)?

Пользователь запрашивает какую-либо страницу, и я хочу знать (на стороне сервера), что такое язык в его/ее браузере. Поэтому я мог бы отобразить шаблон с правильными сообщениями.

На стороне клиента легко:

var language = window.navigator.userLanguage || window.navigator.language
4b9b3361

Ответ 1

Вы можете использовать req.headers [ "accept-language" ], чтобы получить язык/языковой стандарт, который пользователь установил в своем браузере.

Для упрощения поддержки вы можете захотеть изучить локальный модуль .

Ответ 3

С 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());
    ...
});

Ответ 4

Вам нужно проанализировать строку в 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 выше).