WordPress 多语言插件PolyLang使用教程

2,579 阅读2分钟

在做企业建站的时候,跨域国际的都会需要多语言版本网站。poylang 是一款免费的多语言翻译插件。

效果

以下为我使用wordpress开发的一个企业网站 k1.gif

PolyLang 简介

这是基于wordpress建站平台上的一款免费的多语言管理插件,可以通过该插件,实现多语言分别管理。对于官网,人工翻译的精准度肯定是比自动翻译要高的。 安装之后,在wordpress管理后台中可通过以下图,来切换你后台的语言展示

1652175300(1).jpg 通过以下,可以分别管理你的不同语言的文章。十分便利

1652175428(1).png

PolyLang 使用

在wordpress建站后台,通过插件搜索即可进行安装。安装之后,启动该插件即可。刷新之后你的后台会出现“语言”菜单栏

1、可以添加你所需要的语言

设置"★"为默认的语言 1652232343.png 在文章管理处,即可开始多语言管理文章:

要注意的是:无论是文章,还是分类,标签,页面,菜单配置中等,都是中英文双份管理。可以理解为,其实这个插件,是创建了两个网站,中英文版本各分别管理

image.png

2、页面上的语言切换器

2.1 安装插件之后,在外观》菜单处,即添加上语言切换器。

image.png

2.2 自定义模板-自定义菜单

如果没有菜单自定义的菜单,可以在自定义的主题文件function.php中开启的你自定义菜单栏

/* 
?开启导航菜单 
!register_nav_menu
*/
register_nav_menu('menus', '顶部导航');
register_nav_menu('footer', '底部链接菜单配置');

因为设置了中英文,所以需要创建4个菜单。

image.png

在所需要展示菜单的地方直接wp_nav_menu使用: 例如header.php 模板文件

wp_nav_menu(array(
    'themen_location' => 'menus', // 定义的菜单标识
    'container' => false, // 模板是ul-li模式,是否需要自定义dom结构
    'menu_id' => 'menu' // 定义的菜单id
))

2.3 通过API自定义随意放置语音切换器

pll_the_languages:获取语言切换器

// 输出ul形式的多语言切换按钮
<?php pll_the_languages();?>

通过下拉框来展示多语言切换按钮,样式可以后期自定义处理。与通过菜单栏形式导入的切换器是一样的

<?php
    $array = array(
        'dropdown' =>1
    )
    pull_the_languages($array)
?>

$array传入的常用API(都为可选参数)

'dropdown'=>如果设置为0,则显示列表;如果设置为1,则显示下拉列表(默认值:0'show_names'=>如果设置为1,则显示语言名称(默认值:1'display_names_as'=>'name''slug'(默认:'name''show_flags'=>如果设置为1,则显示标志(默认值:0'hide_if_empty'=>如果设置为1,则隐藏没有帖子(或页面)的语言(默认值:1'force_home'=>强制链接到主页,如果设置为1(默认值:0'echo'=>回声如果设置为1,则返回一个字符串,如果设置为0(默认值:1'hide_if_no_translation'=>如果设置为1,则不存在翻译时隐藏语言(默认值:0'hide_current'=>如果设置为1,则隐藏当前语言(默认值:0'post_id'=> if set,显示由post_id定义的帖子(或页面)翻译的链接(默认值:空)
'raw'=>使用它来创建您自己的自定义语言切换器(默认值:0

当切换的结构不能满足你的需求,可以使用raw自定渲染切换器
'raw' 返回的是一个多元数组,每个语言都有以下内容

  • id => 语言id
  • slug => urls 中使用的语言代码
  • name => 语言名称
  • url => 翻译的url
  • flag => 语言国旗的url
  • current_lang => 如果显示的是当前的语言为true,其他情况为false
  • no_translation => 如果没有可用的翻译为true, 其他的情况为false

举个例子:

<div class="lan">
    <?php 
        echo pll_current_language('name'); // 获取当前的语言
    ;?>
    <div class="sub-menu">
        <?php
            $array = array(
              'dropdown' => 1,
              'raw' => 1
            );
            $lan = pll_the_languages($array);
            foreach ($lan as $item) {
              print_r("<a href={$item['url']}>{$item['name']}</a>");
            }
        ?>
    </div>
</div>

只需要更改你所需的样式和交互即可 image.png

pll_current_language:获取当前的语言

pll_current_language($value);

参数默认为 slug :参数如下

  • slug 返回当前语言代码, 如:1
  • name 返回当前语言名称, 如:中文
  • locale 返回当前语言的标识,如:zh_CN

pll_default_language 获取默认语言

pll_default_language($value) //参数与上面pll_current_language一致

3、自定义一些字符串翻译

在 自定义 模板研发中,可能有些字符串,在主题内就需要翻译的。可通过 语言》字符串翻译 管理中,自定义一些字符串翻译。

image.png

如何开启这些自定义字符串,需在function.php中定义

/* 翻译 */
function codebyecom_after_setup_theme()
{
  if (function_exists('pll_register_string')) {
    pll_register_string('contact_us', '联系我们');
    pll_register_string('hotline', '服务热线');
  }
}
add_action('after_setup_theme', 'codebyecom_after_setup_theme');

function pl_e($string = '')
{
  if (function_exists('pll_e')) {
    pll_e($string);
  } else {
    echo $string;
  }
}

在需要的地方(pll_e)使用:
例如, 在footer.php

 <div class="contact" id="shanyun-contact">
    <div><?php echo pll_e('服务热线') ?></div>
    <a href="tel:0101-123456">0101-123456</a>
    <div><?php echo pll_e('业务合作') ?></div>
    <a href="mailto:service@xxxx.cn">service@xxxx.cn</a>
</div>