2012-11-08 2 views
3

응축 나는 좀 더 효율적인 방법으로 작성 될 수 있다고 의심되는 코드 조각이 있지만 일부 PHP 쿼리에서는 여전히 약간 녹슬니다.PHP 쿼리를

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

echo $table[qtrans_getLanguage()]; 
+0

당신은 switch 문 http://php.net/manual/en/control-structures.switch.php – Andy

답변

8

lookup table가 사용

는 다음과 같은 쿼리를 작성하는 더 좋은 방법이있다. 또한

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

:

// 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. 

는 그런 다음 코드 내에서를 사용할 수 있습니다 : 그것은 당신이 i18n을 시뮬레이션하기 위해 노력하고 있지만, 일반적으로는 다음과 같은 언어 파일 정의를 볼 수 있습니다처럼 보이는 을 매우으로 간단하게 만들고 필요한 언어 파일 만 포함시킨 다음 상수를 최소로 유지하십시오.

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

그런 다음 헤더 :

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

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

일을 시도 할 수, 당신은 빨리를 입력 한 나보다. :) 어쨌든 나는 14 초가 더 느리다는 이유로 내 대답을 downvoted (지금 삭제 된) 사람들을 얻지 못한다. – Flavius

+0

@Flavius ​​당신은 삭제해서는 안됩니다, 비합리적인 downvoters 무서워하지 마십시오. 공정한 유권자들과 균형을 이루었을 것입니다. – MrCode

+0

감사합니다. 완벽하게 작동합니다. –

2

당신은 언어지도를 사용할 수 있습니다

<?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

왜 투표가 늦습니까? –

관련 문제