translate-table
Version:
A powerful CLI tool for translating PostgreSQL table content to multiple languages and generating translations for internationalization (i18n).
57 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.translateText = translateText;
const google_translate_api_x_1 = require("google-translate-api-x");
/**
* Translates text values to multiple languages using Google Translate API
*
* @param values - The items with ID and name to be translated
* @param languagesToTranslate - Target language codes (e.g. ['en', 'es'])
* @param defaultLanguage - Source language code (default: 'en')
* @returns Promise with array of translations
*/
async function translateText(values, languagesToTranslate, defaultLanguage = "en") {
// Check if there's data to translate
if (!values.length || !languagesToTranslate.length) {
return [];
}
try {
// Extract only the names for translation
const textsToTranslate = values.map((value) => value.name);
// Create an array of promises to translate for each language
const translationPromises = languagesToTranslate.map(async (language) => {
try {
// Translate all texts for current language
const translations = await (0, google_translate_api_x_1.translate)(textsToTranslate, {
from: defaultLanguage,
to: language,
forceTo: true,
autoCorrect: true,
});
// Map results to output format
return translations.map((translation, index) => ({
itemId: values[index].id,
text: translation.text,
language,
}));
}
catch (error) {
// Log error for specific language and return original text
console.error(`Translation error for language ${language}:`, error);
return values.map((value) => ({
itemId: value.id,
text: value.name, // Keep original text in case of error
language,
}));
}
});
// Wait for all translations and combine results
const translationResults = await Promise.all(translationPromises);
return translationResults.flat();
}
catch (error) {
console.error("Translation failed:", error);
throw new Error(`Failed to translate texts: ${error.message}`);
}
}
//# sourceMappingURL=translate.js.map