【问题标题】:WordPress localization is not working on pluginWordPress 本地化不适用于插件
【发布时间】:2013-11-16 09:30:29
【问题描述】:

我有一个插件要翻译。我完成了以下任务:

加载了文本域:

$my_td = 'mysignup';
function my_signup_textdomain_init() {
    global $my_td;
    load_plugin_textdomain( $my_td, false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action('plugins_loaded', 'my_signup_textdomain_init');

在 wp_plugin_folder\my_signup\languages(用于孟加拉语 bn_BD)中添加了语言文件(po、pot、mo):

  • mysignup.pot
  • mysignup.mo
  • bn_BD.po
  • bn_BD.mo

更改了 wp_config.php 文件中的语言代码:

define('WPLANG', 'bn_BD');

但问题是没有任何改变。我不确定我做错了什么。我已经阅读了很多文章和答案。我仍然需要帮助来了解如何测试我所做的一切都很好以及如何解决问题。

请帮助我。提前致谢。

【问题讨论】:

  • 你的意思是global $my_td;global $nl_td;是什么??
  • 请检查我的代码的第一行。 $my_td = 'mysignup';
  • 是的,我看到了,但它是一个不同的变量 .. $my_td != $nl_td .. $nl_td == "typo" ??
  • 谢谢。抱歉,这是我的打字错误:(
  • 错误只出现在 SE 或代码中?它现在工作吗?如果是,请接受关闭答案。如果不是 - 详细说明问题..

标签: php localization wordpress


【解决方案1】:

首先 - 什么是全局 $nl_td; 你是说全局 $my_td; 吗?

第二 - 你似乎错过了 .po 文件(例如 mysignup.po ) - 你不需要 bn_BD.pobn_BD.mo

第三 - 尝试像这样加载(没有不必要的变量):

load_plugin_textdomain( 'mysignup', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );

第四 - 确保你所有的字符串都是这样的:__('string','mysignup');

编辑我评论后:

您在评论中写道:

__('First Name field is required', $nl_td) and _e('First Name field is required', $nl_td)

再次-据我所知,您的代码非常受限-$nl_td 未定义。 $my_td 已定义。

只需用简单的字符串 mysignup 替换所有这些变量。

您的代码可能是某种cut&paste - 但如果您希望它们正常工作或确保它们始终保持一致,您必须了解这些变量的含义。

编辑 II(现在您将评论从 $nl_td 编辑到 $my_td 似乎您开始理解 - 也编辑您的代码 .. :-) 那么它会一直工作是全球性的。但最好只写一个字符串。 )

【讨论】:

  • 我的字符串是__('First Name field is required', $my_td)_e('First Name field is required', $my_td)。也听从了你的建议。但又倒霉了。 :(
  • 是的,当我用字符串替换变量时,它正在工作。谢谢
  • 好。并且不要忘记删除bn_BD.pobn_BD.mo - 如果你做的正确,你就不需要它们。
  • 我不知道你的插件在做什么,它是如何编写的,它应该如何工作,或者网站的其他部分是怎样的。现在,如果您更改了所有字符串,那么这是在插件中加载文本域的正确方法。我认为其他问题最适合另一个问题??
  • 请为此打开一个新问题。这完全超出了原始问题的范围。 ( 但基本上你只需要制作新的.po .mo 文件并将它们放入文件夹中。
猜你喜欢
  • 2011-07-21
  • 2012-09-23
  • 2018-06-21
  • 2017-07-28
  • 1970-01-01
  • 2018-03-12
  • 2014-08-12
  • 2019-06-03
  • 1970-01-01
相关资源
最近更新 更多