About

In these COVID-19 times, there is an urgent need to disseminate credible COVID related information in local languages.

To address this issue, we have built a crowd-sourced translation platform, Anuvad, using weblate. Here, people can translate resources to their own (or preferred) language. The platform is equipped with features such as Version Control system, Glossary, Translation Memory among others to ensure simple, manageable, and consistent translations.

Installation

Check INSTALL.md

Anuvad basics

Project structure

In Anuvad, translations are organized into COVID-19 topics and COVID-19 resources. Each topic can contain a number of resources and those in turn contain translations into individual languages.

Registration and user profile

Registration

Everybody can browse projects, view translations or suggest translations by default. Only registered users are allowed to actually save changes, and are credited for every translation made.

You can register by following a few simple steps:

  1. Fill out the registration form with your credentials.
  2. Activate registration by following the link in the e-mail you receive.
  3. Optionally adjust your profile to choose which languages you know.

Dashboard

When you log in, you will see an overview of COVID19 topics and COVID19 resources, as well as their respective translation progression.

Resources you are watching are shown by default, and cross-referenced with your preferred languages.

Hint

You can switch to different views using the navigation tabs.

_images/dashboard-dropdown.png

The menu has these options:

  • Projects > Browse all projects in the main menu (or in the menu ToolsAll projects in the Dashboard) showing translation status for each COVID19 topic on the Anuvad instance.
  • Selecting a language in the main menu Languages will show translation status of all projects, filtered by one of your primary languages.
  • Watched translations in the Dashboard will show translation status of only those COVID19 topics you are watching, filtered by your primary languages.

User profile

The user profile is accessible by clicking your user icon in the top-right of the top menu, then the Settings menu.

The user profile contains your preferences. Name and e-mail address is used in VCS commits, so keep this info accurate.

Note

All language selections only offer currently translated languages.

Hint

Request or add other languages you want to translate by clicking the button to make them available too.

Translated languages

Choose which languages you prefer to translate, and they will be offered on the main page of watched projects, so that you have easier access to these all translations in each of those languages.

images/your-translations.png

Secondary languages

You can define which secondary languages are shown to you as a guide while translating. An example can be seen in the following image, where the Hebrew language is shown as secondarily:

_images/secondary-language.png

Notifications

Subscribe to various notifications from the Subscriptions tab. Notifications for selected events on watched or administered projects will be sent to you per e-mail.

Some of the notifications are sent only for events in your languages (for example about new strings to translate), while some trigger at component level (for example merge errors). These two groups of notifications are visually separated in the settings.

You can toggle notifications for watched COVID19 topics and administered COVID19 topics and it can be further tweaked (or muted) per project and component. Visit the component page and select appropriate choice from the Watching menu.

Note

You will not receive notifications for your own actions.

_images/profile-subscriptions.png

Account

The Account tab lets you set up basic account details, connect various services you can use to login into Weblate, completely remove your account, or download your user data.

Note

The list of services depends on your Weblate configuration, but can be made to include popular sites such as GitLab, GitHub, Google, Facebook, or Bitbucket or other OAuth 2.0 providers.

_images/authentication.png

Translating using Anuvad

Thank you for interest in translating using Anuvad. COVID19 topics can either be set up for direct translation, or by way of accepting suggestions made by users without accounts.

Overall, there are two modes of translation:

  • The COVID19 topic accepts direct translations
  • The COVID19 topic accepts only suggestions, which are automatically validated once a defined number of votes is reached

Please see Translation workflows for more information on translation workflow.

Options for translation project visibility:

  • Publicly visible and anybody can contribute
  • Visible only to a certain group of translators

Translation projects

Translation projects hold related resources, related to the same topic.

_images/project-overview.png

Suggestions

Note

Actual permissions might vary depending on your Anuvad configuration.

Anonymous users can only (if permitted) forward suggestions. Doing so is still available to signed in users, in cases where uncertainty about the translation arises, which will prompt another translator to review it.

The suggestions are scanned on a daily basis to remove duplicate ones or suggestions that match the current translation.

Comments

The comments can be posted in two scopes - source sentence or translation. Choose the one which matches the topic you want to discuss. The source sentence comments are good for prividing feedback on the original string, for example that it should be rephrased or it is confusing.

