This document briefly covers how to translate application using Weblate.
While everybody can browse projects, view translations or suggest them, only registered users are allowed to actually save changes and are credited for every translation made.
You can register following two simple steps:
User profile contains your preferences, name and email. Name and email are being used in Git commits, so keep this information accurate.
Choose here which languages you prefer to translate. These will be offered to you on main page to have easier access to translations.
You can define secondary languages, which will be shown you while translating together with source language. Example can be seen on following image, where Czech language is shown as secondary:
You can subscribe to various notifications on Subscriptions tab. You will receive notifications for selected events on chosen projects for languages you have indicated for translation (see above).
Each project can contain various subprojects. The reason for this structure is that all subprojects in a project are expected to have a lot in common. Whenever translation is made in single subproject, it is automatically propagated to others within same project (this is especially useful when translating more version of same project).
Weblate supports both export and import of translation files. This allows you to work offline and then merge changes back. Your changes will be merged within existing translation (even if it has been changed meanwhile).
Note
This ability might be limited by Access control.
You can choose how imported strings will be merged out of following options:
Additionally, when adding as a translation, you can choose whether to overwrite already translated strings or not.
Once you navigate to translation, you will be shown set of links which lead to translation. These are results of various checks, like untranslated or fuzzy strings. Should no other checks fire, there will be still link to all translations. Alternatively you can use search field to find translation you need to fix.
On translate page, you are shown source string and edit area for translating. Should the translation be plural, multiple source strings and edit areas are shown, each described with label for plural form.
Any special whitespace chars are underlined in red and indicated with grey symbols. Also more than one space is underlined in red to allow translator to keep formatting.
There are various extra information which can be shown on this page. Most of them are coming from the project source code (like context, comments or where the message is being used). When you configure secondary languages in your preferences, translation to these languages will be shown.
Bellow translation can be also shown suggestions from other users, which you can accept or delete.
Translation context part allows you to see related information about current string.
Every change is by default (unless disabled in subproject settings) saved in the database and can be reverted. Of course you can still also revert anything in underlaying version control system.
Each project can have assigned glossary for any language. This could be used for storing terminology for given project, so that translations are consistent. You can display terms from currently translated string in bottom tabs.
On project page, on Glossaries tab, you can find link Manage all glossaries, where you can start new glossaries or edit existing ones. Once glossary is existing, it will also show up on this tab.
On further page, you can choose which glossary to manage (all languages used in current project are shown). Following this language link will lead you to page, which can be used to edit, import or export the glossary:
As an anonymous user, you have no other choice than making a suggestion. However if you are logged in you can still decide to make only a suggestion instead of saving translation, for example in case you are unsure about the translation and you want somebody else to review it.
Weblate provides you widgets to share on your website or other sources to promote translation project. It also has nice welcome page for new contributors to give them basic information about the translation. Additionally you can share information about translation using Facebook or Twitter.
Based on configuration and your language, Weblate provides buttons for following machine translation tools.
All machine translations are available on single tab on translation page.
See also
In addition to Checks, Weblate can also automatically fix some common errors in translated strings. This can be quite powerful feature to prevent common mistakes in translations, however use it with caution as it can cause silent corruption as well.
See also
Weblate does wide range of quality checks on messages. The following section describes them in more detail. The checks take account also special rules for different languages, so if you think the result is wrong, please report a bug.
See also
These are executed on every translation change and help translators to keep good quality of translations.
The source and translated strings are same at least in one of plural forms. This checks ignores some strings which are quite usually same in all languages and strips various markup, which can occur in the string, to reduce number of false positives.
Source and translated do not both start with a newline.
Source and translated do not both end with a newline.
Source and translation do not both start with same number of spaces. Space in beginning is usually used for indentation in the interface and thus is important.
Source and translated do not both end with a space.
Source and translated do not both end with a full stop. Full stop is also checked in various language variants (Chinese, Japanese, Devanagari or Urdu).
Source and translated do not both end with a colon or colon is not correctly spaced. This includes spacing rules for French or Breton. Colon is also checked in various language variants (Chinese or Japanese).
Source and translated do not both end with question mark or it is not correctly spaced. This includes spacing rules for French or Breton. Question mark is also checked in various language variants (Armenian, Arabic, Chinese, Korean, Japanese, Ethiopic, Vai or Coptic).
Source and translated do not both end with exclamation mark or it is not correctly spaced. This includes spacing rules for French or Breton. Exclamation mark is also check in various language variants (Chinese, Japanese, Korean, Armenian, Limbu, Myanmar or Nko).
Source and translation do not both end with an ellipsis. This only checks for real ellipsis (u2026) not for three commas (...).
Python format string does not match source.
PHP format string does not match source.
C format string does not match source.
Some plural forms are not translated. Check plural form definition to see for which counts each plural form is being used.
More different translations of one string in a project. This can also lead to inconsistencies in displayed checks. You can find other translations of this string on All locations tab.
Text direction can be either LTR or RTL.
Number of \n in translation does not match source. Usually escaped newlines are important for formatting program output, so this should match to source.
BBcode in translation does not match source. The method for detecting BBcode is currently quite simple.
Translation contains extra zero-width space (<U+200B>) character. This character is usually inserted by mistake.
XML tags in translation do not match source. This usually means resulting output will look different. In most cases this is not desired result from translation, but occasionally it is desired.
Source checks can help developers to improve quality of source strings.
The string is optionally used as plural, but not using plural forms. In case your translation system supports this, you should use plural aware variant of it.
For example with Gettext in Python it could be:
from gettext import ngettext
print ngettext('Selected %d file', 'Selected %d files', files) % files
The string uses three dots (...) instead of an ellipsis character (…). Using Unicode character is in most cases better approach and looks better.