left menu mob button

Новое на канале:

Кто время выиграл — все выиграл в итоге. (Мольер)

только нужной информации

(серия статей):

Скрипт не появился в меню, или Ещё раз о локализации

«Я сделал(а) всё по инструкции, разместил(а) скрипт в правильной папке, перезапустил(а) InDesign, а скрипт в меню не появился», — с такой ситуацией могут столкнуться пользователи при попытке использовать скрипты, предназначенные для встраивания в различные меню программы. Тема эта была подробно рассмотрена в статье «Доступ к скрипту из локализованного меню», однако, вопросы продолжают поступать, а значит, есть необходимость ещё раз, покороче, поконкретнее и пошагово разобраться, почему после выполнения всех инструкций InDesign отказывается расширять таким образом свой функционал, и как же всё-таки с ним «договориться» и увидеть, в конце концов, нужный пункт меню, вызывающий нужный скрипт.

Есть две основные причины, по которым скрипт, помещённый в папку startup scripts и содержащий в себе код для встраивания в меню, может в этом меню не появиться. Первая причина — локализация программы. То есть, скрипт был написан для встраивания в английское меню, а пользователь использует, например, русскую версию программы.

Вторая причина — использование в каждом конкретном случае по-своему расширенного функционала InDesign, дополнительных плагинов и т. п. Такие надстройки могут добавлять свои пункты меню, из-за которых сдвигается индексация следующих за ними пунктов, а скрипт запрограммирован не на имя меню, а на его индекс.

Рассмотрим оба случая.

Первое, что нужно сделать, — это открыть код скрипта для редактирования и найти строки, отвечающие за встраивание скрипта в соответствующее меню.

За встраивание в верхнее меню, вероятнее всего, будет отвечать строка, похожая на такую:

var mnu = app.menus.item("$ID/Main").submenus.item("$ID/Type");

В этом случае достаточно изменить содержимое второй скобки на название, соответствующее вашей локализации:

var mnu = app.menus.item("$ID/Main").submenus.item("$ID/Текст");

Если же скрипт должен быть встроен в контекстное меню, то лучше всего, не теряя времени на эксперименты с переименованием, определить и указать скрипту индекс нужного меню.

Для этого нужно открыть программу ExtendScript Toolkit, задать целевое приложение (Adobe InDesign) и выполнить такой скрипт:

for (var i = 0; i < app.menus.length; i++){ 
	$.writeln(i + ": " + app.findKeyStrings(app.menus.item(i).name)); 
	}

localmenuen3

В полученном в консоли списке надо найти нужное меню и вставить его индекс в строке скрипта, которая может выглядеть примерно так:

var rMouseMnu = app.menus.item("$ID/RtMouseText");

или так:

var cm = localize({en:"var rMouseMnu = app.menus[103]",ru:"var rMouseMnu = app.menus[16]"});

либо проще:

var rMouseMnu = app.menus[16];

Число в квадратных скобках — тот самый индекс, который нужно исправить. Если вы используете русскую версию версию программы, и в скрипте уже есть значение для вашей локализации, то это значение всё равно может отличаться на 1-2 в силу того, что вы можете использовать какие-то дополнительные надстройки, как уже писалось выше.

Ту же операцию по поиску и замене нужного индекса меню следует повторить, если скрипт пропал из контекстного меню после установки очередных обновлений InDesign.

Вот и всё, после этого нужно перезапустить InDesign и проверить нужное меню.


Скрипты, доступные на сайте, которые встраиваются в различные меню:

Комментариев нет.

Оставить комментарий:

Имя*:
E-mail*:
Текст комментария*:
Код безопасности*: