Java Project – Language Translator

FREE Online Courses: Your Passport to Excellence - Start Now

In today’s interconnected world, language barriers have become a significant hurdle in effective communication and collaboration. However, with the advancement of technology, language translation solutions have emerged as powerful tools that bridge these gaps, allowing people from diverse linguistic backgrounds to connect, share ideas, and work together.

In this project, we will embark on a journey to explore the fascinating realm of language translation using Java, a versatile and widely adopted programming language. Embark on this journey with us as we unravel the complexities of language translation, harness the power of Java, and pave the way for seamless global communication. Let’s break down the barriers that divide us and embrace the possibilities of a world without language constraints.

About Java Language Translator

We will implement the following functionalities in the Java Language Translator Project :

1. We will define the LanguageTranslator class with methods to add words and sentences to dictionaries, translate text, show translations and show supported languages.
2. We will maintain a Map called dictionaries, which will store language dictionaries. Each language dictionary will be represented by a Map where words and their translations will be stored.
3. Our addWord method will add a word and its translation to the language dictionary corresponding to the specified language.
4. The translation method will translate a given text from a source language to a target language using the language dictionaries. It will check if the dictionaries for the specified languages exist and perform the translation by looking up words in the dictionaries.
5. Our showAllTranslations method will display all word translations in the language dictionary for a specified language.
6. Our showSupportedLanguages method will show the list of supported languages available for translation.
7. In the main method, we will create an instance of LanguageTranslator and read user input using a Scanner.
8. Inside a loop, we will display a menu and prompt the user to choose an option: adding a word, translating text, showing translations, or exiting the program.
9. Based on the user’s choice, we will call the corresponding method of the LanguageTranslator class to perform the desired action.
10. The loop will continue until the user chooses to exit by selecting option 4.

Overall, our program allows users to interactively add words and translations, translate text from one language to another, and view translations for a specific language. It provides a simple and user-friendly interface for language translation.

Prerequisites For Java Language Translator

To write and run the Java Language Translator Project code, the following prerequisites are required:

1. Basic understanding of the Java programming language, including knowledge of loops, conditional statements, and object-oriented programming concepts.
2. Familiarity with array data structures and the Java.util package.
3. A working Java development environment, which includes installing the Java Development Kit (JDK) on your computer. You can download the JDK from the official Oracle website or use a package manager specific to your operating system.
4. An Integrated Development Environment (IDE) like IntelliJ IDEA, Eclipse, or NetBeans, which can greatly simplify Java development. Choose an IDE you are comfortable with and set it up.

Download Java Language Translator Project Code

Please download the source code of the Java Language Translator Project: Java Language Translator Project Code.

Code Breakdown

1. Class: LanguageTranslator

Variables:
dictionaries: A HashMap that stores language dictionaries. Each language dictionary maps words from the language to their translations in English.

Constructor:

  • LanguageTranslator()
  • Initializes the dictionaries map.
  • Calls the initializeInbuiltTranslations() method to add some inbuilt languages and translations.
