Wdróż podstawową wersję Tłumacza Google aplikacja w Pythonie 2 App Engine

1. Omówienie

Ta seria ćwiczeń z programowania (do samodzielnego ukończenia, praktycznych samouczków) ma pomóc deweloperom zapoznać się z różnymi opcjami dostępnymi podczas wdrażania aplikacji. Z tego ćwiczenia w Codelabs dowiesz się, jak używać interfejsu Google Cloud Translation API w Pythonie i uruchamiać go lokalnie lub wdrażać w bezserwerowej platformie obliczeniowej Cloud (App Engine, Cloud Functions lub Cloud Run). Przykładowa aplikację znajdującą się w repozytorium tego samouczka można wdrożyć (co najmniej) 8 różnych sposobów, wprowadzając tylko niewielkie zmiany w konfiguracji:

  1. Lokalny serwer Flask (Python 2)
  2. Lokalny serwer Flask (Python 3)
  3. App Engine (Python 2)
  4. App Engine (Python 3)
  5. Cloud Functions (Python 3)
  6. Cloud Run (Python 2 za pomocą Dockera)
  7. Cloud Run (Python 3 za pomocą Dockera)
  8. Cloud Run (Python 3 przez Cloud Buildpacks)

To ćwiczenie w Codelabs koncentruje się na wdrażaniu tej aplikacji na pogrubionych platformach.

Dowiesz się,

Czego potrzebujesz

  • projekt Google Cloud z aktywnym kontem rozliczeniowym Cloud.
  • Zainstalowana kolba do uruchomienia lokalnie lub bezserwerowa platforma obliczeniowa w chmurze z obsługą wdrożeń w chmurze
  • Podstawowe umiejętności w języku Python
  • praktyczną znajomość podstawowych poleceń systemu operacyjnego;

Ankieta

Jak wykorzystasz ten samouczek?

Przeczytaj go i wykonaj ćwiczenia Tylko do odczytu

Jak oceniasz swoje doświadczenia z językiem Python?

Początkujący Poziom średnio zaawansowany Biegły

Jak oceniasz korzystanie z usług Google Cloud?

Początkujący Poziom średnio zaawansowany Biegły
.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się PROJECT_ID), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy projekt lub wypróbuj swój własny identyfikator i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu.
  • Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

3. Włącz Translation API

W naszej przykładowej aplikacji włączysz interfejsy Cloud Translation API i App Engine, korzystając z podobnych instrukcji poniżej.

Włączanie interfejsów Cloud APIs

Wprowadzenie

Niezależnie od tego, którego interfejsu API Google chcesz używać w aplikacji, muszą one być włączone. Przykład poniżej przedstawia 2 sposoby włączania interfejsu Cloud Vision API. Gdy nauczysz się, jak włączyć jeden interfejs Cloud API, możesz włączyć kolejne, ponieważ proces jest podobny.

Opcja 1. Z Cloud Shell lub interfejsu wiersza poleceń

Chociaż włączanie interfejsów API z poziomu konsoli Cloud jest bardziej powszechne, niektórzy deweloperzy wolą robić wszystko z poziomu wiersza poleceń. Aby to zrobić, musisz wyszukać „nazwę usługi” interfejsu API. To wygląda na adres URL: SERVICE_NAME.googleapis.com. Znajdziesz je na wykresie obsługiwanych usług. Możesz też automatycznie wysyłać zapytania na ich temat za pomocą interfejsu Google Discovery API.

Dzięki tym informacjom za pomocą Cloud Shell (lub lokalnego środowiska programistycznego z zainstalowanym narzędziem wiersza poleceń gcloud) możesz włączyć interfejs API w ten sposób:

gcloud services enable SERVICE_NAME.googleapis.com

Na przykład to polecenie włącza Cloud Vision API:

gcloud services enable vision.googleapis.com

To polecenie włącza App Engine:

gcloud services enable appengine.googleapis.com

