Translating using Weblate

Thank you for interest in translating using Weblate. Weblate can be used to translate many projects and every project can have different settings which influence whether you can translate or add suggestions only.

Overall there are following possibilities for translating:

  • Projects accepts direct translations
  • Projects accepts only suggestions and those are accepted once they get defined number of votes

There are also some options for translation project visibility:

  • It can be publicly visible and anybody can contribute
  • It can be visible only to certain group of translators


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.


Permissions might vary depending on your setup, what is described is default Weblate behaviour.


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 (see Secondary languages).

Bellow translation can be also shown suggestions from other users, which you can accept or delete.


What are plurals? Generally spoken plurals are words which take into account numeric meanings. But as you may imagine each language has its own definition of plurals. English, for example, supports one plural. We have a singular definition, for example “car”, which means implicit one car, and we have the plural definition, “cars” which could mean more than one car but also zero cars. Other languages like Czech or Arabic have more plurals and also the rules for plurals are different.

Weblate does have support for translating these and offers you one field to translate every plural separately. The number of fields and how it is used in the translated application depends on plural equation which is different for every language. Weblate shows the basic information, but you can find more detailed description in the Language Plural Rules from the Unicode Consortium.


Keyboard shortcuts

While translating you can use following keyboard shortcuts:

Navigates to first translation in current search.
Navigates to last translation in current search.
Navigates to previous translation in current search.
Navigates to next translation in current search.
Alt+Enter or Ctrl+Enter or Command+Enter
Saves current translation.
Ctrl+Shift+Enter or Command+Shift+Enter
Unmarks translation as fuzzy and submits it.
Focus translation editor.
Focus comment editor.
Shows machine translation tab.
Copies placeable of given number from source string.
Copy machine translation of given number to current translation.
Ignore failing check of given number.
Shows nearby strings tab.
Shows search tab.
Copies source string
Toggles fuzzy flag.

Translation context

Translation context part allows you to see related information about current string.

String attributes
Things like message ID, context (msgctxt) or location in source code.
Screenshots can be uploaded to Weblate to better show translators where the string is used, see Visual context for strings.
Nearby messages
Displays messages which are located nearby in translation file. These usually are also used in similar context and you might want to check them to keep translation consistent.
Similar messages
Messages which are similar to currently one, which again can help you to stay consistent within translation.
All locations
In case message appears in multiple places (eg. multiple components), this tab shows all of them and for inconsistent translations (see Inconsistent) you can choose which one to use.
Displays words from project glossary which are used in current message.
Recent edits
List of people who have changed this message recently using Weblate.
Project information like instructions for translators or information about VCS repository.

If translation format supports it, you can also follow links to source code which contains translated strings.

Translation history

Every change is by default (unless disabled in component 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.

Managing glossaries

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:


Machine translation

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.

Automatic translation

Weblate can be used for merging or copying translations from one component to another. This tool is called Automatic translation and is accessible in the Tools menu:


You can choose which components you want to use as source and how to handle conflicts.

This feature can be useful in several situations like consolidating translation between different components (eg. website and application) or when bootstrapping translation for new component using existing translations (translation memory).