feat(transport): Improve socket transport mode selection and localization

This commit is contained in:
cogwheel0
2025-10-30 22:32:59 +05:30
parent f4561484f6
commit a00d64fc26
19 changed files with 441 additions and 50 deletions

View File

@@ -334,9 +334,9 @@
"transportMode": "Transportmodus",
"transportModeDescription": "Wähle, wie die App für Echtzeit-Updates verbindet.",
"mode": "Modus",
"transportModeAuto": "Auto (Polling + WebSocket)",
"transportModePolling": "Polling-Fallback",
"transportModeWs": "Nur WebSocket",
"transportModeAutoInfo": "Robuster in restriktiven Netzwerken. Wechselt nach Möglichkeit zu WebSocket.",
"transportModePollingInfo": "Fällt auf HTTP-Polling zurück, wenn WebSockets blockiert sind. Wechselt nach Möglichkeit zu WebSocket.",
"transportModeWsInfo": "Geringerer Overhead, kann jedoch hinter strikten Proxys/Firewalls fehlschlagen.",
"websocketConnectionError": "Echtzeit-Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihr Netzwerk und die Serverkonfiguration.",
"websocketReconnectFailed": "Echtzeit-Verbindung fehlgeschlagen. Streaming funktioniert möglicherweise nicht ordnungsgemäß."

View File

@@ -694,12 +694,12 @@
"@transportModeDescription": {"description": "Helper text explaining the transport setting."},
"mode": "Mode",
"@mode": {"description": "Form field label for transport mode dropdown."},
"transportModeAuto": "Auto (Polling + WebSocket)",
"@transportModeAuto": {"description": "Dropdown option label for automatic transport selection."},
"transportModePolling": "Polling fallback",
"@transportModePolling": {"description": "Dropdown option label for HTTP polling fallback transport."},
"transportModeWs": "WebSocket only",
"@transportModeWs": {"description": "Dropdown option label for WebSocket-only transport."},
"transportModeAutoInfo": "More robust on restrictive networks. Upgrades to WebSocket when possible.",
"@transportModeAutoInfo": {"description": "Footnote text for the Auto transport mode."},
"transportModePollingInfo": "Falls back to HTTP polling when WebSocket is blocked. Upgrades to WebSocket when possible.",
"@transportModePollingInfo": {"description": "Footnote text for the polling fallback transport mode."},
"transportModeWsInfo": "Lower overhead, but may fail behind strict proxies/firewalls.",
"@transportModeWsInfo": {"description": "Footnote text for the WebSocket-only transport mode."},
"websocketConnectionError": "Unable to establish real-time connection. Please check your network and server configuration.",

View File

@@ -327,9 +327,9 @@
"transportMode": "Modo de transporte",
"transportModeDescription": "Elige cómo se conecta la aplicación para actualizaciones en tiempo real.",
"mode": "Modo",
"transportModeAuto": "Automático (Polling + WebSocket)",
"transportModePolling": "Polling de respaldo",
"transportModeWs": "Solo WebSocket",
"transportModeAutoInfo": "Más robusto en redes restrictivas. Se actualiza a WebSocket cuando es posible.",
"transportModePollingInfo": "Recurrirá a HTTP polling si WebSocket está bloqueado. Se actualiza a WebSocket cuando sea posible.",
"transportModeWsInfo": "Menor sobrecarga, pero puede fallar detrás de proxies/firewalls estrictos.",
"websocketConnectionError": "No se puede establecer la conexión en tiempo real. Por favor, verifica tu red y la configuración del servidor.",
"websocketReconnectFailed": "Fallo en la conexión en tiempo real. El streaming podría no funcionar correctamente."

View File

