Как локализовать autorun.inf? - PullRequest
       3

Как локализовать autorun.inf?

2 голосов
/ 22 сентября 2010

Кто-нибудь успешно создал одностраничный файл autorun.inf?Документация для файлов * .inf предполагает, что

[autorun] 
open="MyApp.exe"
icon=MyApp.exe,0
label=%AppLabel%
action=%AppAction%
[Strings]
AppLabel = "My test app"
AppAction = "Start my test app"
[Strings.0407]  ; 0407 is the language ID for German
AppLabel = "German my test app"
AppAction = "German start my test app"

должно работать.Я обнаружил, что на ярлыке (как оно появляется в диалоговом окне автозапуска) указано «% AppLabel%», а не ожидаемое «Мое тестовое приложение».

1 Ответ

2 голосов
/ 24 июля 2011

документы , связанные Касабланкой в ​​комментарии, говорят, как это должно быть сделано, однако окольным путем.

Ответ в "косвенные строки" ,Вы должны добавить несколько строковых ресурсов в файл EXE или DLL, все с одинаковым идентификатором, но с разными языками, указанными (оператором LANGUAGE). Затем вы можете ссылаться на эти строки в файле autorun.inf с помощью косвенного синтаксиса строки: @filename,-id

Синтаксис для косвенных строк - это знак @, за которым следует имя файла, содержащего строковые ресурсы, на которые вы ссылаетесь, затем запятая, минус, а затем идентификатор строки, на которую вы ссылаетесь.

Пример:

[autorun]
open="MyApp.exe"
icon=MyApp.exe,0
label=@MyApp.exe,-100
action=@MyApp.exe,-101

Для этого требуется, чтобы в вашем EXE-файле имелся ресурс таблицы строк, содержащий все локализованные строки.В формате файла RC это может выглядеть следующим образом:

#include <winresrc.h>

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
    100 "English MyApp
    101 "English MyApp description text"
END

LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
    100 "German MyApp
    101 "German MyApp description text"
END

В этом случае Windows должна использовать немецкую строку, если у пользователя установлена ​​немецкая версия Windows или выбран немецкий язык в качестве языка многоязыкового интерфейса пользователя.Любая языковая версия должна выбирать английские строки.

...