You can use Markdown syntax in the comments and mention other users using @mention.

Shapings

Shapings are used to group variants of the string in different lengths. The frontend can use different strings depending on the screen or window size.

See also

String shapings

Labels

Labels are used to categorize strings within a topic. These can be used to further customize the localization workflow, for example to define categories of strings.

See also

String labels

Translating

On the translation page, the source string and an edit area for translating are shown. Should the translation be plural, multiple source strings and edit areas are shown, each described and labeled in plural form.

All special whitespace characters are underlined in red and indicated with grey symbols. More than one subsequent space is also underlined in red to alert the translator to a potential formatting issue.

Various bits of extra information can be shown on this page, most of which coming from the project source code (like context, comments or where the message is being used). When you choose secondary languages in your preferences, translation to these languages will be shown (see Secondary languages) above the source string.

Below the translation, any suggestion made by others will be shown, which you can in turn accept, accept with changes, or delete.

Keyboard shortcuts

The following keyboard shortcuts can be utilized during translation:

Alt+Home
Navigates to first translation in current search.
Alt+End
Navigates to last translation in current search.
Alt+PageUp
Navigates to previous translation in current search.
Alt+PageDown
Navigates to next translation in current search.
Ctrl+Enter or Option+Enter
Saves current translation.
Ctrl+Shift+Enter or Option+Shift+Enter
Unmarks translation as fuzzy and submits it.
Ctrl+E or Option+E
Focus translation editor.
Ctrl+U or Option+U
Focus comment editor.
Ctrl+M or Option+M
Shows machine translation tab.
Ctrl+<NUMBER> or Option+<NUMBER>
Copies placeable of given number from source string.
Ctrl+M <NUMBER> or Option+M <NUMBER>
Copy machine translation of given number to current translation.
Ctrl+I <NUMBER> or Option+I <NUMBER>
Ignore failing check of given number.
Ctrl+J or Option+J
Shows nearby strings tab.
Ctrl+S or Option+S
Shows search tab.
Ctrl+O or Option+O
Copies source string.
Ctrl+T or Option+T
Toggles “Needs editing” flag.

Translation context

This contextual description provides related information about the current string.

String attributes
Things like message ID, context (msgctxt) or location in source code.
Screenshots
Screenshots can be uploaded to Weblate to better inform translators of where and how the string is used, see Visual context for strings.
Nearby strings
Displays neighbouring messages from the translation file. These are usually also used in a similar context and prove useful in keeping the translation consistent.
Other occurences
In case a message appears in multiple places (e.g. multiple resources), this tab shows all of them if they are found to be inconsistent (see check-inconsistent). You can choose which one to use.
Translation memory
Look at similar strings translated in past, see Memory Management.
Glossary
Displays terms from the project glossary used in the current message.
Recent edits
List of people whom have changed this message recently using Weblate.
Topic
Topic information like instructions for translators, or information about its version control system repository.

If the translation format supports it, you can also follow supplied links to respective source code containing each source string.

Translation history

Every change is by default (unless turned off in resource settings) saved in the database, and can be reverted. Optionally one can still also revert anything in the underlying version control system.

Translated string length

Anuvad can limit length of translation in several ways to ensure the translated string is not too long:

  • The default limitation for translation is ten times longer than source string. This can be turned of by LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH. In case you are hitting this, it might be also caused by monolingual translation being configured as bilingual, making Weblate see translation key as source string instead of the actual source string. See Bilingual and monolingual formats for more info.
  • Maximal length in characters defined by translation file or flag, see Maximum length.
  • Maximal rendered size in pixels defined by flags, see check-max-size.

Glossary

Each project can have an assigned glossary for any language as a shorthand for storing terminology. Consistency is more easily maintained this way. Terms from the currently translated string can be displayed in the bottom tabs.

Managing glossaries

On the Glossaries tab of each project page, you can edit existing glossaries. An empty glossary for a given project is automatically created when a language is added to a component (to do this, select a component, its Translation tab and click Add new language for translation). Once a glossary exists, it will also show up in this list.

_images/project-glossaries.png

Glossaries are shared among all components of the same project.

On this list, you can choose which glossary to manage (all languages used in the current project are shown). Following one of the language links will lead you to a page which can be used to edit, import or export the selected glossary, or view the edit history:

