একটি মৌলিক "Google অনুবাদ" পাইথন 2 অ্যাপ ইঞ্জিনে অ্যাপ

1. ওভারভিউ

কোডল্যাবগুলির এই সিরিজ (স্ব-গতিসম্পন্ন, হাতে-কলমে টিউটোরিয়াল) ডেভেলপারদের তাদের অ্যাপ্লিকেশনগুলি স্থাপন করার সময় তাদের কাছে থাকা বিভিন্ন বিকল্পগুলি বুঝতে সাহায্য করা। এই কোডল্যাবে, আপনি শিখবেন কিভাবে পাইথনের সাথে Google ক্লাউড ট্রান্সলেশন API ব্যবহার করতে হয় এবং হয় স্থানীয়ভাবে চালাতে হয় বা ক্লাউড সার্ভারহীন কম্পিউট প্ল্যাটফর্মে (অ্যাপ ইঞ্জিন, ক্লাউড ফাংশন, বা ক্লাউড রান) স্থাপন করতে হয়। এই টিউটোরিয়ালের রেপোতে পাওয়া নমুনা অ্যাপটি শুধুমাত্র ছোট কনফিগারেশন পরিবর্তনের সাথে আটটি ভিন্ন উপায়ে স্থাপন করা যেতে পারে:

  1. স্থানীয় ফ্লাস্ক সার্ভার (পাইথন 2)
  2. স্থানীয় ফ্লাস্ক সার্ভার (পাইথন 3)
  3. অ্যাপ ইঞ্জিন (পাইথন 2)
  4. অ্যাপ ইঞ্জিন (পাইথন 3)
  5. ক্লাউড ফাংশন (পাইথন 3)
  6. ক্লাউড রান (ডকারের মাধ্যমে পাইথন 2)
  7. ক্লাউড রান (ডকারের মাধ্যমে পাইথন 3)
  8. ক্লাউড রান (ক্লাউড বিল্ডপ্যাকের মাধ্যমে পাইথন 3)

এই কোডল্যাবটি উপরের বোল্ড প্ল্যাটফর্মে এই অ্যাপটি স্থাপন করার উপর ফোকাস করে।

আপনি কিভাবে শিখবেন

আপনি কি প্রয়োজন হবে

সমীক্ষা

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন এটি শুধুমাত্র পড়ুন

পাইথনের সাথে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

আপনি Google ক্লাউড পরিষেবাগুলি ব্যবহার করার সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না এবং আপনি যে কোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রজেক্ট জুড়ে প্রোজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই আপনি যদি এটি পছন্দ না করেন তবে অন্য একটি এলোমেলো তৈরি করুন, অথবা, আপনি নিজের চেষ্টা করে দেখতে পারেন এটি উপলব্ধ কিনা। তারপর প্রকল্প তৈরি হওয়ার পরে এটি "হিমায়িত" হয়।
  • একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন, কোডল্যাবের শেষে পাওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

3. অনুবাদ API সক্ষম করুন৷

আমাদের নমুনা অ্যাপের জন্য, আপনি নীচে প্রদত্ত অনুরূপ নির্দেশাবলী ব্যবহার করার পরিবর্তে ক্লাউড অনুবাদ API এবং অ্যাপ ইঞ্জিন পরিষেবা সক্ষম করবেন৷

ক্লাউড এপিআই সক্ষম করা হচ্ছে

ভূমিকা

আপনি আপনার অ্যাপ্লিকেশনে যে Google API ব্যবহার করতে চান তা নির্বিশেষে, সেগুলি অবশ্যই সক্ষম হতে হবে। নিম্নলিখিত উদাহরণটি ক্লাউড ভিশন API সক্ষম করার দুটি উপায় দেখায়৷ আপনি কীভাবে একটি ক্লাউড এপিআই সক্ষম করবেন তা শেখার পরে, আপনি অন্যান্য APIগুলি সক্ষম করতে সক্ষম হবেন কারণ প্রক্রিয়াটি একই রকম।

