2009-07-10 52 views
1

晚上好,多語言php類 - 快捷功能

在我目前正在開發的應用程序中,我有一個處理多語言的類。

'Source input' => 'Zdroj vstupního' 

目前這款完美的作品通過解決和使用類的方式如下::

$lang = new Lang('Czech'); 
print $lang->_('Source input'); // output: "zdroj vstupního" 

但是它通過外部加載一個關聯數組,其中翻譯源就這樣被定義的東西這樣做,我想在不依賴於「Lang」類的實例的快捷方式中使用它。我試過用靜態方法試驗,但到目前爲止我運氣不好。

我想實現的僞代碼。

$lang = new Lang('Czech'); 
$lang->setCurrent('contact_us'); // loads the language file for contact_us 
<p> 
    <?php print _('Source input'); ?> // output: "zdroj vstupního" 
</p> 

在正確的方向上的一個點將是偉大的。謝謝!

回答

4

您可以從您_函數訪問全局變量$lang如果使用global $lang聲明:

<?php 
    class Lang 
    { 
     function _($str) 
     { 
      return 'Zdroj vstupního'; 
     } 
    } 

    function _($str) 
    { 
     global $lang; 
     return $lang->_($str); 
    } 

    $lang = new Lang('Czech'); 
    print _('Source input'); 
?> 

另外,您可以在Lang類使用static變量而不是創建類的實例。這樣可以避免在全局命名空間中創建一個$lang變量,因此這種方法更簡潔。

<?php 
    class Lang 
    { 
     static $lang; 

     function setCurrent($lang) 
     { 
      self::$lang = $lang; 
     } 
    } 

    function _($str) 
    { 
     if (Lang::$lang == 'Czech') 
     { 
      return 'Zdroj vstupního'; 
     } 
    } 

    Lang::setCurrent('Czech'); 
    print _('Source input'); 
?> 
+0

我可以得到最好的答案。很多,非常感謝約翰! :-) – subZero 2009-07-10 00:57:24