_images/glossary-edit.png

Machine translation

Based on configuration and your translated language, Anuvad provides you suggestions from several machine translation tools. All machine translations are available in a single tab of each translation page.

See also

You can find the list of supported tools in Machine translation.

Automatic translation

You can use automatic translation to bootstrap translation based on external sources. This tool is called Automatic translation accessible in the Tools menu, once you have selected a component and a language:

_images/automatic-translation.png

Two modes of operation are possible:

  • Using other Weblate components as a source for translations.
  • Using selected machine translation services with translations above a certain quality threshold.

You can also choose which strings are to be auto-translated.

Warning

Be mindful that this will overwrite existing translations if employed with wide filters such as All strings.

Useful in several situations like consolidating translation between different components (for example website and application) or when bootstrapping translation for a new component using existing translations (translation memory).

Rate limiting

To avoid abuse of the interface, there is rate limiting applied to several operations like searching, sending contact form or translating. In case you are are hit by this, you are blocked for a certain period until you can perform the operation again.

The default limits are described in the administrative manual in Rate limiting, but can be tweaked by configuration.

Downloading and uploading translations

You can export files from a translation, make changes, and import them again. This allows working offline, and then merging changes back into the existing translation. This works even if it has been changed in the meantime.

Note

The available options might be limited by Access control.

Downloading translations

From the topic or resource dashboard, translatable files can be downloaded using the Download source file in the Files menu, producing a copy of the file as it is stored in the upstream Version Control System.

You can either download the original file as is or converted into one of widely used localization formats. The converted files will be enriched with data provided in Anuvad such as additional context, comments or flags.

Several file formats are available, including a compiled file to use in your choice of application (for example .mo files for GNU Gettext) using the Files menu.

Uploading translations

When you have made your changes, use Upload translation in the Files menu.

Any file in a supported file format can be uploaded, but it is still recommended to use the same file format as the one used for translation, otherwise some features might not be translated properly.

The uploaded file is merged to update the translation, overwriting existing entries by default (this can be turned off or on in the upload dialog).

Import methods

These are the choices presented when uploading translation files:

Add as translation
Imported translations are added as translations. This is the most common usecase, and the default behavior.
Add as suggestion
Imported translations are added as suggestions, do this when you want to have your uploaded strings reviewed.
Add as translation needing edit
Imported translations are added as translations needing edit. This can be useful when you want translations to be used, but also reviewed.
Replace existing translation file
Existing file is replaced with new content. This can lead to loss of existing translations, use with caution.

There is also an option for how to handle strings needing edit in the imported file. Such strings can be handle in one of the three following ways: “Do not import”, “Import as string needing edit”, or “Import as translated”.

_images/export-import.png

Checks and fixups

The quality checks help catch common translator errors, ensuring the translation is in good shape. The checks are divided into three levels of severity, and can be ignored in case of false positives.

Once submitting a translation with a failing check, this is immediately shown to the user:

_images/checks.png

Automatic fixups

In addition to Quality checks, Weblate can also fix some common errors in translated strings automatically. Use it with caution to not have it add errors.

See also

AUTOFIX_LIST

Quality checks

Anuvad employs a wide range of quality checks on strings. The following section describes them all in further detail. There are also language specific checks. Please file a bug if anything is reported in error.

Translation checks

Executed upon every translation change, helping translators maintain good quality translations.

Unchanged translation

Happens if the source and corresponding translation strings is identical, down to at least one of the plural forms. Some strings commonly found across all languages are ignored, and various markup is stripped. This reduces the number of false positives.

This check can help find strings mistakenly untranslated.

The default behavior of this check is to exclude words from the built-in blacklist from the checking. These are words which are frequently not being translated. This is useful to avoid false positives on short strings, which consist only of single word which is same in several languages. This blacklist can be disabled by adding strict-same flag to string or component.

Starting or trailing newline

Source and translation do not both start (or end) with a newline.

Newlines usually appear in source strings for good reason, omissions or additions can lead to formatting problems when the translated text is put to use.

Starting spaces

Source and translation do not both start with the same number of spaces.

A space in the beginning of a string is usually used for indentation in the interface and thus important to keep.

Trailing space

Checks that trailing spaces are replicated between both source and translation.

