Update model translations

This commit is contained in:
qananasikq
2026-07-01 14:35:49 +03:00
commit 3904cd003e
53 changed files with 7629 additions and 0 deletions

View File

@@ -0,0 +1,997 @@
# Словари переводов корейского текста русский / английский.
# Используется в encar.py для маппинга данных Encar API.
#
# Эталон переводов брендов и моделей — словарь партнёра
# (`partner_dictionary.py`). Он подмешивается ниже как база: значения оттуда
# имеют приоритет для брендов и моделей, а специфичные для проекта записи
# (корейские модели Hyundai/Kia/Genesis и т.п., которых нет у партнёра)
# сохраняются как дополнение.
import re
from .partner_dictionary import ENCAR_KO_EN_TABLES as _PARTNER_TABLES
# Топливо
FUEL_TYPE_MAP = {
"가솔린": "Gasoline",
"gasoline": "Gasoline",
"디젤": "Diesel",
"경유": "Diesel",
"diesel": "Diesel",
"전기": "Electric",
"전기차": "Electric",
"electric": "Electric",
"하이브리드": "Hybrid",
"hybrid": "Hybrid",
"가솔린 하이브리드": "Gasoline Hybrid",
"플러그인 하이브리드": "Plug-in Hybrid",
"lpg": "LPG",
"LPG": "LPG",
"LPG(일반인 구입)": "LPG",
"LPG(장애인 구입)": "LPG",
"LNG": "LNG",
"수소": "Hydrogen",
"가솔린+전기": "Gasoline + Electric",
"가솔린 + 전기": "Gasoline + Electric",
"디젤+전기": "Hybrid",
"CNG": "CNG",
}
# КПП
GEARBOX_MAP_KO = {
"오토": "AT",
"자동": "AT",
"자동변속": "AT",
"수동": "MT",
"세미오토": "AT",
"cvt": "CVT",
"CVT": "CVT",
"듀얼클러치": "AT",
}
# Тип продажи
SELL_TYPE_MAP = {
"일반": "STOCK",
"경매": "AUCTION",
"입찰": "TENDER",
"리스": "STOCK",
"렌트": "STOCK",
"할부": "STOCK",
}
# Город → страна
CITY_TO_COUNTRY = {
"서울": "KR", "경기": "KR", "인천": "KR", "부산": "KR", "대구": "KR",
"광주": "KR", "대전": "KR", "울산": "KR", "세종": "KR", "강원": "KR",
"충북": "KR", "충남": "KR", "전북": "KR", "전남": "KR", "경북": "KR",
"경남": "KR", "제주": "KR",
}
# Бренды: корейский → английский
BRAND_TRANSLATIONS = {
"현대": "Hyundai",
"기아": "Kia",
"쉐보레(GM대우)": "Chevrolet",
"벤츠": "Mercedes-Benz",
"메르세데스-벤츠": "Mercedes-Benz",
"메르세데스 벤츠": "Mercedes-Benz",
"메르세데스-AMG": "Mercedes-AMG",
"메르세데스 AMG": "Mercedes-AMG",
"AMG": "AMG",
"BMW": "BMW",
"아우디": "Audi",
"폭스바겐": "Volkswagen",
"토요타": "Toyota",
"도요타": "Toyota",
"닛산": "Nissan",
"혼다": "Honda",
"포르쉐": "Porsche",
"랜드로버": "Land Rover",
"재규어": "Jaguar",
"볼보": "Volvo",
"푸조": "Peugeot",
"시트로엥": "Citroen",
"르노": "Renault",
"미니": "MINI",
"링컨": "Lincoln",
"캐딜락": "Cadillac",
"크라이슬러": "Chrysler",
"지프": "Jeep",
"포드": "Ford",
"테슬라": "Tesla",
"폴크스바겐": "Volkswagen",
"스코다": "Skoda",
"세아트": "SEAT",
"오펠": "Opel",
"피아트": "Fiat",
"알파로메오": "Alfa Romeo",
"마세라티": "Maserati",
"람보르기니": "Lamborghini",
"페라리": "Ferrari",
"벤틀리": "Bentley",
"롤스로이스": "Rolls-Royce",
"애스턴마틴": "Aston Martin",
"애스톤마틴": "Aston Martin",
"맥라렌": "McLaren",
"부가티": "Bugatti",
"코닉세그": "Koenigsegg",
"파가니": "Pagani",
"헤네시": "Hennessey",
"쉘비": "Shelby",
"다임러": "Daimler",
"마이바흐": "Maybach",
"스마트": "Smart",
"DS": "DS",
"렉서스": "Lexus",
"인피니티": "Infiniti",
"아큐라": "Acura",
"스바루": "Subaru",
"미쓰비시": "Mitsubishi",
"마쓰다": "Mazda",
"이스즈": "Isuzu",
"다이하츠": "Daihatsu",
"스즈키": "Suzuki",
"KG모빌리티(쌍용)": "KG Mobility",
"KG모빌리티": "KG Mobility",
"르노코리아(삼성)": "Renault Korea",
"한국GM": "GM Korea",
"쌍용": "SsangYong",
"대우": "Daewoo",
"제네시스": "Genesis",
"르노삼성": "Renault Samsung",
"로터스": "Lotus",
"리비안": "Rivian",
"루시드": "Lucid",
"리막": "Rimac",
"알파 로메오": "Alfa Romeo",
"마쯔다": "Mazda",
"어큐라": "Acura",
"다이하쯔": "Daihatsu",
# --- Новые бренды (с сайта Encar) ---
"쉐보레": "Chevrolet",
"시트로엥/DS": "Citroen/DS",
"미쯔비시": "Mitsubishi",
"미쯔오까": "Mitsuoka",
"동풍소콘": "Dongfeng Sokon",
"북기은상": "BAIC",
"신위안": "Skywell",
"이네오스": "Ineos",
"지리": "Geely",
"홍치": "Hongqi",
"BYD": "BYD",
"머큐리": "Mercury",
"사이언": "Scion",
"뷰익": "Buick",
"새턴": "Saturn",
"올즈모빌": "Oldsmobile",
"폰티악": "Pontiac",
"포톤": "Foton",
"MG로버": "MG Rover",
"닷지": "Dodge",
"": "Ram",
"험머": "Hummer",
"폴스타": "Polestar",
"사브": "Saab",
"기타 제조사": "Other",
"기타 수입차": "Other Imported",
}
# Подмешиваем бренды из эталонного словаря партнёра как базу. Существующие
# записи проекта имеют приоритет (не перезаписываются), новые из словаря
# партнёра добавляются.
for _ko, _en in _PARTNER_TABLES["makers"].items():
BRAND_TRANSLATIONS.setdefault(_ko, _en)
# Бренды: английский → алиасы (корейский + русский)
BRAND_ENGLISH_ALIASES: dict[str, list[str]] = {
"hyundai": ["현대", "Хёндэ"],
"kia": ["기아", "Киа"],
"genesis": ["제네시스", "Генезис"],
"chevrolet": ["쉐보레(GM대우)", "쉐보레", "Шевроле"],
"mercedes": ["벤츠", "Мерседес-Бенц"],
"mercedes-benz": ["벤츠", "Мерседес-Бенц"],
"bmw": ["BMW"],
"audi": ["아우디", "Ауди"],
"volkswagen": ["폭스바겐", "폴크스바겐", "Фольксваген"],
"toyota": ["토요타", "도요타", "Тойота"],
"nissan": ["닛산", "Ниссан"],
"honda": ["혼다", "Хонда"],
"porsche": ["포르쉐", "Порше"],
"land rover": ["랜드로버", "Ленд Ровер"],
"jaguar": ["재규어", "Ягуар"],
"volvo": ["볼보", "Вольво"],
"peugeot": ["푸조", "Пежо"],
"citroen": ["시트로엥", "Ситроен", "시트로엥/DS", "Ситроен/DS"],
"renault": ["르노", "Рено"],
"mini": ["미니", "Мини"],
"lincoln": ["링컨", "Линкольн"],
"cadillac": ["캐딜락", "Кадиллак"],
"chrysler": ["크라이슬러", "Крайслер"],
"jeep": ["지프", "Джип"],
"ford": ["포드", "Форд"],
"tesla": ["테슬라", "Тесла"],
"lexus": ["렉서스", "Лексус"],
"infiniti": ["인피니티", "Инфинити"],
"acura": ["아큐라", "어큐라", "Акура"],
"subaru": ["스바루", "Субару"],
"mitsubishi": ["미쓰비시", "미쯔비시", "Мицубиси"],
"mazda": ["마쓰다", "마쯔다", "Мазда"],
"suzuki": ["스즈키", "Сузуки"],
"ferrari": ["페라리", "Феррари"],
"lamborghini": ["람보르기니", "Ламборгини"],
"maserati": ["마세라티", "Мазерати"],
"bentley": ["벤틀리", "Бентли"],
"rolls-royce": ["롤스로이스", "Роллс-Ройс"],
"aston martin": ["애스턴마틴", "Астон Мартин"],
"mclaren": ["맥라렌", "Макларен"],
"ssangyong": ["쌍용", "СсангЙонг", "KG모빌리티(쌍용)", "KG Mobility"],
"kg mobility": ["KG모빌리티(쌍용)", "KG Mobility", "쌍용", "СсангЙонг"],
"daewoo": ["대우", "Дэу"],
"dodge": ["닷지", "Додж"],
"hummer": ["험머", "Хаммер"],
"gmc": ["GMC"],
"polestar": ["폴스타", "Полстар"],
"ds": ["DS", "시트로엥/DS", "Ситроен/DS"],
"renault korea": ["르노코리아(삼성)", "Рено Корея", "르노삼성", "Рено Самсунг"],
"saab": ["사브", "Сааб"],
"lotus": ["로터스", "Лотус"],
"alfa romeo": ["알파로메오", "Альфа Ромео", "알파 로메오"],
"fiat": ["피아트", "Фиат"],
"smart": ["스마트", "Смарт"],
"skoda": ["스코다", "Шкода"],
"daihatsu": ["다이하츠", "다이하쯔", "Дайхатсу"],
"koenigsegg": ["코닉세그", "Кёнигсегг"],
"pagani": ["파가니", "Пагани"],
"bugatti": ["부가티", "Бугатти"],
"maybach": ["마이바흐", "Майбах"],
"rivian": ["리비안", "Ривиан"],
"lucid": ["루시드", "Люсид"],
"rimac": ["리막", "Римак"],
"byd": ["BYD"],
"geely": ["지리", "Джили"],
"dongfeng": ["동풍소콘", "Донгфенг Сокон"],
"baic": ["북기은상", "BAIC"],
"skywell": ["신위안", "Skywell"],
"ineos": ["이네오스", "Инеос"],
"mercury": ["머큐리", "Меркурий"],
"scion": ["사이언", "Scion"],
"buick": ["뷰익", "Бьюик"],
"saturn": ["새턴", "Saturn"],
"oldsmobile": ["올즈모빌", "Oldsmobile"],
"pontiac": ["폰티악", "Понтиак"],
"foton": ["포톤", "Foton"],
"mg rover": ["MG로버", "MG Rover"],
"mitsuoka": ["미쯔오까", "Мицуока"],
"other": ["기타 제조사", "기타 수입차", "Другие", "Другие импортные"],
}
def expand_allowed_brands(brands: set[str] | None) -> set[str] | None:
"""Расширяет набор английских брендов всеми известными alias'ами (корейский + русский)."""
if not brands:
return brands
expanded = set(brands)
for brand in brands:
aliases = BRAND_ENGLISH_ALIASES.get(brand.lower(), [])
for alias in aliases:
expanded.add(alias.lower())
return expanded
# Модели / комплектации: корейский → английский
# Точные переводы базовых названий моделей Encar. Этот словарь используется
# перед частичным переводом и не должен содержать общие слова вроде "뉴".
MODEL_EXACT_TRANSLATIONS = {
# BMW / Mercedes-Benz
"1시리즈": "1 Series",
"2시리즈": "2 Series",
"3시리즈": "3 Series",
"4시리즈": "4 Series",
"5시리즈": "5 Series",
"6시리즈": "6 Series",
"7시리즈": "7 Series",
"8시리즈": "8 Series",
"A-클래스": "A-Class",
"B-클래스": "B-Class",
"C-클래스": "C-Class",
"E-클래스": "E-Class",
"S-클래스": "S-Class",
"SL-클래스": "SL-Class",
"SLK-클래스": "SLK-Class",
"GLA-클래스": "GLA-Class",
"GLB-클래스": "GLB-Class",
"GLC-클래스": "GLC-Class",
"GLE-클래스": "GLE-Class",
"GLS-클래스": "GLS-Class",
"V-클래스": "V-Class",
# Hyundai / Kia / Genesis
"팰리세이드": "Palisade",
"싼타페": "Santa Fe",
"투싼": "Tucson",
"아반떼": "Avante",
"쏘나타": "Sonata",
"쏘나타 디 엣지": "Sonata The Edge",
"그랜저": "Grandeur",
"아이오닉5": "Ioniq 5",
"아이오닉6": "Ioniq 6",
"아이오닉": "Ioniq",
"넥쏘": "Nexo",
"벨로스터": "Veloster",
"코나": "Kona",
"캐스퍼": "Casper",
"베뉴": "Venue",
"스타렉스": "Starex",
"스타리아": "Staria",
"아슬란": "Aslan",
"베라크루즈": "Veracruz",
"카니발": "Carnival",
"쏘렌토": "Sorento",
"스포티지": "Sportage",
"에스컬레이드": "Escalade",
"프리미어": "Premier",
"1세대": "1st gen",
"2세대": "2nd gen",
"3세대": "3rd gen",
"4세대": "4th gen",
"5세대": "5th gen",
"6세대": "6th gen",
"7세대": "7th gen",
"8세대": "8th gen",
"모닝": "Morning",
"레이": "Ray",
"셀토스": "Seltos",
"니로": "Niro",
"스팅어": "Stinger",
"쏘울": "Soul",
"모하비": "Mohave",
"프라이드": "Pride",
"스토닉": "Stonic",
"카렌스": "Carens",
"제네시스": "Genesis",
# Chevrolet / Renault Korea / KG Mobility
"스파크": "Spark",
"말리부": "Malibu",
"트랙스": "Trax",
"크루즈": "Cruze",
"올란도": "Orlando",
"트레일블레이저": "Trailblazer",
"콜로라도": "Colorado",
"트래버스": "Traverse",
"캡티바": "Captiva",
"이쿼녹스": "Equinox",
"아베오": "Aveo",
"볼트": "Volt",
"임팔라": "Impala",
"맥스크루즈": "Max Cruz",
"렉스턴 스포츠 칸": "Rexton Sport Khan",
"렉스턴 스포츠": "Rexton Sport",
"렉스턴": "Rexton",
"토레스": "Torres",
"티볼리 에어": "Tivoli Air",
"티볼리 아머": "Tivoli Armor",
"티볼리": "Tivoli",
"코란도 투리스모": "Korando Turismo",
"코란도 스포츠": "Korando Sport",
"코란도": "Korando",
"체어맨": "Chairman",
"오피러스": "Opirus",
# Import models written in Korean
"익스플로러": "Explorer",
"머스탱": "Mustang",
"카이엔": "Cayenne",
"카이엔 쿠페": "Cayenne Coupe",
"파나메라": "Panamera",
"파나메라 스포츠 투리스모": "Panamera Sport Turismo",
"마칸": "Macan",
"타이칸": "Taycan",
"타이칸 크로스 투리스모": "Taycan Cross Turismo",
"918 스파이더": "918 Spyder",
"718 스파이더": "718 Spyder",
"4.0 스파이더": "4.0 Spyder",
"박스터": "Boxster",
"카이맨": "Cayman",
"911 카브리올레": "911 Cabriolet",
"카레라": "Carrera",
"티구안": "Tiguan",
"골프": "Golf",
"제타": "Jetta",
"투아렉": "Touareg",
"파사트": "Passat",
"아테온": "Arteon",
"쿠퍼": "Cooper",
"컨트리맨": "Countryman",
"클럽맨": "Clubman",
"디스커버리": "Discovery",
"레인지로버": "Range Rover",
"이보크": "Evoque",
"벨라": "Velar",
"디펜더": "Defender",
"랭글러": "Wrangler",
"체로키": "Cherokee",
"레니게이드": "Renegade",
"컴패스": "Compass",
"루비콘": "Rubicon",
"에비에이터": "Aviator",
"르반떼": "Levante",
"기블리": "Ghibli",
"어코드": "Accord",
"캠리": "Camry",
"프리우스": "Prius",
"타스만": "Tasman",
"토러스": "Taurus",
"카마로": "Camaro",
"비틀": "Beetle",
"e-트론": "e-tron",
"글래디에이터": "Gladiator",
"노틸러스": "Nautilus",
"시로코": "Scirocco",
"아틀라스": "Atlas",
"알파드": "Alphard",
"익스페디션": "Expedition",
"익스프레스Van": "Express Van",
"짐니": "Jimny",
"쿠가": "Kuga",
"클리오": "Clio",
"파일럿": "Pilot",
"콰트로포르테": "Quattroporte",
"고스트": "Ghost",
"팬텀": "Phantom",
"레이스": "Wraith",
"": "Dawn",
"컬리넌": "Cullinan",
"스펙터": "Spectre",
"벤테이가": "Bentayga",
"컨티넨탈 GT": "Continental GT",
"플라잉스퍼": "Flying Spur",
"우라칸": "Huracan",
"아벤타도르": "Aventador",
"우루스": "Urus",
"레부엘토": "Revuelto",
"로마": "Roma",
"포르토피노": "Portofino",
"SF90 스트라달레": "SF90 Stradale",
"F8 트리뷰토": "F8 Tributo",
"그란투리스모": "GranTurismo",
"반퀴시": "Vanquish",
"밴티지": "Vantage",
"AMG GT 4도어 쿠페": "AMG GT 4-Door Coupe",
}
# Подмешиваем модели из эталонного словаря партнёра как базу. Существующие
# записи проекта имеют приоритет. Дополнительно добавляем нормализованные
# варианты ключей партнёра (напр. "5 시리즈" -> "5시리즈", "S 클래스" -> "S-클래스"),
# т.к. в сырых данных Encar формат отличается пробелами/дефисами.
def _register_partner_models() -> None:
for _ko, _en in _PARTNER_TABLES["models"].items():
MODEL_EXACT_TRANSLATIONS.setdefault(_ko, _en)
# "5 시리즈" -> "5시리즈"
_compact = re.sub(r"(?<=\d)\s+시리즈", "시리즈", _ko)
# "S 클래스" -> "S-클래스"
_compact = re.sub(r"(?<=[A-Za-z])\s+클래스", "-클래스", _compact)
if _compact != _ko:
MODEL_EXACT_TRANSLATIONS.setdefault(_compact, _en)
_register_partner_models()
# Безопасные составные фразы. Применяются только к строкам, где есть корейский текст.
MODEL_PHRASE_TRANSLATIONS = {
"올 뉴": "All New",
"더 뉴": "New",
"디 올 뉴": "The All New",
"베리 뉴": "Very New",
"베리": "Very",
"뷰티풀": "Beautiful",
"넥스트": "Next",
"": "The ",
"디 엣지": "The Edge",
"액티브 투어러": "Active Tourer",
"투어러": "Tourer",
"그란쿠페": "GranCoupe",
"그란 쿠페": "GranCoupe",
"스포츠 칸": "Sport Khan",
"스포츠": "Sport",
"하이브리드": "Hybrid",
"일렉트릭": "Electric",
"네오": "Neo",
"트랜스폼": "Transform",
"프라임": "Prime",
"마스터": "Master",
"어반": "Urban",
"볼드": "Bold",
"아머": "Armor",
"에어": "Air",
}
# Короткие токены переводятся только как отдельные токены, не внутри других слов.
MODEL_TOKEN_TRANSLATIONS = {
"시리즈": "Series",
"클래스": "Class",
"세대": "gen",
"": "New",
"": "All",
"": "Khan",
}
MODEL_TRANSLATIONS = {
# --- Топливо / тип двигателя ---
"가솔린": "Gasoline",
"디젤": "Diesel",
"하이브리드": "Hybrid",
"전기": "Electric",
"터보": "Turbo",
"일렉트릭": "Electric",
"일렉트리파이드": "Electrified",
"블루텍": "BlueTEC",
"블루모션": "BlueMotion",
# --- Кузов / конструкция ---
"쿠페": "Coupe",
"세단": "Sedan",
"왜건": "Wagon",
"웨건": "Wagon",
"해치백": "Hatchback",
"컨버터블": "Convertible",
"카브리올레": "Cabriolet",
"크로스오버": "Crossover",
"리무진": "Limousine",
"하이리무진": "High Limousine",
"하이리무진(특장업체)": "High Limousine (Special)",
"스포트백": "Sportback",
"스파이더": "Spyder",
"": "Van",
"픽업": "Pickup",
"캠핑카": "Camper",
# --- КПП / привод ---
"오토": "Auto",
"수동": "Manual",
"후륜": "RWD",
"전륜": "FWD",
"사륜": "AWD",
"4모션": "4Motion",
# --- Трим / комплектация ---
"프레스티지": "Prestige",
"시그니처": "Signature",
"럭셔리": "Luxury",
"스포츠": "Sport",
"롱레인지": "Long Range",
"스탠다드": "Standard",
"플러스": "Plus",
"리미티드": "Limited",
"스페셜": "Special",
"모던": "Modern",
"익스클루시브": "Exclusive",
"캘리그래피": "Calligraphy",
"노블레스": "Noblesse",
"트림": "Trim",
"프리미엄": "Premium",
"프리미어": "Premier",
"플래티넘": "Platinum",
"플래티넘Ⅱ": "Platinum II",
"인스퍼레이션": "Inspiration",
"트렌디": "Trendy",
"다이나믹": "Dynamic",
"프라임": "Prime",
"초이스": "Choice",
"르블랑": "Le Blanc",
"프레지던트": "President",
"인스크립션": "Inscription",
"볼드": "Bold",
"밸류": "Value",
"퓨어": "Pure",
"엑셀런스": "Excellence",
"얼티메이트": "Ultimate",
"에센셜": "Essential",
"슈프림": "Supreme",
"에어": "Air",
"어반": "Urban",
"": "Top",
"코어": "Core",
"엘리트": "Elite",
"셀렉션": "Selection",
"브라이트": "Bright",
"클래식": "Classic",
"고급형": "Deluxe",
"최고급형": "Top Grade",
"기본형": "Base",
"디럭스": "Deluxe",
"디럭스팩": "Deluxe Pack",
"마이스터": "Meister",
"마스터": "Master",
"마스터즈": "Masters",
"어메이징": "Amazing",
"파워": "Power",
"리저브": "Reserve",
"퍼펙트": "Perfect",
"리얼": "Real",
"울트라": "Ultra",
"세이프티": "Safety",
"퍼포먼스": "Performance",
"인텔리전트": "Intelligent",
"컬렉션": "Collection",
"브릴리언트": "Brilliant",
"어드밴티지": "Advantage",
"파이니스트": "Finest",
"런치팩": "Launch Pack",
"페이버드": "Favored",
"엘레강스": "Elegance",
"하이": "High",
"블랙라벨": "Black Label",
"플럭스": "Flux",
"테크": "Tech",
"프로": "Pro",
"베스트": "Best",
"라이즈": "Rise",
"액티브": "Active",
"": "Long",
"패키지": "Package",
"에디션": "Edition",
"디자인": "Design",
"라운지": "Lounge",
"아트": "Art",
"": "Pop",
"조이": "Joy",
"레드라인": "Redline",
"스타일": "Style",
"블랙": "Black",
"라이트": "Light",
"온라인": "Online",
"론지튜드": "Longitude",
"오버랜드": "Overland",
"컴페티션": "Competition",
"올스페이스": "Allspace",
"스타": "Star",
# --- Поколение / номер ---
"1세대": "1st gen",
"2세대": "2nd gen",
"3세대": "3rd gen",
"4세대": "4th gen",
"5세대": "5th gen",
"6세대": "6th gen",
"7세대": "7th gen",
"8세대": "8th gen",
"10세대": "10th gen",
"": "",
"": "New",
"넥스트": "Next",
"": "All",
"그란": "Gran",
"그랜드": "Grand",
# --- Посадочных мест ---
"2인승": "2-seater",
"3인승": "3-seater",
"5인승": "5-seater",
"6인승": "6-seater",
"7인승": "7-seater",
"9인승": "9-seater",
"11인승": "11-seater",
"12인승": "12-seater",
# --- Двери ---
"4도어": "4-door",
"5도어": "5-door",
# --- Модели Hyundai ---
"팰리세이드": "Palisade",
"싼타페": "Santa Fe",
"투싼": "Tucson",
"아반떼": "Avante",
"쏘나타": "Sonata",
"그랜저": "Grandeur",
"아이오닉5": "Ioniq 5",
"아이오닉6": "Ioniq 6",
"아이오닉": "Ioniq",
"넥쏘": "Nexo",
"벨로스터": "Veloster",
"코나": "Kona",
"캐스퍼": "Casper",
"베뉴": "Venue",
"스타렉스": "Starex",
"스타리아": "Staria",
"에쿠스(신형)": "Equus",
"엑센트(신형)": "Accent",
"아슬란": "Aslan",
"베라크루즈": "Veracruz",
# --- Модели Kia ---
"카니발": "Carnival",
"쏘렌토": "Sorento",
"스포티지": "Sportage",
"모닝": "Morning",
"뉴모닝": "New Morning",
"레이": "Ray",
"셀토스": "Seltos",
"니로": "Niro",
"스팅어": "Stinger",
"쏘울": "Soul",
"모하비": "Mohave",
"프라이드": "Pride",
"스토닉": "Stonic",
# --- Модели Chevrolet/GM ---
"스파크": "Spark",
"말리부": "Malibu",
"트랙스": "Trax",
"크루즈": "Cruze",
"올란도": "Orlando",
"트레일블레이저": "Trailblazer",
"콜로라도": "Colorado",
"트래버스": "Traverse",
"캡티바": "Captiva",
"이쿼녹스": "Equinox",
"아베오": "Aveo",
"볼트": "Volt",
"임팔라": "Impala",
"맥스크루즈": "Max Cruz",
# --- Модели Genesis ---
"제네시스": "Genesis",
# --- Модели иностранных авто ---
"익스플로러": "Explorer",
"머스탱": "Mustang",
"카이엔": "Cayenne",
"파나메라": "Panamera",
"마칸": "Macan",
"타이칸": "Taycan",
"박스터": "Boxster",
"카이맨": "Cayman",
"카레라": "Carrera",
"티구안": "Tiguan",
"골프": "Golf",
"제타": "Jetta",
"투아렉": "Touareg",
"파사트": "Passat",
"아테온": "Arteon",
"콰트로": "quattro",
"아방가르드": "Avantgarde",
"쿠퍼": "Cooper",
"컨트리맨": "Countryman",
"클럽맨": "Clubman",
"디스커버리": "Discovery",
"레인지로버": "Range Rover",
"이보크": "Evoque",
"벨라": "Velar",
"디펜더": "Defender",
"랭글러": "Wrangler",
"체로키": "Cherokee",
"체로키(KL)": "Cherokee (KL)",
"체로키(WL)": "Cherokee (WL)",
"레니게이드": "Renegade",
"컴패스": "Compass",
"루비콘": "Rubicon",
"에비에이터": "Aviator",
"에스컬레이드": "Escalade",
"컨티넨탈": "Continental",
"르반떼": "Levante",
"기블리": "Ghibli",
"알티마": "Altima",
"오딧세이": "Odyssey",
"어코드": "Accord",
"캠리": "Camry",
"시에나": "Sienna",
"프리우스": "Prius",
"크로스컨트리": "Cross Country",
"타스만": "Tasman",
"고스트": "Ghost",
"팬텀": "Phantom",
"레이스": "Wraith",
"": "Dawn",
"컬리넌": "Cullinan",
"스펙터": "Spectre",
"벤테이가": "Bentayga",
"컨티넨탈 GT": "Continental GT",
"플라잉스퍼": "Flying Spur",
"우라칸": "Huracan",
"아벤타도르": "Aventador",
"우루스": "Urus",
"레부엘토": "Revuelto",
"로마": "Roma",
"포르토피노": "Portofino",
"SF90 스트라달레": "SF90 Stradale",
"F8 트리뷰토": "F8 Tributo",
"콰트로포르테": "Quattroporte",
"그란투리스모": "GranTurismo",
"반퀴시": "Vanquish",
"밴티지": "Vantage",
# --- Дополнительные модели, встреченные в данных Encar ---
"시에라": "Sierra",
"시빅": "Civic",
"레인저": "Ranger",
"콜레오스": "Koleos",
"그랑 콜레오스": "Grand Koleos",
"페이톤": "Phaeton",
"티록": "T-Roc",
"큐브": "Cube",
"크라운": "Crown",
"라이즈": "Rise",
"시로코": "Scirocco",
"이오스": "Eos",
"비틀": "Beetle",
"폴로": "Polo",
# --- Служебные / категории ---
"(세부등급": "(sub-trim",
"없음)": "none)",
"(렌터카)": "(rental)",
"(렌터카용)": "(for rental)",
"LPG(렌터카용)": "LPG (for rental)",
"LPI(렌터카용)": "LPI (for rental)",
"(택시형)": "(taxi)",
"택시형": "taxi",
"어린이보호차": "child transport",
"카고": "Cargo",
"모델": "Model",
"스마트": "Smart",
"기아": "Kia",
"마이바흐": "Maybach",
"레인지": "Range",
}
# Цвета: корейский → английский
COLOR_TRANSLATIONS = {
"흰색": "white",
"검정색": "black",
"회색": "gray",
"은색": "silver",
"진회색": "dark gray",
"밝은 회색": "light gray",
"청색": "blue",
"파란색": "blue",
"진청색": "dark blue",
"밝은 청색": "light blue",
"녹색": "green",
"초록색": "green",
"진녹색": "dark green",
"밝은 녹색": "light green",
"적색": "red",
"빨간색": "red",
"진적색": "dark red",
"밝은 적색": "light red",
"주황색": "orange",
"노란색": "yellow",
"갈색": "brown",
"베이지색": "beige",
"아이보리": "ivory",
"크림색": "cream",
"보라색": "purple",
"분홍색": "pink",
"금색": "gold",
"청금색": "blue-gold",
"청은색": "blue-silver",
"흑청색": "black-blue",
"흑적색": "black-red",
"흑녹색": "black-green",
"흑회색": "black-gray",
"흰청색": "white-blue",
"흰적색": "white-red",
"흰녹색": "white-green",
"흰회색": "white-gray",
"청적색": "blue-red",
"청녹색": "blue-green",
"청회색": "blue-gray",
"적녹색": "red-green",
"적회색": "red-gray",
"녹회색": "green-gray",
"기타": "other",
"기타색상": "other",
"특별색상": "special",
"무채색": "neutral",
"메탈릭": "metallic",
"": "pearl",
"무광": "matte",
"광택": "glossy",
}
# Тип кузова: корейский → enum
BODY_TYPE_MAP = {
"세단": "SEDAN",
"쿠페": "COUPE",
"컨버터블": "CONVERTIBLE",
"카브리올레": "CONVERTIBLE",
"오픈카": "OPEN",
"해치백": "HATCHBACK",
"왜건": "WAGON",
"스테이션왜건": "STATION_WAGON",
"SUV": "SUV",
"SUV ": "SUV",
"크로스오버": "SUV",
"픽업트럭": "PICKUP",
"픽업": "PICKUP",
"": "VAN",
"미니밴": "MINIVAN",
"트럭": "TRUCK",
"쿠페형 SUV": "SUV",
"버스": "BUS",
"기타": "OTHER",
"승용차": "SEDAN",
"승합차": "VAN",
"화물차": "TRUCK",
"특장차": "SPECIAL",
"경차": "COMPACT",
"중형차": "MID_SIZE",
"대형차": "FULL_SIZE",
"스포츠카": "SPORTS",
"클래식카": "CLASSIC",
"전기차": "ELECTRIC",
"하이브리드": "HYBRID",
}
# Определение body_type по модели (fallback)
MODEL_BODY_TYPE_MAP: dict[str, str] = {
# SUV / кроссоверы
"투싼": "SUV", "싼타페": "SUV", "팰리세이드": "SUV", "코나": "SUV", "베뉴": "SUV",
"크레타": "SUV", "넥쏘": "SUV", "아이오닉5": "SUV", "아이오닉6": "SEDAN",
"셀토스": "SUV", "스포티지": "SUV", "쏘렌토": "SUV", "모하비": "SUV",
"니로": "SUV", "EV6": "SUV", "EV9": "SUV",
"티볼리": "SUV", "코란도": "SUV", "렉스턴": "SUV", "토레스": "SUV", "액티언": "SUV",
"GV70": "SUV", "GV80": "SUV", "GV60": "SUV",
"X1": "SUV", "X2": "SUV", "X3": "SUV", "X4": "SUV", "X5": "SUV", "X6": "SUV", "X7": "SUV", "iX": "SUV", "iX3": "SUV",
"Q2": "SUV", "Q3": "SUV", "Q4": "SUV", "Q5": "SUV", "Q7": "SUV", "Q8": "SUV",
"GLA": "SUV", "GLB": "SUV", "GLC": "SUV", "GLE": "SUV", "GLS": "SUV",
"카이엔": "SUV", "마칸": "SUV",
"레인지로버": "SUV", "디스커버리": "SUV", "디펜더": "SUV",
"래브4": "SUV", "하이랜더": "SUV", "FJ 크루져": "SUV",
"CR-V": "SUV", "HR-V": "SUV",
"티구안": "SUV", "투아렉": "SUV", "아틀라스": "SUV", "ID.4": "SUV",
"트레일블레이저": "SUV", "이쿼녹스": "SUV", "트래버스": "SUV", "트랙스": "SUV", "캡티바": "SUV", "올란도": "SUV",
"XC40": "SUV", "XC60": "SUV", "XC90": "SUV", "V40": "HATCHBACK", "V60": "STATION_WAGON", "V90": "STATION_WAGON",
"F-PACE": "SUV", "E-PACE": "SUV", "I-PACE": "SUV",
"모델 Y": "SUV", "Model Y": "SUV", "모델 X": "SUV", "Model X": "SUV",
"RX": "SUV", "NX": "SUV", "UX": "SUV", "LX": "SUV",
"QX50": "SUV", "QX60": "SUV", "QX80": "SUV",
"QM3": "SUV", "QM6": "SUV",
"레니게이드": "SUV", "컴패스": "SUV", "체로키": "SUV", "랭글러": "SUV", "글래디에이터": "PICKUP",
"에비에이터": "SUV", "노틸러스": "SUV", "코세어": "SUV",
"르반떼": "SUV", "그레칼레": "SUV",
"Z4": "CONVERTIBLE",
# 세단
"쏘나타": "SEDAN", "아반떼": "SEDAN", "그랜저": "SEDAN", "K5": "SEDAN",
"K8": "SEDAN", "K9": "SEDAN", "K3": "SEDAN", "K7": "SEDAN",
"G70": "SEDAN", "G80": "SEDAN", "G90": "SEDAN",
"1시리즈": "HATCHBACK",
"2시리즈 그란쿠페": "SEDAN", "2시리즈 액티브투어러": "MINIVAN",
"3시리즈": "SEDAN", "3시리즈 GT": "SEDAN",
"5시리즈": "SEDAN", "7시리즈": "SEDAN", "i4": "SEDAN", "i7": "SEDAN",
"A1": "HATCHBACK", "A3": "SEDAN", "A4": "SEDAN", "A6": "SEDAN", "A7": "SEDAN", "A8": "SEDAN",
"A-클래스": "SEDAN", "CLA": "SEDAN",
"C-클래스": "SEDAN", "E-클래스": "SEDAN", "S-클래스": "SEDAN",
"캠리": "SEDAN", "아발론": "SEDAN", "프리우스": "SEDAN",
"어코드": "SEDAN", "시빅": "SEDAN",
"파사트": "SEDAN", "제타": "SEDAN", "아테온": "SEDAN",
"말리부": "SEDAN", "크루즈": "SEDAN", "임팔라": "SEDAN",
"S60": "SEDAN", "S90": "SEDAN",
"IS": "SEDAN", "ES": "SEDAN", "GS": "SEDAN", "LS": "SEDAN",
"Q50": "SEDAN", "Q70": "SEDAN",
"모델 3": "SEDAN", "Model 3": "SEDAN", "모델 S": "SEDAN", "Model S": "SEDAN",
"SM6": "SEDAN", "SM5": "SEDAN",
# 해치백
"스파크": "HATCHBACK", "모닝": "HATCHBACK", "레이": "HATCHBACK",
"i30": "HATCHBACK", "벨로스터": "HATCHBACK",
"골프": "HATCHBACK", "폴로": "HATCHBACK", "ID.3": "HATCHBACK",
"캐스퍼": "HATCHBACK",
# 미니밴/밴
"카니발": "MINIVAN", "스타리아": "MINIVAN", "스타렉스": "MINIVAN",
"V-클래스": "MINIVAN", "비토": "VAN",
"시에나": "MINIVAN", "알파드": "MINIVAN",
# 트럭/픽업
"포터": "PICKUP", "봉고": "PICKUP", "마이티": "TRUCK",
"타코마": "PICKUP", "터프": "PICKUP",
"콜로라도": "PICKUP", "실버라도": "PICKUP",
# 쿠페
"4시리즈": "COUPE", "8시리즈": "COUPE", "2시리즈": "COUPE",
"A5": "COUPE", "TT": "COUPE",
"RC": "COUPE", "LC": "COUPE",
}