我想我在以下if语句中重复了太多:
<?php $current_language = get_bloginfo( 'language' ); ?>
<div id="next">
<?php if ( $current_language == 'es-ES' ) : ?>
<?php next_post_link( '%link', 'Proyecto Siguiente ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php elseif ( $current_language == 'zh-TW' ) : ?>
<?php next_post_link( '%link', '下一個項目 ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php elseif ( $current_language == 'zh-CN' ) : ?>
<?php next_post_link( '%link', '下一个项目 ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php else : ?>
<?php next_post_link( '%link', 'Next Project ' . _x( '', 'next post link', 'twentyten' ) . '' ); ?>
<?php endif; ?>
</div>
<div id="prev">
<?php if ( $current_language == 'es-ES' ) : ?>
<?php previous_post_link( '%link', '' . _x( '', 'previous post link', 'twentyten' ) . ' Proyecto Anterior' ); ?>
<?php elseif ( $current_language == 'zh-TW' ) : ?>
<?php previous_post_link( '%link', '' . _x( '', 'previous post link', 'twentyten' ) . ' 上一個項目' ); ?>
<?php elseif ( $current_language == 'zh-CN' ) : ?>
<?php previous_post_link( '%link', '' . _x( '', 'previous post link', 'twentyten' ) . ' 上一个项目' ); ?>
<?php else : ?>
<?php previous_post_link( '%link', '' . _x( '', 'previous post link', 'twentyten' ) . ' Previous Project' ); ?>
<?php endif; ?>
</div>
(重复php标签是我认为的WordPress惯例。)
我想知道是否有办法不重复 previous_post_link 和 next_post_link 功能?
答案 0 :(得分:1)
您可以使用下面的开关案例
<?php $current_language = get_bloginfo( 'language' ); ?>
<div id="next">
<?php
switch($current_language){
case 'es-ES':
next_post_link( '%link', 'Proyecto Siguiente ' . _x( '', 'next post link', 'twentyten' ) . '' );
break;
case 'zh-TW':
next_post_link( '%link', '下一個項目 ' . _x( '', 'next post link', 'twentyten' ) . '' );
break;
case 'zh-CN':
next_post_link( '%link', '下一个项目 ' . _x( '', 'next post link', 'twentyten' ) . '' );
break;
default:
next_post_link( '%link', 'Next Project ' . _x( '', 'next post link', 'twentyten' ) . '' );
}
?>
答案 1 :(得分:1)
嗯,有一点是你不必在<?php ... ?>
标签中包装每一行。而且由于你重复同样的事情,你可以使用数组:
<div id="next">
<?php
$current_language = get_bloginfo( 'language' );
$translations = array(
'es-ES' => 'Proyecto Siguiente',
'zh-TW' => '下一個項目',
'zh-CN' => '下一个项目',
'en-GB' => 'Next Project'
);
if( !isset( $translations[ $current_language ] ) ) {
$current_language = 'en-GB';
}
next_post_link( '%link', $translations[ $current_language ].' ' . _x( '', 'next post link', 'twentyten' ) . '' );
?>
如果你正在翻译你的应用中的每个字符串,那么可能值得考虑一个更为通用的系统,如gettext。
答案 2 :(得分:0)
使用数组。
$translations = array(
'es-ES' => array(
'next post' => 'Proyecto Siguiente %s',
...
),
'zh-TW' => array(
...
),
...
'default' => array(
'next post' => 'Next Project %s',
...
)
);
...
$language = 'default';
if (array_key_exists($translations, $current_language))
{
$language = $current_language;
};
...
next_post_link('%link', sprintf($translations[$language]['next post'],
_x( '', 'next post link', 'twentyten' ) . '' ));
执行此操作,您还可以将翻译移动到单独的文件中,然后逐个构建阵列。
答案 3 :(得分:0)
我将数组用作查找表:
<?php
$languages = array(
'es-ES' => array('next' => 'Proyecto Siguiente %s', 'prev' => '...'),
//...
'en' => array('next' => 'Next Project %s', 'prev' => '%s Previous Project')
);
$lang = get_bloginfo( 'language' );
$lang = isset($languages[$lang]) ? $lang : 'en';
?>
<div id="next">
<?php next_post_link( '%link', sprintf($languages[$lang]['next'], _x( '', 'next post link', 'twentyten' ))); ?>
</div>
<div id="pref">
<?php previous_post_link( '%link', sprintf($languages[$lang]['prev'], _x( '', 'previous post link', 'twentyten' ))); ?>
</div>
答案 4 :(得分:0)
如果存在于php http://php.net/manual/en/control-structures.if.php
,则会更短(condition) ? true : false;
但是对于您的问题,您可能需要考虑一系列标签。这是一个例子
$currrentLanguage = 1;
$Label = new Array('NextProject' => New Array('New Project','Nouveau Projet', 'Blah blah'));
echo($Label ['NextProject'][$currrentLanguage])
在这种情况下,你将不再拥有。