सामान्य "Google अनुवाद" Python 2 App Engine पर ऐप्लिकेशन

1. खास जानकारी

कोडलैब (अपने हिसाब से इस्तेमाल किए जाने वाले टूल) की इस सीरीज़ का मकसद, डेवलपर की मदद करना है, ताकि वे अपने ऐप्लिकेशन को डिप्लॉय करते समय मौजूद कई विकल्पों को समझ सकें. इस कोडलैब में, आपको Python के साथ Google Cloud Translation API को इस्तेमाल करने का तरीका पता चलेगा. साथ ही, यह भी पता चलेगा कि इसे स्थानीय तौर पर कैसे चलाया जाए या बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म (App Engine, Cloud Functions या Cloud Run) पर डिप्लॉय किया जाए. इस ट्यूटोरियल के रेपो में, सैंपल ऐप्लिकेशन को कॉन्फ़िगरेशन में मामूली बदलाव करके, कम से कम आठ अलग-अलग तरीकों से डिप्लॉय किया जा सकता है:

  1. लोकल फ़्लास्क सर्वर (Python 2)
  2. लोकल फ़्लास्क सर्वर (Python 3)
  3. App Engine (Python 2)
  4. App Engine (Python 3)
  5. Cloud Functions (Python 3)
  6. Cloud Run (Docker के ज़रिए Python 2)
  7. Cloud Run (Docker के ज़रिए Python 3)
  8. Cloud Run (Cloud Buildpacks के ज़रिए Python 3)

यह कोडलैब इस ऐप्लिकेशन को ऊपर दिए गए बोल्ड प्लैटफ़ॉर्म पर डिप्लॉय करने पर फ़ोकस करता है.

आपको इनके बारे में जानकारी मिलेगी

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट, जिसमें चालू क्लाउड बिलिंग खाता हो
  • डिवाइस पर इस्तेमाल करने के लिए फ़्लास्क इंस्टॉल किया गया या क्लाउड-आधारित डिप्लॉयमेंट के लिए, ऐसा क्लाउड सीवरलेस कंप्यूट प्लैटफ़ॉर्म जो चालू हो
  • Python के बुनियादी हुनर
  • ऑपरेटिंग सिस्टम के बुनियादी निर्देशों के बारे में काम करने की जानकारी

सर्वे

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

इसे पढ़ें और कसरतों को पूरा करें इसे सिर्फ़ पढ़ें

Python के साथ अपने अनुभव को आप कितनी रेटिंग देंगे?

शुरुआती इंटरमीडिएट कुशल

Google Cloud की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?

शुरुआती इंटरमीडिएट कुशल

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. साथ ही, आप इसे किसी भी समय अपडेट कर सकते हैं.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना पड़ता है और आम तौर पर इसकी पहचान PROJECT_ID के रूप में की जाती है. इसलिए, अगर आपको यह पसंद नहीं आता है, तो कोई भी कोड जनरेट करें. इसके अलावा, खुद का भी कोड बनाकर देखा जा सकता है कि वह उपलब्ध है या नहीं. फिर यह "फ़्रोज़न" होता है प्रोजेक्ट बनने के बाद.
  • तीसरी वैल्यू, प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

3. Translation API चालू करें

हमारे नमूना ऐप्लिकेशन के लिए, आप नीचे दिए गए समान निर्देशों का उपयोग करने के बजाय Cloud Translation API और App Engine सेवा को सक्षम करेंगे.

Cloud API चालू करना

शुरुआती जानकारी

आप अपने ऐप्लिकेशन में चाहे जिस Google API का इस्तेमाल करना चाहते हों वह चालू होना चाहिए. यहां दिए गए उदाहरण में, Cloud Vision API को चालू करने के दो तरीके बताए गए हैं. एक Cloud API को चालू करने का तरीका जानने के बाद, अन्य एपीआई चालू किए जा सकते हैं, क्योंकि प्रोसेस एक जैसी है.

पहला विकल्प: Cloud Shell या अपने कमांड-लाइन इंटरफ़ेस से

