通过localStorage更改语言

时间:2020-11-08 14:20:44

标签: javascript php html local-storage

使用<select> <option value = ""> </option>更改了网站上的语言。

<select class="tt-select" id="lang" name="forma" onchange="location = this.value;">
    <option value="<?php echo htmlspecialchars(return_i18n_setlang_url('en')); ?>">ENG</option>
    <option value="<?php echo htmlspecialchars(return_i18n_setlang_url('ru')); ?>">RUS</option>
    <option value="<?php echo htmlspecialchars(return_i18n_setlang_url('de')); ?>">DEU</option>
    <option value="<?php echo htmlspecialchars(return_i18n_setlang_url('es')); ?>">SPA</option>                             </select>

选择语言后,将重新加载页面并显示列表中的第一个值。如何显示所选语言?

他们建议使用localStorage,但我对此一无所知。我使用Google来完成此操作,但无法正常工作::

<script>
         (function(){
                var select = document.querySelector('#lang');
                if (localStorage.selectedIndex !== undefined) {
                    select.selectedIndex = localStorage.selectedIndex;
                }
                select.onchange = function() {
                    localStorage.selectedIndex = this.selectedIndex;
                }
            })()
</script>

代码<?php echo htmlspecialchars(return_i18n_setlang_url('es')); ?>强制网站以所需的语言提供内容。我了解它需要以其他方式给出,但我不知道如何

1 个答案:

答案 0 :(得分:0)

我完全不会使用js,PHP知道您选择的语言,使用它来在适当的selected中打印<option>属性:

// assuming the PHP variable $lang contains the selected language
<select class="tt-select" id="lang" name="forma" onchange="location = this.value;">
    <option <?php echo $lang == "en" ? "selected" : "" ?> value="<?php echo htmlspecialchars(return_i18n_setlang_url('en')); ?>">ENG</option>
    <option <?php echo $lang == "ru" ? "selected" : "" ?> value="<?php echo htmlspecialchars(return_i18n_setlang_url('ru')); ?>">RUS</option>
    <option <?php echo $lang == "de" ? "selected" : "" ?> value="<?php echo htmlspecialchars(return_i18n_setlang_url('de')); ?>">DEU</option>
    <option <?php echo $lang == "es" ? "selected" : "" ?> value="<?php echo htmlspecialchars(return_i18n_setlang_url('es')); ?>">SPA</option>
</select>
相关问题