import java.util.HashMap;
 import java.util.Map;
 import java.util.Scanner;

 public class LanguageTranslator {
     private Map<String, Map<String, String>> dictionaries;

     public LanguageTranslator() {
        dictionaries = new HashMap<>();
        initializeInbuiltTranslations();
        }

2. initializeInbuiltTranslations() method:

Adds some inbuilt languages and translations using the addWord() method.

private void initializeInbuiltTranslations() {
      // Added some inbuilt languages and translations
      addWord("hello", "hello", "english"); // English to English
      addWord("good", "good", "english"); // English to English
      addWord("morning", "morning", "english"); // English to English

      addWord("adios", "bye", "spanish"); // Spanish to English
      addWord("noche", "night", "spanish"); // Spanish to English
      addWord("domingo", "sunday", "spanish"); // Spanish to English

      addWord("bonjour", "hello", "french"); // French to English
      addWord("bien", "good", "french"); // French to English
      addWord("matin", "morning", "french"); // French to English

      // Added some inbuilt sentences for translation
      addWord("this is a cat", "this is a cat", "english"); // English to English
      addWord("how are you", "how are you", "english"); // English to English
      addWord("thank you", "thank you", "english"); // English to English

      addWord("esto es un gato", "this is a cat", "spanish"); // Spanish to English
      addWord("¿cómo estás?", "how are you", "spanish"); // Spanish to English
      addWord("gracias", "thank you", "spanish"); // Spanish to English

      addWord("c'est un chat", "this is a cat", "french"); // French to English
      addWord("comment ça va", "how are you", "french"); // French to English
      addWord("merci", "thank you", "french"); // French to English
  }

3. addWord(String word, String translation, String language) method:

Adds a word and its translation to the language dictionary of the specified language in the dictionary map.

public void addWord(String word, String translation, String language) {
       // Retrieve the language dictionary for the specified language or create a new one if it doesn't exist
       Map<String, String> languageDictionary = dictionaries.getOrDefault(language.toLowerCase(), new HashMap<>());
       // Add the word and its translation to the language dictionary
       languageDictionary.put(word.toLowerCase(), translation.toLowerCase());
       // Update the dictionaries map with the modified language dictionary
       dictionaries.put(language.toLowerCase(), languageDictionary);
   }

4. translate(String text, String sourceLanguage, String targetLanguage) method:

  • Translates the given text from the source language to the target language using the language dictionaries in the dictionaries map.
  • Splits the text into words while preserving punctuation.
  • Removes leading and trailing spaces and converts words to lowercase.
  • Removes leading and trailing punctuation from each word.
  • Looks up translations in the source language dictionary and translates them into the target language.
  • If a translation is not found, keep the original word in the translated text.
    public String translate(String text, String sourceLanguage, String targetLanguage) {
    // Convert the source and target languages to lowercase
    sourceLanguage = sourceLanguage.toLowerCase();
    targetLanguage = targetLanguage.toLowerCase();

    // Retrieve the source and target language dictionaries
    Map<String, String> sourceDictionary = dictionaries.get(sourceLanguage);
    Map<String, String> targetDictionary = dictionaries.get(targetLanguage);

    // Check if the dictionaries for the specified languages exist
    if (sourceDictionary == null || targetDictionary == null) {
        System.out.println("Translation dictionaries not found for the specified languages.");
        return text;
    }

    // Use regular expression to split the text into words while preserving punctuation and remove leading/trailing spaces
    String[] words = text.split("\\s*(?:(?<=\\W)|(?=\\W))\\s*");

    StringBuilder translatedText = new StringBuilder();

    // Translate each word in the text
    for (String word : words) {
        // Remove leading/trailing spaces and convert to lowercase
        word = word.trim().toLowerCase();
        
        // Remove any leading/trailing punctuation
        while (word.length() > 0 && !Character.isLetterOrDigit(word.charAt(0))) {
            word = word.substring(1);
        }
        while (word.length() > 0 && !Character.isLetterOrDigit(word.charAt(word.length() - 1))) {
            word = word.substring(0, word.length() - 1);
        }

        String translatedWord = sourceDictionary.get(word);

        if (translatedWord != null) {
            // Append the translated word to the translated text if it exists in the target dictionary,
            // otherwise append the original word
            translatedText.append(targetDictionary.getOrDefault(translatedWord, word)).append(" ");
        } else {
            System.out.println("Translation not found for word: " + word);
            // Append the original word to the translated text
            translatedText.append(word).append(" ");
        }
    }

    // Convert the translated text to a string and remove trailing whitespace
    return translatedText.toString().trim();
}

5. showAllTranslations(String language) method:

Displays all word translations available for a specific language.

public void showAllTranslations(String language) {
        // Retrieve the language dictionary for the specified language
        Map<String, String> languageDictionary = dictionaries.get(language.toLowerCase());

        // Check if the dictionary for the specified language exists
        if (languageDictionary == null) {
            System.out.println("Translation dictionary not found for the specified language.");
            return;
        }

        System.out.println("Translations for " + language + ":");
        // Print all word translations in the language dictionary
        for (Map.Entry<String, String> entry : languageDictionary.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }

6. showSupportedLanguages() method:

Displays the list of supported languages available in the dictionaries map.

public void showSupportedLanguages() {
        System.out.println("Supported Languages:");
        for (String language : dictionaries.keySet()) {
            System.out.println("- " + language);
        }
    }

7. main(String[] args) method:

  • The main method to run the interactive language translator application.
  • Creates an instance of LanguageTranslator.
  • Uses a Scanner to take user input for different operations (adding words, translating text, showing translations, or exiting).
  • Calls corresponding methods based on the user’s choice.
        public static void main(String[] args) {
        LanguageTranslator translator = new LanguageTranslator();

        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to the Language Translator by ProjectGurukul!");
        translator.showSupportedLanguages();

        while (true) {
            System.out.println("1. Add Word or Sentence");
            System.out.println("2. Translate Text");
            System.out.println("3. Show All Translations");
            System.out.println("4. Exit");
            System.out.print("Enter your choice: ");
            int choice = scanner.nextInt();
            scanner.nextLine();

            if (choice == 1) {
                System.out.println("Enter the word or sentence to add: ");
                String word = scanner.nextLine();
                System.out.println("Enter the translation: ");
                String translation = scanner.nextLine();
                System.out.println("Enter the language: ");
                String language = scanner.nextLine();
                // Add the word and its translation to the translator
                translator.addWord(word, translation, language);
            } else if (choice == 2) {
                System.out.println("Enter the text to translate: ");
                String text = scanner.nextLine();
                System.out.println("Enter the source language: ");
                String sourceLanguage = scanner.nextLine();
                System.out.println("Enter the target language: ");
                String targetLanguage = scanner.nextLine();
                // Translate the text using the specified source and target languages
                String translatedText = translator.translate(text, sourceLanguage, targetLanguage);
                System.out.println("Translated text: " + translatedText);
            } else if (choice == 3) {
                System.out.println("Enter the language to show translations: ");
                String language = scanner.nextLine();
                // Show all translations for the specified language
                translator.showAllTranslations(language);
            } else if (choice == 4) {
                System.out.println("Thank you for using the Language Translator by ProjectGurukul!");
                break;
            } else {
                System.out.println("Invalid choice. Please try again.");
            }

            System.out.println();
        }
    }
}

Code to illustrate the Language Translator Project

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class LanguageTranslator {
    private Map<String, Map<String, String>> dictionaries;

    public LanguageTranslator() {
        dictionaries = new HashMap<>();
        initializeInbuiltTranslations();
    }

    private void initializeInbuiltTranslations() {
        // Added some inbuilt languages and translations
        addWord("hello", "hello", "english"); // English to English
        addWord("good", "good", "english"); // English to English
        addWord("morning", "morning", "english"); // English to English

        addWord("adios", "bye", "spanish"); // Spanish to English
        addWord("noche", "night", "spanish"); // Spanish to English
        addWord("domingo", "sunday", "spanish"); // Spanish to English

        addWord("bonjour", "hello", "french"); // French to English
        addWord("bien", "good", "french"); // French to English
        addWord("matin", "morning", "french"); // French to English

        // Added some inbuilt sentences for translation
        addWord("this is a cat", "this is a cat", "english"); // English to English
        addWord("how are you", "how are you", "english"); // English to English
        addWord("thank you", "thank you", "english"); // English to English

        addWord("esto es un gato", "this is a cat", "spanish"); // Spanish to English
        addWord("¿cómo estás?", "how are you", "spanish"); // Spanish to English
        addWord("gracias", "thank you", "spanish"); // Spanish to English

        addWord("c'est un chat", "this is a cat", "french"); // French to English
        addWord("comment ça va", "how are you", "french"); // French to English
        addWord("merci", "thank you", "french"); // French to English
    }

    public void addWord(String word, String translation, String language) {
        // Retrieve the language dictionary for the specified language or create a new one if it doesn't exist
        Map<String, String> languageDictionary = dictionaries.getOrDefault(language.toLowerCase(), new HashMap<>());
        // Add the word and its translation to the language dictionary
        languageDictionary.put(word.toLowerCase(), translation.toLowerCase());
        // Update the dictionaries map with the modified language dictionary
        dictionaries.put(language.toLowerCase(), languageDictionary);
    }

    public String translate(String text, String sourceLanguage, String targetLanguage) {
        // Convert the source and target languages to lowercase
        sourceLanguage = sourceLanguage.toLowerCase();
        targetLanguage = targetLanguage.toLowerCase();
    
        // Retrieve the source and target language dictionaries
        Map<String, String> sourceDictionary = dictionaries.get(sourceLanguage);
        Map<String, String> targetDictionary = dictionaries.get(targetLanguage);
    
        // Check if the dictionaries for the specified languages exist
        if (sourceDictionary == null || targetDictionary == null) {
            System.out.println("Translation dictionaries not found for the specified languages.");
            return text;
        }
    
        // Use regular expression to split the text into words while preserving punctuation and remove leading/trailing spaces
        String[] words = text.split("\\s*(?:(?<=\\W)|(?=\\W))\\s*");
    
        StringBuilder translatedText = new StringBuilder();
    
        // Translate each word in the text
        for (String word : words) {
            // Remove leading/trailing spaces and convert to lowercase
            word = word.trim().toLowerCase();
            
            // Remove any leading/trailing punctuation
            while (word.length() > 0 && !Character.isLetterOrDigit(word.charAt(0))) {
                word = word.substring(1);
            }
            while (word.length() > 0 && !Character.isLetterOrDigit(word.charAt(word.length() - 1))) {
                word = word.substring(0, word.length() - 1);
            }
    
            String translatedWord = sourceDictionary.get(word);
    
            if (translatedWord != null) {
                // Append the translated word to the translated text if it exists in the target dictionary,
                // otherwise append the original word
                translatedText.append(targetDictionary.getOrDefault(translatedWord, word)).append(" ");
            } else {
                System.out.println("Translation not found for word: " + word);
                // Append the original word to the translated text
                translatedText.append(word).append(" ");
            }
        }
    
        // Convert the translated text to a string and remove trailing whitespace
        return translatedText.toString().trim();
    }

    public void showAllTranslations(String language) {
        // Retrieve the language dictionary for the specified language
        Map<String, String> languageDictionary = dictionaries.get(language.toLowerCase());

        // Check if the dictionary for the specified language exists
        if (languageDictionary == null) {
            System.out.println("Translation dictionary not found for the specified language.");
            return;
        }

        System.out.println("Translations for " + language + ":");
        // Print all word translations in the language dictionary
        for (Map.Entry<String, String> entry : languageDictionary.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }

    public void showSupportedLanguages() {
        System.out.println("Supported Languages:");
        for (String language : dictionaries.keySet()) {
            System.out.println("- " + language);
        }
    }

    public static void main(String[] args) {
        LanguageTranslator translator = new LanguageTranslator();

        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to the Language Translator by ProjectGurukul!");
        translator.showSupportedLanguages();

        while (true) {
            System.out.println("1. Add Word or Sentence");
            System.out.println("2. Translate Text");
            System.out.println("3. Show All Translations");
            System.out.println("4. Exit");
            System.out.print("Enter your choice: ");
            int choice = scanner.nextInt();
            scanner.nextLine();

            if (choice == 1) {
                System.out.println("Enter the word or sentence to add: ");
                String word = scanner.nextLine();
                System.out.println("Enter the translation: ");
                String translation = scanner.nextLine();
                System.out.println("Enter the language: ");
                String language = scanner.nextLine();
                // Add the word and its translation to the translator
                translator.addWord(word, translation, language);
            } else if (choice == 2) {
                System.out.println("Enter the text to translate: ");
                String text = scanner.nextLine();
                System.out.println("Enter the source language: ");
                String sourceLanguage = scanner.nextLine();
                System.out.println("Enter the target language: ");
                String targetLanguage = scanner.nextLine();
                // Translate the text using the specified source and target languages
                String translatedText = translator.translate(text, sourceLanguage, targetLanguage);
                System.out.println("Translated text: " + translatedText);
            } else if (choice == 3) {
                System.out.println("Enter the language to show translations: ");
                String language = scanner.nextLine();
                // Show all translations for the specified language
                translator.showAllTranslations(language);
            } else if (choice == 4) {
                System.out.println("Thank you for using the Language Translator by ProjectGurukul!");
                break;
            } else {
                System.out.println("Invalid choice. Please try again.");
            }

            System.out.println();
        }
    }
}

Java Language Translator Output:

java Language Translator

java Language Translator output

java Language Translator project output

Summary

In conclusion, our exploration of language translation using Java has shed light on the immense potential of technology to facilitate global communication. By developing language translation applications in Java, we can bridge language barriers and enable people from diverse linguistic backgrounds to connect, collaborate, and understand each other better.

In closing, we invite you to explore further, experiment, and build upon the knowledge and techniques shared in this blog. Embrace the transformative power of language translation, leverage the capabilities of Java, and contribute to a world where communication knows no bounds. Together, let’s empower global collaboration and create a future where language is no longer a barrier but a bridge to connect us all.

You give me 15 seconds I promise you best tutorials
Please share your happy experience on Google | Facebook

Leave a Reply

Your email address will not be published. Required fields are marked *