2010-11-10 28 views
7

Estoy usando NSIS para generar un instalador de Windows para mi aplicación. Me gustaría un instalador multilingüe. Estoy usando LangString para especificar cadenas.Especificación de caracteres no ASCII para LangString de NSIS

Sin embargo, la documentación no parece indicar cómo se debe codificar un carácter que no sea ASCII. Por ejemplo, para usar la palabra alemana "benötigt" (donde la 'o' tiene una diéresis), ¿cómo debería codificar el ö?

Respuesta

2

Asumo que estamos hablando de la versión ANSI de NSIS aquí ...

El segundo parámetro a LangString es el identificador de idioma (Usted puede generar una con NSIS \ Bin \ MakeLangId.exe, pero ya que es probable ya utiliza la macro MUI_LANGUAGE o LoadLanguageFile, $ {LANG_GERMAN} etc. se definirá para usted)

NSIS realmente no le importa cómo se codifica la cadena, pero si tiene muchas cadenas en diferentes idiomas, probablemente sea una ¡buena idea poner los comandos de LangString en archivos externos que usted puede! incluir. De esta forma, puede editar diferentes archivos de idioma con diferentes páginas de códigos y editores de texto.

+0

¿NSIS ha sido estandarizado por ANSI? Aparte de eso, ¿cómo no puede importarle la codificación? Tiene que mostrar el texto en la pantalla. Debe asumir alguna codificación. ISO-8859-1? UTF-8? ¿Se puede especificar la codificación? ¿Si es así, cómo? –

+0

No, ANSI como Windows 9x es ANSI y no Unicode. NSIS no muestra nada, Windows sí, NSIS simplemente le da un char *. – Anders

+0

OK, entonces, ¿cómo le dices a Windows qué es la codificación de caracteres? –

1

Si desea compilar las cadenas UNICODE por la versión ANSI de NSIS compilador, entonces usted tiene que poner esas cadenas en archivo separado .nsi con UCS-2 LE BOM (operaciones de búsqueda con Notepad++) formato e incluir directamente eso.

He usando versiones especialmente inglés y ruso de este tipo de archivos en el extremo de un 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

si no se puede utilizar la versión Unicode del INE, se podría codificar el texto en latín-1 (ISO 8859-1) que se puede usar para producir estas diéresis como ü, ä, ö

Cuestiones relacionadas