PDA

Просмотр полной версии : locallang.xml, проблемы с utf-8 на примере tt_news


Andrey Grey
28.11.2006, 13:02
Всем привет.
Просмотрел по форуму много постов связанных с кодировкой, но решения не нашел. Понимаю что где то допустил ошибку, но где именно не заметил.
Проблема такая: в расширении tt_news (да наверное и во всех остальных), при импорте локали из файла locallang.xml, слова заменяются на вопросы.

Что имеется:
Движок Т3 4.02 Пхп4
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';

Setup:
config {
metaCharset = utf-8
renderCharset = utf-8
notification_email_encoding = quoted-printable
notification_email_charset = koi8-r
language = ru
locale_all = ru_RU
doctype = xhtml_trans
xmlprologue = none
xhtml_cleaning = all
}


Самой полезной веткой в этом плане оказалась :Breaking News (http://forum.typo3.biz/showthread.php?t=1739&highlight=utf-8)
Там увидил самый просто выход из положения. Вместо использования локалланга, просто прописать все необходимые слова в шаблоне.Таким образом все работает, но хотелось бы разобраться, почему не берутся слова из локалланга в нормальной кодировке? И что сделать что бы это проходило нормально? В других расширениях значит будет такая же проблема, а этого в будущем хотелось бы избежать.

Пробовал Русский патч Павла - не помогло.

И еще. При поиске нашел что в localconf.php нужно прописывать

$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';

В результате все дерево сайта сменило кодировку и стало похоже на отображение win1251 в utf-8 (ОбратнаС? С?РІС?Р·СЊ).
Проверил базу:
Language Info:Russian (ru-utf-8)
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_general_ci

Но в таблицах Сравнения (collation) стоит cp1251_general_ci.

1 Может ли это влиять?
2 Необхоодимо ли менять кодировку таблицы?
3 Необходимо ли $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'; или можно обходиться без нее?

are
09.12.2006, 14:30
у меня такая же проблема в ce_gallery

вы нашли решение?

Valery Romanchev
09.12.2006, 14:34
Проблема такая: в расширении tt_news (да наверное и во всех остальных), при импорте локали из файла locallang.xml, слова заменяются на вопросы.а в locallang.xml все в какой кодировке?
и откуда он у вас взят? закачен из репозитория?

Проверил базу:
Language Info:Russian (ru-utf-8)
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_general_ci

Но в таблицах Сравнения (collation) стоит cp1251_general_ci.

1 Может ли это влиять?не должно.


2 Необхоодимо ли менять кодировку таблицы?
да, конечно. Иначе будет неправильная сортировка и поиск.

3 Необходимо ли $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'; или можно обходиться без нее?
Вообще есть 2 варианта:
1) у вас все остается по умолчанию и работает как-то
при этом скорее всего не будет правильных сортировок и регистронезависимого поиска
2) вы начинаете разбираться с ситуацией и настраиваете себе полностью корректно utf-8 везде (в связке typo3 PHP MySQL). Тогда без SET NAMES utf8 можно обойтись только если у вас дефолтовая кодировка соединения utf8 и прописана она в mysql.cnf


посмотрите, как выглядит база в phpMyAdmin
если там кракозябры вместо русского - значит на самом деле база лежит в неправильной кодировке (т.е. не в utf-8)

Andrey Grey
09.12.2006, 14:35
На форуме были предложения использовать фиксированные названия в шаблоне, вместо подставных из локалленга. Сделал так.

Andrey Grey
09.12.2006, 14:41
а можно ли вот это как то переконвертить? или уже неконвертируемо?
ОбратнаС? С?РІС?Р·СЊ

Tod
12.12.2006, 02:01
Setup:
config {
metaCharset = utf-8
renderCharset = utf-8
notification_email_encoding = quoted-printable
notification_email_charset = koi8-r
language = ru
locale_all = ru_RU
doctype = xhtml_trans
xmlprologue = none
xhtml_cleaning = all
}
У меня вопрос по этим настройкам. Обязательны ли они все? Следует ли их добавлять для каждого сайта, это стандарт типа?
Особенно интересны metaCharset,renderCharset - в какой-то доке вроде по мультиязычности читал, что они проставляются автоматом в той же кодировке, что и база хранится. или что-то там с forcecharset связано было - точно не помню...
проясните ситуацию) интересно все таки.;)

