Open Bug 1420173 Opened 7 years ago Updated 2 years ago

Make L10nRegistry handle source/locale versions

Categories

(Core :: Internationalization, enhancement, P3)

enhancement

Tracking

()

People

(Reporter: zbraniecki, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

When we initially rolled out L10nRegistry, we didn't handle the concept of locale versions. When we landed new language packs, we added a way to annotate each locale resource with a version based on the push timestamp to each l10n-central/AB-CD repo that we use for building that langpack. This bug is about connecting those two.
Assignee: nobody → gandalf
Status: NEW → ASSIGNED
Priority: -- → P3
Comment on attachment 8931401 [details] Bug 1420173 - Filter and sort sources by version in L10nRegistry. In the spirit of trying to get :stas involved as a reviewer of intl/l10n, setting r? on him, but still an f? on :mossop who reviewed the whole L10nRegistry.
Attachment #8931401 - Flags: feedback?(dtownsend)
Comment on attachment 8931401 [details] Bug 1420173 - Filter and sort sources by version in L10nRegistry. https://reviewboard.mozilla.org/r/202538/#review207898 ::: intl/l10n/L10nRegistry.jsm:98 (Diff revision 1) > } > - const sourcesOrder = Array.from(this.sources.keys()).reverse(); > for (const locale of requestedLangs) { > + const sourcesOrder = Array.from(this.sources.keys()).filter(name => { > + return this.sources.get(name).locales.has(locale); > + }).reverse().sort((a, b) => { This is cosmetic but have you considered `[...this.sources.keys()]` instead of `Array.from`? Also the filter function doesn't need the braces (nor the explicit return statement). Does reversing the array help sorting in any way? ::: intl/l10n/L10nRegistry.jsm:144 (Diff revision 1) > * > * @param {String} sourceId > */ > removeSource(sourceName) { > this.sources.delete(sourceName); > + this.ctxCache.clear(); Is this related or rather a drive-by fix? ::: intl/l10n/L10nRegistry.jsm:289 (Diff revision 1) > */ > constructor(name, locales, prePath) { > this.name = name; > - this.locales = locales; > + this.locales = Array.isArray(locales) ? > + new Map(locales.map(loc => [loc, 0])) : > + new Map(Object.entries(locales)); Do we want to support both versioned and unversioned locales in the long term?
> Does reversing the array help sorting in any way? Yes. When we add sources in `L10nRegistry.registerSource` we store them in insertion order (Map preserves the order). So if two sources have the same version we'll return ['older', 'newer'] unless we reverse it. I believe that if we ever notice that L10nRegistry starts showing up in profiles, we can move more of the ordering logic to the registerSource piece, but for now, I think those operations should be fast as they'll almost always operate on a 1-3 element lists. > Is this related or rather a drive-by fix? I noticed it while testing this patch, but it's a drive-by fix. > Do we want to support both versioned and unversioned locales in the long term? At least until we fix bug 1420236 to get versions for packaged locales.
Comment on attachment 8931401 [details] Bug 1420173 - Filter and sort sources by version in L10nRegistry. https://reviewboard.mozilla.org/r/202538/#review208664 ::: intl/l10n/L10nRegistry.jsm:21 (Diff revision 1) > * > * Example: > * > * FileSource1: > * name: 'app' > - * locales: ['en-US', 'de'] > + * locales: {'en-US': '201701010000', 'de': '20170101123500'} This suggests that the locale versions are strings whereas they are numbers. ::: intl/l10n/L10nRegistry.jsm:280 (Diff revision 1) > * come from the cache. > **/ > class FileSource { > /** > - * @param {string} name > - * @param {Array<string>} locales > + * @param {string} name > + * @param {Object<string, number>|Array<string>} locales Should we do verification that the versions are in fact numbers? Otherwise you're going to get odd results when sorting them.
Attachment #8931401 - Flags: feedback?(dtownsend) → feedback+
Thanks :stas, :mossop! Updated the patch to your feedback.
Status: ASSIGNED → NEW
Assignee: gandalf → nobody
Attachment #8931401 - Flags: review?(smalolepszy)
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: