This section will explain how translation projects are organized in Transifex and the tools provided to efficiently work with them.
For an introduction on the structure of a project in Transifex, please refer to the section Things inside a Project.
In Transifex, everything revolves around a Translation Project. This usually represents a branded project or product, such as a specific text editor, a web browser. For example, MeeGo’s Installer, which is the software the user sees when trying to install the MeeGo Operating System, would be registered as its own project in Transifex.
To create our own project on Transifex, you first need to create an account and then log in. To add a new project, navigate to your Dashboard page and click the Add new project button (link).
Fill in the form with the details of your project:
A slug is a short and unique label which will identify your project and is used in your project’s URL. It may contain only letters (abcdefghijklmnopqrstuvwxyz), numbers (0123456789), hyphens (-) or underscores (_).
The project name will represent your project on Transifex. It should be a short and sweet name, such as “Mozilla Firefox” or “Mozart’s weblog”.
At the bottom of the form you may select one or more project maintainers. They are the people who manage the project on Transifex and have full control over everything related to the project, such as its teams and resources. In a software project, the lead developer or the localization leader could be appointed as the Transifex maintainer.
Project maintainers can also delete the whole project and its translations, so take caution when choosing your maintainers.
Then just click Create Project! and you’ll get redirected to your brand new Project Home on Transifex.
The next thing you’ll want to do is Create a Translatable Resource.
To modify your project details, navigate to your Project page and click the Edit Project... button on the right side. You should see a form similar to the one presented at the time of Advanced Project Creation.
To delete a whole project, click the Delete Project... button at the bottom of the project page.
Deleting a project is a non-reversible, destructive action and will permanently delete all data related to your projects, resources and translations. If there is any chance to need the data in the future, please make sure you have a backup of all files before deleting a project.
The Translation Memory system in Transifex works on top of a project, or a group of projects. To select a set of projects to share strings, the owner must go to his dashboard and then to the ‘TM settings’ tab. After checking the projects in the list, saving the form will make the those projects to share theirs resource strings. The calculation of similar matches is triggered whenever a source file of a resource is updated.
To read about the TM feature from a translator’s point of view, go here.
You can bootstrap your resources with automatic translations taken from the TM, on 100% matches in order to save valuable time. This is an option that you can set at the project creation/edit form.
If for some reason it’s necessary to download all resource strings of a specific project for using them offline, the translators can do so with a file in the TMX format. This TMX exporting feature is under the project details page with the Get TMX file link on the right-side menu. With it the translator can pick a language to limit the translations entries added into the TMX file. There is also an option that can include entries of the project resources that do not have any translation associated with them.
Transifex’s translation editor supports automatic translation using external machine translation services. Project maintainers who wish to have the auto-translate functionality enabled for their projects can select their service of choice under the Manage tab on their project page. At this moment, Google Translate and Microsoft Translator (free service) are supported. A valid key for API access is required for both services.
To enable Google Translate for your project, head over to the Google APIs Console.
Under Services, turn on Translate API.
Head over to the API Access tab and select Create new Browser key... under the Simple API Access section.
The service will generate a unique API key for your account that you should use in the Autotranslate page under the project Manage tab.
As of December 2011, the Translate API is available from Google as a paid service. In order to be able to use it, make sure that billing is enabled (under the Billing tab) and that your account can be charged.
Microsoft Translator is a free alternative from Microsoft. To generate credentials for your project, head over to the Azure Marketplace’s Developer site (if you don’t already have one, you’ll need a Windows Live ID). Select Register and fill in the details with the appropriate information for your project.
You then need to subscribe to Microsoft Translator services from here.
Once you have your Client ID and Client Secret for Microsoft Translator, and you have subscribe to Microsoft Translator services, you can fill in the corresponding fields in the Autotranslate page under the project Manage tab.
Transifex allows you to specify a web hook for the translations of your project. In this way, you can get notified whenever the translation of a resource is modified. This opens many possibilities for the maintainers of the project, like pulling translations as soon as they are completed.
To use this feature, you have to add a URL for the project. This URL should expect a POST request with the following variables:
In case a resource has been fully reviewed in a particular language, a variable named reviewed will be used instead of the translated one.
The next thing you want to do is add a new Resource.
A project may have many translatable parts, which, in Transifex, are called Resources. If you are familiar with PO files and gettext, a resource is a source POT file and all its respective PO files. The source file for a resource is typically a POT file.
If you have more than one translatable modules each would be a separate resource. For example, a software project on Transifex may create separate resources for its User Interface, Documentation or man pages, and command-line tool.
Smaller projects will only have one resource, and that’ll be just fine.
There a few couple of different ways to create a resource, depending on the way you are using Transifex. This section explains how to create a resource using the web interface, which gives us full control over the process.
By navigating to your Project page, you can see the existing resources. As a maintainer, you are also presented with the Create New Resource... button.
To create a Resource, Transifex requires a Source Language File, such as a POT file (gettext) or .ts file (Qt). This file holds the original (untranslated) strings of your resource. You upload this file to Transifex, which searches for translatable strings. For each string it finds, it creates a translatable entity in the source language (typically English).
For example, let’s assume you own a typical open-source software project. Its translatable strings are probably written in English, and marked using the ‘gettext’ internationalization method in the code. There should be a Makefile rule (or similar, depending or your programming language and framework), which extracts those strings into a so-called PO Template file (e.g. myproject/po/myproject.pot).
To create a resource for this, click the Create New Resource... button. Select the your source file’s language. Then, click the Upload button and select the source file (e.g. POT) from your local computer. Once the file is uploaded, finish the process by clicking the Create Resource! button.
Transifex treats the Source Language File in a very special way. It stores this file as a ‘template’ file in its database, and uses it to export the translations back to real files.
In greater detail, Transifex opens the source file and searches for translatable strings. For each one it finds, it creates a Source Entity and an English (or whatever your original language was) translation for it.
Later, when you want to export your translations to real files, Transifex uses the template file to do so. It replaces each original string translation with the respective translation for the target language, ending up with a localized file. Additionally, Transifex updates all the meta-data it can find in the template file with the information it has for the particular translation. For example, in a PO file, it will update the header with the new language name, the last translator, etc.
For a full list on the file formats supported, please refer to the Supported File Formats section.
Most of the times you’ll want to translate a whole file with Transifex, either using the interface, client or API. Transifex will take the file and segment it in small entities.
Sometimes though there are more complex types of content, such as database content, which might have mixed resource types. For example, let’s say we have a database table representing our website pages and there are entries with the following fields:
The following ways allow you to structure this localized content in Transifex.
Create 3 separate resources with appropriate IDs:
The first two could be just plaintext resources (or even HTML) consisting of only one string and the third one an HTML/XHTML resource (that will be parsed and segmented as HTML).
The category field can be set on all resources to the same value (e.g. help-page-1) to help you group these under a single category.
This solution depends on the type of the main content. In the case of HTML, all fields could be embedded inside the document (concatenated) and form a single resource which will be segmented.
For example, the title and description fields could be prepended in the HTML document like this:
<div data-role="help-page-1-title">This is the title</div> <div data-role="help-page-1-description">This is the description</div> ...rest of HTML content...
Transifex will handle the content as a single resource, parsed and segmented as HTML and presented to translators as such. The strings inside the two <div> tags will be extracted by Transifex and put for translation with the rest of the content.
To do this you’ll need a pre-processing script to embed the two strings inside the API call and a post-processing one to extract them. The unique identifiers (data-role) can help you parse the DOM.
A project must have ways to test its i18n support. This is needed basically to be sure that, when rendering a translated language, all strings that should be translated are marked as localizable and that different sizes and encodings of the original strings are supported. The way to do such tests is to run the application, website or document using a special ‘pseudo’ file as a language file that can make possible issues visible in an earlier state.
You can download a pseudo file for the resource of your choice by visiting the source language’s action menu on the resource-details page. There it is possible to download a pseudo file that can test the major part of scenarios possible to be tested.
The pseudo file able to be downloaded basically can increase the size of the strings in the file by 20-700%, adding special chars (Greek, Chinese, etc...) to the end of the string, besides of replacing the string chars with chars that look alike and also add brackets around the strings, so a complex string as for example:
'Hey, <b>Transifex</b> is so %(cool)s & %(nice)s.\n:)'
Becomes the following:
'[Ħḗẏ, <b>Ŧřȧƞşīƒḗẋ</b> īş şǿ %(cool)s & %(nice)s.\n:) ǲΐϖΰ 靐ϵǅ衋]'
Note that the pseudo file generation is able to escape tags, printf placeholders, escaped chars and special HTML entities.
For projects that house a big number of resources, Transifex now supports an extra level of hierarchy. You can now organize project resources into categories via the “Edit resource” page. You will be further able to view your resources categorized in all pages that show them. The “categories” field is also accesible via our API.
Transifex is a social translation hub, bringing together thousands of translators to work on their favorite projects.
Contrary to other products, where translators are only able to operate within the scope of a specific project, in Transifex translators can freely browse the website and even create their own projects. This reflects the idea of translators who can work on a number of projects, and even contribute suggestions to projects they have not become members yet.
On the other hand, project owners have a number of options regarding the selection of their contributors, depending on the type of the project and their needs.
You can control the way people access your project’s translators using the “Outsource and Access Control” page under the “Manage” tab on the Project Details page.
Depending on the project type set to a project, the system will treat it in different ways as described bellow.
This option implies that the project has no special needs and will work as a single project among the system.
Some projects, like Linux distributions for example, are composed by many sub-projects. Whenever setting a project as a hub on Transifex, it will be possible to use it as a parent project for other projects. Stats will appear aggregated and the children projects will obey the parent’s access control setting.
Re-use another project hub’s teams by trusting access control to that project. If a person can contribute to that project, it can contribute to this one as well. Recommended for non-upstream projects such as distribution packages, desktop environment modules, etc. It’s only possible to outsource access to projects that are set as hubs.
Determinate how people will have access to the project translations.
Choose this option to allow any logged-in (registered) user to submit files to your project. Recommended for quick translations, and when a pre-commit review process is in place, e.g. when contributions are submitted by email or to a separate branch.
Give access to specific people, who are organized in language teams. Translation teams will only have access to their language’s files.
Recommended setup for most projects.