DSpace 1.8 — локализация интерфейса

Локализация в общем

И так, для того. чтобы быстро и без затей перевести интерфейс xmlui и jspui на русский язык, надо сделать совсем не много. Первым делом нужно открыть файл C:\DSpace\config\dspace.cfg, установиь значение параметра «xmlui.supported.locales» и «webui.supported.locales» равным «ru, en», а параметра «default.language» равным «ru». Так же нужно установить значение параметра «default.locale» равным «ru».

Вот, собственно и всё казалось бы, но JSPUI после перезапуска службы TOMCAT будет радовать вкраплениями украинского языка, а XMLUI вовсе не переведётся.

Для того, чтобы исправить эту несправедливость, необходимо создать файлы по адресу:

 

C:\RUNTIME\TOMCAT\webapps\jspui\WEB-INF\classes\Messages_ru.properties
C:\RUNTIME\TOMCAT\webapps\xmlui\i18n\messages_ru.xml

Содержимое файлов доступно по этой ссылке (ZIP, 65KB).

 

После подмены файлов и перезапуска службы TOMCAT, интерфейсы переведутся чуть более качественно. Редактировать переводы можно самостоятельно. Пример файла сообщений для JSPUI доступен тут, а перевод для XMLUI более человекочитаем и исправлять огрехи в нём можно и без шаблонов.

 

 

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

 


Для исправления ошибок с поиском на русском, необходимо модифицировать файл C:\RUNTIME\TOMCAT\conf\server.xml.

В поле настройки доступа по HTTP необходимо добавить строку URIEncoding="UTF-8".

Особенности JSPUI

После локализации интерфейса JSPUI, от него отпадает справка. Ссылки в соответствии с новой локалью генерируются на несуществующие файлы вида

http://localhost/help/index_ru.html#login

Решение у данной проблемы простое — в директории C:\RUNTIME\TOMCAT\webapps\jspui\help создать копии файлов collection-admin.html, index.html и site-admin.html с именами collection-admin_ru.html, index__ru.html и site-admin_ru.html. Сами справки конечно не переведутся, но по ссылкам в интерфейсе хотя бы что-то будет открываться.


Для добавления русского алфавита в интерфейсе JSPUI в поле быстроо перехода необходимо модифицировать файлы C:\RUNTIME\TOMCAT\webapps\jspui\browse\full.jsp и C:\RUNTIME\TOMCAT\webapps\jspui\browse\single.jsp

В обоих файлах вслед за кодом:

<%
        for (char c = 'A'; c <= 'Z'; c++)
        {
%>
                            <a href="<%= sharedLink %>&amp;starts_with=<%= c %>"><%= c %></a>
<%
        }
%>

Вставить код:

<br />
<%
        for (char c = '\u0410'; c <= '\u042F'; c++)
        {
%>
                            <a href="<%= sharedLink %>&amp;starts_with=<%= c %>"><%= c %></a>
<%
        }
%>

После перезапуска службы TOMCAT, под английским алфавитом добавится русский.

Для украинского алфавита я предлагаю такой код:

<br />
<%
for (char c = '\u0410'; c <= '\u0413'; c++)
{
%>
<a href="<%= sharedLink %>&amp;starts_with=<%= c %>"><%= c %></a>
<%
}
%>

<a href="<%= sharedLink %>&amp;starts_with=&#1168;">&#1168;</a>

<%
for (char c = '\u0414'; c <= '\u0415'; c++)
{
%>
<a href="<%= sharedLink %>&amp;starts_with=<%= c %>"><%= c %></a>
<%
}
%>

<a href="<%= sharedLink %>&amp;starts_with=&#1028;">&#1028;</a>
<a href="<%= sharedLink %>&amp;starts_with=&#1025;">&#1025;</a>
<%
for (char c = '\u0416'; c <= '\u0418'; c++)
{
%>
<a href="<%= sharedLink %>&amp;starts_with=<%= c %>"><%= c %></a>
<%
}
%>
<a href="<%= sharedLink %>&amp;starts_with=&#1030;">&#1030;</a>
<a href="<%= sharedLink %>&amp;starts_with=&#1031;">&#1031;</a>
<%
for (char c = '\u0419'; c <= '\u042F'; c++)
{
%>
<a href="<%= sharedLink %>&amp;starts_with=<%= c %>"><%= c %></a>
<%
}
%>

