/
Language switcher for reservation form
Language switcher for reservation form
In case you want to implement language switcher just for reservation form, and not for entire web site, then this manual will help you.
Â
Install dependent plugin
Install and activate dependent plugin, where styles are taken out for language selection
Translate WordPress with GTranslate
Add HTML block to the page
Add HTML block to the reservation page, just before reservation plugin short code, and copy paste code snippet below. This will render needed languages to switch. Adjust needed languages in similar way.
When language is selected, query parameter lang will be added to the reservation page url, and page will be reloaded with selected language. You can add query parameter lang to the page url, when client navigates to the page, so that default language will be loaded.
Â
<style>
.lang-switcher {
display: inline-flex;
gap: 10px;
align-items: center;
font-family: Arial, sans-serif;
}
.lang-switcher button {
background: none;
border: 2px solid #ccc;
padding: 5px 10px;
cursor: pointer;
border-radius: 5px;
font-weight: bold;
display: flex;
align-items: center;
gap: 5px;
transition: border-color 0.3s;
}
.lang-switcher button img {
width: 20px;
height: 14px;
display: inline-block;
}
.lang-switcher button.active,
.lang-switcher button:hover {
border-color: #673ab7;
color: #673ab7;
}
</style>
<div class="lang-switcher" id="langSwitcher">
<button data-lang="lt_LT" title="Lithuanian">
<img src="/wp-content/plugins/gtranslate/flags/24/lt.png" alt="lt" /> Lithuanian
</button>
<button data-lang="ru_RU" title="Russian">
<img src="/wp-content/plugins/gtranslate/flags/24/ru.png" alt="ru" /> Russian
</button>
<button data-lang="en_US" title="English">
<img src="/wp-content/plugins/gtranslate/flags/24/en.png" alt="en" /> English
</button>
</div>
<script>
(function(){
const switcher = document.getElementById('langSwitcher');
const buttons = switcher.querySelectorAll('button');
// Get current lang from URL param or default to 'en'
function getCurrentLang() {
const params = new URLSearchParams(window.location.search);
const lang = params.get('lang');
return ['lt_LT', 'ru_RU', 'en_US'].includes(lang) ? lang : 'en_US';
}
function setActive(lang) {
buttons.forEach(btn => {
btn.classList.toggle('active', btn.dataset.lang === lang);
});
}
function reloadWithLang(lang) {
const url = new URL(window.location.href);
url.searchParams.set('lang', lang);
window.location.href = url.toString();
}
// Initial active lang set
const currentLang = getCurrentLang();
setActive(currentLang);
// Add click event to buttons
buttons.forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const selectedLang = btn.dataset.lang;
if(selectedLang !== currentLang) {
reloadWithLang(selectedLang);
}
});
});
})();
</script>
Â
, multiple selections available,