Указание не-ASCII символов для LangString NSIS - PullRequest
8 голосов
/ 10 ноября 2010

Я использую NSIS для генерации установщика Windows для моего приложения. Я хотел бы многоязычный установщик. Я использую LangString для указания строк.

Однако в документации, похоже, не говорится, как следует кодировать не-ASCII-символы. Например, чтобы использовать немецкое слово «benötigt» (где у «o» есть умляут), как я должен кодировать ö?

Ответы [ 4 ]

3 голосов
/ 17 ноября 2010

Просто использовать версию Unicode NSIS .Тогда вся проблема исчезнет.

2 голосов
/ 10 ноября 2010

Я предполагаю, что мы говорим о ANSI-версии NSIS здесь ...

2-й параметр LangString - это идентификатор языка (Вы можете сгенерировать его с помощью NSIS \ Bin \ MakeLangId.exe, но так как вывозможно, вы уже используете макрос MUI_LANGUAGE или для вас будут определены LoadLanguageFile, $ {LANG_GERMAN} и т. д.)

NSIS не очень заботится о том, как кодируется строка, но если у вас много строк на разных языках, этоВероятно, это хорошая идея поместить команды LangString во внешние файлы, которые вы можете!Таким образом, вы можете редактировать разные языковые файлы с разными кодовыми страницами и текстовыми редакторами.

1 голос
/ 13 сентября 2017

Если вы хотите скомпилировать строки UNICODE с помощью ANSI-версии компилятора NSIS, вы должны поместить такие строки в отдельный файл .nsi с форматом UCS-2 LE BOM (ищите его с Notepad++) и напрямую включить его.

Я использую, в частности, английские и русские версии таких файлов в конце main.nsi:

!ifdef LANG_ENGLISH
!include "${PROJECT_SRCS_ROOT}\lang_en.nsi"
!endif

!ifdef LANG_RUSSIAN
!include "${PROJECT_SRCS_ROOT}\lang_ru.nsi"
!endif
0 голосов
/ 21 февраля 2018

если вы не можете использовать версию nsis в юникоде, вы можете закодировать ваш текст в латинице-1 (ISO 8859-1), который можно использовать для создания этих умлаутов, как ü, ä, ö

...