web-dev-qa-db-ja.com

.moファイルの一部の文字列が読み込まれない

私が開発しているプラ​​グインでは、ほとんどの翻訳は機能しますが、明白な理由もなく一部の文字列は機能しません。

設定ページでは、このパターンを使用しています。

$clgs_settings_descriptions = array(
    'notification_severity_filter' => __( 'Minimum severity for notification in adminstration menu', 'custom-logging-service' ),
    'def_severity_filter' => __( 'Default minimum severity filter on log page', 'custom-logging-service' ),
    'manager_role' => __( 'Roles that can manage Custom Logs', 'custom-logging-service' ),
    'log_entries_per_page' => __( 'Log entries per page', 'custom-logging-service' )
);

function clgs_settings_init() { 
    global $clgs_settings_descriptions;

    //..

    foreach ( $clgs_settings_descriptions as $key => $desc ) {
        add_settings_field( 
            $key, 
            $desc, 
            'clgs_field_render', 
            CLGS_OPTION_PAGE,
            CLGS_GROUP,
            [ $key ]
        );
    }
}
add_action( 'admin_init', 'clgs_settings_init' );

これら4つの文字列はcustom-logging-service-de_DE.poファイルにあります。

#: includes/settings.php:3
msgid "Minimum severity for notification in adminstration menu"
msgstr "Mindestschweregrad für Benachrichtigungen im Administrationsmenü"

#: includes/settings.php:4
msgid "Default minimum severity filter on log page"
msgstr "Standard-Mindestschweregrad auf Log-Seite"

#: includes/settings.php:5
msgid "Roles that can manage Custom Logs"
msgstr "Rollen mit der Fähigkeit, Freie Logs zu verwalten"

#: includes/settings.php:6
msgid "Log entries per page"
msgstr "Log-Einträge pro Seite"

.moファイルは最新のものです。同じファイルに他の翻訳可能な文字列があります。それらを変更してgettextスタックを実行すると、レンダリングされたページにそれらの翻訳が表示されます。

翻訳されていないのはこれら4つの文字列だけです。

誰もが彼らが働いていない理由を見つけることができますか?

更新2016-2-3:パッチとして、私は現在add_settings_fieldを次のように呼び出しています。

    add_settings_field( 
        $key, 
        __( $desc, 'custom-logging-service' ), 
        'clgs_field_render', 
        CLGS_OPTION_PAGE,
        CLGS_GROUP,
        [ $key ]
    );

それはうまくいきますが、それが意図したパターンであるとは言いません。

1
ccprog

これをもう一度見て、私はついにそれを見ました:$clgs_settings_descriptionsはプラグインのロード中にグローバルに定義されます。 textdomainはアクションフックplugins_loadedでロードされます。これは明らかに後であります...

2
ccprog