当我们安装主题和插件时,都会向…
哇!如果您想知道这篇文章是什么意思,请不要担心您不是唯一的一个!如您所知,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开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!