3

我有一段代码,我怀疑它可以以更有效的方式编写,但我对一些 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; 
?>
4

2 回答 2

8

使用查找表

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

echo $table[qtrans_getLanguage()];
于 2012-11-08T13:32:16.790 回答
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']; ?>
于 2012-11-08T13:34:24.057 回答