Мультиязычность инфоресурсов
Установка языка инфоресурса
Каждый инфоресурс платформы имеет свойство "язык", значением которого является код языка, к которому относятся метки вершин этого инфоресурса (имена нетерминалов и терминалов-сортов, а также значения терминалов-значений). Коды языков берутся из стандарта ISO 639-3. Значение данного свойства у системных (платформенных) информационных ресурсов (находящихся в разделе Платформа IACPaaS) установлено в "RUS". У пользовательских инфоресурсов оно устанавливается при их создании и соответствует выбранному языку отображения сайта платформы. (В настоящее время изменить язык инфоресурса после его создания невозможно!) Данное свойство (наряду с выбранным языком отображения сайта платформы) является основой для задействования и работы механизмов перевода в системных редакторах или просмотрщиках инфоресурсов.
Базовые редакторы и просмотрщики
Перевод содержимого инфоресурсов (баз знаний, онтологий) при работе в базовом редакторе и просмотрщике (а также в редакторах/просмотрщиках, построенных по технологии расширяемого редактора) можно задействовать в одном из 2 режимов: "для текущего отображения" и "с сохранением перевода".
Для входа в первый режим необходимо, чтобы язык инфоресурса отличался от текущего языка отображения сайта. В этом случае в меню языки базового редактора (или просмотрщика) инфоресурса становится доступной ссылка для включения перевода (в случае совпадения языка инфоресурса и сайта платформы эта ссылка отсутствует). При нажатии данной ссылки начинает выполняться собственно перевод меток вершин на язык сайта с сохранением перевода в память запущенного редактора (просмотрщика). Выполнение перевода занимает некоторое время, из-за чего время отклика редактора (просмотрщика) увеличивается по сравнению с режимом работы без перевода. Сохранение переводов меток позволяет не выполнять перевод при каждом отображении метки вершины, а перевести её лишь в первый раз, после чего использовать сохранённый перевод - это делает отображение переведённых ранее меток быстрее. В таком режиме для каждого пользователя, редактирующего или просматривающего данный инфоресурс, сохраняется своё отдельное множество выполненных переводов. При остановке сервиса просмотра (редактирования) все сохранённые переводы меток теряются (при следующем запуске редактора с переводом меток данного инфоресурса вновь будет выполняться перевод и увеличиваться время отклика).
Для того чтобы все пользователи инфоресурса имели общую базу переведённых меток и такую базу можно было корректировать - необходимо использовать режим "с сохранением перевода". В этом случае перевод меток вершин инфоресурса сохраняется (и в момент его работы с включенным переводом и между запусками редактора/просмотрщика) в специальном инфоресурсе. Для задействования данного режима необходимо:
- создать отдельный инфоресурс, который будет хранить переводы меток. Для этого нужно воспользоваться функционалом личного фонда и создать инфоресурс типа информация, с указанием инфоресурса Language resources structure (предварительно необходимо получить его в доступ из Фонда платформы, раздел Платформа IACPaaS, папка Ядро платформы) в качестве метаинформации;
- открыть на редактирование инфоресурс, меткам вершин которого требуются переводы, и в меню языки (название приведено на русском языке, на английском это будет languages и т.д.) прикрепить к нему созданный инфоресурс для переводов.
После этого при включении перевода (это так же как и для первого режима становится возможным в случае, если язык обрабатываемого инфоресурса и сайта платформы различаются) и навигации по данному инфоресурсу в редакторе (просмотрщике) будет выполняться отображение перевода меток вершин с языка инфоресурса на язык сайта платформы с использованием как собственно переводчика, так и данных из прикрепленного инфоресурса с переводами. То есть если метка уже имеет сохранённый перевод, то вместо выполнения перевода заново извлекается и отображается сохранённый ранее перевод метки. Если метка не имеет сохранённого перевода, то перевод выполняется и сохраняется. В дальнейшем (ручная) модификация переводов выполняется путём редактирования таких терминалов-значений в инфоресурсе с переводами. Для их поиска необходимо найти и развернуть вершину-ключ, сделанную как зависимый клон от оригинального понятия исходного инфоресурса (метки вершин которого переводятся).
Структура инфоресурса с переводами следующая.
- Под корневой вершиной помещаются все вершины ключи (типа нетерминал). Они создаются как зависимые клоны от вершин исходного инфоресурса (иерархичность исходного инфоресурса не поддерживается).
- Под каждой вершиной-ключом размещаются текстовые переводы её метки на тот или иной язык (представляются вершинами типа терминал-значение) - согласно выбранному метапонятию с именем, соответствующим коду языка.
Важно отметить, что при отображении обрабатываемого инфоресурса в редакторе (просмотрщике) в переведенном варианте в режиме "с сохранением перевода" особым образом будет выполняться перевод и отображение меток вершин, принадлежащих сторонним инфоресурсам, к которым относятся:
- ссылки (вершины других инфоресурсов),
- оригиналы зависимых клонов,
- вершины онтологии обрабатываемого инфоресурса.
В идеальном случае всем таким сторонним инфоресурсам должны быть сопоставлены отдельные инфоресурсы для переводов (подключенные к этим инфоресурсам). Тогда при отображении перевода такой метки перевод будет извлечён (или получен от переводчика и сохранён) из этих вспомогательных инфоресурсов. В противном случае перевод таких меток выполняется в режиме "для текущего отображения" (сохранение переводов меток вершин сторонних инфоресурсов в инфоресурс переводов обрабатываемого инфоресурса не выполняется!).
Особо стоит отметить вариант с зависимыми клонами - когда имеется целая цепочка зависимых клонов и ведётся работа с инфоресурсом самого последнего из них. В этом случае перевод зависимого клона ищется по восходящей - от ближайшего оригинала до самого отдаленного. (Таким образом, перевод ближайших оригиналов "покрывает" перевод более дальних оригиналов, в случае, если нескольким оригиналам в этой цепочке сопоставлены отдельные переводы.) В случае необнаружения перевода выполняется автоматический перевод метки зависимого клона и выполняется попыка сохранить его для наиболее дальнего оригинала (при наличии прикрепленного инфоресурса с переводами).
JS редактор и просмотрщик
В данных средствах работы с инфоресурсами в настоящее время поддерживается ограниченный режим "с сохранением перевода": при языке отображения, отличающемся от языка инфоресурса, происходит лишь отображение сохранённых ранее (при работе в базовых редакторах/просмотрщике инфоресурсов) переводов вершин. (То есть не выполняется автоперевод и его сохранение для непереведённых ранее вершин.)
Пример
Имеем последовательность из 3 зависимых клонов от некоторой оригинальной вершины А (все вершины находятся в разных инфоресурсах): A < A1 < A2 < A3. Их инфоресурсы (соответственно): И, И1, И2, И3, из них инфоресурсы с переводами имеют И2 и И - это инфоресурсы П2 и П соответственно. При попытке найти перевод для вершины А3 редактор (просмотрщик) инфоресурсов находит вначале инфоресурс переводов П2, затем П. При их переборе, если в каком-то из них окажется наличие перевода на требуемый язык - он тут же будет получен. То есть, если искомый перевод присутсвует в П2 (для А2), то инфоресурс П рассматриваться не будет, даже если он также содержит перевод (для А). Если перевод не хранится ни в П, ни в П2, то выполнив новый перевод, редактор (просмотрщик) сохранит его в инфоресурс П. После этого при поиске перевода для А3, А2, А1 и А всегда будет получен перевод из П. Сохранение в П2 или возможно созданные в будущем П1 и П3 (для И1 и И3) выполняться не будет. Если затем в П2 будет вручную добавлен перевод для вершины А2, то именно он будет использоваться как перевод для вершин А2 и А3. А перевод из П будет использоваться для вершин А и А1.
Примечания
- Инфоресурс с переводами является отдельной (от исходного инфоресурса) единицей хранения, то есть им необходимо "делиться" между пользователями для предоставления им возможности модифицировать переводы меток. Однако, автоматическое чтение/наполнение переводов из/в такой ресурс (при работе с исходным инфоресурсом) не требует организации совместного доступа.
- При удалении исходного инфоресурса автоматически удаляется инфоресурс с переводами (но не наоборот).
- При публикации в Фонда оба инфоресурса должны быть отправлены на публикацию, а не только один из них.
- В режиме "с сохранением перевода" рекомендуется начать с формирования переводов автоматически - подключить к исходному инфоресурсу инфоресурс с переводами и начать просмотр содержимого исходного инфоресурса. Каждое отображение метки вершины, требующее выполнение перевода, сформирует в инфоресурсе перевода необходимый ключ, сделав зависимый клон от переводимой вершины, и его перевод - сформировав строковую вершину (типа терминал-значение) с переводом (по метапонятию, соответствующему коду языка). Это упрощает модификацию переводов меток вершин, так как отсутствует необходимость создавать вершину-ключ, а также в выполненном автоматическом переводе, возможно, будут содержаться некоторые полезные слова, которые пользователь пожелает "оставить" при модификации перевода и не будет вводить самостоятельно.