বিকল্প 1: ক্লাউড শেল বা আপনার কমান্ড-লাইন ইন্টারফেস থেকে

ক্লাউড কনসোল থেকে এপিআই সক্ষম করা আরও সাধারণ, কিছু বিকাশকারী কমান্ড লাইন থেকে সবকিছু করতে পছন্দ করে। এটি করার জন্য, আপনাকে একটি API এর "পরিষেবার নাম" সন্ধান করতে হবে। এটি একটি URL এর মত দেখাচ্ছে: SERVICE_NAME .googleapis.com । আপনি এগুলিকে সমর্থিত পণ্যের চার্টে খুঁজে পেতে পারেন, অথবা আপনি Google Discovery API- এর মাধ্যমে প্রোগ্রাম্যাটিকভাবে তাদের জন্য অনুসন্ধান করতে পারেন৷

এই তথ্য দিয়ে সজ্জিত, ক্লাউড শেল ব্যবহার করে (অথবা gcloud কমান্ড-লাইন টুল ইনস্টল সহ আপনার স্থানীয় উন্নয়ন পরিবেশ), আপনি একটি API সক্রিয় করতে পারেন, নিম্নরূপ:

gcloud services enable SERVICE_NAME.googleapis.com

উদাহরণস্বরূপ, এই কমান্ডটি ক্লাউড ভিশন API সক্ষম করে:

gcloud services enable vision.googleapis.com

এই কমান্ডটি অ্যাপ ইঞ্জিন সক্ষম করে:

gcloud services enable appengine.googleapis.com

আপনি একটি অনুরোধের সাথে একাধিক API সক্রিয় করতে পারেন। উদাহরণস্বরূপ, এই কমান্ড লাইনটি ক্লাউড রান, ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি এবং ক্লাউড অনুবাদ API সক্ষম করে:

gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

বিকল্প 2: ক্লাউড কনসোল থেকে

আপনি এপিআই ম্যানেজারে ভিশন API সক্ষম করতে পারেন। ক্লাউড কনসোল থেকে, API ম্যানেজারে যান এবং লাইব্রেরি নির্বাচন করুন।

fb0f1d315f122d4a.png

আপনি যদি ক্লাউড ভিশন এপিআই সক্ষম করতে চান, অনুসন্ধান বারে "ভিশন" প্রবেশ করা শুরু করুন এবং আপনি যা প্রবেশ করেছেন তার সাথে মেলে এমন কিছু প্রদর্শিত হবে:

2275786a24f8f204.png

আপনি যে APIটি সক্ষম করতে চাইছেন সেটি নির্বাচন করুন এবং সক্ষম করুন ক্লিক করুন:

2556f923b628e31.png

খরচ

যদিও অনেক Google API ফি ছাড়াই ব্যবহার করা যেতে পারে, Google ক্লাউড পণ্য এবং API-এর ব্যবহার বিনামূল্যে নয় । ক্লাউড API সক্রিয় করার সময়, আপনাকে একটি সক্রিয় বিলিং অ্যাকাউন্টের জন্য বলা হতে পারে৷ যাইহোক, এটি লক্ষ করা গুরুত্বপূর্ণ যে কিছু Google ক্লাউড পণ্যে একটি "সর্বদা বিনামূল্যে" স্তর (দৈনিক/মাসিক) বৈশিষ্ট্যযুক্ত, যা আপনাকে বিলিং চার্জ বহন করার জন্য অতিক্রম করতে হবে; অন্যথায়, আপনার ক্রেডিট কার্ড (বা নির্দিষ্ট বিলিং যন্ত্র) চার্জ করা হবে না।

