Move to smartling for translation services
This commit is contained in:
parent
620067342a
commit
5957c111cf
73 changed files with 1394 additions and 64465 deletions
|
@ -19,10 +19,10 @@ export async function afterPack({
|
|||
if (electronPlatformName === 'darwin') {
|
||||
const { productFilename } = packager.appInfo;
|
||||
|
||||
// en.lproj/locale.pak
|
||||
// zh_CN.lproj/locale.pak
|
||||
// en.lproj/*
|
||||
// zh_CN.lproj/*
|
||||
defaultLocale = 'en.lproj';
|
||||
ourLocales = ourLocales.map(locale => `${locale}.lproj`);
|
||||
ourLocales = ourLocales.map(locale => `${locale.replace(/-/g, '_')}.lproj`);
|
||||
|
||||
localesPath = path.join(
|
||||
appOutDir,
|
||||
|
@ -35,6 +35,8 @@ export async function afterPack({
|
|||
electronPlatformName === 'win32'
|
||||
) {
|
||||
// Shared between windows and linux
|
||||
// en-US.pak
|
||||
// zh-CN.pak
|
||||
defaultLocale = 'en-US.pak';
|
||||
ourLocales = ourLocales.map(locale => {
|
||||
if (locale === 'en') {
|
||||
|
|
|
@ -1,76 +1,36 @@
|
|||
// 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';
|
||||
import * as Errors from '../types/errors';
|
||||
const { SMARTLING_USER, SMARTLING_SECRET } = process.env;
|
||||
|
||||
console.log('Getting latest strings!');
|
||||
|
||||
// Note: we continue after tx failures so we always restore placeholders on json files
|
||||
let failed = false;
|
||||
|
||||
console.log();
|
||||
console.log('Getting strings, allow for new ones over 80% translated');
|
||||
try {
|
||||
execSync('tx pull --all --use-git-timestamps --minimum-perc=80', {
|
||||
stdio: [null, process.stdout, process.stderr],
|
||||
});
|
||||
} catch (error: unknown) {
|
||||
failed = true;
|
||||
console.log(
|
||||
'Failed first tx fetch, continuing...',
|
||||
Errors.toLogFormat(error)
|
||||
);
|
||||
if (!SMARTLING_USER) {
|
||||
console.error('Need to set SMARTLING_USER environment variable!');
|
||||
process.exit(1);
|
||||
}
|
||||
if (!SMARTLING_SECRET) {
|
||||
console.error('Need to set SMARTLING_SECRET environment variable!');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('Fetching latest strings!');
|
||||
console.log();
|
||||
console.log('Getting strings, updating everything previously missed');
|
||||
try {
|
||||
execSync('tx pull --use-git-timestamps', {
|
||||
execSync(
|
||||
'smartling-cli' +
|
||||
` --user "${SMARTLING_USER}"` +
|
||||
` --secret "${SMARTLING_SECRET}"` +
|
||||
' --config .smartling.yml' +
|
||||
' --verbose' +
|
||||
' --format "_locales/{{.Locale}}/messages.json"' +
|
||||
' files pull',
|
||||
{
|
||||
stdio: [null, process.stdout, process.stderr],
|
||||
});
|
||||
} catch (error: unknown) {
|
||||
failed = true;
|
||||
console.log(
|
||||
'Failed second tx fetch, continuing...',
|
||||
Errors.toLogFormat(error)
|
||||
);
|
||||
}
|
||||
|
||||
const BASE_DIR = join(__dirname, '../../_locales');
|
||||
const locales = readdirSync(join(BASE_DIR, ''));
|
||||
|
||||
console.log();
|
||||
console.log('Deleting placeholders for all locales');
|
||||
locales.forEach((locale: string) => {
|
||||
const target = resolve(join(BASE_DIR, locale, 'messages.json'));
|
||||
if (!existsSync(target)) {
|
||||
console.warn(`File not found for ${locale}: ${target}`);
|
||||
return;
|
||||
}
|
||||
);
|
||||
|
||||
const messages: LocaleMessagesType = readJsonSync(target);
|
||||
Object.keys(messages).forEach(key => {
|
||||
delete messages[key].placeholders;
|
||||
|
||||
if (!messages[key].description) {
|
||||
delete messages[key].description;
|
||||
}
|
||||
});
|
||||
|
||||
console.log(`Writing ${target}`);
|
||||
writeFileSync(target, `${JSON.stringify(messages, null, 4)}\n`);
|
||||
});
|
||||
|
||||
console.log('Formatting newly-downloaded strings!');
|
||||
console.log();
|
||||
execSync('yarn format', {
|
||||
stdio: [null, process.stdout, process.stderr],
|
||||
});
|
||||
|
||||
if (failed) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
|
29
ts/scripts/push-strings.ts
Normal file
29
ts/scripts/push-strings.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2021 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
const { SMARTLING_USER, SMARTLING_SECRET } = process.env;
|
||||
|
||||
if (!SMARTLING_USER) {
|
||||
console.error('Need to set SMARTLING_USER environment variable!');
|
||||
process.exit(1);
|
||||
}
|
||||
if (!SMARTLING_SECRET) {
|
||||
console.error('Need to set SMARTLING_SECRET environment variable!');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('Pushing latest strings!');
|
||||
console.log();
|
||||
execSync(
|
||||
'smartling-cli' +
|
||||
` --user "${SMARTLING_USER}"` +
|
||||
` --secret "${SMARTLING_SECRET}"` +
|
||||
' --config .smartling.yml' +
|
||||
' --verbose' +
|
||||
' files push _locales/en/messages.json',
|
||||
{
|
||||
stdio: [null, process.stdout, process.stderr],
|
||||
}
|
||||
);
|
Loading…
Add table
Add a link
Reference in a new issue