如何为媒体添加多语言支持?

时间:2013-11-30 作者:cenk

多语言插件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\\u modifyTermFormFor可以用于任何输入框,但我不知道要使用哪个钩子。我检查了媒体。php,但运气不好。

对于附件详细信息输入,是否可以像上面的示例那样执行任何操作?

2 个回复
SO网友:krembo99

问得好。

好阅读Rcalleja答案后。。您可以使用提供的插件,但实际上不需要它,也不需要进行代码破解或php杂耍。。

您只需在附件字段中使用quicktags即可:

[:en]English Description[:fr]French description[:de]German description
之后(现在取决于您对主题文件的访问权限,但如果您在这里,我想这不是问题),您将需要使用一个名为qtrans_use() 这会告诉qtranslate要使用哪种语言。。

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 voila ! 这个titledescription 将使用德语。。()\'de\' )

(de只是一个示例,要使流程自动化,需要另一个内置的qtrans函数-qtrans_getLanguage() )

我过去用过这种方法,它一直对我有效。事实上,可以使用qtranslate翻译wordpress的任何方面,而不需要额外的插件。。

qtranlaste是编写得最好的插件之一(虽然有点老了……)我自己也是它的忠实粉丝。作者早在当前大多数“专家”开始在插件中应用内部过滤器和挂钩之前,甚至早在知道存在内部过滤器和挂钩之前,就已经使用了内部过滤器和挂钩。事实上,它是(IMHO)最好的翻译插件。

问题是(就像wordpress本身一样)它非常广泛和可扩展,但它有很多过滤器和函数,这些都没有很好的文档记录,需要“深入研究代码”。

幸运的是,已经有人这样做了。

EDIT I :

还有另一种方法可以过滤整个post thumbnail 使用生成的HTMLpost_thumbnail_html 滤器但是,由于上述方法是通用的,并且可以应用于任何元素(不仅仅是帖子缩略图),而且由于您没有专门询问帖子缩略图,而是一般的媒体,我认为最好解释它,而不是更具体的一个。

SO网友:Rcalleja

您可以从GitHub下载带有补丁的插件。

摘录qTranslate 将文件夹放入WordPress插件目录,并覆盖实际的“qTranslate”文件夹。

如果愿意,您只能提取qtranslate_hook.php 文件保存到插件文件夹中。

现在,您必须从中选择媒体的语言/wp-admin 仪表板

然后,通过此修复,您可以使用以下方法get_attachment_language($attachment_id) 获取语言。

您需要为所需的每种语言创建一个媒体文件。每一个都有所选语言的标题、描述和字幕。并更改模板的逻辑,以仅显示当前语言的附件。

结束

相关推荐

添加wp_enQueue_media();导致问题

我想在主题选项页面中添加媒体上载程序。如果我在选项页面中添加以下代码,媒体上传器在那里工作正常,但它会在标准帖子的特色图片中产生问题。它不允许我从那里选择任何图像。是不是因为我用错误的方式添加了它?if ( ! did_action( \'wp_enqueue_media\' ) ){ wp_enqueue_media(); } 下面是我正在使用的上传功能:$(\'#upload_img\').click(function(){ wp.media.edit