Trailing space is usually utilized to space out neighbouring elements, so removing it might break layout.

Double space

Checks that double space is present in translation to avoid false positives on other space-related checks.

Check is false when double space is found in source meaning double space is intentional.

Trailing stop

Checks that full stops are replicated between both source and translation. The presence of full stops is checked for various languages where they do not belong (Chinese, Japanese, Devanagari or Urdu).

Trailing colon

Checks that colons are replicated between both source and translation. The presence of colons is also checked for various languages where they do not belong (Chinese or Japanese).

Trailing question mark

Checks that question marks are replicated between both source and translation. The presence of question marks is also checked for various languages where they do not belong (Armenian, Arabic, Chinese, Korean, Japanese, Ethiopic, Vai or Coptic).

Trailing exclamation

Checks that exclamations are replicated between both source and translation. The presence of exclamation marks is also checked for various languages where they do not belong (Chinese, Japanese, Korean, Armenian, Limbu, Myanmar or Nko).

Punctuation spacing

New in version 3.9.

Checks that there is non breakable space before double punctuation sign (exclamation mark, question mark, semicolon and colon). This rule is used only in a few selected languages like French or Breton, where space before double punctuation sign is a typographic rule.

Trailing ellipsis

Checks that trailing ellipses are replicated between both source and translation. This only checks for real ellipsis () not for three dots (...).

An ellipsis is usually rendered nicer than three dots in print, and sounds better with text-to-speech.

Trailing semicolon

Checks that semicolons at the end of sentences are replicated between both source and translation. This can be useful to keep formatting of entries such as desktop files.

Maximum length

Checks that translations are of acceptable length to fit available space. This only checks for the length of translation characters.

Unlike the other checks, the flag should be set as a key:value pair like max-length:100.

Inconsistent

Anuvad checks translations of the same string across all translation within a project to help you keep consistent translations.

The check fails on differing translations of one string within a project. This can also lead to inconsistencies in displayed checks. You can find other translations of this string on the Other occurences tab.

Has been translated

Means a sentence has been translated already. This can happen when the translations have been reverted in VCS or lost otherwise.

Mismatched \n

Usually escaped newlines are important for formatting program output. Check fails if the number of \\n literals in translation do not match the source.

Mismatched n

Usually newlines are important for formatting program output. Check fails if the number of \n literals in translation do not match the source.

BBcode markup

BBCode represents simple markup, like for example highlighting important parts of a message in bold font, or italics.

This check ensures they are also found in translation.

Note

The method for detecting BBcode is currently quite simple so this check might produce false positives.

Zero-width space

Zero-width space (<U+200B>) characters are used to break messages within words (word wrapping).

As they are usually inserted by mistake, this check is triggered once they are present in translation. Some programs might have problems when this character is used.

Maximum size of translation

New in version 3.7.

Translation rendered text should not exceed given size. It renders the text with line wrapping and checks if it fits into given boundaries.

This check needs one or two parameters - maximal width and maximal number of lines. In case the number of lines is not provided, one line text is considered.

You can also configure used font by font-* directives (see Customizing behavior), for example following translation flags say that the text rendered with ubuntu font size 22 should fit into two lines and 500 pixels:

max-size:500:2, font-family:ubuntu, font-size:22

Hint

You might want to set font-* directives in Component configuration to have the same font configured for all strings within a component. You can override those values per string in case you need to customize it per string.

Source checks

Source checks can help contributors improve the quality of source sentences.

Multiple failing checks

Numerous translations of this string have failing quality checks. This is usually an indication that something could be done to improve the source string.

This check failing 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 translation, while it would be better to fix it in the source string.

Searching

Advanced queries using boolean operations, parentheses, or field specific lookup can be used to find the strings you want.

When not defining any field, the lookup happens on Source, Target and Context fields.

_images/search.png

Fields

