• Documentation
  • FAQ
  • Frequently Asked Questions

Frequently Asked Questions

Transifex is a software platform – we don't provide any translation services ourselves. Companies that use Transifex usually work with a third-party translation agency, hire freelancers, translate in house, or crowdsource translations with the help of their community. You also have the option of ordering translations from one of our translation partners: e2fGengo, and TextMaster. Orders can be placed from within the Transifex platform using a credit card; finished translations are delivered back to you inside Transifex.

Public projects are visible to everyone. They show up in Transifex's Explore page and get indexed by Google. And non-Transifex users can see the public pages for a public project. That said, you still have control over who can translate your content and what user role each person involved in your project plays.

If you're crowdsourcing translations, we recommend making your project public. It's extremely easy to bring translators since they can find your project and request to join a translation team.

Private projects are only visible to the people who were invited to work on them. They won't appear in the Explore page and Google will not index any of your pages. This is the recommended route if you have proprietary content that you don't want everyone to see. When your project is private, you'll need to manually invite people to work on the project.

Transifex provides tools that help your translations deliver the best translations possible. To name a few:

Beyond tools, it's important work with qualified translators and communicate clearly with them about the context of your content.

No, there's currently no way to translate data directly from a database.

You'll need to extract strings from your database (e.g. by running a script) and put them into a localization file using a tool like gettext. You can then upload these files to Transifex and when the translations are finished, download the files and reimport them into your database.

Yes! When translating to a RTL language such as Arabic or Hebrew, the Editor will automatically switch the input box to RTL for you. You can override this and use LTR by clicking RTL in the translation box.

A string is a sequence of characters. A string can be a word, phrase, sentence, or a paragraph. It can contain numbers as well as variables, and even HTML tags. “Save settings” and “Please look at %(url)s for more detail.” are both examples of strings. "Save settings" is a string that contains 2 words. 

Every sequence of characters and numbers between whitespace (spaces, tabs and newlines) is considered a word. Phrase "Today I've read that Mars has 2 %(moon)s." has 8 words.

This topic is a matter of preference, but we suggest keeping the following in mind:

Most software products are distributed incrementally in releases, with release dates and upcoming features announced in advance. Before the release, developers make sure the product is bug-free and well documented. And if the product is to be offered in other languages, teams will announce a ‘string freeze' on the product.

For developers, this means they can no longer change the code in a way that affects the source strings (bug fixes and improvements, however, are acceptable). For translators, the string freeze provides them adequate time to work.

When the release day arrives, developers get the translations for their target languages, compile them into the product and release it.

Effectively using branches

  1. Let's say you have a new feature that is under development in a separate branch. When it's ready, it is merged with the master branch and deployed. After the launch, you can push your resources to Transifex and when the translations are completed, pull them and deploy. That way, you'll only need to use a single resource for that feature in Transifex.

  2. If you want to deploy a new feature with completed translations, you should push all resources to Transifex. When the development is done and the translations are 100% completed, you can pull them from Transifex, merge both the code and translations into your master branch and go live!

You may also find this integration guide with GitHub quite helpful.


Transifex identifies more than 290+ languages and many more associated with a locale code. These languages adhere to the ISO 639-1 standard of language names and locales. You might fallback to 639-2 or 639-3 if your language is not covered in 639-1. For a full list of supported languages, please refer to our Languages page.

If your language isn't in the Languages page and your files appear in a shortened version like ‘xx_YY', then you can help us providing the necessary information in order to add your language into Transifex.


Check the Unicode standard for Language Plural Rules and check that the rules for your language are correct. If so, let us know. Otherwise, try to find an authoritative source for the correct data and point us to that.


For every language Transifex supports, there's a set of information or rules that's followed by the system. Let's take for example Brazilian Portuguese:

  • name: Portuguese (Brazillian)
  • code: pt_BR
  • code_aliases: pt-br pt-BR
  • nplurals: 2
  • pluralequation: (n > 1)
  • rule_zero: -
  • rule_one: n is one
  • rule_two: -
  • rule_few: -
  • rule_many: -
  • rule_other: -

