Android-এ ML Kit দিয়ে পাঠ্য অনুবাদ করুন

আপনি বিভিন্ন ভাষার মধ্যে লেখা অনুবাদ করতে ML Kit ব্যবহার করতে পারেন। ML Kit ৫০ টিরও বেশি ভাষার মধ্যে অনুবাদ করতে পারে।

চেষ্টা করে দেখো

শুরু করার আগে

  1. আপনার প্রজেক্ট-লেভেল build.gradle ফাইলে, আপনার buildscript এবং allprojects উভয় বিভাগেই Google এর Maven রিপোজিটরি অন্তর্ভুক্ত করতে ভুলবেন না।
  2. আপনার মডিউলের অ্যাপ-লেভেল গ্রেডল ফাইলে ML কিট অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা যোগ করুন, যা সাধারণত app/build.gradle হয়:
    dependencies {
      // ...
    
      implementation 'com.google.mlkit:translate:17.0.3'
    }

টেক্সটের একটি স্ট্রিং অনুবাদ করুন

দুটি ভাষার মধ্যে একটি স্ট্রিং অনুবাদ করতে:

  1. একটি Translator বস্তু তৈরি করুন, এটি উৎস এবং লক্ষ্য ভাষাগুলির সাথে কনফিগার করুন:

    কোটলিন

    // Create an English-German translator:
    val options = TranslatorOptions.Builder()
        .setSourceLanguage(TranslateLanguage.ENGLISH)
        .setTargetLanguage(TranslateLanguage.GERMAN)
        .build()
    val englishGermanTranslator = Translation.getClient(options)

    জাভা

    // Create an English-German translator:
    TranslatorOptions options =
        new TranslatorOptions.Builder()
            .setSourceLanguage(TranslateLanguage.ENGLISH)
            .setTargetLanguage(TranslateLanguage.GERMAN)
            .build();
    final Translator englishGermanTranslator =
        Translation.getClient(options);

    যদি আপনি ইনপুট টেক্সটের ভাষা না জানেন, তাহলে আপনি Language Identification API ব্যবহার করতে পারেন যা আপনাকে একটি ভাষা ট্যাগ দেয়। তারপর TranslateLanguage.fromLanguageTag() ব্যবহার করে ট্যাগটিকে TranslateLanguage এ রূপান্তর করুন।

    ডিভাইসে একসাথে অনেকগুলি ভাষার মডেল রাখা এড়িয়ে চলুন।

  2. নিশ্চিত করুন যে প্রয়োজনীয় অনুবাদ মডেলটি ডিভাইসে ডাউনলোড করা হয়েছে। মডেলটি উপলব্ধ না হওয়া পর্যন্ত translate() কল করবেন না।

    কোটলিন

    var conditions = DownloadConditions.Builder()
        .requireWifi()
        .build()
    englishGermanTranslator.downloadModelIfNeeded(conditions)
        .addOnSuccessListener {
            // Model downloaded successfully. Okay to start translating.
            // (Set a flag, unhide the translation UI, etc.)
        }
        .addOnFailureListener { exception ->
            // Model couldn’t be downloaded or other internal error.
            // ...
        }

    জাভা

    DownloadConditions conditions = new DownloadConditions.Builder()
        .requireWifi()
        .build();
    englishGermanTranslator.downloadModelIfNeeded(conditions)
        .addOnSuccessListener(
            new OnSuccessListener() {
              @Override
              public void onSuccess(Void v) {
                // Model downloaded successfully. Okay to start translating.
                // (Set a flag, unhide the translation UI, etc.)
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Model couldn’t be downloaded or other internal error.
                // ...
              }
            });

    ভাষা মডেলগুলি প্রায় 30MB, তাই অপ্রয়োজনীয়ভাবে ডাউনলোড করবেন না, এবং ব্যবহারকারী অন্যথায় নির্দিষ্ট না করলে কেবল Wi-Fi ব্যবহার করে ডাউনলোড করুন। আপনার অপ্রয়োজনীয় মডেলগুলিও মুছে ফেলা উচিত। স্পষ্টভাবে অনুবাদ মডেলগুলি পরিচালনা করুন দেখুন।

  3. মডেলটি ডাউনলোড হয়েছে কিনা তা নিশ্চিত করার পর, translate() এর জন্য উৎস ভাষায় একটি স্ট্রিং টেক্সট দিন:

    কোটলিন

    englishGermanTranslator.translate(text)
        .addOnSuccessListener { translatedText ->
            // Translation successful.
        }
        .addOnFailureListener { exception ->
             // Error.
             // ...
        }

    জাভা

    englishGermanTranslator.translate(text)
        .addOnSuccessListener(
            new OnSuccessListener() {
              @Override
              public void onSuccess(@NonNull String translatedText) {
                // Translation successful.
              }
            })
        .addOnFailureListener(
            new OnFailureListener() {
              @Override
              public void onFailure(@NonNull Exception e) {
                // Error.
                // ...
              }
            });

    আপনার কনফিগার করা টার্গেট ভাষায় অনুবাদিত লেখাটি সফল শ্রোতার কাছে পাঠানো হবে।

  4. যখন Translator অবজেক্ট আর ব্যবহার করা হবে না তখন নিশ্চিত করুন যে close() পদ্ধতিটি কল করা হচ্ছে।

    যদি আপনি একটি ফ্র্যাগমেন্ট বা AppCompatActivity-তে একটি অনুবাদক ব্যবহার করেন, তাহলে এটি করার একটি সহজ উপায় হল Fragment বা AppCompatActivity-তে LifecycleOwner.getLifecycle() কল করুন, এবং তারপর Lifecycle.addObserver কল করুন। উদাহরণস্বরূপ:

    কোটলিন

    val options = ...
    val translator = Translation.getClient(options)
    getLifecycle().addObserver(translator)

    জাভা

    TranslatorOptions options = ...
    Translator translator = Translation.getClient(options);
    getLifecycle().addObserver(translator);
    ... use translator ...

    মনে রাখবেন যে এটি ধরে নেয় যে কোডটি এমন একটি ক্লাসের ভিতরে যা LifecycleOwner (যেমন একটি Fragment বা AppCompatActivity) প্রয়োগ করে।

