Programs may have catalogs and guides translated into various languages, however Installer scripts are usually localized directly in the code.
The usual procedure is to map strings to variables at the top of the script starting with a default language (ie: English):
; set variable languages-default to 1 (set languages-default 1) ; string definitions (set #bad-kick "You must be using Kickstart 2.04+ to install MCP") (set #copy-mcp "Copying MCP...") ; ... etc...
After the variables have been defined they are overloaded conditionally depending on the selected language with different strings from the target language:
(if (= @language "deutsch") ( (set languages-default 2) (set #bad-kick "Man benötigt Kickstart 2.04 oder höher, um MCP benutzen zu können!") (set #copy-mcp "Kopiere MCP...") ; ... etc ... ) )
by using the @language
environment variable that is expanded to the current Amiga locale by Installer.
One of the drawbacks of using this method is the reliance on the environment locale being set so the @language
Installer symbol gets properly expanded. Unfortunately, in case you are seeking to migrate your install to a different language, then unless you set the environment locale before running the install script, Installer will always pick the first default language.
An illustration of this problem can be observed in the MCP Amiga package that contains icons such as:
MCP_Install.english.info
MCP_Install.deutsch.info
but all of them will start Installer in English. However the icons found in the MCP Amiga package have a tooltype named LANGUAGE
that is set to English, respectively Deutsch but has absolutely no effect because the special @language
Installer symbol does not take the LANGUAGE
tooltype into consideration.
One suggested workaround is to overload the Installer @language
special symbol with the value of the LANGUAGE
tooltype for all icons and then include the following code at the top of the Installer script:
; Wizardry and Steamworks ; Overload environment language with language tooltype. (iconinfo (dest @icon) (gettooltype "language" "#icon-tooltype-language")) (if (> (strlen #icon-tooltype-language) 0) (set @language #icon-tooltype-language) )
The code will fetch the LANGUAGE
tooltype from the icon that was clicked to start Installer and, if the LANGUAGE
tooltype was set, the @language
special symbol is overwritten by the tooltype value.
With this modification, all Installer icons for the various languages will properly launch Installer in the language specified by the LANGUAGE
tooltype of the icon.