Китайский флаг не меняется в переключателе языков
-
13-12-2019 - |
Вопрос
На мой веб-сайт:если я переключусь на Китайский язык то флаг ничего не меняется в переключателе языков?Другие языки работают нормально.Напр.если вы переключитесь на Французский, на нем изображен французский флаг...
Это язык.phtml Я использую:
<?php if(count($this->getStores())>1): ?>
<div class="polyglot-language-switcher" data-grid-columns="1" data-anim-effect="fade" data-open-mode="click" data-anim-speed="0.1" >
<ul style="display: none">
<?php foreach ($this->getStores() as $_lang):?>
<li><a href="<?php echo $_lang->getCurrentUrl() ?>" title="<?php echo $this->htmlEscape($_lang->getName()) ?>" data-lang-id="<?php echo $this->htmlEscape($_lang->getCode()) ?>"><img src="<?php echo $this->getSkinUrl('images/flags/' . $_lang->getCode() . '.png');?>" alt=""> <?php echo $this->htmlEscape($_lang->getName()) ?></a></li>
<?php endforeach;?>
</ul>
</div>
<?php endif; ?>
Решение
Копаясь в ваших файлах javascript, я нашел этот фрагмент
$j('.polyglot-language-switcher').polyglotLanguageSwitcher({
selectedLang: function () {
return $j('html').attr('lang');
}
});
Который в основном использует lang
атрибут HTML-тега для установки текущего языка.Тестируя это в нескольких магазинах, язык всегда устанавливается правильно.
<html lang="en" id="top" class="no-js">
для английского языка,
<html lang="en" id="top" class="no-js">
для французского...Но для китайцев <html lang="zh" id="top" class="no-js">
И поскольку вы используете этот код CN
но язык - это ZH it doesn't match.
ZH
это код языка ISO2, который использует Magento, в то время как средство переключения языков использует предоставленные вами коды хранилища.Самое быстрое и понятное решение - просто изменить код хранилища на ZH
.Любое другое решение потребовало бы жесткого переписывания кода