Common Questions

Using Transifex

User roles in Transifex.

A user can have one of six roles:

  • Organization Administrator

  • Project Maintainer

  • Team Manager

  • Language Coordinator

  • Reviewer

  • Translator

Each role gives her different permissions in the organization. You can read more about the roles and their permissions, here.

During which phase of development process is it best to localize my project?

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.

How does Transifex assure the quality of the translations?

Transifex has built-in quality assurance tools to help your translators deliver the best possible results.

Firstly, Transifex has a set of customizable translation checks available for every file format. These checks follow the rules stated in the official documentation of each format. You can read more about them in our blog.

Additionally, our Web Editor offers collaborative tools for translators to report issues on translations, ask questions, or use suggestions from the Translation Memory in order to keep the translations consistent throughout the project. You can also attach screenshots to provide extra context for translators.

Last but not least, there is the role of the Reviewer. This person proofreads the translations, and once approved, translators are unable to edit the string.

How do I add my own language?

CHECK FOR EXISTING SUPPORT

Transifex identifies more than 290 languages and associates them 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 section.

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.

SHORT VERSION

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.

LONGER VERSION

Each language available in Transifex requires a set of information that are used along with the system. Let’s take for example the Brazilian Portuguese language.

Each language Transifex requires a set of rules that are integrated into the system. For example, here are the rules for 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: -
  • 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 pluralequation, rule_other will be used.

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

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

How do I contact users in Transifex?

You can directly send a message to any user in Transifex through the messaging system, all you need is the recipient's username.

You can find your Messages Folder within the dropdown menu by clicking your username, located in the top right corner of the Transifex interface. At this time, you can only send a message to a single recipient.

Team Discussions is, in essence, a forum for project activity which quickly and easily allows team members to brainstorm. When a thread is updated the rest of the team will be notified by email. Discussions can be created and viewed by going to the Teams tab and clicking on the speech bubble icon next to the desired team.

Last but not least, in the Web Editor You'll find a Comments tab at the bottom of each string which will allow you to ask questions, discuss the translation, and report an issue. If you would like a specific person to see a comment, simply use the "@" to mention them in a comment using their Transifex username and they will be notified by email (e.g. @username).

Why does Transifex not have a spell checker?

Because all modern web browsers and operating systems have built in spell checkers, we decided to leave this functionality to them.

Projects

How do I invite people to my project?

If the user has a Transifex account:

  • You need their Transifex username so you can add them to the project and assign a role.

If the user doesn’t have a Transifex account:

  • You need their e-mail so you can invite them to Transifex. The user will receive an e-mail with a link inviting them to sign up for a Transifex account.

In both cases, the user will be assigned a role. They will see the organization in their Dashboard and be able to start contributing.

If your project is private, you will need to manually add or invite each person.

What is the difference between public and private projects?

When a project is set to be public everyone can find your project on the Transifex website. It can also be found on Transifex’s Explore page. It is also indexed by Google and even non-Transifex users can see its public pages.

However, you will always be able to decide who can participate by assigning a role to a user, as well as who will have access the Web Editor for translating.

This is extremely important when you choose to crowdsource translations or for projects that need a large community for the translation process. It also requires a significant amount of effort to control the translator's activity and the translation quality. It is extremely easy to bring onboard translators since they can find the project and request to join a translation team.

When a project is set to be private, this means the project will be visible only by your Transifex team. Google will not index any of your pages and the project will not be found in Transifex’s Explore page.

This is the recommended solution for when you want to assure privacy and have absolute control over the complete development process. You will need to invite or manually add everyone who will participate in your Transifex project.

The Open-Source Project definition.

We're proud to offer Transifex free to open source projects. An open source project is one licensed under an OSI-approved license, such as GPL or BSD, with publicly available source code.

For example, your project might be hosted on GitHub and have a LICENSE file stating that it's released under the GNU General Public License (GPL).

For projects marked as open source in Transifex, we request a link to your repository to verify its license. There needs to be clear legal text showing the license type of the material.

Please note, that if your content or software is openly available and/or free (eg. a blog or website), this does not necessarily make it an open source project. Only mark your project as open source if it has an OSI-approved license. If you're unsure, we suggest consulting with a legal advisor.

How can I transfer my project to another organization?

You can do that under the settings (Manage tab) of the project you want to move to another organization. In its settings, visit the tab "Project Ownership". You will need to know and fill in the slug of the organization where you want your project to belong into.

