Translations

Revision as of 19:25, 7 December 2007 by Andyc (talk | contribs) (Note on when to escape single-quote in messages.)

Language and Translation Overview

Below you will find information on the languages available for Zimbra Collaboration Suite (ZCS). The translations are provided by members of our Community and Zimbra; they can be freely installed with your Zimbra deployment.

List of language localizations and status: http://zimbra-xtras.sourceforge.net/l10n-status.html

Each language is listed with contributors (if you see "Zimbra Team" it's an official translation) and a relative percent complete for each language property file (see below for an explanation of property files).

Where to Get Translations

All accepted translated files are available in source control on Sourceforge.net. The language files can be freely checked out by anyone and installed on your Zimbra server (see below for directions on installation).

PROJECT PAGE: Zimbra Xtras SVN.

LANGUAGE FILES: Grouped by language

What Localizations Ship with ZCS?

Only the translations officially certified by Zimbra will be bundled as part of a public releases of the Zimbra Collaboration Suite. Only English (en) is officially certified, thus all additional localizations of ZCS are available only via Sourceforge (or the Zimbra Gallery) for download and installation.

What if I Find an Error or Misspelling?

At this time Zimbra does not officially support the translations supplied by the Community (though we do contribute to help complete the translations). The best way to get questions answered is to use Zimbra Forums where the Community and Zimbra Team can help. If you have identified a ZCS product internationalization issue (eg a button isn't long enough for non-English strings) then you can always file a bug directly.

The Zimbra Support team does not answer localization questions!

More About the Zimbra Xtras Language Project and Contributing

The Zimbra Community is actively involved in the translation process. If you're interested in working on a translation, join the Zimbra Forums and discuss your interests with others in the Community here.

Remember, anyone can download the localization files but only official contributors and moderators can post new changes!

How Do I Get Signed Up to Contribute?

All who work on translations need to fill in and sign a contribution agreement. It must be either faxed to +1-650-212-0504 or scanned and emailed to contributions@zimbra.com.

For more about the language translation process see Translation and Moderation.

How Does the Zimbra Xtras Project Work?

The Zimbra Translations directory contains the translated files as well as tools that are helpful to translators and users of the data files.

The Zimbra Xtras translations sub-project has the following structure:

trunk/ZimbraTranslations/
  data/
    {language}/   -- Language name + language code (e.g. English_en)
      keys/
      messages/
  docs/
  src/
  build.xml

The U.S. English message files are the default files used by the Zimbra product and can be found at the following location:

trunk/ZimbraTranslations/data/English_en/messages/

Note: The U.S. English files are provided for convenience and should not be modified in SVN. The originals are stored in the Zimbra source repository and are periodically pushed to SVN. All other languages are stored in the Xtras project and can be freely modified by the language moderators.

What Do All the Message Files Mean?

The Zimbra Collaboration Suite uses message catalogs to store translated strings and patterns to localize the product. The files are standard Java properties files which are combined and converted to native JavaScript for the client code at run-time.

  • I18nMsg.properties
    Internationalization messages such as names of months, date and time formats, etc. This file is automatically generated at build-time and does not need to be translated.
  • AjxMsg.properties
    Messages used by the ajax toolkit.
  • ZMsg.properties
    Common messages such as server error messages, etc.
  • ZaMsg.properties
    Messages used by the Zimbra Admin web client.
  • ZmMsg.properties
    Messages used by the Zimbra End User web client.
  • ZhMsg.properties
    Messages used by the Zimbra End User basic web client.
  • ZsMsg.properties
    Messages used by the Zimbra Server when automatically replying to appointment requests for locations and resources. (The language used for the outgoing messages is based on the server's default locale, not the client.)

Shortcut Keys Files

The Zimbra Collaboration Suite defines shortcut keys in standard Java properties files. These files contain text descriptions for operation groups as well as individual operations within those groups. Like message files, these Java properties files are combined and converted to native JavaScript for the client code at run-time.

It is possible to change the key bindings per language as well as translate the descriptions found within the shortcut keys files. Usually, only the descriptions will be translated. However, if you translate the shortcut key bindings, care should be taken that they are unique and do not conflict with other shortcuts.

A Note About Translations

A translation string can be one of the following:

  • literal text, or
  • a string with replacement parameters

In the second case, the application dynamically generates the display message by replacing special markers within the string with the replacement values. These markers are denoted by a number in curly-braces (e.g. {0}, {1}, etc).

Strings with replacement parameters are formatted according to the the Java MessageFormat class. Complete instructions for the use of MessageFormat strings can be found in the JavaDoc but here are a few examples:

Message Parameters Result
0 1
Hello, {0}! "Andy" Hello, Andy!
You last logged in on {0,date,full} at {0,time}. new Date You last logged in on Friday, December 7, 2007 at 10:52:51 AM.
There are {0,number,integer} file(s) in directory {1}. 0 "/tmp" There are 0 file(s) in directory /tmp.
1 "/tmp" There are 1 file(s) in directory /tmp.
42 "/tmp" There are 42 file(s) in directory /tmp.
There {0,choice,0#are {0} files|1#is {0} file|2#are {0} files} in directory {1}. 0 "/tmp" There are 0 files in directory /tmp.
1 "/tmp" There is 1 file in directory /tmp.
42 "/tmp" There are 42 files in directory /tmp.

Note: In order to put a literal curly-brace in the message, it must be escaped within single-quotes. For example:

Message Parameter 0 Result
The value of '{0}' is {0}. "Andy" The value of {0} is Andy.

This means that an apostrophe cannot be used directly in a message string with replacement parameters! In order to include a literal single-quote (or apostrophe), you must use two single-quotes in a row. This is not needed for messages that do not have replacement parameters. The following table correct and incorrect uses of each type of message:

Message Parameter 0 Result Correct?
Don't get mad. Don't get mad. Yes
Don''t get mad. Don''t get mad. NO
Don''t get mad, {0}. "Andy" Don't get mad, Andy. Yes
Don't get mad, {0}. "Andy" Dont get mad, {0}. NO

Installing Translations in ZCS Server

If you want to load a translation on a test (or live) ZCS deployment, simply download the files from source control to your local machine and then follow the installation directions below.

Note- there can be up to 8 language files spanning two directories (messages and keys), be sure to download them all. If there are fewer files in source control it means the localization is not complete (and English will appear in place of the missing file).

ZCS 4.x (Tomcat)

  1. Copy translated properties files to deployment server
    % cp *.properties /opt/zimbra/tomcat/webapps/zimbra/WEB-INF/classes/msgs/
    % cp *.properties /opt/zimbra/tomcat/webapps/zimbraAdmin/WEB-INF/classes/msgs/
    % cp ZsMsg*.properties /opt/zimbra/conf/msgs/
  2. Restart Tomcat
    % su - zimbra
    % tomcat restart
  3. Set the language preference in your browser and reload

ZCS 5.x (Jetty)

  1. Copy translated properties files to deployment server
    % cp *Msg.properties /opt/zimbra/jetty/webapps/zimbra/WEB-INF/classes/messages/
    % cp *Msg.properties /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/classes/messages/
    % cp *Keys.properties /opt/zimbra/jetty/webapps/zimbra/WEB-INF/classes/keys/
    % cp *Keys.properties /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/classes/keys/
    % cp ZsMsg*.properties /opt/zimbra/conf/msgs/
  2. Restart Jetty
    % su - zimbra
    % jetty stop
    % jetty start
  3. Set the language preference in your browser and reload

Convert All Translation Encoding to ASCII

Important: your translated properties files must be encoded in ASCII before they can be loaded on to the Zimbra Server, not in their native encoding.


For example, you can translate the property files in your nativing encoding such as Shift-JIS format for Japanese, but once completed you then need to convert the property files from Shift-JIS to their ASCII equivalents.


You can use the native2ascii tool that is shipped with the JDK to convert the files (these ship with the server).

For example:

 % native2ascii -encoding {type} {source file} {destination file}
 % native2ascii -encoding UTF-8 ZmMsg_ja.properties.utf8 ZmMsg_ja.properties

To convert back to UTF-8 for viewing or editing in Notepad or equivalent use:

 % native2ascii -reverse -encoding UTF-8 ZmMsg_ja.properties ZmMsg_ja.properties.utf8

Getting New Translations for Spell Checker

ZCS uses the open source Aspell dictionary version 0.60.3. Localized dictionaries are freely available for other languages and can be installed into your ZCS deployment (they are not installed by default in ZCS).

To see what languages are available please review the Official Aspell Dictionary page on gnu.org.

To learn how to add new dictionaries to ZCS please see Adding new dictionaries to aspell

Please note that Zimbra does not officially support these dictionaries. They are provided by the open source community.

Jump to: navigation, search