Локализация плагинов Eclipse с помощью стандартного мастера локализации

Недавно я начал работать над Java-проектом, основанным на платформе Eclipse RCP и PDE. Для локализации проекта я использовал довольно удобный стандартный мастер локализации. Следует заметить, что мастеров существует два: для локализации java-кода и для локализации файла plugin.xml, куда входят названия меню, диалогов и прочее. Я рассмотрю оба.

Локализация кода

— выбираем любой класс, пакет или всю папку src

image

— выбираем в главном меню «Исходный код» — «Экспортировать строки» или жмем Alt+Shift+S и выбираем в контекстном меню «Экспортировать строки»

image

— выбираем класс двойным кликом или жмем кнопку «Экспортировать»

image

— далее в диалоге экспорта выделяем строки, которые не требуется локализовывать (с Ctrl или Shift можно выделить несколько строк), и справа нажимаем кнопку «Игнорировать», либо можно снять галочку слева, превратив ее в крестик.

image

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

image

— после отметки не требующих локализации строк и выбора класса доступа нажимаем кнопку «Далее». Диалог экспорта покажет diff изменений. Как видно, локализуемые строки заменяются на вызовы статической переменной из класса Messages, куда подставляются значения из properties-файла, а к не требующим локализации строкам в коде добавляется комментарий вида //$NON-NLS-1$, где цифра указывает номер фрагмента, не подлежащий локализации (т.к. их может быть несколько).

image

— жмем «Готово» и класс локализован, переходим к следующему.

Существует вероятность, что класс не будет локализован правильно, если в одной строке встретится требующий и не требующий локализации фрагмент. Для проверки этого закройте диалог экспорта полностью и откройте заново список требующих локализации классов. Правильно локализованные классы исчезнут из списка, а в оставшихся нужно поправить индексы в комментариях $NON-NLS — они должны начинаться с 1 в порядке возрастания и соответствовать количеству не требующих локализации фрагментов. Поправить это лучше, используя редактор кода Eclipse.

image

После завершения локализации кода нужно скопировать файл messages.properties в messages_ru.properties и перевести все строки на русский, он будет автоматически включен в дистрибутив.

Локализация plugin.xml

— выбираем файл plugin.xml
— нажимаем правую кнопку мыши и выбираем в контекстном меню «Инструменты PDE» — «Экспортировать строки»

image

— в появившемся диалоге снимаем галочку у строк, не требующих локализации

image

— нажимаем «Далее», смотрим diff

image

— жмем «Готово», копируем bundle.properties в bundle_ru.properties, переводим строки.

Нужно также включить bundle_ru.properties в build.properties, чтобы локализация попала в дистрибутив.

P.S. К сожалению, я не смог локализовать стандартные диалоги-мастера Search, Import, Export. Кто знает, как это сделать, напишите мне в личную почту.
Share post

Similar posts

Comments 16

    0
    Здорово. Просто и удобно!
      0
      Извините, что пишу вам НЕ в личную почту, подумал, что может еще кому-то пригодиться. Все стандартные диалоги можно перевести в babel.eclipse.org/babel — позже ваш перевод войдет в стандартную поставку.
        0
        Я перевел с помощью babel свой Eclipse на русский — но на плагин это никак не повлияло, к сожалению.
          0
          То есть вы своему приложению подкладываете пакет локализации, а диалоги все равно на аглицком?
            0
            Что-то пробовал подкладывать, но не сработало. Можно поподробнее:
            — что подкладывать (например, где находится локализация мастера search в Eclipse?)
            — куда подкладывать (в исходники плагина, в дистрибутив плагина, в какую папку)
            — нужны ли какие-то опции, настройки, xml-описания для того, чтобы пакет увиделся плагином?
        0
        Что-то пробовал подкладывать, но не сработало. Можно поподробнее:
        — что подкладывать (например, где находится локализация мастера search в Eclipse?)
        — куда подкладывать (в исходники плагина, в дистрибутив плагина, в какую папку)
        — нужны ли какие-то опции, настройки, xml-описания для того, чтобы пакет увиделся плагином?
          0
          1 — врать не буду, конкретного пакета не знаю. Можно попытаться поискать в клипце класс типа SearchDialog — велика вероятность, что там будет ссылка на сообтветствующий пакет (обычно бывает). Для этого надо
          а) Использовать Eclipse for RCP and RAP developers
          б) включить в поиск все плагины
          2 — Подкладывать локализацию надо в папку plugins собранного приложения — получится что-то типа my_eclipse_app/plugins/org.eclipse.ui.workbench.nl_ru.v3.7.0...jar (Кстати, обратите внимание именно на этот джарник — очень велика вероятность, что все диалоги именно там)
          3 — тут зависит от локали машины, на которой запускаете. Попробуйте передавать -nl ru
            0
            Я делаю не просто плагин, а продукт Eclipse. Нашел babel локализацию search диалога: org.eclipse.search.nl_ru_3.7.0.v[timestamp].jar. При создании дистрибутива продукта появляются две папки — eclipse и repository, я положил jar и в eclipse/plugins, и в repository/plugins — не работает. Локаль подхватывается автоматом, т.к. все кастомные диалоги выводятся на русском. Осталось понять, как jar локализации подключить — может, нужно использовать search fragment, может, весь babel подключить.
              0
              Строго на условиях неразглашения могу прислать вам наш продукт, может что полезное увидите. Этот конкретный диалог у нас не подключен, но некоторые другие — да.

              Кстати, а как у вас сборка устроена? Maven+tycho?
                0
                tycho пока не использовали, пользуемся стандартным eclipse сборщиком.
                какие стандартные диалоги локализованы в вашем продукте?
                Если из перечисленных (search-import-export), то хотел бы взглянуть. Лучше бы, конечно, получить рецепт, а не весь код — искать-то дольше.
                  0
                  У нас локализовано все, что касается обновлений и «О программе».
                    0
                    Уфф решил проблему. Возможно, напишу пост об этом, но вкратце — нужно поставить babel и для русификации плагина добавить пакеты org.eclipse.search.nl_ru + org.eclipse.ui.workbench.nl_ru в run configuration — modules. Для русификации продукта — добавить эти пакеты в зависимости для сборки. Подкладывать руками ничего не надо.
                      0
                      Руками при правильной сборке вообще никогда никто ничего не подкладывает ).
                    0
                    К сожалению, со стандартной сборкой я очень плохо знаком — реньше у нас был свой велосипед на мавене, но тычо — велосипед намного более качественный и могучий. Переход на него тоже весьма прост, так сто рекомендую.
                    Таргет платформа у нас тоже собирается тычой, мы просто указываем, какие фичи нам нужны:

                    в .target файле:

                    <location includeAllPlatforms="false" includeMode="slicer" type="InstallableUnit">
                    <unit id="org.eclipse.babel.nls_eclipse_ru.feature.group" version="3.7.0.v20120428072045"/>
                    <unit id="org.eclipse.babel.nls_rt.equinox_ru.feature.group" version="3.7.0.v20120428072045"/>
                    <unit id="org.eclipse.babel.nls_rt.equinox.p2_ru.feature.group" version="3.7.0.v20120428072045"/>
                    <repository location="http://10.254.53.83/eclipse/technology/babel/update-site/I20120428-0400/indigo/"/>
                    </location>
                    
            0
            До сих пор не понимаю зачем делать локализацию ПО предназначенного для тех. специалистов.
              0
              Эклипс — это не только среда разработки для Java и других языков. На основе RCP можно сделать какое угодно приложение, хоть бухгалтерское.

            Only users with full accounts can post comments. Log in, please.