In detail:

  • name is the language name in the 'Language (Nationality)' format. You can omit the nationality for general languages like 'pt'.
  • code is ISO 639-1 language code. You might fallback to 639-2 or 639-3 if your language is not covered in 639-1.
  • code_aliases are aliases separated with spaces (e.g pt-br pt-BR).
  • nplurals is the number of plurals allowed by the language. These are quite common in .po files.
  • pluralequation is an equation to distinguish the plural rules for the available nplurals. These are also quite common in .po files, too.

The rule fields MUST reflect the exact number of nplural set to the language. This means that if your language has nplural = 2, then only 2 of the rule fields must be filled in.

The rule_other is considered the general rule. All languages must this rule — even those that do not have plurals (such as Japanese). The rule_other is considered a general fallback, like an ‘else' statement for all other possible rules. If there is a case that doesn't fit into the pluralequationrule_other will be used.

Examples can be found here. We usually get rule information from

When we add support for a language we follow the BCP47 standard. The multiple language locales are based on region subtags.

No, this isn't supported. If you need to change your source language, create a new project with the desired source language.

Before you can delete a project, you'll need to set a password for your account. You can do this by clicking the Forgot password link on the Signin page and completing the password reset, or by contacting us.

Unfortunately, you can't edit your source strings online because we use them to assure its uniqueness in our databases.

As a workaround, you can add a new target language as an intermediary and make your edits in that language. For example, if your source language is English (en), add English (United Kingdom) (en_GB), then use your edited strings as the "translation" for English (UK). When you're done with the edits, download/pull the "translations" from Transifex, delete the existing online content and upload/push the "translations" back to Transifex as English (en). From there, you can translate the strings to your target languages.

We recommend separating these two processes out. It's really a good practice since it'll make it clear to your translators and the Translation Memory can be separated out too, increasing its quality. 

So, let's assume that your source text is in English and you want to adapt it to Chinese and Arabic and then translate it into other target languages.

You'll need to have the following projects:

  1. One project will be dedicated to the adaptation (eg. named "Adaptation"). 
  2. A set of projects will be dedicated to the translations of the adapted text.

You have two choices on how to handle the work regarding languages:

  • Adapt and Translate in one step.

-- Create the "Adaptation" project defining English as source language. 

-- Upload your English source file

-- Add Chinese & Arabic as project's target languages

-- Translate the source text into Chinese and Arabic while adapting it so as to accommodate regional differences too. 

-- Export the Chinese & Arabic translation files from Transifex and upload them as source files to different projects.

Note: The Chinese file will be uploaded to a project with Chinese source language and the Arabic file will be uploaded to a different project with Arabic source language.
Both projects will be translated from their own source languages to the desired target languages.

  • Use the same source language everywhere.

-- Create the "Adaptation" project defining English as source language. 

-- Upload your English source file

-- Add Chinese & Arabic as project's "target" languages

-- Adapt your source text depending on the region without translating it.

-- Export the Chinese & Arabic "translation" files from Transifex and upload them as source files to a new project.

Note: Both files will be adapted but their content will still be in English.
They will be both hosted under the same project where English source language will have been defined. Then you can translate the content of each source file into the desired target languages.

You have a master source file which you want to translate into multiple languages. However you also want to create a new form of English (based on the tone or the different levels of formality) that is not currently available. So, you want to create a new source file, based on the master one, using just Transifex.

All you need to do is to follow the steps below:

  1. Upload your master source file on Transifex.

  2. Add all the desired translation languages to your project in order to translate your content.

  3. Use one of the supported English language codes (en_US or en_GB or en_GR etc..) as a target language by simply adding this to your project as well. Note that this language code will be related to the new form of English regardless geographical, political, or cultural criteria.

  4. Use Transifex to "translate" the master source file to your new version of English.

  5. When the above "translations" are completed, download the "translation" file from Transifex.

  6. Create a new project and under this, upload the new English file as a source file.

