Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > Локализация проекта

Ответ
 
Опции темы Опции просмотра
Старый 26.05.2003, 20:42   #1
Антон Мельников
Новенький
 
Регистрация: 07.06.2003
Сообщений: 18
По умолчанию (не)русские буквы в javascript-окнах

Захотелось сделать проверку заполнения обязательных полей в почтовой форме (той, которая обычный элемент контента).

Проверка-то происходит, да вот сообщение о незаполненных полях выдается кракозябрами (типа Iacaaiea oo?a eee no?aia: Aaoa)(не знаю, отобразятся ли они здесь; вообще это всякие буквы латинницы с умляутами и прочими диакритическими(?) знаками).

На текущий момент накопал вот чего:
Обработка объекта FORM происходит в "tslib/class.tslib_content.php" .
Там есть строки типа rawurlencode($conf["goodMess"]).

Функция rawurlencode "возвращает строку, в которой все не-алфавитные символы, кроме: "-" "_" и "." будут заменены знаком процента (%), с двумя символами за ним. Это кодировка, описанная в RFC 1738 для защиты не-буквенных символов от интерпретирования.".

В результате образуется строка вида "%D2%C4%E0%F2%E0%20%EE" (программа перекодировщик "Штирлиц" называет такую кодировку "Q.P. Percent". msIE такого не понимает, по крайней мере, в javascript-окошках. Точнее, он не понимает, что это символы в кодировке win.

Кстати, rawurlencode встречается в большой части кода typo3. Видимо, здесь же причина кракозябров в русифицированом бэкенде.

Мысль такая: заменить rawurlencode своей функцией, которая будет перекодировать в "Q.P. Percent" только те символы, которые реально нужно прекодировать, а русские буквы оставлять без изменений.

Либо перекодировать все, но не с помощью rawurlencode, не в "Q.P. Percent", а в другим способом. Гораздо лучше, например, работают варианты "Q.P. html numeric" ( йцу ) или "Q.P. java" ( u0439u0446u0443u043Au0435u043D ), они описывают символ в юникодовой таблице, так что браузер не сможет перепутать кодировку.

Ух, устал писать.. Завтра еще посмотрю..
Антон Мельников вне форума   Ответить с цитированием
Старый 24.10.2005, 12:52   #2
Гордиенко Алексей
Новенький
 
Регистрация: 24.10.2005
Сообщений: 4
По умолчанию

Так как же всетаки быть?
Может действительно заменить rawurlencode своей функцией, что-то типа:

function TYPO3_rawurlencode($string) {
$hex=\"\";
$retstr = \"\";
for ($i=0; $i < strlen($string) ;$i++) {
$char = $string[$i];
if(ord($char) < 193 || ord($char) > 241)
$retstr .= rawurlencode($char);
else
$retstr .= $char;
}
return $retstr;
}

Гордиенко Алексей вне форума   Ответить с цитированием
Старый 24.10.2005, 12:58   #3
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

Господа! читайте новости на главной странице этого сайта.
Проблема решена - скачиваейте экстеншен.

Если вдруг нужно чтобы код формы был валидный XTHML transitional - тогда этот экст нужно пропатчить.
Valery Romanchev вне форума   Ответить с цитированием
Старый 24.10.2005, 14:00   #4
Гордиенко Алексей
Новенький
 
Регистрация: 24.10.2005
Сообщений: 4
По умолчанию

Я его поставил. Да вот отношения к моей проблеме он как мне кажется не имеет.
Я решил установить модуль Front End User Admin
Как описывается в документации.
Так вот при регистрации нового пользователя при повторной загрузке формы регистрации в полях Личная информация например Логин, Адрес данные отображаются кракозябрами.
Я так понял что параметр в форму передается через JavaScript, а именно updateForm('fe_users_form','FE[fe_users][address]',unescape('Ленина%2050'))
при этом строка 'Ленина%2050' формируется с использованием php функции rawurlencode.

Или я что-то не понимаю?
Гордиенко Алексей вне форума   Ответить с цитированием
Старый 24.10.2005, 14:06   #5
Гордиенко Алексей
Новенький
 
Регистрация: 24.10.2005
Сообщений: 4
По умолчанию

Что-бы было поняно:
Строка в примере формируется функцией TYPO3_rawurlencode($string), а следовательно отображается правильно 'Ленина%2050' (только пробел заменен на %20)
Гордиенко Алексей вне форума   Ответить с цитированием
Старый 23.01.2006, 12:30   #6
Клим
Новенький
 
Регистрация: 03.02.2006
Сообщений: 5
По умолчанию re: (не)русские буквы в javascript-окнах

Я тоже инсталировал Extension "onet_correctform" вроде как бы помогло но не совсем

Если я прописываю сообщение прямо в файл "t3lib/jsfunc.validateform.js" тогда изображение правильное но если я обрабатываю сообщение через Setup, например как указано ниже или через Constant Editor тогdа сообщение о незаполненных полях выдается также кракозябрами!
А это важно для многоязычного сайта :neutral:

Может ктонибуть уже с этим сталкивался? Может еще надо чтото вписать в Setup?
Установленый Charset = windows-1251
Контактформа здесь: http://pdkprint.ru/index.php?id=31

Цитата:
tt_content.mailform.20 {
REQ=1
emailMess= Проверте вами заданный E-Mail адрес!
badMess= Заполините пожалуйсто все поля!
}
Клим вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:20.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория