Skip to content
Snippets Groups Projects
Verified Commit c34e559c authored by insert's avatar insert
Browse files

Only store language files.

parent 1c2c376f
No related merge requests found
This repository holds all the translation files for REVOLT, feel free to help translate to new languages or fix existing translations. [![Translation status](https://weblate.insrt.uk/widgets/revolt/-/web-app/svg-badge.svg)](https://weblate.insrt.uk/engage/revolt/?utm_source=widget)
## Languages This repository holds all the translation files for REVOLT, feel free to help translate to new languages or fix existing translations at [our Weblate instance](https://weblate.insrt.uk/projects/revolt/web-app/).
Table of currently supported languages. ### Coverage
Language | Support | Maintainer [![Translation status](https://weblate.insrt.uk/widgets/revolt/-/web-app/multi-auto.svg)](https://weblate.insrt.uk/engage/revolt/?utm_source=widget)
----------|---------|------------
English (International) | Up-to-date | insert
Polish | Up-to-date | insert
Lithuanian | Up-to-date | Wait What
Czech | Up-to-date | Fatalerrorcoded
Russian | Up-to-date | Wait What
Hungarian | Pending. | Organic Coke
French | Up-to-date | JetBoxOne
Swedish | Up-to-date | Yann Seeker
Macedonian | Up-to-date | Bloectasy
## Coverage
By running `process.js` all language files will be compared to `en.json` and a coverage table will be generated below.
File | Coverage | Missing keys | Extraneous keys
------|-----|--------------|-----------------
cz.json | `100.00%` | |
en.json | `100.00%` | |
fr.json | `100.00%` | |
hu.json | `0.00%` | `general.about`<br>`general.tos`<br>`general.privacy`<br>`general.image_by`<br>`login.title`<br>`login.email`<br>`login.password`<br>`login.enter.email`<br>`login.enter.password`<br>`login.forgot`<br>`login.new`<br>`login.create`<br>`app.main.channel.message` |
lt.json | `100.00%` | |
mk.json | `100.00%` | |
pl.json | `100.00%` | |
ru.json | `100.00%` | |
se.json | `100.00%` | |
\ No newline at end of file
export default any;
export default any;
export default any;
export default any;
export default any;
export default any;
export default any;
const { readdirSync, readFileSync, existsSync, writeFileSync } = require('fs');
function recurseKeys(object, path = []) {
let collected = [];
let keys = Object.keys(object);
for (let key of keys) {
let item = object[key];
let current = [ ...path, key ];
if (typeof item === 'object') {
collected = [ ...collected, ...recurseKeys(item, current) ];
} else {
collected.push(current.join('.'));
}
}
return collected;
}
let en = JSON.parse(readFileSync('en.json'));
let keys = recurseKeys(en);
let output = [];
let language_files = readdirSync('.');
for (let file of language_files) {
if (file.endsWith('.json')) {
if (!existsSync(file + '.d.ts')) {
writeFileSync(file + '.d.ts', 'export default any;\n');
}
let lang = JSON.parse(readFileSync(file));
let lkey = recurseKeys(lang);
let missing = keys.filter(x => !lkey.includes(x));
let extraneous = lkey.filter(x => !keys.includes(x));
output.push(`${file} | \`${((1 - missing.length / keys.length) * 100).toFixed(2)}%\` | ${missing.map(x => '`' + x + '`').join('<br>')} | ${extraneous.map(x => '`' + x + '`').join('<br>')}`);
}
}
let s = `------|-----|--------------|-----------------`;
let inp = readFileSync('README.md').toString().split(s)[0];
writeFileSync('README.md', inp + s + '\n' + output.join('\n'));
export default any;
export default any;
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment