Temel bir "Google Çeviri" dağıtın Python 2 App Engine'deki uygulama

1. Genel Bakış

Bu codelab serisi (kendi kendine hızlandırılabilen, uygulamalı eğiticiler), geliştiricilerin uygulamalarını dağıtırken sahip oldukları çeşitli seçenekleri anlamalarına yardımcı olmayı amaçlar. Bu codelab'de, Google Cloud Translation API'yi Python ile kullanmayı ve yerel olarak çalıştırmayı ya da Cloud sunucusuz bilgi işlem platformuna (App Engine, Cloud Functions veya Cloud Run) dağıtmayı öğreneceksiniz. Bu eğiticinin deposunda bulunan örnek uygulama, yalnızca küçük yapılandırma değişiklikleriyle en az sekiz farklı şekilde dağıtılabilir:

  1. Yerel Flask sunucusu (Python 2)
  2. Yerel Flask sunucusu (Python 3)
  3. App Engine (Python 2)
  4. App Engine (Python 3)
  5. Cloud Functions (Python 3)
  6. Cloud Run (Docker üzerinden Python 2)
  7. Cloud Run (Dock üzerinden Python 3)
  8. Cloud Run (Cloud Buildpacks aracılığıyla Python 3)

Bu codelab'de, bu uygulamanın yukarıdaki kalın yazı tipi platformlara dağıtımına odaklanılmaktadır.

Neler öğreneceksiniz?

Gerekenler

Anket

Bu eğiticiden nasıl yararlanacaksınız?

Okuyun ve alıştırmaları tamamlayın Salt okuma

Python deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

Google Cloud hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Kurulum ve şartlar

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle PROJECT_ID olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir.
  • Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

3. Translation API'yi etkinleştir

Örnek uygulamamızda, aşağıdaki benzer talimatları uygulamak yerine Cloud Translation API ve App Engine hizmetini etkinleştireceksiniz.

Cloud APIs'i etkinleştirme

Giriş

Uygulamanızda kullanmak istediğiniz Google API'sinden bağımsız olarak, bunların etkinleştirilmesi gerekir. Aşağıdaki örnekte, Cloud Vision API'yi etkinleştirmenin iki yolu gösterilmektedir. Bir Cloud API'yi nasıl etkinleştireceğinizi öğrendikten sonra, süreç benzer olduğu için diğer API'leri de etkinleştirebilirsiniz.

1. Seçenek: Cloud Shell'den veya komut satırı arayüzünden

API'leri Cloud Console'dan etkinleştirmek daha yaygın olsa da bazı geliştiriciler her şeyi komut satırından yapmayı tercih eder. Bunu yapmak için bir API'nin "hizmet adını" aramanız gerekir. Bu URL şuna benziyor: SERVICE_NAME.googleapis.com. Bunları Desteklenen ürünler grafiğinde bulabilir veya Google Discovery API ile programlı bir şekilde sorgulayabilirsiniz.

Bu bilgilere sahip olduğunuzda, Cloud Shell'i (veya gcloud komut satırı aracının yüklü olduğu yerel geliştirme ortamınızı) kullanarak bir API'yi aşağıdaki şekilde etkinleştirebilirsiniz:

gcloud services enable SERVICE_NAME.googleapis.com

Örneğin, aşağıdaki komut Cloud Vision API'yi etkinleştirir:

gcloud services enable vision.googleapis.com

Bu komut App Engine'i etkinleştirir:

gcloud services enable appengine.googleapis.com

Ayrıca tek bir istekle birden çok API'yi de etkinleştirebilirsiniz. Örneğin, aşağıdaki komut satırı Cloud Run, Cloud Artifact Registry ve Cloud Translation API'yi etkinleştirir:

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

2. seçenek: Cloud Console'dan

API Yöneticisi'nden Vision API'yi de etkinleştirebilirsiniz. Cloud Console'da API Yöneticisi'ne gidip Kitaplık'ı seçin.

