[izpack-devel] Patch 5/6 patch against the current trunk

Markus Schlegel markus.schlegel at pulinco.com
Thu Jan 11 09:37:29 CET 2007


Hi Ari 

Your example is somewhat strange.
If you work in germany on a german PC and only understand finnish, you
wouldn't understand anything on that PC, because all applications
including the OS are running in german... What's the problem then with
an installer that is also running in german? This is just natural...

If you don't like the feature for your installers, you can simply ommit
the langFromOS-switch...

What we have here is an internationally deployed Application with
Translations in German and English. Our users run either english,
german, french or italian systems. We'd like to build only one installer
that includes the two languages English and German, but we don't like to
ask the user of a german or english system which language he prefers,
since his joice will be the chice of his system ALLWAYS !

What we have to do here else, is to build an installer for each language
(german & english) to ommit the language selection, which would be
pretty curious...

Markus


-----Original Message-----
From: izpack-devel-bounces at lists.berlios.de
[mailto:izpack-devel-bounces at lists.berlios.de] On Behalf Of Ari
Voutilainen
Sent: Wednesday, January 10, 2007 9:44 PM
To: izpack-devel at lists.berlios.de
Subject: Re: [izpack-devel] Patch 5/6 patch against the current trunk

Hi all,

I think taking language from OS is the best guess to offer readable
texts to user. But this should be offered via language selection dialog.
So situation is this:

langFromOS=yes && lang pack found => You have to make your installation
with that language.

What about if I go to Germany and let's assume I can understand only
Finnish. My friend have German as regional settings and langFromOS is
yes and lang pack is found so installer gives me German and I would say
something... well, at least I wouldn't thank developers. This is only
one example where this feature isn't very good. We cannot be 100 % sure
the _user_ wants to use that language which is set in a operating
system.

If someone wants to offer only one language in the installation I think
he/she should edit install XML file so that there will be only one
language and that is used regardless of the regional settings. If there
is multiple languages let's have a selection dialog with the language
which is in the system (or english if not matched). So I vote for the
original behaviour.

Regards,
Ari

Markus Schlegel wrote:
> Hi Julien
> 
> I've also made a patch against the current trunk for the 
> "langFromOS"-Feature.
> 
> I can not understand why this feature is a problem for the izpack 
> team, since it does not change current behavior. I can understand when

> the commandline switch (in my original post) was a problem for you. 
> But I changed the implementation to use gui-modifiers. Also I have 
> added the Documentation for it.
> 
> Please concern, that the Language Selection Dialog is the only part of

> your installer (except for the uninstaller) that can not be replaced 
> by an other component and that cannot be omitted (if you want to 
> support multiple installer languages).
> 
> Mabe there is someone on the users-list that would vote for this 
> feature?
> 
> 
> Regards
> Markus
> 
> 
> 
> -----Original Message-----
> From: izpack-devel-bounces at lists.berlios.de
> [mailto:izpack-devel-bounces at lists.berlios.de] On Behalf Of Julien 
> Ponge
> Sent: Tuesday, January 09, 2007 8:40 AM
> To: izpack-devel at lists.berlios.de
> Subject: Re: [izpack-devel] Next release will be 3.10.0
> 
> Hi Markus,
> 
> ...
> 
> About 5/6: I will have a look again to make my mind, but I am mildly 
> in favour of this patch since there is no consensus about it.
> 
> ...
> 
> 
> ----------------------------------------------------------------------
> --
> 
> Index: 
> C:/deron/tools_/IzPack_TRUNK/src/lib/com/izforge/izpack/installer/GUII
> nstaller.java 
> ===================================================================
> ---
C:/deron/tools_/IzPack_TRUNK/src/lib/com/izforge/izpack/installer/GUIIns
taller.java	(revision 1698)
> +++
C:/deron/tools_/IzPack_TRUNK/src/lib/com/izforge/izpack/installer/GUIIns
taller.java	(working copy)
> @@ -1,5 +1,5 @@
>  /*
> - * $Id:$
> + * $Id$
>   * IzPack - Copyright 2001-2006 Julien Ponge, All Rights Reserved.
>   * 
>   * http://www.izforge.com/izpack/
> @@ -205,35 +205,57 @@
>          List availableLangPacks = getAvailableLangPacks();
>          int npacks = availableLangPacks.size();
>          if (npacks == 0) throw new Exception("no language pack
available");
> -        String selectedPack;
> +        String selectedPack = null;
> + 
> +        //if modifier langFromOS is set to "yes", we may not display
a dialog and take instead the language from the OS
> +        //The Langugedialog is displayed anyway, if the installer
does not contain the language that the system runs with.
> +        if (useLanguageFromOS()){
> +            Locale l = Locale.getDefault();
> +            String osCode = l.getISO3Language().toLowerCase();
> +            if (availableLangPacks.contains(osCode)){
> +                selectedPack = osCode;
> +            }else{
> +                //now let's try the countrycode for backward
compatibility. Think we should take langcode instead...
> +                osCode = l.getISO3Country().toLowerCase();
> +                if (availableLangPacks.contains(osCode)){
> +                    selectedPack = osCode;
> +                }else{
> +                    //noop, let the user choose the language...
> +                }
> +            }
> +        }
> +        
> +        if (selectedPack==null){
> +            // Dummy Frame
> +            JFrame frame = new JFrame();
> +            frame.setIconImage(new
ImageIcon(this.getClass().getResource("/img/JFrameIcon.png"))
> +            .getImage());
>  
> -        // Dummy Frame
> -        JFrame frame = new JFrame();
> -        frame.setIconImage(new
ImageIcon(this.getClass().getResource("/img/JFrameIcon.png"))
> -                .getImage());
> +            Dimension frameSize = frame.getSize();
> +            Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
> +            frame.setLocation((screenSize.width - frameSize.width) /
2,
> +                    (screenSize.height - frameSize.height) / 2 - 10);
>  
> -        Dimension frameSize = frame.getSize();
> -        Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
> -        frame.setLocation((screenSize.width - frameSize.width) / 2,
> -                (screenSize.height - frameSize.height) / 2 - 10);
> +            // We get the langpack name
> +            if (npacks != 1)
> +            {
> +                LanguageDialog picker = new LanguageDialog(frame,
availableLangPacks.toArray());
> +
picker.setSelection(Locale.getDefault().getISO3Country().toLowerCase());
> +                picker.setModal(true);
> +                picker.toFront();
> +                //frame.setVisible(true);
> +                frame.setVisible(false);
> +                picker.setVisible(true);
>  
> -        // We get the langpack name
> -        if (npacks != 1)
> -        {
> -            LanguageDialog picker = new LanguageDialog(frame,
availableLangPacks.toArray());
> -
picker.setSelection(Locale.getDefault().getISO3Country().toLowerCase());
> -            picker.setModal(true);
> -            picker.toFront();
> -            //frame.setVisible(true);
> -            frame.setVisible(false);
> -            picker.setVisible(true);
> -
> -            selectedPack = (String) picker.getSelection();
> -            if (selectedPack == null) throw new
Exception("installation canceled");
> +                selectedPack = (String) picker.getSelection();
> +                if (selectedPack == null) throw new
Exception("installation canceled");
> +            }
> +            else
> +            {
> +                selectedPack = (String) availableLangPacks.get(0);
> +            }
>          }
> -        else
> -            selectedPack = (String) availableLangPacks.get(0);
> -
> +        
>          // We add an xml data information
>          this.installdata.xmlData.setAttribute("langpack", 
> selectedPack);
>  
> @@ -440,6 +462,20 @@
>          return (true);
>      }
>  
> +    /** 
> +     * Returns whether the Language Selection Dialog should be
displayed even if the Installer contains a language matching the
System's language.
> +     *
> +     * @return true if the gui-modifier "langFromOS" was set to
"yes", false otherwise
> +     */
> +     protected boolean useLanguageFromOS()
> +     {
> +         if (installdata.guiPrefs.modifier.containsKey("langFromOS") 
> +                && "yes".equalsIgnoreCase((String)
installdata.guiPrefs.modifier.get("langFromOS")))
> +             return (true);
> +         else
> +             return (false);
> +     }
> +
>      /**
>       * Returns the type in which the language should be displayed in
the language selction dialog.
>       * Possible are "iso3", "native" and "usingDefault".
> 
> 
> ----------------------------------------------------------------------
> --
> 
> Index: C:/deron/tools_/IzPack_TRUNK/src/doc-ng/XHTML/node5.html
> ===================================================================
> --- C:/deron/tools_/IzPack_TRUNK/src/doc-ng/XHTML/node5.html
(revision 1698)
> +++ C:/deron/tools_/IzPack_TRUNK/src/doc-ng/XHTML/node5.html	(working
copy)
> @@ -273,6 +273,16 @@
>          language will be used if possible, else the notation of the
default locale. Using "default"
>          will be presented the language in the notation of the default
locale of the VM.
>        </li>
> +
> +      <li>
> +        <tt>langFromOS</tt>:<br />
> +        possible are "yes" or "no". Default (when ommitted) is "no".
If it is set to "yes", 
> +        the installer first checks if the system runs with a language
supported by the installer 
> +        and ommits the Lanugage Selection Dialog if so. If the System
runs with a Language not 
> +        supported by the installer, the Language Selection Dialog is
displayed neverthless. <br />
> +        Example: If you have an Installer supporting German and
English with "langFromOS=yes", 
> +        the dialog will show up on french systems but not on german
or english ones.
> +      </li>
>      </ul>
>  
>      <h2><a id="modifyingPanels" name="modifyingPanels">Modifying 
> IzPack Panels</a></h2>
> 
> 
> ----------------------------------------------------------------------
> --
> 
> _______________________________________________
> izpack-devel mailing list
> izpack-devel at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/izpack-devel

_______________________________________________
izpack-devel mailing list
izpack-devel at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/izpack-devel



More information about the izpack-devel mailing list