1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2024-12-14 14:10:09 +02:00
v8-code-style/docs/contributing/project_language.md

69 lines
4.5 KiB
Markdown
Raw Normal View History

# Язык проекта, локализация интерфейса
- На **Английском** пишем:
- Исходный код проекта, имена классов, строковые литералы и т.д.
- Документирующие комментарии для разработчиков 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 Marketplace: [ResourceBundle Editor](https://marketplace.eclipse.org/node/2628188) или аналогичный, позволяющий синхронно редактировать интерфейсы на нескольких языках, корректно учитывающий кодировку UTF-8.