-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtranslate-all.js
More file actions
71 lines (53 loc) · 1.86 KB
/
Copy pathtranslate-all.js
File metadata and controls
71 lines (53 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import fs from "fs";
import path from "path";
import axios from "axios";
import dotenv from "dotenv";
dotenv.config();
const key = process.env.AZURE_TRANSLATOR_KEY;
const endpoint = process.env.AZURE_TRANSLATOR_ENDPOINT;
const region = process.env.AZURE_REGION;
// Load your languages list
const languages = JSON.parse(fs.readFileSync("languages.json", "utf-8"));
// Root folder where your i18n lives
const LOCALES_ROOT = path.join("i18n", "locales");
async function translateText(text, toLang) {
const url = `${endpoint}/translate?api-version=3.0&to=${toLang}`;
const res = await axios.post(
url,
[{ Text: text }],
{
headers: {
"Ocp-Apim-Subscription-Key": key,
"Ocp-Apim-Subscription-Region": region,
"Content-Type": "application/json",
},
}
);
return res.data[0].translations[0].text;
}
async function translateAllLanguages() {
const baseJson = JSON.parse(fs.readFileSync("en.json", "utf-8"));
for (const lang of languages) {
const code = lang.code;
console.log(`Translating: ${code} (${lang.title}) ...`);
// Create language folder if not exists
const langFolder = path.join(LOCALES_ROOT, code);
if (!fs.existsSync(langFolder)) {
fs.mkdirSync(langFolder, { recursive: true });
console.log(`📁 Created folder: ${langFolder}`);
}
const translatedJson = {};
for (const key in baseJson) {
translatedJson[key] = await translateText(baseJson[key], code);
}
// Save as translation.json inside the folder
const outputPath = path.join(langFolder, "translation.json");
fs.writeFileSync(
outputPath,
JSON.stringify(translatedJson, null, 2)
);
console.log(`✅ Saved: ${outputPath}`);
}
console.log("🎉 All translations completed!");
}
translateAllLanguages();