fb0f1d315f122d4a.png

Cloud Vision API'yi etkinleştirmek istiyorsanız "vision" ifadesini yazmaya başlayın yazdığınızda şu ana kadar girdiğinizle eşleşen her şey görünür:

2275786a24f8f204.png

Etkinleştirmek istediğiniz API'yi seçin ve Etkinleştir'i tıklayın:

2556f923b628e31.png

Maliyet

Birçok Google API'si ücretsiz olarak kullanılabilse de Google Cloud ürünleri ve API'ler ücretsiz değildir. Cloud APIs'i etkinleştirirken, etkin bir faturalandırma hesabı girmeniz istenebilir. Ancak bazı Google Cloud ürünlerinde "Daima Ücretsiz" faturalandırma ücreti ödemek için aşmanız gereken katman (günlük/aylık); Aksi takdirde, kredi kartınızdan (veya belirtilen faturalandırma aracından) ücret alınmaz.

Kullanıcılar, herhangi bir API'yi etkinleştirmeden önce fiyatlandırma bilgisine başvurmalıdır. Özellikle API'nin ücretsiz katmanı olup olmadığına ve varsa bunun ne olduğuna dikkat etmelidir. Cloud Vision API'yi etkinleştirdiyseniz fiyatlandırma bilgileri sayfasını kontrol ederdiniz. Cloud Vision'ın ücretsiz bir kotası vardır. Bu kotanın toplamını (her ay içinde) aşmadığınız sürece sizden herhangi bir ücret alınmaz.

Fiyatlandırma ve ücretsiz katmanlar, Google API'lerine göre değişiklik gösterir. Örnekler:

Farklı Google ürünleri farklı şekilde faturalandırılır. Bu nedenle, bu bilgiler için API'nizin belgelerine başvurduğunuzdan emin olun.

Özet

Google API'lerini genel olarak nasıl etkinleştireceğinizi öğrendiğinize göre lütfen API Yöneticisi'ne gidin ve henüz yapmadıysanız hem Cloud Translation API hem de App Engine hizmetini etkinleştirin. Bu işlemi komut satırından yapmayı tercih ederseniz bunun yerine şu komutu verin:

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

Aylık kotası, genel olarak "Daima Ücretsiz" sekmesinde gösterilmese de katman özeti sayfasındaki Translation API'nin fiyatlandırma sayfasında tüm kullanıcıların aylık olarak sabit miktarda çevrilmiş karakter alacağı belirtilir. Bu eşiğin altında kalırsanız API sizden herhangi bir ücret almaz. Google Cloud ile ilgili başka ücretler varsa bunlar en son "Temizlik" bölümünde ele alınır bölümüne bakın.

4. Örnek uygulama kodunu alma

Depodaki kodu yerel olarak veya Cloud Shell'de klonlayın (git clone komutunu kullanarak) ya da aşağıdaki ekran görüntüsünde gösterildiği gibi ZIP dosyasını yeşil Kod düğmesinden indirin:

5cd6110c4414cf65.png

Artık her şeye sahip olduğunuza göre, bu özel eğiticiyi uygulamak için klasörün tam bir kopyasını oluşturun. Çünkü bu işlem büyük olasılıkla dosyaların silinmesini veya değiştirilmesini gerektirecektir. Farklı bir dağıtım yapmak istiyorsanız orijinali kopyalayarak en baştan başlayabilirsiniz. Böylece, tekrar klonlamak veya indirmek zorunda kalmazsınız.

5. Örnek uygulama turu

