Checks and fixups¶
In addition to Quality checks, Weblate can also automatically fix some common errors in translated strings. This can be quite a powerful feature to prevent common mistakes in translations, however use it with caution as it can cause silent corruption as well.
Weblate does a wide range of quality checks on messages. The following section describes them in more detail. The checks also take account special rules for different languages, so if you think the result is wrong, please report a bug.
These are executed on every translation change and help translators to keep good quality of translations.
The source and translated strings are the same at least in one of the plural forms. This check ignores some strings which are quite usually the same in all languages and strips various markup, which can occur in the string, to reduce the number of false positives.
This check can help finding strings which were mistakenly not translated.
Starting or trailing newline¶
Source and translation do not both start (or end) with a newline.
Newlines usually appear in source string for a good reason, so omitting or adding it can lead to formatting problems when the translated text is used in the application.
Source and translation do not both start with the same number of spaces.
A space in the beginning is usually used for indentation in the interface and thus is important to keep.
Source and translation do not both end with a space.
Trailing space is usually used to give space between neighbouring elements, so removing it might break application layout.
Source and translation do not both end with a full stop. Full stop is also checked in various language variants (Chinese, Japanese, Devanagari or Urdu).
When the original string is a sentence, the translated one should be a sentence as well to be consistent within the translated content.
Source and translation do not both end with a colon or the colon is not correctly spaced. This includes spacing rules for languages like French or Breton. Colon is also checked in various language variants (Chinese or Japanese).
Colon is part of a label and should be kept to provide consistent translation. Weblate also checks for various typographic conventions for colon, for example in some languages it should be preceded with space.
Source and translation do not both end with a question mark or it is not correctly spaced. This includes spacing rules for languages like French or Breton. Question mark is also checked in various language variants (Armenian, Arabic, Chinese, Korean, Japanese, Ethiopic, Vai or Coptic).
Question mark indicates question and these semantics should be kept in translated string as well. Weblate also checks for various typographic conventions for question mark, for example in some languages it should be preceded with space.
Source and translation do not both end with an exclamation mark or it is not correctly spaced. This includes spacing rules for languages like French or Breton. Exclamation mark is also checked in various language variants (Chinese, Japanese, Korean, Armenian, Limbu, Myanmar or Nko).
Exclamation mark indicates some important statement and these semantics should be kept in translated string as well. Weblate also checks for various typographic conventions for exclamation mark, for example in some languages it should be preceded with space.
Source and translation do not both end with an ellipsis. This only checks for
real ellipsis (
…) not for three dots (
An ellipsis is usually rendered nicer than three dots, so it’s good to keep it when the original string was using that as well.
Source and translation do not both end with a semicolon. This can be useful to keep formatting of entries such as desktop files.
Translation is too long to accept. This only checks for the length of translation characters.
Source and translation usually do not have same amount of characters, but if the translation is too long, it can be affect a rendered shape. For example, in some UI widget, it should be kept in a specific length of characters in order to show the complete translation within limited space.
Unlike the other checks, the flag should be set as a
key:value pair like
Format string does not match source. Weblate supports following formats:
- Python format
- Python brace format
- PHP format
- C format
- Perl format
- AngularJS interpolation string
Omitting format string from translation usually cause severe problems, so you should really keep the format string matching the original one.
Some plural forms are not translated. Check plural form definition to see for which counts each plural form is being used.
Not filling in some plural forms will lead to showing no text in the application in the event the plural would be displayed.
Some plural forms are translated the same. In most languages the plural forms have to be different, that’s why this feature is actually 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.
Weblate checks translations of the same string across all translation within a project to help you keep consistent translations.
Has been translated¶
This string has been translated in the past. This can happen when the translations have been reverted in VCS or otherwise lost.
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.
This code is used as a simple markup to highlight important parts of a message, so it is usually a good idea to keep them.
The method for detecting BBcode is currently quite simple so this check might produce false positives.
Translation contains extra zero-width space (<U+200B>) character.
This character is usually inserted by mistake, though it might have a legitimate use. Some programs might have problems when this character is used.
Invalid XML markup¶
New in version 2.8.
The XML markup is invalid.
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 the Unicode character is in most cases the better approach and looks better when rendered.
Multiple failing checks¶
More translations of this string have some failed quality checks. This is usually an indication that something could be done about improving the source string.
This check can quite often be caused by a missing full stop at the end of a sentence or similar minor issues which translators tend to fix in translations, while it would be better to fix it in a source string.