翻译我的定制主题,总是翻译的版本?

时间:2014-10-08 作者:alex

我有一个荷兰语的自定义主题,现在我正在尝试将主题翻译成英语。为此,我使用poedit,并将一些主题字符串转换为\\u e(\'string-is-here\')

我救了我们两个。po和en\\U US。将mo添加到我的主题/语言中,并将其添加到函数中。php

function theme_init(){
    load_theme_textdomain(\'my-theme\', get_template_directory() . \'/languages\');
}
add_action (\'init\', \'theme_init\');
为了测试它,我编辑了wp-config。php编制人

define(\'WPLANG\', \'en_US\');
我原以为这很有效,但当我把WP\\u LANG改回

define(\'WPLANG\', \'\');
翻译后的字符串始终显示???

我忽略了什么?

当做

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

你在这里做出错误的假设。define(\'WPLANG\', \'\'); 这并不意味着“字符串的原始语言环境”或类似的内容,而是字面上理解为“未指定语言环境”。

当没什么的时候,WP继续假定默认的语言环境,即en_US. 这就是为什么当您添加字符串的英文翻译时,它们会在这种情况下显示出来。

因此,要正确测试原始荷兰语字符串,您需要设置WPLANG 到各自的荷兰地区。

SO网友:kaiser

这个load_theme_textdomain() 函数使用load_textdomain() 内部。该函数为调试目的提供了一个很好的过滤器(除了更改语言之外:

$plugin_override = apply_filters( \'override_load_textdomain\', false, $domain, $mofile );
使用快速自定义插件开始调试,并检查文件是否存在:

<?php
/** Plugin Name: Check if the themes MO file exists */
add_filter( \'override_load_textdomain\', function( $override, $domain, $mofile )
{
    false !== strpos( $mofile, get_template_directory() ) AND var_dump(
        \'=== CHECK LANGUAGE AND MO FILES ===\',
        $mofile,
        file_exists( $mofile )
        \'Current locale: \'.get_locale(),
        \'Available languages: \',
        get_available_languages(),
    );
    return false;
}, 10, 3 );
请注意,这将显示only 父主题MO文件。如果你有一个儿童主题,你最好使用get_stylesheet_directory() 无论是在您的代码中,还是在上面的调试插件代码中。

要检查当前区域设置,可以转储get_locale(). 要查看所有可用语言,请转储get_available_languages(). 这些是上述插件中的最后两个转储。

结束

相关推荐

Custom metabox translation

我已经创建了一个自定义的帖子类型,并添加了一些自定义的元数据库,现在我想知道我在我的网站上使用了什么样的翻译插件?我对它们都没有经验,所以我不知道谁会支持我的自定义元数据库,谁不会。