Вход

Просмотр полной версии : Можно ли заставить яваскриптовский alert() писать по русски?


Winston James
01.06.2005, 15:41
Это может понадобиться, например, для проверки обязательных полей при занисении сообщений в гостевую книгу.
В TS можно успешно поменять подтекстовки, но когда не все обязательные поля заполнены, то срабатывает
alert(theBadMess+msg);
и пишет при этом вместо русских слов мусор.

!!! Моя проблема в том, что default язык на моей Винде - немецкий (вполне допускаю, что на руссифицированных компах подобная проблема не возникает).

Может быть кто-то знает выход?

DTViMS
01.06.2005, 17:08
Проблема чисто локальная! Когда браузер читает кодировку страницы, то устанавливает ее верно, а когда работает alert выдается системное сообщение, которое не знает русской кодировки. Может при использовании Koi-8r (вместо win1251) он конвертнет правильно, но шибко сомневаюсь.
Насколько знаю лечится это только двумя способами:
1) Установка региональных настроек в винде РУССКИХ. Тогда сама винда переключит свои шрифты на русскоязычые (почему-то при этом другие языки отображаются обычно корректно).
2) заменить все шрифты в системе на чисто русские.

В обоих случаях может пострадать немецкий язык.
Это вечная проблема и по другому ее никто пока не решал, а если и решал, то ни кому не говорит :(. Проги используют языковые настройки системы, а кирилица там всегда где-то глубоко запряталась. Некоторые проги еще более упрямые, что им даже такие меры не помогаю и они отказываются руссифицироваться. Также редкая прога умеет правильно отображать шрифты не зависимо от настроек системы.
Во, еще можно попробовать Юникод.
А еще можно заменить алерт на сообщение в dhtml, по типу контекстного меню в типе. Или новое дочернее окошко браузера с отключенной командной строкой, там же можно сделать чтобы родительское окно не становилось активным пока не закрыто дочернее. В последних вариантах можно и сообщение вывести более продвинутое.

Winston James
01.06.2005, 17:30
2 DTViMS
Спасибо за ответ. У меня тоже такое чувство, что в данном случае проблему немецкий-русский не решить. Дело в том, что в немецком есть несколько нестандартных букв, которые рассполагаются во второй половине кодировочной таблицы, т.е. там же, где и кириллица. Так что тут уж или-или.
Уникоды не помогают - я проверял (это ведь не HTML).
Похоже, действительно, эту проблему можно решить, отказавшись от вывода месседжей посредством алертов. Но тогда это будет, строго говоря, не ответ на вопрос, в том виде, в котором он был поставлен. А самое главное - для этого придется залезать в нутро TYPO3, чего, естественно, делать не хотелось бы.

Valery Romanchev
01.06.2005, 17:46
Я решал эту проблему в 3.6.0 для случая mail form. Сделал патч: забил русский текст в PHP код.

DTViMS
01.06.2005, 17:49
Залезать в нутро иногда приходится. Все мы люди и делаем ошибки, а их приходится исправлять. А еще стандартных возожностей часто не хватает: Например, дату по русски можно задать \"9 мая\" или \"9 май\", а strftime использует только один падеж.

Pilot
02.06.2005, 11:48
проще все делать на англ. либо не создавать алерты

daoman
12.05.2008, 01:43
а можно уточнить, где были изменения по коду?

Valery Romanchev
12.05.2008, 02:29
используйте экстеншен powermail
(стандартные майл формы уже устарели - в них нет каптчи и сохранения в базу... точнее есть плагины под это, но ставить и настраивать - себе дороже.. лучше один нормальный использовать)