Языковые файлы

Языковые файлы используются как источники текстовых данных (строковых ресурсов) при формировании уведомлений, выводе текстовых сообщений или вставке текстовых фрагментов в обрабатываемые письма. Языковые файлы используются в основном компонентом Notifier, но также могут использоваться подключаемыми модулями (в частности, модуль Drweb использует текст из этого файла для вставки сообщения в письмо вместо удаленного из него вредоносного вложения). Путь к каталогу, в котором хранятся используемые языковые файлы, должен быть одним и тем же как для компонента Notifier, так и для подключаемых модулей. Путь к используемому каталогу с языковыми файлами указывается в параметре LngBaseDir в секции [Notifier] основного конфигурационного файла.

Языковые файлы имеют имя, образованное по принципу [<plug-in>_]<language>.lng, где:

<plug-in> – имя подключаемого модуля, использующего этот языковой файл в качестве источника строк (drweb, modifier и т.п.)

<language> – название языка, на котором составлены текстовые строки, хранящиеся в файле.

warning

Языковые файлы, используемые непосредственно компонентом Notifier, не имеют в своем названии приставки <plug-in>_.

Языковой файл имеет следующую внутреннюю структуру:

В первой строке указывается сокращенное название языка, на котором составлены все содержащиеся в файле тексты (en, ru и т.п.).

Во второй строке – название используемой кодировки (например, koi8-r).

В третьей строке – указание на используемую битность кодировки CTE (7bit или 8bit).

Оставшаяся часть файла состоит из строк вида N="текст", где N – номер (идентификатор) текста, а текст – используемый текст.

Также в языковом файле могут присутствовать строки-комментарии, начинающиеся с символа '#' или пустые строки. Такие строки игнорируются.

warning

В параметре NotifyLangs в секции [Notifier] используются только обозначения языка, которые берутся из первой строки языковых файлов.

Пример языкового файла:

#language name = LANG
en
#coding system = CHARSET
UTF8
#Content-Transfer-Encoding: 7bit/8bit
8bit
 
1 = "OK"
2 = "password protected, skipped"
...

Все подключаемые модули используют в своей работе только тот языковой файл, который указан первым в списке NotifyLangs. При этом для поиска необходимой строки (в случае обработки вызова макроса вставки строки $n, например, при действии add-header) всегда выполняется следующий алгоритм:

1)Определяется каталог, содержащий языковые файлы (используется значение параметра LngBaseDir);

2)Определяется первый используемый язык из списка, указанного в значении параметра NotifyLangs;

3)Ищется файл, в имени которого присутствует префикс с именем подключаемого модуля, а первая строчка соответствует сокращенному названию используемого языка;

4)Если такой файл найден, то в нем ищется строка с требуемым номером n в левой части. При этом предполагается, что содержимое этой строки закодировано с использованием кодировки и CTE, указанных в заголовке этого языкового файла.

Найденная строка будет использована при обработке письма (добавлена как текст в письмо или в заголовок, в зависимости от совершаемого модулем действия), при этом будут использованы кодировка и CTE, указанные в заголовке языкового файла, из которого была извлечена строка.

Если требуемый файл не будет найден или в нем не будет найдена строка с требуемым номером, эта ситуация будет являться ошибочной и будет обрабатываться в соответствии со значением параметра ProcessingErrors в секции [Maild] основного конфигурационного файла.

При необходимости вы можете добавить в языковые файлы свои строки. При этом нужно следить, чтобы добавленные строки:

не использовали уже занятые в этом файле номера, поскольку строки с этими номерами уже используются какими-то модулями Dr.Web MailD (или подключаемым модулем).

использовали кодировку и битность CTE, указанные в заголовке языкового файла.