OmegaT has introduced a very interesting feature, starting with version 2.6.0: The free and open source CAT tool now lets two or more translators work on a project simultaneously and share glossary and translation memories almost in real time, without any external tools.
Version Control through Apache Subversion
The translator collaboration offered by OmegaT is based on the functionality of “version control,” widely used by software developers to maintain control of changes to the code of a program. Several programs can implement version or revision control; two of the most well-known are Subversion and GIT, not surprisingly the ones supported by OmegaT. Anyone who wants to know more about Apache Subversion can read a very complete guide published by O'Reilly Media and offered online for free.
Apache Subversion is a program installed on a server that allows you to host the source code of a program under development. The various participating programmers connect to that server to add their code changes. At the end, Subversion creates a single version by “merging” the various modifications made by the contributors. Similarly, by loading an OmegaT translation project on an SVN server, it is possible to assign it to various translators who can then work on it simultaneously. Some basic terms and concepts: A repository is a place where files are saved; checkout is the creation of a working copy from the repository to the local computer; a commit is the operation of copying changes from the local computer to the repository.
How to Share a Project Using SVN
One must first have an SVN server. There are two options: Either you install SVN on your own server, or you use a hosted service. Googling “free svn hosting” will bring up several sites that offer this service for free. The method presented here relies on the free SVN server (limited to 2 users) offered by ProjectLocker*. Of course, while using an external service you must be aware of the possible implications regarding confidentiality, since you are loading the original document on a server outside of your direct control. Alternatively, to avoid this issue you can set up a private SVN server, for example if you already have an Apache server with the software in question (e.g. VisualSVN). In this case the configuration is slightly different and will be treated in detail in a future article. To start with, we recommend experimenting with ProjectLocker or a similar service.
Once you’ve made the SVN server available, you must also locally install an SVN client, in order to manage the folders on your computer. For Windows we recommend TortoiseSVN, and for Mac we found a few free scripts on the SourceForge website (Subversion Script), which can be downloaded and installed by following the instructions at http://svn-finder.sourceforge.net/screencast-usage.html.
After this brief introduction, let’s now look at the hands-on, step-by-step procedure to share a complete OmegaT project among several translators. There are three logical steps:
- creating the repository on the server;
- importing the OmegaT project into the repository;
- checkout of the OmegaT project.
The first step is the same for all operating systems. The project manager, or whoever among the group of translators is responsible for the management, creates a root folder on the SVN server that will contain all the OmegaT projects to share. This step is performed only once. The second part, however, depends on the operating system and is needed to import each OmegaT project into the main repository. Depending on the SVN client and the operating system, procedures may be different from those shown here. Finally, the project checkout by each translator is handled by OmegaT itself and requires only one click after you open the program.
Creating the Repository
- Create a new repository on ProjectLocker.
- In the Projects tab of ProjectLocker, click New Project.
- Type the name and description of the repository.
- Choose SVN.
- Click on Create Project.
- In the Projects view, click on Click to View.
- In the popup window select the URL that corresponds to Subversion (not Trac), copy it, and paste it into a blank text file (you will need it later).
- Assign users to the repository:
- Click the name of the repository, and add one or more users (created earlier). You can also add a group.
- Click on Manage SVN Permissions (left panel).
- Add group (e.g., Translation).
- Click the name of the group.
- Add one or more users to the group.
- For convenience, create a new folder on your computer, for example /Repositories/, but you can also use an existing folder.
Importing the project (for Mac)
- Select the newly created folder and run the SVN Checkout script from the top right menu.
- Paste the URL noted in step 1.f and click OK.
- Choose the destination path. (A new subfolder called /svn/ is created by default, but you can rename it or you can use an existing folder).
- In the Terminal window that pops up, type, when prompted, the computer admin password, and the ProjectLocker username and password.
- Open OmegaT and create a new project in the /Repositories/svn/ folder (and make sure the project-save.tmx file is there).
- Select the newly created project folder and run the script SVN Add and confirm by clicking on OK.
- Select the parent folder /Repositories/SVN/ and run the script SVN Commit to synchronize the contents of the folder and confirm by clicking on OK.
Importing the Project (Windows)
- Open OmegaT and create a new project in a temporary folder.
- Select the newly created folder, right-click and choose Import... from the context menu added by TortoiseSVN. This command adds the files to the repository folder you created earlier.
- In the popup window, enter the ProjectLocker user name and password. TortoiseSVN remembers them, so they’re only required the first time.
- Paste the URL noted in step 1.f and click OK, leaving the other parameters unchanged. You should add a note in the comments field, to facilitate traceability.
- Warning! Please note that SVN imports all the files in the selected folder, but not the folder itself. If you use a single repository (as suggested in this tutorial), you must manually add the name of the project folder to the URL. For example, if you are working on project number 1, add 2012_0001 to the URL of the main repository, obtaining https://free5.projectlocker.com/main-repo-name/svn/2012_0001
- You can delete the temporary folder, as the project will then be downloaded and managed using OmegaT.
Checkout for the project
At this point, each translator who has been assigned a part of the job needs to start OmegaT, and on the Project menu select Download Team Project... In the popup window choose SVN, type the URL you copied earlier (full project number, i.e. https://free5.projectlocker.com/main-repo-name/svn/2012_0001 as in the example) and specify the local folder where you want to save the project. If authentication is required, enter the user name and password for the SVN server (ProjectLocker in the example).
During the first connection to the SVN server, all files created in the repository are downloaded locally. Warning! Up to version 2.6.1, only the project-save.tmx file, the one that contains the translated elements, is versioned (synchronized). Starting from version 2.6.1_2, the glossary file is also versioned. That means that any changes to other files in the project, such as changes to segmentation or source files, are not automatically detected by OmegaT. However, since the whole project is uploaded on the SVN server, you can always do the checkout and manually synchronize using an SVN client (provided that OmegaT is not active during these operations, in order to avoid conflicts).
During translation, each time you save the project, the project-save.tmx file containing all the changes is synchronized, merging all changes with those of other translators. Setting the auto-save to every few minutes (2 or 3) will ensure frequent synchronization of your work with that of all the others. The same applies to the glossary file.
It is important to emphasize that if the project is not completed in a single session, during the next session it is not necessary to download the project again. You simply open the project already downloaded. OmegaT will detect that it is a team project and will automatically connect to the server. In the event of a connection error, close the project and reopen it.
Compared to the procedure with Dropbox already mentioned in a previous article, using the Team Project feature has some clear advantages. Despite a little complexity in its initial configuration, with Team Project you can organize working groups consisting of more than two translators. Moreover, in the spirit of OmegaT as a project, you only use open source tools (both Apache Subversion and Git are distributed under open source licenses) without relying on commercial software (such as Dropbox). And using the characteristics of the SVN server you can also provide your clients read-only access to the folder containing the target files, thus facilitating the delivery of the project.
It goes without mention that all these benefits are available to users completely for free. A quick comparison with the prices of server-based solutions for commercial competitors should be sufficient to understand the scope and importance of this new development in OmegaT. Anyone wishing to donate to the project can easily do so through PayPal: Donate to OmegaT.
*) ProjectLocker now only offer free servers for 1 single user. A good alternative is Assembla, www.assembla.com.