Translating Panel Headlines

Rules

The following key suffixes can be translated:

  • headline
  • headinfo<number>

The built-in translation of these labels can be overridden in the following way:

  • Add custom translations to a IzPack resource CustomLangPack.xml_<ISO3>
  • The following translation keys and lookup order can be used:
    1. If a panel ID is defined:
      <Fully_qualified_panel_classname>.<panelId>.<subKey>
    2. If a panel ID is defined:
      <Simple_panel_classname>.<panelId>.<subKey>
    3. If a panel ID is defined:
      <panelId>.<subKey>
    4. If no panel ID is defined:
      <Fully_qualified_panel_classname>.<subkey>
    5. If no panel ID is defined:
      <Simple_panel_classname>.<subkey>
       (for compatibility with IzPack 4 translations)
    6. Steps 1., 2., 4., 5. for the next superclass in the given order
      This is repeated for the next superclass of the current class inherited from IzPanel as long as the super class is not the abstract IzPanel itself. 

Usage

Headlines on all kind of installer panels can be translated in the following manner:

Create a custom translations file for each language, for instance:

CustomLangPack.xml_eng
<izpack:langpack version="5.0" xmlns:izpack="http://izpack.org/schema/langpack" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://izpack.org/schema/langpack http://izpack.org/schema/5.0/izpack-langpack-5.0.xsd">
  ...
  <str id="TargetPanel.headline" txt="Take a deep breath and gimme an installation directory"/>
</izpack:langpack>

and add it as resource to the installation descriptor using predefined key depending on each language used:

install.xml
<resources>
  <res id="CustomLangPack.xml_eng" src="i18n/CustomLangPack.xml_eng"/>
</resources>
 
<panels>
  <panel classname="TargetPanel"/>
</panels>

 

A more complex example:

customLangPack.xml_deu
<?xml version="1.0" encoding="UTF-8"?>
<izpack:langpack version="5.0" xmlns:izpack="http://izpack.org/schema/langpack" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://izpack.org/schema/langpack http://izpack.org/schema/5.0/izpack-langpack-5.0.xsd">
	<!-- Headlines of panels -->
	<str id="HelloPanel.headline" txt="Willkommen" />
	<str id="LicencePanel.headline" txt="Lizenzvereinbarung" />
	<str id="TargetPanel.headline" txt="Installationsverzeichnis" />
	<str id="PacksPanel.headline" txt="Installationspakete" />
	<str id="InstallPanel.headline" txt="Installation läuft" />
	<str id="FinishPanel.headline" txt="Installation abgeschlossen" />
	<str id="UserInputPanel.panel.tomcatsettings.headline" txt="Tomcat-Einstellungen" />
</izpack:langpack>
install.xml
<resources>
	<res id="CustomLangPack.xml_eng" src="i18n/customLangPack.xml_eng"/>
	<res id="CustomLangPack.xml_deu" src="i18n/customLangPack.xml_deu"/>
	...
<resources>

 

A special use case are translations depending on conditions. Language packs don't "know" conditioned translations. You can workaround this by defining one and the same panel for different conditions with a separate panel ID:

install.xml
<panels>
    ...
    <panel classname="InstallPanel" id="panel.install.install" condition="Install"/>
    <panel classname="InstallPanel" id="panel.install.update" condition="Update"/>
    <panel classname="InstallPanel" id="panel.install.uninstall" condition="Uninstall"/>
    <panel classname="FinishPanel" id="panel.finish.install" condition="Install"/>
    <panel classname="FinishPanel" id="panel.finish.update" condition="Update"/>
    <panel classname="FinishPanel" id="panel.finish.uninstall" condition="Uninstall"/>   
</panels>

The translations are divided now depending on the panel ID for the appropriate panel:

CustomLangPack.xml_deu
	<str id="InstallPanel.panel.install.install.headline" txt="Installation wird durchgeführt" />
	<str id="InstallPanel.panel.install.update.headline" txt="Aktualisierung wird durchgeführt" />
	<str id="InstallPanel.panel.install.uninstall.headline" txt="Anwendung wird deinstalliert" />
	<str id="FinishPanel.panel.install.headline" txt="Die Installation ist beendet" />
	<str id="FinishPanel.panel.update.headline" txt="Die Aktualisierung ist beendet" />
	<str id="FinishPanel.panel.uninstall.headline" txt="Die Deinstallation ist beendet" />
CustomLangPack.xml_eng
	<str id="InstallPanel.panel.install.install.headline" txt="Installation in progress" />
	<str id="InstallPanel.panel.install.update.headline" txt="Update in progress" />
	<str id="InstallPanel.panel.install.uninstall.headline" txt="Uninstallation in progress" />
	<str id="FinishPanel.panel.install.headline" txt="Installation completed" />
	<str id="FinishPanel.panel.update.headline" txt="Update completed" />
	<str id="FinishPanel.panel.uninstall.headline" txt="Uninstallation completed" />