CMS mojoPortal: локализация
описание системы управления контентом mojoPortal
Полноценная локализация
Как утверждает разработчик, mojoPortal дает большие возможности для локализации. Веб-сайт, работающий под этой CMS, может быть адаптирован под какой угодно язык и особенности любой культуры. Также mojoPortal частично поддерживает использование нескольких языков на одном веб-сайте.
По убеждению самого Джо Одетта, для полноценной поддержки проектом разных языков необходимо создавать под каждый язык свой сайт — со своими авторами для наполнения контентом и отдельными администраторами для управления всем этим. При желании разместить у себя ссылку на сайт со специфическим языком можно это просто настроить в секции, отвечающей за графический интерфейс (layout.Master file), используемый на сайте. К примеру, можно разместить свой основной сайт на www.somedomain.com, а при необходимости заиметь еще и его французскую версию можно использовать www.fr.somedomain.com.
Конфигурация языка/культуры в mojoPortal
Первичная конфигурация культуры установлена в файле Web.config в корневом каталоге сайта. Элемент globablization является стандартной настройкой ASP.NET. Больше информации по данному вопросу можно найти здесь. В приведенном выше примере, который взят из стандартного для mojoPortal файла Web.config, "auto:en-US" означает попытку использовать параметр Resources для определения языка, выбранного пользователем в браузере. Однако, если не может быть найдено корректное значение Resources, тогда идет возврат к настройкам языка/культуры, выбранным по умолчанию. В данном случае это en-US ("американизированный" английский язык). Существует возможность определить любую культуру как значение по умолчанию. При необходимости использования определенной культуры и нежелании применения Resource Fallback можно просто удалить "auto:" из настроек и использовать en-US или какой-нибудь другой язык или культуру.
<globalization
culture="auto:en-US"
uiCulture="auto:en"
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="iso-8859-15" />
Стоит особо обратить внимание, что под термином Resources, использованном разработчиком выше, подразумевается прежде всего текст, который используется в mojoPortal в стандартном статическом тексте и кнопках. Ресурсы для mojoPortal сохраняются в папке App_GlobalResouces. Для большей информации о создании или редактировании файла Resource стоит посмотреть страницу Translating mojoPortal. С mojoPortal ситуация обстоит следующим образом: поскольку основной разработчик (Джо Одетт) проживает в США и говорит по-английски, а сам проект находится в стадии активного развития, то самыми проработанными являются файлы Resource для английского языка. При использовании вместо en-US других настроек по умолчанию надо убедиться, что в ресурсном файле не отсутствуют какие-либо значения клавиш по сравнению с английским ресурсным файлом. Если вы доработаете его дополнительными клавишами в собственных целях, разработчик просит выслать ему копию этого обновления на его адрес электронной почты. Более детально о культуре типа en-US можно прочитать на этой странице.
Поддерживаемые языкиojoPortal поддерживает десять языков
На 6 января 2007 года mojoPortal частично или полностью поддерживал перевод для следующих языков:
- английский;
- голландский;
- испанский — Мексика;
- итальянский;
- немецкий;
- персидский/фарси;
- португальский — Бразилия;
- русский;
- турецкий;
- чешский.
Присланные разработчику другие версии перевода будут включены в последующие релизы.
Resource Fallback в ASP.NET 2.0
Чтобы понять, как работает Resource Fallback, необходимо установить языковые настройки браузера на один из вышеупомянутых языков, но не английский, сохранить настройки и обновить веб-страницу. Например, если установить предпочтения на персидский язык, то ссылки наверху страницы и кнопка поиска будут выглядеть следующим образом.
Разумеется, содержимое в этой контент-системе идет из базы данных, и оно по-прежнему остается на том языке, на котором было написано. Именно поэтому разработчик и говорил о полноценной поддержке языков — в виде параллельно созданных веб-сайтов с собственными контент-авторами и системными администраторами, занимающимися только своим языком.
В ASP.NET основная функция CultureInfo в обработке информации заключается прежде всего в том, как именно выбраны ресурсы и как обработаны вещи, подобные валюте и датам. Таким образом, в глобальных настройках свойства CultureInfo отображаются в соответствии с настройками браузера. Поэтому кнопки на сайте разработчика для нас отображаются на русском языке, хотя все остальное содержимое идет на английском. Это происходит независимо от того, есть ли ресурсные файлы для языка, выставленного в настройках предпочтений. Например, если в языковых настройках браузера выставить в предпочтениях основным языком Chinese — Singapore (притом что mojoPortal его не поддерживает), календарь в блоге приспосабливается к использованию встроенных ресурсов ASP.NET, как это отображено на рисунке.
Многим пользователям знаком грегорианский календарь. Однако в мире существует множество различных народов, в силу своих исторических традиций использующих другие виды календарей, о которых нам не всегда известно. ASP.NET старается делать подобные вопросы для разработчиков прозрачными, благодаря чему им не надо много думать о поддержке различных календарных систем. К сожалению, не все календари в ASP.NET сделаны полностью и корректно. К примеру, персидский календарь был плохо проработан в ASP.NET версии 2.0, а в ASP.NET версии 1.х он и вовсе отсутствовал.
Размещение справа налево
В настоящее время CMS mojoPortal имеет в наличии всего один графический интерфейс, называющийся RightToLeft1, который иллюстрирует размещение справа налево для языков, подобных персидскому. Вопросы и предложения по улучшению поддержки локализаций в mojoPortal принимаются на форуме Localization Issues.
Особенности локализации при установке нескольких сайтов
Необходимо прописать в файле Web.config:
<add key="UseCultureOverride" value="false" />
Можно изменить это значение на true, для чего необходимо добавить настройку для каждого из своих сайтов:
<add key="site1culture" value="en-US" />
<add key="site2culture" value="nl-NL" />
Это устанавливает необходимые настройки, используемые для обозначения строки с правильной культурой и названия параметров в соответствии с идентификатором сайта.
Перевод mojoPortal
App_GlobalResources содержит ресурсные файлы, которые заполняют статический текст и кнопки в mojoPortal. Необходимо скопировать файлы Resource.resx и ProfileResource.resx в другую папку, а затем переименовать их для нового языка, используя отсюда одно из названий для культуры. Например, для перевода на французский язык надо назвать эти файлы Resource.fr.resx и ProfileResource.fr.resx. При желании использовать определенный диалект французского языка, используемый в Бельгии, а также другие аспекты бельгийской культуры надо переименовать эти файлы в Resource.fr-BE.resx и ProfileResource.fr-BE.resx.
После переименования этих файлов их необходимо скопировать обратно в папку App_GlobalResources, где отредактировать под перевод нужного языка. Веб-разработчикам, которые имеют Visual Studio 2005, редактировать проще, но также эти файлы можно править и в текстовом редакторе. Есть еще файлы, которые было бы неплохо перевести. Они расположены в папках siteroot/Data/MessageTemplates и siteroot/Data/HelpFiles. Их для полноты картины также стоит перевести и переименовать в соответствии с названием используемой культуры. Джо Одетт всегда приветствует новые переводы и дополнения.
Локализация часового пояса
CMS mojoPortal сохраняет все даты и время в базе данных как UTC (универсальное скоординированное время). Также система обеспечивает настройку часового пояса пользователя в соответствии с данными из его профайла. Таким образом, корректируется смещение в часовых поясах при отображении времени. Для тех пользователей, у кого эти данные определить не удалось, время отображается при использовании параметра PreferredGreenwichMeantimeOffset, берущегося из файла Web.config.
Если на сервере время выставлено точно, то подобные «хитрости» работают достаточно хорошо. В Administration Menu > System Information screen можно увидеть, какое сейчас время, по мнению сервера, а также в каком часовом поясе он находится в соответствии с настройками PreferredGreenwichMeantimeOffset.
Однако такие «хитрости» имеют и свое слабое место. Это выражается в том, что такой механизм некорректно отображает время для пользователей, чье местоположение находится в другом часовом поясе или имеющих различное смещение в течение года. Так что в настоящее время решение данного вопроса в основном в силах самого пользователя. Он должен достоверно указывать правильные данные в своем профайле, чтобы отображаемое на сайте время было для него адекватным.
Для временных меток, сгенерированных автоматически системой, используется параметр DateTime.UtcNow. Для вещей, которые используют устройство выбора даты (datepicker), чтобы установить дату и время (отметить какое-либо событие), корректируется смещение часового пояса, чтобы вычислить UTC для выбранного значения времени (datetime). Если же база данных находится на другом сервере, а веб-сервер и значение времени не синхронизированы, то может пропасть согласованность в отображении вещей на веб-сервере, а затем и контент может начать неправильно фильтроваться. Поэтому веб-разработчикам приходится учитывать даже такие с виду мелочи, чтобы затем они не переросли в итоге в большую проблему.
Ссылки по теме
Источник: hostinfo.ru