leumas-private-shared
Version:
Private React JSX Package For Leumas Shared Components, Headers, Footers, Asides, Login Pages, API Key Manager and much more. Styles and everything reusable to avoid DRY code across all of our subdomains
88 lines (80 loc) • 2.06 kB
JSX
import axios from 'axios';
const languagesMap = {
afrikaans: 'af-ZA',
albanian: 'sq-AL',
arabic: 'ar-SA',
armenian: 'hy-AM',
bengali: 'bn-IN',
bulgarian: 'bg-BG',
catalan: 'ca-ES',
chinese: 'zh-CN',
croatian: 'hr-HR',
czech: 'cs-CZ',
danish: 'da-DK',
dutch: 'nl-NL',
english: 'en-US',
estonian: 'et-EE',
filipino: 'fil-PH',
finnish: 'fi-FI',
french: 'fr-FR',
german: 'de-DE',
greek: 'el-GR',
gujarati: 'gu-IN',
hebrew: 'he-IL',
hindi: 'hi-IN',
hungarian: 'hu-HU',
icelandic: 'is-IS',
indonesian: 'id-ID',
italian: 'it-IT',
japanese: 'ja-JP',
kannada: 'kn-IN',
korean: 'ko-KR',
latvian: 'lv-LV',
lithuanian: 'lt-LT',
malay: 'ms-MY',
malayalam: 'ml-IN',
marathi: 'mr-IN',
norwegian: 'no-NO',
polish: 'pl-PL',
portuguese: 'pt-PT',
punjabi: 'pa-IN',
romanian: 'ro-RO',
russian: 'ru-RU',
serbian: 'sr-RS',
slovak: 'sk-SK',
slovenian: 'sl-SI',
spanish: 'es-ES',
swahili: 'sw-KE',
swedish: 'sv-SE',
tamil: 'ta-IN',
telugu: 'te-IN',
thai: 'th-TH',
turkish: 'tr-TR',
ukrainian: 'uk-UA',
urdu: 'ur-PK',
vietnamese: 'vi-VN',
welsh: 'cy-GB',
zulu: 'zu-ZA'
};
const translateText = async (text, language) => {
const apiKey = 'AIzaSyDPQrmSMJZ7vYG1aV_8EgiWmxGmtnUWVGo'; // Replace with your actual API key
const targetLangCode = languagesMap[language.toLowerCase()];
if (!targetLangCode) {
console.error('Unsupported language');
return null;
}
try {
const response = await axios.post(`https://translation.googleapis.com/language/translate/v2`, null, {
params: {
q: text,
target: targetLangCode,
key: apiKey
}
});
return response.data.data.translations[0].translatedText;
} catch (error) {
console.error('Translation error', error);
return null;
}
};
export default translateText;