inno-setup

How to localize Inno Setup component and type names?


How to localize component and type names? For example:

[Languages]
Name: "eng"; MessagesFile: "Idiomas\English.isl"
Name: "spa"; MessagesFile: "Idiomas\Spanish.isl"

If I choose English:

[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom

[Components]
Name: "program"; Description: "Program Files"; Types: full compact custom; \
    Flags: fixed
Name: "readme"; Description: "Readme File"; Types: full

or if I choose Spanish:

[Types]
Name: "full"; Description: "Instalación Completa"
Name: "compact"; Description: "Instalación Mínima"
Name: "custom"; Description: "Instalación Personalizada"; Flags: iscustom

[Components]
Name: "program"; Description: "Archivos de Programa"; Types: full compact custom; \
    Flags: fixed
Name: "readme"; Description: "Archivo de Ayuda"; Types: full

Solution

  • Define custom messages in the language files:

    And then use these custom messages using the {cm:MessageName} constant in your script:

    [Types]
    Name: "full"; Description: "{cm:FullInstallation}"
    Name: "compact"; Description: "{cm:CompactInstallation}"
    Name: "custom"; Description: "{cm:CustomInstallation}"; Flags: iscustom
    
    [Components]
    Name: "program"; Description: "{cm:ProgramFilesComponent}"; \
      Types: full compact custom; Flags: fixed
    Name: "readme"; Description: "{cm:ReadmeFileComponent}"; \
      Types: full
    

    English

    Spanish