Ich habe eine Express Statische Website App. Ich Aufruf Übersetzung meiner Website mit einem Cookie in app.js:Node.js Express-App: Wenn ein Cookie vorhanden ist, dann CSS-Klasse zum Element von der Serverseite hinzufügen
// i18n
app.get('/hu', function (req, res) { // http://127.0.0.1:3000/hu
res.cookie('locale', 'hu', { maxAge: 900000, httpOnly: true });
res.redirect('back');
});
app.get('/en', function (req, res) { // http://127.0.0.1:3000/en
res.cookie('locale', 'en', { maxAge: 900000, httpOnly: true });
res.redirect('back');
});
Wenn jemand http://127.0.0.1:3000/en
URL besuchen, als er ein Cookie speichert, die die Übersetzung aufrufen. hu
ist die Standardsprache. Wenn jemand meine Website zum ersten Mal besucht, wird kein Cookie gespeichert.
Aber wie kann ich meiner Website eine CSS-Klasse hinzufügen, wenn die englische Übersetzung aktiv ist? Ich habe eine Navigationsleiste mit meinem Logo in der Mitte, die horizontal zentriert ist. In englischer Sprache ist die Länge der Wörter unterschiedlich, was dazu führt, dass selbst die zentrierten Flexbox-Elemente left-nav | logo | right-nav
nicht in der Mitte stehen.
Irgendwie möchte ich eine CSS-Klasse in meine Lenkervorlage von app.js (die auf der Serverseite ist) hinzufügen, wenn der spezifische Cookie präsentiert wird. Ist es möglich?
Ist es möglich, dies von app.js global zu lösen, nicht von den Routern?
Endgültige Lösung, danke für @ t.niese!
In app.js:
app.use(function(req, res, next) {
var defaultLang = 'hu';
var activeLang = req.cookies.locale || defaultLang;
res.locals.langClass = activeLang + '-' + activeLang.toUpperCase();
next();
});
In meinem Lenker Vorlage:
<!doctype html>
<html class="no-js lang-{{langClass}}" lang="{{langClass}}">
Danke! Das funktioniert. Ich habe meine Frage mit Ihrem leicht modifizierten Code aktualisiert. Können Sie überprüfen, ob es in Ordnung ist? – Lanti
@Lanti Sieht korrekt aus. Sorry irgendwie gedacht, dass der Cookie-Wert 'lang' hieß. –
Ich habe mich wieder leicht modifiziert. Dieses Mal füge ich die Klasse dem '' Tag hinzu, indem ich sowohl' class = "" 'als auch' lang = "" 'Attribute ein' en-EN' Format erzeuge. Zugänglichkeitsgeräte werden dies unterstützen. – Lanti