Skip to content

Plone.org.ru

Sections
Personal tools
You are here: Home » Статьи » Локализация продуктов
Log in
Реклама
Поддержка
Для общения можно использовать списки рассылки: и
Дружественный сайт
 

Локализация продуктов

  • Send this page to somebody
  • Print this page
В статье приводятся общие сведения о локализации продуктов Plone, приведены методы изменения существующего и добавления нового перевода к продуктам.

Одна из положительных черт Plone - существование более 30 локализаций его интерфейса. Многие добавочные продукты также локализированы. Тем не менее, в некоторых случаях необходимо изменить или добавить переводы - то ли по причине их отсутствия в продукте, то ли для придания индивидуальности сайту, а иногда необходимо и создать локализацию наиболее понравившегося продукта. Как это сделать и рассказывается в этой статье.

Общие сведения о локализации

Сразу оговорим, что речь пойдет о локализации интерфейса Plone и продуктов, а не о локализации пользовательских документов. Посмотрим, для начала, как проявляются механизмы локализации при работе Plone. Зайдите в настройки IE и измените предпочитаемый язык. Для этого проделайте следующее: зайдите в меню Сервис, подменю Свойства обозревателя, вкладка Общие (рис. 1) , нажмите кнопку Языки и посмотрите, сколько языков имеется в текстовом поле (рис. 2).

Рисунок 1. Диалог свойства обозревателя

Рисунок 2. Диалог выбор языка

Если языков несколько, то воспользуйтесь кнопками Ниже или Выше для изменения предпочитаемого языка, нажмите последовательно кнопки Ok в открытых диалогах и перезагрузите страницу Plone (на всякий случай с нажатой клавишей Shift чтобы избежать кэширования).

Если язык только один, то воспользуйтесь кнопкой Добавить, выберите из списка нужный язык, нажмите Ok (рис. 3), потом кнопкой Выше переместите язык на первое место в списке. Далее опять же закрывайте диалоги и перезагружайте страницу.

Рисунок 3. Диалог добавление языка

Вы увидите, что язык интерфейса Plone изменился.

Подобный эффект достигается благодаря особой разметке шаблонов страниц Plone в которой используется I18N - язык разметки с определенными выражениями. Например, если Вам нужно перевести такой текст в шаблоне:

<i>Some text</i>
То это нужно оформить так: <i i18n:translate="some_text_label">Some text</i> В этой строке some_text_label является ID перевода, благодаря которому механизм перевода Placeless Translation Service отыскивает однозначное соответствие и благодаря которому появляется возможность использовать перевод многократно. Наиболее распространенные выражения I18N:

I18n:translate

Переводит содержание элемента, с необязательным сообщением. Например, следующая строка создаст сообщение с ID title_string:

<h1 i18n:translate="title_string">This is a title</h1>
Пример приведен для части текста, который является статическим. Однако, в некоторых случаях часть текста могла быть загружена из базы данных или объекта. В таких случаях перевод будет динамический. Если перевод не найден, то вставляется текст из кода.

i18n:domain

Указывает домен перевода для шаблона страницы. Каждый сайт может иметь многочисленные домены для переводов. Например, может быть домен для Plone и для вашего приложения. Plone использует домен plone, который является обычно доменом по умолчанию: <body i18n:domain="plone">

Использование доменов позволяет по-разному переводить одинаковые сообщения, например, в различных скинах сайта.

i18n:attributes

Обеспечивает перевод атрибутов внутри элемента. Например, тег изображения имеет атрибут alt для альтернативного текстового отображения:
<img
    href="/someimage.jpg"
    alt="Some text"
    i18n:attributes="alt alternate_image_label" />
Многократные атрибуты должны отделяться с точкой с запятой, точно так же как tal:attributes.

i18n:name

Обеспечивает разный порядок слов в переводе в зависимости от языка.

i18n:data

Обеспечивает перевод нестроковых выражение, например, даты.

Placeless Translation Service (PTS)

Переводы в Plone обрабатываются инструментом по имени Placeless Translation Service (PTS). Вы можете найти PTS в Zope control panel. Внизу страницы вы увидите ссылку на Placeless Translation Service. Щелкните ссылку, и откроются все переводы, которые существуют.

Рисунок 4. Список файлов переводов

