翻译后的字符串没有出现-我遗漏了什么?

时间:2017-12-27 作者:eljefejb

我已经浏览了我能找到的所有类似的线索,我想我应该把所有的片段都准备好,让翻译过的字符串出现,但它们没有。我准备把头发拔出来了!

下面是我要做的-我正在制作一个自定义主题(基于\\u的starter),并为一些自定义帖子类型添加了模板(在我自己的插件中创建)。我安装了本地翻译插件来创建和编辑订单/订单文件。这些文件存储在“mytheme/languages”中。

在我的主题功能中。php我有:

/**
 * Load theme text domain for translations
 */
function mytheme_load_theme_textdomain() {

    if (load_theme_textdomain(\'mytheme\', get_template_directory() . \'/languages\')) {
        error_log("Text Domain loaded.");
    }
}
add_action(\'after_setup_theme\', \'mytheme_load_theme_textdomain\');
在模板零件文件中,我设置了如下显示字符串:

<?php _e(\'My String Text\', \'mytheme\'); ?>

当我加载应该包含已翻译字符串的页面时,请查看调试。日志文件中,我看到消息“文本域已加载”所以这部分应该是有效的。Locao Translate正确地看到字符串并允许我翻译它们。所以一切都在。mo文件应正确。

我已经尝试在wp config中对区域设置进行硬编码。php(仅供检查)添加define(\'WPLANG\', \'es_ES\'); 与全球$locale 变量从上述函数中添加到调试日志。这是正确的。

编辑:添加调试mo翻译插件的输出

Debug MO Translations (Version 1.0)

Locale: es_ES


Domain:    mytheme
File:      /wp-content/languages/themes/mytheme-es_ES.mo (not found)
Called in: /wp-includes/l10n.php line 792 load_textdomain

Domain:    mytheme
File:      /wp-content/languages/loco/themes/mytheme-es_ES.mo (not found)
Called in: /wp-content/plugins/loco-translate/src/hooks/LoadHelper.php line 103 load_textdomain

Domain:    mytheme
File:      /wp-content/themes/mytheme/languages/es_ES.mo (0.62kb)
Called in: /wp-includes/l10n.php line 800 load_textdomain
所以,我在模板文件中有可翻译的字符串,我在中有翻译。采购订单/。mo文件在我的主题中,语言环境设置正确,我在函数中加载我的主题文本域。php文件。但是字符串仍然没有以翻译的形式出现在前端!我错过了什么?

提前感谢!

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

嗯,我现在似乎已经把它整理好了。就我而言,我回去刷新了。对pot模板文件进行一个小的更改并保存(使用Loco翻译)。然后我又回到了。采购订单文件编辑器屏幕,与重新同步。pot文件,并保存以更新。mo文件。翻译现在出现在我的主题中。呜呜呜!

我希望这可能会帮助下一个人遇到类似的情况!

SO网友:bueltge

您应该分析语言文件的路径,是否正确?

此作业的有用插件:

您应该检查函数以获取路径。功能get_template_directory 获取父主题的路径,而不是子主题的路径。如果要使用子主题的翻译文件,请使用get_stylesheet_directory_uri. 该函数始终获取活动样式表的路径。

结束

相关推荐

Plugin Localization

我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette