WordPress 做一个多语言网站,或者让我们的主题支持多种语言,那么就可以使用load_theme_textdomain()函数来定义主题的语言路径,只要将语言放到该目录下面且命名正确,就可以生效。
描述
加载主题的翻译字符串。
如果当前语言环境以主题的根目录中的.mo文件形式存在,那么$ domain将包含在翻译的字符串中。
该文件的.mo必须根据区域设置准确命名,sv_SE.mo例如。
用法
<?php load_theme_textdomain( $domain, $path ) ?>
参数
$domain
(字符串)(必需)用以检索被翻译字符串的唯一标识符
默认值: None
$path
(未知)(可选)语言包 .mo 文件所在的目录(没有结尾的斜线)
默认值:false
返回值
(布尔)
如果 textdomain 可以正常加载,返回 TRUE ;反之返回 FALSE
例子
第一个例子
add_action('after_setup_theme','my_theme_setup');
function my_theme_setup(){
load_theme_textdomain('my-theme',get_template_directory()。'/ languages');
}
以上例子,指明主题的语言目录位于该主题的 languages 文件夹。
需要注意的是,WordPress主题语言包不像插件语言包,如果你将主题语言包命名为my_theme-zh_CN.mo ,它是没办法使用的。正确的命名方式是根据本地语言设置命名来命名,比如 zh_CN.mo
第二个例子
如果主题页面中提供语言切换的功能,可通过http://youdomain/?lan=zh-CN的形式切换语言,则需要在functions.php中加入:
//更改本地语言
//必须在load_theme_textdomain()之前调用
add_filter( 'locale', 'my_theme_localized' );
function my_theme_localized($locale) {
if (isset($_GET['lan'])) {
return $_GET['lan'];
}
return $locale;
}
load_theme_textdomain( 'my_theme', get_template_directory(). '/languages' );
//设置主题语言目录
//主题翻译可以在my_theme / languages /目录中提交
// WordPress翻译可以在wp-content / languages /目录中提交
load_theme_textdomain('my_theme_textdomain',get_template_directory()。'/ languages');