Crowdin Administration

Roles

 * Translator
 * Ability to suggest and vote on translations in a language.
 * Ask for more context; ask for clarity; report mistakes in the string to be translated; dispute a current translation entry etc...


 * Proofreader
 * Manages the translations that translators suggest and/or vote on. The proofreader then accepts/reject the translation.
 * An extra step is needed to also give the final approval of the the translation string. Because 'Approving' a translation requires reading it again and check-marking it, it provides a type of 'Quality Assurance' layer. Once a translation is approved it will mark the string green and will add more progress to the green status bar of the language that is getting translated. The green progress bar can indicate the 'health' of the language being translated. It also allows an extra flexibility to the developers to merge translations that have only been approved.
 * Address the questions of translators within the crowdin interface. For example, if more context is needed; or there's an error in the string that is to be translated, or a translation that was accepted or approved is disputed etc...
 * Report to devs any relevant issues that require changes to the source code etc..

Filtering strings


Filtering strings is a useful feature for proofreaders and managers. It give the person ability to effectively sort through many translation strings to for example show only strings that have been marked as 'missing more contextual information' or 'incorrect source string'. This service that the translators are doing for FreeCAD provides an extra layer of QA testing. Many typos, grammar issues, and even bugs can be exposed via checking translation strings. And so users mark these said problematic strings for us to respond to and eventually 'Resolve'.

Tips to fix translation issues
A general tip when you find problems with the translations, if you want to help us debugging further:
 * 1) Locate a string in the FreeCAD UI that is not translated, ex. "Solver Calculix Standard"
 * 2) If you are not sure to which workbench this string belongs, locate this string in the FreeCAD source code (ex. grep -r "Solver Calculix Standard" *). It should indicate the workbench, ex. src/Mod/Fem/femcommands/commands.py, we know that string is in FEM workbench.
 * 3) Search for this string on https://crowdin.com/project/freecad/fr (change /fr with any other language, it doesn't matter), go to the FEM workbench and verify that it is there and translated.

Several possibilities:
 * 1) The string is not on Crowdin: The string has not been picked up by the script that gathers strings from FreeCAD and packs them into .ts files. There are two possibilities there:
 * 2) * The string has not been properly placed into a translate (or QT_TRANSLATE_NOOP for special cases like command names), that means there is a problem that must be solved in the source code, or
 * 3) * Everything seems normal, and the gathering script has a problem with that specific string, which can happen as it has many bugs.
 * 4) The string is on Crowdin. Several possibilities:
 * 5) * Simply the latest Crowdin strings have not yet been merged. You can check if that's the case by searching for the string like point 2 above, and see if that string appears in the translated .ts files (ex. src/Mod/Fem/Gui/Resources/translations/Fem_fr.ts: Solver CalculiX Standard. This indicates that the translated string is in the FreeCAD source and everything should be fine in the next build. If not, see the following bullet.
 * 6) * The original strings and the translated versions are there in the .ts files. Then, there is a more complex problem happening and we'll need to do some debugging. Check in the source file if the original string is handled by translate or QT_TRANSLATE_NOOP. Verify that the context matches what is on crowdin. In case of QT_TRANSLATE_NOOP, there are several particular cases. For commands, the context must be the exact command name, the same used in FreeCADGui.runCommand. For properties, it must be "App::Property".

Example where "Solver Calculix Standard" was not translated. "Solver Calculix Standard" is in the sources, on Crowdin, and in the translated .ts files. So we are in the case of the second bullet point 2. In the source file, we see that the context is set as "FEM_SolverCxxtools". However, trying Gui.runCommand("FEM_SolverCxxtools") in FreeCAD gives a "No such command" error. It was our problem, the context is wrong. Below in the file, we find:

FreeCADGui.addCommand(   "FEM_SolverCalculixCxxtools",    _SolverCxxtools )

Which is exactly where our problem lies: the context is not the command name. It should be "FEM_SolverCalculixCxxtools" instead of "FEM_SolverCxxtools". Get in touch with an administrator and explain the issue. A git commit fixed the point.

Keyboard shortcuts


Using keyboard shortcuts is a major time-saving and efficiency tip. It is worth learning if you're a translator, proofreader, or manager. It is possible to see the list of keyboard shortcuts by pressing on the keyboard icon in the top right-hand portion of the Crowdin user interface.

Important Note: Please be mindful not to introduce mistakes in to translation strings produced by rogue keypresses that were meant to be a keyboard shortcut.

Frequently used shortcuts:
 * Copy source translation: +
 * Save translation: +
 * Approve translation: + (relevant for proofreaders)

Links

 * Localisation
 * Crowdin Scripts
 * Release process