# OmegaT Team Projects

OmegaT Team projects Team projects

## Version control - introduction

The collaborative translation offered by OmegaT is based on the functionality of version or revision control, widely used by the software community to maintain control of changes to the code of a program and allow unimpeded collaboration within the development team. OmegaT supports two of the popular version control systems (VCS for short), Apache Subversion (often abbreviated SVN, after the command name svn) and Git. The advantages of a VC system for a team of translators can be summarized as follows:

- Several team members can work on the translation project simultaneously without interfering with each other

- They can share common material, like project translation memory and its glossary

- Every three minutes by default, an updated version of data shared is available to the rest of the team

- The system maintains versioning for data shared

- Conflicts - for instance alternative translations of the same segment or glossary entry - can be monitored, resolved and merged

The following terms, to be used in the text below, deserve a short explanation:

- VCS server - i.e. SVN or Git server is the environment where the common material is kept and maintained on the net. The server can exist in the local network but in the majority of cases it will be available on internet, i.e. via URL address. One member of the team, the project administrator, needs to be acquainted with handling the server side, i.e. the job of setting up the environment, importing the OmegaT project, assigning the access rights for the team members, resolving the conflicts, etc.

- VCS client: To interface with the server an SVN or Git client must be installed on computers of "project managers" involved in the OmegaT project. Very popular clients for Windows environment are TortoiseSVN and TortoiseGit. Other operating systems (Linux, OS X) offer similar packages.

- repository: the place where the shared material is saved and maintained, either on a local access network or in Internet. Project members connect with it via their VCS client.

- checkout: the operation that creates a working copy from the repository to your local computer. The server keeps the information on checkouts, so that later commits (see below) can be performed in an orderly fashion.

- commit: once a new local version of the checked-out material is ready, it can be committed to the repository and thus made available to the rest of the team. The server makes sure that any conflicting changes, due to two members working on the same checked-out contents, will be resolved.

- administrator: the person responsible for the creation and maintaining of the repository, i.e. taking care of the server side of the task. To avoid any problems, one person only should have these rights at least initially.

- user: a member of the team, collaborating on the common project.

## Sharing a project using SVN

Team projects Subversion

There are two possibilities to run an SVN server: you can install SVN on your own server or you can use a hosted service. When using an external service you must be aware of the possible implications in terms of confidentiality, since you are loading the original document on a server outside of your direct control. Alternatively, to avoid this issue you can set a private SVN server, for example if you already have an Apache server that includes the software in question (e.g. VisualSVN).

Once the SVN server is available, project managers must locally install a SVN client, in order to manage the project contents on their computers. For Windows we recommend TortoiseSVN. For Mac you can download the client for instance from SourceForge, For Linux see Subversion Commands and Scripts.

### Creating a repository

Team projects Creating SVN repository

The procedure presented here relies on the free SVN server (limited to 2 users) offered by ProjectLocker. Note that the creator of the repository has implicitly the administrator rights for the repository created. Sign in to the site first or - if it is your first time on the site, register for it and note your user name and password for the future projects.

1. Create a new project on ProjectLocker

2. Type the name and description of the repository. ( `OmegaT` and `OmegaT SL Localization` in the example used here)

3. Choose SVN.

4. Click Create Project

Open the Projects view for your account. The URL shown under Project Services will be used by SVN to connect clients to the SVN server you have just established. This is also the place to add members of the team to the project and assign them their rights. Note that the team members have to be registered first, before you can add them to the project (Note: in the free version of ProjectLocker you are allowed only two users per project).

Projects can be managed according to your development style and needs. Similar as in the case of OmegaT projects, you will need to have separate repositories for different language pairs. Within a given language pair it is best to keep different subjects and/or clients as separate repositories as well. The alternative is to have one single repository with subfolders `Project1`, `Project2`, etc., and share the common material via common `tm`, `glossary` and `dictionary` folders.

For the example shown here we decided for the one OmegaT project - one single repository for the simplicity reasons.

### Importing the project to SVN repository - Windows

The repository is empty at this moment. You create first an empty client folder on your disk. Create an empty folder, where you will keep your project and right-click on it. Select TortoiseSVN > Checkout. The following dialog appears:

Enter the URL, provided by ProjectLocker, into the field URL of repository. Make sure the field Checkout directory is correct, i.e. specifies the empty folder you have created, and press OK. Once the operation has finished, you can check the said folder: it should now contain a subfolder .svn and a green OK badge on its icon will show, that the contents of the folder are up-to-date:

In the next step, we will add the OmegaT files to the local folder. The following files are to be shared among the members of the team and thus have to be included in any case:

- the omegat project file - `omegat.project`

- the translation memory - `omegat\project_save.tmx`

- the contents of the source folder

- the project-specific filters definition - `omegat\filters.xml`

The administrator may decide to include following folders and their contents as well: `tm`, `glossary` and `dictionary`. Also `ignored_words.txt` and `learned_words.txt` in the `omegat` folder may be worth sharing and maintaining on the team level. Avoid in any case adding `bak` files, `project_stats.txt` and `project_stats_match.txt`, in the `omegat` subfolder, as they would without any need or profit just bloat the repository. You might want to apply the same to the `target` folder and its contents.

After copying the required files into the checkout folder you will notice that its icon has changed: the green OK badge has changed to a red exclamation sign, signifying the change in the local copy of the repository. The following two steps will bring the server version up to date:

- add the copied files to the local version of the repository: right-click on the local checkout folder and select TortoiseSVN > Add. In the dialog that opens, leave all options as per default and click OK. The Add Finished! window, similar to the one below will appear:

  The contents of the checkout folder will be marked accordingly:

- commit local changes to the server: right-click on the local checkout folder and select SVN Commit.... The Commit window - see below opens. Check the changes to be made - i.e. the folders and files added in this case.

  Enter an appropriate message into the message window and press OK. The Commit window will open and show the progress of the commit command. It will first commit the current contents to the server repository and then update the local copy of the repository - i.e. the contents of .svn subfolder - so that it is up to date with the latest repository version.

- update local files from the local repository copy - the changes received from the server repository reside within the .svn subfolder but not yet in the files and folders themselves. To update the local files, right-click on the checkout folder and select SVN Update. Check the contents of the folder to confirm that the local copy of the repository and the corresponding files and folders correspond to the latest server version:

## Using the team project in OmegaT

Once the team project is setup, team members only need OmegaT to access the team project. First, they need to use Project > Download Team Project. This will actually do a checkout of the project in a local folder. Credentials are stored, so it isn't needed to enter them each time. Under Linux, if OmegaT is still asking for your credentials, you can checking the Force saving password as plain text checkbox.

For subsequent use, all is needed is opening the project like any other OmegaT project. OmegaT will recognize it is a team project, and will synchronize everything automatically, every three minutes by default.