--- layout: default title: Translation instructions description: how to help translate TortoiseSVN keywords: translation, instruction lang: en ---

# Translation instructions

TortoiseSVN is still in development so the translation of all resources is also a work 'in progress'.

## General

The TortoiseSVN project uses gettext PO (portable object) files for its translation. PO files are plain text, so you can even translate using a normal text editor. The only thing you have to take care of is that the editor can handle the UTF-8 charset. There is a wide range of tools out there that can handle and manipulate PO files.

There are two ways to add to the translations in TortoiseSVN

- The new way using transifex.com
- The old manual way (deprecated)

### Offline translation editing

No matter whether you follow the old or the new path, both ways allow you to edit your translations offline. We recommend that you use poEdit (Windows only) or Virtaal (Multi-platform).

### The new way using transifex.com

Visit transifex.com and register an account there. After having done this, go to the TortoiseSVN translation project and request to join a language team of your choice.

Transifex has a nice web interface. You can edit everything there, but you can also download the .po file, work offline using your preferred editor and upload the .po file to transifex again.

We take care of synchronizing the translations between transifex.com and our repository.

### The old manual way (deprecated)

This description assumes that you use poEdit.

### Getting started

If you want to implement a new language for TortoiseSVN do the following.

1. Use TortoiseSVN (or any other SubVersion client) to check out:
   https://svn.osdn.net/svnroot/tortoisesvn/trunk/Languages (You will get more than one file).

   Or point your browser to:
   https://osdn.net/projects/tortoisesvn/scm/svn/tree/head/trunk/Languages, select Tortoise.pot and save this file to your local harddisk. Tortoise.pot is the portable object template (hence .pot) for the translation.

2. Rename Tortoise.pot to Tortoise_xx.po, where xx is your two letter ISO-639-1 language code. Look up your language code here: https://www.loc.gov/standards/iso639-2/langcodes.html.

   Please keep in mind that we would like to have as few translations as possible that cover as many languages as possible. We would not be very happy at having to maintain a (de_CH) Swiss German, (de_AT) Austrian German and (de_DE) German German translation. :-)
   But if it's necessary like in Chinese, sure go ahead. We are happy with simplified (zh_CN) and traditional (zh_TW) Chinese.

3. It would also be nice, if you sent us your four digit locale ID along with the file. The list of locale IDs as defined by Microsoft can be found here: https://www.microsoft.com/globaldev/reference/lcid-all.mspx
4. Now translate what you can using poEdit. If you are not sure with one or the other translation, mark it as fuzzy. You can enter a comment in poEdit to give some information about your thoughts to other translators.
   If you are not sure about the meaning of the original sentence ask on the list.
5. Add a header with '#' comments to the PO file using a normal text editor that explains which language you translated and the terminology you used, like:
   `
   #
   # German translations for TortoiseSVN
   # This file is distributed under the same license as the subversion package.
   #
   # Translation dictionary:
   #
   # argument parameter
   # bogus ungültig
   # checkout auschecken (denglisch, ich weiss, aber akzeptabel)
   # client Client, des Client
   # commit Übertragen
   # item Objekt
   # label Marke / Markierung
   `
6. Make sure your file is saved in UTF-8 encoding and that it does not begin with UTF-8 BOMs (Byte Order Marks)
7. Send your Tortoise_xx.po to the mailing list (https://groups.google.com/forum/#!forum/tortoisesvn) or, if you have a OSDN account, request commit access to the project via the translators mailing list, you may commit your translations directly into the TortoiseSVN repository.

### Adding to an existing translation

1. Get hold of Tortoise.pot and the Tortoise_xx.po you want to improve
2. Start poEdit with Tortoise_xx.po and select Update from .pot file from the "Catalog" Menu
3. Select Tortoise.pot and wait until poEdit has finished merging the template and the current translation.
4. The untranslated strings (and fuzzy translations) are always at the top of the list.
5. Translate what you can and send the resulting PO file back to the mailing list (https://groups.google.com/g/tortoisesvn).

### Important

Please pay special attention to cases where placeholders for variables like `%s` or `%d` appear in the original text. They have to appear in in the translation again. If the parameters are numbered, like `%1!s! files copied to %2!s!`, you may reverse the order in your translation if you need to do so to form a proper phrase in your language.

### What now?

That's all you have to do. We'll take care of creating the resource dlls and installers for the different language packs.

### Testing your translation

If you want to test the translations you made yourself, just wait for the next nightly build.
The nightly build is done every night at 0:00 GMT+1. The Language Packs however are only built twice a week (on Sunday and Wednesday). The whole build takes about an hour. After the build is done, the installers (including the language packs) are uploaded for you to use.