source:TEXT
Source string case insensitive search.
target:TEXT
Target string case insensitive search.
context:TEXT
Context string case insensitive search.
note:TEXT
Comment string case insensitive search.
location:TEXT
Location string case insensitive search.
priority:NUMBER
String priority.
added:DATETIME
Timestamp when string was added to Anuvad.
state:TEXT
State search (approved, translated, needs-editing, empty, read-only), supports Field operators.
pending:BOOLEAN
String pending for flushing to VCS.
has:TEXT
Search for string having attributes (plural, suggestion, comment, check, ignored-check, translation, shaping).
is:TEXT
Search for string states (pending, translated, untranslated).
language:TEXT
String target language.
changed_by:TEXT
String was changed by author with given username.
changed:DATETIME
String was changed on date, supports Field operators.
check:TEXT
String has failing check.
ignored_check:TEXT
String has ignored check.
comment:TEXT
Search in user comments.
comment_author:TEXT
Filter by comment author.
suggestion:TEXT
Search in suggestions.
suggestion_author:TEXT
Filter by suggestion author.

Boolean operators

You can combine lookups using AND, OR, NOT and parentheses to form complex queries. For example: state:translated AND (source:hello OR source:bar)

Field operators

You can specify operators, ranges or partial lookups for date or numeric searches:

state:>=translated
State is translated or better (approved).
changed:2019
Changed in year 2019.
changed:[2019-03-01 to 2019-04-01]
Changed between two given dates.

Regular expressions

Anywhere text is accepted you can also specify a regular expression as r"regexp". For instance, to search for all source strings which contain any digit between 2 and 5, use: source:r"[2-5]"

Translation workflows

Several translation workflows are supported.

The following is not a complete list of ways to configure Weblate. You can base other workflows on the most usual examples listed here.

Translation access

The Access control is not much discussed in the workflows as each access control option can be applied to any workflow. Please consult that documentation for information on how to manage access to translations.

In the following chapters, any user means a user who has access to the translation. It can be any authenticated user if the project is public, or a user that has a Translate permission for the project.

Translation states

Each translated string can be in one of following states:

Untranslated
Translation is empty, it might or not be stored in the file, depending on the file format.
Needs editing
Translation needs editing, this is usually the result of a source string change. The translation is stored in the file, depending on the file format it might be marked as needing edit (for example as it gets a fuzzy flag).
Waiting for review
Translation is made, but not reviewed. It is stored in the file as a valid translation.
Approved
Translation has been approved in the review. It can no longer be changed by translators, but only by reviewers. Translators can only add suggestions to it.
Suggestions
Suggestions are stored in Weblate only and not in the translation file.

Direct translation

This is most usual setup for smaller teams, anybody can directly translate. This is also the default setup in Weblate.

  • Any user can edit translations.
  • Suggestions are optional ways to suggest changes, when translators are not sure about the change.
Setting Value Note
Enable reviews Off Configured at project level.
Enable suggestions On It is useful for users to be able to suggest when they are not sure.
Suggestion voting Off  
Autoaccept suggestions 0  
Translators group Users Or Translate with access control.
Reviewers group N/A Not used.

Peer review

With this workflow, anybody can add suggestions, and need approval from additional member(s) before it is accepted as a translation.

  • Any user can add suggestions.
  • Any user can vote for suggestions.
  • Suggestions become translations when given a predetermined number of votes.
Setting Value Note
Enable reviews off Configured at project level.
Enable suggestions on  
Suggestion voting on  
Autoaccept suggestions 1 You can set higher value to require more peer reviews.
Translators group Users Or Translate with access control.
Reviewers group N/A Not used, all translators review.

Dedicated reviewers

New in version 2.18: The proper review workflow is supported since Weblate 2.18.

With dedicated reviewers you have two groups of users, one able to submit translations, and one able to review them to ensure translations are consistent and that the quality is good.

  • Any user can edit unapproved translations.
  • Reviewer can approve / unapproved strings.
  • Reviewer can edit all translations (including approved ones).
  • Suggestions can also be used to suggest changes for approved strings.
Setting Value Note
Enable reviews on Configured at project level.
Enable suggestions off It is useful for users to be able to suggest when they are not sure.
Suggestion voting off  
Autoaccept suggestions 0  
Translators group Users Or Translate with access control.
Reviewers group Reviewers Or Review with access control.

Turning on reviews

Reviews can be turned on in the project configuration, from the Workflow subpage of project settings (to be found in the ManageSettings menu):

_images/project-workflow.png

Note

Depending on Weblate configuration, the setting might not be available to you. For example on Hosted Weblate this is not available for projects hosted for free.

Frequently Asked Questions

Indices and tables