9
votes

Spécification des caractères non-ASCII pour les langstring de SNS

J'utilise NSIS pour générer un installateur de Windows pour mon application. Je voudrais un installateur multilingue. J'utilise langstring pour spécifier des chaînes.

Toutefois, la documentation ne semble pas dire comment l'une doit encoder un caractère non ASCII. Par exemple, d'utiliser le mot allemand "Benötigt" (où "O" a une Umlaut), comment dois-je encoder Ö?


0 commentaires

4 Réponses :


2
votes

Je suppose que nous parlons de la version ANSI de NSIS ici ...

Le 2e paramètre sur Langstring est l'ID de langue (vous pouvez en générer un avec nsis \ bin \ makelangid.exe, mais que vous utilisez probablement déjà la macro Mui_Language Macro ou LoadLanguageFile, $ {Lang_German}, etc., sera défini pour vous) < / p>

nsis ne se soucie pas vraiment de la manière dont la chaîne est codée, mais si vous avez beaucoup de chaînes dans différentes langues, il est probablement une bonne idée de mettre les commandes Langstring dans des fichiers externes que vous pouvez! Inclure. De cette façon, vous pouvez éditer différents fichiers de langue avec différents codes de code et éditeurs de texte.


9 commentaires

NSIS a été normalisé par ANSI? Cela de côté, comment ne se soucie pas du codage? Il doit afficher le texte à l'écran. Il doit assumer un certain codage. ISO-8859-1? Utf-8? Le codage peut-il être spécifié? Si c'est le cas, comment?


Non, ANSI comme Windows 9X est ANSI et non Unicode. NSIS n'affiche rien, Windows fait, NSIS lui donne simplement un char *.


OK, alors comment dites-vous Windows quel est le codage du personnage?


Dans les options régionales du Panneau de configuration, il existe une combinaison pour définir le codépage pour les programmes ANSI. La boîte de dialogue de sélection de la langue du SNS tente de ne présenter que des langues qui "fonctionnent"


SNS affiche correctement son propre texte de plaque de chaudière, mais il n'imprime pas actuellement la mine correctement. A Ü (petite lettre 'U' avec une Umlaut) s'affiche comme ¼ (une lettre majuscule 'A' avec un tilde suivie d'une fraction de 1/4). La valeur des octets de ü est 0xFC. Cela ne fonctionne évidemment pas. Quelle (s) valeur (s) devrait remplacer le 0CFC?


NSIS 3.01 En 2017: Malgré l'option Unicode, il ne semble pas gérer les fichiers de script codés UTF-8 avec des UMLAUTS (comme avec OT). Il fonctionne avec les fichiers de script codés ANSI / ISO 8859-1.


@Handle Je suis à peu près sûr que ça marche mais j'aurais besoin de plus d'informations. Est-ce que l'UTF-8 .nsi a un bom, etc.? Dossier un rapport de bogue sur Sourceforge ou le Forum SNS Si vous croyez qu'il y a un problème, je ne peux pas traiter cela dans des commentaires.


@Anders merci pour votre intérêt: avec et sans chômage (Notepad ++, Atom). Pas un vrai problème car c'est bien avec ISO 8859-1.


@ THENDLE C'est un problème si quelque chose est cassé mais en parlant ici ne va pas résoudre ce problème, poster un rapport de bogue comme je l'ai déjà suggéré.



3
votes

Il est tout simplement plus facile d'utiliser le version Unicode de SNS . Tout le problème s'en va alors.


0 commentaires

1
votes

Si vous souhaitez compiler les chaînes Unicode par la version ANSI du compilateur NSIS, vous devez mettre de telles chaînes dans un fichier distinct .nsi avec ucs-2 le bom (Recherchez-le avec Notepad ++ ) Format et incluez directement cela.

J'ai utilisé des versions particulièrement anglaise et russe de ces fichiers à la fin d'un Main.nsi : xxx


0 commentaires

0
votes

Si vous ne pouvez pas utiliser la version Unicode de la SNSI, vous pouvez encoder votre texte dans latin-1 (ISO 8859-1) qui peut être utilisé pour produire ces UMLAUTS comme Ü, Ä, Ö


0 commentaires