@Александр РивилисНе путайте белое с пушистым!
В данном случае речь о .NET, а не о ARX. Обратите внимание на то, что в
управляемой обёртке, написанной Autodesk, параметр localizedNameId извлекает именно
локализованное значение, обращаясь для этого к ресурсам класса. И, как видим,
функция acedSetFunHelp никак не помешала этой реализации... Кроме того, вы не путайте файл справки AutoCAD с файлом справки плагина - менять локализацию плагина можно на лету, чего нельзя сделать с AutoCAD.
Так что же помешало
по аналогии с localizedNameId сделать это и для параметров helpFileName, helpTopic? Реализация занимает всего пару строк кода (если нужно, могу показать их).
Т.е. локализацией в этой функции не пахнет. С другой стороны можно проверить текущую локализацию и запустить эту функцию с нужными параметрами в зависимости от локализации. Кстати, и в .NET через P/Invoke это сделать достаточно просто.
Я не спрашивал о том, как проверять текущую локализацию или менять её - это я прекрасно умею делать (причём без всяких P/Invoke). Мой вопрос был совсем о другом.
а где Вы видели в автокаде переключение локализаций на лету (как это действительно есть во многих других программах).
А я и не писал
о переключений локализаций на лету для самого AutoCAD...
Я писал о смене локализаций применительно к плагинам. Такое переключение делается достаточно просто и время от времени в своих .net плагинах я это делаю (когда не ленюсь). Значение желаемой локализации (её имя) хранится в файле настроек плагина. Если указанная не найдена, то используется та, что Default. Если найдена - то на момент работы команды текущей устанавливается та, что указана (локализация интерфейса) и по завершению работы возвращается прежняя. Если в файле настроек указать др. локализацию, то следующий вызов команды плагина применит эту локализацию (перезагрузка не требуется). Но по умолчанию происходит считывание той локализации, которую имеет AutoCAD. Поэтому, если AutoCAD английский, то и локализация в плагине будет искать прежде всего английскую, а если AutoCAD русский - то русскую. Если пользователь захочет для плагина принудительно указать иную (например, русскую в английском автокаде), то может сделать это в настройках. И заметьте:
этот механизм не я придумал - это родной механизм, реализованный в .NET, а я всего лишь пользуюсь им (как и AutoCAD, применительно к localizedNameId).
Да есть соответствующие механизмы (и не только в .Net) для выбора соответствующих библиотек, но к автокаду-то это не относится. По моему, то что формат хранения Ваших плагинов на данном этапе "не дружит" с локализацией (то есть, дружит, но с тем вариантом который есть в .Net, но отсутствует в Автокад) - это Ваш баг, а не автодеска.
Прочитайте внимательней ещё раз первое сообщение данной темы...
AutoCAD как раз таки использует механизм, реализованный в .NET - ещё раз смотрите на параметр localizedNameId. Но разработчики реализовали это так, что используют его только для одного параметра, хотя по хорошему следовало сделать это для трёх.
Это недоработка обёртки!Реализовывать или нет соответствующие "навороты" системы решать им
Это не "навороты", а недоделка, исправление которой укладывается в две строки кода.
Я бы не задавал такого вопроса, если бы и localizedNameId не обращался к локализованным ресурсам. Но если уж начали делать, то доделывайте до конца (имхо).
Не забывайте, что автокад (пока) написан не на .Net и все что видно из него - это только обертка
Я пишу не об абстрактном сферическом коне в вакууме, а
о конкретной ситуации. Кроме того, как я уже писал выше - исправление занимает всего две строки кода.