From a7f9bfd1613d2662ac090e2b7c421420fd1f16fe Mon Sep 17 00:00:00 2001 From: Semyon Yekhmenin Date: Tue, 12 Nov 2019 13:10:12 +0000 Subject: [PATCH] Feature/news search translation fix --- apps/search_indexes/utils.py | 221 ++++++++++++++++++++++++++++++++++- 1 file changed, 218 insertions(+), 3 deletions(-) diff --git a/apps/search_indexes/utils.py b/apps/search_indexes/utils.py index d6153da2..c91b9e4a 100644 --- a/apps/search_indexes/utils.py +++ b/apps/search_indexes/utils.py @@ -2,13 +2,226 @@ from django_elasticsearch_dsl import fields from utils.models import get_current_locale, get_default_locale +ALL_LOCALES_LIST = [ + 'af-ZA', + 'am-ET', + 'ar-AE', + 'ar-BH', + 'ar-DZ', + 'ar-EG', + 'ar-IQ', + 'ar-JO', + 'ar-KW', + 'ar-LB', + 'ar-LY', + 'ar-MA', + 'arn-CL', + 'ar-OM', + 'ar-QA', + 'ar-SA', + 'ar-SY', + 'ar-TN', + 'ar-YE', + 'as-IN', + 'az-Cyrl-AZ', + 'az-Latn-AZ', + 'ba-RU', + 'be-BY', + 'bg-BG', + 'bn-BD', + 'bn-IN', + 'bo-CN', + 'br-FR', + 'bs-Cyrl-BA', + 'bs-Latn-BA', + 'ca-ES', + 'co-FR', + 'cs-CZ', + 'cy-GB', + 'da-DK', + 'de-AT', + 'de-CH', + 'de-DE', + 'de-LI', + 'de-LU', + 'dsb-DE', + 'dv-MV', + 'el-GR', + 'en-029', + 'en-AU', + 'en-BZ', + 'en-CA', + 'en-GB', + 'en-IE', + 'en-IN', + 'en-JM', + 'en-MY', + 'en-NZ', + 'en-PH', + 'en-SG', + 'en-TT', + 'en-US', + 'en-ZA', + 'en-ZW', + 'es-AR', + 'es-BO', + 'es-CL', + 'es-CO', + 'es-CR', + 'es-DO', + 'es-EC', + 'es-ES', + 'es-GT', + 'es-HN', + 'es-MX', + 'es-NI', + 'es-PA', + 'es-PE', + 'es-PR', + 'es-PY', + 'es-SV', + 'es-US', + 'es-UY', + 'es-VE', + 'et-EE', + 'eu-ES', + 'fa-IR', + 'fi-FI', + 'fil-PH', + 'fo-FO', + 'fr-BE', + 'fr-CA', + 'fr-CH', + 'fr-FR', + 'fr-LU', + 'fr-MC', + 'fy-NL', + 'ga-IE', + 'gd-GB', + 'gl-ES', + 'gsw-FR', + 'gu-IN', + 'ha-Latn-NG', + 'he-IL', + 'hi-IN', + 'hr-BA', + 'hr-HR', + 'hsb-DE', + 'hu-HU', + 'hy-AM', + 'id-ID', + 'ig-NG', + 'ii-CN', + 'is-IS', + 'it-CH', + 'it-IT', + 'iu-Cans-CA', + 'iu-Latn-CA', + 'ja-JP', + 'ka-GE', + 'kk-KZ', + 'kl-GL', + 'km-KH', + 'kn-IN', + 'kok-IN', + 'ko-KR', + 'ky-KG', + 'lb-LU', + 'lo-LA', + 'lt-LT', + 'lv-LV', + 'mi-NZ', + 'mk-MK', + 'ml-IN', + 'mn-MN', + 'mn-Mong-CN', + 'moh-CA', + 'mr-IN', + 'ms-BN', + 'ms-MY', + 'mt-MT', + 'nb-NO', + 'ne-NP', + 'nl-BE', + 'nl-NL', + 'nn-NO', + 'nso-ZA', + 'oc-FR', + 'or-IN', + 'pa-IN', + 'pl-PL', + 'prs-AF', + 'ps-AF', + 'pt-BR', + 'pt-PT', + 'qut-GT', + 'quz-BO', + 'quz-EC', + 'quz-PE', + 'rm-CH', + 'ro-RO', + 'ru-RU', + 'rw-RW', + 'sah-RU', + 'sa-IN', + 'se-FI', + 'se-NO', + 'se-SE', + 'si-LK', + 'sk-SK', + 'sl-SI', + 'sma-NO', + 'sma-SE', + 'smj-NO', + 'smj-SE', + 'smn-FI', + 'sms-FI', + 'sq-AL', + 'sr-Cyrl-BA', + 'sr-Cyrl-CS', + 'sr-Cyrl-ME', + 'sr-Cyrl-RS', + 'sr-Latn-BA', + 'sr-Latn-CS', + 'sr-Latn-ME', + 'sr-Latn-RS', + 'sv-FI', + 'sv-SE', + 'sw-KE', + 'syr-SY', + 'ta-IN', + 'te-IN', + 'tg-Cyrl-TJ', + 'th-TH', + 'tk-TM', + 'tn-ZA', + 'tr-TR', + 'tt-RU', + 'tzm-Latn-DZ', + 'ug-CN', + 'uk-UA', + 'ur-PK', + 'uz-Cyrl-UZ', + 'uz-Latn-UZ', + 'vi-VN', + 'wo-SN', + 'xh-ZA', + 'yo-NG', + 'zh-CN', + 'zh-HK', + 'zh-MO', + 'zh-SG', + 'zh-TW', + 'zu-ZA', +] # object field properties -OBJECT_FIELD_PROPERTIES = { +OBJECT_FIELD_PROPERTIES = {locale: fields.TextField() for locale in ALL_LOCALES_LIST} +OBJECT_FIELD_PROPERTIES.update({ 'en-GB': fields.TextField(analyzer='english'), 'ru-RU': fields.TextField(analyzer='russian'), - 'fr-FR': fields.TextField(analyzer='french'), -} + 'fr-FR': fields.TextField(analyzer='french') +}) # todo: refactor serializer @@ -23,4 +236,6 @@ def get_translated_value(value): # fallback if value is None: value = field_dict.get(get_default_locale()) + if value is None: + value = field_dict.get(next(iter(field_dict.keys()), None)) return value