Несколько языков на одной странице - мегапростое решение, или подводный камень?

LeaetherStrip

Новичок
Несколько языков на одной странице - мегапростое решение, или подводный камень?

Господа!

Может, кто сталкивался, подскажите, плиз!

Стоит задачка: поддерживать на сайте 3 языка: русский, английский, турецкий. Соответственно, у каждой сущности описание на 3-х языках.
По разным причинам, хотелось бы все эти описания вводить на _одной_ странице в админке. Т.е. чтоб было 3 поля для ввода описаний.

Для начала я сделал очень просто. Вообще не заморачиваясь с iconv/htmlentites итд, прописал в заголовке админской страницы:
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=windows-1251">

После отправки весь rus/eng текст стал приходить "как есть", а турецкий - сам кодироваться в &#XXXX; где надо (он наполовину латиницей). Соответственно, все нормально выводится и на сайт. Причем работает безотказно как в IE, так и в Opera и Mozilla.

Какое-то подозрительно простое решение.... наверняка не универсальное. Отцы, подскажите - где собака зарыта? ;-)

Спасибо!
С уважением, LeaetherStrip
 

untied

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

LeaetherStrip

Новичок
2 untied:
Проблема в том, что _все_ решения на тему мультиязычности предлагают юзать htmlentites либо UTF-8 ... наверное не зря?
Вот я и интересуюсь, не делал ли кто-то, как я, и не столкнулся ли при этом с какими-то траблами... Причем не из любопытства интересуюсь, а из практических соображений. Если переходить на UTF-8 , надо кучу всего переделывать. А как htmlentites пользовать, когда у меня 3 разноязычных поля на одной странице (причем у всех админов могут быть разные кодировки), я вообще слабо представляю.
У турков-то все нормально выводится. но пока опрошены только 2 турка :) нерепрезентативно.
 

untied

Сдвинутый новичок
UTF-8 -- это универсальное решение, которое защитит от возможных проблем. Но есть одно "но". Файлы длиннее становятся (соответственно возрастает трафик и время загрузки).
Насчет кучу всего переделывать -- не уверен. К примеру, я пользую EditPlus, а он запросто позволяет сохранять файлы в кодировке UTF-8 (т.е. открываешь обычный файл win-1251, а сохраняешь в UTF-8).
 

LeaetherStrip

Новичок
2 untied:
Хм. Получается, единственный грамотный выход, не зависящий от локальных настроек, языков итд - это все *.php пересохранить в UTF-8, и сконвертить все русские тексты, которые уже забиты?
 

untied

Сдвинутый новичок
Угу. Единственно грамотный -- да.
Но вот оптимальный ли...? Я, честно говоря, не понял, почему ты указываешь кодировку win-1251, а турецкий текст у тебя правильно перекодируется и отображается.
Но если это так, имеет ли смысл что-либо менять и переделывать?
 

LeaetherStrip

Новичок
Ну, про оптимальность разговора нет... там один дизайн килобайт под 250 весит ;-) так что хрен с ней.

Про отображение турецкого текста. Как я понял, браузер при вводе текста смотрит на указанный в заголовке charset. В моем случае, win-1251. Если вводится русский текст, он оставляет его как есть, а если турецкий - заменяет на &#XXX;. Соответственно, при отправке посылается все ОК :)

Если charset заменить на 1254 (турецкий), то будет все наоборот - без изменений будет вводиться турецкий, а превращаться в &#XXX; будет русский :)

Идея благородная, но пока не прошедшая клинических испытаний :)) так что, если больше никто ничего не подскажет, заюзаю UTF-8.

Спасибо!
 

SiMM

Новичок
Проблемы начнутся (если не пользовать UTF-8), когда ты захочешь сделать поиск по своей базе - заставить MySQL (или кого-то ещё) игнорировать регистр букв, записанных в виде &#код; будет проблематично ;)
 

SPYFORCER

Новичок
Автор оригинала: untied
Если все выводится, то в чем проблема?
Ты, кстати, у турков интересовался, выводится ли у них все как надо? (с их браузерами, локальными установками, шрифтами и т.п.)
А переделывать... почти ничего ненадо... формируй вывод в UTF-8 и всё...
а храни инфу как хочешь.

-~{}~ 06.03.05 12:09:

Автор оригинала: LeaetherStrip
Ну, про оптимальность разговора нет... там один дизайн килобайт под 250 весит ;-) так что хрен с ней.

Про отображение турецкого текста. Как я понял, браузер при вводе текста смотрит на указанный в заголовке charset. В моем случае, win-1251. Если вводится русский текст, он оставляет его как есть, а если турецкий - заменяет на &#XXX;. Соответственно, при отправке посылается все ОК :)

