diff --git a/packages/cli/src/api/catalog.test.ts b/packages/cli/src/api/catalog.test.ts index 193cba8b8..87d3bb00e 100644 --- a/packages/cli/src/api/catalog.test.ts +++ b/packages/cli/src/api/catalog.test.ts @@ -93,7 +93,7 @@ describe("Catalog", () => { // Everything should be empty expect(await catalog.readAll()).toMatchSnapshot() - await catalog.make({ ...defaultMakeOptions, locale: "en" }) + await catalog.make({ ...defaultMakeOptions, locale: ["en"] }) expect(await catalog.readAll()).toMatchSnapshot() }) diff --git a/packages/cli/src/api/catalog.ts b/packages/cli/src/api/catalog.ts index 25afaf0de..49154c152 100644 --- a/packages/cli/src/api/catalog.ts +++ b/packages/cli/src/api/catalog.ts @@ -105,7 +105,7 @@ export class Catalog { const sortedCatalogs = cleanAndSort(catalogs) - const locales = options.locale ? [options.locale] : this.locales + const locales = options.locale ? options.locale : this.locales await Promise.all( locales.map((locale) => this.write(locale, sortedCatalogs[locale])) ) diff --git a/packages/cli/src/lingui-extract.ts b/packages/cli/src/lingui-extract.ts index 032cd14fd..82a4dcb6a 100644 --- a/packages/cli/src/lingui-extract.ts +++ b/packages/cli/src/lingui-extract.ts @@ -16,7 +16,7 @@ export type CliExtractOptions = { files?: string[] clean: boolean overwrite: boolean - locale: string + locale: string[] prevFormat: string | null watch?: boolean } @@ -103,7 +103,7 @@ type CliOptions = { files?: string[] clean: boolean overwrite: boolean - locale: string + locale: string[] prevFormat: string | null watch?: boolean } @@ -111,7 +111,16 @@ type CliOptions = { if (require.main === module) { program .option("--config ", "Path to the config file") - .option("--locale ", "Only extract the specified locale") + .option( + "--locale ", + "Only extract the specified locales", + (value) => { + return value + .split(",") + .map((s) => s.trim()) + .filter(Boolean) + } + ) .option("--overwrite", "Overwrite translations for source locale") .option("--clean", "Remove obsolete translations") .option( @@ -148,10 +157,16 @@ if (require.main === module) { process.exit(1) } - if (options.locale && !config.locales.includes(options.locale)) { - hasErrors = true - console.error(`Locale ${chalk.bold(options.locale)} does not exist.`) - console.error() + if (options.locale) { + const missingLocale = options.locale.find( + (l) => !config.locales.includes(l) + ) + + if (missingLocale) { + hasErrors = true + console.error(`Locale ${chalk.bold(missingLocale)} does not exist.`) + console.error() + } } if (hasErrors) process.exit(1) diff --git a/website/docs/ref/cli.md b/website/docs/ref/cli.md index d20092554..f4e572217 100644 --- a/website/docs/ref/cli.md +++ b/website/docs/ref/cli.md @@ -54,7 +54,7 @@ lingui extract [files...] [--clean] [--overwrite] [--format ] - [--locale ] + [--locale ] [--convert-from ] [--verbose] [--watch [--debounce ]] @@ -109,9 +109,9 @@ Update translations for [`sourceLocale`](/docs/ref/conf.md#sourcelocale) from so Extract message catalogs to the specified file format (see the [`format`](/docs/ref/conf.md#format) option for more details). -#### `--locale ` {#extract-locale} +#### `--locale ` {#extract-locale} -Extract data for the specified locale only. +Extract data for the specified locales only. #### `--convert-from ` {#extract-convert-from}