kopia lustrzana https://github.com/cheeaun/phanpy
rodzic
61edf3de45
commit
75556b37cc
|
@ -3,6 +3,13 @@ import fs from 'node:fs';
|
||||||
// Dependency from Lingui, not listed in package.json
|
// Dependency from Lingui, not listed in package.json
|
||||||
import PO from 'pofile';
|
import PO from 'pofile';
|
||||||
|
|
||||||
|
let listedLocales = [];
|
||||||
|
try {
|
||||||
|
listedLocales = JSON.parse(
|
||||||
|
fs.readFileSync('src/data/listed-locales.json', 'utf8'),
|
||||||
|
);
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
const DEFAULT_LANG = 'en';
|
const DEFAULT_LANG = 'en';
|
||||||
const IGNORE_LANGS = [DEFAULT_LANG, 'pseudo-LOCALE'];
|
const IGNORE_LANGS = [DEFAULT_LANG, 'pseudo-LOCALE'];
|
||||||
|
|
||||||
|
@ -82,12 +89,41 @@ const fullCatalogs = Object.entries(catalogs)
|
||||||
return { code, nativeName, name, completion };
|
return { code, nativeName, name, completion };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Set listed: true if completion > PERCENTAGE_THRESHOLD
|
||||||
|
const PERCENTAGE_THRESHOLD = 50;
|
||||||
|
const listedCatalogs = fullCatalogs.map((catalog) => ({
|
||||||
|
...catalog,
|
||||||
|
// Once listed, always listed
|
||||||
|
// A locale may exceed percentage threshold today, but not tomorrow
|
||||||
|
// So it should't suddenly become unlisted
|
||||||
|
listed:
|
||||||
|
listedLocales.includes(catalog.code) ||
|
||||||
|
catalog.completion >= PERCENTAGE_THRESHOLD,
|
||||||
|
}));
|
||||||
|
|
||||||
// Sort by completion
|
// Sort by completion
|
||||||
const sortedCatalogs = [...fullCatalogs].sort(
|
const sortedCatalogs = [...listedCatalogs].sort(
|
||||||
(a, b) => b.completion - a.completion,
|
(a, b) => b.completion - a.completion,
|
||||||
);
|
);
|
||||||
|
|
||||||
console.table(sortedCatalogs);
|
console.table(sortedCatalogs);
|
||||||
|
console.log(
|
||||||
|
`Total listed/unlisted: ${listedCatalogs.filter((c) => c.listed).length}/${
|
||||||
|
listedCatalogs.filter((c) => !c.listed).length
|
||||||
|
}`,
|
||||||
|
);
|
||||||
|
|
||||||
const path = 'src/data/catalogs.json';
|
const path = 'src/data/catalogs.json';
|
||||||
fs.writeFileSync(path, JSON.stringify(fullCatalogs, null, 2));
|
fs.writeFileSync(path, JSON.stringify(listedCatalogs, null, 2));
|
||||||
console.log('File written:', path);
|
console.log('File written:', path);
|
||||||
|
|
||||||
|
const path2 = 'src/data/listed-locales.json';
|
||||||
|
const codes = listedCatalogs.filter((c) => c.listed).map((c) => c.code);
|
||||||
|
if (codes.length >= listedLocales.length) {
|
||||||
|
fs.writeFileSync(path2, JSON.stringify(codes, null, 2));
|
||||||
|
console.log('File written:', path2);
|
||||||
|
} else {
|
||||||
|
console.error(
|
||||||
|
`Number of listed locales reduced from ${listedLocales.length} to ${codes.length}.`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
|
@ -3,168 +3,196 @@
|
||||||
"code": "ar-SA",
|
"code": "ar-SA",
|
||||||
"nativeName": "العربية",
|
"nativeName": "العربية",
|
||||||
"name": "Arabic",
|
"name": "Arabic",
|
||||||
"completion": 24
|
"completion": 24,
|
||||||
|
"listed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "ca-ES",
|
"code": "ca-ES",
|
||||||
"nativeName": "català",
|
"nativeName": "català",
|
||||||
"name": "Catalan",
|
"name": "Catalan",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "cs-CZ",
|
"code": "cs-CZ",
|
||||||
"nativeName": "čeština",
|
"nativeName": "čeština",
|
||||||
"name": "Czech",
|
"name": "Czech",
|
||||||
"completion": 81
|
"completion": 81,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "de-DE",
|
"code": "de-DE",
|
||||||
"nativeName": "Deutsch",
|
"nativeName": "Deutsch",
|
||||||
"name": "German",
|
"name": "German",
|
||||||
"completion": 92
|
"completion": 92,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "eo-UY",
|
"code": "eo-UY",
|
||||||
"nativeName": "Esperanto",
|
"nativeName": "Esperanto",
|
||||||
"name": "Esperanto",
|
"name": "Esperanto",
|
||||||
"completion": 99
|
"completion": 99,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "es-ES",
|
"code": "es-ES",
|
||||||
"nativeName": "español",
|
"nativeName": "español",
|
||||||
"name": "Spanish",
|
"name": "Spanish",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "eu-ES",
|
"code": "eu-ES",
|
||||||
"nativeName": "euskara",
|
"nativeName": "euskara",
|
||||||
"name": "Basque",
|
"name": "Basque",
|
||||||
"completion": 98
|
"completion": 98,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "fa-IR",
|
"code": "fa-IR",
|
||||||
"nativeName": "فارسی",
|
"nativeName": "فارسی",
|
||||||
"name": "Persian",
|
"name": "Persian",
|
||||||
"completion": 71
|
"completion": 71,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "fi-FI",
|
"code": "fi-FI",
|
||||||
"nativeName": "suomi",
|
"nativeName": "suomi",
|
||||||
"name": "Finnish",
|
"name": "Finnish",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "fr-FR",
|
"code": "fr-FR",
|
||||||
"nativeName": "français",
|
"nativeName": "français",
|
||||||
"name": "French",
|
"name": "French",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "gl-ES",
|
"code": "gl-ES",
|
||||||
"nativeName": "galego",
|
"nativeName": "galego",
|
||||||
"name": "Galician",
|
"name": "Galician",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "he-IL",
|
"code": "he-IL",
|
||||||
"nativeName": "עברית",
|
"nativeName": "עברית",
|
||||||
"name": "Hebrew",
|
"name": "Hebrew",
|
||||||
"completion": 10
|
"completion": 10,
|
||||||
|
"listed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "it-IT",
|
"code": "it-IT",
|
||||||
"nativeName": "italiano",
|
"nativeName": "italiano",
|
||||||
"name": "Italian",
|
"name": "Italian",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "ja-JP",
|
"code": "ja-JP",
|
||||||
"nativeName": "日本語",
|
"nativeName": "日本語",
|
||||||
"name": "Japanese",
|
"name": "Japanese",
|
||||||
"completion": 47
|
"completion": 47,
|
||||||
|
"listed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "kab",
|
"code": "kab",
|
||||||
"nativeName": "Taqbaylit",
|
"nativeName": "Taqbaylit",
|
||||||
"name": "Kabyle",
|
"name": "Kabyle",
|
||||||
"completion": 95
|
"completion": 95,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "ko-KR",
|
"code": "ko-KR",
|
||||||
"nativeName": "한국어",
|
"nativeName": "한국어",
|
||||||
"name": "Korean",
|
"name": "Korean",
|
||||||
"completion": 88
|
"completion": 88,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "lt-LT",
|
"code": "lt-LT",
|
||||||
"nativeName": "lietuvių",
|
"nativeName": "lietuvių",
|
||||||
"name": "Lithuanian",
|
"name": "Lithuanian",
|
||||||
"completion": 98
|
"completion": 98,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "nb-NO",
|
"code": "nb-NO",
|
||||||
"nativeName": "norsk bokmål",
|
"nativeName": "norsk bokmål",
|
||||||
"name": "Norwegian Bokmål",
|
"name": "Norwegian Bokmål",
|
||||||
"completion": 49
|
"completion": 49,
|
||||||
|
"listed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "nl-NL",
|
"code": "nl-NL",
|
||||||
"nativeName": "Nederlands",
|
"nativeName": "Nederlands",
|
||||||
"name": "Dutch",
|
"name": "Dutch",
|
||||||
"completion": 75
|
"completion": 75,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "pl-PL",
|
"code": "pl-PL",
|
||||||
"nativeName": "polski",
|
"nativeName": "polski",
|
||||||
"name": "Polish",
|
"name": "Polish",
|
||||||
"completion": 67
|
"completion": 67,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "pt-BR",
|
"code": "pt-BR",
|
||||||
"nativeName": "português",
|
"nativeName": "português",
|
||||||
"name": "Portuguese",
|
"name": "Portuguese",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "pt-PT",
|
"code": "pt-PT",
|
||||||
"nativeName": "português",
|
"nativeName": "português",
|
||||||
"name": "Portuguese",
|
"name": "Portuguese",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "ru-RU",
|
"code": "ru-RU",
|
||||||
"nativeName": "русский",
|
"nativeName": "русский",
|
||||||
"name": "Russian",
|
"name": "Russian",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "th-TH",
|
"code": "th-TH",
|
||||||
"nativeName": "ไทย",
|
"nativeName": "ไทย",
|
||||||
"name": "Thai",
|
"name": "Thai",
|
||||||
"completion": 8
|
"completion": 8,
|
||||||
|
"listed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "tr-TR",
|
"code": "tr-TR",
|
||||||
"nativeName": "Türkçe",
|
"nativeName": "Türkçe",
|
||||||
"name": "Turkish",
|
"name": "Turkish",
|
||||||
"completion": 47
|
"completion": 47,
|
||||||
|
"listed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "uk-UA",
|
"code": "uk-UA",
|
||||||
"nativeName": "українська",
|
"nativeName": "українська",
|
||||||
"name": "Ukrainian",
|
"name": "Ukrainian",
|
||||||
"completion": 92
|
"completion": 92,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "zh-CN",
|
"code": "zh-CN",
|
||||||
"nativeName": "简体中文",
|
"nativeName": "简体中文",
|
||||||
"name": "Simplified Chinese",
|
"name": "Simplified Chinese",
|
||||||
"completion": 100
|
"completion": 100,
|
||||||
|
"listed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"code": "zh-TW",
|
"code": "zh-TW",
|
||||||
"nativeName": "繁體中文",
|
"nativeName": "繁體中文",
|
||||||
"name": "Traditional Chinese",
|
"name": "Traditional Chinese",
|
||||||
"completion": 32
|
"completion": 32,
|
||||||
|
"listed": false
|
||||||
}
|
}
|
||||||
]
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
[
|
||||||
|
"ca-ES",
|
||||||
|
"es-ES",
|
||||||
|
"fi-FI",
|
||||||
|
"gl-ES",
|
||||||
|
"it-IT",
|
||||||
|
"pt-BR",
|
||||||
|
"pt-PT",
|
||||||
|
"zh-CN",
|
||||||
|
"eo-UY",
|
||||||
|
"ru-RU",
|
||||||
|
"eu-ES",
|
||||||
|
"lt-LT",
|
||||||
|
"kab",
|
||||||
|
"de-DE",
|
||||||
|
"uk-UA",
|
||||||
|
"fr-FR",
|
||||||
|
"ko-KR",
|
||||||
|
"cs-CZ",
|
||||||
|
"nl-NL",
|
||||||
|
"fa-IR",
|
||||||
|
"pl-PL"
|
||||||
|
]
|
|
@ -3,22 +3,15 @@ import catalogs from './data/catalogs.json';
|
||||||
export const DEFAULT_LANG = 'en';
|
export const DEFAULT_LANG = 'en';
|
||||||
export const CATALOGS = catalogs;
|
export const CATALOGS = catalogs;
|
||||||
|
|
||||||
// Get locales that's >= X% translated
|
|
||||||
const PERCENTAGE_THRESHOLD = 50;
|
|
||||||
|
|
||||||
const locales = [
|
const locales = [
|
||||||
DEFAULT_LANG,
|
DEFAULT_LANG,
|
||||||
...catalogs
|
...catalogs.filter(({ listed }) => listed).map(({ code }) => code),
|
||||||
.filter(({ completion }) => completion >= PERCENTAGE_THRESHOLD)
|
|
||||||
.map(({ code }) => code),
|
|
||||||
];
|
];
|
||||||
export const LOCALES = locales;
|
export const LOCALES = locales;
|
||||||
|
|
||||||
let devLocales = [];
|
let devLocales = [];
|
||||||
if (import.meta.env?.DEV || import.meta.env?.PHANPY_SHOW_DEV_LOCALES) {
|
if (import.meta.env?.DEV || import.meta.env?.PHANPY_SHOW_DEV_LOCALES) {
|
||||||
devLocales = catalogs
|
devLocales = catalogs.filter(({ listed }) => !listed).map(({ code }) => code);
|
||||||
.filter(({ completion }) => completion < PERCENTAGE_THRESHOLD)
|
|
||||||
.map(({ code }) => code);
|
|
||||||
devLocales.push('pseudo-LOCALE');
|
devLocales.push('pseudo-LOCALE');
|
||||||
}
|
}
|
||||||
export const DEV_LOCALES = devLocales;
|
export const DEV_LOCALES = devLocales;
|
||||||
|
|
Ładowanie…
Reference in New Issue