Недавно я начал работать над Java-проектом, основанным на платформе Eclipse RCP и PDE. Для локализации проекта я использовал довольно удобный стандартный мастер локализации. Следует заметить, что мастеров существует два: для локализации java-кода и для локализации файла plugin.xml, куда входят названия меню, диалогов и прочее. Я рассмотрю оба.
Локализация кода
— выбираем любой класс, пакет или всю папку src
— выбираем в главном меню «Исходный код» — «Экспортировать строки» или жмем Alt+Shift+S и выбираем в контекстном меню «Экспортировать строки»
— выбираем класс двойным кликом или жмем кнопку «Экспортировать»
— далее в диалоге экспорта выделяем строки, которые не требуется локализовывать (с Ctrl или Shift можно выделить несколько строк), и справа нажимаем кнопку «Игнорировать», либо можно снять галочку слева, превратив ее в крестик.
— также желательно иметь один класс доступа, в который и сохранять все локализации. Первоначально класс нужно сгенерировать, а в дальнейшем его можно использовать для последующих локализаций, вводя его в специальном диалоге или выбирая из выпадающего списка.
— после отметки не требующих локализации строк и выбора класса доступа нажимаем кнопку «Далее». Диалог экспорта покажет diff изменений. Как видно, локализуемые строки заменяются на вызовы статической переменной из класса Messages, куда подставляются значения из properties-файла, а к не требующим локализации строкам в коде добавляется комментарий вида //$NON-NLS-1$, где цифра указывает номер фрагмента, не подлежащий локализации (т.к. их может быть несколько).
— жмем «Готово» и класс локализован, переходим к следующему.
Существует вероятность, что класс не будет локализован правильно, если в одной строке встретится требующий и не требующий локализации фрагмент. Для проверки этого закройте диалог экспорта полностью и откройте заново список требующих локализации классов. Правильно локализованные классы исчезнут из списка, а в оставшихся нужно поправить индексы в комментариях $NON-NLS — они должны начинаться с 1 в порядке возрастания и соответствовать количеству не требующих локализации фрагментов. Поправить это лучше, используя редактор кода Eclipse.
После завершения локализации кода нужно скопировать файл messages.properties в messages_ru.properties и перевести все строки на русский, он будет автоматически включен в дистрибутив.
Локализация plugin.xml
— выбираем файл plugin.xml
— нажимаем правую кнопку мыши и выбираем в контекстном меню «Инструменты PDE» — «Экспортировать строки»
— в появившемся диалоге снимаем галочку у строк, не требующих локализации
— нажимаем «Далее», смотрим diff
— жмем «Готово», копируем bundle.properties в bundle_ru.properties, переводим строки.
Нужно также включить bundle_ru.properties в build.properties, чтобы локализация попала в дистрибутив.
P.S. К сожалению, я не смог локализовать стандартные диалоги-мастера Search, Import, Export. Кто знает, как это сделать, напишите мне в личную почту.
Локализация кода
— выбираем любой класс, пакет или всю папку src
— выбираем в главном меню «Исходный код» — «Экспортировать строки» или жмем Alt+Shift+S и выбираем в контекстном меню «Экспортировать строки»
— выбираем класс двойным кликом или жмем кнопку «Экспортировать»
— далее в диалоге экспорта выделяем строки, которые не требуется локализовывать (с Ctrl или Shift можно выделить несколько строк), и справа нажимаем кнопку «Игнорировать», либо можно снять галочку слева, превратив ее в крестик.
— также желательно иметь один класс доступа, в который и сохранять все локализации. Первоначально класс нужно сгенерировать, а в дальнейшем его можно использовать для последующих локализаций, вводя его в специальном диалоге или выбирая из выпадающего списка.
— после отметки не требующих локализации строк и выбора класса доступа нажимаем кнопку «Далее». Диалог экспорта покажет diff изменений. Как видно, локализуемые строки заменяются на вызовы статической переменной из класса Messages, куда подставляются значения из properties-файла, а к не требующим локализации строкам в коде добавляется комментарий вида //$NON-NLS-1$, где цифра указывает номер фрагмента, не подлежащий локализации (т.к. их может быть несколько).
— жмем «Готово» и класс локализован, переходим к следующему.
Существует вероятность, что класс не будет локализован правильно, если в одной строке встретится требующий и не требующий локализации фрагмент. Для проверки этого закройте диалог экспорта полностью и откройте заново список требующих локализации классов. Правильно локализованные классы исчезнут из списка, а в оставшихся нужно поправить индексы в комментариях $NON-NLS — они должны начинаться с 1 в порядке возрастания и соответствовать количеству не требующих локализации фрагментов. Поправить это лучше, используя редактор кода Eclipse.
После завершения локализации кода нужно скопировать файл messages.properties в messages_ru.properties и перевести все строки на русский, он будет автоматически включен в дистрибутив.
Локализация plugin.xml
— выбираем файл plugin.xml
— нажимаем правую кнопку мыши и выбираем в контекстном меню «Инструменты PDE» — «Экспортировать строки»
— в появившемся диалоге снимаем галочку у строк, не требующих локализации
— нажимаем «Далее», смотрим diff
— жмем «Готово», копируем bundle.properties в bundle_ru.properties, переводим строки.
Нужно также включить bundle_ru.properties в build.properties, чтобы локализация попала в дистрибутив.
P.S. К сожалению, я не смог локализовать стандартные диалоги-мастера Search, Import, Export. Кто знает, как это сделать, напишите мне в личную почту.