Örnek uygulama, kullanıcılardan İngilizce metin girmelerini ve söz konusu metnin İspanyolca karşılığını almalarını isteyen basit bir Google Çeviri türevidir. Şimdi main.py dosyasını açın, böylece işleyiş şeklini görebiliriz. Lisanslamayla ilgili yorum yapılan satırlar atlanırsa, üstte ve altta şu şekilde görünür:

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. İçe aktarma işlemleri Flask işlevini, google.auth modülünü ve Cloud Translation API istemci kitaplığını sağlar.
  2. Genel değişkenler; Flask uygulamasını, Cloud proje kimliğini, Translation API istemcisini ve üst "konum yolunu" temsil eder. hakkında daha fazla bilgi edinin. Bu durumda, dil İngilizce (en) ve İspanyolcadır (es) ancak bu değerleri Cloud Translation API tarafından desteklenen diğer dil kodlarıyla değiştirebilirsiniz.
  3. Alttaki büyük if bloğu bu uygulamayı yerel olarak çalıştırma eğiticisinde kullanılır. Uygulamamızı sunmak için Flask geliştirme sunucusunu kullanır. Bu bölüm, web sunucusunun container'a dahil edilmemiş olması ihtimaline karşı Cloud Run dağıtımı eğiticileri için de hazırlanmıştır. Kapsayıcıda sunucuyu gruplandırmayı etkinleştirmeniz istenir. Ancak bunu gözden kaçırırsanız uygulama kodu Flask geliştirme sunucusunu kullanmaya başlar. (App Engine veya Cloud Functions'la ilgili bir sorun değildir çünkü bunlar kaynak tabanlı platformlardır. Yani Google Cloud, varsayılan bir web sunucusu sağlayıp çalıştırır.)

Son olarak, main.py öğesinin ortasında, uygulamanın merkezinde yer alan translate() işlevi yer alır:

@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)

Birincil işlev, kullanıcı girişini alıp işin zor kısmını yapması için Translation API'yi çağırma görevini üstlenir. Bunları ayrıntılı şekilde inceleyelim:

  1. İsteklerin local_request değişkenini kullanarak Cloud Functions'dan gelip gelmediğini kontrol edin. Cloud Functions kendi Flask İsteği nesnesini gönderir. Diğer tüm kuruluşlar (yerel olarak çalışan veya App Engine'e ya da Cloud Run'a dağıtım yapan) istek nesnesini doğrudan Flask'tan alır.
  2. Formun temel değişkenlerini sıfırlayın. POST isteklerinde bunların yerini alan veriler olacağı için bu, öncelikle GET istekleri içindir.
  3. Bu bir POST ise çevrilecek metni alın ve API meta veri gereksinimini temsil eden bir JSON yapısı oluşturun. Ardından kullanıcı eski bir kitaplığı kullanıyorsa API'nin önceki bir sürümünü kullanarak API'yi çağırın.
  4. Yine de, gerçek sonuçları (POST) veya veri yok (GET) şablon bağlamına göre biçimlendirin ve oluşturun.

Uygulamanın görsel kısmı, index.html şablonunun içindedir. Daha önce çevrilen sonuçları (aksi takdirde boş) ve ardından çevrilecek şeyi isteyen formu gösterir:

<!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. Yerel paketleri/bağımlıları yükleme (lib'e)

Daha önce belirtildiği gibi, örnek uygulama Flask mikro web çerçevesini ve Python için Google Cloud Translation API istemci kitaplığını kullanır. Bu pip (veya pip3) komutuyla pip ve bu paket çiftini yükleyip güncelleyin:

pip install -t lib -r requirements.txt

Yukarıdaki yorumu çalıştırdıktan sonra, şuna benzer bir yükleme çıkışı görürsünüz:

$ 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. Hizmeti dağıtma

Çeviri hizmetinizi Python 2 App Engine'e dağıtmak için şu komutu çalıştırın:

gcloud app deploy

Çıkış aşağıdaki gibi görünmeli ve sonraki adımlar için bazı istemler sağlamalıdır:

$ 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

Uygulamanız artık tüm dünyada kullanıma sunulduğuna göre dağıtım çıktınızda belirtilen URL'den (proje kimliğinizi içeren) erişebilmeniz gerekir:

da28f951c33a2c3d.png

Nasıl çalıştığını görmek için bir şeyi çevirin!

d911984d15dd5ef9.png

8. Sonuç

Tebrikler! Cloud Translation API'yi etkinleştirmeyi, gerekli kimlik bilgilerini almayı ve Python 2 App Engine'e basit bir web uygulaması dağıtmayı öğrendiniz. Depodaki bu tablodan bu dağıtım hakkında daha fazla bilgi edinebilirsiniz.

Temizleme

Cloud Translation API, aylık sabit sayıda karakter çevirisini ücretsiz olarak yapmanıza olanak tanır. App Engine'de ücretsiz kota da vardır. Aynı durum Cloud Functions ve Cloud Run için de geçerlidir. Bu iki sınır aşılırsa ücret ödemeniz gerekir. Bir sonraki codelab'e geçmeyi planlıyorsanız uygulamanızı kapatmanız gerekmez.

Ancak bir sonraki eğitime henüz geçmeye hazır değilseniz veya internetin yakın zamanda dağıttığınız uygulamayı bulduğundan endişeleniyorsanız ücret alınmaması için App Engine uygulamanızı devre dışı bırakın, Cloud Functions işlevinizi silin veya Cloud Run hizmetinizi devre dışı bırakın. Bir sonraki codelab'e geçmeye hazır olduğunuzda projeyi yeniden etkinleştirebilirsiniz. Öte yandan, bu uygulamayı veya diğer codelab'leri kullanmaya devam etmeyecekseniz ve her şeyi tamamen silmek istiyorsanız projenizi kapatabilirsiniz.

Ayrıca Google Cloud sunucusuz bilgi işlem platformuna dağıtım yapmak küçük derleme ve depolama maliyetleri gerektirir. Cloud Build'in ve Cloud Storage'ın kendi ücretsiz kotası vardır. Cloud Build, daha fazla şeffaflık için uygulama görüntünüzü derler. Bu görüntü daha sonra Cloud Container Registry veya Artifact Registry'nin yerine geçer. O görüntünün depolanması, bu görüntünün hizmete aktarılması sırasında ağ çıkışının yanı sıra bu kotanın bir kısmını kullanır. Ancak, bu kadar ücretsiz katmanın olmadığı bir bölgede yaşıyor olabilirsiniz. Bu nedenle, olası maliyetleri en aza indirmek için depolama alanı kullanımınız konusunda dikkatli olun.

9. Ek kaynaklar

İlerleyen bölümlerde, bu eğitimi tamamladıktan sonra edindiğiniz bilgileri artırmak için önerilen alıştırmaların yanı sıra ek okuma materyalleri bulabilirsiniz.

Ek çalışma

Artık Translation API'yi tecrübe ettiğinize göre becerilerinizi daha da geliştirmek için ek alıştırmalar yapalım. Öğrenme rotanıza devam etmek için örnek uygulamamızda değişiklik yaparak aşağıdakileri yapabilirsiniz:

  1. Yerel olarak çalıştırmak veya Google Cloud sunucusuz bilgi işlem platformlarına dağıtım yapmak için bu codelab'in diğer tüm sürümlerini tamamlayın (depo README'yi inceleyin).
  2. Başka bir programlama dili kullanarak bu eğiticiyi tamamlayın.
  3. Farklı kaynak veya hedef dilleri desteklemek için bu uygulamayı değiştirin.
  4. Metni birden fazla dile çevirebilmek için bu uygulamayı yükseltin; şablon dosyasını, desteklenen hedef dillerin açılır listesini içerecek şekilde değiştirin.

Daha fazla bilgi

Google App Engine

Google Cloud Functions

Google Cloud Run

Google Cloud Buildpacks, Container Registry, Artifact Registry

Google Cloud Translation ve Google ML Kit

Diğer Google Cloud ürünleri/sayfaları

Python ve Flask

Lisans

Bu eğitim, Creative Commons Attribution 2.0 Genel Lisansı ile, kod deposundaki kaynak kodu ise Apache 2 ile lisanslanmıştır.