трясогузка search_backend многоязычный
В документации по трясогузке говорится, что поиск PostgreSQL - хорошая альтернатива для относительно небольших сайтов. В документации показано, как настроить серверную часть поиска.
WAGTAILSEARCH_BACKENDS = {
'default': {
'BACKEND': 'wagtail.contrib.postgres_search.backend',
'SEARCH_CONFIG': 'english',
}
}
Однако веб-сайт, который я создаю, имеет более одного языка. Как мне настроить другие языки в WAGTAILSEARCH_BACKEND?
Возможен ли "SEARCH_CONFIG": ["английский", "голландский"]? Документы об этом ничего не говорят.
2 ответа
Ответ на старый вопрос, но, возможно, кто-то сочтет это полезным, поскольку я только что столкнулся с необходимостью в этом.
После настройки по умолчанию (оставьте как запасной вариант) создайте конфигурацию серверной части для каждого языка, используя код языка.
WAGTAILSEARCH_BACKENDS = {
'default': {
'BACKEND': 'wagtail.contrib.postgres_search.backend',
'SEARCH_CONFIG': 'english',
},
'en': {
'BACKEND': 'wagtail.contrib.postgres_search.backend',
'SEARCH_CONFIG': 'english',
},
'nl': {
'BACKEND': 'wagtail.contrib.postgres_search.backend',
'SEARCH_CONFIG': 'dutch',
},
}
Теперь вы можете получить серверную часть для текущего языка из
s = get_search_backend(backend=Locale.get_active().language_code)
Это языки по умолчанию в POSTGRES
$ psql -c "\dF"
Схема | Имя | Описание ------------ + ------------ + ----------------------- ---------------- pg_catalog | датский | конфигурация для датского языка pg_catalog | голландский | конфигурация для голландского языка pg_catalog | английский | конфигурация для английского языка pg_catalog | финский | конфигурация для финского языка pg_catalog | французский | конфигурация для французского языка pg_catalog | немецкий | конфигурация для немецкого языка pg_catalog | венгерский | конфигурация для венгерского языка pg_catalog | итальянский | конфигурация для итальянского языка pg_catalog | норвежский | конфигурация для норвежского языка pg_catalog | португальский | конфигурация для португальского языка pg_catalog | румынский | конфигурация для румынского языка pg_catalog | русский | конфигурация для русского языка pg_catalog | простой | простая конфигурация pg_catalog | испанский язык| конфигурация для испанского языка pg_catalog | шведский | конфигурация для шведского языка pg_catalog | турецкий | конфигурация для турецкого языка
Думаю, я нашел как. Было бы неплохо, если бы это подтвердилось. У трясогузки это из wagtail.search.backends import get_search_backend
Если вы посмотрите на исходный код, вы увидите, что вы можете определить бэкэнд при вызове этой функции.
s = get_search_backend(backend= по умолчанию)
Таким образом, вы можете переключать серверную часть на лету, сначала вызвав эту функцию, и переключиться на другую серверную часть в зависимости от языка.
Трясогузка такая классная!