Language Translator with HTML, CSS & JavaScript

30 DAYS 30 PROJECT CHALLENGE

Day #28

Project Overview

A Language Translator built using HTML, CSS, and JavaScript that allows users to translate text between different languages in real time.
The application uses a public translation service and dynamically displays translated output in a clean and user-friendly interface.

Key Features

  • Translate text between multiple languages.
  • Real-time translation with instant results.
  • Simple and intuitive user interface.
  • Supports common language pairs (English, Hindi, French, Spanish, etc.).
  • Handles empty input and error scenarios gracefully.
  • Fully frontend-based with no authentication required.
  • Responsive design suitable for all devices.

HTML Code

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Language Translator</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>

  <div class="translator-container">
    <h2>Language Translator</h2>

    <textarea id="inputText" placeholder="Enter text to translate"></textarea>

    <div class="controls">
      <select id="fromLang">
        <option value="en">English</option>
        <option value="hi">Hindi</option>
        <option value="fr">French</option>
        <option value="es">Spanish</option>
        <option value="de">German</option>
      </select>

      <span>→</span>

      <select id="toLang">
        <option value="hi">Hindi</option>
        <option value="en">English</option>
        <option value="fr">French</option>
        <option value="es">Spanish</option>
        <option value="de">German</option>
      </select>
    </div>

    <button onclick="translateText()">Translate</button>

    <textarea id="outputText" placeholder="Translated text" readonly></textarea>
  </div>

  <script src="script.js"></script>
</body>
</html>

CSS Code

* {
  box-sizing: border-box;
  font-family: "Segoe UI", sans-serif;
}

body {
  min-height: 100vh;
  background: #042453;
  display: flex;
  justify-content: center;
  align-items: center;
}

.translator-container {
  background: #ffffff;
  width: 380px;
  padding: 25px;
  border-radius: 14px;
  text-align: center;
  box-shadow: 0 20px 40px rgba(0,0,0,0.25);
}

h2 {
  margin-bottom: 15px;
}

textarea {
  width: 100%;
  height: 90px;
  padding: 10px;
  border-radius: 8px;
  border: 1px solid #ccc;
  resize: none;
  margin-bottom: 10px;
}

.controls {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}

select {
  width: 45%;
  padding: 8px;
  border-radius: 6px;
}

button {
  width: 100%;
  padding: 10px;
  border: none;
  border-radius: 6px;
  background: #4f46e5;
  color: white;
  cursor: pointer;
}

#outputText {
  margin-top: 10px;
}

Javascript Code

function translateText() {
  const text = document.getElementById("inputText").value.trim();
  const from = document.getElementById("fromLang").value;
  const to = document.getElementById("toLang").value;
  const output = document.getElementById("outputText");

  if (!text) {
    output.value = "Please enter text to translate.";
    return;
  }

  output.value = "Translating...";

  fetch(
    `https://api.mymemory.translated.net/get?q=${encodeURIComponent(
      text
    )}&langpair=${from}|${to}`
  )
    .then(res => res.json())
    .then(data => {
      if (data.responseData && data.responseData.translatedText) {
        output.value = data.responseData.translatedText;
      } else {
        output.value = "Translation failed.";
      }
    })
    .catch(() => {
      output.value = "Error translating text.";
    });
}
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Related Projects

Day 26 : Job Search App (API)

Searches and displays job listings dynamically using a public jobs API.

Concepts: API integration, async data fetching, dynamic UI rendering.

Day 25 : Stock Price UI (Mock / API)

Displays stock prices and daily changes using mock data with API-ready structure.

Concepts: UI state management, dynamic rendering, data simulation.

Day 30 : Public Holiday Finder

Finds and displays public holidays by country and year using a public API.

Concepts: API integration, async data fetching, dynamic UI rendering.