mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
i18n: Garbage collect old translations from localStorage.
The old translation copies in localStorage were not being removed when they were no longer needed, so we can free up the storage by deleting them. This was accidentally not merged months ago when originally implemented, but it was written to fix #4443 and in fact does so.
This commit is contained in:
committed by
Tim Abbott
parent
59b5a2f862
commit
e3f1d025ae
@@ -53,3 +53,30 @@ i18next.ensure_i18n = function (callback) {
|
||||
callbacks.push(callback);
|
||||
}
|
||||
};
|
||||
|
||||
// garbage collect all old i18n translation maps in localStorage.
|
||||
$(function () {
|
||||
// this collects all localStorage keys that match the format of:
|
||||
// i18next:dddddddddd:w+ => 1484902202:en
|
||||
// these are all language translation strings.
|
||||
var translations = Object.keys(localStorage).filter(function (key) {
|
||||
return /^i18next:\d{10}:\w+$/.test(key);
|
||||
});
|
||||
|
||||
// by sorting them we get the lowest timestamps at the bottom and the
|
||||
// most recent at the top.
|
||||
translations = translations.sort();
|
||||
|
||||
// Remove the latest few translations (should include the
|
||||
// currently in-use one for this and any recent tabs) from the
|
||||
// list of items to delete.
|
||||
translations.pop();
|
||||
translations.pop();
|
||||
translations.pop();
|
||||
|
||||
// remove all the old translations.
|
||||
translations.forEach(function (translation_key) {
|
||||
localStorage.removeItem(translation_key);
|
||||
});
|
||||
return this;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user