2012-11-08 70 views
3

我有一段代码,我怀疑可以用更有效的方式编写代码,但对于某些PHP查询仍然有点生疏。凝聚式PHP查询

是否有写下面的查询有更好的方式:

<?php 
if(qtrans_getLanguage()=='en'): echo 'Latest News'; endif; 
if(qtrans_getLanguage()=='it'): echo 'Ultime notizie'; endif; 
if(qtrans_getLanguage()=='de'): echo 'Aktuelle Nachrichten'; endif; 
if(qtrans_getLanguage()=='zh'): echo '最新消息'; endif; 
if(qtrans_getLanguage()=='es'): echo 'Últimas noticias'; endif; 
if(qtrans_getLanguage()=='fr'): echo 'Dernières nouvelles'; endif; 
?> 
+0

你可以尝试一个switch语句http://php.net/manual/en/control-structures.switch.php – Andy

回答

8

使用lookup table

$table = array(
    'en' => 'Latest News', 
    'it' => 'Ultime notizie', 
    .... 
); 

echo $table[qtrans_getLanguage()]; 
+1

+1,你已经快键入它比我:)无论如何,我没有得到那些谁低于我的答案(现在删除)只是为了14秒慢。 – Flavius

+0

@Flavius你不应该删除,不要害怕非理性downvoters。这将得到公平选民的平衡。 – MrCode

+0

谢谢,完美的作品 –

2

可以使用语言地图。它看起来像你试图模仿i18n,但通常你会看到语言文件的定义,例如:

// lang.php 
$LANG = array(); 
include_once('lang/english.php'); 
include_once('lang/french.php'); 

// lang/english.php 
$LANG['en'] = array(); 
$lang['en']['LATEST_NEWS'] = 'Latests News'; 

// lang/french.php 
$LANG['fr'] = array(); 
$lang['fr']['LATEST_NEWS'] = 'Dernières nouvelles'; 

// ... etc. 

然后你可以使用内码如下:

<?= $LANG[qtrans_getLanguage()]['LATEST_NEWS']; ?> 

或者,你可以使它很简单,只包含你需要的语言文件,然后保持你的常量至少为:

// lang/en.php 
$LANG['LATEST_NEWS'] = 'Latest News'; 

然后在你的头:

include('lang/' . qtrans_getLanguage() . '.php'); 

<?= $LANG['LATEST_NEWS']; ?> 
+0

为什么选择投票? –