我有一段代码我怀疑可以用更有效的方式编写,但我对某些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 :(得分: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']; ?>