En el artículo anterior, hemos visto usar Language detector en Android usando el kit Firebase ML . En este artículo, veremos la implementación del traductor de idiomas en Android usando Firebase ML Kit en Android .
¿Qué vamos a construir en este artículo?
Construiremos una aplicación simple en la que mostraremos un campo EditText y agregaremos cualquier entrada a ese TextField . Junto con eso, mostraremos un botón para traducir ese texto al idioma alemán. Después de hacer clic en ese botón, nuestro texto se traducirá al idioma alemán, que podemos ver en la vista de texto.
Implementación paso a paso
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: conecta tu aplicación a Firebase
Después de crear un nuevo proyecto en Android Studio, conecte su aplicación a Firebase. Para conectar su aplicación a firebase. Navegue a Herramientas en la barra superior. Después de eso, haga clic en Firebase. Se abrirá una nueva ventana en el lado derecho. Dentro de esa ventana, haga clic en Firebase ML y luego haga clic en Usar el kit Firebase ML en Android. Puede ver la opción en la siguiente captura de pantalla.
Después de hacer clic en esta opción, verá la siguiente pantalla. En esta pantalla, haga clic en la opción Conectar a Firebase para conectar su aplicación a Firebase. Haga clic en la opción Conectar para conectar su aplicación a Firebase y agregue la siguiente dependencia a su archivo build.gradle .
Paso 3: Agregar dependencia para la traducción de idiomas al archivo build.gradle
Gradle Scripts > build.gradle(Módulo:aplicación)
// dependencia para firebase core.
implementación’com.google.firebase:firebase-core:15.0.2′
// debajo de dos dependencias se utilizan para la detección de idioma
implementación ‘com.google.firebase:firebase-ml-natural-language:22.0.0’
implementación ‘com.google.firebase:firebase-ml-natural-language-translate-model:20.0.8’
Paso 4: Agregar permisos para acceder a Internet en su aplicación de Android
Vaya a la aplicación > archivo AndroidManifest.xml y agréguele el siguiente código. Se agregan comentarios en el código para conocer con más detalle.
XML
<!--permission for internet--> <uses-permission android:name="android.permission.INTERNET"/>
Paso 5: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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 to translate" android:padding="4dp" android:textColor="@color/black" android:textSize="20sp" /> <!--button to translate language of the input text--> <Button android:id="@+id/idBtnTranslateLanguage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/idTVTranslatedLanguage" android:layout_centerInParent="true" android:text="Translate language" /> <!--text view to display the translated text--> <TextView android:id="@+id/idTVTranslatedLanguage" 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="Translated language" android:textAlignment="center" android:textSize="20sp" /> </RelativeLayout>
Paso 6: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
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.common.modeldownload.FirebaseModelDownloadConditions; import com.google.firebase.ml.naturallanguage.FirebaseNaturalLanguage; import com.google.firebase.ml.naturallanguage.translate.FirebaseTranslateLanguage; import com.google.firebase.ml.naturallanguage.translate.FirebaseTranslator; import com.google.firebase.ml.naturallanguage.translate.FirebaseTranslatorOptions; public class MainActivity extends AppCompatActivity { // creating variables for our image view, // text view and two buttons. private EditText edtLanguage; private TextView translateLanguageTV; private Button translateLanguageBtn; // create a variable for our // firebase language translator. FirebaseTranslator englishGermanTranslator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // on below line we are creating our firebase translate option. FirebaseTranslatorOptions options = new FirebaseTranslatorOptions.Builder() // below line we are specifying our source language. .setSourceLanguage(FirebaseTranslateLanguage.EN) // in below line we are displaying our target language. .setTargetLanguage(FirebaseTranslateLanguage.DE) // after that we are building our options. .build(); // below line is to get instance // for firebase natural language. englishGermanTranslator = FirebaseNaturalLanguage.getInstance().getTranslator(options); // on below line we are initializing our variables. edtLanguage = findViewById(R.id.idEdtLanguage); translateLanguageTV = findViewById(R.id.idTVTranslatedLanguage); translateLanguageBtn = findViewById(R.id.idBtnTranslateLanguage); // adding on click listener for button translateLanguageBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // calling method to download language // modal to which we have to translate. String string = edtLanguage.getText().toString(); downloadModal(string); } }); } private void downloadModal(String input) { // below line is use to download the modal which // we will require to translate in german language FirebaseModelDownloadConditions conditions = new FirebaseModelDownloadConditions.Builder().requireWifi().build(); // below line is use to download our modal. englishGermanTranslator.downloadModelIfNeeded(conditions).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { // this method is called when modal is downloaded successfully. Toast.makeText(MainActivity.this, "Please wait language modal is being downloaded.", Toast.LENGTH_SHORT).show(); // calling method to translate our entered text. translateLanguage(input); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toast.makeText(MainActivity.this, "Fail to download modal", Toast.LENGTH_SHORT).show(); } }); } private void translateLanguage(String input) { englishGermanTranslator.translate(input).addOnSuccessListener(new OnSuccessListener<String>() { @Override public void onSuccess(String s) { translateLanguageTV.setText(s); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toast.makeText(MainActivity.this, "Fail to translate", Toast.LENGTH_SHORT).show(); } }); } }
Ahora ejecute su aplicación y vea el resultado de la aplicación.
Producción:
Nota : cuando utilice la aplicación por primera vez. Tomará algún tiempo porque descargará el modal en segundo plano. No estamos agregando compatibilidad con varios idiomas en esta aplicación porque para cada idioma tenemos que descargar el modelo de conversión de idiomas, por lo que hará que la aplicación sea más pesada y la traducción de idiomas llevará mucho tiempo.
Consulte el proyecto en el siguiente enlace: https://github.com/ChinmayMunje/Firebase-ML-Kit
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA