policies: skip languages which do not exist (#154395)

This commit is contained in:
João Moreno 2022-07-08 06:03:08 +02:00 committed by GitHub
parent 8885bda5e7
commit 274aed07cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 3 deletions

View file

@ -452,8 +452,12 @@ async function getTranslations() {
}
const version = await getLatestStableVersion(updateUrl);
const languageIds = Object.keys(Languages);
return await Promise.all(languageIds.map(languageId => getNLS(resourceUrlTemplate, languageId, version)
const result = await Promise.allSettled(languageIds.map(languageId => getNLS(resourceUrlTemplate, languageId, version)
.catch(err => { console.warn(`Missing translation: ${languageId}@${version}`); return Promise.reject(err); })
.then(languageTranslations => ({ languageId, languageTranslations }))));
return result
.filter((r) => r.status === 'fulfilled')
.map(r => r.value);
}
async function main() {
const [policies, translations] = await Promise.all([parsePolicies(), getTranslations()]);

View file

@ -585,7 +585,8 @@ const Languages = {
};
type LanguageTranslations = { [moduleName: string]: { [nlsKey: string]: string } };
type Translations = { languageId: string; languageTranslations: LanguageTranslations }[];
type Translation = { languageId: string; languageTranslations: LanguageTranslations };
type Translations = Translation[];
async function getLatestStableVersion(updateUrl: string) {
const res = await fetch(`${updateUrl}/api/update/darwin/stable/latest`);
@ -643,10 +644,15 @@ async function getTranslations(): Promise<Translations> {
const version = await getLatestStableVersion(updateUrl);
const languageIds = Object.keys(Languages);
return await Promise.all(languageIds.map(
const result = await Promise.allSettled(languageIds.map(
languageId => getNLS(resourceUrlTemplate, languageId, version)
.catch(err => { console.warn(`Missing translation: ${languageId}@${version}`); return Promise.reject(err); })
.then(languageTranslations => ({ languageId, languageTranslations }))
));
return result
.filter((r): r is PromiseFulfilledResult<Translation> => r.status === 'fulfilled')
.map(r => r.value);
}
async function main() {