deeand
Member
- Регистрация
- 13.12.2011
- Сообщения
- 23
Всем привет!
Имеется сайт с поддержкой двух языков (При нажатии ссылок ENG и РУС осуществляется перевод). Его структура выглядит примерно вот так:
В текстовом файлике perevod.txt записывается перевод слов/предложений в таком виде:
И при помощи файла class.translation.php осуществляется подставление слов/предложений на сайт:
Проблема в следующем: В подгружаемом к сайту xsl-файлике не переводятся слова таким способом <?php $translate->__('Службы'); ?> , а как сделать правильно я не знаю.
Вот структура xsl файла:
Имеется сайт с поддержкой двух языков (При нажатии ссылок ENG и РУС осуществляется перевод). Его структура выглядит примерно вот так:
Код:
[b]<?php
require_once('class.translation.php');[/b]
[b]if(isset($_GET['lang']))
$translate = new Translator($_GET['lang']);
else
$translate = new Translator('ru');
?>[/b]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"><head>
....
</head>
<body>
<div id="lang">
<a class="flag_english" title="english" href="index.php?lang=eng">[b]ENG[/b]</a>
<a class="flag_russian" title="russian" href="index.php">[b]РУС[/b]</a>
</div>
....
<li id="item2"><a href="../service.php">[b]<?php $translate->__('Службы'); ?>[/b]</a></li>
....
....
[color=#ff0000]<div class="panel" data-url="[b]skin=compact.xsl[/b]">Fetching...</div>[/color]
....
</body>
</html>
Код:
Службы=Services
Код:
<?php
class Translator {
private $language = 'ru';
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);
}
}
}
?>
Проблема в следующем: В подгружаемом к сайту xsl-файлике не переводятся слова таким способом <?php $translate->__('Службы'); ?> , а как сделать правильно я не знаю.
Вот структура xsl файла:
Код:
<xsl:transform version="1.0" encoding="UTF-8" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="panel" select="/items/@panel"/>
<xsl:template match="items">
<table style="width:314px;">
<xsl:call-template name="header"/>
<xsl:apply-templates select="item"/>
<xsl:call-template name="footer"/>
</table>
</xsl:template>
.....
<xsl:template name="footer">
<xsl:call-template name="totals"/>
<td class="total" colspan="3" style="text-align:center;vertical-align:bottom">
<xsl:if test="$panel = 'yes'">
<xsl:if test="item">
.....
[color=#ff0000]<button type="submit" id="valka" name="submit">[b]ПОДТВЕРДИТЬ[/b]<span class="icon1"></span></button> [/color]
.....
</xsl:if>
</xsl:if>
</td>
</xsl:template>
.....