If you would like to support most if not all languages listing in SquirrelMail 1.4.x under: [ Options -> Display Preferences -> Languages ] then you may need to build some projects from source.
In order to gain use of multi-byte character sets such as unicode and many asian languages (Japanese, Korean, Chinese, etc.) you may need to configure and build your own copies of PHP and an IMAP server from source.
0) The locales for SquirrelMail have been taken out of the main tree. You will need to download a locale (or all locales) as a separate tarball in the download section. To install the locals, there is a script in the "all_locales" tarball called "install" that you can run. It will prompt you for the location of your SquirrelMail and then install locales for SquirrelMail.
1) Install all of the locales you plan to use or offer your users of different languages. (Why not install all of the locales you have available? Sure, it may use more disk space and resources, but it does improve user support.) You should be logged in as root when using these commands:
- Debian 3.0
- dpkg-reconfigure -plow locales
- Install locales and locales-?? RPMs. You can also install the glibc-i18ndata RPM and create locales with the localedef command.
- Refer to [Gentoo Linux Localization Guide, Part 3 Locales].
2) Install your web server. If you use a packaged web server that uses modules, then --with-apxs=/path/to/apxs as an argument for the PHP build is useful.
3) Your pre-packaged PHP may not support Unicode and multi-byte character sets - many distros are shipped with PHP without such support. Before taking steps to configure and compiled your own PHP, you should check to see if your PHP already has support for the three useful options.
When you build your own PHP-4.3.2 (or later) from source, include the options:
--enable-mbstring --enable-mbregex --with-gettext
along with any other options you use with your PHP "configure" before you "make" and then "install."
(Suggested also include this, but not necessary for ML support AFAIK)
- If your Apache install uses apxs with modules
To find out what options your copy of PHP was built to use, you can create a PHP web page that uses the "phpinfo();" function and look to see what options were included.
- Grants your support to read multi-byte charset text (required by Japanese translation)
- Permits searching with multi-byte charset text
- Helps language and locales with display in SquirrelMail
4) I can't speak for other IMAP servers, but here is information for Courier:
Courier supports Unicode and multi-byte charactersets, but many prepackaged versions from distros only enable one or a few languages. If you build PHP with support for multi-byte character sets, but your Courier server does not include support for unicode and other characters sets, you may get errors when users of SquirrelMail try to alter their Langauges to something other than the default.
[ changed under: Options -> Display Preferences -> Languages ]
As a result of not having unicode and multi-byte character set support in Courier, you may need to build support into a new copy from source.
You may not need to build Courier from source. Once you have a PHP with the three special options enabled, you should then test a few languages. If you do not get any errors after selecting Japanese, Chinese, some western European character sets, and others, (and submitting each choice) then you may be able to skip a custom built of and IMAP server.
If you find you must build your own Courier server, you will want to add --enable-unicode to any other config options you choose to use to enable all supported multi-byte unicode charsets that Courier knows about (in src).
By default, enabling the above wll enable all character sets that Courier knows about. Check out the INSTALL file of courier to find out how to limit the languages supported.
5) After all of the above are installed, use of SquirrelMail 1.4.x or later can permit users to select languages for default composition and display of email messages.
ALSO, many of the menu names/items (Compose Addresses Folders Options
Search Help Calendar Fetch Directory) and links available from within a SquirrelMail session are translated! Woot!
- NOTE: I had to set my default locale to "none" for consistent work.
- NOTE: not all plugins and buttons have had their words translated, but most (if not all) core options are translated.
- NOTE: I was not able to find docs on how to do the above, so I have added it here.
Thanks to Jonathan Angliss for suggesting the piece that I was missing: locales for the specific langs I wanted to use other than English.
1. Translation is not working at all.
- Missing system locale. See above comments about it.
- Try starting your webserver.
- Check that the CHARSET and LOCALE values in the functions/i18n.php file match the system locale. Example; if system locale is es_ES.UTF-8 change es_ES.ISO8859-1 to es_ES.UTF-8
1a. Translation in SquirrelMail 1.5.1 and 1.4.4 is not working at all.
2. Translation is working but some strings are not translated.
- Strings belong to third party plugin or translation is not full. You need to update translation or translate third party plugin.
3. Translation is working but instead of some 8bit letters, I see diacritics and regular latin letters.
- You are using FreeBSD. System requires full locale name. Without it system reverts to ASCII. This problem should be fixed in SquirrelMail 1.4.3a and 1.5.1.
4. Translation is working, but all 8bit letters are garbled. They look like from different charset.
- Charsets used in system and SquirrelMail locales does not match. For example. ru_RU locale is set with ISO-8859-5 charset and SquirrelMail uses KOI8-R. You have to make sure that locales match. This problem should be fixed in SquirrelMail 1.4.3a and 1.5.1.
5. Japanese translation is not working. Characters look like from different charset.
- there is bind_textdomain_codeset ("squirrelmail", $languages[$sm_notAlias]['CHARSET'] ); command in functions/i18n.php. If you use SquirrelMail 1.4.2, this command needs to be fixed or disabled.
6. Translation works in 1.5.0 and 1.4.2, but does not work in 1.4.3a.
- i think you are using glibc system that does not ignore hyphens in locale names. squirrrelmail uses locales named like xx_XX.ISO8859-x in order to get them work on FreeBSD. Linux Debian Sarge (glibc 2.3.1) ignores hyphens used in locale name. Mandrake 10 does not do that.
6a. Solaris 9 also won't do i18n with SquirrelMail 1.4.3a for the same reasons, the fix below works for Solaris as well.
- open functions/i18n.php file, locate line with "$languages['xxt_XX']['LOCALE'] = 'xx_XX.ISO8859-x';"
disable that line by putting two slashes in front of it.
//$languages['xx_XX']['LOCALE'] = 'xx_XX.ISO8859-x';
or recompile PHP against GNU gettext libraries and make sure that PHP is not in safe mode.
7. Sometimes Apache or other web servers cache the language files, so try restarting Apache (apachectl configtest and apachectl restart) after installing the new SquirrelMail and locale
8. Debian Sarge:
- on basic installation: apt-get install gettext gettext-base
- dpkg-reconfigure locales (select all languages you need)
- edit /etc/apache2/conf.d/squirrelmail.conf and add line : php_admin_value safe_mode_allowed_env_vars LC_ALL,LANG,LANGUAGE,PHP_
- restart /etc/init.d/apache2 restart
- if it doesn't work run
- dpkg-reconfigure -plow locales
- and restart apache again.
9. Debian Woody
When you install locales package, you see dialog screen that allows to select required locales. it does not matter what you select in that screen during initial installation of locales package. Selection is not saved and you must run dpkg-reconfigure locales command.
10. Ubuntu Dapper Drake
Ubuntu has the UTF-8 locales configured by default. You need to add the charset for your language as well.
Just edit /var/lib/locales/supported.d/local and then add your locale. Example (with the ISO-8859-1 codeset):
For a multi language site:
After that run sudo dpkg-reconfigure locales to update the locales. Also see [the Ubuntu forum].
You need to install glibc-locales:
> swup --install glibc-locales
Edit /etc/locales.conf and uncomment the locales wanted. Then run /usr/sbin/locales-gen:
Generating desired locale(s).
This may take some time.
da_DK UTF-8 ...done
da_DK ISO-8859-1 ...done
Then restart httpd:
> service httpd restart
Shutting down httpd: [ OK ]
Starting httpd: [ OK ]