Ted Johansson
9915236e42
FEATURE: Warn about outdated translation overrides in admin dashboard ( #22384 )
...
This PR adds a feature to help admins stay up-to-date with their translations. We already have protections preventing admins from problems when they update their overrides. This change adds some protection in the other direction (where translations change in core due to an upgrade) by creating a notice for admins when defaults have changed.
Terms:
- In the case where Discourse core changes the default translation, the translation override is considered "outdated".
- In the case above where interpolation keys were changed from the ones the override is using, it is considered "invalid".
- If none of the above applies, the override is considered "up to date".
How does it work?
There are a few pieces that makes this work:
- When an admin creates or updates a translation override, we store the original translation at the time of write. (This is used to detect changes later on.)
- There is a background job that runs once every day and checks for outdated and invalid overrides, and marks them as such.
- When there are any outdated or invalid overrides, a notice is shown in admin dashboard with a link to the text customization page.
Known limitations
The link from the dashboard links to the default locale text customization page. Given there might be invalid overrides in multiple languages, I'm not sure what we could do here. Consideration for future improvement.
2023-07-10 10:06:40 +08:00
..
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-02-21 10:30:48 +01:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2022-12-16 13:36:30 +02:00
2022-12-16 13:36:30 +02:00
2023-04-03 11:46:39 +01:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2022-12-16 13:36:30 +02:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2022-12-16 13:36:30 +02:00
2023-01-09 11:59:41 +00:00
2022-12-16 13:36:30 +02:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2022-12-16 13:36:30 +02:00
2023-01-09 11:59:41 +00:00
2022-12-16 13:36:30 +02:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-04-03 11:46:39 +01:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-06-27 23:01:39 +02:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2023-01-09 11:59:41 +00:00
2022-09-26 09:14:24 +10:00
2023-01-09 11:59:41 +00:00
2022-10-12 18:38:45 +03:00
2023-01-09 11:59:41 +00:00
2023-04-05 07:28:56 +08:00
2022-10-07 11:00:44 -04:00
2022-10-18 13:21:52 +11:00
2023-01-09 11:59:41 +00:00
2022-10-18 18:20:10 +01:00
2022-11-09 20:20:34 +02:00
2022-11-09 20:20:34 +02:00
2022-11-14 12:02:06 +10:00
2023-01-09 11:59:41 +00:00
2022-11-15 17:36:08 +02:00
2023-01-05 06:07:50 +08:00
2022-12-16 18:42:51 +02:00
2023-01-09 11:59:41 +00:00
2022-12-12 17:01:04 +01:00
2023-04-03 11:46:39 +01:00
2023-04-05 07:28:56 +08:00
2023-01-27 10:05:27 -08:00
2023-01-20 13:29:49 +11:00
2023-02-03 14:44:40 +11:00
2023-02-03 14:44:40 +11:00
2023-01-20 09:50:24 +08:00
2023-02-03 14:44:40 +11:00
2023-01-20 09:50:24 +08:00
2023-01-19 16:07:59 +00:00
2023-01-30 10:49:08 +02:00
2023-02-02 13:35:04 -03:00
2023-02-21 10:16:16 +08:00
2023-02-08 11:21:39 -08:00
2023-02-21 13:16:43 -05:00
2023-02-08 11:45:34 +11:00
2023-02-08 13:08:05 +11:00
2023-02-13 12:37:59 +08:00
2023-02-13 18:07:46 +10:00
2023-02-10 11:14:22 +11:00
2023-02-23 11:18:14 -08:00
2023-02-22 08:55:44 +11:00
2023-03-14 13:11:45 -05:00
2023-02-28 10:42:05 +08:00
2023-03-10 13:45:01 +08:00
2023-03-07 11:47:18 +11:00
2023-03-21 12:23:28 +11:00
2023-03-10 13:45:01 +08:00
2023-03-28 15:13:44 +11:00
2023-04-04 07:31:09 +08:00
2023-04-04 13:14:20 +01:00
2023-04-05 10:52:18 +10:00
2023-04-11 10:16:28 +01:00
2023-05-04 12:14:09 +10:00
2023-05-04 12:14:09 +10:00
2023-05-04 12:14:09 +10:00
2023-04-17 22:53:50 +05:30
2023-05-04 12:14:09 +10:00
2023-05-02 08:08:22 +10:00
2023-05-08 20:33:08 +03:00
2023-07-07 10:48:14 -05:00
2023-05-23 09:58:58 +02:00
2023-06-07 11:11:39 +10:00
2023-06-15 11:36:38 +10:00
2023-06-27 11:44:34 -03:00
2023-06-15 09:31:28 +10:00
2023-06-15 09:31:28 +10:00
2023-06-22 19:04:13 +03:00
2023-06-22 19:04:13 +03:00
2023-06-22 19:04:13 +03:00
2023-06-28 07:20:31 +08:00
2023-07-04 15:08:29 +10:00
2023-07-10 10:06:40 +08:00