Open In App

How to Create Language Detector in Android using Firebase ML Kit?

Last Updated : 22 Dec, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

We have seen many apps providing different language supports inside their application and we also have seen many ML apps in which we will get to see that we can detect the language of the text which is entered by the user. In this article, we will create an application in which we will detect the language of the entered text in our Android App. So for detecting the language of this text. We will be using the Firebase ML Kit which will detect the language of the text and will display appropriate language code. 

What we are going to build in this article?

We will be building a simple application in which we will display an EditText field and inside that, we have to add the text in any language and a button for detecting the language of that text. After adding the text we will click on detect language button the language of our text is detected and we will get to see the code for our language. A sample video is given below to get an idea about what we are going to do in this article. Note that we are going to implement this project using the Java language. 

Step by Step Implementation

Step 1: Create a New Project

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.

Step 2: Connect your app to Firebase

After creating a new project in Android Studio connect your app to Firebase. For connecting your app to firebase. Navigate to Tools on the top bar. After that click on Firebase. A new window will open on the right side. Inside that window click on Firebase ML and then click on Use Firebase ML kit in Android. You can see the option below screenshot.  

After clicking on this option you will get to see the below screen. On this screen click on Connect to Firebase option to connect your app to Firebase. You will get to see the below screen.  

Click on Connect option to connect your app to Firebase and add the below dependency to your build.gradle file.  

Step 3: Adding dependency for language detection to build.gradle file

Navigate to the app > Gradle Scripts > build.gradle file and add the below code to it. Comments are added in the code to get to know in more detail.  

// dependency for firebase core.

implementation’com.google.firebase:firebase-core:15.0.2′

// below two dependency are used for language detection

implementation ‘com.google.firebase:firebase-ml-natural-language:22.0.0’

implementation ‘com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7’

Step 4: Adding Internet permissions to access the Internet in your Android App

Navigate to the app > AndroidManifest.xml file and add the below code to it. Comments are added in the code to get to know in more detail.  

XML




<!--permission for internet-->
<uses-permission android:name="android.permission.INTERNET"/>


Step 5: Working with the activity_main.xml file

Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file. 

XML




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <!--edit text to enter your input-->
    <EditText
        android:id="@+id/idEdtLanguage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:hint="Enter your name"
        android:padding="4dp"
        android:textColor="@color/black"
        android:textSize="20sp" />
  
    <!--button to detect language of the input text-->
    <Button
        android:id="@+id/idBtnDetectLanguage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/idTVDetectedLanguageCode"
        android:layout_centerInParent="true"
        android:text="Detect language" />
  
    <!--text view to display the code of entered text-->
    <TextView
        android:id="@+id/idTVDetectedLanguageCode"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtLanguage"
        android:layout_centerHorizontal="true"
        android:layout_margin="20dp"
        android:gravity="center_horizontal"
        android:text="Language code"
        android:textAlignment="center"
        android:textSize="20sp" />
      
</RelativeLayout>


Step 6: Working with the MainActivity.java file

Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.

Java




import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.ml.naturallanguage.FirebaseNaturalLanguage;
import com.google.firebase.ml.naturallanguage.languageid.FirebaseLanguageIdentification;
  
public class MainActivity extends AppCompatActivity {
  
    // creating variables for our image view, 
    // text view and two buttons.
    private EditText edtLanguage;
    private TextView languageCodeTV;
    private Button detectLanguageBtn;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // on below line we are initializing our variables.
        edtLanguage = findViewById(R.id.idEdtLanguage);
        languageCodeTV = findViewById(R.id.idTVDetectedLanguageCode);
        detectLanguageBtn = findViewById(R.id.idBtnDetectLanguage);
          
        // adding on click listener for button
        detectLanguageBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // getting string from our edit text.
                String edt_string = edtLanguage.getText().toString();
                // calling method to detect language.
                detectLanguage(edt_string);
            }
        });
    }
  
    private void detectLanguage(String string) {
        // initializing our firebase language detection.
        FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
          
        // adding method to detect language using identify language method.
        languageIdentifier.identifyLanguage(string).addOnSuccessListener(new OnSuccessListener<String>() {
            @Override
            public void onSuccess(String s) {
                // below line we are setting our 
                // language code to our text view.
                languageCodeTV.setText(s);
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // handling error method and displaying a toast message.
                Toast.makeText(MainActivity.this, "Fail to detect language : \n" + e, Toast.LENGTH_SHORT).show();
            }
        });
    }
}


Now run your app and see the output of the app: 

Output:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads