私が開発しているプラグインでは、ほとんどの翻訳は機能しますが、明白な理由もなく一部の文字列は機能しません。
設定ページでは、このパターンを使用しています。
$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 ]
);
それはうまくいきますが、それが意図したパターンであるとは言いません。
これをもう一度見て、私はついにそれを見ました:$clgs_settings_descriptions
はプラグインのロード中にグローバルに定義されます。 textdomainはアクションフックplugins_loaded
でロードされます。これは明らかに後であります...