2011-10-05 87 views
1

所以即時製作三種語言的主頁。 我使用的開關方法,這裏是代碼 -創建多語言主頁

public function languages() 
{ 
if (isset($_GET['lang']) && $_GET['lang'] != '') 
{ 
    $_SESSION['lang'] = $_GET['lang']; 
} 
else 
{ 
    $_SESSION['lang'] = 'en_EN'; 
} 
switch($_SESSION['lang']) 
{ 
    case 'en_EN': require_once('language/lang.eng.php');break; 
    case 'lv_LV': require_once('language/lang.lv.php');break; 
    case 'ru_RU': require_once('language/lang.ru.php');break; 
    default: require_once('language/lang.eng.php'); 
} 
} 

public function translate($txt) 
{ 
    global $text; 
    return $text[$txt]; 
} 

,它應該顯示的index.php文件,這樣的 -

<?php $index->translate('search'); ?> 

但問題是,它表明沒有錯誤,沒有通知,沒有警告,也沒有翻譯或默認文本。 我包含函數語言(),也許你可以幫我解決這個問題?

編輯: 即時調用$語言在index.php文件開始 - <?php require_once('class.index.php'); $index = new index; $index->languages(); ?>和$文本是在lang.eng.php中定義; lang.lv.php和lang.ru.php文件。

+0

你在translate()之前調用languages()嗎?他們是一流的方法嗎? –

+0

您定義了'languages()',但我沒有看到你在哪裏調用它。另外,'$ text'是在哪裏定義的? – Anson

+0

你好, 即時調用index.php文件開始語言 - <?php require_once('class.index.php'); $ index = new index; $ index->​​ languages(); ?>和$ text是在lang.eng.php中定義的; lang.lv.php和lang.ru.php文件。 – user980952

回答

3

由於您使用的類,我認爲最好是使用屬性,而不是全局,它會更容易在將來的維護。創建一個類變量持有$文本和使用

class Index { 

    var $text; 

    public function languages() 
    { 
    require("....."); 

    $this->text = $text; 
    } 

    public function translate($txt) 
    { 
    if(isset($this->text[$txt])) 
    { 
     return $this->text[$txt]; 
    } 
    else 
    { 
    return "no translation"; 
    } 
    } 

} 

$index = new Index; 
$index->languages(); 
echo $index->translate('search'); 
+0

嘿,嗯,我的語言文件看起來像這樣 - $ text = array( '搜索'=>'搜索', 'read_more'=>'閱讀全文', (這裏有更多翻譯...) ); 我得到了問題,我必須要放在裏面嗎? WHOORAY它的工作原理; )! Cheers :) – user980952

+0

...好的,那麼我的代碼有什麼問題?如果你傳遞'搜索',它會搜索數組中的'搜索'鍵,如果存在,則返回它。我只是添加了一些默認信息,如果它困擾你,你可以跳過那部分! –

+0

它工作的很好,謝謝;)! – user980952

1

<?php echo $index->translate('search'); ?> 
+0

我在那裏,只是在這裏重新編寫它,並忘記添加,錯誤:(。其他建議? – user980952

0

首先檢查會話是否被初始化與否,也將語言()函數調用之前的翻譯,以便它加載在翻譯之前,也投入使用error_reporting(E_ALL)的語言在頂部,以便任何錯誤suppresion將被刪除,並把回聲翻譯語句的返回結果

+0

你好,如果我echo $ _SESSION ['lang']它顯示一切正確,與error_reporting,它顯示沒有錯誤它已經在e_ALL上了),並且我在那裏,只是在這裏重新編寫它,並忘記添加,錯誤:(。其他建議? – user980952