压缩PHP查询

时间:2012-11-08 13:30:12

标签: 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; 
?>

2 个答案:

答案 0 :(得分:8)

使用lookup table

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

echo $table[qtrans_getLanguage()];

答案 1 :(得分: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']; ?>