हालांकि, Cloud Console से एपीआई चालू करना सामान्य बात है, लेकिन कुछ डेवलपर कमांड लाइन से ही सारे काम करना पसंद करते हैं. ऐसा करने के लिए, आपको एपीआई की "सेवा का नाम" खोजना होगा. यह यूआरएल जैसा लग रहा है: SERVICE_NAME.googleapis.com. इन्हें इस्तेमाल किए जा सकने वाले प्रॉडक्ट के चार्ट में देखा जा सकता है. इसके अलावा, Google Discovery API की मदद से, प्रोग्राम बनाकर इनके लिए क्वेरी की जा सकती है.

Cloud Shell का इस्तेमाल करके या gcloud कमांड-लाइन टूल इंस्टॉल किए हुए आपके लोकल डेवलपमेंट एनवायरमेंट का इस्तेमाल करके), इस जानकारी के साथ एपीआई को चालू किया जा सकता है. इसके लिए, यह तरीका अपनाएं:

gcloud services enable SERVICE_NAME.googleapis.com

उदाहरण के लिए, यह निर्देश Cloud Vision API को चालू करता है:

gcloud services enable vision.googleapis.com

यह निर्देश App Engine को चालू करता है:

gcloud services enable appengine.googleapis.com

एक अनुरोध करके, कई एपीआई भी चालू किए जा सकते हैं. उदाहरण के लिए, यह कमांड लाइन Cloud Run, Cloud Artifact Registry, और Cloud Translation API को चालू करती है:

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

दूसरा विकल्प: Cloud Console में जाकर

एपीआई मैनेजर में जाकर भी Vision API को चालू किया जा सकता है. Cloud Console में, एपीआई मैनेजर पर जाएं और लाइब्रेरी चुनें.

fb0f1d315f122d4a.png

अगर आपको Cloud Vision API को चालू करना है, तो "विज़न" डालें और आपके द्वारा अभी तक डाले गए शब्दों से मेल खाने वाली कोई भी चीज़ दिखाई देगी:

2275786a24f8f204.png

वह एपीआई चुनें जिसे आपको चालू करना है और चालू करें पर क्लिक करें:

2556f923b628e31.png

लागत

कई Google API का इस्तेमाल बिना किसी शुल्क के किया जा सकता है. हालांकि, Google Cloud के प्रॉडक्ट और एपीआई मुफ़्त नहीं हैं. Cloud API चालू करते समय, आपसे कोई चालू बिलिंग खाता बनाने के लिए कहा जा सकता है. हालांकि, इस बात का ध्यान रखना ज़रूरी है कि Google Cloud के कुछ प्रॉडक्ट में "हमेशा मुफ़्त" सुविधा मिलती है टियर (रोज़/महीने) से कम का पेमेंट हो सकता है. इसे बिलिंग शुल्क लागू करने के लिए पार करना ज़रूरी है; ऐसा न होने पर, आपके क्रेडिट कार्ड (या चुने गए बिलिंग तरीके) से शुल्क नहीं लिया जाएगा.

किसी एपीआई को चालू करने से पहले, उपयोगकर्ताओं को एपीआई की कीमत से जुड़ी जानकारी देखनी चाहिए. खास तौर पर, यह ध्यान रखना चाहिए कि क्या इसमें फ़्री टीयर है और अगर उपलब्ध है, तो यह क्या है. अगर Cloud Vision API को चालू किया जा रहा था, तो आपको इसकी कीमत की जानकारी वाला पेज देखना होगा. Cloud Vision का मुफ़्त कोटा है. अगर आपको इसकी सीमा में रहकर (हर महीने) में कोई शुल्क नहीं देना है, तो आपसे कोई शुल्क नहीं लिया जाएगा.

Google API के हिसाब से, शुल्क और मुफ़्त टियर अलग-अलग होते हैं. उदाहरण:

  • Google Cloud/GCP — हर प्रॉडक्ट का बिल अलग तरीके से लिया जाता है और उनके लिए आम तौर पर हर vCPU साइकल, स्टोरेज के इस्तेमाल से जुड़े उपभोक्ता, मेमोरी के इस्तेमाल या हर बार इस्तेमाल के हिसाब से पैसे चुकाने होते हैं; ऊपर फ़्री टियर की जानकारी देखें.
  • Google Maps — इसमें एपीआई का एक सुइट है और उपयोगकर्ताओं को हर महीने 200 डॉलर का मुफ़्त क्रेडिट दिया जाता है.
  • Google Workspace (पहले इसे G Suite के नाम से जाना जाता था) API — इसमें Workspace के हर महीने के सदस्यता शुल्क के तहत बिना किसी शुल्क के इस्तेमाल की सुविधा मिलती है. हालांकि, इसके लिए कोई सीमा तय नहीं होती है. इसमें Gmail, Google Drive, Calendar, Docs, Sheets, और Slides के एपीआई के इस्तेमाल के लिए, डायरेक्ट बिलिंग की सुविधा नहीं है.

