我有一个没有textdomain的wordpress主题(即e(x)而不是e(x,domain))。我还将.po和.mo文件放在/ themes / My Theme / localization下的文件夹中(注意我主题中的空格名称)。我想激活fr_FR。我创建了fr_FR.po和.mo并更改了wp-config以添加fr_FR的语言环境。但是,我仍然没有让法国人工作。我看到许多网站告诉你在functions.php的顶部添加一个load_theme_textdomain,但我不知道我的textdomain会是什么。任何帮助将不胜感激。
优素福
答案 0 :(得分:6)
要使主题本地化工作,您需要浏览主题并为每个_e()
和__()
函数调用添加一个域。这样:
_e('some text');
__('some other text');
必须成为这个:
_e('some text', 'your-domain');
__('some other text', 'your-domain');
接下来,您需要在functions.php文件的顶部添加这段代码:
load_theme_textdomain( 'your-domain', TEMPLATEPATH.'/localization' );
$locale = get_locale();
$locale_file = TEMPLATEPATH."/localization/$locale.php";
if (is_readable($locale_file))
require_once($locale_file);
您可以详细了解in this post。
答案 1 :(得分:5)
添加您自己的文字域名。我最近做了一个主题,不是为本地化而设计的,所以我发布的是我做的。
将此添加到functions.php
load_theme_textdomain( 'your-domain', TEMPLATEPATH.'/languages' );
其中your-domain
可以是任何名称,但在所有主题文件中保持统一。
现在浏览所有主题PHP文件,并执行以下操作:
如果您看到_e('some text')
,请将其更改为_e('some text', 'your-domain');
如果您看到__('some text')
,请将其更改为__('some text', 'your-domain');
如果您看到"some text"
没有__()
或_e()
,那么
如果在函数调用中使用"some text"
,则将其设为__()
,如上所述,包括文本域
如果"some text"
刚刚打印而不是任何函数调用的一部分,请使用上面显示的_e()
进行覆盖,并且不要忘记文本域。
阅读Wordpress internationalization and localization guide了解更多信息。
答案 2 :(得分:0)
在一系列令人难以置信的论坛经历了一切正常工作的相同步骤之后,我终于找到了导致这个问题的原因。
如果服务器在wordpress有bash之前设置全局$locale
,则wordpress使用服务器的语言环境设置(在wp-includes/l10n.php
文件中,函数get_locale
)。
我使用的解决方案是在定义WPLANG
旁边设置全局$ locale ......
global $locale;
$locale = 'am_AM';
define('WPLANG', $locale);