web-dev-qa-db-fra.com

Comment ajouter qtranslate support multi-langue pour les médias?

Le plug-in multilingue qtranslate fonctionne pour les types de publication personnalisés, mais il n’est pas possible de traduire des informations multimédia telles que le titre, la description ou les légendes d’images.

J'utilise le code suivant (WP v3.7.1) afin d'ajouter la prise en charge de la traduction des taxonomies personnalisées:

add_action('admin_init', 'qtranslate_edit_taxonomies');

function qtranslate_edit_taxonomies(){
   $args=array(
      'public' => true ,
      '_builtin' => false
   );
   $output = 'object'; // or objects
   $operator = 'and'; // 'and' or 'or'
   $taxonomies = get_taxonomies($args,$output,$operator);
   if  ($taxonomies) {
     foreach ($taxonomies  as $taxonomy ) {
         add_action( $taxonomy->name.'_add_form', 'qtrans_modifyTermFormFor');
         add_action( $taxonomy->name.'_edit_form', 'qtrans_modifyTermFormFor');        

     }
   }

}

Je pense que qtrans_modifyTermFormFor peut être utilisé pour n’importe quelle zone de saisie, mais je ne sais pas quel hook utiliser. J'ai vérifié media.php mais pas de chance.

Peut-on faire quelque chose comme l'exemple ci-dessus pour les entrées de détails de pièce jointe?

2
cenk

Bonne question .

Bien .. Après avoir lu la réponse de Rcalleja .. Vous pouvez utiliser le plugin fourni, mais il n’est vraiment pas nécessaire, ni pour le piratage de code, ni pour le jonglage php ..

Tout ce que vous avez à faire est d'utiliser les balises rapides dans les champs des pièces jointes:

[:en]English Description[:fr]French description[:de]German description

Après cela (et maintenant, cela dépend de l'accès que vous avez aux fichiers de thème, mais si vous êtes ici (je suppose que ce n'est pas un problème), vous devrez utiliser une petite fonction intégrée appelée qtrans_use() qui indique à qtranslate la langue à utiliser. .

qtrans_use('fr',$string,false);

ainsi, par exemple, si vous utilisez la fonction très populaire the_post_thumbnail(), vous devrez traduire ses attributs. comme il utilise wp_get_attachment_image, nous savons que les attributs sont par exemple (du codex):

$default_attr = array(
    'src'   => $src,
    'class' => "attachment-$size",
    'alt'   => trim(strip_tags( $wp_postmeta->_wp_attachment_image_alt )),
);

Maintenant, nous devons obtenir le titre et le titre comme suit:

$thumb_id = get_post_thumbnail_id(get_the_ID());
$alt = get_post_meta($thumb_id, '_wp_attachment_image_alt', true);
$title = get_post_meta($thumb_id, '_wp_attachment_image_title', true);

Donc, mettre 2 et 2 ensemble:

    $attr = array(
'alt'   => qtrans_use('de',$alt,false),
'title' => qtrans_use('de',$alt,false),
    );

et alors

the_post_thumbnail('my_size',$attr);

et voilà ! title et description seront en allemand .. ('de')

(le 'de' est juste un exemple, pour automatiser le processus, une autre fonction qtrans intégrée - qtrans_getLanguage())

J'ai utilisé cette méthode par le passé et cela a toujours fonctionné pour moi. En fait, il est possible de traduire n'importe quel aspect de wordpress avec qtranslate, sans avoir besoin de plugins supplémentaires.

qtranlaste est l'un des meilleurs plugins écrits (même un peu vieux ..) et je suis moi-même un grand fan. L'auteur a utilisé des filtres internes et des points d'ancrage bien avant que la plupart des "experts" actuels aient commencé à les appliquer dans des plug-ins ou qu'ils ne sachent même pas qu'ils existaient. En fait, c’est (à mon humble avis) le meilleur plugin de traduction.

Le problème est que (comme wordpress lui-même), il est très étendu et extensible, mais il a beaucoup de filtres et de fonctions mal documentées, qui nécessitent de "creuser dans le code".

Heureusement, quelqu'un l'a déjà fait.

EDIT I:

Il existe également une autre méthode pour filtrer le code HTML entièrement généré par post thumbnail à l'aide du filtre post_thumbnail_html. Mais puisque la méthode ci-dessus est générale et peut s’appliquer à n’importe quel élément (pas seulement l’impression de post), et que vous n’avez pas spécifiquement demandé des post-thumbs mais des médias en général - j’ai pensé qu’il était préférable de l’expliquer de manière plus précise un .

1
krembo99

Vous pouvez télécharger le plugin avec le correctif depuis GitHub.

Extrait le dossier qTranslate dans votre répertoire de plugins WordPress et écrasez votre dossier "qTranslate".

Si vous préférez, vous pouvez uniquement extraire le fichier qtranslate_hook.php dans votre dossier de plug-in.

Maintenant, vous devez sélectionner la langue du support à partir du tableau de bord /wp-admin.

Ensuite, avec ce correctif, vous pouvez utiliser la méthode get_attachment_language($attachment_id) pour obtenir le langage.

Vous devez créer un fichier de média pour chaque langue requise. Chacun avec le titre, la description, les légendes dans la langue sélectionnée. Et modifiez la logique de votre modèle pour afficher uniquement les pièces jointes de la langue actuelle.

0
Rcalleja