You can use API or client in order to automate the above process.

With .pot files, translators will see the msgid value in the editor. Thus msgid must contain the string in the source language.

If you need to preserve the key defined by your developers for each entry, you can use .po files as your source file format. You'll need to generate the .po file form the .pot file in the source language of your project. Translators will see the msgstr value in the editor, so msgstr should contain the string in the source language. The msgid can be the the key of the entry.

Yes. You can lock an entire resource or certain strings. On a string level, you can lock certain strings and prevent them from being translated into all languages, or you can lock certain strings on a language level only. 

Kindly see more information here.

As a final thing to note, whenever a translation is marked as reviewed, translators won't be able to edit the translation.

No, they don't get paid by Transifex. Professional translators are paid by the company they work for.

If you’re looking to translate a public project on Transifex, check out our Getting Started Guide for Translators.

If you’re looking to translate a private project, please contact the Project’s Maintainers and ask them to invite you to the team that’s translating the project.

Requests to add a new language to a project are not always accepted. This is a decision made by the project's Maintainers and may have happened for a number of reasons. Here are some common ones:

  • A project maintainer decided to not support that language due to the lack of interest in the product from users who speak that language.
  • There were not enough translators who volunteered to translate the project to that language.
  • Another variant of that language is already in the project. In this case, a project maintainer might want to avoid translating the project to two similar languages, e.g. Danish and Danish (Denmark).

If you would still like to request a language be added, or better understand why the request was not accepted, please message the Project Maintainer or Organization Administrator directly.

Transifex lets you watch (follow) projects you're working on and get notified whenever one of these events happen:

  • A new source file is added.
  • An existing source file has been updated.
  • A source file has been deleted.

To watch a project, select it from your dashboard and click the Watch icon in the header, above the Translate or Live button.


If you try to translate it in a target language you may get a message in Transifex's Web Editor that states:

Error: The expression "% o" is not present in the original phrase.

The pattern that triggers this message is a percentage sign followed by a whitespace and a letter that is different from the one in the source string.

Let's say you have a source string that is "99% done". Why does the editor think that the phrase is something that must be present in the translation?

The "%" symbol has a double usage. It can work as a variable substitution specifier or it can be a percentage.

In some file formats, a space between "%" and a valid format specifier does not cancel the variable place holder. That means that the phrase "99% done" is identical to "99%done".

In the first case "%" is used literally whereas in the second case it is used as a placeholder (%d). Unfortunately, there's no way to tell which is the case so it is always considered a placeholder. This is a known issue with formats specifiers in many programming languages.

A placeholder should preserved in the translation as is. So, since the phrase "% d" is considered to be a placeholder this is why the Web Editor complains and tries to tell you that you need to preserve it in order your translation to be correct.

Solution for Admins

There are three solutions to this error:

  1. If you're an Administrator, you can change the translation check "Variable substitution specifiers (like "%s") are preserved in the translations." to act as a Warning. From the Settings tab on the Dashboard → Translation checks. By doing so, you will be able to save the translation. If you use a PO file keep in mind that you are not able to disable that check if the string in your source file is flagged as "#, python-format".

  2. If you want to use the "%" literally as a percentage, you can explicitly escape it. That said, you just need to precede it with another percentage symbol in the source file.


    "99%% done."

    Doing so the editor won't complain about the expression "% d", it will only complain if the expression "%%" is not present in the translation. Your framework probably supports "%" escaping.

  3. Finally, the last solution will let you use the "%" both as a placeholder and a literal symbol as desired each time. Additionally, the functionality of the translation check for the placeholder will not be affected. So it's a good solution regarding every aspect.

    You can try to modify the string in your source file with the following way:

    "%s done."" % "99%""

