Remplacer la traduction par défaut de WordPress

9

WordPress est défini sur la langue néerlandaise. Lorsque j'utilise get_the_archive_title() , mon thème affiche correctement "Catégorie: nom de catégorie" sur une page d'archivage de catégories. Cependant, j'aimerais que cela se lise "Sectie: Nom de la catégorie".

Je ne souhaite pas modifier le fichier de langue néerlandaise dans le dossier wp-content / languages, car il sera mis à jour par les mises à jour de WordPress.

J'ai essayé de copier ce fichier de traduction, de modifier la traduction de "catégorie" et de placer le nouveau fichier nl_NL.mo dans my-theme / languages. Cela n'a eu aucun effet.

Comment puis-je obtenir une traduction différente pour certaines chaînes sans modifier les fichiers de traduction principaux?

    
posée Florian 14.05.2015 - 14:49

1 réponse

10

Vous pouvez utiliser le filtre gettext :

add_filter( 'gettext', 'cyb_filter_gettext', 10, 3 );
function cyb_filter_gettext( $translated, $original, $domain ) {

    // Use the text string exactly as it is in the translation file
    if ( $translated == "Categorie: %s" ) {
        $translated = "Sectie: %s";
    }

    return $translated;
}

Si vous devez filtrer une traduction avec un contexte, utilisez gettext_with_context filter :

add_filter( 'gettext_with_context', 'cyb_filter_gettext_with_context', 10, 4 );
function cyb_filter_gettext_with_context( $translated, $original, $context, $domain ) {

    // Use the text string exactly as it is in the translation file
    if ( $translated == "Categorie: %s" ) {
        $translated = "Sectie: %s";
    }

    return $translated;
}

Une traduction avec contexte signifie qu'un contexte est donné dans la fonction gettext utilisée pour traduire la chaîne. Par exemple, ceci est sans contexte:

$translated = __( 'Search', 'textdomain' );

Et ceci est avec contexte:

$translated = _x( 'Search', 'form placeholder', 'textdomain' );

Des filtres similaires sont disponibles pour les traductions plurielles ( [_n()][2] et [_nx()][2] ): ngettext . et ngettext_with_context .

    
réponse donnée cybmeta 14.05.2015 - 15:50

Lire d'autres questions sur les étiquettes