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

1. بررسی اجمالی

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

  1. سرور محلی فلاسک (Python 2)
  2. سرور محلی فلاسک (Python 3)
  3. موتور برنامه (Python 2)
  4. App Engine (Python 3)
  5. توابع ابری (Python 3)
  6. Cloud Run (Python 2 از طریق Docker)
  7. Cloud Run (Python 3 از طریق Docker)
  8. Cloud Run (Python 3 از طریق Cloud Buildpacks)

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

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

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

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

نظرسنجی

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

آن را بخوانید و تمرینات را کامل کنید فقط آن را بخوانید

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

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

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

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

2. راه اندازی و الزامات

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

3. Translation API را فعال کنید

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

فعال کردن Cloud API

مقدمه

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

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

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

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

gcloud services enable SERVICE_NAME.googleapis.com

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

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

گزینه 2: از کنسول Cloud

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

fb0f1d315f122d4a.png

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

2275786a24f8f204.png

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

2556f923b628e31.png

هزینه

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

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

قیمت و ردیف های رایگان بین API های Google متفاوت است. مثال ها:

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

خلاصه

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

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

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

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

همانطور که قبلا ذکر شد، برنامه نمونه از چارچوب وب میکرو فلاسک و کتابخانه سرویس گیرنده 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. سرویس را مستقر کنید

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

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

تمیز کردن

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

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

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

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

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

مطالعه تکمیلی

اکنون که تجربه ای در زمینه Translation API دارید، بیایید چند تمرین اضافی برای توسعه بیشتر مهارت های خود انجام دهیم. برای ادامه مسیر یادگیری خود، برنامه نمونه ما را برای انجام موارد زیر تغییر دهید:

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

بیشتر بدانید

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

توابع Google Cloud

Google Cloud Run

Google Cloud Buildpacks، Container Registry، Artifact Registry

Google Cloud Translation و Google ML Kit

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

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

مجوز

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