插件翻译不能脱离名称和描述

时间:2020-06-12 作者:Cebbi

我写了一个插件,创建了一个自定义的帖子类型,我试图用Poedit翻译它,但它并没有完全起作用。我之前翻译过一些其他插件,我不确定是什么导致了这个错误:

插件的名称和描述在后端被正确翻译,但没有帖子类型名称被翻译。

完整示例

File Structure

test
├── languages
│   ├── test-de_DE.mo
│   ├── test-de_DE.po
│   └── test.pot
└── test.php
我定义了文本域test 和域路径\\languages 在插件标题中test.php.

post类型在同一文件中定义如下:

test.php

<?php

/**
 * Plugin Name: A Test
 * Description: A Test Plugin
 * Version: 1.0.0
 * Text Domain: test
 * Domain Path: /languages
 */

function test_custom_post_types()
{
    register_post_type(\'test_post\', [
        \'labels\' => [
            \'name\' => __(\'Test Posts\', \'test\'),
            \'menu_name\' => __(\'Test Posts\', \'test\'),
        ],
        \'public\' => true,
    ]);
}
add_action(\'init\', \'test_custom_post_types\');
我创建了一个.pot 文件使用wp-cli 命令i18n make-pot .\\wp-content\\plugins\\test\\

languages/test.pot

# Copyright (C) 2020 
# This file is distributed under the same license as the A Test plugin.
msgid ""
msgstr ""
"Project-Id-Version: A Test 1.0.0\\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/test\\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
"Language-Team: LANGUAGE <[email protected]>\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"POT-Creation-Date: 2020-06-12T15:08:36+02:00\\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"
"X-Generator: WP-CLI 2.4.0\\n"
"X-Domain: test\\n"

#. Plugin Name of the plugin
msgid "A Test"
msgstr ""

#. Description of the plugin
msgid "A Test Plugin"
msgstr ""

#: test.php:15
#: test.php:16
msgid "Test Posts"
msgstr ""
然后我用Poedit创建了德语.po.mo 文件。

激活插件后,我可以用德语看到插件的名称和描述,但添加的帖子类型仍然用英语显示。

这是。Poedit生成的po文件:

languages/test-de_DE.po

# Copyright (C) 2020 
# This file is distributed under the same license as the A Test plugin.
msgid ""
msgstr ""
"Project-Id-Version: A Test 1.0.0\\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/test\\n"
"Language-Team: \\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"POT-Creation-Date: 2020-06-12T15:08:36+02:00\\n"
"PO-Revision-Date: 2020-06-12 15:09+0200\\n"
"X-Generator: Poedit 2.3.1\\n"
"X-Domain: test\\n"
"Last-Translator: \\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\\n"
"Language: de_DE\\n"

#. Plugin Name of the plugin
msgid "A Test"
msgstr "Ein Test"

#. Description of the plugin
msgid "A Test Plugin"
msgstr "Ein Test-Plugin"

#: test.php:15 test.php:16
msgid "Test Posts"
msgstr "Test Beiträge"
另外,它也不会翻译我在同一个插件中创建的古腾堡块(服务器端渲染)。

有没有办法修复缺失的翻译?谢谢

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

好像你忘了加载文本域

The plugin handbook says that:

您需要加载带有插件翻译的MO文件。您可以通过调用函数来加载它们load_plugin_textdomain() (和load_muplugin_textdomain() 如果您的插件将被用作必须使用的插件)。此呼叫加载{text-domain}-{locale}.mo 从插件的基本目录。

因此,根据这里的示例,您可以将其添加到主插件文件中(test.php):

function test_load_plugin_textdomain() {
    load_plugin_textdomain( \'test\', false, basename( __DIR__ ) . \'/languages/\' );
}
add_action( \'plugins_loaded\', \'test_load_plugin_textdomain\' );

相关推荐

Plugin Localization

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