# Язык проекта, локализация интерфейса - На **Английском** пишем: - Исходный код проекта, имена классов, строковые литералы и т.д. - Документирующие комментарии для разработчиков JavaDoc - Основной интерфейс пользователя (default language) - Код тестов JUnit - Документация по проверкам в корне каталога `/check.descriptions/` (основной язык) - Тестовый примеры кода 1С (желательно) - На **Русском** пишем: - Второй дополнительный интерфейс - Документация по проверкам в каталога `/check.descriptions/ru/` - Тестовый примеры кода 1С (допустимо) ## Подробнее... Исходный код должен быть написан на Английском языке. Английский язык - является языком по умолчанию. Не допускается использование транслита или иных не английских слов и терминов. В случае, если вы затрудняетесь в выборе подходящего термина на английском - обратитесь за помощью в issue по вашей функциональности к владельцам проекта - мы всегда поможем! Язык ведения проекта (issue, аудит и т.д.) - Русский, т.к. ориентация на русское сообщество программистов. Поддержка разработчиков на других языка в будущем может быть решена дополнительно. ## Локализация интерфейса Все интерфейсные тексты, которые видит пользователь, должны быть написаны на английском языке и локализированы - вынесены в отдельные ресурсные файлы `*.properties`. Кодировка файлов `*.properties` - UTF-8. Все локализируемые ресурсные файлы должны быть переведены на дополнительный русский язык. Например: - `messages.properties` - основной интерфейс, должен содержать английский интерфейс - `messages_ru.properties` - дополнительный интерфейс на русском языке В проекте используется система локализации **Eclipse NLS**: - Необходимо создавать final-класс наследник `org.eclipse.osgi.util.NLS` - В классе указывается консанта `BUNDLE_NAME` с полным квалификтором файла `messages` в котором хранятся локализованные сообщения. - Создаются публичные константы, которые являются ключами в ресурсных файлах ```java final class Messages extends NLS { private static final String BUNDLE_NAME = "com.e1c.v8codestyle.md.check.messages"; //$NON-NLS-1$ public static String CommonModuleNameClient_description; public static String CommonModuleNameClient_message; static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, Messages.class); } private Messages() { } } ``` Для большего удобства используйте помощник Eclipse Externalize Strings Wizard, который помогает переносить интерфейсные строки из кода в ресурсные файлы, с автоматическим созданием файла констант NLS. Для редактирования ресурсных файлов следует использовать плагин из Маркет-плайса Eclipse: [ResourceBundle Editor](https://marketplace.eclipse.org/node/2628188) или аналогичны, позволяющий синхронно редактировать интерфейсы на нескольких языках, корректно учитывающий кодировку UTF-8.