avva: (Default)
[personal profile] avva
Эта запись обращена в первую очередь к программистам, а также специалистам по проблемам языков и кодировок на веб-страницах и в веб-проектах. Но и ко всем вообще, кто хочет высказать своё мнение.

Уважаемые программисты-специалисты!

Сейчас идёт обсуждение того, как улучшить и приспособить ЖЖ для нужд юзеров, пишущих и читающих на самых разных языках, кроме английского. Общее отношение к этой задаче у разработчиков и админов ЖЖ (в частности, у главного decision-maker'а [livejournal.com profile] bradfitz) самое положительное, все хотят это сделать. Просто до сих пор руки не доходили этим заниматься.

Эта запись существует для того, чтобы собрать мнения и аргументы знающих людей в пользу тех или иных решений проблем локализации. Самое лучшее решение (с точки зрения удобства для юзеров, поддержки многих языков, не слишком большой нагрузки на сервера и т.п.) почти наверняка и будет воплощено в жизнь, но сначала это лучшее решение надо найти. У меня хватает теоретических знаний в области Юникода, кодировок и так далее, но совсем нет практического опыта локализации проектов или дизайна многоязыковых проектов. Поэтому и обращаюсь с просьбой о помощи.

Можно разделить проблему на две части.

1. Русификация юзер-интерфейса (и вообще локализация его на разные языки).
2. Поддержка кодировок и языков в записях и комментах ЖЖ, в частности, на уровнях хранения
в базе данных и передачи браузеру юзера.

Проблема 1. относительно несложная. В одном из своих предыдущих проектов [livejournal.com profile] bradfitz уже сделал схему поддержки многоязыкового интерфейса, которая скорее всего будет приспособлена для целей ЖЖ. См. http://www.freevote.com . Переводить менюшки, страницы и т.п. с английского на русский (и другие языки) должна будет небольшая команда (команды) добровольцев. Для каждого языка (так мне сейчас представляется, если можно лучше - поправьте) будет храниться своё название кодировки, к-е будет прописываться в атрибуте HEAD каждой служебной HTML-страницы (служебная страница = всё, кроме дневников и дружеских с календарными лент. Т.е. то, что кончается на .bml).

Основные сложности заключаются во второй проблеме. Как дела обстоят сейчас? Любой текст записывается в базу данных в виде 8-битного потока. Если он туда был отправлен в какой-то кодировке, то потом, чтобы его правильно посмотреть, у юзера эта кодировка должна быть правильно прописана. Например, в русском ЖЖ мы де-факто стандартизировались на cp-1251.

Кроме того, время от времени IE по каким-то своим причинам посылает серверу ЖЖ не 8-битный текст, а переводит все русские буквы в Юникод и посылает их в виде HTML-entities типа Ӓ Серверу на это плевать, он их в таком же виде записывает в БД и выбрасывает потом юзеру.

Чего хотелось бы добиться?
1. The Right Thing. Главным критерием [livejournal.com profile] bradfitz'а и остальных здесь является сделать не как попроще, чтобы отвязаться, а как правильно, в соответствии со стандартами, и чтобы юзерам было поудобней.
2. Любой текст, записываемый в БД, должен быть идентифицирован с точки зрения его кодировки. Т.е. например он либо сразу должен быть в Юникоде, либо, если это 8-битный текст, вместе с ним должна быть записана информация о кодировке и/или языке.
3. Желательно придумать решение, позволяющее многоязыковость в пределах одной страницы. Например, я запишу себе в друзья японца, француза и русского; хотелось бы их записи все видеть правильно на одной френдовой ленте.

Какие пока придуманы варианты?

На входе:
1) Брать тот же восьмибитный поток от браузера, но не забывать про информацию о кодировке (если я правильно помню, браузер прописывает её в HTTP-заголовках?). Хранить информацию в базе данных в том же виде, что и сейчас, плюс кодировка для каждой записи/комментария.
2) Брать восьмибитный поток от браузера и переводить его в чистый Юникод при помощи информации о кодировке. После этого в базе данных хранить одним из двух способов:
2а) перевести все Юникод-символы больше 128 в HTML-entities типа Ӓ , полученный текст хранить как восьмибитный поток, как и раньше.
2б) хранить в БД сам Юникод как-он-есть, например в кодировке UTF-8.

На выходе:
3) Брать текст вместе с кодировкой, записанный в варианте 1) выше, и выкидывать его наружу без изменений. Кодировку прописывать в заголовок страницы. Этот вариант, однако, не позволяет соседствовать на одной странице записям/комментариям на разных языках/в разных кодировках.
4) Брать текст из БД, как бы он там ни был записан, переводить его в Юникод (если он ещё не в Юникоде), из Юникода в HTML-entities, и в таком виде кидать юзеру. Недостатки: больше траффика (но страницы зипуются сервером, если браузер это понимает, так что это, возможно, не так страшно); все ли браузеры правильно поймут и покажут HTML-entities?
5) Брать текст из БД, как бы он там ни был записан, переводить его в Юникод (если он ещё не там), и кидать его в UTF-8 юзеру, прописав UTF-8 в качестве кодировки на странице. Недостатки: все ли браузеры правильно понимают и интерпретируют кодировку UTF-8?

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

    Спасибо!

    P.S. Если у кого-то есть желание присоединиться к команде разработчиков ЖЖ, то они все тусуются в этих двух местах: [livejournal.com profile] lj_dev и http://lists.livejournal.com .

