Я не очень знаком с .ejs, но (глядя на другой код, который вы разместили в своем комментарии), похоже, что вы сможете "передать" выбранный язык из req.params.lang
и затем сделать его доступнымв ваших .ejs-шаблонах.
Что-то вроде:
router.get('/:lang', function (req, res) {
const languageMap = {
"en": "English",
"fr": "French"
};
const selectedLang = req.params.lang;
const name = languageMap[selectedLang];
// pass the value down to index.ejs which in turn renders header.ejs
res.render('index.ejs', { selectedLanguageName: name });
});
А потом в вашем header.ejs
.Вы должны иметь в своем распоряжении selectedLanguageName
, используя синтаксис <%= yourVariableNameHere %>
<button id="language" class="btn btn-warning dropdown-toggle" type="button" id="dropdownMenu2"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" onclick="clickButton()">
<%= selectedLanguageName %>
</button>
<div id="languagelist" class="dropdown-menu" aria-labelledby="dropdownMenu2" onclick="clickItem(); return false">
<a class="dropdown-item" href="/en">English</a>
<a class="dropdown-item" href="/fr">French</a>
</div>
В этом руководстве я нашел некоторую полезную информацию: https://scotch.io/tutorials/use-ejs-to-template-your-node-application
Возможно, потому что index.ejs
Включает в качестве «частичного», вы должны явно передать переменную к нему, когда вы включаете его.
<%- include('header.ejs', {selectedLanguageName: selectedLanguageName}); %>
или что-то вроде этого.
У Ejs довольно хорошая документация по основам, вероятно, стоит проверить https://ejs.co/#docs