在做企业建站的时候,跨域国际的都会需要多语言版本网站。poylang 是一款免费的多语言翻译插件。
效果
以下为我使用wordpress开发的一个企业网站
PolyLang 简介
这是基于wordpress建站平台上的一款免费的多语言管理插件,可以通过该插件,实现多语言分别管理。对于官网,人工翻译的精准度肯定是比自动翻译要高的。 安装之后,在wordpress管理后台中可通过以下图,来切换你后台的语言展示
通过以下,可以分别管理你的不同语言的文章。十分便利
PolyLang 使用
在wordpress建站后台,通过插件搜索即可进行安装。安装之后,启动该插件即可。刷新之后你的后台会出现“语言”菜单栏
1、可以添加你所需要的语言
设置"★"为默认的语言
在文章管理处,即可开始多语言管理文章:
要注意的是:无论是文章,还是分类,标签,页面,菜单配置中等,都是中英文双份管理。可以理解为,其实这个插件,是创建了两个网站,中英文版本各分别管理
2、页面上的语言切换器
2.1 安装插件之后,在外观》菜单处,即添加上语言切换器。
2.2 自定义模板-自定义菜单
如果没有菜单自定义的菜单,可以在自定义的主题文件function.php中开启的你自定义菜单栏
/*
?开启导航菜单
!register_nav_menu
*/
register_nav_menu('menus', '顶部导航');
register_nav_menu('footer', '底部链接菜单配置');
因为设置了中英文,所以需要创建4个菜单。
在所需要展示菜单的地方直接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>
只需要更改你所需的样式和交互即可
pll_current_language:获取当前的语言
pll_current_language($value);
参数默认为 slug :参数如下
slug返回当前语言代码, 如:1name返回当前语言名称, 如:中文locale返回当前语言的标识,如:zh_CN
pll_default_language 获取默认语言
pll_default_language($value) //参数与上面pll_current_language一致
3、自定义一些字符串翻译
在 自定义 模板研发中,可能有些字符串,在主题内就需要翻译的。可通过 语言》字符串翻译 管理中,自定义一些字符串翻译。
如何开启这些自定义字符串,需在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>