Колба-Бабель конвертировать Колба-WTF SelectField - PullRequest
0 голосов
/ 01 октября 2019

Я хочу преобразовать Flask-WTF SelectField со значением Flask-Babel .

Вот фрагмент моего кода:

from flask_babel import _, lazy_gettext as _l

class PaymentStatus(enum.Enum):
    REJECTED = 'REJECTED'
    COMPLETED = 'COMPLETED'
    EXPIRED = 'EXPIRED'

    def __str__(self):
        return self.value

payment_status = [(str(y), y) for y in (PaymentStatus)]

def course_list():
    return Course.query.all()

class PaymentForm(FlaskForm):
    course_name = QuerySelectField(_l('Course name'), validators=[required()], query_factory=course_list)
    status_of_payment = SelectField(_l('Payment Status'), choices=payment_status)
    # ...
    # ...

Там я хочу локализовать значение SelectField choices и значение QuerySelectField query_factory с помощью Flask-Babel .

Возможно ли это? .., если да, то любой пример илиСсылка учебник будет оценен:)

1 Ответ

2 голосов
/ 01 октября 2019

SelectField choices может обрабатываться lazy_gettext().

Цитата из мега-учебника Flask, Часть XIII: I18n и L10n

Некоторым строковым литералам присваивается вне запроса , обычно при запуске приложения, поэтому во время оценки этих текстов невозможно узнать, какой язык использовать.

Flask-Babel предоставляет ленивую ознакомительную версию _(), которая называется lazy_gettext().

from flask_babel import lazy_gettext as _l

class LoginForm(FlaskForm):
    username = StringField(_l('Username'), validators=[DataRequired()])
    # ...

Для choices

from flask_babel import _, lazy_gettext as _l

class PaymentStatus(enum.Enum):
    REJECTED = _l('REJECTED')
    COMPLETED = _l('COMPLETED')
    EXPIRED = _l('EXPIRED')

    def __str__(self):
        return self.value

QuerySelectField query_factoryпринимает значения , запрашиваемые из базы данных . Эти значения не должны обрабатываться Flask-Babel / babel. Причина: база данных хранит данные вне исходного кода Python.

Возможные решения:

BTW, Мега-учебник Flask сделано Мигелем Гринбергом - очень известное учебное пособие по настойке. Все эти ситуации включены в него.

...