Languages not working for you on Solaris?
Andre Dalle has offered some very valuable advice:
There is no problem with either PHP4/gettext or the SquirrelMail codebase. I've gotten translations working under Solaris 2.7 w/SQMail 1.0.6 and 1.1.2.
Solaris gettext simply does not seem to like GNU/gettext genereated .mo files. If it can't find a match it seems to simply return the given string unchanged with no error message, which is why it always returns English.
The easy solution is to regenereate the .mo files from the provided .po files. Try this before resigning to using the PHP-based gettext that's provided in SquirrelMail 1.1.1+.
This currently does not work for the Taiwan/big5, Korean, or Icelandic translations. msgfmt blows up on the Taiwan and Icelandic .po files, it doesn't like the syntax in those files. The Korean returns no errors but doesn't work either so I can't guess whats wrong there.
Here is some sample shell code to fix up your .mo files. This assumes that /apache/htdocs/squirrelmail is your SquirrelMail directory. The is, ko, and tw languages were omitted since they didn't work well. Maybe they will work in future versions.
for dir in ca cs da de es fi fr hr hu it nl no no_NO_ny pl pt_BR ru sr sv
/usr/bin/mv -f squirrelmail.mo squirrelmail_GNU.mo
/usr/bin/msgfmt -v -o squirrelmail.mo squirrelmail.po
echo "done $dir"
Make sure you actually have the Solaris language support packages installed. To add support for e.g. the lovely Dutch language, make sure the Sun package SUNWweuos (Western Europe OS Support) is installed. Especially on hardened/minimized systems these might be missing.
Regards, Paul Boven.
Other language support packages are:
- SUNWceuos -> Central Europe OS Support
- SUNWeeuos -> Eastern Europe OS Support
- SUNWneuos -> Northern Europe OS Support
- SUNWweuos -> Western Europe OS Support
Watch for dependancies!
For Solaris 9 these are on Software CD 1
To install do:
pkgadd -d /cdrom/sol_9_1202_sparc/s0/Solaris_9/Product
With SquirrelMail 1.4.3a something changed in the SquirrelMail internationalization stuff, apparently because of a change in the Linux glibc. Solaris systems don't have a glibc and the change breaks i18n for Solaris (and quite a few other OS-es).
The fix (see also the Wiki entry on 'Supporting multiple languages') is to go into functions/i18n.php and comment out each line that looks like:
$languages['nl_NL']['LOCALE'] = 'nl_NL.ISO8859-1';
You have to do this for every locale you want to support.
- P.S. This change was made not for glibc, but for FreeBSD systems. FreeBSD requires full locale name or some translations revert to us-ascii charset. glibc systems work with short and long locale names. GNU gettext libraries revert from full locale name (xx_XX.charset) to short ones (xx_XX and xx). Solaris gettext libraries use only directory that is set in setlocale call. You can create symbolic links from xx_XX to xx_XX.charset directories or you can recompile php against GNU gettext libraries.
You should also check NLSPATH environment setting. If you want to solve your problem on solaris, please contact squirrelmail i18n mailing list and work with developers in order to debug and solve your problem.