web-dev-qa-db-ja.com

Force Pluginから英語への翻訳

これが私のことです:

私はマルチ言語機能を持つプラグインを使用しています。重要なのは、私の国の言語での言語翻訳は非常に悪いことであり、それは私の仕事を単純にするよりも複雑にするということです。 :D.それで、多言語を使わずに少なくとも英語で示されるようにプラグインを強制する方法はありますか?

3
DiTTiD

プラグインは何ですか? mo/poファイルでカスタム翻訳を使用していますか?あなたがプラグインのロケールを設定することを可能にする管理インターフェースがありますか?

次のような言語を設定するためにプラグインコードに追加できる一般的なフィルタがあります(明らかにあなたの望む言語に設定してください:

add_filter('locale', 'wpse_get_locale');

// returns the locale based on user preference
function wpse_get_locale($locale) {
// get_current_user_id uses wp_get_current_user which may not be available the first time(s) get_locale is called
    if (function_exists('wp_get_current_user'))
        $loc = get_user_meta(get_current_user_id(), 'user_lang', 'true');
    return isset($loc) && $loc ? $loc : $locale;
}

しかし、mo/poファイルを編集するなどしてプラグインの翻訳を改善するのは簡単ではないでしょうか。

1
lorenzov
// to force use English, this filter value must return true.
add_filter('override_load_textdomain', 'myPlugin_OverrideLoadTextDomain', 10, 3);

add_filter('plugin_locale', 'myPlugin_forceUseLanguageForCertainPlugin', 10, 2);

function myPlugin_OverrideLoadTextDomain($override, $domain, $mofile) 
{
    if ($domain === 'woocommerce') // change text domain from woocommerce to what you want.
    {
        $override = true;
    }

    return $override;
}

function myPlugin_forceUseLanguageForCertainPlugin($locale, $domain) 
{
    if ($domain === 'woocommerce') // change text domain from woocommerce to what you want.
    {
        $locale = 'en_US';// change your locale here to whatever you want.
    }

    return $locale;
}

作業には2つのフィルターフックが必要でした。

1
vee