Эти переводы читаются из файловой системы. Щелкните перевод, чтобы увидеть информацию относительно языка, типа транслятора, кодирования, и пути к файлу. Все файлы фактически находятся в i18n каталоге каталога CMFPlone. Переводы обрабатываются c использованием двух файлов перевода с расширениями *.po и *.mo файл. Например, plone-de.po содержит переводы для немецкого (de - код для Немецкого). *.mo файл - это компилируемая версия .po файла и используется Plone для выполнения. Вы не сможете править .mo файл, так что можете его игнорировать. Вот файл *.po - то что Вы будете редактировать, чтобы изменить перевод. Если Вы откроете этот файл в текстовом редакторе, вы увидите ряд строк, начинающихся с текста msgid или msgstr. Выше msgid - показан код в который включена команда i18n, так что Вы можете видеть, какую часть страницы вы переводите. Например:

#: from plone_forms/content_status_history.pt
#.   <input attributes="tabindex tabindex/next;" value="Apply"
class="context" name="workflow_action_submit" type="submit" />
#.
#: from plone_forms/personalize_form.pt
#.   <input attributes="tabindex tabindex/next;" tabindex=""
value="Apply" class="context" type="submit" />
#.
msgid "Apply"
msgstr "Anwenden"

Эти строки позволят перевести слово Apply как Anwenden для немецких пользователей. Что именно будет переведено, определяется i18n тегами, которые вставлены в шаблоны страницы, как показано выше. Если нужно изменить этот перевод или добавить ваш собственный перевод, просто измените .po файл. Если msgstr с ID не найдена, то по умолчанию используется английский перевод. Для активизации нового перевода необходимо перегрузить Plone. Когда происходит, Plone перетранслирует файл перевода в .mo версию, и ваш перевод будет модифицирован.

Вы можете делать новый перевод, копируя plone.po файл в новый файл с именем plone-xx.po. Значение xx должно соответствовать коду страны вашего перевода. Вы можете найти список кодов языка по адресу http://www.unicode.org/onlinedat/languages.html.

Изменение существующей локализации

Поиграемся для начала с уже существующим переводом Plone. Запускаем ZMI, переходим в Сontrol_Panel и в Placeless Translation Service. Находим среди переводов строчку CMFPlone.i18n-plone-ru.po (ru language (Русский) for plone) и щелкаем на ней, чтобы посмотреть где лежит файл перевода для правки.

Рисунок 5. Подробная информация о файле перевода

Используя найденное расположение файла C:\Program Files\Plone 2\Data\Products\CMFPlone\i18n\plone-ru.po, сохраним его резервную копию. Открываем файл в редакторе (только не в Блокноте, он по какой-то причине портит файлы) и правим. Возьмем к примеру строчку

msgstr "Добавить комментарий"

и заменим ее на

msgstr "Выскажите свое мнение"

Сохраняем файл. Перезагружаем Plone, нажав кнопку Restart в Control_Panel. Обновляем или загружаем страницу Plone сайта с документом в котором разрешено добавление комментариев. Любуемся своим переводом.

Вам может понадобится изменить перевод только определенного скина. Например, изменим ссылку на главную страницу сайта, назовем ее теперь домашней.

Создадим сначала новый скин на основе скина по умолчанию Plone Default. Для этого:

  • Создадим папку my_skin в папке portal_skins на вашем сайте.
  • Воспользуемся вкладкой Properties чтобы добавить свой скин в список, отображаемый в установках Plone. Вы увидите такую форму
  • В поле Name вписываем название нашего нового скина Мой скин. Копируем из поля Layers для скина Plone Default все строчки и вставляем их в поле Layers наше го скина. Первую строчку custom заменяем на название нашей папки my_skin.
  • Нажимаем на кнопку Add.

Теперь создадим копию файла, который определяет вид строчки со ссылками Главная, Участники, Новости и т.д.

  1. Заходим в /portal_skins/plone_templates и щелкаем на строчке global_sections.
  2. В выпадающем списке рядом с кнопкой Customise выбираем название папки в которую будет скопирован для редактирования файл global_sections. В нашем случае это папка my_skin.
  3. Нажимаем на кнопку Customise и попадаем на форму редактирования файла.
  4. Изменяем домен для перевода. Заменяем строку i18n:domain="plone" на i18n:domain="my_plone"
  5. Сохраняем файл.

Далее создадим новый файл перевода.

  1. Копируем файл C:\Program Files\Plone 2\Data\Products\CMFPlone\i18n\plone-ru.po в ту же папку под именем my_plone-ru.po.
  2. Открываем этот файл в текстовом редакторе.
  3. Находим строчку, отвечающую за перевод Home в Главная. Заменяем слово Главная на Домашняя.
  4. Сохраняем файл.

