Details of changes
Below we provide much more detail. These are by no means exhaustive, view the
git log for
complete information.
- MySQL now uses the
mysqlclient
database driver instead of MySQLdb
,
this is Django’s preferred database driver.
- Performed a security audit
- JavaScript fixes addressing performance and memory leaks in the editor
- Improved editor performance
- Extensive review and fixes to RTL layout
- Refactored code for syncing stores - as part of the internal rework of core
functionality in Pootle we reworked synchronisation code. This will
eventually be dropped when we move fully onto Pootle FS.
- Changed the default
robots.txt
. It is now a static file which you can
adjust for your site. The site is allow
by default.
- Editor:
- Suggestions:
- Support rejecting/accepting suggestions with comments
- Accept suggestion without
can review
permissions if submitted
translation is 100% match.
- Users cannot submit suggestions that match a previously submitted
suggestion or the current translation.
- Current unit is shown at the top of the unit list with one context row,
this makes it is easier to use the navigation bar and prevents UI
jumpiness.
- Faster terminology matching yielding more results by using stemming.
- Special non-display characters are depicted by symbols from a custom-built
font:
- Properly display whitespace as special character e.g. non breaking space,
newline, tab.
- Technical details of escape sequences are omitted in the output displayed
to end users, making it easier to enter correct data.
- Buttons to add language specific special characters display helpful
information in tooltips.
- Errors fixed:
- Fixed bugs in muting/unmuting checks
- Fixed filtering translations by month
- Fixed
TypeError
error when filter in editor gets no units
- Fixed bug that prevented translators from clicking on context rows to
edit those context units
- Translation memory:
- Display original and translations side-by-side for TM results
- AmaGama Translation Memory is now queried using CORS
- AmaGama is only queried if the source language is supported by amaGama
- Perform all highlighting in the client.
- Clearly present plurals to translator.
- Allow text from the similar translations area to be selected.
- Force word wrapping on long strings with no spaces.
- Improvements on timeline.
- Cross-language translation is now restricted to admins. It heavily impacts
performance and translators are unlikely to require it while admins may
have a valid reason to use it.
- Removed ability to clear language or project dropdown to prevent
performance degradation. This prevents users inadvertantly hitting very
expensive queries.
- Alternate source language translations are no longer displayed for
anonymous users to prevent performance costs for users who aren’t able to
translate.
- Editor is disabled for users without the required permissions. Reviewing
suggestions is similarly disabled without required permissions.
- Check categories can now be used in dropdown to filter units. You can
review all ‘critical’ check failures at once.
- Auto-matched translations are now highlighted to indicate that they came
from translation memory to prevent confusing users.
- Incomplete plural translations may now be submitted.
- String error reporting form is now clearer and prevents empty reports from
being submitted.
- Added suggestion bulk management:
- Provides filtering by user, etc.
- Allows to review multiple suggestions at once and reject/accept them at
once optionally providing a comment for the suggesters
- Configuration system - a generic system to store configuration information
for Pootle.
- Plugin framework - allowing Pootle to use plugins to expand its
functionality.
- Comment system
- Removed Plurr format checks
- Removed ENChecker
- Added support to have several formats in the same project
- Browse pages:
- Refactored stats backend:
- We now store statistics in the database and have removed the need for
rqworkers to calculate stats.
- The stats refresh notice has been removed as all stats are now
up-to-date, always.
- Faster stats retrieval is now possible as stats are always up-to-date and
we can get it directly from the database.
- Disabled items are hidden by default but admin users can select to shown
them.
- Changed order of columns to highlight latest activity and pending work:
- Last updated data is now only shown to admin users
- Altered order in which some items are listed by default:
- Projects and languages are sorted by most recent translators changes to
highlight activity
- Virtual folders are sorted by priority to highlight most important
strings to translate
- Hid most of the special ‘templates’ language data as it is unnecessary and
can be confusing.
- Got rid of fat cookies:
- Increases responsiveness and removes security issue
- Most data is now stored in user session instead
- Sidebar is no longer automatically open for anonymous users when an
announcement changes.
- Leaderboard on top panel and expanded stats panel:
- The top panel will show the three users with the highest score.
- Expanded stats shows the top contributors scores and other detailed
information about current location.
- Numbers are rendered in a locale aware fashion.
- Improvements to the statistics table for overly long filenames and smaller
screens.
- Files dropdown no longer keeps references to empty directories.
- Fixed issue where the “Back” button would sometimes not work.
- Fixed issue with project dropdown when there are projects without a name.
- Search:
- No longer autocompletes
- Added pluggable search backend
- Search widget is disabled if user cannot translate. This is to prevent any
load on the server for users who are not able to contribute.
- Old ‘Exact Match’ was separated into ‘Case-sensitive match’ and
‘Phrase match’ allowing finer-grained searches and removing the previous
confusion about the actual intent of the options.
- Added team page:
- Only for languages so far, and only available to language managers
- Replaces permissions with roles
- Provides direct access to suggestion bulk management
- Revamped user profile page. The aim is to slowly draw more information onto
this page and make it a hub for translators.
- Removed for performance reasons:
- Removed statistics from user profiles. Will be brought back in the future.
- Removed export view. This has been replaced with TMX export functionality,
download still remains.
- Removed performance hogging “More stats” in admin dashboard. While it has
some useful information there are better ways to get this data.
- Removed reports feature. This was a potential security area and data leak.
We will bring this back now that we have finer grained change tracking.
- Pootle’s own localization changes:
- Upload and download:
- Disabled upload for non-PO projects as conflict handling currently only
works in PO.
- Admins can upload translations as other user allowing correct crediting for
translations.
- Fixed error for stores with no revision.
- Added the ability to download TMX exports.
- New Machine Translation providers:
- Refactoring of models to increase performance, including dropping unnecessary
indices.
- User input is sanitized for outgoing emails
- Usernames using latin1 characters are now allowed
- Improved RQ usage and new management commands
- Changed Pootle logo and styling
- Added the ability to use a custom logo with
POOTLE_CUSTOM_LOGO
- Documentation updates
Pootle FS (beta)
Pootle FS enables synchronization of Pootle against a
filesystem, or version control system, handling conflict resolution and other
situations of two files being out of sync.
Pootle FS follows a git like command execution. We’ve designed it such that we
expect there to be no data loss when conflicts are discovered. Any conflicts
are turned into suggestions which can be resolved in Pootle.
Pootle FS is still in beta as we’d like to make sure that all the bugs are
washed out before making it an official and default part of Pootle.
sync_stores and update_stores are still the default method of interacting with
Pootle. We expect these to remain for some time, but expect the next version
of Pootle to use to Pootle FS infrastructure to manage and handle these
commands.
- Added admin UI to set up projects configuration and language mapping
- CLI - adds
info
, fetch
, resolve
,
sync
, add
and rm
commands
- LanguageMapper - allows differing codes on the filesystem vs Pootle
- FileMapper - maps the file layout on the filesystem to the expected Pootle
layout
- Store de/serialization - makes it possible to customise and adapt file
serialisation, most likely for slight deviations from the official file
format specification.
- Removed the ability to add new TPs from the admin UI for Pootle FS projects,
we will initialise new TPs differently in Pootle FS.
Development changes
- Updated and pinned PyPI requirements:
- From now on requirements will be pinned in order to simplify support and
development.
- Tests:
- Massive improvement in test framework.
- Coverage increased from 55% to 94%.
- Moved to tox.
- Travis caching and optimisations.
- Added JavaScript testing.
- Code sanity:
- Python code cleanup/linting pep8/pyflakes/pep257 to increase code health.
- Javascript code linting and cleanups.
- CSS code linting and cleanups.
- Code polishing:
- Moved all commands to argparse.
- Moved shortcuts to Mousetrap.
- JS improvements, move to React components.
- Triage meetings are now held on a weekly basis.
Command changes and additions
- Running Pootle commands using manage.py is no longer supported,
use pootle instead.
- pootle command warns if configuration is missing.
- Changed commands:
- Added new commands:
list_serializers
allows to view serializers and deserializers
installed on your system.
config
allows to get, set, list, append and clear configuration
settings.
init_fs_project
.
set_filetype
.
schema
allows to dump the database schema on MySQL which is
useful for diagnosing differences in database schema.
update_data
allows to update the stats data.
- Removed commands:
- run_cherrypy.
- start has been removed, use
runserver
instead.
- refresh_stats.
- clear_stats.
Changes in settings
- Changes in settings:
- MySQL database connections should now use
STRICT_TRANS_TABLES
.
POOTLE_TM_SERVER
no longer receives the MIN_SCORE
parameter,
as it was misleading and had questionable effects.
POOTLE_TM_SERVER
now accepts a MIN_SIMILARITY
parameter, to
filter out results which might be irrelevant. To learn more, check the
documentation on
MIN_SIMILARITY
.
- Changed the default value for ACCOUNT_SESSION_REMEMBER so
now sessions are always remembered.
POOTLE_MARKUP_FILTER
defaults to 'markdown'
, and None
,
'html'
, 'textile'
and 'restructuredtext'
values have been
deprecated. Deployments using any deprecated markup must migrate manually
to Markdown. This setting will be removed in the future since Markdown will
be the only available markup.
- Added new settings:
- Removed settings:
POOTLE_QUALITY_CHECKER
since the custom quality checkers feature is
gone.
POOTLE_SCORE_COEFFICENTS
has been removed and replaced with
POOTLE_SCORES
.
Credits
This release was made possible by the following people:
Ryan Northey, Dwayne Bailey, Julen Ruiz Aizpuru, Taras Semenenko, Leandro
Regueiro, Igor Afanasyev, Claude Paroz, Safa Alfulaij, Rene Ladan, Kevin
Scannell, Jason P. Pickering, Eamonn Lawlor, Alexander Lakhin, Robbie Cole,
Rhoslyn Prys, Prasasto Adi, Nootan Ghimire, Mikhail Paulyshka, Mike Robinson,
leonardcj, Henrik Feldt, Francesc Ortiz, Allan Nordhøy, Christian Lohmaier,
Burhan Khalid, benbankes, Arash Mousavi, Andy Kittner, Adam Chainz.
And to all our bug finders, testers and translators, a Very BIG Thank You.