Bu bölümde uygulamaya Uluslararasılaştırma (Internationalization — I18n) ve Yerelleştirme (Localization — L10n) desteği ekleniyor. Flask-Babel eklentisi kullanılarak uygulama metinleri birden fazla dile çevrilecek, tarih/saat biçimlendirmesi yerelleştirilecek ve özel flask translate CLI komutları oluşturulacak.
(venv) $ pip install flask-babel
config.py — Desteklenen Diller Listesiclass Config:
# ...
LANGUAGES = ['en', 'es']
app/__init__.py — Flask-Babel Başlatmafrom flask import request
from flask_babel import Babel
def get_locale():
return request.accept_languages.best_match(app.config['LANGUAGES'])
app = Flask(__name__)
# ...
babel = Babel(app, locale_selector=get_locale)
request.accept_languages — tarayıcının Accept-Language başlığını okur. Kullanıcının tarayıcı/işletim sistemi dil tercihleri burada belirlenir.best_match() — kullanıcının tercih listesiyle uygulamanın desteklediği dilleri karşılaştırarak en uygun dili seçer.locale_selector argümanı — her istek için hangi dilin kullanılacağını belirleyen fonksiyon.Örnek bir Accept-Language başlığı:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
Çevrilmesi gereken metinler _() fonksiyonuyla sarılır.