یک "Google Translate" برنامه در موتور برنامه پایتون 2

۱. مرور کلی

این مجموعه از آزمایشگاه‌های کد (آموزش‌های عملی و خودآموز) با هدف کمک به توسعه‌دهندگان برای درک گزینه‌های مختلفی که هنگام استقرار برنامه‌های خود دارند، ارائه شده است. در این آزمایشگاه کد، شما یاد خواهید گرفت که چگونه از API ترجمه ابری گوگل با پایتون استفاده کنید و آن را به صورت محلی اجرا کنید یا در یک پلتفرم محاسباتی بدون سرور ابری (App Engine، Cloud Functions یا Cloud Run) مستقر کنید. برنامه نمونه موجود در مخزن این آموزش را می‌توان (حداقل) به هشت روش مختلف با تنها تغییرات جزئی در پیکربندی مستقر کرد:

  1. سرور محلی Flask (پایتون ۲)
  2. سرور محلی Flask (پایتون ۳)
  3. موتور برنامه (پایتون ۲)
  4. موتور برنامه (پایتون ۳)
  5. توابع ابری (پایتون ۳)
  6. اجرای ابری (پایتون ۲ از طریق داکر)
  7. اجرای ابری (پایتون ۳ از طریق داکر)
  8. اجرای ابری (پایتون ۳ از طریق Cloud Buildpacks)

این آزمایشگاه کد بر روی استقرار این برنامه در پلتفرم(های) بولد شده بالا تمرکز دارد.

یاد خواهید گرفت که چگونه

آنچه نیاز دارید

  • یک پروژه Google Cloud با یک حساب Cloud Billing فعال
  • فلاسک برای اجرای محلی نصب شده باشد، یا یک پلتفرم محاسباتی ابری بدون محدودیت برای استقرارهای مبتنی بر ابر فعال باشد
  • مهارت‌های پایه پایتون
  • آشنایی با دستورات اولیه سیستم عامل

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

آن را بخوانید و تمرین‌ها را انجام دهید فقط بخونش.

تجربه خود را با پایتون چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