void
12.12.2006, 04:03
У меня вопрос по этим настройкам. Обязательны ли они все? Следует ли их добавлять для каждого сайта, это стандарт типа?
Особенно интересны metaCharset,renderCharset - в какой-то доке вроде по мультиязычности читал, что они проставляются автоматом в той же кодировке, что и база хранится. или что-то там с forcecharset связано было - точно не помню...
проясните ситуацию) интересно все таки.;)

$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
Это - кодировка бекенда. Если не указаны config.renderCharset и config.metaCharset - то они копируются отсюда.
renderCharset вполне может быть win-1251 при кодировке базы utf-8, в этом случае у вас фронтэнд будет в win-1251, а бекенд - в utf-8. Для бекенда utf-8 настоятельно рекомендуется.

Также, если не указана config.metaCharset - то она копируется из config.renderCharset.
notification_email_encoding = quoted-printable
notification_email_charset = koi8-r
Эти настройки - для почты.
config.language = ru
Эта - главная настройка языка, определяющая, например, язык локализации плагинов...
locale_all = ru_RU
Это - настройка локали PHP. Определяет в осноном вывод функций даты-времени. Чтобы было не Janutember, а Мартобрь.
doctype = xhtml_trans
Это - ваш доктайп. Совершенно необязательно - xhtml_trans. Смотрите по вёрстке, что у вас.
xmlprologue = none
Опять же, нужно не всегда.
xhtml_cleaning = all
Очистка html и преобразование в xhtml силами тайпы. Вообще, можно подключить tidy, но, я думаю, это будет сильно замедлять генерацию страниц.

Valery Romanchev
12.12.2006, 12:42
Это - кодировка бекенда. Если не указаны config.renderCharset и config.metaCharset - то они копируются отсюда.
renderCharset вполне может быть win-1251 при кодировке базы utf-8, в этом случае у вас фронтэнд будет в win-1251, а бекенд - в utf-8.как ни странно, если
forceCharset utf-8
то чтобы была win-1251 в FE надо ставить именно
config.metaCharset = winвdows-1251
иначе кракозябры

filippoff
12.12.2006, 22:40
заметил такую штуку:
при $TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
попытка сохранять некоторые шблоны для расширений в utf-8 приводит к отображению кракозябр при том, что весь сайт в utf-8. сохранение шаблонов в windows-1251 приводит к нормальному отображению в utf-8 на сайте.

Pavel Antonov
13.12.2006, 14:50
Я писал про это... при установке русского языка, Typo3 подразумевает что некоторые поля должны быть в win-1251, как результат неправильное перекодирования с учетом forceCharset.

Либо не ставьте для себя русский язык при работе с шаблонами и помоему с TSConfig... Либо патч примените, я его выкладывал на форум (поиск поможет)

Ice
23.01.2007, 08:42
locale_all = ru_RU
Это - настройка локали PHP. Определяет в осноном вывод функций даты-времени. Чтобы было не Janutember, а Мартобрь.


не могу настроить вывод дат в tt_news на русском языке
у меня след. настройки:

config {
metaCharset = windows-1251
renderCharset = UTF-8
locale_all = ru_RU
language = ru
}

Всё равно выводится "Thursday 18. of January 2007 Давность: 5 days"

Ice
23.01.2007, 08:52
В Windows оказывается надо было ввести
config.locale_all = rus

Ice
23.01.2007, 12:20
даты типа 12 января 2007 выводить не получается, оставил 12 янв 2007
но вот давность почему-то остаётся на англ. языке даже после смены локали:

18.01.07 20:37 Давность: 5 days

Никто не знает, как это решается? Видел, на некоторых сайтах по-русски отображается...

relax..
29.01.2007, 18:12
даты типа 12 января 2007 выводить не получается, оставил 12 янв 2007
но вот давность почему-то остаётся на англ. языке даже после смены локали:

18.01.07 20:37 Давность: 5 days

Никто не знает, как это решается? Видел, на некоторых сайтах по-русски отображается...

age_stdWrap.age = мин. | ч. | дн. | г.

Ice
30.01.2007, 08:29
Большое спасибо :)

agravin
27.09.2010, 14:41
Недавно установил на один сайт расширение full_backup. После апдейта транслейта на русский - вместо слов появились кракозябры. Проверил Locallang - в нем все указано корректно. Закралось подозрение, а не виноват ли сам файл? (т.к. в настройках сервера я не сомневался). Открыл файл с помощью проги bred3 и поменял кодировку (ANSII) на утф-8. После этого перезалил на сервер и все прекрасно заработало.

Так что прежде чем ломать голову , проверьте простые вещи)

Костик
27.09.2010, 16:20
Попробуйте пересохранить "locallang.xml" в другой кодировке!