【问题标题】:Multilingual php class - shortcut function多语言php类-快捷功能
【发布时间】:2009-07-10 00:37:03
【问题描述】:

晚上好,

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

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

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

【问题讨论】:

    标签: php oop multilingual


    【解决方案1】:

    如果您使用global $lang 语句,您可以从_ 函数访问全局$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');
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2012-09-09
      • 2019-09-11
      • 2015-11-02
      • 1970-01-01
      相关资源
      最近更新 更多