diff --git a/README.md b/README.md
index 68871a20dcc79b4778cd40e96cb6580e46a58e22..cce1c65676d9efd59ed0f1794fac31d712c6c2c0 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,7 @@
-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
-----------|---------|------------
-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
+[![Translation status](https://weblate.insrt.uk/widgets/revolt/-/web-app/multi-auto.svg)](https://weblate.insrt.uk/engage/revolt/?utm_source=widget)
diff --git a/cz.json.d.ts b/cz.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/cz.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/en.json.d.ts b/en.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/en.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/fr.json.d.ts b/fr.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/fr.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/hu.json.d.ts b/hu.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/hu.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/lt.json.d.ts b/lt.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/lt.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/mk.json.d.ts b/mk.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/mk.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/pl.json.d.ts b/pl.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/pl.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/process.js b/process.js
deleted file mode 100644
index 323d177c3419fb012d9a1ae6be114a7d9d4eb895..0000000000000000000000000000000000000000
--- a/process.js
+++ /dev/null
@@ -1,44 +0,0 @@
-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'));
diff --git a/ru.json.d.ts b/ru.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/ru.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;
diff --git a/se.json.d.ts b/se.json.d.ts
deleted file mode 100644
index 62f39ceb7fbf72266bc372f548d459edfeae0316..0000000000000000000000000000000000000000
--- a/se.json.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default any;