2012-11-08 69 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

爲什麼選擇投票? –