Możesz też włączyć wiele interfejsów API w jednym żądaniu. Na przykład ten wiersz poleceń włącza Cloud Run, Cloud Artifact Registry i Cloud Translation API:

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

Opcja 2. W konsoli Google Cloud

Możesz też włączyć Vision API w menedżerze interfejsów API. W konsoli Google Cloud otwórz Menedżera interfejsów API i wybierz Bibliotekę.

fb0f1d315f122d4a.png

Jeśli chcesz włączyć Cloud Vision API, zacznij wpisywać „vision” na pasku wyszukiwania. Pojawią się wszystkie informacje, które pasują do wpisanego do tej pory tekstu:

2275786a24f8f204.png

Wybierz interfejs API, który chcesz włączyć, i kliknij Włącz:

2556f923b628e31.png

Koszt

Wielu interfejsów API Google można używać bez opłat, jednak korzystanie z usług Google Cloud oraz Interfejsy API nie są bezpłatne. Podczas włączania Cloud APIs może pojawić się prośba o podanie aktywnego konta rozliczeniowego. Warto jednak zauważyć, że niektóre usługi Google Cloud mają atrybut „Zawsze bezpłatne”, poziom (dzienny/miesięczny), który musisz przekroczyć, aby naliczać opłaty. W przeciwnym razie Twoja karta kredytowa (lub określony instrument płatniczy) nie zostanie obciążona.

Przed włączeniem interfejsu API użytkownicy powinni zapoznać się z informacjami o cenach dowolnego interfejsu API, zwłaszcza zwracając uwagę na to, czy jest on w wersji bezpłatnej, a jeśli tak, to co to za interfejs. W przypadku włączania Cloud Vision API sprawdź stronę z informacjami o jego cenach. Cloud Vision ma bezpłatny limit, więc dopóki nie przekroczysz jego limitów (w ciągu miesiąca), nie poniesiesz żadnych opłat.

Ceny i poziomy bezpłatne różnią się w zależności od interfejsów API Google. Przykłady:

Różne usługi Google są rozliczane w różny sposób, dlatego zapoznaj się z dokumentacją interfejsu API.

Podsumowanie

Wiesz już, jak włączyć interfejsy API Google. Otwórz Menedżera interfejsów API i włącz interfejs Cloud Translation API oraz usługę App Engine (jeśli jeszcze tego nie zrobiłeś), pierwszy, ponieważ będzie z niego korzystać nasza aplikacja, a drugi – wdrażasz aplikację App Engine. Jeśli wolisz zrobić to z poziomu wiersza poleceń, uruchom to polecenie:

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

Miesięczny limit nie jest wymieniony w ogólnym ustawieniu „Zawsze bezpłatne” strony podsumowania poziomu, na stronie z cennikiem interfejsu Translation API znajdziesz informację, że wszyscy użytkownicy otrzymują co miesiąc stałą liczbę przetłumaczonych znaków. Jeśli nie przekroczysz tego progu, interfejs API nie będzie ponosić żadnych opłat. Jeśli są jakieś inne opłaty związane z Google Cloud, zostaną one omówione na końcu w sekcji „Czyszczenie”. .

4. Pobieranie przykładowego kodu aplikacji

Skopiuj kod z repozytorium lokalnie lub w Cloud Shell (za pomocą polecenia git clone) albo pobierz plik ZIP z zielonego przycisku Kod, jak pokazano na tym zrzucie ekranu:

5cd6110c4414cf65.png

Teraz gdy masz już wszystko, utwórz pełną kopię folderu, aby wykonać ten konkretny samouczek, ponieważ prawdopodobnie będzie się wiązało z usunięciem lub zmianą plików. Jeśli chcesz przeprowadzić inne wdrożenie, możesz zacząć od nowa, kopiując oryginał, bez konieczności klonowania ani pobierania ponownie.

5. Prezentacja przykładowej aplikacji