ব্যবহারকারীদের যেকোন এপিআই সক্ষম করার আগে মূল্যের তথ্য উল্লেখ করা উচিত, বিশেষ করে এটির একটি বিনামূল্যের স্তর আছে কিনা এবং যদি তাই হয় তবে এটি কী। আপনি যদি ক্লাউড ভিশন API সক্ষম করে থাকেন তবে আপনি এর মূল্য তথ্য পৃষ্ঠাটি পরীক্ষা করবেন। ক্লাউড ভিশনের একটি বিনামূল্যের কোটা আছে, এবং যতক্ষণ পর্যন্ত আপনি সামগ্রিকভাবে (প্রতি মাসের মধ্যে) এর সীমার মধ্যে থাকবেন, ততক্ষণ আপনার কোনো চার্জ নেওয়া উচিত নয়।

Google API-এর মধ্যে মূল্য এবং বিনামূল্যের স্তর পরিবর্তিত হয়। উদাহরণ:

বিভিন্ন Google পণ্য আলাদাভাবে বিল করা হয়, তাই সেই তথ্যের জন্য আপনার API এর ডকুমেন্টেশন উল্লেখ করতে ভুলবেন না।

সারাংশ

এখন যেহেতু আপনি সাধারণভাবে Google APIগুলিকে কীভাবে সক্ষম করতে হয় তা জানেন, অনুগ্রহ করে API ম্যানেজারের কাছে যান এবং ক্লাউড অনুবাদ API এবং অ্যাপ ইঞ্জিন পরিষেবা উভয়ই সক্ষম করুন (যদি আপনার ইতিমধ্যে না থাকে), আগেরটি কারণ আমাদের অ্যাপ্লিকেশন এটি ব্যবহার করবে এবং পরবর্তীটি কারণ আপনি একটি অ্যাপ ইঞ্জিন অ্যাপ স্থাপন করছেন। আপনি যদি কমান্ড-লাইন থেকে এটি করতে পছন্দ করেন তবে পরিবর্তে এই কমান্ডটি ইস্যু করুন:

gcloud services enable appengine.googleapis.com translate.googleapis.com

যদিও এর মাসিক কোটা সামগ্রিক "সর্বদা বিনামূল্যে" স্তরের সারাংশ পৃষ্ঠায় তালিকাভুক্ত করা হয় না, অনুবাদ API-এর মূল্য পৃষ্ঠায় বলা হয়েছে যে সমস্ত ব্যবহারকারী প্রতি মাসে একটি নির্দিষ্ট পরিমাণ অনুবাদিত অক্ষর পান৷ আপনি যদি সেই থ্রেশহোল্ডের নিচে থাকেন তাহলে আপনাকে API থেকে কোনো চার্জ নেওয়া উচিত নয়। যদি অন্য কোন Google ক্লাউড সম্পর্কিত চার্জ থাকে, সেগুলি "ক্লিন আপ" বিভাগে শেষে আলোচনা করা হবে৷

4. নমুনা অ্যাপ কোড পান

রেপোতে স্থানীয়ভাবে বা ক্লাউড শেলে কোডটি ক্লোন করুন ( git clone কমান্ড ব্যবহার করে), অথবা নীচের স্ক্রিনশটে দেখানো হিসাবে জিপ ফাইলটি এর সবুজ কোড বোতাম থেকে ডাউনলোড করুন:

5cd6110c4414cf65.png

এখন আপনার কাছে সবকিছু আছে, এই নির্দিষ্ট টিউটোরিয়ালটি করার জন্য ফোল্ডারটির একটি সম্পূর্ণ অনুলিপি তৈরি করুন, কারণ এতে সম্ভবত ফাইলগুলি মুছে ফেলা বা পরিবর্তন করা জড়িত। আপনি যদি একটি ভিন্ন স্থাপনা করতে চান, আপনি মূলটি অনুলিপি করে আবার শুরু করতে পারেন যাতে আপনাকে এটিকে আবার ক্লোন করতে বা ডাউনলোড করতে না হয়।

