web-dev-qa-db-fra.com

Force Plugin to English Translation

Voici mon truc:

J'utilise un plugin qui a des capacités multilingues. Le fait est que la traduction dans mon pays est très mauvaise et que cela rend plus complexe que mon travail plus simple. :RÉ. Donc, y a-t-il un moyen de forcer un plugin à ne pas utiliser le multilingue et à être montré, au moins, en anglais?

3
DiTTiD

Quel est le plugin? Utilise-t-il des traductions personnalisées dans les fichiers mo/po? Existe-t-il une interface d'administration permettant de définir les paramètres régionaux du plug-in?

Il existe un filtre générique que vous pourriez éventuellement ajouter au code du plugin pour définir le langage qui pourrait ressembler au suivant (évidemment, définissez le langage de votre choix:

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;
}

Cependant, je me demande s'il ne serait pas plus facile d'améliorer la traduction du plugin en éditant les fichiers mo/po ou ce qu'ils utilisent pour la traduction de chaîne.

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;
}

Il fallait 2 crochets de filtre pour fonctionner.

1
vee