Przykładowa aplikacja to prosta pochodna w Tłumaczu Google, która wyświetla użytkownikowi prośbę o wpisanie tekstu w języku angielskim i otrzymanie odpowiadającego mu tłumaczenia tego tekstu w języku hiszpańskim. Teraz otwórz plik main.py i sprawdźmy, jak to działa. Pomijając komentarze dotyczące licencjonowania, u góry i na dole strony wygląda tak:

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. Importowane są funkcje Flask, moduł google.auth i biblioteka klienta Cloud Translation API.
  2. Zmienne globalne reprezentują aplikację Flask, identyfikator projektu Cloud, klienta Translation API i nadrzędną „ścieżkę lokalizacji” dla wywołań interfejsu Translation API oraz języków źródłowych i docelowych. W tym przypadku są to angielskie (en) i hiszpański (es), ale możesz je też zmienić na inne kody języków obsługiwane przez Cloud Translation API.
  3. Duży blok if na dole jest używany w samouczku do uruchamiania tej aplikacji lokalnie – do udostępniania naszej aplikacji służy serwer programistyczny Flask. W tej sekcji znajdziesz też samouczki dotyczące wdrażania Cloud Run, które mogą się przydać, jeśli serwer WWW nie jest połączony z kontenerem. Pojawi się prośba o włączenie serwera w pakiecie w kontenerze, ale jeśli Ci się to nie uda, kod aplikacji wróci do korzystania z serwera programistycznego Flask. (Nie dotyczy to App Engine ani Cloud Functions, ponieważ te platformy bazują na źródłach, co oznacza, że Google Cloud zapewnia i uruchamia domyślny serwer WWW).

I ostatnio, w środku main.py, stanowi serce aplikacji, funkcja 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)

Funkcja podstawowa pobiera dane wejściowe użytkownika i wywołuje interfejs Translation API w celu wykonania najtrudniejszych zadań. Przyjrzyjmy się im:

  1. Sprawdź, czy żądania pochodzą z Cloud Functions za pomocą zmiennej local_request. Cloud Functions wysyła własny obiekt żądania Flask, a wszystkie pozostałe (uruchamiane lokalnie lub wdrażane w App Engine bądź Cloud Run) będą pobierać obiekt żądania bezpośrednio z platformy Flask.
  2. Zresetuj podstawowe zmienne formularza. Dotyczy to głównie żądań GET, ponieważ żądania POST zawierają dane, które je zastępują.
  3. W przypadku metody POST skopiuj tekst do przetłumaczenia i utwórz strukturę JSON reprezentującą wymagania dotyczące metadanych interfejsu API. Następnie wywołaj interfejs API i wróć do jego poprzedniej wersji, jeśli użytkownik korzysta ze starszej biblioteki.
  4. Niezależnie od tego formatuj rzeczywiste wyniki (POST) lub brak danych (GET) w kontekście szablonu i wyrenderuj.

Wizualną część aplikacji znajduje się w pliku szablonu index.html. Wyświetlą się wszystkie przetłumaczone wcześniej wyniki (jeśli nie będą puste), a po nich pojawi się formularz z prośbą o tłumaczenie:

<!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. Instalowanie pakietów/zależności lokalnych (do lib)

Jak już wspomnieliśmy, przykładowa aplikacja korzysta z platformy mikrosieci Flask i biblioteki klienta Google Cloud Translation API na potrzeby Pythona. Zainstaluj i zaktualizuj pakiet pip oraz tę parę pakietów za pomocą tego polecenia pip (lub pip3):

pip install -t lib -r requirements.txt

Po uruchomieniu powyższego komentarza zobaczysz dane wyjściowe instalacji, które mogą wyglądać mniej więcej tak:

$ 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. Wdrażanie usługi

Aby wdrożyć usługę translacji w App Engine w języku Python 2, uruchom to polecenie:

gcloud app deploy

Dane wyjściowe powinny wyglądać tak:

$ 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

Twoja aplikacja jest teraz dostępna na całym świecie, więc powinno być możliwe uzyskanie do niej dostępu pod adresem URL (zawierającym identyfikator projektu) podanym w danych wyjściowych wdrożenia:

da28f951c33a2c3d.png

Przetłumacz coś, aby zobaczyć, jak działa.

d911984d15dd5ef9.png

8. Podsumowanie

Gratulacje! Wiesz już, jak włączyć interfejs Cloud Translation API, uzyskać niezbędne dane logowania i wdrożyć prostą aplikację internetową w języku Python 2 App Engine. Więcej informacji na temat tego wdrożenia znajdziesz w tej tabeli w repozytorium.

Czyszczenie danych

Interfejs Cloud Translation API umożliwia bezpłatne wykonywanie określonej liczby przetłumaczonych znaków miesięcznie. App Engine ma też bezpłatny limit, tak samo jak w Cloud Functions i Cloud Run. W przypadku przekroczenia którejś z tych wartości zostaną naliczone opłaty. Jeśli zamierzasz przejść do kolejnego ćwiczenia z programowania, nie musisz zamykać aplikacji.

Jeśli jednak nie chcesz na razie przejść do następnego samouczka lub obawiasz się, że internet wykryje właśnie wdrożoną aplikację, wyłącz aplikację App Engine, usuń funkcję w Cloud Functions lub wyłącz usługę Cloud Run. W ten sposób unikniesz naliczania opłat. Gdy uznasz, że chcesz przejść do kolejnego ćwiczenia w programowaniu, możesz je ponownie włączyć. Jeśli natomiast nie zamierzasz dalej korzystać z tej aplikacji lub innych ćwiczeń z programowania i chcesz całkowicie usunąć wszystko, możesz zamknąć swój projekt.

Poza tym wdrożenie na bezserwerowej platformie obliczeniowej Google Cloud wiąże się z niewielkimi kosztami kompilacji i pamięci masowej. Cloud Build ma własny bezpłatny limit, podobnie jak Cloud Storage. Aby zwiększyć przejrzystość, Cloud Build kompiluje obraz aplikacji, który jest następnie przechowywany w Cloud Container Registry lub Artifact Registry, jego następcy. Pamięć tego obrazu wykorzystuje część tego limitu, podobnie jak ruch wychodzący z sieci podczas przesyłania tego obrazu do usługi. Możesz jednak mieszkać w regionie, w którym nie ma takiego poziomu bezpłatnego. Dlatego pamiętaj o wykorzystaniu miejsca na dane, aby zminimalizować potencjalne koszty.

9. Dodatkowe materiały

W kolejnych sekcjach znajdziesz dodatkowe materiały do czytania, a także zalecane ćwiczenia, które pozwolą Ci poszerzyć wiedzę zdobytą w ramach tego samouczka.

Dodatkowe badanie

Teraz, gdy masz już doświadczenie w korzystaniu z interfejsu Translation API, wykonaj kilka dodatkowych ćwiczeń, aby rozwinąć swoje umiejętności. Aby kontynuować ścieżkę szkoleniową, zmodyfikuj naszą przykładową aplikację, by:

  1. Wykonaj wszystkie pozostałe wersje tego ćwiczenia z programowania, aby uruchomić go lokalnie lub wdrożyć na bezserwerowych platformach obliczeniowych Google Cloud (patrz plik README repozytorium).
  2. Ukończ ten samouczek, używając innego języka programowania.
  3. Zmień tę aplikację, aby obsługiwała różne języki źródłowe lub docelowe.
  4. Uaktualnij tę aplikację, aby móc tłumaczyć tekst na więcej niż jeden język. zmienić plik szablonu, tak by zawierał menu z obsługiwanymi językami docelowymi.

Więcej informacji

Google App Engine

Google Cloud Functions

Google Cloud Run,

Google Cloud Buildpacks, Container Registry, Artifact Registry

Google Cloud Translation i Google ML Kit

Inne strony lub usługi Google Cloud

Python i Flask

Licencja

Ten samouczek jest dostępny na licencji Creative Commons Uznanie autorstwa 2.0, a kod źródłowy w repozytorium jest na licencji Apache 2.