5. নমুনা অ্যাপের সফর

নমুনা অ্যাপটি হল একটি সাধারণ Google অনুবাদ ডেরিভেটিভ যা ব্যবহারকারীদের ইংরেজিতে পাঠ্য লিখতে এবং স্প্যানিশ ভাষায় সেই পাঠ্যের সমতুল্য অনুবাদ পেতে অনুরোধ করে। এখন main.py ফাইলটি খুলুন যাতে আমরা দেখতে পারি এটি কীভাবে কাজ করে। লাইসেন্সিং সম্পর্কে মন্তব্য করা লাইনগুলি বাদ দিয়ে, এটি উপরের এবং নীচের মত দেখাচ্ছে:

from flask import Flask, render_template, request
import google.auth
from google.cloud import translate

app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')

# . . . [translate() function definition] . . .

if __name__ == '__main__':
    import os
    app.run(debug=True, threaded=True, host='0.0.0.0',
            port=int(os.environ.get('PORT', 8080)))
  1. আমদানিগুলি ফ্লাস্ক কার্যকারিতা, google.auth মডিউল এবং ক্লাউড অনুবাদ API ক্লায়েন্ট লাইব্রেরি নিয়ে আসে।
  2. গ্লোবাল ভেরিয়েবল ফ্লাস্ক অ্যাপ, ক্লাউড প্রোজেক্ট আইডি, ট্রান্সলেশন এপিআই ক্লায়েন্ট, ট্রান্সলেশন এপিআই কলের জন্য প্যারেন্ট "লোকেশন পাথ" এবং সোর্স এবং টার্গেট ল্যাঙ্গুয়েজ প্রতিনিধিত্ব করে। এই ক্ষেত্রে, এটি ইংরেজি ( en ) এবং স্প্যানিশ ( es ), কিন্তু ক্লাউড অনুবাদ API দ্বারা সমর্থিত অন্যান্য ভাষার কোডগুলিতে এই মানগুলিকে নির্দ্বিধায় পরিবর্তন করুন৷
  3. এই অ্যাপটি স্থানীয়ভাবে চালানোর জন্য টিউটোরিয়ালে নীচের অংশে বড় if ব্লক ব্যবহার করা হয়েছে—এটি আমাদের অ্যাপ পরিবেশন করতে ফ্লাস্ক ডেভেলপমেন্ট সার্ভার ব্যবহার করে। এই বিভাগটি এখানে ক্লাউড রান ডিপ্লয়মেন্ট টিউটোরিয়ালের জন্যও রয়েছে যদি ওয়েব সার্ভারটি কন্টেইনারে বান্ডিল না থাকে। আপনাকে কনটেইনারে সার্ভারটি বান্ডলিং সক্ষম করতে বলা হয়েছে, কিন্তু আপনি যদি এটি উপেক্ষা করেন তবে অ্যাপ কোডটি ফ্লাস্ক ডেভেলপমেন্ট সার্ভার ব্যবহার করে ফিরে আসে। (এটি অ্যাপ ইঞ্জিন বা ক্লাউড ফাংশনগুলির সাথে কোনও সমস্যা নয় কারণ সেগুলি সোর্স-ভিত্তিক প্ল্যাটফর্ম, যার অর্থ Google ক্লাউড একটি ডিফল্ট ওয়েব সার্ভার সরবরাহ করে এবং চালায়৷)

অবশেষে, main.py এর মাঝখানে হল অ্যাপ্লিকেশনটির হৃদয়, translate() ফাংশন:

