Supported File Formats


You can find a list of the localization formats supported on the menu.

If you use a format that is not in the above list, let us know and we may be able to help you find a solution.

Encoding

Transifex uses the UTF-8 encoding for most of the formats it supports. That is, all files that are uploaded to Transifex or downloaded from it have to be encoded in UTF-8.

The UTF-8 encoding is not used only in cases the format specification says so, like in the case of JAVA .properties files, where the encoding used is ISO-8859-1, or Apple .strings files, where the encoding is UTF-16.

Modes

Transifex can generate an appropriate version of any file for downloading depending on the user's needs. Such a version is called mode.

Modes are handy in many different cases. For example, a developer may want to use reviewed translations only or a translator may want to translate a file off-line, using her own desktop tools.

Currently, the available modes when using the Client or the API, are:

  • reviewed, for files having only reviewed translations.
  • translator, for files that are suitable for off-line translation of the resource.
  • developer, for files that are suitable to be used by developers in their source code tree.

However, some file formats require to have the untranslated entries filled in with the source strings so using one of the modes mentioned above you'll get a file that won't have the untranslated strings empty. For that case we also provide two modes that "bypass" this rule for the sake of conveniece. These modes are available when using the API.

  • onlytranslated the response will include the translated strings and the untranslated ones will be returned empty.
  • onlyreviewed, the response will include the reviewed strings and the rest (translated or not) will be returned empty.

These modes only apply to the following file formats:

HTML, Chrome I18N, Windows JSON (resjson), JSON Key-Value, RequireJS format, Microsoft Office (alpha), Plain Text (txt), Joomla (ini), Mozilla properties, Java Properties, Apple strings.

For the rest of the file formats in order to get the untranslated entries empty you can use the mode translator.

In the case of the translator mode, in some formats, like JAVA .properties, the downloaded file has the strings in the source language as comments, so that the translator can translate the file faster.

In the command-line Client, users can specify the mode of the file they want to download with the --mode option of the pull command.

In the web interface, users can choose to "Download for use", "Download only reviewed translations" and "Download for translation".

Plurals

Transifex has native support for plurals, as long as the format itself supports them. Formats that can deal with plurals are for instance Gettext and Android .xml files.

When Transifex encounters a pluralized entry in the file, it will associate both plural forms together. This way, Transifex can present the translator with both forms in the editor. At the same time, Transifex knows how many plural forms each language has and asks the translator to fill in all of them. That is, the translator cannot save the entry, unless he fills in all plural forms in the specified language.

The Storage engine

Every project in Transifex has a set of resources. Each resource corresponds to a source file. So, if, for instance, you have a project with two files for translation, foo.pot and bar.pot, you will need to create two separate resources (e.g. foo and bar) and map each one to the corresponding translation file.

Every project in Transifex is associated with a source language, which is the source language of your files.

When you upload the source file, Transifex will extract the source strings using a parser suitable for your i18n format and strore them as the translations of the source language. Then, by using the web editor or by uploading a file, you can translate these strings into even more languages (target languages).

When importing a source file into Transifex, this file will be saved and used as a template for all automatically generated translation files, when the user wants to download them. However, some parsers do not guarantee that the downloaded translation files will be the same with teh source file with respect to any metadata present.

The Engine in Detail

There are three internal structures in Transifex which are of interest: Source Entities, Translations and Template files.

Each resource inherits the source language of the project it belongs to, which can be other than English. In the following examples, however, we will use English as the source language.

Source Entities

At the core of the Transifex translation storage engine are Source Entities. These are representations of actual translatable objects, together with their metadata, like comments.

For instance, for gettext PO files, a source entity corresponds to a msgid entry together with all the metadata it carries (context, occurrences, comments etc).]

Translations

Each entity has Translations to a number of languages — including the source language. There is a 1-1 relationship between an entity and a translation in a particular language. So, if you upload a fresh POT file with one msgid inside, you will end up with one source entity and one translation for English.

Template files

When you upload a source file, Transifex internally will remove the source strings and replace them with a hash. Transifex will use that hash, when you download the file, to insert the correct translations for the requested language. In essence, you're downloading the English file with the English content of it replaced with French content.

Import a Source file

Here are the steps taken, when you create a new resource by uploading a new source language file:

  • Identify the translatable entities/segments in the file.
  • For each one, create a new source entity in Transifex, if one does not yet exist.
  • Most source files include the string in the source language (in the case of Gettext POT, this is the msgid content). Take this string and store it in the database as the translation for the source language, if needed.
  • Replace this string with a hash, in order to mark the place of the source entity and be able to replace it with the correct translation, when exporting the translation file. The above architecture means that all translated versions of the file preserve the comments and non-translatable part of the file.

Import a Target Language file

When you upload eg. a French file, Transifex does things differently. It goes through all translations, locates the respective Source Entity and updates its translation. Then the file is deleted. This means that any content which may not be supported by Transifex (such as arbitrary comments in random locations in the file) might not be preserved.

Export a file

When you request to download the file in a specific language, Transifex will take the template file and substitute all hashes with the French translations.

Transifex can export different files based on the mode the user specified in his request. See more details on modes.