多语言php类 - 快捷功能

时间:2009-07-10 00:37:03

标签: php oop multilingual

晚上好,

在我正在开发的应用程序中,我有一个处理多语言的课程。它通过外部加载关联数组来实现,其中转换源的定义如下:

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

正确方向上的一点很棒。谢谢!

1 个答案:

答案 0 :(得分: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');
?>

或者,您可以在static类中使用Lang变量,而不是创建类的实例。这种方式更简洁,因为您不必在全局命名空间中创建$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');
?>