@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
    """
    main handler - show form and possibly previous translation
    """

    # Flask Request object passed in for Cloud Functions
    # (use gcf_request for GCF but flask.request otherwise)
    local_request = gcf_request if gcf_request else request

    # reset all variables (GET)
    text = translated = None

    # if there is data to process (POST)
    if local_request.method == 'POST':
        text = local_request.form['text']
        data = {
            'contents': [text],
            'parent': PARENT,
            'target_language_code': TARGET[0],
        }
        # handle older call for backwards-compatibility
        try:
            rsp = TRANSLATE.translate_text(request=data)
        except TypeError:
            rsp = TRANSLATE.translate_text(**data)
        translated = rsp.translations[0].translated_text

    # create context & render template
    context = {
        'orig':  {'text': text, 'lc': SOURCE},
        'trans': {'text': translated, 'lc': TARGET},
    }
    return render_template('index.html', **context)

প্রাথমিক ফাংশনটি ব্যবহারকারীর ইনপুট নেওয়ার কাজ করে এবং হেভি-লিফটিং করার জন্য অনুবাদ API-কে কল করে। আসুন এটি ভেঙে দেওয়া যাক:

  1. local_request ভেরিয়েবল ব্যবহার করে ক্লাউড ফাংশন থেকে অনুরোধ আসছে কিনা তা পরীক্ষা করে দেখুন। ক্লাউড ফাংশন তার নিজস্ব ফ্লাস্ক রিকোয়েস্ট অবজেক্ট পাঠায় যেখানে অন্য সব (স্থানীয়ভাবে চলছে বা অ্যাপ ইঞ্জিন বা ক্লাউড রানে স্থাপন করা) সরাসরি ফ্লাস্ক থেকে অনুরোধ অবজেক্ট পাবে।
  2. ফর্মের জন্য মৌলিক ভেরিয়েবল রিসেট করুন। এটি প্রাথমিকভাবে GET অনুরোধের জন্য কারণ POST অনুরোধে এইগুলি প্রতিস্থাপনকারী ডেটা থাকবে৷
  3. যদি এটি একটি পোস্ট হয়, অনুবাদ করার জন্য পাঠ্যটি ধরুন এবং API মেটাডেটা প্রয়োজনীয়তা উপস্থাপন করে একটি JSON কাঠামো তৈরি করুন৷ তারপর API-কে কল করুন, যদি ব্যবহারকারী একটি পুরানো লাইব্রেরি নিযুক্ত করে থাকে তবে API-এর পূর্ববর্তী সংস্করণে ফিরে আসে।
  4. নির্বিশেষে, টেমপ্লেট প্রেক্ষাপটে প্রকৃত ফলাফল (POST) বা কোন ডেটা (GET) ফর্ম্যাট করুন এবং রেন্ডার করুন।

অ্যাপ্লিকেশনটির ভিজ্যুয়াল অংশটি টেমপ্লেট index.html ফাইলে রয়েছে। এটি পূর্বে অনূদিত ফলাফল দেখায় (অন্যথায় ফাঁকা) তারপরে ফর্মটি অনুবাদ করার জন্য কিছু জিজ্ঞাসা করে:

<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>

{% if trans['text'] %}
    <h4>Previous translation</h4>
    <li><b>Original</b>:   {{ orig['text'] }}  (<i>{{ orig['lc'][0] }}</i>)</li>
    <li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}

<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>

6. স্থানীয় প্যাকেজ/নির্ভরতা (lib-এ) ইনস্টল করুন

পূর্বে উল্লিখিত হিসাবে, নমুনা অ্যাপটি ফ্লাস্ক মাইক্রো ওয়েব ফ্রেমওয়ার্ক এবং পাইথনের জন্য Google ক্লাউড অনুবাদ API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে। এই pip (বা pip3 ) কমান্ডের সাহায্যে pip প্লাস এই জোড়া প্যাকেজ ইনস্টল এবং আপডেট করুন:

pip install -t lib -r requirements.txt

উপরের মন্তব্যটি চালানোর পরে, আপনি ইনস্টলেশন আউটপুট দেখতে পাবেন যা দেখতে এরকম কিছু হতে পারে:

$ pip install -t lib -r requirements.txt
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting flask>=1.1.2
  Using cached Flask-1.1.4-py2.py3-none-any.whl (94 kB)
Collecting google-cloud-translate>=2.0.1
  Using cached google_cloud_translate-2.0.2-py2.py3-none-any.whl (91 kB)
Collecting click<8.0,>=5.1
  Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting Jinja2<3.0,>=2.10.1
  Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB)
Collecting Werkzeug<2.0,>=0.15
  Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
Collecting itsdangerous<2.0,>=0.24
  Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting google-api-core[grpc]<2.0.0dev,>=1.15.0
  Downloading google_api_core-1.29.0-py2.py3-none-any.whl (93 kB)
     |████████████████████████████████| 93 kB 2.1 MB/s
Collecting google-cloud-core<2.0dev,>=1.1.0
  Using cached google_cloud_core-1.6.0-py2.py3-none-any.whl (28 kB)
Collecting MarkupSafe>=0.23
  Using cached MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl (17 kB)
Collecting protobuf>=3.12.0
  Downloading protobuf-3.17.2-cp27-cp27m-macosx_10_9_x86_64.whl (958 kB)
     |████████████████████████████████| 958 kB 21.6 MB/s
Collecting futures>=3.2.0; python_version < "3.2"
  Using cached futures-3.3.0-py2-none-any.whl (16 kB)
Collecting six>=1.13.0
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting packaging>=14.3
  Using cached packaging-20.9-py2.py3-none-any.whl (40 kB)
Collecting googleapis-common-protos<2.0dev,>=1.6.0
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting requests<3.0.0dev,>=2.18.0
  Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)
Collecting google-auth<2.0dev,>=1.25.0
  Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB)
Collecting pytz
  Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)
Collecting setuptools>=40.3.0
  Using cached setuptools-44.1.1-py2.py3-none-any.whl (583 kB)
Collecting grpcio<2.0dev,>=1.29.0; extra == "grpc"
  Using cached grpcio-1.38.0-cp27-cp27m-macosx_10_10_x86_64.whl (3.8 MB)
Collecting pyparsing>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting chardet<5,>=3.0.2
  Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting certifi>=2017.4.17
  Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB)
     |████████████████████████████████| 145 kB 61.1 MB/s
Collecting pyasn1-modules>=0.2.1
  Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting rsa<4.6; python_version < "3.6"
  Using cached rsa-4.5-py2.py3-none-any.whl (36 kB)
Collecting cachetools<5.0,>=2.0.0
  Using cached cachetools-3.1.1-py2.py3-none-any.whl (11 kB)
Collecting enum34>=1.0.4; python_version < "3.4"
  Using cached enum34-1.1.10-py2-none-any.whl (11 kB)
Collecting pyasn1<0.5.0,>=0.4.6
  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask, six, protobuf, futures, pyparsing, packaging, googleapis-common-protos, chardet, urllib3, idna, certifi, requests, pyasn1, pyasn1-modules, rsa, cachetools, setuptools, google-auth, pytz, enum34, grpcio, google-api-core, google-cloud-core, google-cloud-translate
ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.
matplotlib 1.3.1 requires nose, which is not installed.
matplotlib 1.3.1 requires tornado, which is not installed.
Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 cachetools-3.1.1 certifi-2021.5.30 chardet-4.0.0 click-7.1.2 enum34-1.1.10 flask-1.1.4 futures-3.3.0 google-api-core-1.29.0 google-auth-1.30.1 google-cloud-core-1.6.0 google-cloud-translate-2.0.2 googleapis-common-protos-1.52.0 grpcio-1.38.0 idna-2.10 itsdangerous-1.1.0 packaging-20.9 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 pytz-2021.1 requests-2.25.1 rsa-4.5 setuptools-44.1.1 six-1.16.0 urllib3-1.26.5

7. পরিষেবাটি স্থাপন করুন