Since all modern web browsers and operating systems have built-in spell checkers, we've left this functionality to them.

To add spell checking for different languages, please see the documentation pages for ChromeFirefox, and Internet Explorer.

There are a number of ways you can reach other users in Transifex:

  • Use the messaging system to send a message directly to another user. To send a message, click on your user profile in the main navigation, then select Messages from the dropdown. In the header, click Compose. Enter the Transifex username of the person you want to message, add a subject and message, and then hit Send message.
  • Start a team discussion and message everyone on a team. To learn how, please see our article on Announcements and Discussions.
  • @mention a user in a comment in the Editor. To learn more, refer to this article.

Team discussions is a feature that lets you communicate with other members of a team. It's a forum for a team's activities and conversations. You can find discussions by going to the "Teams" tab of your Dashboard and clicking the speech bubble icon to the right of a team's name.

You will receive notifications about discussions in the following situations:

  • When you participate in a team discussion that is not assigned to a specific language ("All languages" is the default selection), you will receive notifications for every new post after your initial post.
  • When a team discussion is assigned to a language you are involved with, you'll receive notifications if you are a Coordinator, Reviewer, or Translator, regardless of whether you have participated in the discussions before. Team Managers won't receive notifications.

Please note: there's no option to disable notifications for the second scenario mentioned above. This is requested by the Team Managers to ensure that everyone involved is receiving the proper notifications.

There are several ways to find strings with comments in the Editor:

  • To find all the strings that have at least one comment, use the Comment filter followed by *.

  • To find a specific comment, use the Comment filter followed by a keyword or phrase in the comment. For example, "Comment: context".

  • To find all the strings that include comments that have been marked as issues, use the Issue filter and select the "yes" option.

By default, a translator can translate any unlocked string in a resource they have access to (see how to lock strings).

If you want a translator to work on a specific set of strings, use the batch edit mode to tag a group of strings with the name of the translator. Each translator can then find the strings they should work on by filtering for them, using the Tag filter and their name, e.g. TAG: John.

If this is the first time that you're trying to log in to Transifex, double check that you've activated your account by clicking the link in the confirmation email.

If you see a message that reads "The username and password are already in use" when you try to create a new account and at the same time see "Your email is not registered" when you try to recover your password, please check your inbox and spam folder for the activation email.

You can request a new activation link by visiting the Reactivate page and resubmitting the email address you used to sign up for your Transifex account.

Your hosted word count is calculated using the following formula (projects using Chinese, Korean, or Japanese as the source language use a slightly different formula which we will explain later):

Hosted Words = Source Words × Number of Target Languages

So if you have 40,000 Russian source words which you are translating into 5 languages, your word count is 40,000 × 5 = 200,000.

Every sequence of characters and numbers between whitespace (spaces, tabs and newlines) is considered a word. In the phrase below, the word count is 8.

Today I've read that Mars has 2 %(moon)s.

If you're an Organization Administrator, you can see a detailed breakdown of your word count from your organization's subscription page.

Projects with Chinese, Japanese, or Korean as a source language

A slightly different word count formula is used:

Hosted Words = Source Language Characters × 50% × Number of Target Languages

The word count is calculated by multiplying half the number of characters in your source language by the number of languages you're translating to.

For example, if you have 40,00 Japanese characters which you are translating into 5 languages, your word count is 40,000 / 2 × 5 = 100,000.

If you happen to have English characters within a Japanese, Chinese or Korean string, any sequence of characters between whitespaces that can be converted to ASCII (digits included) is considered a word and is counted as one in the final counter.

For example, the word count of the following phrase is 9 (5 characters and 4 words).

今日 sunny です。 outdoors 123 %(day)s

If you'd like to create a private project, you'll need to upgrade to one of our paid plans. Your Open Source words will not count against your plan's word limits as long as it's an Open Source project with an OSI-approved license.