অনুবাদ মডেলগুলি স্পষ্টভাবে পরিচালনা করুন

উপরে বর্ণিত অনুবাদ API ব্যবহার করলে, ML Kit প্রয়োজন অনুসারে স্বয়ংক্রিয়ভাবে ভাষা-নির্দিষ্ট অনুবাদ মডেলগুলি ডিভাইসে ডাউনলোড করে। ML Kit-এর অনুবাদ মডেল পরিচালনা API ব্যবহার করে আপনি ডিভাইসে উপলব্ধ অনুবাদ মডেলগুলি স্পষ্টভাবে পরিচালনা করতে পারেন। আপনি যদি আগে থেকে মডেলগুলি ডাউনলোড করতে চান, অথবা ডিভাইস থেকে অপ্রয়োজনীয় মডেলগুলি মুছে ফেলতে চান তবে এটি কার্যকর হতে পারে।

কোটলিন

val modelManager = RemoteModelManager.getInstance()

// Get translation models stored on the device.
modelManager.getDownloadedModels(TranslateRemoteModel::class.java)
    .addOnSuccessListener { models ->
        // ...
    }
    .addOnFailureListener {
        // Error.
    }

// Delete the German model if it's on the device.
val germanModel = TranslateRemoteModel.Builder(TranslateLanguage.GERMAN).build()
modelManager.deleteDownloadedModel(germanModel)
    .addOnSuccessListener {
        // Model deleted.
    }
    .addOnFailureListener {
        // Error.
    }

// Download the French model.
val frenchModel = TranslateRemoteModel.Builder(TranslateLanguage.FRENCH).build()
val conditions = DownloadConditions.Builder()
    .requireWifi()
    .build()
modelManager.download(frenchModel, conditions)
    .addOnSuccessListener {
        // Model downloaded.
    }
    .addOnFailureListener {
        // Error.
    }

জাভা

RemoteModelManager modelManager = RemoteModelManager.getInstance();

// Get translation models stored on the device.
modelManager.getDownloadedModels(TranslateRemoteModel.class)
    .addOnSuccessListener(new OnSuccessListener<Set>() {
        @Override
        public void onSuccess(Set models) {
            // ...
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            // Error.
        }
    });

// Delete the German model if it's on the device.
TranslateRemoteModel germanModel =
        new TranslateRemoteModel.Builder(TranslateLanguage.GERMAN).build();
modelManager.deleteDownloadedModel(germanModel)
    .addOnSuccessListener(new OnSuccessListener() {
        @Override
        public void onSuccess(Void v) {
            // Model deleted.
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            // Error.
        }
    });

// Download the French model.
TranslateRemoteModel frenchModel =
        new TranslateRemoteModel.Builder(TranslateLanguage.FRENCH).build();
DownloadConditions conditions = new DownloadConditions.Builder()
    .requireWifi()
    .build();
modelManager.download(frenchModel, conditions)
    .addOnSuccessListener(new OnSuccessListener() {
        @Override
        public void onSuccess(Void v) {
            // Model downloaded.
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            // Error.
        }
    });