Если charset заменить на 1254 (турецкий), то будет все наоборот - без изменений будет вводиться турецкий, а превращаться в &#XXX; будет русский :)

Идея благородная, но пока не прошедшая клинических испытаний :)) так что, если больше никто ничего не подскажет, заюзаю UTF-8.

Спасибо!
А простой заменой кодировке в заголовке ничег не выйдет... если будет 3 языка одновременно... то наши интелектуальные браузеры начнут автоматически пытаться разпознать кодировки... немного игнорируя charset... я делал сайт на утф-8 и была такая фигня... решил так: перед выводом контента полыла header с явнім указанием что charset контента будет утф-8... и всё классно работает.
 

Royal Flash

-=MaestrO=-
А зачем, обязательно, вводить сразу 3 язоковые версии на 1 странице и все так усложнять? Если вводить по одной за раз, то для каждого языка можно указать свою кодировку (например если русский, то кодировка win-1251, если турецкий, то win-1254 и т. д.), для вывода посетителю, тоже самое. Проблема решена на корню :)
 

SPYFORCER

Новичок
Автор оригинала: Royal Flash
А зачем, обязательно, вводить сразу 3 язоковые версии на 1 странице и все так усложнять? Если вводить по одной за раз, то для каждого языка можно указать свою кодировку (например если русский, то кодировка win-1251, если турецкий, то win-1254 и т. д.), для вывода посетителю, тоже самое. Проблема решена на корню :)
Вот тебе пример... доска объявлений, люди дают объявления в своих кодировках... а как ты одновременно покажешь? УТФ рулит.

П.С. и ничё сложного нет.
 

LeaetherStrip

Новичок
Или, например, если у тебя на одной страничке в админстве редактируется описание товара сразу на 3-х языках :)
(cм. выше, я же писал).

Да, с UTF8 все решилось наилучшим образом.

PS. Попутно слегка разочаровал любимый EditPlus - оказывается, нельзя в нем отредактировать файл с 3 разными чарсетами ;-)) А в Зенде, оказывается, и с обычным-то русским проблемы... Эх, нету нормальных редакторов, нету.. ;-))
 

Кром

Новичок
>Эх, нету нормальных редакторов, нету.. ;-))

EditPlus - нормальный редактор.

В UltraEdit можно работать с utf. Галочку в настройках ставишь и вперед.
Но на самом деле, в большинстве случаев использование разных кодировок в одном скрипте - моветон.

>А в Зенде, оказывается, и с обычным-то русским проблемы.

Какие еще проблемы? У меня есть 3.5.1 Plus. Абсолютно никаких проблем с русским нет.
 

SPYFORCER

Новичок
Автор оригинала: Кром
>Эх, нету нормальных редакторов, нету.. ;-))

EditPlus - нормальный редактор.

В UltraEdit можно работать с utf. Галочку в настройках ставишь и вперед.
Но на самом деле, в большинстве случаев использование разных кодировок в одном скрипте - моветон.

>А в Зенде, оказывается, и с обычным-то русским проблемы.

Какие еще проблемы? У меня есть 3.5.1 Plus. Абсолютно никаких проблем с русским нет.
А в 4 зенде вообще всё супер...

-~{}~ 09.03.05 10:10:

Автор оригинала: LeaetherStrip
Или, например, если у тебя на одной страничке в админстве редактируется описание товара сразу на 3-х языках :)
(cм. выше, я же писал).

Да, с UTF8 все решилось наилучшим образом.

PS. Попутно слегка разочаровал любимый EditPlus - оказывается, нельзя в нем отредактировать файл с 3 разными чарсетами ;-)) А в Зенде, оказывается, и с обычным-то русским проблемы... Эх, нету нормальных редакторов, нету.. ;-))
а вообще пофик в какой кодировке скрипты сохранять хоть в исо, хоть в 1251 1252 .... утф.. ... , как я писал выше делай вывод в УТФ... а хранить ты можешь в какой хочешь... и необязательно скрипты в УТФ сохранять
 

Timer-Lan

Guest
Намучавшись с кодировками, прочитав этот топик, я думал, что нашёл решение для себя (отображение записей на нескольких языках на одной странице), но всё оказалось не так. Прописав в мета-теге UTF-8, у меня, вместо русского языка, появилась билиберда. Что в этом случае делать, подскажите, пожалуйста.
 

svetasmirnova

маленький монстрик
1. Проверить, в какой кодировке выводятся данные в самом деле
2. Посылать дополнительный header
 

Timer-Lan

Guest
1. Проверяю (правой кнопкой мыши -> Кодировка): показывает utf-8
2. Посылал дополнительно header - не помогает.
(Работаю локально, на Денвере 2 под виндой)
 
Сверху