fix: translate_weather() проверяет точное совпадение перед substring

Точное совпадение (case-insensitive) теперь имеет приоритет над
substring-matching, что исключает ложные совпадения вида
'Heavy rain' внутри 'Heavy rain shower'.
This commit is contained in:
deadzilla 2026-07-14 22:03:18 +05:00
parent 0c6e10a482
commit 3bea7abaea

View File

@ -174,10 +174,19 @@ _WEATHER_MAPPING = [
def translate_weather(en: Optional[str]) -> str: def translate_weather(en: Optional[str]) -> str:
if not en or not en.strip(): if not en or not en.strip():
return "" return ""
en_lower = en.strip().lower() en_stripped = en.strip()
en_lower = en_stripped.lower()
# Сначала проверяем точное совпадение (приоритет над substring)
for key, value in _WEATHER_MAPPING:
if key.lower() == en_lower:
return value
# Fallback: substring-matching (отсортировано по убыванию длины ключа)
for key, value in _WEATHER_MAPPING: for key, value in _WEATHER_MAPPING:
if key.lower() in en_lower: if key.lower() in en_lower:
return value return value
return en return en