Giriş


Bu bölümde blog gönderilerini gerçek zamanlı olarak çeviren bir özellik ekleniyor. Özellik hem sunucu hem de istemci taraflı bileşenler içeriyor: Microsoft Translator API, langdetect ile dil tespiti ve Ajax (asenkron JavaScript istekleri) kullanılıyor.


Sunucu Taraflı vs. İstemci Taraflı

Geleneksel sunucu taraflı modelde her eylem tam sayfa yenilenmesine neden olur. Ajax modelinde ise tarayıcı sayfayı yenilemeden arka planda sunucuya HTTP istekleri gönderir ve gelen yanıtla sayfanın yalnızca ilgili kısmını günceller. Bu bölümde, çeviri özelliği sayfa yenilenmeden dinamik olarak uygulanacak.


Dil Tespiti

Kurulum

(venv) $ pip install langdetect
(venv) $ pip install requests

app/models.py — Post Modeline language Alanı Ekle

class Post(db.Model):
    # ...
    language: so.Mapped[Optional[str]] = so.mapped_column(sa.String(5))

Migrasyon Oluştur ve Uygula

(venv) $ flask db migrate -m "add language to posts"
(venv) $ flask db upgrade

app/routes.py — Gönderi Oluşturulurken Dili Tespit Et ve Kaydet

from langdetect import detect, LangDetectException

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
@login_required
def index():
    form = PostForm()
    if form.validate_on_submit():
        try:
            language = detect(form.post.data)
        except LangDetectException:
            language = ''
        post = Post(body=form.post.data, author=current_user,
                    language=language)
        # ...

"Çevir" Bağlantısı Gösterme