PDA

Просмотр полной версии : tt_news: Перевод для "backToList"


Игорь Ф.
30.09.2009, 00:08
Мне надо локализовать tt_news. Для этого я вставляю следующий код в TS:


plugin.tt_news {

_LOCAL_LANG.ru{
pi_list_browseresults_prev = < Предыдущая
pi_list_browseresults_page =
pi_list_browseresults_next = Следующая >
pi_list_browseresults_first = <-первая
pi_list_browseresults_last = последняя->
textCat = Тематические разделы:
#pi_list_browseresults_displays = Displaying results ###SPAN_BEGIN###%s to %s</span> out of ###SPAN_BEGIN###%s</span>
pi_list_browseresults_displays = Отображено с ###SPAN_BEGIN###%s по %s</span>, всего ###SPAN_BEGIN###%s</span>
pi_list_searchBox_search = Найти
preAuthor =
# archiveHeader =
archiveItems =
backToList = Вернуться к списку
#noNewsToListMsg = no_news_items
#noNewsToListMsg =

}
}


Но при отображении SINGLE у меня элемент backToList (ссылка назад, на ленту новостей) переводится некорректно.
Почему-то все знаки & заменяются на &amp;
И вместо "Вернуться к списку" я получаю: "&#x412;&#x435;&#x440;&#x43d;&#x443;&#x442;&#x44c;&#x441;&#x44f; &#x43a; &#x441;&#x43f;&#x438;&#x441;&#x43a;&#x443;"

Все остальное переводится вроде нормально.

Как можно отключить эту замену (или обойти ее), чтобы нормально отображались буквы?

Игорь Ф.
30.09.2009, 16:42
Вот нашел некую функцию - t3lib_div::deHSCentities, которая может реконвертировать "&amp;" в "&"
Но не знаю, как ей воспользоваться.

Да и должно же быть другое решение. У остальных ведь работает...

Игорь Ф.
30.09.2009, 17:12
Сейчас убрал строчку, относящуюся к backToList.

Выдает:
<- &#x43d;&#x430;&#x437;&#x430;&#x434; &#x432;: Новости

То есть почему-то в половину (назад в) вставляет &amp; а в половину (Новости) нет.

Alex Podusov
01.10.2009, 14:10
tt_news\pi1\locallang.xml
- все переводы правь тут ручками, в блоке <languageKey index="ru" type="array">
...............
</languageKey>
, или через Locallang-XML Translation Tool

Игорь Ф.
01.10.2009, 21:40
Спасибо. Я нашел эту страницу. Там нормально написано - "&lt;- назад в: %s"
Вот именно эта часть "назад в", у меня отображается неверно - туда вставляются &amp;

Не понимаю, что я могу с этим сделать...

Игорь Ф.
20.10.2009, 21:53
Вначале сразу не сообразил: у меня перевод находится в /l10n/ru/tt_news/pi/ru.locallang.xml

Но пока так и не могу понять в чем дело...

Игорь Ф.
20.10.2009, 22:05
Очевидно, что причина лежит где-то глубже, в способе обработки label "backToList". Потому что я на этой же странице (SINGLE) могу отображать фразу "<- назад в: %s", если, например, вставляю её в label "more" и отображаю этот label через шаблон.

Игорь Ф.
21.10.2009, 00:15
В общем, обнаружил нужную строчку в файле tt_news/pi/class.tx_ttnews.php:

$markerArray['###BACK_TO_LIST###'] = sprintf($this->pi_getLL('backToList', '', $this->conf['hscBackLink']), $backP['title']);

Если я положим меняю её на
$markerArray['###BACK_TO_LIST###'] = $this->pi_getLL('backToList');
то всё выдается по-русски.

Но не работает предустановленная опция с отображением имени страницы, на которую нужно вернуться. В принципе, так как я собирался использовать TS, мне это не критично. Единственная проблема - вдруг это еще где-то используется? Может кто знает? И вообще в чем причина такого поведения функции sprintf?

Игорь Ф.
21.10.2009, 00:37
Всё, разобрался. Добавил в TS вот эту строчку:
plugin.tt_news.hscBackLink = 0

Теперь все работает без изменения исходников. Почему нельзя было не прописать это нормально в документации?!

В мануале написано только вот это:
hscBackLink - If this is enabled the “Back to list” link in the SINGLE view will be parsed through the PHP function htmlspecialchars().