Большинство сайтов в Интернете изначально делается на одном языке (русском, английском, немецком и т.д.), однако время идет и возникает потребность добавления новых языков. Кажется, что сложного, просто добавить еще один язык, все материалы на сайте перевести еще на один язык, однако как показал опыт работы, которую сейчас выполняю, есть и неоднозначные моменты.
В Казахстане, как правило, сайты изначально разрабатываются и появляются на русском языке. Потом к сайту иногда добавляются еще казахский и английский языки.
Почему так? Так получилось что пока основной язык в казахстанском Интернете русский. Именно на него приходится большая часть появляющихся новых сайтов, новых страниц, показов страниц пользователям. С учетом его специфики и разрабатываются новые сайты.
Но проходит время и по разным причинам появляется необходимость добавлять новые языки. Какие языки добавляют и по каким причинам:
- казахский язык добавляют по тому, что это государственный язык. Есть Закон о языках, другие требования, по которым сайты государственных органов, СМИ так или иначе обязаны иметь версию на казахском языке. Чаще это принудительное мероприятие, чем острая необходимость. Хотя всё чаще появляются страницы на казахском языке и на сайтах коммерческих компаний, личных сайтах частных лиц.
- английский язык добавляют как международный язык. Его чаще добавляют крупные государственные сайты и компании.
- прочие языки. Редко, но можно встретить казахстанские сайты с информацией на немецком, польском и иных языках. Как правило, это сайты местных филиалов международных компаний. Им так положено.
Как родилась эта статья? Недавно мне предложили помочь в доработке одного казахстанского сайта. На сайте был только русский язык, нужно было добавить казахский и английский. Так получилось, что несколько лет назад я уже провел сильную модернизацию сайта. По сути, заново его создал. После его полной модернизации новые материалы, статьи, новости на сайт мог вносить любой работник организации, ему не нужно было знать языки программирования и т.д. Добавлять новости не сложнее, чем создать новую тему на форуме в Интернете. Всё удобно и автоматизировано. Тогда главным было простота и удобство использования, создания новых страниц без наличия специальных знаний. На практике секретарша обучалась этому за 10-15 минут.
Тогда я специально уточнил, есть ли необходимость в версиях на казахском и английском языках. Ответ был отрицательным. Но всё меняется и теперь эти языки для сайта нужны. Хорошо, что тогда заложил основу, чтобы в будущем это сделать было не сложно.
К сожалению, большинство веб-программистов, веб-студий и т.д. переводят сайты на казахский язык, не прорабатывая теоретическую базу. А если серьезно подойти к вопросу, то есть несколько подводных камней, которые не учитывают и даже не подозревают наши веб-студии.
Прежде чем воплощать в программном коде, я решил разобраться в вопросе и выложу в статье основные подводные камни, грабли, с которыми Вы можете столкнуться.
Кодировка текста. Технический аспект.Делать сайты на русском и английском языках не сложно. Это можно делать в распространенной кодировке Win-1251 или KOI-8R. Эти кодировки были широко распространенны в русском Интернете, т.к. были сделаны специально для русского языка. Но в них нет букв казахского языка. К сожалению, до сих пор по традиции многие сайты в Казахстане создаются на базе кодировки Win-1251, а значит писать на казахском языке затруднительно.
Из известных нам сайтов, применяющих кодировку 1251, прежде всего можно вспомнить:
taxkz.kz
balans.kz
uchet.kz
buhgalter.kz
zakon.kz
и т.д. Как видите, многие известные сайты до сих пор работают на этой кодировке. Всё замечательно, пока нет необходимости писать на казахском языке. На деле это возможно, но делается намного сложнее, чем в других вариантах. Поэтому на этих сайтах писать на казахском языке затруднительно.
Дальше были попытки в Казахстане изобрести собственную казахскую кодовую страницу. Есть несколько попыток. Сейчас самый известный это СТ РК 1048-2002, но он был утвержден слишком поздно, в 2002 году. Поэтому если на нем создавать сайты, с большой вероятностью он не будет нормально показываться у пользователя. Найти такие рабочие сайты не смог, что и правильно.
Ну и наконец рекомендуемая мною кодировка: UTF-8. Это специальная кодировка, используя его можно на одной странице писать на русском, на казахском и еще на большом количестве различных языков, включая китайский, арабский и т.д. Кодировка 1251 это не позволяет.
Такая кодировка используется у нас на
http://bb.f2.kz/А также на
salyk.kz
cabinet.salyk.kz
и на большинстве других государственных и негосударственных сайтах, на которых есть казахская версия сайта.
Есть правда еще кодировка UTF-16 и Unicode. Но их использовать не рекомендую. UTF-8 стал, по сути, стандартом.
Как различать страницы на разных языках. Технический и визуальный аспект.Страницы на разных языках, как правило, располагают так, чтобы по их адресам можно было определить на каком они языке. Делается это не только для человека, но и для сервера сайта, таким образом, он пытается понять какой язык ему показать.
Вот по этим примерам понятно, на каких языках страницы:
- Код: Выделить всё
1) http://www.minfin.kz/index.php?lang=rus - на русском (язык указывается параметром к странице)
2) http://bb.f2.kz/ru/cabinet/ - на русском (язык указывается в пути к странице)
3) http://www.eng.stat.kz/ - на английском (язык указывается в домене)
По сути, не важно, как мы идентифицируем язык. Чаще всего применяют первый и второй вариант. Третий вариант, когда визуально создается для отдельного языка отдельный сайт достаточно редкий, среди государственных сайтов такое нашел только на сайте Агентства по статистике РК, за что им благодарность, можно показать как пример.
Выбирайте как Вам удобно или по техническим соображениям.
Как правильно указывать казахские страницы в запросе kaz, kazakh или kz. Вопрос стандартовТут каждый как хочет, так и называет страницы.
Кто-то язык указывает с помощью трех букв: kaz, eng, rus
Кто-то с помощью двух букв: kz, en, ru
И так, большинство веб-дизайнеров не изучают международных стандартов, а пытаются следовать логике, что в нашем случае приводит их к различным выводам.
Когда выбирают с помощью трех букв, объясняют, что с помощью них можно описать названия языка и понятно, что это именно русский, английский, казахский. Правда, почему 3 буквы, а не 4? Чуть ниже объясню, что три буквы вполне себе вариант для использования, но есть и другие варианты.
Люди, которые указывают 2 буквы, используют логику, но из-за этого еще дальше от стандартов. Мы все помним, что сайты можно различить по домену:
example.com - международный
example.ru - русский
example.kz - казахский.
Но имейте ввиду, что нам необходимо различать не языки, а страны. И брать их надо не просто так.
Есть стандарт ISO 3166, который описывает коды стран. Он описывает двухбуквенные, трехбуквенные и цифровые коды.
Так Казахстан имеет коды: kz, kaz, 398. Ничего не напоминает? Да, эти коды Вы заполняете и указывайте в некоторых налоговых формах и берете Вы его из классификатора стран мира, который базируется как раз на ISO 3166.
Казалось бы, есть стандарт им и пользуемся. И это правильно только в одном случае, если Вы указывайте не язык, а страну. Т.е. если у Вас есть версия для России, для Казахстана и для Китая, то их можно назвать так:
example.com/ru/ - русский
example.com/kz/ - казахский
example.com/cn/ - китайский
Но страница example.com/kz/ предназначена прежде всего для Казахстана. А ведь в нем уже может быть страница на казахском, русском или другом языке. Стандарт ISO 3166 не указывает языка, а указывает страну.
В Казахстане есть государственный язык, есть язык межнационального общения. А если это сайт компании, то вообще по адресу example.com/kz/ можно написать информацию например на итальянском, если головная компания из Италии.
В Швейцарии 4 официальных языка. Как видите кодированием страны нельзя описать полностью код языка.
А вот языки описывает совсем другой стандарт. ISO 639 описывает коды различных языков. И имеет 4 утвержденных раздела и несколько дополнительных, еще разрабатываемых разделов:
ISO 639-1 действует с 1968 года. Описывает двух буквенные коды языков.
ISO 639-2 действует с 1998 года. Описывает трех буквенные коды языков.
ISO 639-3 и т.д. это дополнительные разделы описывают языки, не включенные в ISO 639-2 и группы языков.
Вот по стандарту ISO 639-2 казахский язык как раз и имеет обозначение kaz. Так что его вполне можно использовать. Однако это относительно новый стандарт, если сравнивать с ISO 639-1. А значит менее распространенный. И если Вы планируете, что Ваш сайт может оказаться когда-нибудь в будущем в связке и взаимодействии с другими системами желательно, чтобы он поддерживал самый распространенный стандарт кодирования. А таким является стандарт ISO 639-1.
Одна проблема, по стандарту ISO 639-1 казахский язык кодируется как kk, а во все не kz.
Так что если Вы хотите кодировать код языка, то указывать его лучше как kk или kaz, а во все не как kz.
Т.е. правильными вариантами могут быть:
example.com/kk/
example.com/kaz/
А вот example.com/kz/ конечно приемлем, однако если так Вы показывайте язык, то это не соответствует стандартам.
У Вас есть выбор:
example.com/kk/ - я выбираю его, так как у него выше совместимость со стандартами, системами, которые используют более распространенный стандарт ISO 639-1
example.com/kaz/ - визуально более красивый, но использует менее распространенный стандарт ISO 639-2, если в будущем появится необходимость интеграция с другими системами, могут быть проблемы.
Прошелся по основным сайтам государственных органов. Двухбуквенное kk используют только сайты Министерства сельского хозяйства и на сайтах Министерства туризма РК. На остальных сайтах в разброс.
Интерфейс и содержание могут быть на разных языках. Что показывать, если для данного текста нет пока перевода. Визуальный аспект.
Это один из самых неочевидных аспектов при создании мультиязычного сайта. Для большинства сайтов строится интерфейс, состоящий из меню, панели пользователя, навигации и т.д. и самого содержания.
Вот, например, на нашем сайте есть меню, есть панель с последними сообщениями на форуме и т.д. А есть область самого контента (содержания, материала). И вот материал может быть на языке отличном от интерфейса. Почему? Опишем ниже, но есть еще другой случай. Положим для определенного текста нет перевода на некоторые языки, что делать в таких случаях? Можно либо написать, что перевода на этот язык нет. Я же сделал иначе и на сайте в этом случае показывается текст на другом языке. Как правило, есть перевод на русском, если нет перевода на английском или казахском, то показывается текст на русском.
Есть правда еще вариант, отправить на сервис перевода текста с одного языка на другой. Но пока нет удовлетворительных сервисов для перевода текста с русского на казахский.
Как определять на каком языке показывать пользователю страницы? Технический и визуальный аспект.
Положим, пользователь по ссылке Вам попал на страницу:
- Код: Выделить всё
http://bb.f2.kz/ru/sono/
на каком языке показать страницу?
Казалось бы, очевидно на русском, на что указывает запись ru в пути к странице sono.
Если мы определяем только по адресу страницы. Но есть и другие варианты: смотреть на язык, который записан в cookie, смотреть на язык, который сообщает браузер, смотреть из какой страны пришел пользователь и т.д.
По первому варианту. Один из вариантов создания мультиязычных сайтов, это записывать в cookie пользователя его выбор. Положим, пользователь заходит на сайт и сознательно изменяет, например, язык с русского на английский. Тогда пользователю в cookie записан его выбор и все страницы показываются на английском, пока он сознательно не сменит свой выбор сам. А если страница bb.f2.kz/ru/sono/ ему показать текст на русском, а интерфейс на английском. Т.е. если даже он не сможет прочитать текст, зато хоть остальные элементы страницы на родном для него языке. Но можно ему специально показать английскую версию.
Такой вариант с записью выбора языка среди сайтов государственных органов я нашел только после долгих поисков лишь на сайте Министерства сельского хозяйства Республики Казахстан и на сайтах Министерства туризма. Эту технику используют очень редко, а зря.
Кроме cookie или явного указания в адресе, можно предполагать язык и по другим параметрам. Например, по языку браузера. Браузер может сообщать сайту предпочитаемый язык и на основании его выдавать соответствующий язык. Я сам использую несколько браузеров и все раздают разные предпочитаемые языки. Как правило, это: русский, русский и английский или русский и казахский.
А вот как браурер передает язык? Он следует стандарту ISO 639-1 и показывает язык с помощью двух букв. Т.е. если пользователь бродит по Интернету с помощью казахской версии браузера, то он будет передавать серверу, что предпочитает язык kk. Как видите, если Вы используете более распространенный стандарт, это может много раз помочь. Т.е. если Вы используете код языка kk, Вы опять получаете хорошие возможности благодаря распространенным стандартам.
Т.е. если заходит пользователь, у которого браузер показывает предпочитаемый язык, скажем итальянский и английский, то показать ему английский вариант сайта. А если браузер сообщает русский и английский, то дать ему русскую версию.
Есть и другие варианты. Но они еще более сложные, с большим риском ошибки. Например, по IP-адресу, по сайту, с которого, пришел пользователь, по страницам, которые смотрел ранее и т.д.
Как видите, на казахстанских сайтах используется в основном самый простой способ. Но в реализации сайта, за который я взялся я решил остановиться на том же варианте. Хотя предусмотрел еще автоматический выбор по языку браузера. Это на будущее, если вдруг добавятся другие европейские языки. Делать выбор по русскому или казахскому только по указанию браузера пока неэффективно. А вот если бы сайт был ориентирован на европейские языки, то такой вариант будет эффективным.
Визуальная идентификация. Аспект удобстваПоложим, пользователь попадает на сайт, а там незнакомый ему язык. Нужно показать, как перейти на известный язык. Нужно на видном месте дать ему ссылку для перехода на его язык. При этом название его языка надо дать на понятном ему языке. Т.е.ссылку на английскую версию дать как "English", а не как "Английский язык".
Еще одним методом является флаг страны. Т.е. можно возле ссылок поставить небольшие рисунки флагов стран Казахстана, России, Англии. Тут правда у меня заминка произошла. Флаг Казахстана, после уменьшения получается не таким красивым. Если кто нарисует небольших размеров казахстанский флаг (шириной от 15 до 120 точек), но в красивом интересном исполнении, будет замечательно. На большинстве сайтов флага или нет, либо он неидеального качества.
Трудности перевода - вместо заключенияКак видите нюансов много. И это я только указал детали технического плана. Есть и другие детали, например, качество перевода. Необходимо, чтобы перевод не только был, а был действительно качественным. Хорошо, если текст после переводчика прочитает носитель языка. Даже хороший переводчик говорит и пишет не так, как носитель языка.
Кроме того, имейте ввиду, что кроме перевода текста нужно адекватно перевести и интерфейс. Бывает, так что открываешь сайт, переходишь на казахский язык, а погода, счетчики, голосование, реклама, меню, заголовки и т.п. на русском языке.
Думайте о будущем – вместо постскриптумаКогда что-то делаете, иногда помогает думать о будущем. Например, когда несколько лет назад я в первый раз серьезно переделывал сайт, о котором говорю в этой статье, то специально перевел сайт на кодировку UTF-8, чтобы можно было писать на казахском и других языках, а не только русском. Хотя тогда это казалось излишеством.
Чем же может быть полезен этот совет. Во-первых, не думайте, что у Вас может всё остановиться только на 2-3 языках. Вполне может быть, что позже появится необходимость еще в нескольких языках. Часто программисты пользуются жесткими названиями переменных и таблиц. Например, заведут таблицы или переменные form_rus, form_kaz, form_eng. А если еще языки добавятся? Придется новые таблицы и переменные создавать? Может лучше предусмотреть модель, когда количество языков гибкое и их изменение не потребует ввода новых переменных и таблиц.
Другой возможный источник проблем в будущем это языки, которые пишутся справа налево. Это мы с Вами пишем слева направо. А большое количество жителей планеты пишут наоборот. Предусмотрите, что Ваша новая версия сайта может при желании иметь версию на арабском языке. Я попробовал сделать арабскую версию сайта. Стало ясно, что в этом случае нюансов тоже немало.
Как все помнят, я часто занимаюсь поисковыми технологиями по сайту. Пока на сайте, который я обновляю, поиск ведется по всем материалам всех языков. Т.е. если пользователь открыл казахскую версию и сделал поиск на сайте, то ему выдаются и результаты поисков и на других языках. Впрочем, в одних случаях нужно иметь раздельные режимы поиска для каждого языка, в других случаях желателен общий поиск для всех языков.
Видимо есть и другие нюансы, с которыми я пока не столкнулся. В данный момент сайт, которым занимаюсь технически готов, а вот на практике только через месяц будет выделен переводчик, который начнет перевод на казахский и английский языки.
Я пока только перевел основные элементы интерфейса: Главная страница (Басты бет, Main page), Новости, Вход, Выход, Напомнить пароль и т.д., а вот текст самого сайта уже требует профессионального переводчика.
Думайте о будущем, когда следуйте стандартам. Возможно, Вам в будущем придется подключить сайт к другой системе управления или подключить к сайту головной организации и т.д. Тогда следование стандартам Вам поможет. Не придумывайте велосипеды там, где уже есть стандарты.
Как показало небольшое исследование, ближе всех к стандартам оказались сайты Министерства сельского хозяйства и на сайтах Министерства туризма РК. Точнее видение их создателей оказалось близко к моему видению проблемы.