Google के अलग-अलग प्रॉडक्ट के लिए, अलग-अलग तरीके से बिल भेजा जाता है. इसलिए, उस जानकारी के लिए अपने एपीआई के दस्तावेज़ ज़रूर देखें.

खास जानकारी

अब आप जानते हैं कि Google API को आम तौर पर कैसे चालू किया जाए, तो कृपया API Manager पर जाएं और Cloud Translation API और App Engine सेवा, दोनों को चालू करें (अगर आपने पहले से ऐसा नहीं किया है), पहले वाला क्योंकि हमारा ऐप्लिकेशन इसका इस्तेमाल करेगा और बाद वाला इसलिए क्योंकि आपने App Engine ऐप्लिकेशन को डिप्लॉय किया है. अगर आपको इसे कमांड लाइन से करना है, तो यह निर्देश दें:

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

हालांकि, इसका हर महीने का कोटा कुल "हमेशा मुफ़्त" सूची में शामिल नहीं है" टीयर की खास जानकारी वाले पेज पर दिखता है, तो Translation API के कीमत तय करने वाले पेज पर यह जानकारी मिलती है कि सभी उपयोगकर्ताओं को हर महीने तय संख्या में अनुवाद किए गए वर्ण मिलते हैं. इस थ्रेशोल्ड से नीचे रहने पर, एपीआई से कोई शुल्क नहीं लिया जाएगा. अगर Google Cloud से जुड़े अन्य शुल्क हैं, तो उनके बारे में "क्लीन अप करें" सेक्शन के आखिर में इस बारे में बताया गया होगा सेक्शन में जाएं.

4. सैंपल ऐप्लिकेशन कोड पाएं

रेपो के कोड को स्थानीय तौर पर या Cloud Shell में (git clone निर्देश का इस्तेमाल करके) क्लोन करें. इसके अलावा, यहां दिए गए स्क्रीनशॉट में दिखाए गए तरीके से, ZIP फ़ाइल को उसके हरे रंग के कोड बटन से डाउनलोड करें:

5cd6110c4414cf65.png

अब आपके पास सब कुछ है, तो इस खास ट्यूटोरियल को करने के लिए फ़ोल्डर की पूरी कॉपी बनाएं, क्योंकि इसमें फ़ाइलों को मिटाना या बदलना शामिल हो सकता है. अगर आपको अलग से कोई डिप्लॉयमेंट करना है, तो ओरिजनल फ़ाइल को कॉपी करके फिर से शुरू करें. इससे आपको उसका क्लोन बनाने या उसे दोबारा डाउनलोड करने की ज़रूरत नहीं पड़ेगी.

5. सैंपल ऐप्लिकेशन के बारे में जानकारी