После перезагрузки заходим в /Control_Panel/TranslationService и убеждаемся, что наш файл перевода зарегистрирован в системе. Выражается это в том, что в списке файлов перевода появилась строка CMFPlone.i18n-my_plone-ru.po (ru language (Русский) for my_plone). Загружаем страницу сайта, устанавливаем в личных предпочтениях Мой скин и наблюдаем изменение перевода ссылки на главную страницу сайта.

Добавление локализации продукта

Положим, что Вы нашли для использования на своем сайте хороший продукт, но в нем отсутствует локализация. Разберемся, как добавить локализацию к такому продукту. Для примера возьмем небольшой продукт под название CMFForum.

Файлы, отвечающие за отображение продукта находятся в папке ./portal_skins/zpt_forum.

Щелкнем на строчке post_view, выберем в появившейся форме папку в которую будем помещать копию этого файла для редактирования. Для нас логично выбрать папку my_skin, в этом случае перевод будет отображаться только при использовании Моего скина. Щелкаем на кнопке Gustomise.

Для работы перевода необходимо подправить код. Добавляем в строки:

    <html xmlns:tal="http://xml.zope.org/namespaces/tal"
      xmlns:metal="http://xml.zope.org/namespaces/metal"
      metal:use-macro="here/main_template/macros/master">
 

описание домена и получаем:

   <html xmlns:tal="http://xml.zope.org/namespaces/tal"
      xmlns:metal="http://xml.zope.org/namespaces/metal"
      metal:use-macro="here/main_template/macros/master"
      i18n:domain="CMFForum">
 

Анализируя код, доходим до первой строки в которую необходимо добавить перевод

<b>Next Reply:</b>

Изменяем ее на:

<b i18n:translate="next_reply">Next Reply:</b>

В дальнейшем нужно до конца проанализировать код в этом и других файлах и всюду повторить вышеописанную операцию. Само собой, что ID элемента , например, next_reply будет каждый раз разным, а описание домена одинаковым.

Создадим файл перевода.

  1. Обращаемся в файловую систему в место, где хранятся файлы CMFForum. Для Windows это будет что-то вроде c:\Program Files\Plone 2\Data\Products\CMFForum.
  2. Добавляем папку для хранения переводов i18n.
  3. Создаем в этой папке текстовый файл с расширением po и заголовком
    msgid ""
    msgstr ""
    "Project-Id-Version: CMFForum 2.0\n"
    "POT-Creation-Date: Время создания перевода\n"
    "PO-Revision-Date: Время изменения перевода\n"
    "Last-Translator: Ваше имя\n"
    "Language-Team: Язык первода \n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=utf-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "Plural-Forms: nplurals=1; plural=0\n"
    "Language-Code: ru\n"
    "Language-Name: Русский\n"
    "Preferred-Encodings: utf-8\n"
    "Domain: CMFForum\n"
    

    Обратите внимание на последнюю строчку, в ней дается название домену перевода. Это название должно совпадать с тем, которое Вы указали, редактируя файл post_view.

  4. Добавляем впрок парные строчки
    msgid ""
    msgstr ""
    

    В первую строчку помещаем ID перевода, во вторую сам перевод.

  5. Сохраняем файл перевода под именем cmfforum-ru.po. Перезагружаем Plone через ZMI и любуемся собственным переводом.

Сохранение локализации для ее распространения

Если локализация уже существовала, то достаточно передать новый файл перевода *.ро. Если локализацию Вы делали сами, то необходимо скопировать код из, например, my_skin/post_view и вставить его вместо соответствующего файла в файловой системе c:\Program Files\Plone 2\Data\Products\CMFForum\skins\zpt_forum\post_view.pt. После правки всех файлов достаточно запаковать папку CMFForum и локализованный продукт готов к передаче другим пользователям.

Created by filonen
Филоненко Игорь
Last modified 2005-02-25 05:22

Опечатка

Posted by Theo at 2005-04-06 07:46

Есть: "Щелкаем на кнопке Gustomise"

Надо: "Щелкаем на кнопке Customise"

Не освещен вопрос "поддержки" перевода. То есть если английский .po-файл изменился, как скорректировать (соединить) свой файл перевода.

В целом хорошо всё.

 

Rambler's TOP 100