web-dev-qa-db-ja.com

メディアのためのqtranslate多言語サポートを追加するにはどうすればいいですか?

多言語プラグインqtranslateはカスタム投稿タイプに対応していますが、タイトル、説明、画像のキャプションなどのメディア情報を翻訳する機能はありません。

カスタム分類法の翻訳のサポートを追加するために、次のコード(WP v3.7.1)を使用しています。

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

     }
   }

}

Qtrans_modifyTermFormForはどの入力ボックスにも使えると思いますが、どのフックを使うべきかわかりません。私はmedia.phpをチェックしたが運が悪い。

添付ファイルの詳細の入力について上記の例のようにできることはありますか?

2
cenk

良い質問 。

さて.. Rcallejaの回答を読んだ後は..提供されているプラ​​グインを使用できますが、実際には必要なく、コードハッキングやphpジャグリングも必要ありません。

あなたがしなければならないのは、添付ファイルフィールドでクイックタグを使うことだけです:

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

その後(そして今はテーマファイルへのアクセスに依存しますが、あなたがここにいるなら - 問題ないと思います)、どの言語を使うかをqtranslateに伝えるqtrans_use()と呼ばれる小さな組み込み関数を使う必要があります。 。

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

たとえば、非常に人気のある関数the_post_thumbnail()を使用している場合は、属性を変換する必要があります。これはwp_get_attachment_imageを使用しているので、属性は例えば(codexから)であることがわかります。

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

では、altとtitleを次のようにして取得する必要があります。

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

2と2をまとめると:

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

その後

the_post_thumbnail('my_size',$attr);

et voilatitledescriptionはドイツ語になります。('de'

( 'de'は単なる例です。プロセスを自動化するには、他の組み込みqtrans関数を使用します - qtrans_getLanguage()

私は過去にこの方法を使ったことがあり、それはいつも私のために働きました。実際、追加のプラグインを必要とせずに、qtranslateを使ってwordpressのあらゆる面を翻訳することが可能です。

qtranlasteは(少し古くても)最もよく書かれたプラグインの1つであり、私自身はそれの大ファンです。現在の "専門家"のほとんどがプラグインにそれらを適用し始めるか、あるいは存在さえ知らないずっと前に、作者は内部のフィルタとフックを使いました。実際、それは(私見)最高の翻訳プラグインです。

問題は、(ワードプレス自体のように)それは非常に広範囲で拡張可能であるということですが、文書化されていない多くのフィルタや機能を持っているため、「コードを詳しく調べる」必要があります。

幸いなことに、誰かがすでにそうしています。

編集I:

post thumbnailフィルタを使用して、post_thumbnail_htmlで生成されたHTML全体をフィルタ処理する別の方法もあります。しかし、上記の方法は一般的なものであり、(投稿サムネイルだけでなく)あらゆる要素に適用することができ、また投稿サムネイルについては尋ねられなかったがメディア全般については、私はそれを説明する方が好ましい1 。

1
krembo99

GitHubから修正を加えたプラグインをダウンロードすることができます。

あなたのWordPressプラグインディレクトリにqTranslateフォルダを抽出し、あなたの実際の "qTranslate"フォルダを上書きします。

お望みであれば、qtranslate_hook.phpファイルを自分のプラグインフォルダーに展開することしかできません。

さて、あなたは/wp-adminダッシュボードからメディアの言語を選択しなければなりません。

それから、この修正であなたは言語を取得するためにメソッドget_attachment_language($attachment_id)を使うことができます。

必要な言語ごとに1つのメディアファイルを作成する必要があります。選択した言語のタイトル、説明、キャプションを持つそれぞれ。現在の言語の添付ファイルのみを表示するようにテンプレートのロジックを変更します。

0
Rcalleja