यह सैंपल ऐप्लिकेशन, Google Translate से जुड़ा एक आसान टूल है. यह उपयोगकर्ताओं को अंग्रेज़ी में टेक्स्ट डालने और उसके बराबर अनुवाद स्पैनिश में पाने के लिए कहता है. अब 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 मॉड्यूल, और Cloud Translation API क्लाइंट लाइब्रेरी मिलती है.
  2. ग्लोबल वैरिएबल, फ़्लास्क ऐप्लिकेशन, क्लाउड प्रोजेक्ट आईडी, Translation API क्लाइंट, पैरंट "जगह का पाथ" दिखाते हैं के साथ-साथ अनुवाद API कॉल के लिए भी उपलब्ध हैं. इस मामले में, यह अंग्रेज़ी (en) और स्पैनिश (es) है. हालांकि, इन वैल्यू को बेझिझक Cloud Translation API में इस्तेमाल होने वाले अन्य भाषा कोड में भी बदला जा सकता है.
  3. नीचे दिए गए बड़े if ब्लॉक का इस्तेमाल इस ऐप्लिकेशन को स्थानीय तौर पर चलाने के लिए ट्यूटोरियल में किया गया है—यह हमारे ऐप्लिकेशन को चलाने के लिए फ़्लास्क डेवलपमेंट सर्वर का इस्तेमाल करता है. अगर वेब सर्वर को कंटेनर में बंडल नहीं किया गया है, तो यह सेक्शन Cloud Run डिप्लॉयमेंट के ट्यूटोरियल के लिए भी उपलब्ध है. आपसे कंटेनर में सर्वर को बंडल करने की सुविधा चालू करने के लिए कहा जाता है. हालांकि, अगर आप इसे नज़रअंदाज़ कर देते हैं, तो ऐप्लिकेशन कोड, फ़्लास्क डेवलपमेंट सर्वर का इस्तेमाल करने लगता है. (इसमें App Engine या Cloud Functions से जुड़ी समस्या नहीं है, क्योंकि वे सोर्स पर आधारित प्लैटफ़ॉर्म हैं. इसका मतलब है कि Google Cloud डिफ़ॉल्ट वेब सर्वर उपलब्ध कराता है और उसे चलाता है.)

आखिर में, 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)

मुख्य फ़ंक्शन, उपयोगकर्ता से इनपुट लेने का काम करता है और काम को बेहतर बनाने के लिए Translation API को कॉल करता है. आइए, इसके बारे में जानते हैं:

  1. यह देखने के लिए कि अनुरोध, local_request वैरिएबल का इस्तेमाल करके Cloud Functions से आ रहे हैं या नहीं. Cloud Functions, अपने फ़्लास्क रिक्वेस्ट ऑब्जेक्ट में भेजता है, जबकि दूसरे सभी (स्थानीय तौर पर चल रहे या App Engine या Cloud Run पर डिप्लॉय कर रहे) को सीधे फ़्लास्क से अनुरोध ऑब्जेक्ट मिलेगा.
  2. फ़ॉर्म के बेसिक वैरिएबल को रीसेट करें. यह मुख्य रूप से जीईटी अनुरोधों के लिए है, क्योंकि पोस्ट अनुरोधों में ऐसा डेटा होगा जो इनकी जगह ले लेगा.
  3. अगर यह एक पीओएसटी है, तो अनुवाद करने के लिए टेक्स्ट लें और एपीआई मेटाडेटा की ज़रूरी शर्तों के बारे में बताने वाली JSON संरचना बनाएं. इसके बाद, अगर उपयोगकर्ता किसी पुरानी लाइब्रेरी का इस्तेमाल कर रहा है, तो एपीआई के पिछले वर्शन पर जाकर एपीआई को कॉल करें.
  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 में) इंस्टॉल करें

जैसा कि पहले बताया जा चुका है, सैंपल ऐप्लिकेशन, Python के लिए Flask माइक्रो वेब फ़्रेमवर्क और Google Cloud Translation 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 App Engine पर डिप्लॉय करने के लिए, यह निर्देश चलाएं:

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

अब आपका ऐप्लिकेशन दुनिया भर में उपलब्ध है, इसलिए आप अपने डिप्लॉयमेंट आउटपुट में दिए गए यूआरएल (जिसमें आपका प्रोजेक्ट आईडी मौजूद है) पर उसे ऐक्सेस कर सकते हैं:

da28f951c33a2c3d.png

यह देखने के लिए कि कोई चीज़ काम कर रही है, उसका अनुवाद करें!

d911984d15dd5ef9.png

8. नतीजा

बधाई हो! आपने Cloud Translation API को चालू करने, ज़रूरी क्रेडेंशियल पाने, और Python 2 App Engine पर एक आसान वेब ऐप्लिकेशन डिप्लॉय करने का तरीका सीख लिया है! इस डिप्लॉयमेंट के बारे में ज़्यादा जानने के लिए, रेपो में मौजूद इस टेबल पर जाएं.

व्यवस्थित करें

Cloud Translation API की मदद से, हर महीने अनुवाद किए गए वर्णों की संख्या तय की जा सकती है. इसके लिए, कोई शुल्क नहीं चुकाना पड़ता. App Engine का एक मुफ़्त कोटा भी है. ऐसा Cloud Functions और Cloud Run के लिए भी किया जाता है. दोनों में से कोई भी सीमा पार होने पर आपको शुल्क देना होगा. अगर आपको अगले कोडलैब का इस्तेमाल जारी रखना है, तो आपको अपना ऐप्लिकेशन बंद करने की ज़रूरत नहीं है.

