Açık bir statik site uygulamasına sahibim. Ben app.js bir çerez ile sitemin çevirisini çağırarak:Node.js Express uygulaması: Çerez mevcutsa, sunucu tarafındaki öğeye CSS sınıfı eklemek
// 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');
});
birisi http://127.0.0.1:3000/en
URL'yi ziyaret, bu çeviri çağıran bir çerez depolar daha. Sitemi ilk defa ziyaret ettiğinde hu
varsayılan dildir, kayıtlı hiçbir çerez yoktur.
Ancak ingilizce çeviri etkinken siteme nasıl bir CSS sınıfı ekleyebilirim? Logoda ortada yatay olarak merkezlenmiş bir gezinti çubuğu var. İngilizce dilinde, kelimeler uzunluğu farklıdır, hatta merkezlenmiş flexbox elemanlarının bile left-nav | logo | right-nav
merkeze girmesine neden olmaz.
Bir şekilde, belirli tanımlama bilgisi sunulduğunda app.js'den (sunucu tarafında bulunan) gidon şablonuma bir CSS sınıfı eklemek istiyorum. Mümkün mü?
Bunu, yönlendiricilerden değil, global olarak app.js'den çözmeniz mümkün müdür?
Son çözüm, @ t.niese için teşekkürler! app.js ise
:
app.use(function(req, res, next) {
var defaultLang = 'hu';
var activeLang = req.cookies.locale || defaultLang;
res.locals.langClass = activeLang + '-' + activeLang.toUpperCase();
next();
});
benim gidon şablonunda:
<!doctype html>
<html class="no-js lang-{{langClass}}" lang="{{langClass}}">
Teşekkür ederiz! Bu çalışıyor. Sorumu biraz değiştirilmiş kodunuzla güncelledim. Kontrol edermisin tamam mı? – Lanti
@Lanti Doğru görünüyor. Bir şekilde kusura bakmadığım için, çerez değerinin lang denmesiydi. –
Yeniden biraz değiştirdim. Bu sefer sınıfı '' etiketine ekliyorum, hem 'class =" "hem de" lang = "" 'bir“ EN-EN ”formatı oluşturan özellikler. Erişilebilirlik cihazları bunu düzeltir. – Lanti