Python 2 অ্যাপ ইঞ্জিনে আপনার অনুবাদ পরিষেবা স্থাপন করতে, এই কমান্ডটি চালান:

gcloud app deploy

আউটপুট নিম্নলিখিত হিসাবে দেখা উচিত, এবং পরবর্তী পদক্ষেপের জন্য কিছু প্রম্পট প্রদান করুন:

$ gcloud app deploy
Services to deploy:

descriptor:      [/private/tmp/nebulous-serverless-python/app.yaml]
source:          [/private/tmp/nebulous-serverless-python]
target project:  [PROJECT_ID]
target service:  [default]
target version:  [20210422t161025]
target url:      [https://PROJECT_ID.appspot.com]


Do you want to continue (Y/n)?

Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 1290 files to Google Cloud Storage                       ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://PROJECT_ID.appspot.com]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s default

To view your application in the web browser run:
  $ gcloud app browse

এখন যেহেতু আপনার অ্যাপটি বিশ্বব্যাপী বিশ্বব্যাপী উপলব্ধ, আপনি এটিকে আপনার ডিপ্লয়মেন্ট আউটপুটে দেওয়া URL (আপনার প্রোজেক্ট আইডি সমন্বিত) এ পৌঁছাতে সক্ষম হবেন:

da28f951c33a2c3d.png

এটা কাজ দেখতে কিছু অনুবাদ!

d911984d15dd5ef9.png

8. উপসংহার

অভিনন্দন! আপনি শিখেছেন কিভাবে ক্লাউড ট্রান্সলেশন এপিআই সক্ষম করতে হয়, প্রয়োজনীয় শংসাপত্র পান এবং পাইথন 2 অ্যাপ ইঞ্জিনে একটি সাধারণ ওয়েব অ্যাপ স্থাপন করতে হয়! আপনি রেপোতে এই টেবিল থেকে এই স্থাপনা সম্পর্কে আরও শিখতে পারেন।

পরিষ্কার করুন

ক্লাউড ট্রান্সলেশন API আপনাকে প্রতি মাসে একটি নির্দিষ্ট পরিমাণ অনুবাদিত অক্ষর বিনামূল্যে সম্পাদন করতে দেয়৷ অ্যাপ ইঞ্জিনেরও একটি বিনামূল্যের কোটা রয়েছে, এবং ক্লাউড ফাংশন এবং ক্লাউড রানের ক্ষেত্রেও এটি প্রযোজ্য। কোনটি অতিক্রম করলে আপনাকে চার্জ দিতে হবে। আপনি যদি পরবর্তী কোডল্যাবে চালিয়ে যাওয়ার পরিকল্পনা করেন তবে আপনাকে আপনার অ্যাপটি বন্ধ করতে হবে না।

যাইহোক, যদি আপনি এখনও পরবর্তী টিউটোরিয়ালে যেতে প্রস্তুত না হন বা উদ্বিগ্ন হন যে ইন্টারনেট আপনি এইমাত্র যে অ্যাপটি স্থাপন করেছেন সেটি আবিষ্কার করে, আপনার অ্যাপ ইঞ্জিন অ্যাপটি অক্ষম করুন , আপনার ক্লাউড ফাংশন মুছুন , বা এড়াতে আপনার ক্লাউড রান পরিষেবা অক্ষম করুন দায়বদ্ধ চার্জ। আপনি যখন পরবর্তী কোডল্যাবে যাওয়ার জন্য প্রস্তুত হন, আপনি এটি পুনরায় সক্ষম করতে পারেন৷ অন্যদিকে, আপনি যদি এই অ্যাপ্লিকেশন বা অন্যান্য কোডল্যাবগুলি চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান তবে আপনি আপনার প্রকল্পটি বন্ধ করতে পারেন৷

এছাড়াও, একটি Google ক্লাউড সার্ভারহীন কম্পিউট প্ল্যাটফর্মে স্থাপন করার জন্য সামান্য বিল্ড এবং স্টোরেজ খরচ হয়। ক্লাউড স্টোরেজের মতো ক্লাউড বিল্ডের নিজস্ব ফ্রি কোটা রয়েছে। বৃহত্তর স্বচ্ছতার জন্য, ক্লাউড বিল্ড আপনার অ্যাপ্লিকেশান ইমেজ তৈরি করে, যা পরে ক্লাউড কন্টেইনার রেজিস্ট্রি বা আর্টিফ্যাক্ট রেজিস্ট্রিতে সংরক্ষিত হয়, এর উত্তরসূরি৷ সেই ছবির সঞ্চয়স্থান সেই কোটার কিছু অংশ ব্যবহার করে যেমনটি পরিষেবাতে সেই ছবিটি স্থানান্তর করার সময় নেটওয়ার্ক প্রস্থান করে। যাইহোক, আপনি এমন একটি অঞ্চলে বাস করতে পারেন যেখানে এই ধরনের বিনামূল্যের স্তর নেই, তাই সম্ভাব্য খরচ কমাতে আপনার স্টোরেজ ব্যবহার সম্পর্কে সচেতন থাকুন।

9. অতিরিক্ত সম্পদ

নিম্নলিখিত বিভাগগুলিতে, আপনি এই টিউটোরিয়ালটি সম্পূর্ণ করার মাধ্যমে আপনার অর্জিত জ্ঞানকে বাড়ানোর জন্য অতিরিক্ত পড়ার উপাদানের পাশাপাশি প্রস্তাবিত অনুশীলনগুলি খুঁজে পেতে পারেন।

অতিরিক্ত অধ্যয়ন

এখন যেহেতু আপনার বেল্টের নিচে অনুবাদ API এর সাথে আপনার কিছু অভিজ্ঞতা আছে, আসুন আপনার দক্ষতা আরও বিকাশের জন্য কিছু অতিরিক্ত অনুশীলন করি। আপনার শেখার পথ চালিয়ে যেতে, নিম্নলিখিতগুলি করতে আমাদের নমুনা অ্যাপটি পরিবর্তন করুন:

  1. স্থানীয়ভাবে চালানোর জন্য বা Google ক্লাউড সার্ভারহীন কম্পিউট প্ল্যাটফর্মে স্থাপন করার জন্য এই কোডল্যাবের অন্যান্য সংস্করণগুলি সম্পূর্ণ করুন (দেখুন রেপো README )।
  2. অন্য একটি প্রোগ্রামিং ভাষা ব্যবহার করে এই টিউটোরিয়ালটি সম্পূর্ণ করুন।
  3. বিভিন্ন উৎস বা লক্ষ্য ভাষা সমর্থন করতে এই অ্যাপ্লিকেশন পরিবর্তন করুন.
  4. একাধিক ভাষায় পাঠ্য অনুবাদ করতে সক্ষম হতে এই অ্যাপ্লিকেশনটি আপগ্রেড করুন; সমর্থিত টার্গেট ভাষাগুলির একটি পুলডাউন পেতে টেমপ্লেট ফাইলটি পরিবর্তন করুন।

আরও জানুন

গুগল অ্যাপ ইঞ্জিন

গুগল ক্লাউড ফাংশন

গুগল ক্লাউড রান

Google ক্লাউড বিল্ডপ্যাক, কন্টেইনার রেজিস্ট্রি, আর্টিফ্যাক্ট রেজিস্ট্রি

গুগল ক্লাউড ট্রান্সলেশন এবং গুগল এমএল কিট

অন্যান্য Google ক্লাউড পণ্য/পৃষ্ঠা

পাইথন এবং ফ্লাস্ক

লাইসেন্স

এই টিউটোরিয়ালটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সকৃত যখন রেপোতে সোর্স কোডটি অ্যাপাচি 2-এর অধীনে লাইসেন্সপ্রাপ্ত।