Skip to content

Plone.org.ru

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

Локализация пользовательских документов

  • Send this page to somebody
  • Print this page
В статье описан способ настройки локализации пользовательских документов

Локализация пользовательских документов

Систему локализации в Plone можно разделить на две части локализация интерфейса сайта и локализация пользовательских документов. Локализация интерфейса происходит во многом автоматически, для локализации пользовательских документов необходимо устанавливать дополнительные продукты. Даже после установки дополнительных продуктов остаются проблемы с переводом названий папок в портлете навигации, в режимах Просмотр или Содержимое. Далее Вы прочитаете о том, как добиться полной локализации сайта.

Для достижения нужного результата Вам понадобится два продукта PloneLanguageTool и I18NLayer. Необходимо будет также немного подправить код нескольких шаблонов и добавить переводы в файл локализации (plone-ru.po для русского языка)

Установка и настройка PloneLanguageTool

PloneLanguageTool позволяет легко переключать языки интерфейса сайта. От пользователя не требуется знание процедуры настройки языка по умолчанию браузера.

Находим архив с PloneLanguageTool на http://sourceforge.net и скачиваем его.

Распаковываем архив в папку Products в файловой системе.

Перезагружаем Zope.

Заходим в Установки Plone / Добавить/удалить продукты и устанавливаем PloneLanguageTool.

Заходим в ZMI в папку portal_languages, выбираем язык по умолчанию и языки, используемые на сайте.

В результате установки и настройки появляется несколько кнопок с помощью которых можно переключать язык интерфейса.

Установка и работа с I18NLayer

I18NLayer - позволяет создать контейнер для документов, новостей, событий и т.д. кроме папок. В этом контейнере и будут храниться версии документа на разных языках. Для переключения между языками предлагается использовать портлет с выпадающим списком.

Находим архив с I18NLayer на http://sourceforge.net и скачиваем его.

Распаковываем архив в папку Products в файловой системе.

Перезагружаем Zope.

Заходим в Установки Plone / Добавить/удалить продукты и устанавливаем I18NLayer.

В результате установки появляется портлет с выпадающим списком для выбора языка документа (рисунок 1)

и выпадающий список для добавления версий документа на различных языках (рисунок 2)

При необходимости иметь документ на нескольких языках необходимо добавить новый элемент i18nlayer. В появившейся форме необходимо указать для какого типа контента будет использоваться создаваемый контейнер (рисунок 3).

На следующей форме необходимо указать язык документа (рисунок 4).

Далее появляется обычная форма для редактирования документа, в которой заранее добавлен идентификатор. Менять идентификатор не следует.

После создания первого документа можно воспользоваться выпадающим списком (рисунок 2) и создать документы на других языках.

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

Локализация названий папок

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

В папке portal_skins/plone_templates находим global_pathbar, нажимаем кнопку Customize и заменяем код

        <a href="#"
               tal:omit-tag="python:not crumb[1]"
               tal:condition="python:not is_last"
               tal:attributes="href python:crumb[1]"
               tal:content="python:crumb[0]"
                           

на код

        <a href="#"
               tal:omit-tag="python:not crumb[1]"
               tal:condition="python:not is_last"
               tal:attributes="href python:crumb[1]"
               tal:content="python:crumb[0]"
               i18n:translate=""

т.е. по сути добавляется только строка i18n:translate=""

В папке portal_skins/plone_templates находим folder_listing, нажимаем кнопку Customize и заменяем код

        <h1 tal:content="here/title_or_id" class="documentFirstHeading">
        

На

        <h1 tal:content="here/title_or_id" class="documentFirstHeading" i18n:translate="">
        

Код

        <a href="#" tal:condition="python: obj.portal_type not in ['Link', 'Image']"
                            tal:attributes="href url"
                            tal:content="obj/title_or_id"/>
                                                        

На

        <a href="#" tal:condition="python: obj.portal_type not in ['Link', 'Image']"
                            tal:attributes="href url"
                            tal:content="obj/title_or_id" 
                            i18n:translate=""/>
                                                        

