it-swarm-eu.dev

Jak přidat qtranslate podporu více jazyků pro média?

Vícejazyčný plugin qtranslate pracuje pro vlastní typy příspěvků, ale není zde možnost přeložit informace o médiích, jako je název, popis, popisky obrázků.

Používám následující kód (WP v3.7.1), abych přidal podporu pro překlad vlastních taxonomií:

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');        

     }
   }

}

Myslím, že qtrans_modifyTermFormFor lze použít pro všechny vstupní pole, ale nevím, který hák použít. Zkontroloval jsem media.php, ale žádné štěstí.

Existuje něco, co lze udělat jako příklad uvedený výše pro vstupy podrobností o příloze?

2
cenk

Dobrá otázka .

No .. Po přečtení odpovědi Rcalleja .. Můžete použít dodaný plugin, ale opravdu to není potřeba, ani pro hacking kódu nebo php žonglování.

Jediné, co musíte udělat, je použít quicktags v polích příloh:

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

Po tom (a teď záleží na přístupu, který máte k tématům souborů, ale pokud jste zde - předpokládám, že to není problém) budete muset použít malou vestavěnou funkci nazvanou qtrans_use(), která říká qtranslate který jazyk použít. .

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

pokud například používáte velmi populární funkci the_post_thumbnail(), budete muset přeložit atributy itßs. protože používá wp_get_attachment_image, víme, že atributy jsou například (z codex):

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

Nyní musíme dostat takový alt a titul takhle:

$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);

Takže dát dohromady 2 a 2:

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

a pak

the_post_thumbnail('my_size',$attr);

et voila ! title a description bude v němčině .. ('de')

('de' je jen příklad, pro automatizaci procesu by jedna další vestavěná funkce qtrans - qtrans_getLanguage())

Tuto metodu jsem použil v minulosti a vždy to pro mě fungovalo. Ve skutečnosti, to je možné přeložit všechny a všechny aspekty wordpress s qtranslate, bez potřeby pro další pluginy ..\t.

qtranlaste je jeden z nejlepších psaných pluginů (i když trochu starý) a já sám jsem velkým fanouškem. Autor použil interní filtry a háčky dlouho předtím, než je většina současných „odborníků“ začala používat v zásuvných modulech nebo dokonce existovala. ve skutečnosti to je (IMHO) nejlepší překlad plugin.

Problém je v tom, že (stejně jako samotný wordpress) je velmi rozsáhlý a rozšiřitelný, ale má spoustu filtrů a funkcí, které jsou špatně zdokumentovány a které vyžadují "Dig do kódu".

Naštěstí to už někdo udělal.

EDIT I:

Existuje také další metoda filtrování celého post thumbnail vytvořeného HTML pomocí filtru post_thumbnail_html. Vzhledem k tomu, že výše uvedená metoda je obecná a lze ji aplikovat na jakýkoliv prvek (nikoli pouze na miniaturu), a protože jste se nezeptali konkrétně na post palce, ale média obecně - myslel jsem, že je raději vysvětlit to spíše než mnohem konkrétnější jeden .

1
krembo99

Plugin s opravou si můžete stáhnout z GitHub.

Extracts qTranslate složka do adresáře pluginů WordPressu a přepíše aktuální složku "qTranslate".

Pokud si přejete, můžete soubor qtranslate_hook.php extrahovat pouze do složky pluginu.

Nyní musíte vybrat jazyk pro média z řídicího panelu /wp-admin.

Pomocí této opravy pak můžete použít metodu get_attachment_language($attachment_id) pro získání jazyka.

Pro každý požadovaný jazyk je třeba vytvořit jeden soubor médií. Každý z nich s názvem, popisem, titulky ve vybraném jazyce. Změňte logiku šablony a zobrazte pouze přílohy aktuálního jazyka.

0
Rcalleja