2009-07-10 66 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