Код

                                <a href="#" tal:condition="python: obj.portal_type == 'Image'"
                            tal:attributes="href python: url + '/view'"
                            tal:content="obj/title_or_id"/>
                                                        

На

                                <a href="#" tal:condition="python: obj.portal_type == 'Image'"
                            tal:attributes="href python: url + '/view'"
                            tal:content="obj/title_or_id" 
                            i18n:translate=""/>
                                                        

Код

                                <a href="#" 
                   tal:condition="python: obj.portal_type == 'Link'"
                   tal:attributes="href obj/getRemoteUrl;"
                   class="link-plain"
                   tal:content="obj/title_or_id"/>
                                   

На

                                <a href="#" 
                   tal:condition="python: obj.portal_type == 'Link'"
                   tal:attributes="href obj/getRemoteUrl;"
                   class="link-plain"
                   tal:content="obj/title_or_id" 
                   i18n:translate=""/>
                                   

В папке portal_skins/plone_templates находим folder_contents, нажимаем кнопку Customize и заменяем код

<span tal:content="here/title_or_id" tal:omit-tag="">

На

<span tal:content="here/title_or_id" tal:omit-tag="" i18n:translate="">

Код

        <option value="Document"
                        tal:define="Id ctype/getId"
                        tal:attributes="value ctype/getId"
                        tal:content="ctype/Title">
                                                

На

        <option value="Document"
                        tal:define="Id ctype/getId"
                        tal:attributes="value ctype/getId"
                        tal:content="ctype/Title"
                        i18n:translate="">

Код

<span tal:replace="item/title_or_id">Title</span>

На

<span tal:content="item/title_or_id"
              i18n:translate="">Title</span>
                          

Заходим в portal_skins/plone_portlets находим portlet_navigation, нажимаем кнопку Customize и заменяем в Plone 2.05 код

<span class="navItemText"
tal:content="sibling_title">
Nav Item Text
</span>

На

<span class="navItemText"
tal:content="sibling_title"
i18n:translate="">
Nav Item Text
</span>

В Plone 2.04 заменяем код

        <span class="currentNavItem" tal:condition=" iscurrent" 
                                     tal:content="sibling_title"/>
                                                                         

на

        <span class="currentNavItem" tal:condition=" iscurrent" 
                                     tal:content="sibling_title"
                                     i18n:translate="" />
                                                                         

Первый результат этих правок - перевод в панели навигации папки Members. Для перевода других папок осталось только добавить переводы в файл локализации. Пусть у Вас есть папка под названием "folder1" и нужно добиться перевода названия папки как "Первая папка". Открываем файл Plone2\Data\Products\CMFPlone\i18n\plone-ru.po и добавляем строчки

msgid "folder1"
msgstr "Первая папка"

Аналогично добавляем переводы других папок.

Перезагружаем Zope и любуемся плодами рук своих.

Created by filonen
Филоненко Игорь
Last modified 2005-03-14 11:00

Относительно локализации названий папок

Posted by khabat at 2005-03-18 12:16

Как написал Игорь для локализации названий папок он предлагает обходной путь. Но я бы применил продук I18NFolder, который работает с папками, как I18NLayer с остальными объектами. Установка и использование I18NFolder повторяет уже описаное Игорем для I18NLayer.

I18NFolder

Posted by filonen at 2005-03-22 06:38

I18NFolder все же работает лучше, не нужно файл перевода править и перезапускать Zope. Я о нем узнал через день после публикации статьи.

Связка i18Layer+i18Folder+маленькая коррекция...

Posted by Vladimir777 at 2005-07-04 03:08

Связка i18Layer + i18Folder + маленькая коррекция в двух местах (http://homepage.mac.com/klacobie/iblog/C767897466/E2079686866/) для правильного отображения новостног портлета. - работает куда стабильнее чем Lingva.

...Плюс к этому, я ещё и в ZMI-PortalActions поменял выбор шрифта на выбор языка - очень удобно получилось (всегда доступен переключатель).

 

Rambler's TOP 100