Skip to content

Commit 561888a

Browse files
committed
feat: libre translate translate error fix & translate refactoring
1 parent 4d9ca27 commit 561888a

File tree

5 files changed

+40
-26
lines changed

5 files changed

+40
-26
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "1.6.3",
2+
"version": "1.6.4",
33
"license": "MIT",
44
"main": "dist/index.js",
55
"description": "Translate your JSON file or object into another languages with Google Translate API",

src/core/translator.ts

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export async function plaintranslate(
2323
// STEP: translate in try-catch to keep continuity
2424
try {
2525
// STEP: translate with proper source
26-
let translatedStr = await translateSourceMap.get(global.source)(
26+
let translatedStr = await translateSourceFunction(global.source)(
2727
ignored_str,
2828
from,
2929
to
@@ -36,19 +36,33 @@ export async function plaintranslate(
3636
single_brackets_map
3737
);
3838

39+
global.totalTranslated = global.totalTranslated + 1;
40+
3941
return translatedStr;
4042
} catch (e) {
4143
// error case -> return
42-
return '--';
44+
warn(
45+
`\nerror while translating \n\t"${str}" \nassigned "--" instead of exit from cli.`
46+
);
47+
48+
global.totalTranslated = global.totalTranslated + 1;
49+
50+
return default_value;
4351
}
4452
}
4553

46-
const translateSourceMap = new Map<string, any>([
47-
[Sources.LibreTranslate, translateWithLibre],
48-
[Sources.ArgosTranslate, translateWithArgos],
49-
[Sources.BingTranslate, translateWithBing],
50-
[Sources.GoogleTranslate, translateWithGoogle],
51-
]);
54+
function translateSourceFunction(source: string) {
55+
switch (source) {
56+
case Sources.LibreTranslate:
57+
return translateWithLibre;
58+
case Sources.ArgosTranslate:
59+
return translateWithArgos;
60+
case Sources.BingTranslate:
61+
return translateWithBing;
62+
default:
63+
return translateWithGoogle;
64+
}
65+
}
5266

5367
async function translateWithLibre(
5468
str: string,
@@ -59,6 +73,9 @@ async function translateWithLibre(
5973
q: safeValueTransition(str),
6074
source: from,
6175
target: to,
76+
format: 'text',
77+
api_key: '',
78+
secret: '2NEKGMB',
6279
};
6380

6481
const { data } = await axios.post(
@@ -71,8 +88,6 @@ async function translateWithLibre(
7188
}
7289
);
7390

74-
global.totalTranslated = global.totalTranslated + 1;
75-
7691
return data?.translatedText ? data?.translatedText : default_value;
7792
}
7893

@@ -98,8 +113,6 @@ async function translateWithArgos(
98113
}
99114
);
100115

101-
global.totalTranslated = global.totalTranslated + 1;
102-
103116
return data?.translatedText ? data?.translatedText : default_value;
104117
}
105118

@@ -115,8 +128,6 @@ async function translateWithBing(
115128
false
116129
);
117130

118-
global.totalTranslated = global.totalTranslated + 1;
119-
120131
return translation;
121132
}
122133

@@ -152,15 +163,17 @@ async function translateWithGoogle(
152163
warn('No new proxy exists, continuing without proxy');
153164
global.proxyIndex = -1;
154165

155-
let translatedStr = await translateWithGoogle(str, from, to);
166+
let translatedStr = await translateWithGoogleByProxySupport(
167+
str,
168+
from,
169+
to
170+
);
156171

157172
return translatedStr;
158173
}
159-
}
160-
161-
// STEP: translate without proxy
162-
else {
163-
let translatedStr = await translateWithGoogle(str, from, to);
174+
} else {
175+
// STEP: translate without proxy
176+
let translatedStr = await translateWithGoogleByProxySupport(str, from, to);
164177

165178
return translatedStr;
166179
}
@@ -183,7 +196,5 @@ async function translateWithGoogleByProxySupport(
183196
}
184197
);
185198

186-
global.totalTranslated = global.totalTranslated + 1;
187-
188199
return text;
189200
}

src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ export enum Sources {
4040
BingTranslate = 'BingTranslate',
4141
}
4242

43+
// default
44+
global.source = Sources.GoogleTranslate;
45+
4346
// TYPES
4447
export interface translatedObject {
4548
[key: string]: any;

src/test/core.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {
22
getFile,
33
getRootFolder,
4-
safeValueTransition,
54
saveFilePublic,
5+
safeValueTransition,
66
} from '../core/core';
77
import * as fs from 'fs/promises';
88
import * as appConsole from '../utils/console';
@@ -113,7 +113,7 @@ describe(`CORE`, () => {
113113
const test_cases = [
114114
{
115115
value: '',
116-
expected_safe_value: '-',
116+
expected_safe_value: '--',
117117
},
118118
{
119119
value: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris varius interdum auctor. Proin congue auctor risus. Aliquam maximus bibendum velit, eget scelerisque lectus elementum in. Aliquam non nibh ac est laoreet venenatis. Proin id leo vestibulum, aliquet tellus et, scelerisque sapien. Etiam accumsan justo vitae vestibulum tincidunt. Curabitur accumsan lorem sit amet ullamcorper ultricies. Nam pretium lacus dui, vitae feugiat purus feugiat eget. Ut eleifend porttitor lobortis. Nulla placerat augue ut lacus dignissim finibus. Pellentesque magna mauris, pellentesque id dictum vitae, gravida vitae mi. Proin cursus congue mauris, sit amet iaculis libero aliquet et. Nulla gravida semper consectetur. Nam non mauris eget ligula dictum mollis. Aenean leo metus, efficitur sed ipsum in, dictum blandit purus. Praesent dictum aliquet elementum. Vestibulum quis sapien ut massa condimentum ornare. Quisque ornare venenatis commodo. Aliquam luctus lacus vitae metus iaculis convallis. Nunc enim odio, ullamcorper sed finibus vitae, sodales eu risus. Ut a tellus hendrerit, vulputate nulla vel, pretium felis. Curabitur id pulvinar neque. Cras euismod aliquet odio, nec vestibulum orci condimentum vel. Vivamus ut ante ligula. Aliquam finibus dui eros, sit amet euismod magna gravida in.`,

src/utils/micro.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ export function translationStatistic(
2626
}
2727

2828
export const current_version = packageJSON.version;
29-
export const default_value = '-';
29+
export const default_value = '--';
3030
export const translation_value_limit = 5000;

0 commit comments

Comments
 (0)