[LangOptions] section

A [LangOptions] section is used to define the language-specific settings, such as fonts, used by the Setup program and uninstaller. Normally, you need not create a [LangOptions] section in your script file, since the language-specific settings are, by default, pulled in from the file Default.isl included with Inno Setup (or whichever file is specified by a [Languages] section entry).

The following is an example of a [LangOptions] section. (The settings listed below are the defaults.)

[LangOptions]
LanguageName=English
LanguageID=$0409
LanguageCodePage=0
DialogFontName=
DialogFontSize=8
WelcomeFontName=Verdana
WelcomeFontSize=12
TitleFontName=Arial
TitleFontSize=29
CopyrightFontName=Arial
CopyrightFontSize=8
RightToLeft=no

LanguageName is the native name of the language (so not the English name). It is displayed in the list of available languages on the Select Language dialog in a multilingual installation. It is internally stored as a Unicode string and displayed as such. To embed Unicode characters, use "<nnnn>", where "nnnn" is the 4-digit hexadecimal Unicode character code. You can find Unicode character codes of characters using the Character Map accessory included with Windows 2000 and later.

LanguageID is the numeric "language identifier" of the language. Refer to the list of valid language identifiers on MSDN [external link]. This, along with LanguageCodePage, is used for the purpose of auto-detecting the most appropriate language to use by default, so be sure it is set correctly. It should always begin with a "$" sign, since language identifiers are in hexadecimal. If no language identifier currently exists for the language, set this to zero.

LanguageCodePage specifies the "code page" (character set) needed for the compiler to convert the text in the language's .isl file to Unicode. Note that text in the .iss file such as a [CustomMessages] entry for the language is not converted and should be in Unicode already.
If no code page currently exists for the language, set LanguageCodePage to 0, use a special .islu extension for the language's file, and encode this file as Unicode. Also note: a LanguageName setting in a .islu file does not need to use the special "<nnnn>" encoding mentioned above.
If LanguageCodePage is set to 0 but no .islu extension is used, the system code page will be used to convert the text in the language's .isl file to Unicode.

DialogFontName and DialogFontSize specify the font name and point size to use in dialogs. If no DialogFontName setting is present, then the value of the DefaultDialogFontName [Setup] section directive is used for the font name. If the specified font name does not exist on the user's system or is an empty string, 8-point Microsoft Sans Serif or MS Sans Serif will be substituted.

WelcomeFontName and WelcomeFontSize specify the font name and point size to use at the top of the Welcome and Setup Completed wizard pages. If the specified font name does not exist on the user's system or is an empty string, 12-point Microsoft Sans Serif or MS Sans Serif will be substituted.

TitleFontName and TitleFontSize specify the font name and point size to use when displaying the application name on the background window (only visible when WindowVisible=yes). If the specified font name does not exist on the user's system, 29-point Arial will be substituted. If the specified font name is an empty string, 29-point Microsoft Sans Serif or MS Sans Serif will be substituted.

CopyrightFontName and CopyrightFontSize specify the font name and point size to use when displaying the AppCopyright message on the background window (only visible when WindowVisible=yes). If the specified font name does not exist on the user's system, 8-point Arial will be substituted. If the specified font name is an empty string, 8-point Microsoft Sans Serif or MS Sans Serif will be substituted.

RightToLeft specifies whether the language is written from right to left. If set to yes, text alignment and reading order will be reversed (with some intentional exceptions), and controls will be arranged from right to left ("flipped").


In cases where there are multiple [Languages] section entries, specifying a [LangOptions] section directive in your script (as opposed to an .isl file) will by default override that directive for all languages. To apply a [LangOptions] section directive to only one language, prefix it with the language's internal name followed by a period. For example:

en.LanguageName=English