Translate remaining route-level English strings
- Flights-map empty/error states: 'Failed to load routes. Please try
again.' and 'No directions found.' now use existing translation keys
(BOARD.LOAD-FAILED + FLIGHTS-MAP.NO_DIRECTIONS_INFO).
- Flights-map feature-flag fallback '404 - Page Not Found / This
feature is currently unavailable.' reduced to the translated
PAGE404.HEADER string.
- Suspense fallbacks on /onlineboard, /schedule, /flights-map and
/popular route pages now render the new SHARED.LOADING ('Загрузка…')
instead of hardcoded 'Loading...'.
This commit is contained in:
@@ -355,7 +355,7 @@ export const FlightsMapStartPage: FC = () => {
|
||||
role="alert"
|
||||
data-testid="map-error"
|
||||
>
|
||||
Failed to load routes. Please try again.
|
||||
{t("BOARD.LOAD-FAILED")}
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -364,7 +364,7 @@ export const FlightsMapStartPage: FC = () => {
|
||||
className="flights-map-start__empty"
|
||||
data-testid="map-no-directions"
|
||||
>
|
||||
No directions found.
|
||||
{t("FLIGHTS-MAP.NO_DIRECTIONS_INFO")}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "Bitte beachten Sie:",
|
||||
|
||||
@@ -405,7 +405,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "Please note:",
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "Nota:",
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "Remarque:",
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "Attenzione:",
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "ご注意:",
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "참고:",
|
||||
|
||||
@@ -405,7 +405,8 @@
|
||||
"CONNECTION-LIVE": "Онлайн",
|
||||
"CONNECTION-RECONNECTING": "Соединение…",
|
||||
"CONNECTION-OFFLINE": "Нет связи",
|
||||
"INVALID-PARAMS": "Неверные параметры URL."
|
||||
"INVALID-PARAMS": "Неверные параметры URL.",
|
||||
"LOADING": "Загрузка…"
|
||||
},
|
||||
"SMOKE": {
|
||||
"HEADING": "Страница проверки"
|
||||
|
||||
@@ -378,7 +378,8 @@
|
||||
"CONNECTION-LIVE": "Live",
|
||||
"CONNECTION-RECONNECTING": "Reconnecting…",
|
||||
"CONNECTION-OFFLINE": "Offline",
|
||||
"INVALID-PARAMS": "Invalid URL parameters."
|
||||
"INVALID-PARAMS": "Invalid URL parameters.",
|
||||
"LOADING": "Loading…"
|
||||
},
|
||||
"WARNING": {
|
||||
"IFLY_HIGHLIGHT": "请注意:",
|
||||
|
||||
@@ -32,8 +32,7 @@ export default function FlightsMapPage(): JSX.Element {
|
||||
if (!isEnabled) {
|
||||
return (
|
||||
<div data-testid="flights-map-disabled">
|
||||
<h1>404 - Page Not Found</h1>
|
||||
<p>This feature is currently unavailable.</p>
|
||||
<h1>404 — {t("PAGE404.HEADER")}</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -44,7 +43,7 @@ export default function FlightsMapPage(): JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<SeoHead {...seoProps} jsonLd={jsonLd} />
|
||||
<Suspense fallback={<div aria-busy="true">Loading...</div>}>
|
||||
<Suspense fallback={<div aria-busy="true">{t("SHARED.LOADING")}</div>}>
|
||||
<FlightsMapStartPage />
|
||||
</Suspense>
|
||||
</>
|
||||
|
||||
@@ -29,7 +29,7 @@ export default function OnlineBoardPage(): JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<SeoHead {...seoProps} />
|
||||
<Suspense fallback={<div aria-busy="true">Loading...</div>}>
|
||||
<Suspense fallback={<div aria-busy="true">{t("SHARED.LOADING")}</div>}>
|
||||
<OnlineBoardStartPage />
|
||||
</Suspense>
|
||||
</>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
import { lazy, Suspense, useCallback } from "react";
|
||||
import { useParams, useNavigate } from "@modern-js/runtime/router";
|
||||
import { useTranslation } from "@/i18n/provider.js";
|
||||
import type { PopularRequest } from "@/features/popular-requests/types.js";
|
||||
|
||||
const PopularRequestsPanel = lazy(() =>
|
||||
@@ -20,6 +21,7 @@ const PopularRequestsPanel = lazy(() =>
|
||||
);
|
||||
|
||||
export default function PopularPage(): JSX.Element {
|
||||
const { t } = useTranslation();
|
||||
const routeParams = useParams<{ lang: string }>();
|
||||
const lang = routeParams.lang ?? "ru";
|
||||
const navigate = useNavigate();
|
||||
@@ -48,7 +50,7 @@ export default function PopularPage(): JSX.Element {
|
||||
);
|
||||
|
||||
return (
|
||||
<Suspense fallback={<div aria-busy="true">Loading...</div>}>
|
||||
<Suspense fallback={<div aria-busy="true">{t("SHARED.LOADING")}</div>}>
|
||||
<PopularRequestsPanel onRequestClick={handleRequestClick} />
|
||||
</Suspense>
|
||||
);
|
||||
|
||||
@@ -29,7 +29,7 @@ export default function SchedulePage(): JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<SeoHead {...seoProps} />
|
||||
<Suspense fallback={<div aria-busy="true">Loading...</div>}>
|
||||
<Suspense fallback={<div aria-busy="true">{t("SHARED.LOADING")}</div>}>
|
||||
<ScheduleStartPage />
|
||||
</Suspense>
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user