PHP问题中的翻译器

PHP问题中的翻译器,php,translation,Php,Translation,我正在使用我在网上找到的一个翻译类。当我用它来直接回应信息时,它的效果非常显著。当我在页面的开头执行条件检查,并且需要在变量中包含已翻译的文本,然后将其发送到页面上要显示的其他位置时,就会出现问题 我的代码: if ($condition_1){ $message = $translate->__('Text 1'); } elseif ($condition_2){ $message = $translate->__('Text 2'); } elseif ($

我正在使用我在网上找到的一个翻译类。当我用它来直接回应信息时,它的效果非常显著。当我在页面的开头执行条件检查,并且需要在变量中包含已翻译的文本,然后将其发送到页面上要显示的其他位置时,就会出现问题

我的代码:

if ($condition_1){
    $message = $translate->__('Text 1');
}

elseif ($condition_2){
    $message = $translate->__('Text 2');
}

elseif ($condition_3){
    $message = $translate->__('Text 3');
}
此代码在放置此条件的位置回显文本,而不是用作变量$message,然后在需要时回显。你能帮我弄清楚如何使用文本作为变量吗

如果我使用没有翻译类的文本。我可以轻松地将其用作变量

这是我使用的类:

class Translator {

    private $language   = 'sl';
    private $lang       = array();

    public function __construct($language){
        $this->language = $language;
    }

    private function findString($str) {
        if (array_key_exists($str, $this->lang[$this->language])) {
            echo $this->lang[$this->language][$str];
            return;
        }
        echo $str;
    }

    private function splitStrings($str) {
        return explode('=',trim($str));
    }

    public function __($str) {  
        if (!array_key_exists($this->language, $this->lang)) {
            if (file_exists($this->language.'.txt')) {
                $strings = array_map(array($this,'splitStrings'),file($this->language.'.txt'));
                foreach ($strings as $k => $v) {
                    $this->lang[$this->language][$v[0]] = $v[1];
                }
                return $this->findString($str);
            }
            else {
                echo $str;
            }
        }
        else {
            return $this->findString($str);
        }
    }
}
翻译后的文本位于a*.txt文件中,如下所示:

text 1=text 1 translated
text 2=text 2 translated
text 3=text 3 translated

问题出在课堂上的“回声”上。我将“回声”改为“返回”,它就像一个符咒

很明显,这些方法本身会产生输出。所以这应该不会让你感到惊讶。您可以修改这些方法,以便返回字符串而不是回显字符串,或者使用输出缓冲“捕获”输出。@arkascha good catch:),因此我需要更改class.translate.php。相反,我应该用echo?No替换“return”。你知道如何用php编程,不是吗?不是专家…学习..这是我第一次使用类