Ëó÷øå ïîçäíî, ÷åì íèêîãäà

Date: 2001-10-28 05:19 am (UTC)
From: [identity profile] ex-eremei502.livejournal.com
Àíàòîëèé, âîò ñîçðåë ÿ ïîñëå äâóõ ìåñÿöåâ ïðåáûâàíèÿ â ÆÆ äëÿ òîãî, ÷òîáû âûñêàçàòü íåñêîëüêî ÷èñòî ÷àéíèöêèõ ñîâåòîâ. Åñëè ÷òî-òî èç íèæåñêàçàííîãî èçëîæåíî òåõíè÷åñêè áåçãðàìîòíî èëè, ïî ïðè÷èíå âñå òîé æå áåçãðàìîòíîñòè, ÿ íå çàìåòèë óæå íàëè÷åñòâóþùóþ îïöèþ - çàðàíåå ïðîøó èçâèíèòü.

1. Íå õâàòàåò îïöèè "ïîäïèñêè" íà êîíêðåòíûé òîïèê è âñå ðåïëàè, ÷òîáû îòñëåæèâàòü õîä èíòåðåñíîé äèñêóññèè â ÷óæîì äíåâíèêå â òåõ ñëó÷àÿõ, êîãäà ðåïëàé èäåò íå ìíå.

2. Íå õâàòàåò îïöèè "ïîäïèñêè" íà âñå ïîñòèíãè êîíêðåòíîãî àâòîðà - íå òîëüêî äíåâíèêîâûå, íî è â "âåòêàõ". (Êðîìå ñîçíàòåëüíî çàêðûòûõ, ðàçóìååòñÿ.) Òî åñòü, ÷òîáû ÿ ìîã, äîïóñòèì, ïîñìîòðåòü âñå îòêðûòûå ïîñòèíãè Èêñà â èõ ïîñëåäîâàòåëüíîñòè.

3.  Update Journal òîæå íå õâàòàåò îïöèè Preview. Ñíà÷àëà ÿ äàæå íå ìîã ïîâåðèòü, ÷òî åå íåò; âðîäå, íàïðàøèâàåòñÿ, äà è â "âåòêàõ" åñòü. Íî çà äâà ìåñÿöà òàê è íå íàøåë.

4. Î÷åíü ïîìîãëè áû åùå äâà ïîèñêîâèêà: (1) ïî óïîìèíàíèþ èìåíè þçåðà èëè íèêà â ÷óæèõ ïîñòèíãàõ è (2) - ïî êëþ÷åâîìó ñëîâó. Ïîäïèñêà íà óïîìèíàíèå ñîáñòâåííîãî èìåíè è/èëè íèêà òîæå íå ïîìåøàëà áû.

5. Îòêëþ÷èâ àíîíèìóñîâ â ñâîåì äíåâíèêå, â ÷óæîì ÿ îò íèõ íå çàùèùåí, åñëè òîëüêî íå çàùèùåí ñàì õîçÿèí òîïèêà (îïÿòü æå, åñëè ÿ íå çåâíóë ýòó îïöèþ). Õîðîøî áû ñäåëàòü òàê, ÷òîá ïåðâè÷íûìè áûëè óñòàíîâêè àâòîðà, à íå õîçÿèíà äíåâíèêà.

6. Õîòÿ áû äëÿ ïëàòíûõ þçåðîâ âûäåëèòü ïî 2-3 ìåã äëÿ êàðòèíîê. À â èäåàëå áû äëÿ âñåõ. Íå ó âñåõ åñòü ñâîè ÕÏ, à ñî ìíîãèõ ãðóçèòü êàðòèíêè íåâîçìîæíî (êàê ñ ìîåãî Ãåî, íàïðèìåð).

7. Ñäåëàòü âîçìîæíûì ïðîñìàòðèâàòü òîïèê ñ áîëüøèì êîëè÷åñòâîì ïîñòèíãîâ áåç "ñêëàäóøåê", ò.å. êàê åäèíóþ ëåíòó áåç îòñûëîê è çàóæåíèé.

8. Íàêîíåö, õîðîøî áû ïîëó÷àòü ìýéëû ïî äèíàìèêå ôðåíäñ è ôðåíäñ îô. Ê ïðèìåðó, [livejournal.com profile] kot Âàñ âûðóáèë, à [livejournal.com profile] pes, íàïðîòèâ, âêëþ÷èë. Ýòî, âðîäå áû, åñòü â êëèåíòå, íî íå âñåì îí íðàâèòñÿ èëè ïîíÿòåí.

Âîò, âðîäå, è âñå.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 08:39 am
Powered by Dreamwidth Studios