Localisation Platform Research Summary 2022/Weblate
Setup
Local deployment was quite simple via docker: Installing using Docker — Weblate 4.10 documentation
Pricing
- Self hosted - Free
- Pricing - Weblate Pricing
Pricing is based on the number of source strings and target languages. A source string is a text unit defined in a translation format. It can be a word, sentence or paragraph.
Adding project to Weblate
- First add a project.
- Translation instructions can be added when adding a project
- Then add components to that project. Components can be added from:
- From version control
- From existing component
- Additional branch - Translation component for an additional branch of the existing translation component.
- Upload translations files
- Translate document
- Start from scratch
All this can be done via the user interface.
- The entire project configuration can be done via the user interface
- Possible to specify license for translations
- Source languages other than English are supported
- A component under a project can be marked as a glossary. A project can have multiple glossaries.
- Supports continuous localisation via repository hooks - GitHub, GitLab, BitBucket etc
- Adding a component automatically adds a glossary
Project Management
Manage
Repository maintenance
- Displays information about the remote repo and branches being tracked
- Manually trigger pushes and commits
- Lock translators from doing changes
- Reset local changes so that the repository matches upstream
Screenshots
Upload screenshots and use them in strings
Announcements
Can set an announcement with type (info, alert, warning etc) and expiry time. It’s displayed to users when they open the component.
Translation memory
A component can choose to contribute to the “shared translation memory”. Custom strings (via JSON or TMX) can also be imported to the translation memory.
Users
Add users to the project and give them administrative (management) access. In case the component is “restricted”, then only added users can see and translate the project.
Add Ons
Additional components that can be enabled for a project or a component. Eg:
- Statistics generator: Generates a file containing detailed info about the translation status.
- Stale comment removal: Set a timeframe for removal of comments.
- Bulk edit: Bulk edit flags, labels, or states of strings.
Info
General information regarding the project. Also provides various statistics such as:
- Activity in last 12 months - Translations for the last 12 months
- Quick numbers - Hosted strings, words, translated and contributors
- Trends of last 30 days - Same as quick numbers but for last 30 days
- String statistics
Tools
- Search and replace - Self explanatory
- Bulk edit - Change the state of all strings matching a given type at once.
- Data exports - Links to statistics and RSS feeds for translation updates
- Failing checks - List of checks that are failing for the component
- Matrix view - To compare different languages efficiently you can use the matrix view. First select all languages you want to compare and confirm your selection, after that you can click on any translation to open and edit it quickly.
Insights
- History: List of changes made to the component / project including translation changes, new language addition. Certain changes can be reverted from this screen and users blocked from providing further translation..
- Statistics (HTML / JSON): Languages statistics or the component in JSON / HTML
- Translation Reports
- Credit / Project translators: Lists all translators contributing to this component in a given time period
- Contributor stats: Reports the number of strings and words translated by each translator.
Alerts
Important alerts for the project / component that need to be dealt with immediately. See list of alerts: https://docs.weblate.org/en/latest/devel/alerts.html#translation-component-alerts
Eg:
- Duplicated source strings in translation files
- Parse errors in the translation files
- Merge, update, or push failures in the repository
- Etc …
Settings
- Can set priority for components in the project. Components with higher priority are offered first to translators.
- Mark the component as restricted(Restrict access to the component to only those explicitly given permission)
- Specify translation license and contributor agreement.
- Specify validations / checks that should be enforced.
- Version control related settings - how often to commit, branch to commit to etc.
- Customization of the commit messages
Supported File Formats
Weblate can automatically detect several widespread file formats, but this detection can harm your performance and will limit features specific to given file format (for example automatic addition of new translations).
List of supported file formats - https://docs.weblate.org/en/latest/formats.html#translation-types-capabilities
- A =translation speed.
- Mark a string as “needs editing”: Similar to marking translations as fuzzy
Translation Aids
All translation aids are available on the same page.
- Nearby strings - Messages placed around this one.
- Similar keys - Other strings with similar keys
- Comments- User added comments.
- Automatic suggestions - Based on translation memory. This section is searchable.
- Other languages - Translation for this string into other languages
- History - History of translations made for this string.
Suggestions
- Make suggestions: Users can provide translations as suggestions.
- Suggestion Voting: Users can only vote for suggestions and can’t make direct translations.
- Auto Accept suggestions: Automatically accept suggestions with this number of votes, use 0 to turn it off.
Checks
Weblate employs a wide range of quality checks on strings. The following section describes them all in further detail. There are also language specific checks.
List of checks:
Translation Search
Supports an advanced query builder with flags and curren state such as:
- Review strings changed by other users - changed:>=2021-12-21 AND NOT changed_by:admin
- Translated strings - state:>=translated
- Approved strings with suggestions - state:approved AND has:suggestion
API
Each component can have it’s own API access:
https://docs.weblate.org/en/weblate-4.9.1/api.html
Key Highlights
- Project Glossary to help translators understand difficult terms.
- Self hosted, easy to set up, open source alternative to other localisation platform.
- Easy for developers to add projects to the platform. No interaction with the Weblate team is needed.
- Large set of predefined validations / checkers to choose from.
- Large file format system support
- Single page listing problems with all translations. Allows translators to quickly see issues and fix them.
- Translation on mobile is not perfect but feasible.
- Translating to different plurals is easy. No possibility of making mistakes since different textboxes are provided for different plural rules. Partial plural translations are not possible though.
- Large file format support: Qt, Go, HTML files etc
- Supports Add-Ons
- Possible to configure how often synchronization with remote repository happens.
- Discussions / Comments related to a message appear on the translation interface.
- Comprehensive translation search
- Concept of suggesting translations is interesting. After a suggestion has been approved a certain number of times, it’s used as a translator.
- Easily search and substitute (find and replace) strings in the component
Experience Review
As a translator
What is good
- All translations failing checks can be viewed from a single page.
- A small toolbox that can be used to insert some special characters such as tabs, no break space etc.
- Can suggest translations without actually making a change.
- Can mark a translation as fuzzy.
- Easy to select the type of strings they want to translate. Eg:
- Strings needing action
- Strings marked for edit
- Strings with labels
- Strings with comments etc..
- A lot more information is available to review before making translations, albeit they require some clicks to browse through.
- Bulk edit can be used to update the state (Do not change, needs editing, translated etc) of strings in a group / project.
- Easy search and replace tool available for translators
- Messages have associated comments sections for translators to discuss.
- Easy to add a screenshot to a string for documentation purposes.
- A single insights page displays the history of the project / component.
- A glossary feature is available.
- Can watch projects and receive notifications for various events.
Hurdles
- Not easy to switch between languages when translating
- The default translation editor reloads the page on every save, taking longer than usual to load more strings
As a project maintainer / developer
What is good
- Setting up a self hosted instance for translation of your software projects is easy.
- Adding and configuration of a new project is fairly simple and does not require any staff to be involved.
- All configuration for pushing, commiting changes can be done via the interface.
- Projects can configure shared translation memory. Also it can be exported out in JSON or TMX.
- Project maintainers can post announcements with an expiry date.
- It’s possible to mark a component as private and allow only certain users to translate it.
- Administrators can use labels to organize and group messages in a component.
- Minor: Supports notification hooks to allow external applications to notify Weblate that the VCS repository has been updated.
- Can “Enable Reviews” for a project so that dedicated reviewers have to review translations. See link.
- Ability to start a translation project from VCS, existing components, translation files and documents
- Contains a large number of checks that the maintainer can mark as enforced.
- Possibility to add translation flags in order to customize Weblate behavior.
- Can enable “suggestion voting”, where contributors can vote for suggestions after which they are marked as translated.
- Set priority for components.
- Support for Glossary via a separate component in the project.
- Can reset all recent translations / changes made in Weblate so the repository matches upstream.
- Supports continuous localisation so that translation closely follow development .
Hurdles
- Did not see an option to configure custom validators.