Коллеги с форума предлагали использовать непосредственно буквы/символы в коде, у меня вышло лишь с dec unicode кодами.

ukr

Особенности XMLUI

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

Необходимо найти директорию [dspace-src]\dspace-xmlui\src\main\java\org\dspace\app\xmlui\aspect\ и изменить файл ConfigurableBrowse.java в директории artifactbrowser, файл SearchFacetFilter.java в директории discovery, файлы PrivateItems.java и WithdrawnItems.java в директории administrative

Правки необходимо сделать следующие:

1. ConfigurableBrowse.java
Отвечает за отображение алфавита в «Просмотр по автору», «Просмотр по теме».

Находим:

            // Create a clickable list of the alphabet

            List jumpList = jump.addList("jump-list", List.TYPE_SIMPLE, "alphabet");



            // browse params for each letter are all the query params

            // WITHOUT the second-stage browse value, and add STARTS_WITH.

            Map<String, String> letterQuery = new HashMap<String, String>(queryParamsGET);

            for (String valueKey : BrowseParams.FILTER_VALUE)

            {

                letterQuery.remove(valueKey);

            }

            letterQuery.put(BrowseParams.STARTS_WITH, "0");

            jumpList.addItemXref(super.generateURL(BROWSE_URL_BASE, letterQuery), "0-9");





            for (char c = 'A'; c <= 'Z'; c++)

            {

                letterQuery.put(BrowseParams.STARTS_WITH, Character.toString(c));

                jumpList.addItemXref(super.generateURL(BROWSE_URL_BASE, letterQuery), Character

                        .toString(c));

            }

[cc]

И ниже добавляем

[cc lang="java"]

       List jumpList2 = jump.addList("jump-list2", List.TYPE_SIMPLE, "alphabet");

        jumpList2.addItemXref(super.generateURL(BROWSE_URL_BASE, letterQuery), "0-9");



            for (char vv = 'А'; vv <= 'Я'; vv++)

            {

              letterQuery.put(BrowseParams.STARTS_WITH, Character.toString(vv));

              jumpList2.addItemXref(super.generateURL(BROWSE_URL_BASE, letterQuery), Character

                    .toString(vv));

            }

2. Файл SearchFacetFilter.java
Отвечает за отображение алфавита в поиске.

Находим:

org.dspace.app.xmlui.wing.element.List jumpList = jump.addList("jump-list", org.dspace.app.xmlui.wing.element.List.TYPE_SIMPLE, "alphabet");

И ниже добавляем:

org.dspace.app.xmlui.wing.element.List jumpList2 = jump.addList("jump-list2", org.dspace.app.xmlui.wing.element.List.TYPE_SIMPLE, "alphabet");

В этом же файле находим:

             //TODO: put this back !

//            jumpList.addItemXref(generateURL("browse", letterQuery), "0-9");

            for (char c = 'A'; c <= 'Z'; c++)

            {

                String linkUrl = basicUrl + "&" +  SearchFilterParam.STARTS_WITH +  "=" + Character.toString(c).toLowerCase();

                jumpList.addItemXref(linkUrl, Character

                        .toString(c));

            }

Ниже добавляем:

            for (char vv = 'А'; vv <= 'Я'; vv++)

            {

                String linkUrl = basicUrl + "&" +  SearchFilterParam.STARTS_WITH +  "=" + Character.toString(vv).toLowerCase();

                jumpList2.addItemXref(linkUrl, Character

                        .toString(vv));

            }

3. Файл PrivateItems.java
Отвечает за отображение алфавита в «Просмотр по названию» в личных записях.

Находим:

             // Create a clickable list of the alphabet

            List jumpList = jump.addList("jump-list", List.TYPE_SIMPLE, "alphabet");





            for (char c = 'A'; c <= 'Z'; c++)

            {

                Map<String, String> cQuery = new HashMap<String, String>(queryParams);

                cQuery.put(BrowseParams.STARTS_WITH, Character.toString(c));

                jumpList.addItemXref(super.generateURL(PRIVATE_URL_BASE, cQuery), Character

                        .toString(c));

            }

Ниже добавляем:

    List jumpList2 = jump.addList("jump-list2", List.TYPE_SIMPLE, "alphabet");

        for (char vv = 'А'; vv <= 'Я'; vv++)

        {

            Map<String, String> cQuery = new HashMap<String, String>(queryParams);

            cQuery.put(BrowseParams.STARTS_WITH, Character.toString(vv));

            jumpList2.addItemXref(super.generateURL(PRIVATE_URL_BASE, cQuery), Character

                        .toString(vv));

        }

