Fix operator-icon overlap + restore trailing schedule-copy paragraph
CI / ci (push) Failing after 33s
Deploy / build-and-deploy (push) Failing after 5s

- OperatorLogo: moved &--round after per-carrier width rules so the
  round variant wins the cascade. Previously .operator-logo--FV
  (90×15) outranked --round (36×36) for FV flights and the second
  logo on a multi-leg schedule row spilled across the time column.
  Also added a tablet-viewport shrink for --round to 30×30.
- FlightCard now emits the flight-card--schedule modifier when
  direction='schedule' so the 80px/120px/100px/... grid actually
  applies. The default board grid was active on schedule rows, giving
  a too-narrow flight-number column and misaligned logos.
- i18n: replaced single-quoted HTML attributes with double quotes in
  every common.json. i18next-icu parses single quotes as ICU literal
  delimiters and silently drops the closing apostrophe in
  href='…booking'>…, truncating everything after <a ...> inside the
  rendered innerHTML. The schedule start-page bottom-description lost
  its 'онлайн-сервисом' link paragraph as a result.
This commit is contained in:
2026-04-22 14:57:41 +03:00
parent 08f06ff1f4
commit 35cae21d92
11 changed files with 35 additions and 28 deletions
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "Flugplan",
"TITLE": "Flugplan",
"SCHEDULE-BOTTOM-DESCRIPTION": "Flugplan",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p> Auf der Seite mit dem Flugplan von Aeroflot finden Sie alle wichtigen Informationen zu den Abflug- und Ankunftszeiten unserer Flüge. <br> Wählen Sie Ihr Reisedatum und planen Sie Ihre Reise im Voraus - egal ob es sich um einen Direktflug oder einen Flug mit Zwischenstopps handelt.</p> <p>Wir bieten preisgünstige Flugtickets und einen bequemen <a target='_blank' href='https://www.aeroflot.ru/de/booking'>Online-Buchungsserviceм</a>.</p> <p>Reisen Sie mit Aeroflot, wo Komfort und Zuverlässigkeit immer an erster Stelle stehen!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p> Auf der Seite mit dem Flugplan von Aeroflot finden Sie alle wichtigen Informationen zu den Abflug- und Ankunftszeiten unserer Flüge. <br> Wählen Sie Ihr Reisedatum und planen Sie Ihre Reise im Voraus - egal ob es sich um einen Direktflug oder einen Flug mit Zwischenstopps handelt.</p> <p>Wir bieten preisgünstige Flugtickets und einen bequemen <a target=\"_blank\" href=\"https://www.aeroflot.ru/de/booking\">Online-Buchungsserviceм</a>.</p> <p>Reisen Sie mit Aeroflot, wo Komfort und Zuverlässigkeit immer an erster Stelle stehen!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+2 -2
View File
@@ -229,7 +229,7 @@
"TITLE-TAB": "Schedule",
"TITLE": "Flight schedule",
"SCHEDULE-BOTTOM-DESCRIPTION": "Flight schedule",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>The Aeroflot flight schedule page provides all the essential information on our flight departure and arrival times. <br> Select your travel date and plan your journey in advance — whether its a direct flight or one with stopovers.</p> <p>We offer competitively priced air tickets and a convenient <a target='_blank' href='https://www.aeroflot.ru/en/booking'>online booking service</a>.</p> <p>Travel with Aeroflot, where comfort and reliability are always top-flight!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>The Aeroflot flight schedule page provides all the essential information on our flight departure and arrival times. <br> Select your travel date and plan your journey in advance — whether its a direct flight or one with stopovers.</p> <p>We offer competitively priced air tickets and a convenient <a target=\"_blank\" href=\"https://www.aeroflot.ru/en/booking\">online booking service</a>.</p> <p>Travel with Aeroflot, where comfort and reliability are always top-flight!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": "Current week"
@@ -465,4 +465,4 @@
"CONNECTING_FLIGHTS": "Show connecting flights",
"NO_DIRECTIONS_INFO": "No routes found, change the search parameters"
}
}
}
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "Programación",
"TITLE": "Horario de vuelos",
"SCHEDULE-BOTTOM-DESCRIPTION": "Horario de vuelos",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>En la página de horarios de vuelos de Aeroflot encontrará toda la información esencial sobre los horarios de salida y llegada de nuestros vuelos. <br>Seleccione la fecha de su viaje y planifíquelo con antelación, tanto si se trata de un vuelo directo como de uno con escalas. </p> <p>Ofrecemos billetes de avión a precios competitivos y un cómodo <a target='_blank' href='https://www.aeroflot.ru/es/booking'>servicio de reservas en línea.</a></p> <p>Viaje con Aeroflot, donde el confort y la fiabilidad son siempre de primera!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>En la página de horarios de vuelos de Aeroflot encontrará toda la información esencial sobre los horarios de salida y llegada de nuestros vuelos. <br>Seleccione la fecha de su viaje y planifíquelo con antelación, tanto si se trata de un vuelo directo como de uno con escalas. </p> <p>Ofrecemos billetes de avión a precios competitivos y un cómodo <a target=\"_blank\" href=\"https://www.aeroflot.ru/es/booking\">servicio de reservas en línea.</a></p> <p>Viaje con Aeroflot, donde el confort y la fiabilidad son siempre de primera!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "Programme",
"TITLE": "Horaire des vols",
"SCHEDULE-BOTTOM-DESCRIPTION": "Расписание рейсов Аэрофлота",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>La page des horaires des vols Aeroflot présente toutes les informations essentielles sur les heures de départ et darrivée de nos vols. <br>Sélectionnez votre date de voyage et planifiez votre voyage, quil sagisse dun vol direct ou dun vol avec escale </p> <p> Nous proposons des billets davion à des prix compétitifs et un <a target='_blank' href='https://www.aeroflot.ru/fr/booking'>service de réservation en ligne</a> très pratique. </p> <p>Voyagez avec Aeroflot, où confort et fiabilité vous accompagnent toujours !</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>La page des horaires des vols Aeroflot présente toutes les informations essentielles sur les heures de départ et darrivée de nos vols. <br>Sélectionnez votre date de voyage et planifiez votre voyage, quil sagisse dun vol direct ou dun vol avec escale </p> <p> Nous proposons des billets davion à des prix compétitifs et un <a target=\"_blank\" href=\"https://www.aeroflot.ru/fr/booking\">service de réservation en ligne</a> très pratique. </p> <p>Voyagez avec Aeroflot, où confort et fiabilité vous accompagnent toujours !</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "Orari",
"TITLE": "Orario dei voli",
"SCHEDULE-BOTTOM-DESCRIPTION": "Orario dei voli",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>La pagina degli orari dei voli di Aeroflot fornisce tutte le informazioni essenziali sugli orari di partenza e di arrivo dei nostri voli. <br>Seleziona la data e pianifica il tuo viaggio in anticipo, sia che si tratti di un volo diretto che di uno con scalo. </p> <p>Offriamo biglietti aerei a prezzi competitivi e un comodo <a target='_blank' href='https://www.aeroflot.ru/it/booking'>servizio di prenotazione online</a>. </p> <p>Viaggia con Aeroflot, dove il comfort e l'affidabilità sono sempre al top!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>La pagina degli orari dei voli di Aeroflot fornisce tutte le informazioni essenziali sugli orari di partenza e di arrivo dei nostri voli. <br>Seleziona la data e pianifica il tuo viaggio in anticipo, sia che si tratti di un volo diretto che di uno con scalo. </p> <p>Offriamo biglietti aerei a prezzi competitivi e un comodo <a target=\"_blank\" href=\"https://www.aeroflot.ru/it/booking\">servizio di prenotazione online</a>. </p> <p>Viaggia con Aeroflot, dove il comfort e l'affidabilità sono sempre al top!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "スケジュール ",
"TITLE": "フライトスケジュール",
"SCHEDULE-BOTTOM-DESCRIPTION": "フライトスケジュール",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>Aeroflot・ロシア航空のフライトスケジュールページでは、アエロフロート・ロシア航空の出発・到着時刻に関する情報を提供しています<br>ご旅行の日程を選択し、直行便でも途中降機でも、事前にご旅行の計画を立てましょう。</p> <p>当社は競争力のある価格の航空券と便利な<a target='_blank' href='https://www.aeroflot.ru/ja/booking'>オンライン予約サービスを</a>提供しています。</p> <p>Aeroflotの快適さと信頼性は、常にトップクラスです!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>Aeroflot・ロシア航空のフライトスケジュールページでは、アエロフロート・ロシア航空の出発・到着時刻に関する情報を提供しています<br>ご旅行の日程を選択し、直行便でも途中降機でも、事前にご旅行の計画を立てましょう。</p> <p>当社は競争力のある価格の航空券と便利な<a target=\"_blank\" href=\"https://www.aeroflot.ru/ja/booking\">オンライン予約サービスを</a>提供しています。</p> <p>Aeroflotの快適さと信頼性は、常にトップクラスです!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "스케줄",
"TITLE": "항공편 일정",
"SCHEDULE-BOTTOM-DESCRIPTION": "항공편 일정",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p> Aeroflot 항공편 스케줄 페이지에서 항공편 출발 및 도착 시간에 대한 모든 필수 정보를 확인할 수 있습니다. <br> 여행 날짜를 선택하고 직항이든 경유지가 있는 항공편이든 미리 여행 계획을 세우세요.</p> <p>경쟁력 있는 가격의 항공권과 편리한 <a target='_blank' href='https://www.aeroflot.ru/ko/booking'>온라인 예약 서비스를</a> 제공합니다.</p> <p>항상 편안함과 신뢰성을 최우선으로 하는 Aeroflot와 함께 여행하세요!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p> Aeroflot 항공편 스케줄 페이지에서 항공편 출발 및 도착 시간에 대한 모든 필수 정보를 확인할 수 있습니다. <br> 여행 날짜를 선택하고 직항이든 경유지가 있는 항공편이든 미리 여행 계획을 세우세요.</p> <p>경쟁력 있는 가격의 항공권과 편리한 <a target=\"_blank\" href=\"https://www.aeroflot.ru/ko/booking\">온라인 예약 서비스를</a> 제공합니다.</p> <p>항상 편안함과 신뢰성을 최우선으로 하는 Aeroflot와 함께 여행하세요!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+4 -4
View File
@@ -200,8 +200,8 @@
"DOWNLOAD-SCHEDULE-FOR-THE-PERIOD": "За период",
"FILE-NAME": "Расписание рейсов ПАО Аэрофлот",
"NOTE-LINE1": "Время в системе - МЕСТНОЕ.",
"NOTE-LINE2": "<b>Обратите внимание:</b> не все предложенные варианты стыковок доступны при покупке билетов через сайт. <br />В случае, если выбранная Вами стыковка на сайте недоступна, Вы можете приобрести билет в офисе продаж <br />или позвонив в круглосуточный контакт-центр по телефонам<br /><b><a href='tel:+74952235555'>+7 (495) 223-5555</a> (Москва) / <a href='tel:88004445555'>8-800-444-5555</a> (Россия, бесплатный)</b>",
"NOTE-LINE3": "Если Вы не нашли интересующую Вас информацию о рейсе здесь – Вы можете <br />обратиться в наш круглосуточно работающий контакт-центр по телефонам: <br /><b>Москва <a href='tel:+74952235555'>+7 (495) 223-5555</a> / Россия <a href='tel:88004445555'>8-800-444-5555</a> (бесплатный)<br /> Россия <a href='tel:*555'>*555</a> МТС, Билайн, Мегафон (звонок бесплатный)</b>",
"NOTE-LINE2": "<b>Обратите внимание:</b> не все предложенные варианты стыковок доступны при покупке билетов через сайт. <br />В случае, если выбранная Вами стыковка на сайте недоступна, Вы можете приобрести билет в офисе продаж <br />или позвонив в круглосуточный контакт-центр по телефонам<br /><b><a href=\"tel:+74952235555\">+7 (495) 223-5555</a> (Москва) / <a href=\"tel:88004445555\">8-800-444-5555</a> (Россия, бесплатный)</b>",
"NOTE-LINE3": "Если Вы не нашли интересующую Вас информацию о рейсе здесь – Вы можете <br />обратиться в наш круглосуточно работающий контакт-центр по телефонам: <br /><b>Москва <a href=\"tel:+74952235555\">+7 (495) 223-5555</a> / Россия <a href=\"tel:88004445555\">8-800-444-5555</a> (бесплатный)<br /> Россия <a href=\"tel:*555\">*555</a> МТС, Билайн, Мегафон (звонок бесплатный)</b>",
"POPULAR-CHAPTERS": "Возможности расписания",
"SCHEDULE-BY-ROUTE": "Расписание по маршруту",
"SCHEDULE-FLIGHTS": "Расписание рейсов",
@@ -229,7 +229,7 @@
"TITLE": "Расписание рейсов",
"TITLE-TAB": "Расписание",
"SCHEDULE-BOTTOM-DESCRIPTION": "Расписание рейсов Аэрофлота",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>На странице расписания рейсов Аэрофлота представлена вся необходимая информация о времени отправления и прибытия наших рейсов. <br> Выбирайте дату и планируйте свое путешествие заранее: прямым рейсом или с пересадками.</p> <p>Мы предлагаем билеты на самолет по конкурентным ценам с удобным <a target='_blank' href='https://www.aeroflot.ru/ru/booking'>онлайн-сервисом</a> для оформления заказа.</p> <p>Путешествуйте с Аэрофлотом, где комфорт и надежность всегда на высоте!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p>На странице расписания рейсов Аэрофлота представлена вся необходимая информация о времени отправления и прибытия наших рейсов. <br> Выбирайте дату и планируйте свое путешествие заранее: прямым рейсом или с пересадками.</p> <p>Мы предлагаем билеты на самолет по конкурентным ценам с удобным <a target=\"_blank\" href=\"https://www.aeroflot.ru/ru/booking\">онлайн-сервисом</a> для оформления заказа.</p> <p>Путешествуйте с Аэрофлотом, где комфорт и надежность всегда на высоте!</p>",
"OUTBOUND": "Туда",
"RETURN": "Обратно",
"CURRENT-WEEK": "Текущая неделя"
@@ -465,4 +465,4 @@
"CONNECTING_FLIGHTS": "Показать только рейсы с пересадкой",
"NO_DIRECTIONS_INFO": "Маршрутов не найдено, измените параметры поиска"
}
}
}
+2 -2
View File
@@ -190,7 +190,7 @@
"TITLE-TAB": "计划",
"TITLE": "航班时刻表",
"SCHEDULE-BOTTOM-DESCRIPTION": "航班时刻表",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p> Aeroflot航班时刻表页面提供我们航班起飞和到达时间的所有基本信息。<br> 选择您的旅行日期,提前计划您的行程--无论是直飞航班还是中途停留的航班</p> <p>我们提供价格极具竞争力的机票和便捷的<a target='_blank' href='https://www.aeroflot.ru/zh/booking'>在线预订服务。</a></p> <p>乘坐俄罗斯国际航空公司的航班,舒适性和可靠性始终是一流的!</p>",
"SCHEDULE-BOTTOM-DESCRIPTION-TEXT": "<p> Aeroflot航班时刻表页面提供我们航班起飞和到达时间的所有基本信息。<br> 选择您的旅行日期,提前计划您的行程--无论是直飞航班还是中途停留的航班</p> <p>我们提供价格极具竞争力的机票和便捷的<a target=\"_blank\" href=\"https://www.aeroflot.ru/zh/booking\">在线预订服务。</a></p> <p>乘坐俄罗斯国际航空公司的航班,舒适性和可靠性始终是一流的!</p>",
"OUTBOUND": "Outbound",
"RETURN": "Return",
"CURRENT-WEEK": ""
@@ -430,4 +430,4 @@
"ROUTE": "",
"SCHEDULE-ROUTE": ""
}
}
}
+1 -1
View File
@@ -312,7 +312,7 @@ export const FlightCard: FC<FlightCardProps> = ({
return (
<div
className={`flight-card${rowClickable ? " flight-card--clickable" : ""}${expanded ? " flight-card--expanded" : ""}`}
className={`flight-card${direction === "schedule" ? " flight-card--schedule" : ""}${rowClickable ? " flight-card--clickable" : ""}${expanded ? " flight-card--expanded" : ""}`}
data-flight-id={flight.id}
>
<div
+14 -7
View File
@@ -12,13 +12,6 @@
background-position: left center;
flex-shrink: 0;
&--round {
width: 36px;
height: 36px;
background-size: contain;
background-position: center;
}
// Large (1.5× scale) used in the details-header badge. Angular keeps
// round icons the same size even when 'large' is set.
&--large {
@@ -44,10 +37,24 @@
&--AF { width: 120px; height: 15px; }
&--AZ { width: 120px; height: 29px; }
// Round variant must override per-carrier widths; placed AFTER the
// carrier rules so it wins the same-specificity cascade. Without this
// ordering, e.g. `.operator-logo--FV.operator-logo--round` picked up
// the 90×15 FV rectangle and two round logos in a schedule row
// overflowed their 120px column into the time cell.
&--round {
width: 36px;
height: 36px;
background-size: contain;
background-position: center;
}
@media (min-width: 641px) and (max-width: 1050px) {
// Angular's tablets() scale: width & height * 0.75.
width: 90px;
height: 23px;
&--round { width: 30px; height: 30px; }
}
}