Wednesday, February 11, 2015

uDig 1.5.0.RC1 Released

The uDig community is pleased to release uDig 1.5.0.RC1. 

Release Details

New Features

This release supports a couple new features:
  • The web view down points to a GitHub page (rather than a wiki page). Thanks to Frank for this work.
  • The style editor now supports arrows (as shown in the above map). Thanks to Emily and Refractions for this work.
  • Packages have been changed to org.locationtech.udig allowing SDK developers to migrate at this time (see below).


Internally the package structure and extensions have changed from net.refractions.udig to org.locationtech.udig. This blog post describes how to setup a development environment and update your plugin accordingly.

Target Platform and Environment

For instructions on using the project straight from GitHub (and building from Eclipse or Maven) see the project README.
We also provide a uDig 1.5.0.RC1 SDK as a stand-alone target platform:
1. Download the SDK
2. Unzip the SDK into a udig-sdk folder.
3. Open up Windows > Preferences and navigate to the Target Platform page
4. Set the target platform to the location of your udig-sdk folder. This will take a few moments while the folder contents are scanned.
As a standalone target platform you can develop uDig with a recent version of Eclipse (uDig no longer depends on your development environment when running). The target platform also includes the JAI and ImageIO bundles which previously were installed as JRE Extensions.
Thanks to Frank for these ease-of-use improvements for uDig developers.

Dependency and Extension Point Migration

At a high-level your plugins must be updated to use the org.locationtech.udig packages and extensions. This can be accomplished with a search and replace, but we will take the time to point out strategies for updating a few specific files.
You can turn off eclipse automatic build when performing these changes to save time.


Required Bundles (Require-Bundle) and imported Packages (Import-Package) in MANIFEST.MF files should reflect the namespace schange as well. Its a simple search and replace within Eclipse (Search -> File...):
Click Replace... to change to new namespace:

Extension Points

Extension definitions based on uDig Extension Points have to be updated. Search for net.refractions.udig in your plugin.xml and feature.xml files and replace the string with org.locationtech.udig

Source Code Migration

With the build environment fixed up we can now move on to updating your source code.
You can turn on eclipse automatic build now, a lot of compile errors are expected after re-compilation against the new udig-sdk target-platform.
This time we can perform the same search and replace on "*.java" files. This should fix the vast majority of problems (as it updates both imports and any extension point references you happened to make use of in your Java code).
If any package import errors remain, click with right mouse on the project and hit Source and Organize Imports.
The uDig 1.5.0.RC1 is built using GeoTools 11.2. The GeoTools project provides an upgrade guide for those using a prior version of the library.

Looking Ahead

If you have any problems with the current udig-sdk or like to ask something we didn't addressed in this post feel free to contact us:
The 2.0.0 Release expects no further API change, its only focus is the transition to Eclipse Luna (a branch is available for developers here).

Saturday, October 5, 2013

Easier collaboration to internationalize UDIG

Easier collaboration to internationalize UDIG

During the FOSS4G conference Andrea Antonello and myself we'd the chance to improve Internationalization workflows for users and developers. It was a goal to migrate all User Interface (UI) labels and messages to Transifex translation platform.


In UDIG several UI labels, dialog titles, and messages are externalized from the core Java code and are stored in properties (*.properties) files. Each file has keys on the left to access messages. The message text is separated from the key by an equal sign, e.g.:

OpenFileDialog.dialogTitle = Open File Dialog 

In the origin file, which is named the messages for all UI elements are stored in English. To translate UI elements its only required to have a new message properties files for a specific language, e.g. for German translations. For more details about Java internals have a look at the Java properties files tutorial.

About Transifex

Transifex provides a platform for translation teams to add, modify, and review text strings. Its possible to set up resources in a way that changes in a public accessible Source Code Repository can be pulled. In addition to this translated properties files can be synchronized back into a working copy with a Python based client tool. A client executable for Windows environments is also available (Python isn't required). However, if you don't want to install a tool you can use Transifex' REST API to achieve the same results.

A neat feature is the translation memory for each project. Translators can add words or phrases and can comment the translations. The web front-end looks like this, where you can see suggestions from already translated strings and underlined words already defined in translation memory.

Current State

Transifex project 

After half an hour sed coding with Andrea a project has been created and configured at Transifex for all UI elements of the current code base. We identified two different type of properties files, and For all bundles we found 110 resources and pushed these and its already available translations:

To join a Translation Team you have to create a Transifex account or use your Social Account such as Twitter, Facebook, Google+ or even LinkedIn. Go to the main page and choose LOG IN top right.

Origin Resources will be synchronized in a daily manner from our Github repository to keep up-to-date with added, changed or even deleted text strings for UI elements.

Transifex client tool configuration

The client tool needs a configuration on client side. Its a simple text file which should be stored in a .tx folder of your working copy. Its name is config and contains configurations for each resource - where to find it in the workspace and how the resource is accessible from Transifex (project slug and resource slug).

An initial configuration is available right here.

If you're interested to contribute feel free to join a Translation Team. Happy Translating!!