没有textdomain的wordpress主题的本地化

时间:2010-07-28 02:13:37

标签: wordpress localization themes

我有一个没有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会是什么。任何帮助将不胜感激。

优素福

3 个答案:

答案 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);