https://wiki.zimbra.com/api.php?action=feedcontributions&user=Portiaewaltgg&feedformat=atomZimbra :: Tech Center - User contributions [en]2024-03-28T10:33:01ZUser contributionsMediaWiki 1.39.0https://wiki.zimbra.com/index.php?title=Open_Source_Mobile_Calendar_and_Contact_Synchronization&diff=39753Open Source Mobile Calendar and Contact Synchronization2012-07-02T06:11:56Z<p>Portiaewaltgg: </p>
<hr />
<div>{{Unsupported}}<br />
<br />
Method to provide mobile calendar and contact synchronization<br />
<br />
With the great work from the forum user Wolfroma - a Zimbra/Funambol connector surfaced to allow the synchronization of calendar and contacts between Zimbra user accounts and their mobile devices.<br />
<br />
The connector is stable but feedback reveals some minor incompletion with re-occurring events not syncing.<br />
<br />
At present the most documentation is available directly on the [http://zimbrafunambol.wiki.sourceforge.net/installation-guide Sourceforge wiki page] (also where you can download the Funambol Zimbra connector).<br />
<br />
<br />
=Installation Guide=<br />
<br />
Installation contains fifteen steps. We assume you have your Zimbra setup and running standalone, and wish to add Funambol to the setup. The <span class="plainlinks">[http://www.great-quotes.com/funny_quotes.htm<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">fun quotes</span>] system running the Funamlbol Server requires Java to been installed as a dependent before starting this guide.<br />
<br />
* 1. [http://funambol.com/opensource/downloads.php Download] the Funambol Server for your OS, the instructions in this article are current as of v9.0.0. The newer versions of the server software are now more modular and there is no longer different editions of the server software. You can the source or binary version, but the binary is much easier to install and is used for this guide.<br />
<br />
* 2. Install the Funambol Server by running as root,<br />
sh funambol-9.0.0.bin<br />
The binary script will start to install and asks a few questions, agree to the license terms (or not), install to default directory (/opt) and do not start the server (just yet.)<br />
N.B.- for the duration of this article, the directory where you install the funambol bundle will be referred to as <FUNAMBOL>.<br />
<br />
* 3. Download the latest Funambol - Zimbra Connector version from this at time of writing was 0.6.02. The connectors are also listed further down the page of the [http://funambol.com/opensource/downloads.php Funambol Link]<br />
<br />
* 4. The Funambol - Zimbra Connector name will download as a zip and needs to be extracted to a folder. This folder contains the module to add to Funambol Server<br />
<br />
* 5. In this folder go into /output and copy everything to ''<FUNAMBOL>/ds-server/modules''. Make sure the ZimbraConnector.s4j is included in the copy.<br />
For the Funambol - Zimbra Connector you should create a ZimbraConnector.xml configuration file in ''<FUNAMBOL>/config/connector/''.<br><br />
N.B.: You have to create this directory if it doesn't exist.<br />
<br />
Example of this file: ''ZimbraConnector.xml''<br />
<br />
<java version="1.5.0" class="java.beans.XMLDecoder"><br />
<object class="ru.korusconsulting.connector.config.ConnectorConfig"><br />
<void property="dataSource"><br />
<string>jdbc/fnblds</string> <!--The funambol datasource--><br />
</void><br />
</object><br />
</java><br />
<br />
* 6. Edit the install.properties file in the <FUNAMBOL>/ds-server directory and find the line (usually the last line) beginning: <br />
modules-to-install=<br />
Append "ZimbraConnector", the result should look similar to the following :<br />
<br />
modules-to-install=content-provider-8.7.0,email-connector-8.7.0,foundation-8.7.0,phones-support-8.7.0,webdemo-8.7.0,ZimbraConnector<br />
<br />
* 7. Start the Funambol server and install the module by running<br />
./<FUNAMBOL>/bin/funambol start<br />
<br />
./<FUNAMBOL>/bin/funambol-server start<br />
<br />
./<FUNAMBOL>/bin/install-modules<br />
<br />
You will get prompts asking if you want to create databases, just select ''Yes'' to all of them. You might also want to check at this point that Funambol is setup to start on reboots either as a service or some sort of init script.<br />
- copy the startup script into init.d<br />
cp /opt/Funambol/bin/funambol /etc/init.d/funambol<br />
- Open the script in a text editor<br />
vim /etc/init.d/funambol<br />
change this: <br />
FUNAMBOL_HOME=`(cd .. ; pwd)`<br />
to this: <br />
FUNAMBOL_HOME=`(cd /opt/Funambol ; pwd)`<br />
<br />
Run the command for your distro to automatically start the script, i.e. for Debian/Ubuntu based systems:<br />
update-rc.d -f funambol defaults<br />
For Red Hat/Fedora based systems:<br />
chkconfig --add funambol<br />
<br />
* 8. Now the Zimbra connector is ready to use, but it is not configured yet. To configure we need to run the Funambol Administration Tool using<br />
./<FUNAMBOL>/admin/bin/funamboladmin<br />
Note that this a client program that requires a GUI. If you don't have X installed on your server, you can [https://www.forge.funambol.org/download/#server Download the GUI client] on its own. The package is under "Other Funamble Server Software"<br />
Once started go to ''File'' -> ''Login''. You will likely need to change the ''Hostname/IP'' but the other settings can all be kept as default.<br />
<br />
* 9. Remove follow items from the ''FunambolFoundationConnector'' , under ''<hostname>'' , ''Modules'' , ''foundation'' (note that as of Funamboladmin 10.0 doubleclicking on "foundation" will not expand the node, you must click the "expand/collapse" icon).<br />
PIM Calendar SyncSource -- cal; event; scal; stask; task<br />
<br />
PIM Contact SyncSource -- card; scard<br />
<br />
* 10. Now you should add new SyncSources to FunambolZimbraConnector, under ''<hostname>'' , ''Modules'' , ''zimbra''<br />
You should try using https for the Zimbra URL's first, but if you run into problems try using http and see if this helps. If your hosting the connector on the same server as Zimbra, entering the hostname as ''localhost'' should help keep things <span class="plainlinks">[http://www.smartstun.com/ <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">stun gun</span>] secure. Also the port can be left out unless you have customized Zimbra to have special HTTP ports.<br />
<br />
First of all click on FunambolZimbraConnector, then right click on the "CalendarSyncSource" and select "Add SyncSource".<br />
Enter the following details - Adding new SyncSource items for cal, event, scal, stask and task.<br />
<br />
Source URI = cal,event,scal,stask,task<br />
Name = cal,event,scal,stask,task<br />
Zimbra URL = https://<hostname>:port/service/soap/<br />
<br />
Now right ContactSyncSource, and select "Add SyncSource".<br />
Enter the following details - Adding new SyncSource items for both card and scard.<br />
[http://megaupl0ad.com/скачать-фотошоп-бесплатно-на-русском/ скачать фотошоп бесплатно]<br />
<br />
Source URI = card, scard <br />
Name = card, scard<br />
Zimbra URL = https://<hostname>:port/service/soap/<br />
<br />
Then right click on the "GALSyncSource" and select "Add SyncSource".<br />
Enter the following details - Adding a new SyncSource item for zimbraGALContacts.<br />
<br />
Source URI = zimbraGalContacts<br />
Name = zimbraGalContacts<br />
Zimbra URL = https://<hostname>:port/service/soap/<br />
<br />
* 11. Configuration of all sync sources should resemble the picture below:<br />
<br />
[[Image:funambol_snapshot.jpg]]<br />
<br />
* 12. The article instructions leave a correctly configured Funambol Zimbra connector.<br />
On the phone side simply add a new synchronization profile if you phone supports SyncML by default.<br />
The server setting should be the funambol URI which should be in the format http://<hostname>:8080/funambol/ds<br />
The server needs to be publicly accessible from the Internet, if you running behind a firewall make sure that you have NAT'd port 8080 to your Funambol server<br />
<br />
{{Article_Footer|unknown|3/4/2008}}<br />
<br />
[[Category: Mobile]]</div>Portiaewaltgghttps://wiki.zimbra.com/index.php?title=Translations&diff=39752Translations2012-07-02T05:41:58Z<p>Portiaewaltgg: </p>
<hr />
<div>[http://www.webtechcs.com/mammuthanull/mammuthanull.htm Language and Translation Overview] <br />
<br />
Below you will find information on how to create your own languages for Zimbra Collaboration Suite (ZCS) Open Source and Network Edition. <br />
<br />
Note: there are many officially supported by Zimbra which already ship with ZCS. You can find out more about these languages at '''http://www.zimbra.com/products/languages.html''' <br />
<br />
== Where to Get Translations ==<br />
<br />
'''OFFICIAL ZIMBRA TRANSLATIONS''' ship in ZCS Open Source and Network Edition. These are listed at: '''http://www.zimbra.com/products/languages.html'''<br />
<br />
'''COMMUNITY TRANSLATIONS''' do not ship with ZCS. These 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). Also, anyone in the community is allowed to translate ZCS into a language of their choice and check the files into source control.<br />
<br />
SF.net PROJECT PAGE: [http://sourceforge.net/svn/?group_id=182103 Zimbra Xtras SVN]. <br />
<br />
SF.net LANGUAGE FILES: [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/ Grouped by language]<br />
<br />
COMMUNITY LANGUAGE STATUS PAGE: http://zimbra-xtras.sourceforge.net/l10n-status.html<br />
<br />
Each language is listed with contributors and a relative percent complete for each language property file (see below for an explanation of property files).<br />
<br />
== What Localizations Ship with ZCS? ==<br />
Only the 15+ translations officially certified by Zimbra are bundled as part of a public releases of the Zimbra Collaboration Suite Open Source and Network Edition.<br />
<br />
You can find out more about these languages at http://www.zimbra.com/products/languages.html<br />
<br />
== What if I Find an Error or Misspelling? ==<br />
<br />
For Community translation please use the Forums first [http://www.zimbra.com/forums/ Zimbra Forums] where the Community can help. <br />
<br />
If you verify a spelling problem with an Official Zimbra translation that ships with ZCS please file a bug with a Localization component; likewise 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 with an Internationalization component.<br />
<br />
'''http://bugzilla.zimbra.com/'''<br />
<br />
'''Note: The Zimbra Support team is not able to answer localization questions!'''<br />
<br />
== More About the Zimbra Xtras Language Project and Contributing==<br />
<br />
The Zimbra Community is actively involved in the translation process. If you're interested in working on a translation, join the [http://www.zimbra.com/forums/ Zimbra Forums] and discuss your interests with others in the Community [http://www.zimbra.com/forums/forumdisplay.php?f=16 here].<br />
<br />
Remember, anyone can download the localization files but only official contributors and moderators can post new changes!<br />
<br />
== How Do I Get Signed Up to Contribute? ==<br />
All who work on translations need to fill in and sign a [http://www.zimbra.com/community/contribute.html contribution agreement]. It must be either faxed to +1-408-349-2400 or scanned and emailed to contributions@zimbra.com. [http://www.profischnell.com Übersetzung] [http://www.profi-fachuebersetzungen.de Übersetzer] [http://www.profi-fachuebersetzung.de Übersetzung]<br />
<br />
For more about the language translation process see [[Translation and Moderation]].<br />
<br />
== How Does the Zimbra Xtras Project Work? ==<br />
The Zimbra Translations directory contains the translated files as well as tools that are helpful to translators and users of the data files.<br />
<br />
The Zimbra Xtras translations sub-project has the following structure:<br />
<br />
<pre><br />
trunk/ZimbraTranslations/<br />
data/<br />
{language}/ -- Language name + language code (e.g. English_en)<br />
keys/<br />
messages/<br />
docs/<br />
src/<br />
build.xml<br />
</pre><br />
<br />
The U.S. English message files are the default files used by the Zimbra product and can be found at the following location:<br />
<br />
<pre><br />
trunk/ZimbraTranslations/data/English_en/messages/<br />
</pre><br />
<br />
'''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.<br />
<br />
<br />
== What Do All the Message Files Mean? ==<br />
<br />
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.<br />
<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ I18nMsg.properties]<br />
*: Internationalization messages such as names of months, date and time formats, etc.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ AjxMsg.properties]<br />
*: Messages used by the ajax toolkit.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ ZMsg.properties]<br />
*: Common messages such as server error messages, etc.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ ZaMsg.properties]<br />
*: Messages used by the Zimbra Admin web client.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ ZmMsg.properties]<br />
*: Messages used by the Zimbra End User web client.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ ZhMsg.properties]<br />
*: Messages used by the Zimbra End User basic web client.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/messages/ ZsMsg.properties]<br />
*: 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.)<br />
<br />
=== Shortcut Keys Files ===<br />
<br />
The Zimbra Collaboration Suite defines shortcut keys in standard<br />
Java properties files. These files contain text descriptions for<br />
operation groups as well as individual operations within those groups.<br />
Like message files, these Java properties files are combined and <br />
converted to native JavaScript for the client code at run-time.<br />
<br />
It is possible to change the key bindings per language as well as<br />
translate the descriptions found within the shortcut keys files.<br />
Usually, only the descriptions will be translated. However, if you<br />
translate the shortcut key bindings, care should be taken that<br />
they are unique and do not conflict with other shortcuts.<br />
<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/keys/ AjxKeys.properties]<br />
*: Shortcut keys used in the ajax toolkit.<br />
* [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/English_en/keys/ ZmKeys.properties]<br />
*: Shortcut keys used in the Zimbra End User web client.<br />
<br />
=== A Note About Messages ===<br />
<br />
A translation string can be one of the following:<br />
<br />
* literal text, or<br />
* a string with replacement parameters<br />
<br />
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).<br />
<br />
Strings with replacement parameters are formatted according to the the Java [http://java.sun.com/j2se/1.4.2/docs/api/java/text/MessageFormat.html MessageFormat] class. Complete instructions for the use of MessageFormat strings can be found in the JavaDoc but here are a few examples:<br />
<br />
{| border=1 cellpadding=3 cellspacing=0<br />
|- valign=top<br />
! bgcolor=silver rowspan=2 | Message<br />
! bgcolor=silver colspan=2 | Parameters<br />
! bgcolor=silver rowspan=2 | Result<br />
|-<br />
! bgcolor=silver | 0<br />
! bgcolor=silver | 1<br />
|-<br />
| Hello, {0}!<br />
| align=center | "Andy"<br />
|<br />
| Hello, Andy!<br />
|-<br />
| valign=top | You last logged in on {0,date,full} at {0,time}.<br />
| align=center style='white-space:nowrap' | new Date<br />
|<br />
| You last logged in on Friday, December 7, 2007 at 10:52:51 AM.<br />
|-<br />
| rowspan=3 valign=top | There are {0,number,integer} file(s) in directory {1}.<br />
| align=center | 0<br />
| align=center | "/tmp"<br />
| There are 0 file(s) in directory /tmp.<br />
|-<br />
| align=center | 1<br />
| align=center | "/tmp"<br />
| There are 1 file(s) in directory /tmp.<br />
|-<br />
| align=center | 42<br />
| align=center | "/tmp"<br />
| There are 42 file(s) in directory /tmp.<br />
|-<br />
| rowspan=3 valign=top | There {0,choice,0#are {0} files|1#is {0} file|2#are {0} files} in directory {1}.<br />
| align=center | 0<br />
| align=center | "/tmp"<br />
| There are 0 files in directory /tmp.<br />
|-<br />
| align=center | 1<br />
| align=center | "/tmp"<br />
| There is 1 file in directory /tmp.<br />
|-<br />
| align=center | 42<br />
| align=center | "/tmp"<br />
| There are 42 files in directory /tmp.<br />
|}<br />
<br />
'''Note:'''<br />
In order to put a literal curly-brace in the message, it must be escaped within single-quotes. For example:<br />
<br />
{| border=1 cellpadding=3 cellspacing=0<br />
|-<br />
! bgcolor=silver | Message<br />
! bgcolor=silver | Parameter 0<br />
! bgcolor=silver | Result<br />
|-<br />
| The value of '{0}' is {0}.<br />
| align=center | "Andy"<br />
| The value of {0} is Andy.<br />
|}<br />
<br />
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 shows correct and incorrect uses of each type of message:<br />
<br />
{| border=1 cellpadding=3 cellspacing=0<br />
|-<br />
! bgcolor=silver | Message<br />
! bgcolor=silver | Parameter 0<br />
! bgcolor=silver | Result<br />
! bgcolor=silver | Correct?<br />
|-<br />
| Don't get mad.<br />
|<br />
| Don't get mad.<br />
| align=center style='color:green' | '''Yes'''<br />
|-<br />
| <nowiki>Don''t get mad.</nowiki><br />
|<br />
| <nowiki>Don''t get mad.</nowiki><br />
| align=center style='color:red' | '''NO'''<br />
|-<br />
| <nowiki>Don''t get mad, {0}.</nowiki><br />
| align=center | "Andy"<br />
| Don't get mad, Andy.<br />
| align=center style='color:green' | '''Yes'''<br />
|-<br />
| Don't get mad, {0}.<br />
| align=center | "Andy"<br />
| Dont get mad, {0}.<br />
| align=center style='color:red' | '''NO'''<br />
|}<br />
<br />
== Installing Translations in ZCS Server ==<br />
<br />
If you want to load a translation on a test (or live) ZCS deployment, simply download the files from [http://zimbra-xtras.svn.sourceforge.net/viewvc/zimbra-xtras/trunk/ZimbraTranslations/data/ source control] to your local machine and then follow the installation directions below. <br />
<br />
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).<br />
<br />
=== ZCS 4.x (Tomcat) ===<br />
<br />
# Copy translated properties files to deployment server<br />
#: <tt>% cp *.properties /opt/zimbra/tomcat/webapps/zimbra/WEB-INF/classes/msgs/</tt> <br />
#: <tt>% cp *.properties /opt/zimbra/tomcat/webapps/zimbraAdmin/WEB-INF/classes/msgs/</tt> <br />
#: <tt>% cp ZsMsg*.properties /opt/zimbra/conf/msgs/</tt><br />
# Restart Tomcat<br />
#: <tt>% su - zimbra</tt><br />
#: <tt>% tomcat restart</tt><br />
# Set the language preference in your browser and reload<br />
<br />
=== ZCS 5.x (Jetty) ===<br />
<br />
# Copy translated properties files to deployment server<br />
#: <tt>% cp *Msg.properties /opt/zimbra/jetty/webapps/zimbra/WEB-INF/classes/messages/</tt> <br />
#: <tt>% cp *Msg.properties /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/classes/messages/</tt> <br />
#: <tt>% cp *Keys.properties /opt/zimbra/jetty/webapps/zimbra/WEB-INF/classes/keys/</tt> <br />
#: <tt>% cp *Keys.properties /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/classes/keys/</tt> <br />
#: <tt>% cp ZsMsg*.properties /opt/zimbra/conf/msgs/</tt><br />
# Restart Jetty<br />
#: <tt>% su - zimbra</tt><br />
#: <tt>% jetty stop</tt><br />
#: <tt>% jetty start</tt><br />
# Set the language preference in your browser and reload<br />
<br />
== Convert All Translation Encoding to ASCII ==<br />
<br />
<br />
'''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.'''<br />
<br />
<br />
For example, you can translate the property files in your nativing encoding such as [http://en.wikipedia.org/wiki/Shift_JIS Shift-JIS format] for Japanese, but once completed you then need to convert the property files from Shift-JIS to their ASCII equivalents.<br />
<br />
<br />
You can use the <tt>native2ascii</tt> tool that is shipped with the JDK to convert the files (these ship with the server). <br />
<br />
For example:<br />
<br />
% native2ascii -encoding {type} {source file} {destination file}<br />
<br />
% native2ascii -encoding UTF-8 ZmMsg_ja.properties.utf8 ZmMsg_ja.properties<br />
<br />
To convert back to UTF-8 for viewing or editing in Notepad or equivalent use:<br />
<br />
% native2ascii -reverse -encoding UTF-8 ZmMsg_ja.properties ZmMsg_ja.properties.utf8<br />
<br />
<br />
== Updating translations ==<br />
<br />
.properties files are hard to update, i.e. reuse old translations, add new ones and take account of old strings which might have changed. One possible way is to convert them to Gettext format (.po files) which have a good support for updating. This is described in [[#Working with translations in Gettext format]].<br />
<br />
<br />
== Working with translations in Gettext format ==<br />
<br />
This section describes how to convert .properties files into .po files, how to translate them, how to update translation from an old version and how to turn the .po files back to .properties. The means of converting are provided by [http://translate.sourceforge.net/wiki/toolkit/index Translate Toolkit].<br />
<br />
Detailed documentation can be found at http://translate.sourceforge.net/wiki/toolkit/prop2po . This section will concentrate on applying this in the Zimbra translation workflow.<br />
[http://megaupl0ad.com/%d1%81%d0%ba%d0%b0%d1%87%d0%b0%d1%82%d1%8c-%d1%84%d0%be%d1%82%d0%be%d1%88%d0%be%d0%bf-%d0%b1%d0%b5%d1%81%d0%bf%d0%bb%d0%b0%d1%82%d0%bd%d0%be-%d0%bd%d0%b0-%d1%80%d1%83%d1%81%d1%81%d0%ba%d0%be%d0%bc/ Скачать фотошоп бесплатно]<br />
<br />
=== About the Gettext framework ===<br />
<br />
[http://www.gnu.org/software/gettext/manual/gettext.html Gettext] framework uses the .po file format. .po files contain both original (English) strings and corresponding strings in target language. That way, the meaning of once translated string will never change, except that it may not be used in a later version of the translated software.<br />
<br />
:Compare this to .properties files, which use ''name=value'' pairs, where the ''name'' identifies the string. The problem with this emerges when updating strings. There's no easy way to tell that the original ''name=value'' in the old version has a different ''value'' for the same ''name'' in the new version.<br />
<br />
Po files contain header with information about the translator and format of the .po file. We won't need to use the header in our workflow in any way, so you can safely ignore complaints from your translation tool about headers containing default values.<br />
<br />
Plain .po files without translations are called .pot files (templates). Format is the same as in .po files.<br />
<br />
The benefit of Gettext is that it's widespread in the open source world (thus it's likely that translators are familiar with it) and there are quite a few tools supporting it.<br />
<br />
<br />
=== Converting .properties to .po ===<br />
<br />
First, we'll create an empty template (english.pot) from the English .properties file (english.properties):<br />
<pre><br />
prop2po -P english.properties english.pot<br />
</pre><br />
<br />
You can safely rename english.pot to lang.po and start translating it. Some tools recognize templates by the .pot extension but if you don't use such tool, you can create a .po file right away.<br />
<br />
<br />
=== Translating .po files ===<br />
<br />
Editing .po files is described in detail in the [http://www.gnu.org/software/gettext/manual/gettext.html#Editing Gettext manual].<br />
<br />
.po files are plain text files in a special format, so you may use any text editor to edit them. However if you do, there are two things to pay attention to. First, you will need to specify the encoding used in the header (e.g. "Content-Type: text/plain; charset=UTF-8\n"). Second, you ought to run a check once in a while to see if you didn't break the format:<br />
<pre><br />
msgfmt -c -v lang.po > /dev/null<br />
</pre><br />
<br />
A simple, lightweight and multiplatform GUI editor for .po files is [http://www.poedit.net/ Poedit] or [http://virtaal.org Virtaal].<br />
<br />
=== Reusing old translations ===<br />
<br />
To create a translation of new version while reusing the unchanged strings from the old version, run:<br />
<pre><br />
prop2po --duplicates=msgctxt -t english.properties lang-old.properties lang.po<br />
</pre><br />
where english.properties is the english .properties file (current version), lang-old.properties is the old translation in .properties format and it will create lang.po, which is the .po file for the new version with the old strings already translated! What remains to do is translate the new and changed ones. There will be <span class="plainlinks">[http://www.forfait-sans-engagement.org<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">forfait sans engagement</span>] even so called "fuzzy" strings - guesses how the string might be translated, which might save you some typing on your or computer.<br />
<br />
:Tip: If you have your old translation in .po format, you can use [http://www.gnu.org/software/gettext/manual/gettext.html#Updating msgmerge] to make the old <span class="plainlinks"> translation a base for your new version.<br />
<br />
=== Converting .po back to .properties ===<br />
<br />
The last step is to convert your translated .po file to a .properties file in your language.<br />
<pre><br />
po2prop -t english.properties lang.po lang.properties<br />
</pre><br />
This takes english.properties, which is the original English .properties file (current version) and lang.po, which is your translated .po file as input and produces lang.properties, which is the Zimbra translation for your language.<br />
<br />
:Note: The created .properties file is now in ASCII (Unicode characters are represented by escape sequences) just like Zimbra requires them. So there's no need to run [[#Convert All Translation Encoding to ASCII|native2ascii]] on them!<br />
[http://www.xtspy.com/ Cell Phone Spy]<br />
[http://www.google-seo-top.com link building services]<br />
Once you're confident with this workflow, remember to look up more tips in the Translate Toolkit's [http://translate.sourceforge.net/wiki/toolkit/prop2po prop2po] page. Other useful tools include:<br />
[http://translate.sourceforge.net/wiki/toolkit/pofilter pofilter] - for finding translation errors, [http://translate.sourceforge.net/wiki/toolkit/pogrep pogrep] - searching translations and [http://translate.sourceforge.net/wiki/toolkit/poterminology poterminology] - for building a translation glossary. <br />
<br />
== Getting New Translations for Spell Checker ==<br />
ZCS uses the open source [http://aspell.net/ 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 [http://megaupl0ad.com/скачать-фотошоп-бесплатно-на-русском/ скачать фотошоп]).<br />
To see what languages are available please review the [ftp://ftp.gnu.org/gnu/aspell/dict/0index.html Official Aspell Dictionary] page on gnu.org.<br />
To learn how to add new dictionaries to ZCS please see [[Adding new dictionaries to aspell]]<br />
<br />
'''Please note that Zimbra does not officially support these dictionaries. They are provided by the open source community.'''<br />
<br />
{{Article_Footer|Zimbra Collaboration Suite 5.0|3/7/2006}}<br />
<br />
[[Category:Translations]]</div>Portiaewaltgg