PHP 问题中的译者
Translator in PHP issue
我正在使用我在网上找到的翻译器 class。当我使用它直接回显消息时,它的效果非常好。当我在页面开头进行条件检查时出现问题,我需要将翻译后的文本放入变量中,然后将其发送到页面上的其他位置进行显示。
我的代码:
if ($condition_1){
$message = $translate->__('Text 1');
}
elseif ($condition_2){
$message = $translate->__('Text 2');
}
elseif ($condition_3){
$message = $translate->__('Text 3');
}
此代码在放置此条件的位置回显文本,而不是用作变量 $message,然后在我需要时回显。你能帮我弄清楚如何将文本用作变量吗?
如果我使用没有翻译的文本class。我可以轻松地将它用作变量。
这是我使用的class:
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);
}
}
}
翻译后的文本在 *.txt 文件中,如下所示:
text 1=text 1 translated
text 2=text 2 translated
text 3=text 3 translated
问题出在 class 的 "echo" 中。我将 "echo" 更改为 "return",效果非常好!
我正在使用我在网上找到的翻译器 class。当我使用它直接回显消息时,它的效果非常好。当我在页面开头进行条件检查时出现问题,我需要将翻译后的文本放入变量中,然后将其发送到页面上的其他位置进行显示。
我的代码:
if ($condition_1){
$message = $translate->__('Text 1');
}
elseif ($condition_2){
$message = $translate->__('Text 2');
}
elseif ($condition_3){
$message = $translate->__('Text 3');
}
此代码在放置此条件的位置回显文本,而不是用作变量 $message,然后在我需要时回显。你能帮我弄清楚如何将文本用作变量吗?
如果我使用没有翻译的文本class。我可以轻松地将它用作变量。
这是我使用的class:
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);
}
}
}
翻译后的文本在 *.txt 文件中,如下所示:
text 1=text 1 translated
text 2=text 2 translated
text 3=text 3 translated
问题出在 class 的 "echo" 中。我将 "echo" 更改为 "return",效果非常好!