We are planning a major update of AMOS, Moodle's translation system hosted at lang.moodle.org. During the update, the site will be unavailable. Afterwards, a number of features will be turned on gradually.
The update is mainly a major rewrite of the AMOS backend storage system of all English language strings and their translations - nearly 2 million strings in total. The update also includes a rewrite of parts of the AMOS UI.
AMOS was designed so that language strings and their translations are tracked on the same branches that Moodle uses (in contrast to how it was for Moodle 1.x where the same language pack was used for all branches). This design allows for strings to be worded differently on different branches. Thus, developers and translators can safely improve existing strings and their translations without breaking older stable versions.
However, the actual implementation of the storage system was not optimal. As each branch is stored independently, we have to copy strings and their translations every time a new Moodle major version is released (every six months). Even though most strings never change once they are introduced, we store many copies of them (one for each Moodle major version). This is also the reason for the propagation feature in AMOS - as translations exist on one branch only, they need to be "propagated" i.e. copied to all other branches.
We are now changing this storage system. Strings will be stored not as at particular version, but since particular version. That means, once a string is stored in version X, it applies for all future versions unless it it is explicitly changed or removed. This may sound like a simple and intuitive solution and it is! However, it required a rewrite of significant parts of the AMOS code. It will also require the existing storage to be migrated to the new format. This migration step took around 10 hours on our test installation, reducing the number of database records to 14%! Thus, we expect a significant improvement to AMOS performance after the migration!
The migration comes with a cost. Most significantly, language packs generated from the new storage system will not always be 100% identical to the existing ones. For example, if a translation was contributed previously on a single version and was not correctly propagated to all other branches, it may suddenly appear as the most recent translation now.
To deal with this and to minimise the impact for Moodle users, we will temporarily stop generating and distributing language packs in order to give maintainers time to review them and fix any discrepancies.
A report showing differences in generated language packs will be provided for language packs maintainers to assist with this task.
A long-standing issue with AMOS and Bootstrap-4-based themes has prevented us from
upgrading the site from Moodle 3.6. As parts of the
filter and the translator needed updating anyway, it seemed a good opportunity to rewrite the relevant
rendering layers and modernise them to use templates and ES6 modules instead of legacy
html_writer based rendering methods and YUI. As often happens, once you change one
thing you then need to change two more! Thus, the main translator page has been completely rewritten.
Certain features which were previously hardly used or are no longer relevant in the new storage system have been removed:
- The filter no longer has an option for selecting multiple versions.
- Greylisting is dropped completely. (The list of greylisted/likely not used strings has not been updated since Moodle 2.0 anyway.)
- Some staging actions such as comparison across branches or merging translations from one branch to another, have been removed.
It is believed that all these changes, once any bugs and regressions are fixed, will lead to a much improved experience with AMOS. Thanks in advance for your help in testing and reporting any problems, and for your patience and understanding!