RU/Правила Pology

From KDE Community Wiki
< RU
Revision as of 00:28, 20 June 2019 by Aspotashev (talk | contribs) (→‎Где находятся правила)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

В составе 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 находятся в каталоге lang/ru в репозитории исходного кода Pology. Внутри каталога lang/ru находятся следующие подкаталоги:

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

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

Полное описание правил Pology: http://pology.nedohodnik.net/doc/user/en_US/ch-lingo.html

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

[ярлык]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 [+рег.выр.] — контекстная строка («msgctxt» в файлах .po).
  • msgid [+рег.выр.] — оригинал строки (тот, который на английском).
  • msgstr [+рег.выр.] — перевод строки.
  • head
  • srcref [+рег.выр.] —
  • comment [+рег.выр.] —

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

Проверка орфографии

Для проверки орфографии есть фильтр Pology «check-spell», но он не выбрасывает незнакомые английские слова, а показывает их как ошибочные. Вместо использования «check-spell» можно переименовать правило check-spell.rules.disabled в check-spell.rules (или создать символическую ссылку) и использовать тот же фильтр «check-rules». Что делает файл check-spell.rules:

  • выбрасывает буквы, не входящие в русский алфивит, т.к. наша задача — проверить только русскую орфографию.
  • отменяет проверку для правильных слов, пишущихся через дефис, т.к. Pology, к сожалению, неправильно разбивает текст на слова при проверке орфографии.
  • отменяет проверку для правильных выражений, пишущихся через пробелы.
  • отменяет проверку для названий городов из KStars и KGeography и названий звёзд и созвездий из KStars.

На сайте l10n.kde.ru тоже используется фильтр check-rules.