53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
// Copyright 2021 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { join, resolve } from 'path';
|
|
import { existsSync, readdirSync, writeFileSync } from 'fs';
|
|
import { execSync } from 'child_process';
|
|
|
|
import { readJsonSync } from 'fs-extra';
|
|
import type { LocaleMessagesType } from '../types/I18N';
|
|
|
|
console.log('Getting latest strings!');
|
|
|
|
console.log();
|
|
console.log('Getting strings, allow for new ones over 80% translated');
|
|
execSync('tx pull --all --use-git-timestamps --minimum-perc=80', {
|
|
stdio: [null, process.stdout, process.stderr],
|
|
});
|
|
|
|
console.log();
|
|
console.log('Getting strings, updating everything previously missed');
|
|
execSync('tx pull --use-git-timestamps', {
|
|
stdio: [null, process.stdout, process.stderr],
|
|
});
|
|
|
|
const BASE_DIR = join(__dirname, '../../_locales');
|
|
const en: LocaleMessagesType = readJsonSync(
|
|
join(BASE_DIR, '/en/messages.json')
|
|
);
|
|
const locales = readdirSync(join(BASE_DIR, ''));
|
|
|
|
console.log();
|
|
console.log('Re-adding placeholders to non-en locales');
|
|
locales.forEach((locale: string) => {
|
|
if (locale === 'en') {
|
|
return;
|
|
}
|
|
const target = resolve(join(BASE_DIR, locale, 'messages.json'));
|
|
if (!existsSync(target)) {
|
|
throw new Error(`File not found for ${locale}: ${target}`);
|
|
}
|
|
|
|
const messages: LocaleMessagesType = readJsonSync(target);
|
|
Object.keys(messages).forEach(key => {
|
|
if (!en[key]) {
|
|
return;
|
|
}
|
|
|
|
messages[key].placeholders = en[key].placeholders;
|
|
});
|
|
|
|
console.log(`Writing ${target}`);
|
|
writeFileSync(target, `${JSON.stringify(messages, null, 4)}\n`);
|
|
});
|