Translating the Windows installer (was Re: planner-0.14.3-rc2 uploaded)

Maurice van der Pot <griffon26-bCGDfOjggl9Wk0Htik3J/[email protected]> Wed, 31 Dec 2008 13:36:37 +0100
Newsgroups gmane.comp.gnome.apps.planner.devel
Message-ID <[email protected]>
On Thu, Aug 07, 2008 at 02:20:31PM +0200, Jordi Mas wrote:
> ยท We should pack all the languages in the installer for which Planner
> has support. Many people does not speak English, then having an English
> only installer is really a step backwards for a software that is
> localized to so many languages. 

I have spent the last day and a half on battling with NSIS, intltool and
gettext to see how to provide a fully translated installer.

For those of you who don't know gettext/intltool, I'll give a simplified
explanation of how they work together to use the translations in .po files.

  gettext[1] can extract strings from C source code and create an initial
  .po file for translators to edit. It can also update existing .po
  files with new strings and warn about missing translations.
  Furthermore it converts a .po file to a binary file that the
  application will use at run-time to display the translated strings.

  To support more than just applications written in C, intltool was
  written.  It is used to convert several different (text) file formats
  into dummy C files that can be processed by gettext. Afterwards it can
  use the original input file and the .po files to generate a translated
  output file.

I've seen that I can use intltool to handle the format of our NSIS
files[2] by simply selecting input type "gettext/quoted". It just grabs
all quoted strings when generating a .po file and writes separate output
files for each language where the strings have been replaced.
Gettext & friends of course all use UTF-8.

If I'm not mistaken the regular version of NSIS uses the active windows
code page to display characters. Consequently it will not allow me to
select Russian when I run the installer on a system using the WinLatin1
encoding (cp1252). Also the NSIS files containing the translated strings
will have to be edited in their own code page.

There is also Unicode NSIS[3], which uses UTF-16LE everywhere.  It only
works on Windows 2000 and later, but I don't see that as a problem.


Perl will need to be installed for intltool, so we might as well use it
to convert the output of intltool from UTF-8 to UTF-16LE so Unicode NSIS
can read it.

An unfortunate consequence of using Unicode NSIS is that all its script
files will also have to be stored in UTF-16LE. This is not a problem for
vim on Linux/UNIX, nor for notepad and wordpad on Windows, but the vi
version that comes with MSYS does not support it and diffing may not
work well in viewvc/svn (not sure). Winmerge and TortoiseSVN work fine
with it though.

I'd prefer not to have anything non utf-8 in subversion, but if the
alternative is an extra conversion step before NSIS can be run then I'm
not sure which is better.


If anyone can suggest a different approach I'd love to hear it.

Regards,
Maurice.

[1] http://www.gnu.org/software/gettext/manual/gettext.html#Overview
[2] http://svn.gnome.org/viewvc/planner/trunk/installer/languages/dutch.nsh?view=markup
[3] http://www.scratchpaper.com/

-- 
Maurice van der Pot

Gentoo Linux Developer   [email protected]    http://www.gentoo.org
Gnome Planner Developer  griffon26-bCGDfOjggl9Wk0Htik3J/[email protected]  http://live.gnome.org/Planner

_______________________________________________
Planner-dev-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/planner-dev-list
signature.asc (application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)

iEYEARECAAYFAklbZ1UACgkQMGnpIbeahxy3GQCfUWuShsEExm/5ysSF4UxMN58l
RcQAnialNIakxGMEN8UcBalJZ8vbc/ZA
=kVl6
-----END PGP SIGNATURE-----