@@ -334,9 +334,9 @@
"transportMode": "Mode de transport",
"transportModeDescription": "Choisissez comment l'app se connecte pour les mises à jour en temps réel.",
"mode": "Mode",
"transportModeAuto": "Auto (Polling + WebSocket)",
"transportModePolling": "Polling de secours",
"transportModeWs": "WebSocket uniquement",
"transportModeAutoInfo": "Plus robuste sur les réseaux restrictifs. Passe à WebSocket lorsque possible.",
"transportModePollingInfo": "Bascule sur HTTP polling lorsque WebSocket est bloqué. Repasse à WebSocket dès que possible.",
"transportModeWsInfo": "Moins de surcharge, mais peut échouer derrière des proxys/firewalls stricts.",
"websocketConnectionError": "Impossible d'établir une connexion en temps réel. Veuillez vérifier votre réseau et la configuration du serveur.",
"websocketReconnectFailed": "Échec de la connexion en temps réel. Le streaming pourrait ne pas fonctionner correctement."

View File

@@ -334,9 +334,9 @@
"transportMode": "Modalità di trasporto",
"transportModeDescription": "Scegli come l'app si connette per gli aggiornamenti in tempo reale.",
"mode": "Modalità",
"transportModeAuto": "Auto (Polling + WebSocket)",
"transportModePolling": "Polling di fallback",
"transportModeWs": "Solo WebSocket",
"transportModeAutoInfo": "Più robusto nelle reti restrittive. Passa a WebSocket quando possibile.",
"transportModePollingInfo": "Quando WebSocket è bloccato passa a HTTP polling. Torna a WebSocket appena possibile.",
"transportModeWsInfo": "Minore overhead, ma può fallire dietro proxy/firewall restrittivi.",
"websocketConnectionError": "Impossibile stabilire una connessione in tempo reale. Si prega di controllare la rete e la configurazione del server.",
"websocketReconnectFailed": "Connessione in tempo reale fallita. Lo streaming potrebbe non funzionare correttamente."

View File