हालांकि, अगर आप अभी अगले ट्यूटोरियल पर जाने के लिए तैयार नहीं हैं या आपको इस बात की चिंता है कि इंटरनेट ने उस ऐप्लिकेशन को खोज लिया है जिसे आपने अभी-अभी डिप्लॉय किया है, तो अपना App Engine ऐप्लिकेशन बंद करें, अपना Cloud Function मिटाएं या अपनी Cloud Run सेवा को बंद करें. जब आप अगले कोडलैब पर जाने के लिए तैयार हों, तो उसे फिर से चालू किया जा सकता है. दूसरी ओर, अगर आपको इस ऐप्लिकेशन या अन्य कोडलैब का इस्तेमाल नहीं करना है और सब कुछ पूरी तरह से मिटाना है, तो अपना प्रोजेक्ट बंद करें.

साथ ही, Google Cloud के बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने पर, मामूली बिल्ड और स्टोरेज का खर्च उठाना पड़ता है. Cloud Storage की तरह Cloud Build का अपना अलग कोटा होता है. ज़्यादा पारदर्शिता के लिए, Cloud Build आपके ऐप्लिकेशन की इमेज बनाता है. इसके बाद, इस इमेज को Cloud Container Registry या Artifact Registry में सेव कर दिया जाता है. जब इमेज को सेवा में ट्रांसफ़र किया जाता है, तो नेटवर्क इग्रेस डेटा ट्रैफ़िक के लिए उस इमेज को सेव करने के लिए, तय कोटे का कुछ हिस्सा इस्तेमाल होता है. हालांकि, हो सकता है कि आप किसी ऐसे क्षेत्र में हों जहां ऐसा कोई फ़्री टीयर उपलब्ध न हो. इसलिए, संभावित लागत को कम करने के लिए, अपने स्टोरेज के इस्तेमाल को ध्यान में रखें.

9. अन्य संसाधन

यहां दिए गए सेक्शन में, पढ़ने के लिए अतिरिक्त कॉन्टेंट के साथ-साथ सुझाए गए एक्सरसाइज़ भी दिए गए हैं. इनकी मदद से, इस ट्यूटोरियल को पूरा करने के बाद मिली जानकारी को बेहतर बनाया जा सकता है.

अतिरिक्त स्टडी

अब आपको Translation API का थोड़ा-बहुत अनुभव है. अब आपके हुनर को बेहतर बनाने के लिए हम कुछ और काम करने जा रहे हैं. अपना लर्निंग पाथ जारी रखने के लिए, हमारे सैंपल ऐप्लिकेशन में बदलाव करें, ताकि ये काम किए जा सकें:

  1. कोडलैब के इस मॉड्यूल के अन्य सभी वर्शन को ऐप्लिकेशन में काम करने या Google Cloud के बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने के लिए पूरा करें. ज़्यादा जानने के लिए, रेपो README देखें.
  2. इस ट्यूटोरियल को पूरा करने के लिए, प्रोग्रामिंग की किसी दूसरी भाषा का इस्तेमाल करें.
  3. अलग-अलग स्रोत या लक्षित भाषाओं का समर्थन करने के लिए इस ऐप्लिकेशन को बदलें.
  4. लेख का एक से ज़्यादा भाषाओं में अनुवाद करने के लिए इस ऐप्लिकेशन को अपग्रेड करें; समर्थित लक्ष्य भाषाओं के पुलडाउन के लिए टेम्प्लेट फ़ाइल को बदल सकते हैं.

ज़्यादा जानें

Google App Engine

Google Cloud के फ़ंक्शन

Google क्लाउड रन

Google Cloud Buildpack, कंटेनर रजिस्ट्री, Artifact Registry

Google Cloud Translation और Google ML Kit

Google Cloud के अन्य प्रॉडक्ट/पेज

Python और फ़्लास्क

लाइसेंस

इस ट्यूटोरियल को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है. वहीं, रेपो में मौजूद सोर्स कोड को Apache 2 के तहत लाइसेंस मिला है.