fix(web): translations (#10021)

This commit is contained in:
Michel Heusschen 2024-06-07 13:23:13 +02:00 committed by GitHub
parent f2148ddf03
commit c8f2d994c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 73 additions and 36 deletions

36
web/src/lib/i18n.spec.ts Normal file
View file

@ -0,0 +1,36 @@
import messages from '$lib/i18n/en.json';
import { exec as execCallback } from 'node:child_process';
import { promisify } from 'node:util';
import { init } from 'svelte-i18n';
type Messages = { [key: string]: string | Messages };
const exec = promisify(execCallback);
function setEmptyMessages(messages: Messages) {
const copy = { ...messages };
for (const key in copy) {
const message = copy[key];
if (typeof message === 'string') {
copy[key] = '';
} else if (typeof message === 'object') {
setEmptyMessages(message);
}
}
return copy;
}
describe('i18n', () => {
beforeEach(() => init({ fallbackLocale: 'dev' }));
test('no missing messages', async () => {
const { stdout } = await exec('npx svelte-i18n extract -c svelte.config.js "src/**/*"');
const extractedMessages: Messages = JSON.parse(stdout);
const existingMessages = setEmptyMessages(messages);
// Only translations directly using the store seem to get extracted
expect({ ...extractedMessages, ...existingMessages }).toEqual(existingMessages);
});
});