Table of Contents |
---|
Create a free account in Transifex:
https://www.transifex.com/signup/
Log into Transifex
Search for "CommCare HQ" in Transifex's explore page.
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.
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 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.
Code Block |
---|
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:
Code Block |
---|
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.
Code Block |
---|
%(days_remaining)03d days remaining
Faltan %(days_remaining)03d días |
underscore.js translations:
Code Block |
---|
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 <:
Code Block |
---|
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> |
Code Block |
---|
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 |
|
...
|
...
| |
French |
|
...