تجربه خود را در استفاده از خدمات ابری گوگل چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • نام پروژه ، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود و شما می‌توانید آن را در هر زمانی به‌روزرسانی کنید.
  • شناسه پروژه باید در تمام پروژه‌های گوگل کلود منحصر به فرد باشد و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاه‌های کد، باید به شناسه پروژه ارجاع دهید (و معمولاً با نام PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک شناسه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. سپس پس از ایجاد پروژه، آن "منجمد" می‌شود.
  • یک مقدار سوم هم وجود دارد، شماره پروژه که برخی از APIها از آن استفاده می‌کنند. برای اطلاعات بیشتر در مورد هر سه این مقادیر به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/APIهای ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به طوری که پس از این آموزش متحمل پرداخت صورتحساب نشوید، دستورالعمل‌های «پاکسازی» موجود در انتهای آزمایشگاه کد را دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

۳. فعال کردن API ترجمه

برای برنامه نمونه ما، شما می‌توانید API ترجمه ابری و سرویس موتور برنامه را با استفاده از دستورالعمل‌های مشابه ارائه شده در زیر فعال کنید.

فعال‌سازی APIهای ابری

مقدمه

صرف نظر از اینکه می‌خواهید از کدام API گوگل در برنامه خود استفاده کنید، باید آنها را فعال کنید . مثال زیر دو روش برای فعال کردن API Cloud Vision را نشان می‌دهد. پس از یادگیری نحوه فعال کردن یک API Cloud، می‌توانید API های دیگر را نیز فعال کنید زیرا روند کار مشابه است.

گزینه ۱: از Cloud Shell یا رابط خط فرمان شما

اگرچه فعال کردن APIها از طریق کنسول ابری رایج‌تر است، برخی از توسعه‌دهندگان ترجیح می‌دهند همه کارها را از طریق خط فرمان انجام دهند. برای انجام این کار، باید «نام سرویس» یک API را جستجو کنید. این نام شبیه یک URL است: SERVICE_NAME .googleapis.com . می‌توانید این موارد را در نمودار محصولات پشتیبانی‌شده پیدا کنید، یا می‌توانید با استفاده از API کشف گوگل، به صورت برنامه‌نویسی شده آنها را جستجو کنید.

با استفاده از این اطلاعات، با استفاده از Cloud Shell (یا محیط توسعه محلی خود که ابزار خط فرمان gcloud روی آن نصب شده است )، می‌توانید یک API را به صورت زیر فعال کنید:

gcloud services enable SERVICE_NAME.googleapis.com

برای مثال، این دستور، API مربوط به Cloud Vision را فعال می‌کند:

gcloud services enable vision.googleapis.com

این دستور App Engine را فعال می‌کند:

gcloud services enable appengine.googleapis.com

همچنین می‌توانید چندین API را با یک درخواست فعال کنید. برای مثال، این خط فرمان Cloud Run، Cloud Artifact Registry و Cloud Translation API را فعال می‌کند:

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

گزینه ۲: از کنسول ابری

همچنین می‌توانید Vision API را در API Manager فعال کنید. از Cloud Console، به API Manager بروید و Library را انتخاب کنید.

fb0f1d315f122d4a.png

اگر می‌خواهید Cloud Vision API را فعال کنید، در نوار جستجو عبارت "vision" را وارد کنید، هر چیزی که با آنچه تاکنون وارد کرده‌اید مطابقت داشته باشد، ظاهر می‌شود:

۲۲۷۵۷۸۶a۲۴f۸f۲۰۴.png

API مورد نظر برای فعال‌سازی را انتخاب کنید و روی Enable کلیک کنید:

2556f923b628e31.png

هزینه

اگرچه بسیاری از APIهای گوگل را می‌توان بدون هزینه استفاده کرد، استفاده از محصولات و APIهای گوگل کلود رایگان نیست . هنگام فعال کردن APIهای ابری، ممکن است از شما یک حساب صورتحساب فعال درخواست شود. با این حال، توجه به این نکته مهم است که برخی از محصولات گوگل کلود دارای یک سطح «همیشه رایگان» (روزانه/ماهانه) هستند که برای اعمال هزینه‌های صورتحساب باید از آن سطح فراتر بروید. در غیر این صورت، از کارت اعتباری شما (یا ابزار صورتحساب مشخص شده) هزینه‌ای کسر نخواهد شد.

کاربران باید قبل از فعال کردن هر API، به اطلاعات قیمت آن مراجعه کنند، به خصوص توجه داشته باشند که آیا سطح رایگانی دارد یا خیر، و اگر دارد، سطح آن چیست. اگر می‌خواهید API Cloud Vision را فعال کنید، صفحه اطلاعات قیمت‌گذاری آن را بررسی کنید. Cloud Vision سهمیه رایگان دارد و تا زمانی که در مجموع (در هر ماه) در محدوده آن بمانید، نباید هیچ هزینه‌ای متحمل شوید.

قیمت‌گذاری و سطوح رایگان بین APIهای گوگل متفاوت است. مثال‌ها:

محصولات مختلف گوگل قیمت‌های متفاوتی دارند، بنابراین حتماً برای این اطلاعات به مستندات API خود مراجعه کنید.

خلاصه

حالا که می‌دانید چگونه APIهای گوگل را به طور کلی فعال کنید، لطفاً به API Manager بروید و هر دو سرویس Cloud Translation API و App Engine را فعال کنید (اگر قبلاً این کار را نکرده‌اید)، اولی به این دلیل که برنامه ما از آن استفاده خواهد کرد و دومی به این دلیل که شما در حال استقرار یک برنامه App Engine هستید. اگر ترجیح می‌دهید این کار را از خط فرمان انجام دهید، به جای آن این دستور را صادر کنید:

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

اگرچه سهمیه ماهانه آن در صفحه خلاصه کلی سطح «همیشه رایگان» ذکر نشده است، صفحه قیمت‌گذاری API ترجمه بیان می‌کند که همه کاربران ماهانه مقدار ثابتی از کاراکترهای ترجمه شده را دریافت می‌کنند. اگر کمتر از آن آستانه باقی بمانید، هیچ هزینه‌ای از API متحمل نخواهید شد. اگر هزینه‌های مرتبط با Google Cloud دیگری وجود داشته باشد، در پایان در بخش «پاکسازی» مورد بحث قرار خواهد گرفت.

۴. کد نمونه برنامه را دریافت کنید

کد موجود در مخزن را به صورت محلی یا در Cloud Shell (با استفاده از دستور git clone ) کپی کنید، یا فایل ZIP را از دکمه سبز Code آن، همانطور که در تصویر زیر نشان داده شده است، دانلود کنید:

5cd6110c4414cf65.png

حالا که همه چیز را دارید، برای انجام این آموزش خاص، یک کپی کامل از پوشه ایجاد کنید، زیرا احتمالاً شامل حذف یا تغییر فایل‌ها خواهد بود. اگر می‌خواهید پیاده‌سازی متفاوتی انجام دهید، می‌توانید با کپی کردن فایل اصلی از ابتدا شروع کنید تا مجبور نباشید دوباره آن را کلون یا دانلود کنید.

۵. بررسی نمونه برنامه

برنامه نمونه، یک مشتق ساده از گوگل ترنسلیت است که از کاربران می‌خواهد متنی را به انگلیسی وارد کنند و ترجمه معادل آن متن را به اسپانیایی دریافت کنند. اکنون فایل 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. این ایمپورت‌ها، قابلیت‌های Flask، ماژول google.auth و کتابخانه کلاینت Cloud Translation API را به همراه دارند.
  2. متغیرهای سراسری نشان‌دهنده‌ی برنامه‌ی Flask، شناسه‌ی پروژه‌ی Cloud، کلاینت API ترجمه، «مسیر مکان» والد برای فراخوانی‌های API ترجمه و زبان‌های مبدا و مقصد هستند. در این مورد، انگلیسی ( en ) و اسپانیایی ( es ) هستند، اما می‌توانید این مقادیر را به کدهای زبان‌های دیگری که توسط Cloud Translation API پشتیبانی می‌شوند، تغییر دهید.
  3. بلوک بزرگ if در پایین، در آموزش اجرای محلی این برنامه استفاده می‌شود - این بلوک از سرور توسعه Flask برای ارائه برنامه ما استفاده می‌کند. این بخش همچنین برای آموزش‌های استقرار Cloud Run در صورتی که وب سرور در کانتینر بسته‌بندی نشده باشد، در اینجا قرار دارد. از شما خواسته می‌شود که بسته‌بندی سرور در کانتینر را فعال کنید، اما در صورتی که این مورد را نادیده بگیرید، کد برنامه به استفاده از سرور توسعه Flask برمی‌گردد. (این مشکل با 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)

تابع اصلی، کار دریافت ورودی کاربر و فراخوانی API ترجمه برای انجام کارهای سنگین را انجام می‌دهد. بیایید آن را به صورت جزئی‌تر بررسی کنیم:

  1. با استفاده از متغیر local_request بررسی کنید که آیا درخواست‌ها از توابع ابری (Cloud Functions) می‌آیند یا خیر. توابع ابری (Cloud Functions ) شیء درخواست فلاسک (Flask Request ) خود را ارسال می‌کنند، در حالی که سایر توابع (که به صورت محلی اجرا می‌شوند یا در App Engine یا Cloud Run مستقر می‌شوند) شیء درخواست را مستقیماً از فلاسک دریافت می‌کنند.
  2. متغیرهای اساسی فرم را مجدداً تنظیم کنید. این کار در درجه اول برای درخواست‌های GET است زیرا درخواست‌های POST داده‌هایی دارند که جایگزین این موارد می‌شوند.
  3. اگر از نوع POST است، متن را برای ترجمه دریافت کنید و یک ساختار JSON ایجاد کنید که نشان‌دهنده‌ی الزامات فراداده‌ی API باشد. سپس 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>

۶. نصب بسته‌ها/وابستگی‌های محلی (درون lib)

همانطور که قبلاً ذکر شد، برنامه نمونه از چارچوب وب میکرو Flask و کتابخانه کلاینت API ترجمه Google Cloud برای پایتون استفاده می‌کند. pip و این جفت بسته را با این دستور pip (یا pip3 ) نصب و به‌روزرسانی کنید:

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

۷. سرویس را مستقر کنید

برای استقرار سرویس ترجمه خود در 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

اکنون که برنامه شما به صورت جهانی در سراسر جهان در دسترس است، باید بتوانید از طریق URL (حاوی شناسه پروژه) ارائه شده در خروجی استقرار خود به آن دسترسی پیدا کنید:

da28f951c33a2c3d.png

یه چیزی ترجمه کن تا ببینی چی میشه!

d911984d15dd5ef9.png

۸. نتیجه‌گیری

تبریک! شما یاد گرفتید که چگونه API ترجمه ابری را فعال کنید، اعتبارنامه‌های لازم را دریافت کنید و یک برنامه وب ساده را روی موتور برنامه پایتون ۲ مستقر کنید! می‌توانید اطلاعات بیشتر در مورد این استقرار را از این جدول در مخزن [+] کسب کنید.

تمیز کردن

API ترجمه ابری به شما امکان می‌دهد تعداد مشخصی از کاراکترهای ترجمه شده را در هر ماه به صورت رایگان انجام دهید. App Engine نیز سهمیه رایگان دارد و همین امر در مورد Cloud Functions و Cloud Run نیز صدق می‌کند. در صورت تجاوز از هر یک از این موارد، هزینه‌هایی متحمل خواهید شد. اگر قصد دارید به codelab بعدی ادامه دهید، لازم نیست برنامه خود را خاموش کنید.

با این حال، اگر هنوز آماده رفتن به آموزش بعدی نیستید یا نگران هستید که اینترنت برنامه‌ای را که تازه مستقر کرده‌اید، کشف کند، برنامه App Engine خود را غیرفعال کنید ، عملکرد Cloud خود را حذف کنید یا سرویس Cloud Run خود را غیرفعال کنید تا از پرداخت هزینه‌ها جلوگیری کنید. وقتی آماده رفتن به آزمایشگاه کد بعدی شدید، می‌توانید آن را دوباره فعال کنید. از طرف دیگر، اگر قصد ادامه کار با این برنامه یا آزمایشگاه‌های کد دیگر را ندارید و می‌خواهید همه چیز را به طور کامل حذف کنید، می‌توانید پروژه خود را متوقف کنید .

همچنین، استقرار در یک پلتفرم محاسباتی بدون سرور Google Cloud هزینه‌های ساخت و ذخیره‌سازی کمی را متحمل می‌شود. Cloud Build همانند Cloud Storage سهمیه رایگان خود را دارد. برای شفافیت بیشتر، Cloud Build تصویر برنامه شما را می‌سازد که سپس در Cloud Container Registry یا Artifact Registry ، جانشین آن، ذخیره می‌شود. ذخیره‌سازی آن تصویر و همچنین خروجی شبکه هنگام انتقال آن تصویر به سرویس، مقداری از آن سهمیه را مصرف می‌کند. با این حال، ممکن است در منطقه‌ای زندگی کنید که چنین ردیف رایگانی ندارد، بنابراین از میزان استفاده از فضای ذخیره‌سازی خود آگاه باشید تا هزینه‌های احتمالی را به حداقل برسانید.

۹. منابع اضافی

در بخش‌های بعدی، می‌توانید مطالب خواندنی بیشتر و همچنین تمرین‌های پیشنهادی برای افزایش دانش خود از تکمیل این آموزش را بیابید.

مطالعه اضافی

حالا که کمی با API ترجمه آشنا شدید، بیایید چند تمرین دیگر برای توسعه بیشتر مهارت‌هایتان انجام دهیم. برای ادامه مسیر یادگیری، برنامه نمونه ما را طوری تغییر دهید که موارد زیر را انجام دهد:

  1. تمام نسخه‌های دیگر این آزمایشگاه کد را برای اجرای محلی یا استقرار در پلتفرم‌های محاسباتی بدون سرور Google Cloud تکمیل کنید (به مخزن README مراجعه کنید).
  2. این آموزش را با استفاده از یک زبان برنامه‌نویسی دیگر تکمیل کنید.
  3. این برنامه را طوری تغییر دهید که از زبان‌های مبدأ یا مقصد مختلف پشتیبانی کند.
  4. این برنامه را ارتقا دهید تا بتواند متن را به بیش از یک زبان ترجمه کند؛ فایل الگو را تغییر دهید تا فهرستی از زبان‌های مقصد پشتیبانی‌شده داشته باشید.

بیشتر بدانید

موتور برنامه گوگل

عملکردهای گوگل کلود

گوگل کلود ران

بسته‌های ساخت ابری گوگل، رجیستری کانتینر، رجیستری مصنوعات

ترجمه ابری گوگل و کیت یادگیری ماشین گوگل

سایر محصولات/صفحات Google Cloud

پایتون و فلاسک

مجوز

این آموزش تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است، در حالی که کد منبع موجود در مخزن تحت مجوز Apache 2 می‌باشد.