Just keep in mind that you should either be project maintainer or organization administrator to be able to transfer it.

Finally, don't forget that when transferring the project, the team of people that translate that project doesn't get transferred to the new organization. A new team will automatically be created in the organization where the project is transferred into, having the target languages where the project was being translated into in the old organization. All the translations are preserved - don't worry about that.

How should I handle inactive projects?

A common dilemma for organizations with lots of projects is how to handle the ones which are no longer actively maintained. By deleting these projects, all of their settings are gone, forever. Just imagine having to re-configure automatic updates for hundreds of source files. But, by keeping them, these projects add to the organization's overall word count.

Instead of deleting an inactive project, organization Administrators can archive it which results in the following actions:

  • The project goes into a freeze mode. Users can see it but cannot interact with it.
  • Its contribution to the total word count of the organization is reduced by 75%.
  • To put that percentage into perspective, assume your organization has two projects: Big (wordcount: 40K) and Small (wordcount: 7K). If Big is inactive and you archive it, you’ll get 30K words for free and give Small the opportunity to grow without having to upgrade to a greater plan.
  • The settings of the project will also remain intact. At any time you can restore an archived project and have it running in seconds.

You can archive or restore a project by going to Dashboard → Settings → Archive:

Archive Page

Transifex lets you preview the word count reduction if you archive a project:

Archive Project

Open source projects do not contribute to the overall word count of an organization. This means archiving an open source will put it into "freeze" mode, but will not affect the total word count.

Is it possible to change the source language of my project?

No, this functionality is not supported. If for any reason you need another source language, you should create a new project with the desired source language.

How do I delete a project if I sign in using Google, Github, or LinkedIn?

To delete a project, you will first need to set a password for you account.

This can be done by either contacting our support center or by clicking on “Forgot you password” link that appears on the login form and completing the password reset process.

Source Files

Can I update source files automatically?

As long as your source file is accessible from a public URL, such as this raw file on GitHub, Transifex will periodically check the URL for updates. You can also use a file from a private repo in Github as long as the URL has the respective token that Github provides. If there are updates in the file, Transifex automatically fetches the file and updates your content.

You can find this option under Project Details → Resources → Auto-update Resources.

It is important to note this solution depends on Transifex polling for updates. As a result, there will a delay between the moment you update your file and Transifex picking up the changes. If you would rather update your content in Transifex as soon as your files change, use the client or API instead.

Here’s how differences in the content will be handled:

  • New strings will be added
  • Modified strings will be considered as new ones and added
  • Strings that are not in the new source file (including ones which have been modified) will be removed along with their translations.

However, old translations are kept in the project's Translation Memory.

If you want to disable the auto-update feature for a resource then you should remove the URL. After doing so, you are going to receive three warning e-mails letting you know that the auto-update will fail. This is normal since the task that runs in the background checks three times for the URL and it notifies the user that something is going wrong. These notification e-mails are useful in cases where the URL is not working due to a variety of reasons and the user needs to know about the upcoming outcomes.

What happens when I update my source files?

A source language file is essentially a collection of strings. When you push or update a resource, Transifex finds the subset of common source strings in both files and keeps all translations preserved.

Source strings that are only in the old resource won't appear in your updated resource, but:

  • All translations ever submitted to a project in Transifex are saved in the project’s Translation Memory (this happens automatically as soon as they’re submitted).

  • Old translations are compared to the new strings. If there is a high-enough similarity between the old and new strings, Transifex doesn't delete the old string. Instead, it with update to a new version of it. As a result your Translation Memory will find the existing translations and presents them as suggestions in the Web Editor.

So, when Transifex tries to insert a new source string into a resource, one of the following outcomes takes place:

  • New strings are added to Transifex with no available translations or suggestions.

  • Modified strings as treated as new strings and added to Transifex as well.

  • If the Translation Memory match is not 100%, but still high enough, it will use all similar translations as suggestions for that specific string in the Web Editor. This means if existing translations are still appropriate, translators will be able to use them with a single mouse-click.

  • Strings from the old resource that don't appear in the new source file will be removed from your project (along with their translations).

  • Remember, the Translation Memory will keep the old pairs of source strings and their translations for future use.

  • Identical strings between the old and new source file will remain in your project along with their existing translations.

  • If a 100% match from the Translation Memory occurs and if the setting "Fill up resources from TM" is enabled in the project settings (Manage tab), Transifex will automatically fill in all the the existing translations in all the available languages.

What are the differences between using .po and .pot files as source files?

If you use .pot files, translators will see the msgid value in the editor. Therefore, msgid must contain the string in the source language.

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

Is it possible to edit my source strings directly in Transifex?

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.

Translating

Are there any Transifex translators?

At the moment, Transifex doesn't have professional translators available on-demand. Companies that use Transifex either work with third-party Localization Service Providers, hire freelancers, translate in-house, or crowdsource translations through their community. You also have the option of ordering translations from our partners, Gengo and TextMaster, directly within the Transifex platform. Finished translations are delivered back to you in Transifex.

Why do translators sign up for Transifex?

Some translators sign up because they're translating content for a client that uses Transifex. Other translators sign up because they love a public or open source project and just want to contribute.

Do translators get paid by Transifex?

No. They do not get paid by Transifex, but by the company they are working for.

How to find a project to translate?

If you are looking for an open project, you can visit the explore pages and browse or search for a project there. As soon as you find a project, click on it, and you will be redirected to all of the supported languages for the project.

If the language you want to translate is in this list, all you have to do is click on it. From there, you'll be redirected to the language team page, where there’s a “Join team” button.

If the language is not in the list, then you can request it from the maintainers of the project, by clicking the button “Request language”. If the language is not supported by Transifex you can request it by e-mailing our support center.

If the project is not open source, you should contact the maintainers and tell them to add you as a translator to the project.

Crowdsourcing translations: preferred by whom and why?

Crowdsourcing translations is a solution mostly preferred by:

  • Open source projects, where the translators are volunteers who want to see their favorite projects localized to their own languages.

  • Commercial products/services, like Waze or Disqus, that want to engage their community and let them handle the localization of their projects.

In both cases, you need an enthusiastic community in order for your crowdsourcing efforts to be successful.

What are the best crowdsourcing practices for translations?

You may have a community of translators or people willing to help manage the translations of your project, but you'd like to regulate the entire process.

Ideally, your translators will suggest translations and the "best" version is picked rather that having everyone translating the content directly.

Each string in Transifex has three states:

  • Untranslated: Translators (and Reviewers) can translate it or suggest a phrase for translation.

  • Translated: Translators (and Reviewers) can modify the translation or suggest an alternative translation. Reviewers can then mark the phrase as Reviewed.

  • Reviewed: The phrase is 'locked' (only reviewers can modify it). Translators can only add suggestions as comments and vote on suggestions.

With that being said, you can have as many translators as you would like, but the reviewers/proofreaders should be carefully selected. Each language will at least one language coordinator who can approve new members to join as translators. Translators can then directly translate, suggest translations, and vote on them with ease.

You can start a project by marking all strings as "Reviewed" so that only your trusted reviewers can modify them. All translators can then suggest and vote on the suggestions using the Comments section in the Web Editor. The reviewers can then pick and submit the best / most voted on translation.

Is there a way to translate directly from my database?

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

In most cases you must find a way to extract the strings from the database (e.g running a script that does that) and putting them in a file using a tool like gettext to create proper files for localization.

You can then upload these files to Transifex, and once the translations are finished, you can download the files and reimport them into your database.

What kind of notifications can I get for the projects I translate?

Transifex allows users to follow projects they help translate and receive email notifications, whenever:

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

You can find a link "Watch project" on the project's main page.

Web Editor

What are the Web Editor's auxiliary tools?

Transifex's Web Editor's can help you rapidly accelerate the translation process.

In short you can: * Search for specific source strings across all project files by using filters * Some of the many filters include: searching for words (in the source language or in translations), if they are translated/reviewed or not, date translated/reviewed, key, comments, tags, translator, and so many others!

  • Provide context to translators like links, screenshots, or other helpful material using the "Instructions" field or the "Comments" section
  • You can also mention them using the @ keyword which will trigger a notification to be sent to them.

  • Mark source strings using one or more tags (keywords)

  • These are visible and editable across all translation languages
  • You can use them to group together strings by relevance
  • Assign the translation of specific strings to users, e.g. "@John"
  • Assign priority on specific strings, e.g. "important"
  • Mark erroneous source strings, e.g. "typos", request for help on specific strings for a language, e.g. "help@fr".

  • Access a proof reading screen

  • Batch edit a group of strings
  • Make suggestions for a translation
  • See the translation history of a string
  • See the differences of past translations
  • Use the suggestions of the Glossary
  • Use the suggestions of the Translation Memory
  • Translate viewing another language than the source language.
  • Use multiple shortcuts.
  • Use Machine Translation.
  • Report issues for a string in a respective section.
  • See details about the source string concerning the original file such as key, size in words, occurrences describing where it appears, context etc.

And many other things! Master the Web Editor Tutorial

Can I use a language that is different from the source language as an intermediary when translating?

Yes, in the editor there is an option for displaying a secondary already-translated language as the source language.

For example, if a project is being translated to both Portuguese and Brazilian Portuguese, it would be helpful to have the Portuguese translations displayed as the source language for the Brazilian Portuguese translations.

By hovering your cursor over the Portuguese translation, you can still see the original English string. And if there’s no Portuguese translation for a string, English is shown instead.

To add a secondary language, click the gear icon on the top right corner of the editor and choose to have a secondary language displayed instead of the source language.

Is it possible to lock strings from being translated?

Transifex supports two special "smart" tags in the Web Editor: the "notranslate" tag and the "locked" log. Only Project Maintainers can set them and here's how they work:

  • notranslate: When this tag is present in a source string, the translator should just copy the source string to the translation.
  • locked: When this tag is present in a source string, the translator can't modify the translation or make edits in the translation area.​
  • These checks can also be changed to an error (translation is not saved when an error is present) under Organization Settings → Manage → Translation checks.

Why is my Web Editor complaining about the percentage sign (%)?

EXPLANATION

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.

SOLUTIONS

There are three solutions to this error:

  1. 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.

    Example:

    "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%""

Accounts and Billing

How is my word count calculated?

Transifex counts the words across all your projects and sums them up. If you're an organization administrator, you can see a detailed breakdown of your word count under Dashboard → Manage → Billing.

For projects with source language other than Chinese, Japanese or Korean (CJK):

The total word count is calculated by multiplying the number of words in your source language, by the number of languages Transifex hosts translations for. For example, consider the following scenario:

  • Your source language is Russian.
  • Your projects have 40K source words.
  • You are translating them into 5 languages.

Total Word Count = 40,000 × 5 = 200,000

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

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

For projects with a Chinese, Japanese or Korean language:

The total word count is calculated by multiplying half the number of symbols in your source language by the number of languages Transifex hosts translations for.

For example, consider the following scenario:

  • Your source language is Japanese.
  • Your projects have 40K source symbols.
  • You are translating them into 5 languages.

Total Word Count = (40,000 / 2) × 5 = 100,000

Sometimes, you might happen to have English characters within a Japanese, Chinese or Korean string. In such cases, any sequence of characters between whitespaces that can be converted to ASCII (digits included) is considered a word and 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

How do I delete my account?

To delete your account, click your username in the top left. From the dropdown, select "Account", then in the "Edit Profile" tab, scroll to the bottom of the page and click the "Deactivate my account".

**WARNING: This process cannot be undone!**

What happens when I am on an open source plan and I make a private project?

To continue using a our free open source plan, your project must be public and using the appropriate license type. If you would like to create a private project, you will need to upgrade to a paid plan to support the private project's word count.

Can I change my username?

No. For technical reasons, usernames cannot be changed.

A workaround is to delete your current account (see above question) and to sign up again in Transifex using the same e-mail address.

The history and statistics of the old user are not transferred to the newly created one and the process is irreversible.

Why is there no password stored for my account?

If you signed up for Transifex using one of the Social Login options, then there is no password stored for your account.

You can e-mail our support center and we will set a password for you. Clicking on “Forgot you password” link that appears on the login form and following the process you will also allow you to change your password.

I just signed up for Transifex, but I'm having trouble logging in. What should I do?

If you signed up for Transifex, but when you try to login for the first time and the system does not accept your username or password, you need to double check that you have activated your account via our confirmation email.

Other symptoms can include: when you try to create a new account, it says "the username and password are already in use". When you try to recover your password, there is still a message that says that "your email is not registered".

To solve this, please check your inbox and spam folder for the activation email.

If would like us to resend it, visit the Reactivate page and resubmit the e-mail which you used to signed up with.