What to consider in translation and proofreading
Most often, problems with translations arise in the proctoring-project (the django.po or djangojs.po files).
Variable names should not be translated. How to recognize a variable name? It is written inside curly brackets {} or using %()
# Example 1 msgid "Invalid pk "{pk_value}" - object does not exist." msgstr "Ungültige pk "{pk_value}" - object does not exist." # here pk_value is a variable name and it should not be translated.# Example 2 msgid "Session %(session_id)d in Room %(room_id)s" msgstr "Session %(session_id)d im Raum %(room_id)s" # here session_id and room_id are variable names.If there is an empty line or \n (newline symbol) at the beginning or end of the key that needs to be translated, they need to be preserved (Crowdin warns about this, but the translator may ignore the warning).
# Example msgid "\n" " Sorry but reserve for your exam \"%(exam_name)s\" on %(start_date)s %(start_time)s (timezone %(timezone)s) is expired.\n" " Please, log in proctoring service and sign in for another time.\n" " " msgstr "\n" " \nThe reservation time for your exam "%(exam_name)s" on %(start_date)s %(start_time)s (time zone %(timezone)s) has expired\n" " Please log in to the proctoring system and schedule another time.\n" "In the dashboard translations, there are keys of the following type:
"remove-multiple-slots": "Remove {n} slots \| Remove {n} slots \| Remove {n} slots \| Remove {n} slots",This is needed for languages that have cases, for example, in Russian the translation will look like this:
"remove-multiple-slots": "Удалить {n} слотов \| Удалить {n} слот \| Удалить {n} слота \| Удалить {n} слотов",The django.po translations may contain HTML markup. For example, it can be recognized by
<tag name>. Tag names should not be translated and the layout should be carefully transferred. Also, if quotes are used somewhere, and there is a \ next to them, for example, \” — do not delete it, this is escaping.