提示1:不要使用qtranslate。我已经用了很多年了,现在我可以说,从来没有比这些钱花得更好的了WPML, 特别是与解决qT带来的问题所需的工作相比。还要考虑到WPML与大量插件和主题兼容,在我使用qTranslate的几年中,从未找到与之兼容的主题或插件。
提示2:无论您使用哪个插件(qT或WPML)来做您想要做的事情,都需要编写一个完整而复杂的插件。
解决方法是使用different fields for different languages.
E、 g.将字段“size”表示英语,将字段“taglia”表示意大利语,依此类推。而不是在模板文件中使用switch
陈述
下面的代码只是一个示例
function get_localized_size($postid) {
if ( ! intval($postid) ) {
global $post;
if ( empty($post) || ! is_object($post) || ! isset($post->ID) ) return;
$postid = $post->ID;
}
$currlang = qtrans_getLanguage() ? : \'en\'; // <-- qtranslate
// $currlang = defined(\'ICL_LANGUAGE_CODE\') ? ICL_LANGUAGE_CODE : \'en\'; // <-- WPML
switch ( strtolower($currlang) ) {
case \'es\' :
$field = \'tamano\';
break;
case \'it\' :
$field = \'taglia\';
break;
case \'fr\' :
$field = \'taille\';
break;
case \'en\' :
default :
$field = \'size\';
break;
}
$size = get_post_meta($postid, $field, true);
return sprintf( __(\'The size is: %s\', YOURTEXTDOMAIN ), $size );
}
而不是在循环中:
...
the_post();
...
echo get_localized_size(); // pass post ID as argument when out of the loop
...