Правила Pology

Материал из l10n.lrn.ru
Перейти к: навигация, поиск

В составе Pology есть фильтр «check-rules», который ищет строки переводов, не соответствующие определённым для данного языка правилам.

Пример

Пример использования команды этого фильтра:

./posieve.py check-rules --skip-obsolete -slang:ru -slokalize ../../ru/messages/kdeedu/

Описание всех использованных параметров:

  • ./posieve.py check-rules — запуск фильтра check-rules.
  • --skip-obsolete — игнорирование устаревших строк.
  • -slang:ru — устанавливает язык, правила для которого будут использоваться. Этот параметр можно опустить, если в заголовках файлов .po правильно указано поле «Language: » (для русского языка — «Language: ru»). Как установить это поле для всех файлов, написано здесь.
  • -slokalize — если запущен Lokalize, в нём будут открываться файлы с ошибками.
  • ../../ru/messages/kdeedu/ — путь к каталогу с файлами переводов. Pology ищет файлы .po во всех подкаталогах.

Где находятся правила

Специфичные для русского языка компоненты Pology находятся в каталоге trunk/l10n-support/pology/lang/ru в SVN KDE (то есть в каталоге lang/ru относительно каталога pology). Внутри каталога lang/ru находятся следующие подкаталоги:

  • rules — каталог с файлами *.rules, в которых описаны правила.
  • sieve — специфичные для русского языка фильтры Pology (на данный момент только автоматический перевод дат обновления руководств пользователя).
  • spell — каталог со словарями *.aspell. В них находятся списки слов, допустимых для использования в переводах KDE (в дополнение к обычному словарю русского языка Aspell).

Формат правил Pology (*.rules)

Правила в большинстве случаев состоят из трех частей, как и в этом примере:

[ярлык]i
valid msgstr="^ярлык Windows$"
hint="не используем слово 'ярлык'"
  • [ярлык]i — главный шаблон по которому ищутся строки переводов. Этот шаблон сопоставляется только с переводом, но не с исходной строкой на английском. Вместо «ярлык» можно писать любое регулярное выражение. Буква «i» на конце означает, что поиск по шаблону осуществляется без учёта регистра букв, т.е. слово «ЯрЛыК» тоже будет найдено. Если нужно, можно убрать букву «i».
  • valid msgstr="^ярлык Windows$" — условия, при которых строка не является ошибочной. Эти строки описания правила начинаются со слова «valid». После слова «valid» указывается тот текст, с которым сопоставляется указанное регулярное выражение ("^ярлык Windows$"). «valid msgstr» означает, что из числа ошибочных будут исключены строки, _перевод_ которых (т.е. поле msgstr в файле .po) точно совпадает со строкой "ярлык Windows".
  • hint — сообщение, которое видит пользователь, запускающий фильтр check-rules, при обнаружении строки, нарушающей правило.

Варианты строки «valid ...» (указаны только описатели поля):

  • env
  • cat
  • catrx [+рег.выр.] —
  • span [+рег.выр.] — найденный по главному шаблону текст.
  • after [+рег.выр.] — текст, идущий после найденного по главному шаблону текста.
  • before [+рег.выр.] — текст, идущий до найденного по главному шаблону текста.
  • ctx [+рег.выр.] —
  • msgid [+рег.выр.] — оригинал строки (тот, который на английском).
  • msgstr [+рег.выр.] — перевод строки.
  • head
  • srcref [+рег.выр.] —
  • comment [+рег.выр.] —

Если перед описателем поля поставить восклицательный знак, то условие будет обращено. Например, valid !ctx="@title:window" означает, что признаны правильными будут те строки, которые не содержат «@title:window» в контекстной строке.