4. Файл WithdrawnItems.java
Отвечает за отображение алфавита в «Просмотр по названию» в Отозванных записях/

Находим:

          // Create a clickable list of the alphabet

            List jumpList = jump.addList("jump-list", List.TYPE_SIMPLE, "alphabet");

            for (char c = 'A'; c <= 'Z'; c++)

            {

                Map<String, String> cQuery = new HashMap<String, String>(queryParams);

                cQuery.put(BrowseParams.STARTS_WITH, Character.toString(c));

                jumpList.addItemXref(super.generateURL(WITHDRAWN_URL_BASE, cQuery), Character

                        .toString(c));

            }

Ниже добавляем:

       List jumpList2 = jump.addList("jump-list2", List.TYPE_SIMPLE, "alphabet");

            for (char vv = 'А'; vv <= 'Я'; vv++)

            {

                Map<String, String> cQuery = new HashMap<String, String>(queryParams);

                cQuery.put(BrowseParams.STARTS_WITH, Character.toString(vv));

                jumpList2.addItemXref(super.generateURL(WITHDRAWN_URL_BASE, cQuery), Character

                        .toString(vv));

            }

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

  • остановить Apache Tomcat (или иной, используемый контейнер сервлетов) соответствующей командой, например, service tomcat6 stop или service tomcat7 stop для шестой и седьмой версии Tomcat соответственно.
  • перейти в директорию с исходными кодами DSpace: сd [dspace-src-release]
  • дать команду mvn -U clean package
  • перейти в директорию [dspace-src-release]/dspace/target/dspace-[version]-build
  • дать команду ant update
  • обновить сервлет XMLUI в директории webapps контейнера сервлетов.
  • запустить Apache Tomcat (или иной, используемый контейнер сервлетов) соответствующей командой, например, service tomcat6 start или service tomcat7 start для шестой и седьмой версии Tomcat соответственно.

    Для всех действий желательно наличие прав суперпользователя/администратора независимо от ОС.

Запись опубликована в рубрике Библиотека с метками , . Добавьте в закладки постоянную ссылку.

