Skip to content

Commit d23877f

Browse files
authored
Merge branch 'main' into enhance-locale-types-rm
2 parents 453dc2b + 70a4db0 commit d23877f

File tree

10 files changed

+68
-38
lines changed

10 files changed

+68
-38
lines changed

.changeset/polite-trees-compete.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
---

.changeset/serious-wasps-unite.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
---

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ cd packages/cli
2424
pnpm run dev
2525

2626
# in terminal window 2 - test the CLI
27-
cd package
27+
cd packages/cli
2828
pnpm lingo.dev --help # this command will use the current cli code + demo config from ./package/i18n.json
2929
```
3030

packages/cli/src/cli/cmd/cleanup.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { I18nConfig, resolveOverridenLocale } from "@lingo.dev/_spec";
1+
import { I18nConfig, resolveOverriddenLocale } from "@lingo.dev/_spec";
22
import { Command } from "interactive-commander";
33
import _ from "lodash";
44
import { getConfig } from "../utils/config";
@@ -38,17 +38,20 @@ export default new Command()
3838
ora.info(`Processing bucket: ${bucket.type}`);
3939

4040
for (const bucketConfig of bucket.config) {
41-
const sourceLocale = resolveOverridenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
41+
const sourceLocale = resolveOverriddenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
4242
const bucketOra = Ora({ indent: 2 }).info(`Processing path: ${bucketConfig.pathPattern}`);
43-
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, { isCacheRestore: false, defaultLocale: sourceLocale });
43+
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
44+
isCacheRestore: false,
45+
defaultLocale: sourceLocale,
46+
});
4447
bucketLoader.setDefaultLocale(sourceLocale);
4548

4649
// Load source data
4750
const sourceData = await bucketLoader.pull(sourceLocale);
4851
const sourceKeys = Object.keys(sourceData);
4952

5053
for (const _targetLocale of targetLocales) {
51-
const targetLocale = resolveOverridenLocale(_targetLocale, bucketConfig.delimiter);
54+
const targetLocale = resolveOverriddenLocale(_targetLocale, bucketConfig.delimiter);
5255
try {
5356
const targetData = await bucketLoader.pull(targetLocale);
5457
const targetKeys = Object.keys(targetData);

packages/cli/src/cli/cmd/i18n.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { bucketTypeSchema, I18nConfig, localeCodeSchema, resolveOverridenLocale } from "@lingo.dev/_spec";
1+
import { bucketTypeSchema, I18nConfig, localeCodeSchema, resolveOverriddenLocale } from "@lingo.dev/_spec";
22
import { LingoDotDevEngine } from "@lingo.dev/_sdk";
33
import { Command } from "interactive-commander";
44
import Z from "zod";
@@ -79,7 +79,7 @@ export default new Command()
7979
ora.start("Creating i18n.lock...");
8080
for (const bucket of buckets) {
8181
for (const bucketConfig of bucket.config) {
82-
const sourceLocale = resolveOverridenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
82+
const sourceLocale = resolveOverriddenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
8383

8484
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
8585
isCacheRestore: false,
@@ -110,7 +110,7 @@ export default new Command()
110110
const bucketOra = Ora({ indent: 4 });
111111
bucketOra.info(`Processing path: ${bucketConfig.pathPattern}`);
112112

113-
const sourceLocale = resolveOverridenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
113+
const sourceLocale = resolveOverriddenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
114114
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
115115
isCacheRestore: true,
116116
defaultLocale: sourceLocale,
@@ -154,7 +154,7 @@ export default new Command()
154154
let requiresUpdate: string | null = null;
155155
bucketLoop: for (const bucket of buckets) {
156156
for (const bucketConfig of bucket.config) {
157-
const sourceLocale = resolveOverridenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
157+
const sourceLocale = resolveOverriddenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
158158

159159
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
160160
isCacheRestore: false,
@@ -176,7 +176,7 @@ export default new Command()
176176
}
177177

178178
for (const _targetLocale of targetLocales) {
179-
const targetLocale = resolveOverridenLocale(_targetLocale, bucketConfig.delimiter);
179+
const targetLocale = resolveOverriddenLocale(_targetLocale, bucketConfig.delimiter);
180180
const { unlocalizable: targetUnlocalizable, ...targetData } = await bucketLoader.pull(targetLocale);
181181

182182
const missingKeys = _.difference(Object.keys(sourceData), Object.keys(targetData));
@@ -227,7 +227,7 @@ export default new Command()
227227
for (const bucketConfig of bucket.config) {
228228
const bucketOra = Ora({ indent: 2 }).info(`Processing path: ${bucketConfig.pathPattern}`);
229229

230-
const sourceLocale = resolveOverridenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
230+
const sourceLocale = resolveOverriddenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
231231

232232
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
233233
isCacheRestore: false,
@@ -238,7 +238,7 @@ export default new Command()
238238
let sourceData = await bucketLoader.pull(sourceLocale);
239239

240240
for (const _targetLocale of targetLocales) {
241-
const targetLocale = resolveOverridenLocale(_targetLocale, bucketConfig.delimiter);
241+
const targetLocale = resolveOverriddenLocale(_targetLocale, bucketConfig.delimiter);
242242
try {
243243
bucketOra.start(`[${sourceLocale} -> ${targetLocale}] (0%) Localization in progress...`);
244244

packages/cli/src/cli/cmd/lockfile.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Command } from "interactive-commander";
22
import Z from "zod";
33
import Ora from "ora";
44
import { createLockfileHelper } from "../utils/lockfile";
5-
import { bucketTypeSchema, resolveOverridenLocale } from "@lingo.dev/_spec";
5+
import { bucketTypeSchema, resolveOverriddenLocale } from "@lingo.dev/_spec";
66
import { getConfig } from "../utils/config";
77
import createBucketLoader from "../loaders";
88
import { getBuckets } from "../utils/buckets";
@@ -25,8 +25,11 @@ export default new Command()
2525

2626
for (const bucket of buckets) {
2727
for (const bucketConfig of bucket.config) {
28-
const sourceLocale = resolveOverridenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
29-
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, { isCacheRestore: false, defaultLocale: sourceLocale });
28+
const sourceLocale = resolveOverriddenLocale(i18nConfig!.locale.source, bucketConfig.delimiter);
29+
const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
30+
isCacheRestore: false,
31+
defaultLocale: sourceLocale,
32+
});
3033
bucketLoader.setDefaultLocale(sourceLocale);
3134

3235
const sourceData = await bucketLoader.pull(sourceLocale);

packages/cli/src/cli/cmd/show/files.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Ora from "ora";
44
import { getConfig } from "../../utils/config";
55
import { CLIError } from "../../utils/errors";
66
import { getBuckets } from "../../utils/buckets";
7-
import { resolveOverridenLocale } from "@lingo.dev/_spec";
7+
import { resolveOverriddenLocale } from "@lingo.dev/_spec";
88

99
export default new Command()
1010
.command("files")
@@ -28,10 +28,10 @@ export default new Command()
2828
const buckets = getBuckets(i18nConfig);
2929
for (const bucket of buckets) {
3030
for (const bucketConfig of bucket.config) {
31-
const sourceLocale = resolveOverridenLocale(i18nConfig.locale.source, bucketConfig.delimiter);
31+
const sourceLocale = resolveOverriddenLocale(i18nConfig.locale.source, bucketConfig.delimiter);
3232
const sourcePath = bucketConfig.pathPattern.replace(/\[locale\]/g, sourceLocale);
3333
const targetPaths = i18nConfig.locale.targets.map((_targetLocale) => {
34-
const targetLocale = resolveOverridenLocale(_targetLocale, bucketConfig.delimiter);
34+
const targetLocale = resolveOverriddenLocale(_targetLocale, bucketConfig.delimiter);
3535
return bucketConfig.pathPattern.replace(/\[locale\]/g, targetLocale);
3636
});
3737

packages/cli/src/cli/utils/buckets.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import _ from "lodash";
22
import path from "path";
33
import { glob } from "glob";
44
import { CLIError } from "./errors";
5-
import { I18nConfig, resolveOverridenLocale, BucketItem } from "@lingo.dev/_spec";
5+
import { I18nConfig, resolveOverriddenLocale, BucketItem } from "@lingo.dev/_spec";
66
import { bucketTypeSchema } from "@lingo.dev/_spec";
77
import Z from "zod";
88

@@ -21,15 +21,15 @@ export function getBuckets(i18nConfig: I18nConfig) {
2121

2222
function extractPathPatterns(sourceLocale: string, include: BucketItem[], exclude?: BucketItem[]) {
2323
const includedPatterns = include.flatMap((pattern) =>
24-
expandPlaceholderedGlob(pattern.path, resolveOverridenLocale(sourceLocale, pattern.delimiter)).map(
24+
expandPlaceholderedGlob(pattern.path, resolveOverriddenLocale(sourceLocale, pattern.delimiter)).map(
2525
(pathPattern) => ({
2626
pathPattern,
2727
delimiter: pattern.delimiter,
2828
}),
2929
),
3030
);
3131
const excludedPatterns = exclude?.flatMap((pattern) =>
32-
expandPlaceholderedGlob(pattern.path, resolveOverridenLocale(sourceLocale, pattern.delimiter)).map(
32+
expandPlaceholderedGlob(pattern.path, resolveOverriddenLocale(sourceLocale, pattern.delimiter)).map(
3333
(pathPattern) => ({
3434
pathPattern,
3535
delimiter: pattern.delimiter,

packages/sdk/src/index.ts

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ export class LingoDotDevEngine {
4949
progressCallback?: (
5050
progress: number,
5151
sourceChunk: Record<string, string>,
52-
processedChunk: Record<string, string>
53-
) => void
52+
processedChunk: Record<string, string>,
53+
) => void,
5454
): Promise<Record<string, string>> {
5555
const finalPayload = payloadSchema.parse(payload);
5656
const finalParams = localizationParamsSchema.parse(params);
@@ -68,7 +68,7 @@ export class LingoDotDevEngine {
6868
finalParams.targetLocale,
6969
{ data: chunk, reference: params.reference },
7070
workflowId,
71-
params.fast || false
71+
params.fast || false,
7272
);
7373

7474
if (progressCallback) {
@@ -96,7 +96,7 @@ export class LingoDotDevEngine {
9696
reference?: Z.infer<typeof referenceSchema>;
9797
},
9898
workflowId: string,
99-
fast: boolean
99+
fast: boolean,
100100
): Promise<Record<string, string>> {
101101
const res = await fetch(`${this.config.apiUrl}/i18n`, {
102102
method: "POST",
@@ -115,7 +115,7 @@ export class LingoDotDevEngine {
115115
reference: payload.reference,
116116
},
117117
null,
118-
2
118+
2,
119119
),
120120
});
121121

@@ -202,8 +202,8 @@ export class LingoDotDevEngine {
202202
progressCallback?: (
203203
progress: number,
204204
sourceChunk: Record<string, string>,
205-
processedChunk: Record<string, string>
206-
) => void
205+
processedChunk: Record<string, string>,
206+
) => void,
207207
): Promise<Record<string, any>> {
208208
return this._localizeRaw(obj, params, progressCallback);
209209
}
@@ -221,7 +221,7 @@ export class LingoDotDevEngine {
221221
async localizeText(
222222
text: string,
223223
params: Z.infer<typeof localizationParamsSchema>,
224-
progressCallback?: (progress: number) => void
224+
progressCallback?: (progress: number) => void,
225225
): Promise<string> {
226226
const response = await this._localizeRaw({ text }, params, progressCallback);
227227
return response.text || "";
@@ -242,16 +242,16 @@ export class LingoDotDevEngine {
242242
sourceLocale: LocaleCode;
243243
targetLocales: LocaleCode[];
244244
fast?: boolean;
245-
}
245+
},
246246
) {
247247
const responses = await Promise.all(
248248
params.targetLocales.map((targetLocale) =>
249249
this.localizeText(text, {
250250
sourceLocale: params.sourceLocale,
251251
targetLocale,
252252
fast: params.fast,
253-
})
254-
)
253+
}),
254+
),
255255
);
256256

257257
return responses;
@@ -270,7 +270,7 @@ export class LingoDotDevEngine {
270270
async localizeChat(
271271
chat: Array<{ name: string; text: string }>,
272272
params: Z.infer<typeof localizationParamsSchema>,
273-
progressCallback?: (progress: number) => void
273+
progressCallback?: (progress: number) => void,
274274
): Promise<Array<{ name: string; text: string }>> {
275275
const localized = await this._localizeRaw({ chat }, params, progressCallback);
276276

@@ -294,7 +294,7 @@ export class LingoDotDevEngine {
294294
async localizeHtml(
295295
html: string,
296296
params: Z.infer<typeof localizationParamsSchema>,
297-
progressCallback?: (progress: number) => void
297+
progressCallback?: (progress: number) => void,
298298
): Promise<string> {
299299
const jsdomPackage = await import("jsdom");
300300
const { JSDOM } = jsdomPackage;
@@ -326,7 +326,7 @@ export class LingoDotDevEngine {
326326
}
327327

328328
const siblings = Array.from(parent.childNodes).filter(
329-
(n) => n.nodeType === 1 || (n.nodeType === 3 && n.textContent?.trim())
329+
(n) => n.nodeType === 1 || (n.nodeType === 3 && n.textContent?.trim()),
330330
);
331331
const index = siblings.indexOf(current);
332332
if (index !== -1) {
@@ -392,7 +392,7 @@ export class LingoDotDevEngine {
392392

393393
for (const index of indices) {
394394
const siblings = Array.from(parent.childNodes).filter(
395-
(n) => n.nodeType === 1 || (n.nodeType === 3 && n.textContent?.trim())
395+
(n) => n.nodeType === 1 || (n.nodeType === 3 && n.textContent?.trim()),
396396
);
397397
current = siblings[parseInt(index)] || null;
398398
if (current?.nodeType === 1) {
@@ -440,18 +440,36 @@ export class LingoDotDevEngine {
440440
* @deprecated Use LingoDotDevEngine instead. This class is maintained for backwards compatibility.
441441
*/
442442
export class ReplexicaEngine extends LingoDotDevEngine {
443+
private static hasWarnedDeprecation = false;
444+
443445
constructor(config: Partial<Z.infer<typeof engineParamsSchema>>) {
444446
super(config);
445-
console.warn("ReplexicaEngine is deprecated. Please use LingoDotDevEngine instead.");
447+
if (!ReplexicaEngine.hasWarnedDeprecation) {
448+
console.warn(
449+
"ReplexicaEngine is deprecated and will be removed in a future release. " +
450+
"Please use LingoDotDevEngine instead. " +
451+
"See https://docs.lingo.dev/migration for more information.",
452+
);
453+
ReplexicaEngine.hasWarnedDeprecation = true;
454+
}
446455
}
447456
}
448457

449458
/**
450459
* @deprecated Use LingoDotDevEngine instead. This class is maintained for backwards compatibility.
451460
*/
452461
export class LingoEngine extends LingoDotDevEngine {
462+
private static hasWarnedDeprecation = false;
463+
453464
constructor(config: Partial<Z.infer<typeof engineParamsSchema>>) {
454465
super(config);
455-
console.warn("LingoEngine is deprecated. Please use LingoDotDevEngine instead.");
466+
if (!LingoEngine.hasWarnedDeprecation) {
467+
console.warn(
468+
"LingoEngine is deprecated and will be removed in a future release. " +
469+
"Please use LingoDotDevEngine instead. " +
470+
"See https://docs.lingo.dev/migration for more information.",
471+
);
472+
LingoEngine.hasWarnedDeprecation = true;
473+
}
456474
}
457475
}

packages/spec/src/locales.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,9 @@ export const getLocaleCodeDelimiter = (locale: string): LocaleDelimiter => {
250250
}
251251
};
252252

253+
253254
export const resolveOverridenLocale = (locale: string, delimiter?: LocaleDelimiter): string => {
255+
254256
if (!delimiter) {
255257
return locale;
256258
}

0 commit comments

Comments
 (0)