it-swarm.com.de

Wie kann ich die Browsersprache in node.js (express.js) erhalten?

Der Benutzer fordert eine Seite an und ich möchte (serverseitig) wissen, welche Sprache in seinem Browser verwendet wird. So konnte ich die Vorlage mit den richtigen Meldungen rendern. 

Auf Kundenseite ist es einfach:

var language = window.navigator.userLanguage || window.navigator.language
36
Oleg Dats

Sie können req.headers ["accept-language"] verwenden, um die Sprache/das Gebietsschema zu erhalten, die der Benutzer in seinem Browser festgelegt hat.

Für eine einfachere Unterstützung möchten Sie vielleicht in ein locale-Modul schauen.

58

request.acceptsLanguages enthält eine geparste Version von request.headers['accept-language'].

Siehe: http://expressjs.com/de/api.html#req.acceptsLanguages ​​

23
cGuille

Mit Express 4.x können Sie den Build in req.acceptsLanguages ​​(lang [ ...]) verwenden, um zu prüfen, ob bestimmte Sprachen akzeptiert werden.

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

Um eine Liste aller akzeptierten Sprachen zu erhalten, können Sie mit Express 4.x das Modul Acceptes verwenden.

var express = require('express'), accepts = require('accepts');
app.get('/translation', function(request, response) {
    console.log(accepts(request).languages());
    ...
});
21
jgrocha

Sie müssten die Zeichenfolge in req.headers["accept-language"] analysieren. Dadurch erhalten Sie eine Prioritätenliste der bevorzugten Sprachen des Kunden. Sie können auch req.acceptsLanguages(lang [, ...]) überprüfen, ob Ihre Sprache unterstützt wird oder nicht.

Ich würde dringend empfehlen, express-request-language zu verwenden, um eine Arbeit zum Abgleichen von Sprachen auszuführen, da es sehr schwierig sein könnte, sie beim ersten Mal richtig zu machen. 

In der Regel reicht es nicht aus, eine Sprache zu finden. Ein Benutzer möchte möglicherweise eine bevorzugte Sprache ändern. express-request-language hilft Ihnen, eine bevorzugte Sprache in einem Cookie zu speichern. Sie gibt Ihrem Server außerdem einen URL-Pfad zum Ändern einer bevorzugten Sprache. 

Alle oben genannten Funktionen können mit nur wenigen Codezeilen ausgeführt werden:

app.use(requestLanguage({
  languages: ['en-US', 'zh-CN'],
  cookie: {
    name: 'language',
    options: { maxAge: 24*3600*1000 },
    url: '/languages/{language}'
  }
}));

Falls keine Übereinstimmung vorliegt, stimmt die Middleware auch mit einer Standardsprache überein (en-US oben). 

0
einstein