Названия полей формы не должны быть «оторваны» от самих полей.
Пример правильного описания для qt:
Обратите внимание на “0” для колонки с метками – это необходимо, чтобы колонка заняла в ширину ровно столько сколько необходимо для самой длинной метки.
Пример правильного описания для html:
CSS-класс “form-table” не будет корректно работать для старых браузеров (Internet Explorer 6.0), для них необходимо во всех td, содержащих метки использовать CSS-класс “form-table-label”.
Группировка элементов формы
Группировка при помощи пустых строк
Пример для html:
Пример для qt:
Группировка при помощи горизонтальной черты
Пример для html:
Пример для qt:
В этом способе группировки возможно задание названия группы. Название группы делается полужирным шрифтом и выравнено по левому краю формы.
Пример для html:
Пример для qt:
Элементы формы
Метки полей и заголовки должны начинаться с заглавной буквы.
Если метка и поле находятся в одной строке, то метка должна заканчиваться символом двоеточия “:».
Заголовки групп, включая заголовки groupbox не должны содержать символа двоеточия “:».
сheckbox
Данный элемент предназначен для представления атрибута логического типа.
Метка к checkbox должна идти после галочки и начинаться с заглавной буквы.
Пример правильного описания для qt:
Пример правильного описания для html:
Обратите внимание на написание тега в стиле xml, а не html.
button
Данный элемент предназначен для представления активных действий с формой.
Текст кнопок должен начинаться с заглавной буквы
Если кнопка открывает дополнительное диалоговое окно, то текст кнопки должен заканчиватья многоточием “...»
Ни один диалог модуля не должен содержать кнопки «Выход»
Пример описания для qt:
Пример описания для html:
Обратите внимание на использование класса btn и на написание тега в стиле xml, а не html.
combobox/listbox/select
В самом простом случае данные элементы представляют атрибут типа перечисление (enum), то есть обеспечивают выбор одного варианта
из числа возможных. Сombobox – более компактное представление чем Listbox, но одновременно выдно только один вариант, чтобы просмотреть остальные – надо вызвать выпадающий список.
Список вариантов предоставляет бакенд (вызываемый с action list). Параметр enumref – адрес к которому надо обращаться к бакенду за списком.
Пример описания для qt:
Текущий выбранный вариант – параметр value.
Пример описания для html:
Размер списка в строках – параметр size. Обратите внимание на написание тега в стиле xml, а не html.
Пример бакенда на shell:
Функция write_enum_item принимает два параметра:
вариант – то ключевое имя, которым пользуется бакенд
название варианта (необязательно) – то описание, которое будет выведено пользователю (возможно с переводом)
Если функция вызвана без параметра, то она начинает со стандартного ввода строки с одним или более значениями, разделённых стандартным разделителем (переменная IFS). Первое и второе значение интерпретируются также: вариант и его название.
edit
Представляет атрибут строкового типа.
Пример на qt:
Для изменения и получения значения служит атрибут value.
Пример на html:
Пример бакенда на shell:
Функция write_string_param принимает два атрибута: имя и значение.
Переводы
Для переводов стоит пользоваться единой базой переводов alterator-l10n. Данный пакет содержит переводы для всех модулей альтераторов. Тем самым достигается единый стиль названий (например перевод “Apply” и “Reset”). Чтобы подключить модуль к единой базе необходимо выполнить следующие действия:
подключить стандартный набор правил /usr/share/alterator/build/po.mak
сказать make update-po и получить файл-заготовку
связаться с мантейнером пакета alterator-l10n (inger@, cas@) и переслать свой .pot файл.
Дождитесь когда ваш пакет будет включён в alterator-l10n
Добавить пакет alterator-l10n в сборочные зависимости модуля (buildprereq)
После этого при каждой сборке пакета автоматически будут создаваться и размещаться в результирующем rpm-пакете) переводы для всех поддерживаемых языков. Если в вашем модуле уже были свои варианты переводов (файлы po/<language>.po), то их надо удалить.