17 комментариев: DSpace 1.8 — локализация интерфейса

  1. Anonymous говорит:

    В 1.8.2 локализация заработала только после изменения default.locale на ru в файле конфигурации dspace.

  2. Павел говорит:

    Могу дать ман как сделать русик на xmlui (сделан по хауту dspace) если IdeaFix разместит у себя, а то я что-то ничего такого толкового не нашел в пабликах

    • IdeaFix говорит:

      А чего там давать то? 🙂 Бери файл messages_ru.xml, да переводи. К тому же, есть и более или менее сносный официальный перевод и дюжина альтернативных.

      • Павел говорит:

        Я не правильно выразился, мало сплю последнее время. Речь о том,что в xmlui одного перевода мало, нужна сортировка, т.е. алфавит

        • IdeaFix говорит:

          На ирбисовском гпнтбшном форуме был вроде кусок кода, но если у Вас под руками — давайте, опубликую. Мы в подшефных архивах не спешим переходить на 3 версию и на xmlui, поэтому он у меня освещен минимально.

        • IdeaFix говорит:

          Предлагаю обсудить (да и окончательный вариант оформить) http://irbis.gpntb.ru/read.php?53,59259,page=10 тут, а я уже потом у себя на сайте копию сделаю. Проходимость у гпнтб-шного форума куда больше, а учитывая узость круга потенциальных читателей, это важно.

  3. Павел говорит:

    Спб. за приглашение. Я это все это видел, читал, но не регистрировался, а на тебя вышел видимо с оверов :).

    Перекинул туда инфу http://irbis.gpntb.ru/read.php?53,59259,page=10

  4. Владимир говорит:

    Доброго времени суток. Столкнулся с небольшой проблемой. Локализация работает частично, то есть все работает на всех нужных языках, кроме общей статистики ,только английский язык отображается. Проводились различные манипуляции: от копирования файлов пропертис в различные точки до замены английского текста в дстат.мап на русский — результат один, все работает на всех языках, кроме общей статистики. Это как то лечится? Версия диспейса 1.7 насколько я понял, с уверенностью сказать не могу, ибо недавно занял должность администратора и разбирался уже с готовым, установленным всем обеспечением.
    Заранее благодарю за ответ.

    • IdeaFix говорит:

      JSPUI или XMLUI? Для JSPUI у меня есть перевод статистики, но что Вы понимаете под общей? Это http://elar.rsvpu.ru/handle/123456789/2/statistics или репорты в админке? Посмледние не переводил. ибо мы их юзерам не отдаём. Больно уж они для юзеров не прозрачны.

      Видимо, имелось в виду это http://dspace.nlu.edu.ua/statistics

      Его можно перевести, но мы не переводили, в виду, как я уже говорил, не прозрачности.

      • Владимир говорит:

        Интерфейс JSPUI, да именно такую статистику и имел ввиду, благодарю. И, пользуясь случаем, хотел бы у вас спросить совета не по теме даного топика, а по теме статистики диспейса, если можно, разумеется, ибо на форум ирбиса не хотят пускать, а ответа не нашел.
        Если вам не трудно, отпишитесь, пожалуйста, на мой имейл v0van@i.ua.
        Благодарю за ответ насчет локализации и заранее благодарю за совет по статистике, если дадите.

      • tarantul говорит:

        Добрый день, вот здесь у вас http://dspace.nlu.edu.ua/statistics например первая таблица переведена на русский, как это можно сделать? Если просто перевести содержимое файла dstat.map на русский, то получается абракадабра. Как вы это сделали?

        • IdeaFix говорит:

          Это делается на уровне messages_ru.properties кажется. Русский или украинский туда вставлять бесполезно, там только jsp escape codes. Для конвертации я использую этот инструмент — http://r12a.github.io/apps/conversion/

          jsp.display-item.display-statistics = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
          jsp.collection-home.display-statistics = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
          jsp.community-home.display-statistics = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430

          jsp.statistics.title = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
          jsp.statistics.heading.visits = \u041F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u0432\u0441\u0435\u0433\u043E
          jsp.statistics.heading.views = \u041F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F
          jsp.statistics.heading.filedownloads = \u0417\u0430\u0433\u0440\u0443\u0437\u043E\u043A
          jsp.statistics.heading.monthlyvisits = \u041F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u043F\u043E \u043C\u0435\u0441\u044F\u0446\u0430\u043C
          jsp.statistics.heading.countryvisits = \u041F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u043F\u043E \u0441\u0442\u0440\u0430\u043D\u0430\u043C
          jsp.statistics.heading.cityvisits = \u041F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u043F\u043E \u0433\u043E\u0440\u043E\u0434\u0430\u043C

          Как-то так. Это в messages_ru.properties у меня лежит, добавлял сам.

  5. Евгений говорит:

    Дорогой IdeaFix локализация прошла частями:
    1. по отображению алфавита на русском не где непоявилось.
    2. Я при локализации не нашел Файл PrivateItems.java в версии 1.8.2
    может я что то не правильно делал в этих пунктах:
    перейти в директорию с исходными кодами DSpace: сd [dspace-src-release]
    дать команду mvn -U clean package
    перейти в директорию [dspace-src-release]/dspace/target/dspace-[version]-build
    дать команду ant update
    обновить сервлет XMLUI в директории webapps контейнера сервлетов.
    Я не совсем понимаю как перейти в директорию DSpace: сd [dspace-src-release] командная строка выкидывает сообщение об ошибке, я переходил просто в директорию по этому пути и давал команду. алфавит так и не появился.
    и разъясните пункт — обновить сервлет XMLUI в директории webapps контейнера сервлетов.
    и еще вопрос надо ли подключение к интернет при обновлении сервлетов.
    Заранее благодарю)))

    • IdeaFix говорит:

      1. В JSPUI код точно работает, в XMLUI мопед не мой, и ссылку на автора я кажется давал. Сами XMLUI не используем, поэтому что-то добавить мне трудно.
      2. В начале Вы описываете процедуру DSpace целиком, это правильно, но после ant update необходимо скопировать папочки из /dspace/webapps в /tomcat/webapps.

      И это, 1.8.2 старый и дырявый… бросайте Вы его…. текущий релиз — 5.4. И действительно, давайте продолжим тут http://irbis.gpntb.ru/read.php?53,59259,page=32 тут удобнее.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *