Create a free account in Transifex:

https://www.transifex.com/signup/

  1. Log into Transifex
  2. Search for "CommCare HQ" in Transifex's explore page.
  3. Choose a language, and hit the “Join Team” button to request access. The manager of the team needs to approve your request before you can join that team.

  4. After you have been invited approved as a translator, you’ll be notified by e-mail. From then on, you will see the project in your Dashboard.

Note: instructions for Dimagi employees administrating transifex are on the internal wiki page

For more detailed instructions, see Transifex's how to page.

Once you have an account:

1. In order to access the strings that have not yet been translated you will need to click on the "CommCare HQ" link on the lefthand side of your screen when you sign in. 

 2.  If you click on the green "translate" button at the top, it will take you to a screen that looks like this:

3. you want to click on choose a language, select the language into which you'd like to translate.
4. it will then prompt you to select which file you want to translate, there are two there, django.po and djangojs.po.  Both need to be translated, so select "All resources"
5. when you click on django po, you will see a screen that looks like this:
6. You will want to select the "untranslated" tab at the top
7. Once you have selected that tab, the terms/phrases on the left are the "strings" that we need translated.
8. Note that this document contains all strings on CommCareHQ.  This includes some strings that only apply to custom features and reports, and are not a core part of the website.  To avoid these, you can use the search bar at the top of the translation interface to filter strings according to the file in which they are found.  Type file:corehq/ as one filter, and file:submodules/ as another, to view only strings which are visible to all CommCare web users
In the search filter on transifex these filters will look like this:
and

How to translate template strings and code

When translating, there are some things that you must take special care to preserve (don't translate).  For instance, if a string contains the URL www.example.com, and you translate that to www.ejemplo.com, the link will fail.  If you're unsure how to translate a particular string, it's better to leave it alone and ask for clarification.  A mistake like this in translations will block us from releasing translations until it's fixed.

Strings often contain variables that will later be substituted out.  For example, the string "Case '{name}' has been closed" will turn in to "Case 'Maria' will be closed" in the English version, and "Le dossier 'Maria'  a été fermé." in the French version.

Here are some example format strings an the expected translations:

Curly braces: keep everything inside the braces.

Type {type} must be in list of domain types: {list}
El Tipo {type} debe estar en un listado de tipos de dominios: {list}

Modulo interpolation: These ones can be tricky.  Here's a simple example:

Did you mean %(suggestion)s?
Voulez-vous dire %(suggestion)s?

These will always start with a % sign and end in a single letter, usually s or d.  In between there can be parenthesis with a word inside, and maybe some numbers or symbols.  Be sure to include everything including the % and the letter.

%(days_remaining)03d days remaining
Faltan %(days_remaining)03d días

underscore.js translations:

User <%= name %> added successfully.
El usuario <%%= name %%> fue agregado exitosamente.

You may also see html in translation strings.  In general, there you should leave everything between < and > and translate things between > and <:

Please update 'Client Contact Emails' <strong><a href=%(link)s target="_blank">here</a></strong>
Por favor actualice 'Correos electrónicos de contacto del cliente' <strong><a href=%(link)s target=\_blank\">aquí</a></strong>
View our <a href=\"http://www.dimagi.com/partners/\">list of partners</a>
Voir notre <a href=\"http://www.dimagi.com/partners/\">liste de partenaires</a>

Running a Translation Marathon

  • Select a Translation Marathon coordinator
  • Set a goal for translation for the language project
  • Block 2 hour period that everyone on your team is available for. Nice to do this at the end of the day while everyone's wrapping up. 
  • Best to choose a week/day when most people can be together in the office. Lots of discussions bound to take place about terms
  • Buy snacks and drinks
  • Set up a playlist for music to jam along
  • On the day of:
    • Send instructions on which client everyone should bill translation time to
    • Send link to CommCare Rosetta Stone
    • Accept/Invite New Translators
    • Send reminders about specific filters to use on Transifex
    • Choose one filter to translate strings
    • Click on Untranslated String button to view only untranslated strings
    • Divide up the strings among the team so people don't over-write each others
  • Remember to SAVE all of your translations
  • Refresh often, un/click untranslated button also (sometimes it doesn't refresh correctly)
  • Keep an eye on progress! 
  • Keep it fun!
  • GO GO GO!

Tips

 

  
GENERAL
  • Be sure to reference the CommCare Rosetta Stone for some common translations
  • Error: The translation should start with an empty line. Press the "Enter" or "Return" key before the translation text.
  • Do not change anything in curly brackets {xyz }
  • If you see some untranslated text on HQ and can't find that text on transifex, it's possible it hasn't been marked for translation.  Please contact CommCareHQ support so devs can mark it for translation.
  • If first letter in the string is capital make sure your translated suggestion is also capital
  • Do not translate CommCare branded features into other languages, such as CommCare Exchange. Keep this as CommCare Exchange, pas CommCare Échange
French
  • Capitalize all major words not small articles
  • If there is an article in between such as Remplacer l'icône, you can keep the first letter a lowercase
  • Do not use infinitive form for command verbs. E.g. Télécharger should be Téléchargez



  • No labels