17713433920 info@mac163.com
如何国际化WordPress进行本地化
如何国际化WordPress进行本地化

哇!如果您想知道这篇文章是什么意思,请不要担心您不是唯一的一个!如您所知,WordPress被翻译成多种语言,但是插件或主题经常包含一些未翻译成您自己的语言的字符串,这不仅令人沮丧,而且令人不快。

那么为什么会这样呢?可能是因为开发人员并未像国际化那样使用它们。也就是说,使用WordPress中包含的特定功能可以轻松翻译所有内容。

步骤1 –载入翻译文件

创建主题的第一步是加载翻译文件,有很多方法可以使用,但是最简单的方法是使用以下代码:

add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
    load_theme_textdomain('my_theme', get_template_directory() . '/languages');
}

使用插件时,几乎是一样的:

function myplugin_init() {
  load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) ); 
}
add_action('plugins_loaded', 'myplugin_init');

现在,文件已加载到“语言”文件夹下,您可以使用POedit  免费软件创建.pot或.po文件。

步骤2 –翻译字串

当您需要字符串可翻译时,您需要将字符串包含包含到函数中。最常用的函数是_e()和__()。以下是使用__()的示例:

echo '<p>' . __( 'This is the string content', 'textdomain' ) . '</p>';

此函数返回的字符串包含什么,但不打印出来。这就是为什么我们需要使用echo的原因。但是_e()函数在不使用echo或print的情况下打印包含的字符串:

echo '<p>';
_e( 'This is the string content', 'textdomain' );
echo '</p>';

步骤3 –翻译包含变量的字符串

但是有时您的字符串可能包含变量。使用_e()和__()不起作用。因此,在这种情况下,您需要使用printf()和sprintf()函数。如前所述,printf()在sprintf()存储字符串时回显该字符串。

echo '<p>';
printf( __( 'I bought %d books.' ), $_books_count );
echo '</p>';

echo '<p>';
echo sprintf( __( 'I bought %d books.' ), $_books_count );
echo '</p>';

步骤4 –具有多个变量的字符串

如果字符串包含多个变量,请使用以下代码:

printf( __( 'I bought %1$s books, and %2$s tomatoes.' ), $books_count, $tomatoes_count );

步骤5 –处理复数

在上面的示例中,我买了书和西红柿。但是我只买了一本书吗?该代码将打印“ 1本书”,这是不正确的。因此,要处理复数,还有另一个函数称为_n()。使用方法如下:

printf( _n( 'i bought %d book.', 'i bought %d books.', $books_count ), $books_count );

步骤6 –上下文

有时,一个单词因其上下文而可能具有不同的含义。然后,您可以使用这些函数_x()和_ex()。第二个回显该字符串,而第一个仅存储其内容。这些函数还有第二个参数来解释其上下文。例如,如果一个单词在页面中使用了两次,但是在内容和侧边栏中具有不同的含义,那么您的代码将看起来像这样:

/*
APPARENT (obvious vs. not clear) — It was apparent to all, Joe was the apparent loser. 
Two different contexts for the word "apparent"
*/

// In the content
echo _x( 'apparent', 'in_content', 'my-plugin-domain' );

// In the sidebar
echo _x( 'apparent', 'in_sidebar', 'my-plugin-domain' );

步骤7 – JavaScript国际化

最后,当需要在javascript文件中翻译字符串时,可以使用通过wp_localize_script()在抄本中定义的方法。

// In your PHP file:

wp_enqueue_script( 'script-handle', … );
wp_localize_script( 'script-handle', 'objectL10n', array(
	'speed'  => $distance / $time,
	'submit' => __( 'Submit', 'my-plugin-domain' ),
) );

// in the javascript file:

$('#submit').val(objectL10n.submit);
$('#speed').val('{speed} km/h'.replace('{speed}', objectL10n.speed));

只需替换您自己的变量就可以了!


微信二维码

微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!


需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部