微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wordpress 插件翻译不起作用

如何解决wordpress 插件翻译不起作用

我创建了一个插件“translation_test”来测试 wordpress 的翻译能力。

翻译文件

在languages目录中有一个translation_test.pot文件,其中包含:

msgid "Testing"
msgstr ""

一个文件 translation_test-de_DE.po:

msgid "Testing"
msgstr "Das ist ein test"

使用 gettext 我用这个命令创建了相应的 .mo 文件

msgfmt translation_test-de_DE.po -o translation_test-de_DE.mo

我已将所有 3 个文件上传插件的语言目录:./translation_test/languages/

插件PHP文件

还有一个名为“translation_test”的 PHP 文件,其中加载了 textdomain 并创建了一个管理页面显示翻译的文本:

<?PHP

/*
Plugin Name: translation_test
Plugin URI: 
Description: translation_test
Version: 1.0
Author: 
Author URI: 
Text Domain: translation_test
*/

function translation_test_init_textdomain()
{
    load_plugin_textdomain( 'translation_test',false,dirname( plugin_basename( '__FILE__' ) ) . '/languages/' );
}
add_action( 'init','translation_test_init_textdomain' );

/**
 * Register a custom menu page.
 */
function wpdocs_register_my_custom_menu_page(){
    add_menu_page( 'title','custom menu','manage_options','custompage','my_custom_menu_page','',6 ); 
}
add_action( 'admin_menu','wpdocs_register_my_custom_menu_page' );
 
function my_custom_menu_page()
{
    echo __( 'Testing','translation_test' );
}

?>

语言设置

wordpress 的管理区域中,我将语言设置为德语,另外我在 wp-config.php 文件添加了以下行:

define ('WPLANG','de_DE');

遗憾的是翻译不起作用,它总是显示“测试”。有谁知道错误在哪里?是否有一些基本的插件模板具有工作翻译,我可以使用它作为起点?

解决方法

试试这个:

//get User Locale
$user_locale = get_user_locale();

// load text domain and .mo file
load_textdomain('your_text_domain',$_SERVER['DOCUMENT_ROOT'].'/wp-content/plugins/your_plugin/your_text_domain-'.$user_locale.'.mo');

// function to use with locale hook
function wpsx_redefine_locale($locale){
  global $user_locale;
  if ($user_locale == ''){
    return "en_US";
  } else {
    return $user_locale;
  }
}

// define locale hook
add_filter('locale','wpsx_redefine_locale',10);
// test translation
echo __('test','your_text_domain');

观察: 我使用 LOCO translate 来管理我的文本域以及 .mo 和 .po 文件。 https://br.wordpress.org/plugins/loco-translate/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。