主题的文本域和language.PO文件不起作用

时间:2014-03-10 作者:Steve

我无法让我的翻译在我的主题中工作。这是我的

在函数中。php,我有:

load_theme_textdomain( \'transparent\', get_template_directory_uri() .\'/languages\' );
我有

/主题/语言/透明-en\\U US。采购订单,

其中包含:

# English translations for Transparent package.
# Copyright (C) 2014 Steven Doig
# This file is distributed under the same license as the Transparent package.
# Automatically generated, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: my-pluginname 1.0\\n"
"Report-Msgid-Bugs-To: \\n"
"POT-Creation-Date: 2012-08-06 13:46-0400\\n"
"PO-Revision-Date: 2013-03-21 11:20+0400\\n"
"Last-Translator: Automatically generated\\n"
"Language-Team: none\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=utf-8\\n"
"X-Poedit-SourceCharset: iso-8859-1\\n"
"Content-Transfer-Encoding: 8bit\\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\\n"
"X-Generator: Poedit 1.5.4\\n"


#: header.php:58
msgid "thanks-for-visiting"
msgstr "Hello!  Thank you for visiting.  Take a look around and subscribe to the "

#: header.php:60
msgid "subscribe-by-email"
msgstr "subscribe by email"

#: header.php:62
msid "for-updates"
msgstr "for updates."
在标题中。php,从第58行开始,我有:

<p><?php echo __("thanks-for-visiting", \'transparent\'); ?><a href="<?php bloginfo(\'rss2_url\'); ?>" title="<?php bloginfo(\'name\'); ?> RSS feed">RSS feed</a> 
    <?php if (of_get_option(\'feedburner\', \'\') !== \'\') {?>
        or <a href="http://feedburner.google.com/fb/a/mailverify?uri=<?php echo of_get_option(\'feedburner\', \'no entry\');?>&amp;loc=en_US" target="_blank"><?php echo __("subscribe-by-email", \'transparent\'); ?></a> 
    <?php } ?>
    <?php echo __("for-updates", \'transparent\'); ?></p>
以我的风格。css我有以下内容

/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Transparent responsive two-column theme.
Tags: green, two-columns, right-sidebar
Author:Steven Doig
Author URI:http://tech.doig.com.au
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Version:1.2
*/
然而,在front end, 我明白了:

感谢访问RSS提要以获取更新

你能明白为什么这个翻译不起作用吗?

3 个回复
SO网友:Pieter Goosen

在检查了你的主题之后,这就是我想到的。我冒昧地加入了鲁本的解决方案,以使这个答案尽可能完整。

这里有几个问题:

数字1。load_theme_textdomain( \'transparent\', get_template_directory_uri() .\'/languages\' );

应为:

    function transparent_theme_setup() {
    load_theme_textdomain( \'transparent\', get_template_directory() . \'/languages\' );

    $locale = get_locale();
    $locale_file = get_template_directory() . "/languages/$locale.php";

    if ( is_readable( $locale_file ) ) {
        require_once( $locale_file );
    }
}
add_action( \'after_setup_theme\', \'transparent_theme_setup\' );
必须始终在中调用语言文件after_setup_theme

而且get_template_directory_uri()

应该是

get_template_directory().

2号。<?php echo __("thanks-for-visiting", \'transparent\'); ?>.

完全错了。首先,永远不要使用" 在翻译字符串中。翻译程序无法识别它,将跳过该字符串。始终使用\'. 其次,不要echo 带的字符串echo. _e 应在这种情况下使用。因此,字符串应如下所示:<?php _e(\'thanks-for-visiting\', \'transparent\'); ?>.

3号。样式表标题中未设置文本域。添加Text Domain: transparent 就在收盘价上方*/ 在标题中。因此,标题应如下所示:

/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Transparent responsive two-column theme.
Tags: green, two-columns, right-sidebar
Author:Steven Doig
Author URI:http://tech.doig.com.au
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Version:1.2
Text Domain: transparent
*/
数字4。采购订单文件的命名错误,因此您的生产订单文件应该是。somename-en_US.posomename-en_US.mo 仅由插件使用。主题仅使用文件名en_US.poen_US.mo

5号。您的采购订单文件创建错误。创建采购订单文件的步骤poedit, 按照以下步骤操作。请注意,我的诗是用南非荷兰语写的。

打开poedit并选择创建目录的选项。将出现以下屏幕

image1.

如图所示,填写必填字段。

现在单击“源路径”选项卡并完成,如图所示。使用. 如果您的语言文件位于主目录中,请在“路径”字段中使用.. 如果语言文件位于类似于语言的文件夹中

image2

现在单击“Sources keywords”选项卡并填写,如图所示。

image3

现在将poedit文件另存为en_US.po 在语言文件中。请务必将采购订单文件直接保存在必须保存的位置,否则将无法正常工作。Poedit现在将搜索所有字符串并将其添加到您的po文件中。采购订单文件保存时,会自动创建生产订单文件。

最后,您的采购订单标题应如下所示

 msgid ""
msgstr ""
"Project-Id-Version: Transparent v1.2\\n"
"POT-Creation-Date: 2014-03-12 16:25+0200\\n"
"PO-Revision-Date: 2014-03-12 16:28+0200\\n"
"Last-Translator: Pieter Goosen <[email protected]>\\n"
"Language-Team: Transparent <[email protected]>\\n"
"Language: en\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"X-Generator: Poedit 1.5.5\\n"
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;_n:1,2;_x:1,2c;_ex:1,2c\\n"
"X-Poedit-Basepath: .\\n"
"Plural-Forms: nplurals=2; plural=n != 1;\\n"
"X-Poedit-SourceCharset: UTF-8\\n"
"X-Poedit-SearchPath-0: ..\\n"
如需进一步阅读,请检查this 辅导的当我开始翻译时,它真的帮助了我。希望这有帮助。

SO网友:Ruben Bristian

不使用get_template_directory_uri(). 使用get_template_directory() 相反您的代码应如下所示:

    load_theme_textdomain( \'transparent\', get_template_directory() . \'/languages\' );

    $locale = get_locale();
    $locale_file = get_template_directory() . "/languages/$locale.php";

    if ( is_readable( $locale_file ) ) {
        require_once( $locale_file );
    }

SO网友:MegaWork

使用时load_theme_textdomain 您的语言文件名必须完全基于语言环境命名。命名它en_US.mo 而不是transparent-en_US.mo

请仔细阅读以下说明:https://codex.wordpress.org/Function_Reference/load_theme_textdomain

结束

相关推荐

Wrong WordPress language?

我现在有点困惑。我在这里为我的波兰朋友安装了Wordpress:http://pl.wordpress.org/在我的本地机器上,一切都很好,而且都是波兰语的,但在web服务器上安装它看起来就像默认的英语Wordpress(“最近的帖子”、“档案”等)。为什么?我找到的每个语言文件都是波兰语(在themes/twentten/languages和wp content/languages中),wp config也设置为define(\'WPLANG\', \'pl_PL\');.谢谢