@@ -1826,11 +1826,11 @@ abstract class AppLocalizations {
/// **'Mode'**
String get mode;
/// Dropdown option label for automatic transport selection.
/// Dropdown option label for HTTP polling fallback transport.
///
/// In en, this message translates to:
/// **'Auto (Polling + WebSocket)'**
String get transportModeAuto;
/// **'Polling fallback'**
String get transportModePolling;
/// Dropdown option label for WebSocket-only transport.
///
@@ -1838,11 +1838,11 @@ abstract class AppLocalizations {
/// **'WebSocket only'**
String get transportModeWs;
/// Footnote text for the Auto transport mode.
/// Footnote text for the polling fallback transport mode.
///
/// In en, this message translates to:
/// **'More robust on restrictive networks. Upgrades to WebSocket when possible.'**
String get transportModeAutoInfo;
/// **'Falls back to HTTP polling when WebSocket is blocked. Upgrades to WebSocket when possible.'**
String get transportModePollingInfo;
/// Footnote text for the WebSocket-only transport mode.
///

View File

@@ -953,14 +953,14 @@ class AppLocalizationsDe extends AppLocalizations {
String get mode => 'Modus';
@override
String get transportModeAuto => 'Auto (Polling + WebSocket)';
String get transportModePolling => 'Polling-Fallback';
@override
String get transportModeWs => 'Nur WebSocket';
@override
String get transportModeAutoInfo =>
'Robuster in restriktiven Netzwerken. Wechselt nach Möglichkeit zu WebSocket.';
String get transportModePollingInfo =>
'Fällt auf HTTP-Polling zurück, wenn WebSockets blockiert sind. Wechselt nach Möglichkeit zu WebSocket.';
@override
String get transportModeWsInfo =>

View File

@@ -945,14 +945,14 @@ class AppLocalizationsEn extends AppLocalizations {
String get mode => 'Mode';
@override
String get transportModeAuto => 'Auto (Polling + WebSocket)';
String get transportModePolling => 'Polling fallback';
@override
String get transportModeWs => 'WebSocket only';
@override
String get transportModeAutoInfo =>
'More robust on restrictive networks. Upgrades to WebSocket when possible.';
String get transportModePollingInfo =>
'Falls back to HTTP polling when WebSocket is blocked. Upgrades to WebSocket when possible.';
@override
String get transportModeWsInfo =>

View File

@@ -959,14 +959,14 @@ class AppLocalizationsFr extends AppLocalizations {
String get mode => 'Mode';
@override
String get transportModeAuto => 'Auto (Polling + WebSocket)';
String get transportModePolling => 'Polling de secours';
@override
String get transportModeWs => 'WebSocket uniquement';
@override
String get transportModeAutoInfo =>
'Plus robuste sur les réseaux restrictifs. Passe à WebSocket lorsque possible.';
String get transportModePollingInfo =>
'Bascule sur HTTP polling lorsque WebSocket est bloqué. Repasse à WebSocket dès que possible.';
@override
String get transportModeWsInfo =>

View File

@@ -948,14 +948,14 @@ class AppLocalizationsIt extends AppLocalizations {
String get mode => 'Modalità';
@override
String get transportModeAuto => 'Auto (Polling + WebSocket)';
String get transportModePolling => 'Polling di fallback';
@override
String get transportModeWs => 'Solo WebSocket';
@override
String get transportModeAutoInfo =>
'Più robusto nelle reti restrittive. Passa a WebSocket quando possibile.';
String get transportModePollingInfo =>
'Quando WebSocket è bloccato passa a HTTP polling. Torna a WebSocket appena possibile.';
@override
String get transportModeWsInfo =>

View File

@@ -327,9 +327,9 @@
"transportMode": "Transportmodus",
"transportModeDescription": "Kies hoe de app verbindt voor realtime updates.",
"mode": "Modus",
"transportModeAuto": "Automatisch (Polling + WebSocket)",
"transportModePolling": "Polling-fallback",
"transportModeWs": "Alleen WebSocket",
"transportModeAutoInfo": "Robuuster op beperkende netwerken. Upgrade naar WebSocket indien mogelijk.",
"transportModePollingInfo": "Valt terug op HTTP-polling wanneer WebSocket geblokkeerd is. Upgrade naar WebSocket zodra dat kan.",
"transportModeWsInfo": "Lagere overhead, maar kan mislukken achter strikte proxies/firewalls.",
"websocketConnectionError": "Kan geen realtime verbinding maken. Controleer uw netwerk en serverconfiguratie.",
"websocketReconnectFailed": "Realtime verbinding mislukt. Streaming werkt mogelijk niet goed."

View File

@@ -327,9 +327,9 @@
"transportMode": "Режим транспорта",
"transportModeDescription": "Выберите, как приложение подключается для обновлений в реальном времени.",
"mode": "Режим",
"transportModeAuto": "Авто (опрос + WebSocket)",
"transportModePolling": "Опрос (резерв)",
"transportModeWs": "Только WebSocket",
"transportModeAutoInfo": "Более надежен в ограничительных сетях. Переходит на WebSocket, когда это возможно.",
"transportModePollingInfo": "Переходит на HTTP-опрос, если WebSocket заблокирован. Возвращается к WebSocket, когда это возможно.",
"transportModeWsInfo": "Меньше накладных расходов, но может не работать за строгими прокси/брандмауэрами.",
"websocketConnectionError": "Не удалось установить соединение в реальном времени. Пожалуйста, проверьте сеть и конфигурацию сервера.",
"websocketReconnectFailed": "Сбой соединения в реальном времени. Потоковая передача может работать неправильно."

View File

@@ -327,9 +327,9 @@
"transportMode": "传输模式",
"transportModeDescription": "选择应用如何连接以进行实时更新。",
"mode": "模式",
"transportModeAuto": "自动(轮询 + WebSocket",
"transportModePolling": "轮询回退",
"transportModeWs": "仅 WebSocket",
"transportModeAutoInfo": "在限制性网络上更稳健。在可能的情况下升级到 WebSocket。",
"transportModePollingInfo": "当 WebSocket 被阻止时改用 HTTP 轮询,在条件允许时切换回 WebSocket。",
"transportModeWsInfo": "开销较低,但可能在严格的代理/防火墙后失败。",
"websocketConnectionError": "无法建立实时连接。请检查您的网络和服务器配置。",
"websocketReconnectFailed": "实时连接失败。流式传输可能无法正常工作。"