显示活动语言标志

问题描述

我正在使用WPML和他的切换器来更改网站的语言。到目前为止,一切都运行良好,只是活动语言标记未更改为显示当前语言。

这是我到目前为止编写的代码。它只是始终显示第一个标志,而不会将其更改为活动标志。

<?php
if(function_exists('icl_get_languages')):
    $languages = icl_get_languages('skip_missing=0');
    if(count($languages) >= 1):
?>
        <div class="topbar-lang-switcher">
            <ul class="lang-switcher-polylang"> 
<?php 
        foreach((array)$languages as $language):            
?>
                <li class="current-lang"> 
                    <a rel="alternate" hreflang="<?php echo $language['language_code']; ?>" href="<?php echo $language['url']; ?>">
                    <img src="<?php echo $language['country_flag_url']; ?>" alt="<?php echo $language['native_name']; ?>" title="<?php echo $language['native_name']; ?>" />
                    <span><?php echo $language['language_code']; ?>  </span>  
                    </a> 
                </li>
<?php
        endforeach;
?>
            </ul>
        </div>
<?php
    endif;
endif;
?> 

有人可以帮助您将标志更改为当前使用的语言吗?

解决方法

根据WPML的官方documentationicl_get_languages()函数返回具有以下格式的语言数组:

Array
(
 [en] => Array
  (
   [id] => 1
   [active] => 1
   [native_name] => English
   [missing] => 0
   [translated_name] => English
   [language_code] => en
   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/en.png
   [url] => http://yourdomain/about
  )

 [fr] => Array
  (
   [id] => 4
   [active] => 0
   [native_name] => Français
   [missing] => 0
   [translated_name] => French
   [language_code] => fr
   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/fr.png
   [url] => http://yourdomain/fr/a-propos
  )

 [it] => Array
  (
   [id] => 27
   [active] => 0
   [native_name] => Italiano
   [missing] => 0
   [translated_name] => Italian
   [language_code] => it
   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/it.png
   [url] => http://yourdomain/it/circa
  )
)

有一个active字段,用于说明当前语言。这样您就可以拥有类似的内容:

...
        foreach((array)$languages as $language):            
?>
                <li <?php echo ($language['active'] == 1) ? 'class="current-lang"' : '' ?>> 
                    <a rel="alternate" hreflang="<?php echo $language['language_code']; ?>" href="<?php echo $language['url']; ?>">
                    <img src="<?php echo $language['country_flag_url']; ?>" alt="<?php echo $language['native_name']; ?>" title="<?php echo $language['native_name']; ?>" />
                    <span><?php echo $language['language_code']; ?>  </span>  
                    </a> 
                </li>
<?php
        endforeach;
...

这样,仅活动(当前)语言的<li>将具有current-lang类。之后,您所需要做的就是应用正确的CSS。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...