mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-06-19 17:05:33 +10:00
Update localization files and improve path map UI
- Added new localization strings for Swedish, Ukrainian, and Chinese languages in app_sv.arb, app_uk.arb, and app_zh.arb respectively. - Enhanced the path map UI in channel_message_path_screen.dart for better readability and interaction. - Improved message retry logic in message_retry_service.dart to prevent double-pumping of queues. - Bumped version number in pubspec.yaml to 9.5.0+13. - Cleared untranslated strings in untranslated.json to reflect current localization status.
This commit is contained in:
@@ -4459,24 +4459,27 @@ class MeshCoreConnector extends ChangeNotifier {
|
||||
secondsSinceLastRx: secSinceRx,
|
||||
);
|
||||
if (mlTimeout != null) {
|
||||
// Use device est_timeout as an additional ceiling when available —
|
||||
// the firmware computed it from real airtime, so it's better than
|
||||
// a physics guess built on a 50 ms fallback.
|
||||
final ceiling = deviceTimeoutMs != null && deviceTimeoutMs > physicsMin
|
||||
// Use device est_timeout as a baseline floor when available —
|
||||
// the firmware computed it from real airtime. Let the learned ML
|
||||
// estimate widen above it up to the hard cap, but never below it.
|
||||
final floor = deviceTimeoutMs != null && deviceTimeoutMs > physicsMin
|
||||
? deviceTimeoutMs.clamp(physicsMin, _hardMaxTimeoutMs)
|
||||
: physicsMax;
|
||||
: physicsMin.clamp(0, _hardMaxTimeoutMs);
|
||||
if (pathLength < 0) {
|
||||
// Flood: trust ML, only enforce firmware formula as floor
|
||||
if (mlTimeout < physicsMin) {
|
||||
return physicsMin.clamp(0, _hardMaxTimeoutMs);
|
||||
// Flood: trust ML, only enforce firmware estimate as floor
|
||||
if (mlTimeout < floor) {
|
||||
return floor.clamp(0, _hardMaxTimeoutMs);
|
||||
}
|
||||
}
|
||||
return mlTimeout.clamp(physicsMin, ceiling).clamp(0, _hardMaxTimeoutMs);
|
||||
return mlTimeout.clamp(floor, _hardMaxTimeoutMs);
|
||||
}
|
||||
|
||||
// No ML data — prefer device est_timeout (it used real airtime), then physics.
|
||||
// Cap the floor to the hard maximum so slow-flood physicsMin cannot exceed
|
||||
// the upper bound and make clamp() throw.
|
||||
if (deviceTimeoutMs != null && deviceTimeoutMs > 0) {
|
||||
return deviceTimeoutMs.clamp(physicsMin, _hardMaxTimeoutMs);
|
||||
final floor = physicsMin.clamp(0, _hardMaxTimeoutMs);
|
||||
return deviceTimeoutMs.clamp(floor, _hardMaxTimeoutMs);
|
||||
}
|
||||
return physicsMax.clamp(0, _hardMaxTimeoutMs);
|
||||
}
|
||||
|
||||
+337
-243
File diff suppressed because it is too large
Load Diff
+537
-337
File diff suppressed because it is too large
Load Diff
+471
-271
File diff suppressed because it is too large
Load Diff
+425
-204
File diff suppressed because it is too large
Load Diff
+1123
-1029
File diff suppressed because it is too large
Load Diff
+514
-239
File diff suppressed because it is too large
Load Diff
+562
-366
File diff suppressed because it is too large
Load Diff
+367
-174
@@ -5,8 +5,8 @@
|
||||
"nav_channels": "채널",
|
||||
"nav_map": "지도",
|
||||
"common_cancel": "취소",
|
||||
"common_ok": "알겠습니다",
|
||||
"common_connect": "연결",
|
||||
"common_ok": "확인",
|
||||
"common_connect": "연결하기",
|
||||
"common_unknownDevice": "알 수 없는 장치",
|
||||
"common_save": "저장",
|
||||
"common_delete": "삭제",
|
||||
@@ -16,21 +16,21 @@
|
||||
"common_add": "추가",
|
||||
"common_settings": "설정",
|
||||
"common_disconnect": "연결 해제",
|
||||
"common_connected": "연결된",
|
||||
"common_disconnected": "단절",
|
||||
"common_create": "만들다",
|
||||
"common_connected": "연결됨",
|
||||
"common_disconnected": "연결 해제됨",
|
||||
"common_create": "만들기",
|
||||
"common_continue": "계속",
|
||||
"common_share": "공유",
|
||||
"common_copy": "복사",
|
||||
"common_retry": "다시 시도",
|
||||
"common_hide": "숨기다",
|
||||
"common_hide": "숨기기",
|
||||
"common_remove": "제거",
|
||||
"common_enable": "활성화",
|
||||
"common_disable": "비활성화",
|
||||
"common_enable": "사용",
|
||||
"common_disable": "사용 안 함",
|
||||
"common_autoRefresh": "자동 새로고침",
|
||||
"common_interval": "간격",
|
||||
"common_reboot": "재부팅",
|
||||
"common_loading": "로딩 중...",
|
||||
"common_loading": "불러오는 중...",
|
||||
"common_notAvailable": "—",
|
||||
"common_voltageValue": "{volts} V",
|
||||
"@common_voltageValue": {
|
||||
@@ -48,16 +48,16 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"scanner_title": "MeshCore 공개",
|
||||
"scanner_title": "MeshCore Open",
|
||||
"connectionChoiceUsbLabel": "USB",
|
||||
"connectionChoiceBluetoothLabel": "블루투스",
|
||||
"connectionChoiceTcpLabel": "TCP",
|
||||
"tcpScreenTitle": "TCP를 통해 연결",
|
||||
"tcpHostLabel": "IP 주소",
|
||||
"tcpHostHint": "192.168.40.10",
|
||||
"tcpPortLabel": "항",
|
||||
"tcpHostHint": "192.168.40.10 / example.com",
|
||||
"tcpPortLabel": "포트",
|
||||
"tcpPortHint": "5000",
|
||||
"tcpStatus_notConnected": "목적지 주소 입력 후 연결",
|
||||
"tcpStatus_notConnected": "엔드포인트를 입력한 뒤 연결하세요.",
|
||||
"tcpStatus_connectingTo": "{endpoint}에 연결 중...",
|
||||
"@tcpStatus_connectingTo": {
|
||||
"placeholders": {
|
||||
@@ -80,21 +80,21 @@
|
||||
},
|
||||
"usbScreenTitle": "USB를 통해 연결",
|
||||
"usbScreenSubtitle": "감지된 시리얼 장치를 선택하고 MeshCore 노드에 직접 연결하십시오.",
|
||||
"usbScreenStatus": "USB 장치를 선택합니다.",
|
||||
"usbScreenNote": "USB 직렬 통신은 지원되는 안드로이드 장치 및 데스크톱 플랫폼에서 활성화됩니다.",
|
||||
"usbScreenEmptyState": "USB 장치가 탐지되지 않았습니다. USB 장치를 연결하고 다시 시도해 보세요.",
|
||||
"usbScreenStatus": "USB 장치를 선택하세요.",
|
||||
"usbScreenNote": "USB 직렬 통신은 지원되는 Android 기기 및 데스크톱 플랫폼에서 사용할 수 있습니다.",
|
||||
"usbScreenEmptyState": "USB 장치가 없습니다. 하나 연결한 뒤 새로고침하세요.",
|
||||
"usbErrorPermissionDenied": "USB 접근 권한이 거부되었습니다.",
|
||||
"usbErrorDeviceMissing": "선택한 USB 장치는 더 이상 사용 불가능합니다.",
|
||||
"usbErrorDeviceMissing": "선택한 USB 장치를 더 이상 사용할 수 없습니다.",
|
||||
"usbErrorInvalidPort": "유효한 USB 장치를 선택하세요.",
|
||||
"usbErrorBusy": "또 다른 USB 연결 요청이 이미 진행 중입니다.",
|
||||
"usbErrorBusy": "다른 USB 연결 요청이 이미 진행 중입니다.",
|
||||
"usbErrorNotConnected": "USB 장치가 연결되지 않았습니다.",
|
||||
"usbErrorOpenFailed": "선택한 USB 장치를 열 수 없습니다.",
|
||||
"usbErrorConnectFailed": "선택한 USB 장치에 연결에 실패했습니다.",
|
||||
"usbErrorConnectFailed": "선택한 USB 장치에 연결하지 못했습니다.",
|
||||
"usbErrorUnsupported": "이 플랫폼에서는 USB 직렬 통신을 지원하지 않습니다.",
|
||||
"usbErrorAlreadyActive": "USB 연결이 이미 활성화되어 있습니다.",
|
||||
"usbErrorAlreadyActive": "USB 연결이 이미 활성 상태입니다.",
|
||||
"usbErrorNoDeviceSelected": "USB 장치가 선택되지 않았습니다.",
|
||||
"usbErrorPortClosed": "USB 연결이 활성화되지 않았습니다.",
|
||||
"usbErrorConnectTimedOut": "연결이 시간 초과되었습니다. 장치가 USB Companion 펌웨어를 가지고 있는지 확인해 주세요.",
|
||||
"usbErrorPortClosed": "USB 연결이 열려 있지 않습니다.",
|
||||
"usbErrorConnectTimedOut": "연결 시간이 초과되었습니다. 장치에 USB Companion 펌웨어가 있는지 확인하세요.",
|
||||
"usbFallbackDeviceName": "웹 시리얼 장치",
|
||||
"usbStatus_notConnected": "USB 장치를 선택합니다.",
|
||||
"usbStatus_connecting": "USB 장치에 연결 중...",
|
||||
@@ -131,13 +131,13 @@
|
||||
},
|
||||
"scanner_stop": "멈춰",
|
||||
"scanner_scan": "스캔",
|
||||
"scanner_bluetoothOff": "블루투스는 꺼져 있습니다.",
|
||||
"scanner_bluetoothOffMessage": "블루투스를 켜서 장치를 검색해주세요.",
|
||||
"scanner_chromeRequired": "크롬 브라우저 필요",
|
||||
"scanner_chromeRequiredMessage": "이 웹 애플리케이션은 블루투드 지원을 위해 Google Chrome 또는 Chromium 기반 브라우저가 필요합니다.",
|
||||
"scanner_enableBluetooth": "블루투스 활성화",
|
||||
"scanner_bluetoothOff": "블루투스가 꺼져 있습니다.",
|
||||
"scanner_bluetoothOffMessage": "기기를 검색하려면 블루투스를 켜세요.",
|
||||
"scanner_chromeRequired": "Chrome 브라우저 필요",
|
||||
"scanner_chromeRequiredMessage": "이 웹 앱은 블루투스 지원을 위해 Google Chrome 또는 Chromium 기반 브라우저가 필요합니다.",
|
||||
"scanner_enableBluetooth": "블루투스 켜기",
|
||||
"device_quickSwitch": "빠른 전환",
|
||||
"device_meshcore": "메쉬코어",
|
||||
"device_meshcore": "MeshCore",
|
||||
"settings_title": "설정",
|
||||
"settings_deviceInfo": "장치 정보",
|
||||
"settings_appSettings": "앱 설정",
|
||||
@@ -148,7 +148,7 @@
|
||||
"settings_nodeNameHint": "노드 이름을 입력하세요",
|
||||
"settings_nodeNameUpdated": "이름 변경",
|
||||
"settings_radioSettings": "라디오 설정",
|
||||
"settings_radioSettingsSubtitle": "주파수, 전력, 스펙트럼",
|
||||
"settings_radioSettingsSubtitle": "주파수, 전력, 확산 계수",
|
||||
"settings_radioSettingsUpdated": "라디오 설정이 업데이트되었습니다.",
|
||||
"settings_location": "위치",
|
||||
"settings_locationSubtitle": "GPS 좌표",
|
||||
@@ -169,26 +169,26 @@
|
||||
"settings_privacyModeEnabled": "개인 정보 보호 모드 활성화",
|
||||
"settings_privacyModeDisabled": "개인 정보 보호 모드 비활성화",
|
||||
"settings_actions": "행동",
|
||||
"settings_deleteAllPaths": "Delete All Paths",
|
||||
"settings_deleteAllPathsSubtitle": "Clear all path data from contacts.",
|
||||
"settings_deleteAllPaths": "모든 경로 삭제",
|
||||
"settings_deleteAllPathsSubtitle": "연락처의 모든 경로 데이터를 지웁니다.",
|
||||
"settings_sendAdvertisement": "광고 전송",
|
||||
"settings_sendAdvertisementSubtitle": "방송 활동",
|
||||
"settings_advertisementSent": "광고 전송",
|
||||
"settings_syncTime": "동기화 시간",
|
||||
"settings_sendAdvertisementSubtitle": "현재 존재를 방송합니다.",
|
||||
"settings_advertisementSent": "광고가 전송되었습니다.",
|
||||
"settings_syncTime": "시간 동기화",
|
||||
"settings_syncTimeSubtitle": "장치 시계를 휴대폰 시간으로 설정",
|
||||
"settings_timeSynchronized": "시간 동기화",
|
||||
"settings_refreshContacts": "연락처 갱신",
|
||||
"settings_timeSynchronized": "시간이 동기화되었습니다.",
|
||||
"settings_refreshContacts": "연락처 새로고침",
|
||||
"settings_refreshContactsSubtitle": "장치에서 연락처 목록을 다시 불러오기",
|
||||
"settings_rebootDevice": "장치 재부팅",
|
||||
"settings_rebootDeviceSubtitle": "MeshCore 장치를 재부팅하세요.",
|
||||
"settings_rebootDeviceConfirm": "정말로 장치를 재부팅하시겠습니까? 이 경우 연결이 끊어집니다.",
|
||||
"settings_debug": "디버깅",
|
||||
"settings_rebootDeviceSubtitle": "MeshCore 장치를 재부팅합니다.",
|
||||
"settings_rebootDeviceConfirm": "정말 장치를 재부팅하시겠습니까? 연결이 끊어집니다.",
|
||||
"settings_debug": "디버그",
|
||||
"settings_bleDebugLog": "BLE 디버그 로그",
|
||||
"settings_bleDebugLogSubtitle": "BLE 명령어, 응답 및 원시 데이터",
|
||||
"settings_appDebugLog": "앱 디버깅 로그",
|
||||
"settings_appDebugLogSubtitle": "애플리케이션 디버깅 메시지",
|
||||
"settings_about": "소개",
|
||||
"settings_aboutVersion": "MeshCore Open {version} 버전",
|
||||
"settings_bleDebugLogSubtitle": "BLE 명령, 응답 및 원시 데이터",
|
||||
"settings_appDebugLog": "앱 디버그 로그",
|
||||
"settings_appDebugLogSubtitle": "애플리케이션 디버그 메시지",
|
||||
"settings_about": "정보",
|
||||
"settings_aboutVersion": "MeshCore Open v{version}",
|
||||
"@settings_aboutVersion": {
|
||||
"placeholders": {
|
||||
"version": {
|
||||
@@ -196,8 +196,8 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings_aboutLegalese": "2026년 MeshCore 오픈 소스 프로젝트",
|
||||
"settings_aboutDescription": "MeshCore LoRa 메시 네트워크 장치를 위한 오픈 소스 Flutter 클라이언트.",
|
||||
"settings_aboutLegalese": "2026 MeshCore 오픈 소스 프로젝트",
|
||||
"settings_aboutDescription": "MeshCore LoRa 메시 네트워크 장치를 위한 오픈소스 Flutter 클라이언트.",
|
||||
"settings_aboutOpenMeteoAttribution": "LOS 고도 데이터: Open-Meteo (CC BY 4.0)",
|
||||
"settings_infoName": "이름",
|
||||
"settings_infoId": "ID",
|
||||
@@ -206,19 +206,19 @@
|
||||
"settings_infoPublicKey": "공개 키",
|
||||
"settings_infoContactsCount": "연락처 수",
|
||||
"settings_infoChannelCount": "채널 수",
|
||||
"settings_presets": "기본 설정",
|
||||
"settings_presets": "프리셋",
|
||||
"settings_frequency": "주파수 (MHz)",
|
||||
"settings_frequencyHelper": "300.0 - 2500.0",
|
||||
"settings_frequencyInvalid": "유효하지 않은 주파수 (300-2500 MHz)",
|
||||
"settings_bandwidth": "대역폭",
|
||||
"settings_spreadingFactor": "분산 계수",
|
||||
"settings_codingRate": "코딩 속도",
|
||||
"settings_txPower": "TX 전력 (dBm)",
|
||||
"settings_txPower": "송신 전력 (dBm)",
|
||||
"settings_txPowerHelper": "0 - 22",
|
||||
"settings_txPowerInvalid": "유효하지 않은 TX 전력 (0-22 dBm)",
|
||||
"settings_txPowerInvalid": "유효하지 않은 송신 전력 (0-22 dBm)",
|
||||
"settings_clientRepeat": "오프그리드 반복",
|
||||
"settings_clientRepeatSubtitle": "이 장치가 다른 사람들을 위해 메시 패킷을 반복하도록 허용합니다.",
|
||||
"settings_clientRepeatFreqWarning": "오프그리드(무전력) 시스템 재연결에는 433MHz, 869MHz, 또는 918MHz 주파수가 필요합니다.",
|
||||
"settings_clientRepeatSubtitle": "이 장치가 다른 장치의 메시 패킷을 반복하도록 허용합니다.",
|
||||
"settings_clientRepeatFreqWarning": "오프그리드 반복에는 433MHz, 869MHz 또는 918MHz 주파수가 필요합니다.",
|
||||
"settings_error": "오류: {message}",
|
||||
"@settings_error": {
|
||||
"placeholders": {
|
||||
@@ -228,36 +228,36 @@
|
||||
}
|
||||
},
|
||||
"appSettings_title": "앱 설정",
|
||||
"appSettings_appearance": "외관",
|
||||
"appSettings_theme": "주제",
|
||||
"appSettings_themeSystem": "기본 설정",
|
||||
"appSettings_themeLight": "빛",
|
||||
"appSettings_themeDark": "어둡다",
|
||||
"appSettings_appearance": "모양",
|
||||
"appSettings_theme": "테마",
|
||||
"appSettings_themeSystem": "시스템 기본값",
|
||||
"appSettings_themeLight": "밝음",
|
||||
"appSettings_themeDark": "어두움",
|
||||
"appSettings_language": "언어",
|
||||
"appSettings_languageSystem": "기본 설정",
|
||||
"appSettings_languageEn": "영어",
|
||||
"appSettings_languageFr": "프랑스어",
|
||||
"appSettings_languageEs": "스페인어",
|
||||
"appSettings_languageDe": "독일어",
|
||||
"appSettings_languagePl": "폴란드",
|
||||
"appSettings_languagePl": "폴란드어",
|
||||
"appSettings_languageSl": "슬로베니아어",
|
||||
"appSettings_languagePt": "포르투갈어",
|
||||
"appSettings_languageIt": "이탈리아어",
|
||||
"appSettings_languageZh": "중국어",
|
||||
"appSettings_languageSv": "스웨덴어",
|
||||
"appSettings_languageNl": "네덜란드어",
|
||||
"appSettings_languageSk": "슬로베니아어",
|
||||
"appSettings_languageBg": "불가리",
|
||||
"appSettings_languageSk": "슬로바키아어",
|
||||
"appSettings_languageBg": "불가리아어",
|
||||
"appSettings_languageRu": "러시아어",
|
||||
"appSettings_languageUk": "우크라이나",
|
||||
"appSettings_languageUk": "우크라이나어",
|
||||
"appSettings_enableMessageTracing": "메시지 추적 기능 활성화",
|
||||
"appSettings_enableMessageTracingSubtitle": "메시지에 대한 상세한 경로 및 시간 정보를 표시",
|
||||
"appSettings_notifications": "알림",
|
||||
"appSettings_enableNotifications": "알림 활성화",
|
||||
"appSettings_enableNotificationsSubtitle": "메시지와 광고에 대한 알림을 받으세요.",
|
||||
"appSettings_notificationPermissionDenied": "알림 권한 거부",
|
||||
"appSettings_notificationsEnabled": "알림 기능 활성화",
|
||||
"appSettings_notificationsDisabled": "알림 기능 끄기",
|
||||
"appSettings_notificationsEnabled": "알림 사용",
|
||||
"appSettings_notificationsDisabled": "알림 사용 안 함",
|
||||
"appSettings_messageNotifications": "메시지 알림",
|
||||
"appSettings_messageNotificationsSubtitle": "새로운 메시지를 받을 때 알림 표시",
|
||||
"appSettings_channelMessageNotifications": "채널 메시지 알림",
|
||||
@@ -265,22 +265,22 @@
|
||||
"appSettings_advertisementNotifications": "광고 알림",
|
||||
"appSettings_advertisementNotificationsSubtitle": "새 노드가 발견되었을 때 알림 표시",
|
||||
"appSettings_messaging": "메시징",
|
||||
"appSettings_clearPathOnMaxRetry": "Max 재시도 시 경로 명확하게 설정",
|
||||
"appSettings_clearPathOnMaxRetrySubtitle": "5번의 전송 시도가 실패하면 연락 경로를 재설정",
|
||||
"appSettings_pathsWillBeCleared": "5번의 시도 실패 후, 해당 경로가 확보될 것입니다.",
|
||||
"appSettings_pathsWillNotBeCleared": "경로는 자동으로 정리되지 않습니다.",
|
||||
"appSettings_clearPathOnMaxRetry": "최대 재시도 시 경로 지우기",
|
||||
"appSettings_clearPathOnMaxRetrySubtitle": "전송 시도가 5번 실패하면 연락 경로를 재설정합니다.",
|
||||
"appSettings_pathsWillBeCleared": "5번 실패하면 해당 경로를 지웁니다.",
|
||||
"appSettings_pathsWillNotBeCleared": "경로를 자동으로 지우지 않습니다.",
|
||||
"appSettings_autoRouteRotation": "자동 경로 순환",
|
||||
"appSettings_autoRouteRotationSubtitle": "최적 경로와 방수 모드 사이를 전환",
|
||||
"appSettings_autoRouteRotationSubtitle": "최적 경로와 플러드 모드 사이를 전환합니다.",
|
||||
"appSettings_autoRouteRotationEnabled": "자동 경로 순환 기능 활성화",
|
||||
"appSettings_autoRouteRotationDisabled": "자동 경로 순환 기능 비활성화",
|
||||
"appSettings_maxRouteWeight": "최대 경로 무게",
|
||||
"appSettings_maxRouteWeightSubtitle": "한 경로가 성공적인 배송을 통해 누적할 수 있는 최대 무게",
|
||||
"appSettings_maxRouteWeight": "최대 경로 가중치",
|
||||
"appSettings_maxRouteWeightSubtitle": "한 경로가 성공적인 전송을 통해 누적할 수 있는 최대 가중치",
|
||||
"appSettings_initialRouteWeight": "초기 경로 가중치",
|
||||
"appSettings_initialRouteWeightSubtitle": "새롭게 발견된 경로의 초기 무게",
|
||||
"appSettings_routeWeightSuccessIncrement": "성공 횟수 증가",
|
||||
"appSettings_routeWeightSuccessIncrementSubtitle": "성공적으로 배송된 경로에 추가된 무게",
|
||||
"appSettings_routeWeightFailureDecrement": "오류 가중치 감소",
|
||||
"appSettings_routeWeightFailureDecrementSubtitle": "배송 실패 후 경로에서 제거된 무게",
|
||||
"appSettings_initialRouteWeightSubtitle": "새로 발견된 경로의 초기 가중치",
|
||||
"appSettings_routeWeightSuccessIncrement": "성공 시 증가",
|
||||
"appSettings_routeWeightSuccessIncrementSubtitle": "성공적으로 전송된 경로에 추가되는 가중치",
|
||||
"appSettings_routeWeightFailureDecrement": "실패 시 감소",
|
||||
"appSettings_routeWeightFailureDecrementSubtitle": "전송 실패 후 경로에서 제거되는 가중치",
|
||||
"appSettings_maxMessageRetries": "최대 메시지 재시도 횟수",
|
||||
"appSettings_maxMessageRetriesSubtitle": "메시지를 실패로 처리하기 전 시도 횟수",
|
||||
"path_routeWeight": "{weight}/{max}",
|
||||
@@ -295,8 +295,8 @@
|
||||
}
|
||||
},
|
||||
"appSettings_battery": "배터리",
|
||||
"appSettings_batteryChemistry": "배터리 화학",
|
||||
"appSettings_batteryChemistryPerDevice": "{deviceName} 당분간",
|
||||
"appSettings_batteryChemistry": "배터리 종류",
|
||||
"appSettings_batteryChemistryPerDevice": "{deviceName}별",
|
||||
"@appSettings_batteryChemistryPerDevice": {
|
||||
"placeholders": {
|
||||
"deviceName": {
|
||||
@@ -304,20 +304,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"appSettings_batteryChemistryConnectFirst": "장치를 선택하기 위해 연결",
|
||||
"appSettings_batteryChemistryConnectFirst": "배터리 종류를 선택하려면 먼저 장치를 연결하세요.",
|
||||
"appSettings_batteryNmc": "18650 NMC (3.0-4.2V)",
|
||||
"appSettings_batteryLifepo4": "LiFePO4 (2.6-3.65V)",
|
||||
"appSettings_batteryLipo": "리튬 폴리머 (3.0-4.2V)",
|
||||
"appSettings_mapDisplay": "지도 표시",
|
||||
"appSettings_showRepeaters": "반복 기능 표시",
|
||||
"appSettings_showRepeatersSubtitle": "지도에 반복자 노드를 표시",
|
||||
"appSettings_showRepeaters": "리피터 표시",
|
||||
"appSettings_showRepeatersSubtitle": "지도에 리피터 노드를 표시",
|
||||
"appSettings_showChatNodes": "채팅 노드 표시",
|
||||
"appSettings_showChatNodesSubtitle": "지도에 채팅 노드를 표시",
|
||||
"appSettings_showOtherNodes": "다른 노드 표시",
|
||||
"appSettings_showOtherNodesSubtitle": "지도에서 다른 노드 유형을 표시",
|
||||
"appSettings_showOtherNodesSubtitle": "지도에 다른 노드 유형을 표시",
|
||||
"appSettings_timeFilter": "시간 필터",
|
||||
"appSettings_timeFilterShowAll": "모든 노드 표시",
|
||||
"appSettings_timeFilterShowLast": "지난 {hours} 시간 동안의 노드 표시",
|
||||
"appSettings_timeFilterShowLast": "최근 {hours}시간 동안의 노드 표시",
|
||||
"@appSettings_timeFilterShowLast": {
|
||||
"placeholders": {
|
||||
"hours": {
|
||||
@@ -325,17 +325,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"appSettings_mapTimeFilter": "지도 필터",
|
||||
"appSettings_showNodesDiscoveredWithin": "다음 내역에서 발견된 노드 표시:",
|
||||
"appSettings_allTime": "모든 시간",
|
||||
"appSettings_lastHour": "지난 시간",
|
||||
"appSettings_mapTimeFilter": "지도 시간 필터",
|
||||
"appSettings_showNodesDiscoveredWithin": "다음 기간 내에 발견된 노드 표시:",
|
||||
"appSettings_allTime": "전체 기간",
|
||||
"appSettings_lastHour": "지난 1시간",
|
||||
"appSettings_last6Hours": "지난 6시간",
|
||||
"appSettings_last24Hours": "지난 24시간",
|
||||
"appSettings_lastWeek": "지난 주",
|
||||
"appSettings_offlineMapCache": "오프라인 지도 캐시",
|
||||
"appSettings_unitsTitle": "단위",
|
||||
"appSettings_unitsMetric": "단위 (m / km)",
|
||||
"appSettings_unitsImperial": "제국 (피트/마일)",
|
||||
"appSettings_unitsMetric": "미터법 (m / km)",
|
||||
"appSettings_unitsImperial": "영국식 (ft / mi)",
|
||||
"appSettings_noAreaSelected": "선택된 영역 없음",
|
||||
"appSettings_areaSelectedZoom": "선택된 영역 (줌 레벨: {minZoom} - {maxZoom})",
|
||||
"@appSettings_areaSelectedZoom": {
|
||||
@@ -348,9 +348,9 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"appSettings_debugCard": "디버깅",
|
||||
"appSettings_appDebugLogging": "앱 디버깅 로깅",
|
||||
"appSettings_appDebugLoggingSubtitle": "로그 앱 디버깅 메시지 (문제 해결을 위한)",
|
||||
"appSettings_debugCard": "디버그",
|
||||
"appSettings_appDebugLogging": "앱 디버그 로깅",
|
||||
"appSettings_appDebugLoggingSubtitle": "문제 해결을 위한 앱 디버그 메시지를 기록합니다.",
|
||||
"appSettings_appDebugLoggingEnabled": "앱 디버깅 로깅 활성화",
|
||||
"appSettings_appDebugLoggingDisabled": "앱 디버깅 로깅 비활성화",
|
||||
"contacts_title": "연락처",
|
||||
@@ -454,7 +454,7 @@
|
||||
"contacts_noContactsMatchFilter": "입력하신 검색 조건과 일치하는 연락처가 없습니다.",
|
||||
"contacts_noMembers": "회원 없음",
|
||||
"contacts_lastSeenNow": "최근",
|
||||
"contacts_lastSeenMinsAgo": "~ {minutes} min.",
|
||||
"contacts_lastSeenMinsAgo": "~ {minutes}분",
|
||||
"@contacts_lastSeenMinsAgo": {
|
||||
"placeholders": {
|
||||
"minutes": {
|
||||
@@ -463,7 +463,7 @@
|
||||
}
|
||||
},
|
||||
"contacts_lastSeenHourAgo": "약 1시간",
|
||||
"contacts_lastSeenHoursAgo": "~ {hours} hours",
|
||||
"contacts_lastSeenHoursAgo": "~ {hours}시간",
|
||||
"@contacts_lastSeenHoursAgo": {
|
||||
"placeholders": {
|
||||
"hours": {
|
||||
@@ -721,7 +721,7 @@
|
||||
}
|
||||
},
|
||||
"debugFrame_textTypeCli": "명령줄 인터페이스 (CLI)",
|
||||
"debugFrame_textTypePlain": "단순한",
|
||||
"debugFrame_textTypePlain": "일반 텍스트",
|
||||
"debugFrame_text": "- 텍스트: \"{text}\"",
|
||||
"@debugFrame_text": {
|
||||
"placeholders": {
|
||||
@@ -735,7 +735,7 @@
|
||||
"chat_ShowAllPaths": "모든 경로 표시",
|
||||
"chat_routingMode": "라우팅 방식",
|
||||
"chat_autoUseSavedPath": "자동 (저장된 경로 사용)",
|
||||
"chat_forceFloodMode": "강수 모드 활성화",
|
||||
"chat_forceFloodMode": "플러드 모드 활성화",
|
||||
"chat_recentAckPaths": "최근 사용한 ACK 경로 (사용하려면 탭):",
|
||||
"chat_pathHistoryFull": "이력 기록은 이미 가득 차 있습니다. 항목을 삭제하여 새로운 항목을 추가할 수 있습니다.",
|
||||
"chat_hopSingular": "점프",
|
||||
@@ -748,20 +748,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"chat_successes": "성공 사례",
|
||||
"chat_successes": "성공",
|
||||
"chat_removePath": "경로 제거",
|
||||
"chat_noPathHistoryYet": "아직 경로 기록이 없습니다.\n경로를 찾기 위해 메시지를 보내세요.",
|
||||
"chat_pathActions": "경로 작업:",
|
||||
"chat_setCustomPath": "사용자 지정 경로 설정",
|
||||
"chat_setCustomPathSubtitle": "수동으로 경로를 지정",
|
||||
"chat_clearPath": "명확한 길",
|
||||
"chat_clearPathSubtitle": "다음 전송 시, 강제 재전송 설정",
|
||||
"chat_clearPath": "경로 지우기",
|
||||
"chat_clearPathSubtitle": "다음 전송 시 강제로 새 경로를 찾습니다.",
|
||||
"chat_pathCleared": "경로가 확보되었습니다. 다음 메시지는 경로를 다시 찾을 것입니다.",
|
||||
"chat_floodModeSubtitle": "앱 바에서 라우팅 스위치를 사용",
|
||||
"chat_floodModeEnabled": "홍수 모드 활성화됨. 앱 바의 경로 아이콘을 사용하여 다시 전환할 수 있습니다.",
|
||||
"chat_floodModeSubtitle": "앱 바의 라우팅 스위치를 사용하세요.",
|
||||
"chat_floodModeEnabled": "플러드 모드가 활성화되었습니다. 앱 바의 경로 아이콘으로 다시 전환할 수 있습니다.",
|
||||
"chat_fullPath": "전체 경로",
|
||||
"chat_pathDetailsNotAvailable": "경로 정보는 아직 제공되지 않습니다. 메시지를 보내어 다시 시도해 보세요.",
|
||||
"chat_pathSetHops": "Path set: {hopCount} {hopCount, plural, =1{hop} other{hops}} - {status}",
|
||||
"chat_pathSetHops": "경로 설정: {hopCount} {hopCount, plural, =1{홉} other{홉}} - {status}",
|
||||
"@chat_pathSetHops": {
|
||||
"placeholders": {
|
||||
"hopCount": {
|
||||
@@ -772,16 +772,16 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"chat_pathSavedLocally": "로컬에 저장. 동기화 연결",
|
||||
"chat_pathDeviceConfirmed": "장치 확인 완료.",
|
||||
"chat_pathSavedLocally": "로컬에 저장되었습니다. 동기화할 장치에 연결하세요.",
|
||||
"chat_pathDeviceConfirmed": "장치가 확인되었습니다.",
|
||||
"chat_pathDeviceNotConfirmed": "기기가 아직 확인되지 않았습니다.",
|
||||
"chat_type": "종류",
|
||||
"chat_type": "유형",
|
||||
"chat_path": "경로",
|
||||
"chat_publicKey": "공개 키",
|
||||
"chat_compressOutgoingMessages": "전송되는 메시지 압축",
|
||||
"chat_floodForced": "홍수 (강제)",
|
||||
"chat_directForced": "직접적인 (강제적인)",
|
||||
"chat_hopsForced": "{count}번 띄우기 (강제)",
|
||||
"chat_floodForced": "플러드 (강제)",
|
||||
"chat_directForced": "직접 (강제)",
|
||||
"chat_hopsForced": "{count}홉 (강제)",
|
||||
"@chat_hopsForced": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
@@ -789,7 +789,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"chat_floodAuto": "홍수 (자동)",
|
||||
"chat_floodAuto": "플러드 (자동)",
|
||||
"chat_direct": "직접",
|
||||
"chat_poiShared": "공유된 POI",
|
||||
"chat_unread": "읽지 않음: {count}",
|
||||
@@ -905,7 +905,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"mapCache_cachedTilesWithFailed": "Cached {downloaded} tiles ({failed} failed)",
|
||||
"mapCache_cachedTilesWithFailed": "캐시된 타일 {downloaded}개 ({failed}개 실패)",
|
||||
"@mapCache_cachedTilesWithFailed": {
|
||||
"placeholders": {
|
||||
"downloaded": {
|
||||
@@ -931,7 +931,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"mapCache_downloadedTiles": "Downloaded {completed} / {total}",
|
||||
"mapCache_downloadedTiles": "다운로드됨 {completed} / {total}",
|
||||
"@mapCache_downloadedTiles": {
|
||||
"placeholders": {
|
||||
"completed": {
|
||||
@@ -978,7 +978,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"time_hoursAgo": "{hours}h ago",
|
||||
"time_hoursAgo": "{hours}시간 전",
|
||||
"@time_hoursAgo": {
|
||||
"placeholders": {
|
||||
"hours": {
|
||||
@@ -1040,8 +1040,8 @@
|
||||
}
|
||||
},
|
||||
"login_failedMessage": "로그인에 실패했습니다. 비밀번호가 잘못되었거나, 연결이 되지 않는 것 같습니다.",
|
||||
"common_reload": "다시 로드",
|
||||
"common_clear": "명확하게",
|
||||
"common_reload": "다시 불러오기",
|
||||
"common_clear": "지우기",
|
||||
"path_currentPath": "현재 경로: {path}",
|
||||
"@path_currentPath": {
|
||||
"placeholders": {
|
||||
@@ -1050,7 +1050,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"path_usingHopsPath": "Using {count} {count, plural, =1{hop} other{hops}} path",
|
||||
"path_usingHopsPath": "{count} {count, plural, =1{홉} other{홉}} 경로 사용 중",
|
||||
"@path_usingHopsPath": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
@@ -1577,7 +1577,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"neighbors_heardAgo": "Heard: {time} ago",
|
||||
"neighbors_heardAgo": "수신: {time} 전",
|
||||
"@neighbors_heardAgo": {
|
||||
"placeholders": {
|
||||
"time": {
|
||||
@@ -1641,7 +1641,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"channelPath_observedSomeOf": "{observed} of {total} hops",
|
||||
"channelPath_observedSomeOf": "{observed}/{total} 홉 관찰됨",
|
||||
"@channelPath_observedSomeOf": {
|
||||
"placeholders": {
|
||||
"observed": {
|
||||
@@ -1877,7 +1877,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"losAntennaB": "Antenna B: {value} {unit}",
|
||||
"losAntennaB": "안테나 B: {value} {unit}",
|
||||
"@losAntennaB": {
|
||||
"placeholders": {
|
||||
"value": {
|
||||
@@ -1890,7 +1890,7 @@
|
||||
},
|
||||
"losRun": "LOS (Loss of Signal) 상태로 전환",
|
||||
"losNoElevationData": "고도 정보 없음",
|
||||
"losProfileClear": "{distance} {distanceUnit}, clear LOS, min clearance {clearance} {heightUnit}",
|
||||
"losProfileClear": "{distance} {distanceUnit}, LOS 확보, 최소 여유 {clearance} {heightUnit}",
|
||||
"@losProfileClear": {
|
||||
"placeholders": {
|
||||
"distance": {
|
||||
@@ -1907,7 +1907,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"losProfileBlocked": "{distance} {distanceUnit}, blocked by {obstruction} {heightUnit}",
|
||||
"losProfileBlocked": "{distance} {distanceUnit}, {obstruction} {heightUnit}에 의해 차단됨",
|
||||
"@losProfileBlocked": {
|
||||
"placeholders": {
|
||||
"distance": {
|
||||
@@ -2305,10 +2305,10 @@
|
||||
"repeater_cliHelpStatsPackets": "(전송 속도만 표시) 패킷 수준의 통계 정보를 보여줍니다.",
|
||||
"repeater_cliHelpStatsRadio": "(특정 시리즈만 해당) 라디오 통계 정보를 표시합니다.",
|
||||
"repeater_cliHelpStatsCore": "(시리얼 번호만 표시) 핵심 펌웨어 통계 정보를 보여줍니다.",
|
||||
"common_done": "Done",
|
||||
"background_serviceTitle": "MeshCore running",
|
||||
"background_serviceText": "Keeping BLE connected",
|
||||
"appSettings_translationModelDeleted": "Deleted {name}",
|
||||
"common_done": "완료",
|
||||
"background_serviceTitle": "MeshCore 실행 중",
|
||||
"background_serviceText": "BLE 연결 유지 중",
|
||||
"appSettings_translationModelDeleted": "{name} 삭제됨",
|
||||
"@appSettings_translationModelDeleted": {
|
||||
"placeholders": {
|
||||
"name": {
|
||||
@@ -2316,7 +2316,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"appSettings_translationModelDeleteFailed": "Failed to delete: {error}",
|
||||
"appSettings_translationModelDeleteFailed": "삭제 실패: {error}",
|
||||
"@appSettings_translationModelDeleteFailed": {
|
||||
"placeholders": {
|
||||
"error": {
|
||||
@@ -2324,7 +2324,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"channels_channelUpdateFailed": "Failed to update channel: {error}",
|
||||
"channels_channelUpdateFailed": "채널 업데이트 실패: {error}",
|
||||
"@channels_channelUpdateFailed": {
|
||||
"placeholders": {
|
||||
"error": {
|
||||
@@ -2332,19 +2332,19 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_type": "Type",
|
||||
"map_path": "Path",
|
||||
"map_location": "Location",
|
||||
"map_estLocation": "Est. Location",
|
||||
"map_publicKey": "Public Key",
|
||||
"map_publicKeyPrefixHint": "e.g. ab12",
|
||||
"contact_typeChat": "Chat",
|
||||
"contact_typeRepeater": "Repeater",
|
||||
"contact_typeRoom": "Room",
|
||||
"contact_typeSensor": "Sensor",
|
||||
"contact_typeUnknown": "Unknown",
|
||||
"channels_via": "via {path}",
|
||||
"chat_score": "Score",
|
||||
"map_type": "유형",
|
||||
"map_path": "경로",
|
||||
"map_location": "위치",
|
||||
"map_estLocation": "추정 위치",
|
||||
"map_publicKey": "공개 키",
|
||||
"map_publicKeyPrefixHint": "예: ab12",
|
||||
"contact_typeChat": "채팅",
|
||||
"contact_typeRepeater": "리피터",
|
||||
"contact_typeRoom": "룸",
|
||||
"contact_typeSensor": "센서",
|
||||
"contact_typeUnknown": "알 수 없음",
|
||||
"channels_via": "{path} 경유",
|
||||
"chat_score": "점수",
|
||||
"settings_multiAck": "다중 ACK",
|
||||
"map_sharedAt": "공유됨",
|
||||
"@losBlockedSpotChip": {
|
||||
@@ -2386,7 +2386,7 @@
|
||||
"losBlockedSpotsTitle": "차단된 공간",
|
||||
"losSelectedObstructionTitle": "선택된 장애물",
|
||||
"losBlockedSpotChip": "{distance} {distanceUnit} • {obstruction} {heightUnit}",
|
||||
"losSelectedObstructionDetails": "Blocked by {obstruction} {heightUnit}, {distanceFromA} from A and {distanceFromB} from B ({distanceUnit}).",
|
||||
"losSelectedObstructionDetails": "{obstruction} {heightUnit}에 의해 차단됨, A에서 {distanceFromA}, B에서 {distanceFromB} ({distanceUnit})",
|
||||
"settings_companionDebugLog": "동반 디버깅 로그",
|
||||
"chat_newMessages": "새로운 메시지",
|
||||
"settings_companionDebugLogSubtitle": "BLE/TCP/USB 명령어, 응답 및 원시 데이터",
|
||||
@@ -2433,56 +2433,249 @@
|
||||
"messageStatus_pending": "발송",
|
||||
"messageStatus_sent": "발송",
|
||||
"messageStatus_delivered": "배송 완료",
|
||||
"common_undo": "취소",
|
||||
"messageStatus_failed": "발송 실패",
|
||||
"messageStatus_repeated": "반복적으로 들었습니다",
|
||||
"common_undo": "되돌리기",
|
||||
"messageStatus_pending": "전송 중",
|
||||
"messageStatus_sent": "전송됨",
|
||||
"messageStatus_delivered": "전달됨",
|
||||
"messageStatus_failed": "전송 실패",
|
||||
"messageStatus_repeated": "반복 수신됨",
|
||||
"contacts_searchOpen": "연락처 검색",
|
||||
"contacts_moreOptions": "더 많은 옵션",
|
||||
"contacts_searchClose": "검색 닫기",
|
||||
"routing_title": "라우팅",
|
||||
"routing_modeAuto": "자동",
|
||||
"routing_modeFlood": "홍수",
|
||||
"routing_modeManual": "사용 설명서",
|
||||
"routing_modeAutoHint": "가장 잘 알려진 경로를 자동으로 선택하고, 경로가 없을 경우에는 무작위로 경로를 선택합니다.",
|
||||
"routing_modeFloodHint": "모든 증폭기를 통해 방송됩니다. 가장 안정적이지만, 더 많은 송출 시간을 사용합니다.",
|
||||
"routing_modeManualHint": "항상 설정하신 정확한 경로를 따라 이동합니다.",
|
||||
"routing_modeFlood": "플러드",
|
||||
"routing_modeManual": "수동",
|
||||
"routing_modeAutoHint": "가장 잘 알려진 경로를 자동으로 선택하고, 경로가 없으면 플러드로 전환합니다.",
|
||||
"routing_modeFloodHint": "모든 중계기를 통해 방송합니다. 가장 안정적이지만 송신 시간을 더 많이 사용합니다.",
|
||||
"routing_modeManualHint": "항상 지정한 정확한 경로를 따릅니다.",
|
||||
"routing_currentRoute": "현재 경로",
|
||||
"routing_directNoHops": "직접 연결 – 중계 장치 사용 없이",
|
||||
"routing_directNoHops": "직접 연결 - 중계 없음",
|
||||
"routing_noPathYet": "아직 경로가 없습니다. 다음 메시지가 도착할 때까지 계속 탐색합니다.",
|
||||
"routing_floodBroadcast": "모든 증폭기를 통해 방송",
|
||||
"routing_floodBroadcast": "모든 중계기를 통해 방송",
|
||||
"routing_editPath": "경로 편집",
|
||||
"routing_forgetPath": "길을 잊어라",
|
||||
"routing_forgetPath": "경로 지우기",
|
||||
"routing_knownPaths": "알려진 경로",
|
||||
"routing_knownPathsHint": "해당 항목으로 전환하기 위한 경로를 선택합니다.",
|
||||
"routing_knownPathsHint": "전환할 경로를 선택하세요.",
|
||||
"routing_inUse": "사용 중",
|
||||
"routing_qualityStrong": "강력한 첫 번째 단계",
|
||||
"routing_qualityGood": "좋은 첫 시작",
|
||||
"routing_qualityFair": "처음 시도",
|
||||
"routing_qualityWorked": "완료됨",
|
||||
"routing_qualityFlood": "홍수 피해 상황을 통해 들었습니다.",
|
||||
"routing_qualityUntested": "검증되지 않음",
|
||||
"routing_lastWorked": "{when}에 일했습니다",
|
||||
"routing_neverWorked": "확인되지 않음",
|
||||
"routing_floodDelivery": "홍수 피해 지역 배송",
|
||||
"routing_qualityStrong": "매우 좋음",
|
||||
"routing_qualityGood": "좋음",
|
||||
"routing_qualityFair": "보통",
|
||||
"routing_qualityWorked": "작동함",
|
||||
"routing_qualityFlood": "플러드로 수신됨",
|
||||
"routing_qualityUntested": "미검증",
|
||||
"routing_lastWorked": "{when}에 작동",
|
||||
"routing_neverWorked": "아직 작동한 적 없음",
|
||||
"routing_floodDelivery": "플러드 전송",
|
||||
"pathEditor_title": "경로 만들기",
|
||||
"pathEditor_hopCounter": "64개의 홉 중 {count}",
|
||||
"pathEditor_noHops": "현재 홉은 추가되지 않았습니다. 아래의 탭을 사용하여 순서대로 추가하거나, 홉 없이 바로 전송하려면 \"홉 없음\"으로 저장하십시오.",
|
||||
"pathEditor_addHops": "홉을 순서대로 첨가해주세요.",
|
||||
"pathEditor_searchRepeaters": "반복 검색",
|
||||
"pathEditor_advancedHex": "고급: 원시 헥스 경로",
|
||||
"pathEditor_hexLabel": "헥스 접두사",
|
||||
"pathEditor_hexHelper": "각 홉마다 2개의 6자리 숫자, 쉼표로 구분",
|
||||
"pathEditor_hopCounter": "64개 중 {count} 홉",
|
||||
"pathEditor_noHops": "아직 홉이 추가되지 않았습니다. 아래 탭을 사용해 순서대로 추가하거나, 홉 없이 바로 보내려면 \"홉 없음\"으로 저장하세요.",
|
||||
"pathEditor_addHops": "홉을 순서대로 추가하세요.",
|
||||
"pathEditor_searchRepeaters": "리피터 검색",
|
||||
"pathEditor_advancedHex": "고급: 원시 HEX 경로",
|
||||
"pathEditor_hexLabel": "HEX 접두사",
|
||||
"pathEditor_hexHelper": "각 홉마다 2개의 16진수 바이트, 쉼표로 구분",
|
||||
"pathEditor_invalidTokens": "유효하지 않음: {tokens}",
|
||||
"pathEditor_tooManyHops": "최대 64개의 홉",
|
||||
"pathEditor_usePath": "이 경로를 사용하세요",
|
||||
"pathEditor_usePath": "이 경로 사용",
|
||||
"pathEditor_removeHop": "홉 제거",
|
||||
"pathEditor_unknownHop": "알 수 없는 중계기",
|
||||
"map_zoomIn": "줌 인",
|
||||
"routing_deliveryCounts": "{successes} delivered, {failures} failed",
|
||||
"map_zoomOut": "줌 아웃",
|
||||
"map_centerMap": "중심 지도",
|
||||
"chrome_bluetoothRequiresChromium": "웹 블루투스는 크롬 브라우저가 필요합니다.",
|
||||
"map_zoomIn": "확대",
|
||||
"routing_deliveryCounts": "{successes}건 성공, {failures}건 실패",
|
||||
"map_zoomOut": "축소",
|
||||
"map_centerMap": "지도 중앙 맞추기",
|
||||
"chrome_bluetoothRequiresChromium": "웹 블루투스는 Chromium 기반 브라우저가 필요합니다.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS 확인 완료",
|
||||
"pathTrace_legendInferred": "추론된 위치"
|
||||
"pathTrace_legendGpsConfirmed": "GPS로 확인됨",
|
||||
"pathTrace_legendInferred": "추정된 위치",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_activity": "활동",
|
||||
"map_searchHint": "노드 이름 또는 ID 검색",
|
||||
"map_online": "온라인",
|
||||
"scanner_bluetoothWebUnsupported": "브라우저에서는 블루투스를 사용할 수 없습니다. 대신 USB로 연결하세요.",
|
||||
"map_recent": "최근",
|
||||
"map_stale": "오래됨",
|
||||
"map_visible": "보임",
|
||||
"map_hidden": "숨김",
|
||||
"map_centerOnNode": "노드 중심으로 보기",
|
||||
"map_details": "세부 정보",
|
||||
"map_noGps": "GPS 없음",
|
||||
"map_noResults": "일치하는 노드가 없습니다.",
|
||||
"pathMap_viewSingle": "단일",
|
||||
"pathMap_viewCombined": "결합",
|
||||
"pathMap_play": "재생",
|
||||
"pathMap_pause": "일시 정지",
|
||||
"pathMap_replay": "다시 재생",
|
||||
"pathMap_stepBack": "이전 홉",
|
||||
"pathMap_stepForward": "다음 홉",
|
||||
"pathMap_animationOn": "패킷 애니메이션 표시",
|
||||
"pathMap_animationOff": "패킷 애니메이션 숨기기",
|
||||
"pathMap_hopOf": "{current}/{total} 홉",
|
||||
"pathMap_observedPaths": "관찰된 경로: {count}",
|
||||
"pathMap_primary": "주 경로",
|
||||
"pathMap_alternate": "대체 {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 홉} other{{count} 홉}}",
|
||||
"pathMap_legendShared": "공유 구간",
|
||||
"pathMap_legendEstimated": "추정 구간",
|
||||
"pathMap_sharedNodeCount": "{count}개의 경로에서 사용됨",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 홉은 위치가 없어 표시된 경로가 일부입니다} other{{count} 홉은 위치가 없어 표시된 경로가 일부입니다}}",
|
||||
"pathMap_showAllPaths": "모두 보기",
|
||||
"pathMap_hidePath": "경로 숨기기",
|
||||
"pathMap_showPath": "경로 표시",
|
||||
"pathMap_collapsePanel": "패널 접기",
|
||||
"pathMap_expandPanel": "패널 펼치기",
|
||||
"pathMap_noLocation": "위치 없음",
|
||||
"pathMap_followPacket": "패킷 고정",
|
||||
"pathMap_unfollowPacket": "패킷 고정 해제",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS",
|
||||
"@channels_cyr2latSettingsDialogWrongJSON": {
|
||||
"placeholders": {
|
||||
"error": {}
|
||||
}
|
||||
},
|
||||
"@channels_via": {
|
||||
"placeholders": {
|
||||
"path": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@settings_cyr2latProfileDeleteDscr": {
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_altitudeValue": {
|
||||
"placeholders": {
|
||||
"meters": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_analogValue": {
|
||||
"placeholders": {
|
||||
"value": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_concentrationValue": {
|
||||
"placeholders": {
|
||||
"ppm": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_directionValue": {
|
||||
"placeholders": {
|
||||
"degrees": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_distanceValue": {
|
||||
"placeholders": {
|
||||
"meters": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_energyValue": {
|
||||
"placeholders": {
|
||||
"kilowattHours": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_frequencyValue": {
|
||||
"placeholders": {
|
||||
"hertz": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_luminosityValue": {
|
||||
"placeholders": {
|
||||
"lux": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_percentageValue": {
|
||||
"placeholders": {
|
||||
"percent": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_powerValue": {
|
||||
"placeholders": {
|
||||
"watts": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@telemetry_pressureValue": {
|
||||
"placeholders": {
|
||||
"hpa": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+275
-276
File diff suppressed because it is too large
Load Diff
+367
-377
File diff suppressed because it is too large
Load Diff
+293
-295
File diff suppressed because it is too large
Load Diff
+232
-239
File diff suppressed because it is too large
Load Diff
+1087
-1111
File diff suppressed because it is too large
Load Diff
+262
-265
File diff suppressed because it is too large
Load Diff
+388
-396
File diff suppressed because it is too large
Load Diff
+212
-210
File diff suppressed because it is too large
Load Diff
@@ -319,7 +319,7 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Bluetooth is niet beschikbaar in de browser. Verbind dan via USB.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Snelle overschakeling';
|
||||
@@ -1726,10 +1726,10 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
String get map_title => 'Kaart van de knopen';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Zoek op naam of ID van de knoop';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Activiteit';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
@@ -1738,25 +1738,25 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
String get map_recent => 'Recent';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Verouderd';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Zichtbaar';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Verborgen';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Centreer op node';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Geen GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Geen overeenkomende nodes';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Zichtlijn';
|
||||
@@ -4502,48 +4502,48 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Afgeleide positie';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Enkel';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Gezamenlijk';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Afspelen';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Pauze';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Herhalen';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Vorige hop';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Volgende hop';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Pakketanimatie tonen';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Pakketanimatie verbergen';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Hop $current van $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Waargenomen paden: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Primair';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Alternatief $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4563,14 +4563,14 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Gedeeld segment';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Geschat segment';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Gebruikt door $count paden';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4578,33 +4578,34 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other:
|
||||
'$count hops hebben geen locatie — het weergegeven pad is onvolledig',
|
||||
one: '1 hop heeft geen locatie — het weergegeven pad is onvolledig',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Toon alles';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Verberg pad';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Toon pad';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Paneel inklappen';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Paneel uitklappen';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Geen locatie';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Weergave vergrendelen op pakket';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Weergave ontgrendelen van pakket';
|
||||
}
|
||||
|
||||
@@ -324,7 +324,7 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Bluetooth nie jest dostępny w przeglądarce. Połącz się przez USB.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Szybka zmiana';
|
||||
@@ -1755,37 +1755,37 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
String get map_title => 'Mapa węzłów';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Wyszukaj nazwę lub identyfikator węzła';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Aktywność';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Ostatnie';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Nieaktualne';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Widoczny';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Ukryty';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Wyśrodkuj na węźle';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Szczegóły';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Brak GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Brak pasujących węzłów';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Linia wzroku';
|
||||
@@ -4540,48 +4540,48 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Wywnioskowana pozycja';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Pojedyncza';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Połączone';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Odtwórz';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Wstrzymaj';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Odtwórz ponownie';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Poprzedni skok';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Następny skok';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Pokaż animację pakietu';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Ukryj animację pakietu';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Skok $current z $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Obserwowane trasy: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Główna';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Alt. $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4589,8 +4589,10 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count skoku',
|
||||
many: '$count skoków',
|
||||
few: '$count skoki',
|
||||
one: '1 skok',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4601,14 +4603,14 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Wspólny segment';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Szacunkowy segment';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Wykorzystywane przez $count ścieżek';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4616,33 +4618,38 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other:
|
||||
'$count skoku nie ma lokalizacji — pokazana ścieżka jest niekompletna',
|
||||
many:
|
||||
'$count skoków nie ma lokalizacji — pokazana ścieżka jest niekompletna',
|
||||
few:
|
||||
'$count skoki nie mają lokalizacji — pokazana ścieżka jest niekompletna',
|
||||
one: '1 skok nie ma lokalizacji — pokazana ścieżka jest niekompletna',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Pokaż wszystkie';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Ukryj ścieżkę';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Wyświetl trasę';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Zwiń panel';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Rozwiń panel';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Brak lokalizacji';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Śledź pakiet';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Przestań śledzić pakiet';
|
||||
}
|
||||
|
||||
@@ -322,7 +322,7 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'A funcionalidade Bluetooth não está disponível no navegador. Conecte-se via USB em vez disso.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Mudar rapidamente';
|
||||
@@ -1739,37 +1739,37 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
String get map_title => 'Mapa de Nós';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Pesquisar por nome ou ID do nó';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Atividade';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Recente';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Vencido';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Visível';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Escondido';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Centralizar no nó';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Detalhes';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Sem GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Nenhum nó encontrado';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Linha de visão';
|
||||
@@ -4519,44 +4519,44 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Posição inferida';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Único';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Combinado';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Reproduzir';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Pausa';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Repetir';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Salto anterior';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Próximo salto';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Exibir animação do pacote';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Ocultar a animação do pacote';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Salto $current de $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Caminhos observados: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Primário';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
@@ -4568,8 +4568,8 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count saltos',
|
||||
one: '1 salto',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4580,14 +4580,14 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Segmento compartilhado';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Segmento estimado';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Utilizado em $count caminhos';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4595,33 +4595,33 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other: '$count saltos não têm localização — o caminho mostrado é parcial',
|
||||
one: '1 salto não tem localização — o caminho mostrado é parcial',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Mostrar tudo';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Esconder caminho';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Mostrar o caminho';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Recolher painel';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Expandir painel';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Sem localização';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Fixar vista no pacote';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Liberar vista do pacote';
|
||||
}
|
||||
|
||||
@@ -322,7 +322,7 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Bluetooth недоступен в браузере. Подключитесь через USB.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Быстрое переключение';
|
||||
@@ -1744,37 +1744,37 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
String get map_title => 'Карта нод';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Поиск по имени или ID узла';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Активность';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
String get map_online => 'Онлайн';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Недавно';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Устаревший';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Видимый';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Скрытый';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Центрировать на узле';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Детали';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Без GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Не найдено соответствующих узлов';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Линия видимости';
|
||||
@@ -4535,48 +4535,48 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Выведенная позиция';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Одиночный';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Объединённые';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Воспроизвести';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Пауза';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Повтор';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Предыдущий хоп';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Следующий хоп';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Показать анимацию пакета';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Скрыть анимацию пакета';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Хоп $current из $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Наблюдаемые маршруты: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Основной';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Альт $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4584,8 +4584,10 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count хопов',
|
||||
many: '$count хопов',
|
||||
few: '$count хопа',
|
||||
one: '$count хоп',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4596,14 +4598,14 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Общий сегмент';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Расчётный сегмент';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Используется в $count маршрутах';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4611,33 +4613,35 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other: '$count хопов не имеют координат — показанный путь неполный',
|
||||
many: '$count хопов не имеют координат — показанный путь неполный',
|
||||
few: '$count хопа не имеют координат — показанный путь неполный',
|
||||
one: '$count хоп не имеет координат — показанный путь неполный',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Показать всё';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Скрыть путь';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Показать маршрут';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Скрыть панель';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Расширить панель';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Нет координат';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Следить за пакетом';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Не следить за пакетом';
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Funkcia Bluetooth nie je dostupná v prehliadači. Prepojte sa pomocou USB.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Rýchle prepínač';
|
||||
@@ -1731,37 +1731,37 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
String get map_title => 'Mapa uzlov';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Vyhľadajte podľa názvu alebo ID uzla';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Aktivita';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Nedávne';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Neaktuálne';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Viditeľný';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Skrytý';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Nacentrovať na uzol';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Podrobnosti';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Bez GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Nenašli sa žiadne zodpovedajúce uzly.';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Úroveň výhľadu';
|
||||
@@ -4501,48 +4501,48 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Odvodená poloha';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Jednotlivý';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Spojené';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Prehrať';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Pozastaviť';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Prehrať znova';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Predchádzajúci skok';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Nasledujúci skok';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Zobraziť animáciu paketu';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Skryť animáciu paketu';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Skok $current z $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Pozorované cesty: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Primárna';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Alternatívny $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4550,8 +4550,9 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count skokov',
|
||||
few: '$count skoky',
|
||||
one: '1 skok',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4562,14 +4563,14 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Spoločný segment';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Odhadovaný segment';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Používané $count cestami';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4577,33 +4578,34 @@ class AppLocalizationsSk extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other: '$count skokov nemá polohu — zobrazená trasa je neúplná',
|
||||
few: '$count skoky nemajú polohu — zobrazená trasa je neúplná',
|
||||
one: '1 skok nemá polohu — zobrazená trasa je neúplná',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Zobraziť všetky';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Skryť cestu';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Zobraziť trasu';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Zatvoriť panel';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Rozbaliť panel';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Bez polohy';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Uzamknúť pohľad na paket';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Odomknúť pohľad od paketu';
|
||||
}
|
||||
|
||||
@@ -320,7 +320,7 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Funkcija Bluetooth v brskalniku ni na voljo. Povežite se preko USB-ja namesto tega.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Hitro preklop';
|
||||
@@ -1724,37 +1724,37 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
String get map_title => 'Mapa omrežja';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Iščite ime ali ID vozlišča';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Dejavnost';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
String get map_online => 'V omrežju';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Nedavni';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Zastarelo';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Vidno';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Skrit';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Centriraj na vozlišče';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Podrobnosti';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Brez GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Ni ujemajočih se vozlišč';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Linija vida';
|
||||
@@ -4500,48 +4500,48 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Izpeljana lokacija';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Posamično';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Skupno';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Predvajaj';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Premor';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Ponovitev';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Prejšnji skok';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Naslednji skok';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Prikaži animacijo paketa';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Skrij animacijo paketa';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Skok $current od $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Opazovane poti: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Primarna';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Alternativa $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4549,8 +4549,10 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count skokov',
|
||||
few: '$count skoki',
|
||||
two: '2 skoka',
|
||||
one: '1 skok',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4561,14 +4563,14 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Deljen segment';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Ocenjen segment';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Uporablja $count poti';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4576,33 +4578,35 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other: '$count skokov nima lokacije — prikazana pot je delna',
|
||||
few: '$count skoki nimajo lokacije — prikazana pot je delna',
|
||||
two: '2 skoka nimata lokacije — prikazana pot je delna',
|
||||
one: '1 skok nima lokacije — prikazana pot je delna',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Pokaži vse';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Skrij pot';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Pokaži pot';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Strni ploščo';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Razširi ploščo';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Brez lokacije';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Zakleni pogled na paket';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Odkleni pogled od paketa';
|
||||
}
|
||||
|
||||
@@ -318,7 +318,7 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Bluetooth är inte tillgängligt i webbläsaren. Anslut istället via USB.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Snabb växling';
|
||||
@@ -1717,37 +1717,37 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
String get map_title => 'Nodkarta';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Sök efter nodens namn eller ID';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Aktivitet';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Nyligen';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Inaktuell';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Synlig';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Dold';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Centrera på nod';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Detaljer';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Ingen GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Inga matchande noder';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Synlinje';
|
||||
@@ -4474,48 +4474,48 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Antagen position';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Enkel';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Kombinerat';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Spela';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Pausa';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Återspela';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Föregående hopp';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Nästa hopp';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Visa paketanimering';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Dölj paketanimering';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Hopp $current av $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Observerade vägar: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Primär';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Alternativ $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4523,8 +4523,8 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count hopp',
|
||||
one: '1 hopp',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4535,14 +4535,14 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Delat segment';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Uppskattat segment';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Används av $count vägar';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4550,33 +4550,33 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other: '$count hopp saknar position — den visade vägen är ofullständig',
|
||||
one: '1 hopp saknar position — den visade vägen är ofullständig',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Visa allt';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Dölj väg';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Visa väg';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Fäll ihop panel';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Expandera panel';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Ingen position';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Lås vy till paket';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Lås upp vy från paket';
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
'Bluetooth недоступний у браузері. Підключіться через USB.';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => 'Швидке перемикання';
|
||||
@@ -1737,37 +1737,37 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
String get map_title => 'Карта вузлів';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => 'Назва або ID вузла';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => 'Активність';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
String get map_online => 'Онлайн';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => 'Нещодавні';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => 'Застаріло';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => 'Видимий';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => 'Прихований';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => 'Центрувати на вузлі';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => 'Деталі';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => 'Без GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => 'Не знайдено відповідних вузлів';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => 'Пряма видимість';
|
||||
@@ -4534,48 +4534,48 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => 'Висновок щодо положення';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => 'Один';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => 'Об\'єднаний';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => 'Відтворити';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => 'Призупинити';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => 'Повтор';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => 'Попередній перехід';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => 'Наступний перехід';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => 'Відобразити анімацію пакета';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => 'Приховати анімацію пакета';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return 'Перехід $current з $total';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return 'Зафіксовані маршрути: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => 'Основний';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return 'Альт. $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4583,8 +4583,10 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count переходів',
|
||||
many: '$count переходів',
|
||||
few: '$count переходи',
|
||||
one: '1 перехід',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4595,14 +4597,14 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => 'Об\'єднаний сегмент';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => 'Орієнтовний сегмент';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return 'Використовується $count шляхами';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4610,33 +4612,36 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other:
|
||||
'$count переходів не мають геопозиції — показаний шлях є частковим',
|
||||
many: '$count переходів не мають геопозиції — показаний шлях є частковим',
|
||||
few: '$count переходи не мають геопозиції — показаний шлях є частковим',
|
||||
one: '1 перехід не має геопозиції — показаний шлях є частковим',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => 'Показати все';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => 'Приховати шлях';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => 'Показати шлях';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => 'Згорнути панель';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => 'Розгорнути панель';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => 'Без геопозиції';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => 'Прив\'язати вигляд до пакету';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => 'Відв\'язати вигляд від пакету';
|
||||
}
|
||||
|
||||
@@ -306,8 +306,7 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
String get scanner_enableBluetooth => '启用蓝牙';
|
||||
|
||||
@override
|
||||
String get scanner_bluetoothWebUnsupported =>
|
||||
'Bluetooth isn\'t available in the browser. Connect over USB instead.';
|
||||
String get scanner_bluetoothWebUnsupported => '浏览器不支持蓝牙,请改用 USB 连接。';
|
||||
|
||||
@override
|
||||
String get device_quickSwitch => '快速切换';
|
||||
@@ -1639,37 +1638,37 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
String get map_title => '节点地图';
|
||||
|
||||
@override
|
||||
String get map_searchHint => 'Search node name or ID';
|
||||
String get map_searchHint => '搜索节点名称或ID';
|
||||
|
||||
@override
|
||||
String get map_activity => 'Activity';
|
||||
String get map_activity => '活动';
|
||||
|
||||
@override
|
||||
String get map_online => 'Online';
|
||||
String get map_online => '在线';
|
||||
|
||||
@override
|
||||
String get map_recent => 'Recent';
|
||||
String get map_recent => '最近';
|
||||
|
||||
@override
|
||||
String get map_stale => 'Stale';
|
||||
String get map_stale => '过时';
|
||||
|
||||
@override
|
||||
String get map_visible => 'Visible';
|
||||
String get map_visible => '可见';
|
||||
|
||||
@override
|
||||
String get map_hidden => 'Hidden';
|
||||
String get map_hidden => '已隐藏';
|
||||
|
||||
@override
|
||||
String get map_centerOnNode => 'Center on node';
|
||||
String get map_centerOnNode => '以节点为中心';
|
||||
|
||||
@override
|
||||
String get map_details => 'Details';
|
||||
String get map_details => '详细信息';
|
||||
|
||||
@override
|
||||
String get map_noGps => 'No GPS';
|
||||
String get map_noGps => '无 GPS';
|
||||
|
||||
@override
|
||||
String get map_noResults => 'No matching nodes';
|
||||
String get map_noResults => '未找到匹配的节点';
|
||||
|
||||
@override
|
||||
String get map_lineOfSight => '视线';
|
||||
@@ -4184,48 +4183,48 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
String get pathTrace_legendInferred => '推测的位置';
|
||||
|
||||
@override
|
||||
String get pathMap_viewSingle => 'Single';
|
||||
String get pathMap_viewSingle => '单条';
|
||||
|
||||
@override
|
||||
String get pathMap_viewCombined => 'Combined';
|
||||
String get pathMap_viewCombined => '综合';
|
||||
|
||||
@override
|
||||
String get pathMap_play => 'Play';
|
||||
String get pathMap_play => '播放';
|
||||
|
||||
@override
|
||||
String get pathMap_pause => 'Pause';
|
||||
String get pathMap_pause => '暂停';
|
||||
|
||||
@override
|
||||
String get pathMap_replay => 'Replay';
|
||||
String get pathMap_replay => '重播';
|
||||
|
||||
@override
|
||||
String get pathMap_stepBack => 'Previous hop';
|
||||
String get pathMap_stepBack => '上一跳';
|
||||
|
||||
@override
|
||||
String get pathMap_stepForward => 'Next hop';
|
||||
String get pathMap_stepForward => '下一跳';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOn => 'Show packet animation';
|
||||
String get pathMap_animationOn => '显示数据包动画';
|
||||
|
||||
@override
|
||||
String get pathMap_animationOff => 'Hide packet animation';
|
||||
String get pathMap_animationOff => '隐藏数据包动画';
|
||||
|
||||
@override
|
||||
String pathMap_hopOf(int current, int total) {
|
||||
return 'Hop $current of $total';
|
||||
return '第 $current 跳,共 $total 跳';
|
||||
}
|
||||
|
||||
@override
|
||||
String pathMap_observedPaths(int count) {
|
||||
return 'Observed paths: $count';
|
||||
return '观测到的路径:$count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_primary => 'Primary';
|
||||
String get pathMap_primary => '主路径';
|
||||
|
||||
@override
|
||||
String pathMap_alternate(int index) {
|
||||
return 'Alt $index';
|
||||
return '备用 $index';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4233,8 +4232,8 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops',
|
||||
one: '1 hop',
|
||||
other: '$count 跳',
|
||||
one: '1 跳',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
@@ -4245,14 +4244,14 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_legendShared => 'Shared segment';
|
||||
String get pathMap_legendShared => '共享路段';
|
||||
|
||||
@override
|
||||
String get pathMap_legendEstimated => 'Estimated segment';
|
||||
String get pathMap_legendEstimated => '估算路段';
|
||||
|
||||
@override
|
||||
String pathMap_sharedNodeCount(int count) {
|
||||
return 'Used by $count paths';
|
||||
return '已被 $count 条路径使用';
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -4260,33 +4259,33 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count hops have no location — the shown path is partial',
|
||||
one: '1 hop has no location — the shown path is partial',
|
||||
other: '$count 跳无位置信息 — 显示的路径不完整',
|
||||
one: '1 跳无位置信息 — 显示的路径不完整',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pathMap_showAllPaths => 'Show all';
|
||||
String get pathMap_showAllPaths => '显示全部';
|
||||
|
||||
@override
|
||||
String get pathMap_hidePath => 'Hide path';
|
||||
String get pathMap_hidePath => '隐藏路径';
|
||||
|
||||
@override
|
||||
String get pathMap_showPath => 'Show path';
|
||||
String get pathMap_showPath => '显示路径';
|
||||
|
||||
@override
|
||||
String get pathMap_collapsePanel => 'Collapse panel';
|
||||
String get pathMap_collapsePanel => '收起面板';
|
||||
|
||||
@override
|
||||
String get pathMap_expandPanel => 'Expand panel';
|
||||
String get pathMap_expandPanel => '展开面板';
|
||||
|
||||
@override
|
||||
String get pathMap_noLocation => 'No location';
|
||||
String get pathMap_noLocation => '无位置';
|
||||
|
||||
@override
|
||||
String get pathMap_followPacket => 'Lock view to packet';
|
||||
String get pathMap_followPacket => '锁定视图跟随数据包';
|
||||
|
||||
@override
|
||||
String get pathMap_unfollowPacket => 'Unlock view from packet';
|
||||
String get pathMap_unfollowPacket => '解锁视图跟随';
|
||||
}
|
||||
|
||||
+95
-1
@@ -2446,5 +2446,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth vereist een Chromium-browser.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS-locatie bevestigd",
|
||||
"pathTrace_legendInferred": "Afgeleide positie"
|
||||
"pathTrace_legendInferred": "Afgeleide positie",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_activity": "Activiteit",
|
||||
"map_searchHint": "Zoek op naam of ID van de knoop",
|
||||
"scanner_bluetoothWebUnsupported": "Bluetooth is niet beschikbaar in de browser. Verbind dan via USB.",
|
||||
"map_online": "Online",
|
||||
"map_recent": "Recent",
|
||||
"map_stale": "Verouderd",
|
||||
"map_visible": "Zichtbaar",
|
||||
"map_hidden": "Verborgen",
|
||||
"map_centerOnNode": "Centreer op node",
|
||||
"map_details": "Details",
|
||||
"map_noGps": "Geen GPS",
|
||||
"map_noResults": "Geen overeenkomende nodes",
|
||||
"pathMap_viewSingle": "Enkel",
|
||||
"pathMap_viewCombined": "Gezamenlijk",
|
||||
"pathMap_play": "Afspelen",
|
||||
"pathMap_pause": "Pauze",
|
||||
"pathMap_replay": "Herhalen",
|
||||
"pathMap_stepBack": "Vorige hop",
|
||||
"pathMap_stepForward": "Volgende hop",
|
||||
"pathMap_animationOn": "Pakketanimatie tonen",
|
||||
"pathMap_animationOff": "Pakketanimatie verbergen",
|
||||
"pathMap_hopOf": "Hop {current} van {total}",
|
||||
"pathMap_observedPaths": "Waargenomen paden: {count}",
|
||||
"pathMap_primary": "Primair",
|
||||
"pathMap_alternate": "Alternatief {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 hop} other{{count} hops}}",
|
||||
"pathMap_legendShared": "Gedeeld segment",
|
||||
"pathMap_legendEstimated": "Geschat segment",
|
||||
"pathMap_sharedNodeCount": "Gebruikt door {count} paden",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 hop heeft geen locatie — het weergegeven pad is onvolledig} other{{count} hops hebben geen locatie — het weergegeven pad is onvolledig}}",
|
||||
"pathMap_showAllPaths": "Toon alles",
|
||||
"pathMap_hidePath": "Verberg pad",
|
||||
"pathMap_showPath": "Toon pad",
|
||||
"pathMap_collapsePanel": "Paneel inklappen",
|
||||
"pathMap_expandPanel": "Paneel uitklappen",
|
||||
"pathMap_noLocation": "Geen locatie",
|
||||
"pathMap_followPacket": "Weergave vergrendelen op pakket",
|
||||
"pathMap_unfollowPacket": "Weergave ontgrendelen van pakket",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2484,5 +2484,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth wymaga przeglądarki Chromium.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS potwierdzone",
|
||||
"pathTrace_legendInferred": "Wywnioskowana pozycja"
|
||||
"pathTrace_legendInferred": "Wywnioskowana pozycja",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_online": "Online",
|
||||
"map_searchHint": "Wyszukaj nazwę lub identyfikator węzła",
|
||||
"scanner_bluetoothWebUnsupported": "Bluetooth nie jest dostępny w przeglądarce. Połącz się przez USB.",
|
||||
"map_activity": "Aktywność",
|
||||
"map_recent": "Ostatnie",
|
||||
"map_stale": "Nieaktualne",
|
||||
"map_visible": "Widoczny",
|
||||
"map_hidden": "Ukryty",
|
||||
"map_centerOnNode": "Wyśrodkuj na węźle",
|
||||
"map_details": "Szczegóły",
|
||||
"map_noGps": "Brak GPS",
|
||||
"map_noResults": "Brak pasujących węzłów",
|
||||
"pathMap_viewSingle": "Pojedyncza",
|
||||
"pathMap_viewCombined": "Połączone",
|
||||
"pathMap_play": "Odtwórz",
|
||||
"pathMap_pause": "Wstrzymaj",
|
||||
"pathMap_replay": "Odtwórz ponownie",
|
||||
"pathMap_stepBack": "Poprzedni skok",
|
||||
"pathMap_stepForward": "Następny skok",
|
||||
"pathMap_animationOn": "Pokaż animację pakietu",
|
||||
"pathMap_animationOff": "Ukryj animację pakietu",
|
||||
"pathMap_hopOf": "Skok {current} z {total}",
|
||||
"pathMap_observedPaths": "Obserwowane trasy: {count}",
|
||||
"pathMap_primary": "Główna",
|
||||
"pathMap_alternate": "Alt. {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 skok} few{{count} skoki} many{{count} skoków} other{{count} skoku}}",
|
||||
"pathMap_legendShared": "Wspólny segment",
|
||||
"pathMap_legendEstimated": "Szacunkowy segment",
|
||||
"pathMap_sharedNodeCount": "Wykorzystywane przez {count} ścieżek",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 skok nie ma lokalizacji — pokazana ścieżka jest niekompletna} few{{count} skoki nie mają lokalizacji — pokazana ścieżka jest niekompletna} many{{count} skoków nie ma lokalizacji — pokazana ścieżka jest niekompletna} other{{count} skoku nie ma lokalizacji — pokazana ścieżka jest niekompletna}}",
|
||||
"pathMap_showAllPaths": "Pokaż wszystkie",
|
||||
"pathMap_hidePath": "Ukryj ścieżkę",
|
||||
"pathMap_showPath": "Wyświetl trasę",
|
||||
"pathMap_collapsePanel": "Zwiń panel",
|
||||
"pathMap_expandPanel": "Rozwiń panel",
|
||||
"pathMap_noLocation": "Brak lokalizacji",
|
||||
"pathMap_followPacket": "Śledź pakiet",
|
||||
"pathMap_unfollowPacket": "Przestań śledzić pakiet",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2446,5 +2446,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "O Web Bluetooth requer um navegador Chromium.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS confirmado",
|
||||
"pathTrace_legendInferred": "Posição inferida"
|
||||
"pathTrace_legendInferred": "Posição inferida",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_online": "Online",
|
||||
"map_activity": "Atividade",
|
||||
"scanner_bluetoothWebUnsupported": "A funcionalidade Bluetooth não está disponível no navegador. Conecte-se via USB em vez disso.",
|
||||
"map_searchHint": "Pesquisar por nome ou ID do nó",
|
||||
"map_recent": "Recente",
|
||||
"map_stale": "Vencido",
|
||||
"map_visible": "Visível",
|
||||
"map_hidden": "Escondido",
|
||||
"map_centerOnNode": "Centralizar no nó",
|
||||
"map_details": "Detalhes",
|
||||
"map_noGps": "Sem GPS",
|
||||
"map_noResults": "Nenhum nó encontrado",
|
||||
"pathMap_viewSingle": "Único",
|
||||
"pathMap_viewCombined": "Combinado",
|
||||
"pathMap_play": "Reproduzir",
|
||||
"pathMap_pause": "Pausa",
|
||||
"pathMap_stepBack": "Salto anterior",
|
||||
"pathMap_replay": "Repetir",
|
||||
"pathMap_stepForward": "Próximo salto",
|
||||
"pathMap_animationOn": "Exibir animação do pacote",
|
||||
"pathMap_animationOff": "Ocultar a animação do pacote",
|
||||
"pathMap_hopOf": "Salto {current} de {total}",
|
||||
"pathMap_observedPaths": "Caminhos observados: {count}",
|
||||
"pathMap_primary": "Primário",
|
||||
"pathMap_alternate": "Alt {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 salto} other{{count} saltos}}",
|
||||
"pathMap_legendShared": "Segmento compartilhado",
|
||||
"pathMap_legendEstimated": "Segmento estimado",
|
||||
"pathMap_sharedNodeCount": "Utilizado em {count} caminhos",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 salto não tem localização — o caminho mostrado é parcial} other{{count} saltos não têm localização — o caminho mostrado é parcial}}",
|
||||
"pathMap_showAllPaths": "Mostrar tudo",
|
||||
"pathMap_hidePath": "Esconder caminho",
|
||||
"pathMap_showPath": "Mostrar o caminho",
|
||||
"pathMap_collapsePanel": "Recolher painel",
|
||||
"pathMap_expandPanel": "Expandir painel",
|
||||
"pathMap_noLocation": "Sem localização",
|
||||
"pathMap_followPacket": "Fixar vista no pacote",
|
||||
"pathMap_unfollowPacket": "Liberar vista do pacote",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -1749,5 +1749,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Для работы Web Bluetooth требуется браузер на основе Chromium.",
|
||||
"channels_communityShortId": "Идентификатор: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS подтверждено",
|
||||
"pathTrace_legendInferred": "Выведенная позиция"
|
||||
"pathTrace_legendInferred": "Выведенная позиция",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_searchHint": "Поиск по имени или ID узла",
|
||||
"map_online": "Онлайн",
|
||||
"scanner_bluetoothWebUnsupported": "Bluetooth недоступен в браузере. Подключитесь через USB.",
|
||||
"map_activity": "Активность",
|
||||
"map_recent": "Недавно",
|
||||
"map_stale": "Устаревший",
|
||||
"map_visible": "Видимый",
|
||||
"map_hidden": "Скрытый",
|
||||
"map_centerOnNode": "Центрировать на узле",
|
||||
"map_details": "Детали",
|
||||
"map_noGps": "Без GPS",
|
||||
"map_noResults": "Не найдено соответствующих узлов",
|
||||
"pathMap_viewSingle": "Одиночный",
|
||||
"pathMap_viewCombined": "Объединённые",
|
||||
"pathMap_play": "Воспроизвести",
|
||||
"pathMap_pause": "Пауза",
|
||||
"pathMap_replay": "Повтор",
|
||||
"pathMap_stepBack": "Предыдущий хоп",
|
||||
"pathMap_stepForward": "Следующий хоп",
|
||||
"pathMap_animationOn": "Показать анимацию пакета",
|
||||
"pathMap_animationOff": "Скрыть анимацию пакета",
|
||||
"pathMap_hopOf": "Хоп {current} из {total}",
|
||||
"pathMap_observedPaths": "Наблюдаемые маршруты: {count}",
|
||||
"pathMap_primary": "Основной",
|
||||
"pathMap_alternate": "Альт {index}",
|
||||
"pathMap_hopCount": "{count, plural, one{{count} хоп} few{{count} хопа} many{{count} хопов} other{{count} хопов}}",
|
||||
"pathMap_legendShared": "Общий сегмент",
|
||||
"pathMap_legendEstimated": "Расчётный сегмент",
|
||||
"pathMap_sharedNodeCount": "Используется в {count} маршрутах",
|
||||
"pathMap_partialAnimation": "{count, plural, one{{count} хоп не имеет координат — показанный путь неполный} few{{count} хопа не имеют координат — показанный путь неполный} many{{count} хопов не имеют координат — показанный путь неполный} other{{count} хопов не имеют координат — показанный путь неполный}}",
|
||||
"pathMap_showAllPaths": "Показать всё",
|
||||
"pathMap_hidePath": "Скрыть путь",
|
||||
"pathMap_collapsePanel": "Скрыть панель",
|
||||
"pathMap_showPath": "Показать маршрут",
|
||||
"pathMap_expandPanel": "Расширить панель",
|
||||
"pathMap_noLocation": "Нет координат",
|
||||
"pathMap_followPacket": "Следить за пакетом",
|
||||
"pathMap_unfollowPacket": "Не следить за пакетом",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2446,5 +2446,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth vyžaduje prehliadač Chromium.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS potvrdilo",
|
||||
"pathTrace_legendInferred": "Odvodená poloha"
|
||||
"pathTrace_legendInferred": "Odvodená poloha",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_online": "Online",
|
||||
"scanner_bluetoothWebUnsupported": "Funkcia Bluetooth nie je dostupná v prehliadači. Prepojte sa pomocou USB.",
|
||||
"map_searchHint": "Vyhľadajte podľa názvu alebo ID uzla",
|
||||
"map_activity": "Aktivita",
|
||||
"map_recent": "Nedávne",
|
||||
"map_stale": "Neaktuálne",
|
||||
"map_hidden": "Skrytý",
|
||||
"map_visible": "Viditeľný",
|
||||
"map_centerOnNode": "Nacentrovať na uzol",
|
||||
"map_details": "Podrobnosti",
|
||||
"map_noGps": "Bez GPS",
|
||||
"map_noResults": "Nenašli sa žiadne zodpovedajúce uzly.",
|
||||
"pathMap_viewSingle": "Jednotlivý",
|
||||
"pathMap_viewCombined": "Spojené",
|
||||
"pathMap_play": "Prehrať",
|
||||
"pathMap_pause": "Pozastaviť",
|
||||
"pathMap_replay": "Prehrať znova",
|
||||
"pathMap_stepBack": "Predchádzajúci skok",
|
||||
"pathMap_stepForward": "Nasledujúci skok",
|
||||
"pathMap_animationOn": "Zobraziť animáciu paketu",
|
||||
"pathMap_animationOff": "Skryť animáciu paketu",
|
||||
"pathMap_hopOf": "Skok {current} z {total}",
|
||||
"pathMap_observedPaths": "Pozorované cesty: {count}",
|
||||
"pathMap_primary": "Primárna",
|
||||
"pathMap_alternate": "Alternatívny {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 skok} few{{count} skoky} other{{count} skokov}}",
|
||||
"pathMap_legendShared": "Spoločný segment",
|
||||
"pathMap_legendEstimated": "Odhadovaný segment",
|
||||
"pathMap_sharedNodeCount": "Používané {count} cestami",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 skok nemá polohu — zobrazená trasa je neúplná} few{{count} skoky nemajú polohu — zobrazená trasa je neúplná} other{{count} skokov nemá polohu — zobrazená trasa je neúplná}}",
|
||||
"pathMap_showAllPaths": "Zobraziť všetky",
|
||||
"pathMap_hidePath": "Skryť cestu",
|
||||
"pathMap_showPath": "Zobraziť trasu",
|
||||
"pathMap_collapsePanel": "Zatvoriť panel",
|
||||
"pathMap_expandPanel": "Rozbaliť panel",
|
||||
"pathMap_noLocation": "Bez polohy",
|
||||
"pathMap_followPacket": "Uzamknúť pohľad na paket",
|
||||
"pathMap_unfollowPacket": "Odomknúť pohľad od paketu",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2446,5 +2446,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth zahteva brskalnik Chromium.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS potrdilo",
|
||||
"pathTrace_legendInferred": "Izpeljana lokacija"
|
||||
"pathTrace_legendInferred": "Izpeljana lokacija",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scanner_bluetoothWebUnsupported": "Funkcija Bluetooth v brskalniku ni na voljo. Povežite se preko USB-ja namesto tega.",
|
||||
"map_searchHint": "Iščite ime ali ID vozlišča",
|
||||
"map_online": "V omrežju",
|
||||
"map_activity": "Dejavnost",
|
||||
"map_recent": "Nedavni",
|
||||
"map_stale": "Zastarelo",
|
||||
"map_visible": "Vidno",
|
||||
"map_hidden": "Skrit",
|
||||
"map_centerOnNode": "Centriraj na vozlišče",
|
||||
"map_details": "Podrobnosti",
|
||||
"map_noGps": "Brez GPS",
|
||||
"map_noResults": "Ni ujemajočih se vozlišč",
|
||||
"pathMap_viewSingle": "Posamično",
|
||||
"pathMap_viewCombined": "Skupno",
|
||||
"pathMap_play": "Predvajaj",
|
||||
"pathMap_pause": "Premor",
|
||||
"pathMap_replay": "Ponovitev",
|
||||
"pathMap_stepBack": "Prejšnji skok",
|
||||
"pathMap_stepForward": "Naslednji skok",
|
||||
"pathMap_animationOn": "Prikaži animacijo paketa",
|
||||
"pathMap_animationOff": "Skrij animacijo paketa",
|
||||
"pathMap_hopOf": "Skok {current} od {total}",
|
||||
"pathMap_observedPaths": "Opazovane poti: {count}",
|
||||
"pathMap_primary": "Primarna",
|
||||
"pathMap_alternate": "Alternativa {index}",
|
||||
"pathMap_legendShared": "Deljen segment",
|
||||
"pathMap_legendEstimated": "Ocenjen segment",
|
||||
"pathMap_sharedNodeCount": "Uporablja {count} poti",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 skok nima lokacije — prikazana pot je delna} =2{2 skoka nimata lokacije — prikazana pot je delna} few{{count} skoki nimajo lokacije — prikazana pot je delna} other{{count} skokov nima lokacije — prikazana pot je delna}}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 skok} =2{2 skoka} few{{count} skoki} other{{count} skokov}}",
|
||||
"pathMap_showAllPaths": "Pokaži vse",
|
||||
"pathMap_hidePath": "Skrij pot",
|
||||
"pathMap_showPath": "Pokaži pot",
|
||||
"pathMap_collapsePanel": "Strni ploščo",
|
||||
"pathMap_expandPanel": "Razširi ploščo",
|
||||
"pathMap_noLocation": "Brez lokacije",
|
||||
"pathMap_followPacket": "Zakleni pogled na paket",
|
||||
"pathMap_unfollowPacket": "Odkleni pogled od paketa",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2446,5 +2446,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth kräver en Chromium-baserad webbläsare.",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS-verifierat",
|
||||
"pathTrace_legendInferred": "Antagen position"
|
||||
"pathTrace_legendInferred": "Antagen position",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_online": "Online",
|
||||
"scanner_bluetoothWebUnsupported": "Bluetooth är inte tillgängligt i webbläsaren. Anslut istället via USB.",
|
||||
"map_activity": "Aktivitet",
|
||||
"map_searchHint": "Sök efter nodens namn eller ID",
|
||||
"map_recent": "Nyligen",
|
||||
"map_stale": "Inaktuell",
|
||||
"map_visible": "Synlig",
|
||||
"map_hidden": "Dold",
|
||||
"map_centerOnNode": "Centrera på nod",
|
||||
"map_details": "Detaljer",
|
||||
"map_noGps": "Ingen GPS",
|
||||
"map_noResults": "Inga matchande noder",
|
||||
"pathMap_viewSingle": "Enkel",
|
||||
"pathMap_viewCombined": "Kombinerat",
|
||||
"pathMap_play": "Spela",
|
||||
"pathMap_pause": "Pausa",
|
||||
"pathMap_replay": "Återspela",
|
||||
"pathMap_stepBack": "Föregående hopp",
|
||||
"pathMap_stepForward": "Nästa hopp",
|
||||
"pathMap_animationOn": "Visa paketanimering",
|
||||
"pathMap_animationOff": "Dölj paketanimering",
|
||||
"pathMap_hopOf": "Hopp {current} av {total}",
|
||||
"pathMap_observedPaths": "Observerade vägar: {count}",
|
||||
"pathMap_primary": "Primär",
|
||||
"pathMap_alternate": "Alternativ {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 hopp} other{{count} hopp}}",
|
||||
"pathMap_legendShared": "Delat segment",
|
||||
"pathMap_legendEstimated": "Uppskattat segment",
|
||||
"pathMap_sharedNodeCount": "Används av {count} vägar",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 hopp saknar position — den visade vägen är ofullständig} other{{count} hopp saknar position — den visade vägen är ofullständig}}",
|
||||
"pathMap_showAllPaths": "Visa allt",
|
||||
"pathMap_hidePath": "Dölj väg",
|
||||
"pathMap_showPath": "Visa väg",
|
||||
"pathMap_collapsePanel": "Fäll ihop panel",
|
||||
"pathMap_expandPanel": "Expandera panel",
|
||||
"pathMap_noLocation": "Ingen position",
|
||||
"pathMap_unfollowPacket": "Lås upp vy från paket",
|
||||
"pathMap_followPacket": "Lås vy till paket",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2426,5 +2426,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth вимагає браузера на основі Chromium",
|
||||
"channels_communityShortId": "ID: {id}...",
|
||||
"pathTrace_legendGpsConfirmed": "GPS підтверджено",
|
||||
"pathTrace_legendInferred": "Висновок щодо положення"
|
||||
"pathTrace_legendInferred": "Висновок щодо положення",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scanner_bluetoothWebUnsupported": "Bluetooth недоступний у браузері. Підключіться через USB.",
|
||||
"map_searchHint": "Назва або ID вузла",
|
||||
"map_activity": "Активність",
|
||||
"map_online": "Онлайн",
|
||||
"map_recent": "Нещодавні",
|
||||
"map_stale": "Застаріло",
|
||||
"map_visible": "Видимий",
|
||||
"map_hidden": "Прихований",
|
||||
"map_centerOnNode": "Центрувати на вузлі",
|
||||
"map_details": "Деталі",
|
||||
"map_noGps": "Без GPS",
|
||||
"map_noResults": "Не знайдено відповідних вузлів",
|
||||
"pathMap_viewSingle": "Один",
|
||||
"pathMap_viewCombined": "Об'єднаний",
|
||||
"pathMap_play": "Відтворити",
|
||||
"pathMap_pause": "Призупинити",
|
||||
"pathMap_replay": "Повтор",
|
||||
"pathMap_stepForward": "Наступний перехід",
|
||||
"pathMap_stepBack": "Попередній перехід",
|
||||
"pathMap_animationOn": "Відобразити анімацію пакета",
|
||||
"pathMap_animationOff": "Приховати анімацію пакета",
|
||||
"pathMap_hopOf": "Перехід {current} з {total}",
|
||||
"pathMap_observedPaths": "Зафіксовані маршрути: {count}",
|
||||
"pathMap_primary": "Основний",
|
||||
"pathMap_alternate": "Альт. {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 перехід} few{{count} переходи} many{{count} переходів} other{{count} переходів}}",
|
||||
"pathMap_legendShared": "Об'єднаний сегмент",
|
||||
"pathMap_legendEstimated": "Орієнтовний сегмент",
|
||||
"pathMap_sharedNodeCount": "Використовується {count} шляхами",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 перехід не має геопозиції — показаний шлях є частковим} few{{count} переходи не мають геопозиції — показаний шлях є частковим} many{{count} переходів не мають геопозиції — показаний шлях є частковим} other{{count} переходів не мають геопозиції — показаний шлях є частковим}}",
|
||||
"pathMap_showAllPaths": "Показати все",
|
||||
"pathMap_hidePath": "Приховати шлях",
|
||||
"pathMap_showPath": "Показати шлях",
|
||||
"pathMap_collapsePanel": "Згорнути панель",
|
||||
"pathMap_expandPanel": "Розгорнути панель",
|
||||
"pathMap_noLocation": "Без геопозиції",
|
||||
"pathMap_followPacket": "Прив'язати вигляд до пакету",
|
||||
"pathMap_unfollowPacket": "Відв'язати вигляд від пакету",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS"
|
||||
}
|
||||
|
||||
+95
-1
@@ -2451,5 +2451,99 @@
|
||||
"chrome_bluetoothRequiresChromium": "Web Bluetooth 需要 Chromium 浏览器",
|
||||
"channels_communityShortId": "ID:{id}...",
|
||||
"pathTrace_legendGpsConfirmed": "通过GPS确认",
|
||||
"pathTrace_legendInferred": "推测的位置"
|
||||
"pathTrace_legendInferred": "推测的位置",
|
||||
"@pathMap_hopOf": {
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_observedPaths": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_alternate": {
|
||||
"placeholders": {
|
||||
"index": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_hopCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_gpsCount": {
|
||||
"placeholders": {
|
||||
"confirmed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_sharedNodeCount": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pathMap_partialAnimation": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"map_online": "在线",
|
||||
"scanner_bluetoothWebUnsupported": "浏览器不支持蓝牙,请改用 USB 连接。",
|
||||
"map_activity": "活动",
|
||||
"map_searchHint": "搜索节点名称或ID",
|
||||
"map_recent": "最近",
|
||||
"map_visible": "可见",
|
||||
"map_stale": "过时",
|
||||
"map_hidden": "已隐藏",
|
||||
"map_centerOnNode": "以节点为中心",
|
||||
"map_details": "详细信息",
|
||||
"map_noGps": "无 GPS",
|
||||
"map_noResults": "未找到匹配的节点",
|
||||
"pathMap_viewSingle": "单条",
|
||||
"pathMap_viewCombined": "综合",
|
||||
"pathMap_play": "播放",
|
||||
"pathMap_pause": "暂停",
|
||||
"pathMap_replay": "重播",
|
||||
"pathMap_stepBack": "上一跳",
|
||||
"pathMap_stepForward": "下一跳",
|
||||
"pathMap_animationOn": "显示数据包动画",
|
||||
"pathMap_animationOff": "隐藏数据包动画",
|
||||
"pathMap_hopOf": "第 {current} 跳,共 {total} 跳",
|
||||
"pathMap_observedPaths": "观测到的路径:{count}",
|
||||
"pathMap_primary": "主路径",
|
||||
"pathMap_alternate": "备用 {index}",
|
||||
"pathMap_hopCount": "{count, plural, =1{1 跳} other{{count} 跳}}",
|
||||
"pathMap_legendShared": "共享路段",
|
||||
"pathMap_legendEstimated": "估算路段",
|
||||
"pathMap_sharedNodeCount": "已被 {count} 条路径使用",
|
||||
"pathMap_showAllPaths": "显示全部",
|
||||
"pathMap_hidePath": "隐藏路径",
|
||||
"pathMap_showPath": "显示路径",
|
||||
"pathMap_collapsePanel": "收起面板",
|
||||
"pathMap_expandPanel": "展开面板",
|
||||
"pathMap_noLocation": "无位置",
|
||||
"pathMap_followPacket": "锁定视图跟随数据包",
|
||||
"pathMap_unfollowPacket": "解锁视图跟随",
|
||||
"pathMap_gpsCount": "{confirmed}/{total} GPS",
|
||||
"pathMap_partialAnimation": "{count, plural, =1{1 跳无位置信息 — 显示的路径不完整} other{{count} 跳无位置信息 — 显示的路径不完整}}"
|
||||
}
|
||||
|
||||
@@ -1466,114 +1466,136 @@ class _ChannelMessagePathMapScreenState
|
||||
border: Border.all(color: MeshPalette.line2),
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(12, 8, 4, 0),
|
||||
child: Row(
|
||||
child: DefaultTextStyle(
|
||||
style: const TextStyle(color: MeshPalette.ink),
|
||||
child: IconTheme(
|
||||
data: const IconThemeData(color: MeshPalette.ink),
|
||||
child: TextButtonTheme(
|
||||
data: TextButtonThemeData(
|
||||
style: TextButton.styleFrom(foregroundColor: MeshPalette.ink),
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(12, 8, 4, 0),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
l10n.channelPath_repeaterHops,
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
l10n.channelPath_repeaterHops,
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
formatDistance(
|
||||
selectedDisplay?.distanceMeters ??
|
||||
_pathDistance,
|
||||
isImperial: isImperial,
|
||||
),
|
||||
style: MeshTheme.mono(
|
||||
fontSize: 12,
|
||||
color: MeshPalette.ink2,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Text(
|
||||
formatDistance(
|
||||
selectedDisplay?.distanceMeters ??
|
||||
_pathDistance,
|
||||
isImperial: isImperial,
|
||||
const SizedBox(height: 4),
|
||||
PathMiniLegend(
|
||||
combined: combined,
|
||||
showInferred: false,
|
||||
),
|
||||
style: MeshTheme.mono(
|
||||
fontSize: 12,
|
||||
color: MeshPalette.ink2,
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
PathMiniLegend(
|
||||
combined: combined,
|
||||
showInferred: false,
|
||||
IconButton(
|
||||
visualDensity: VisualDensity.compact,
|
||||
icon: Icon(
|
||||
_panelCollapsed
|
||||
? Icons.expand_less
|
||||
: Icons.expand_more,
|
||||
size: 20,
|
||||
),
|
||||
tooltip: _panelCollapsed
|
||||
? l10n.pathMap_expandPanel
|
||||
: l10n.pathMap_collapsePanel,
|
||||
onPressed: () => setState(
|
||||
() => _panelCollapsed = !_panelCollapsed,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
visualDensity: VisualDensity.compact,
|
||||
icon: Icon(
|
||||
_panelCollapsed ? Icons.expand_less : Icons.expand_more,
|
||||
size: 20,
|
||||
),
|
||||
tooltip: _panelCollapsed
|
||||
? l10n.pathMap_expandPanel
|
||||
: l10n.pathMap_collapsePanel,
|
||||
onPressed: () =>
|
||||
setState(() => _panelCollapsed = !_panelCollapsed),
|
||||
PathAnimationControls(
|
||||
playback: _playback,
|
||||
selected: selectedDisplay,
|
||||
animationEnabled: _animationEnabled,
|
||||
onToggleAnimation: () => setState(() {
|
||||
_animationEnabled = !_animationEnabled;
|
||||
if (!_animationEnabled) _playback.stop();
|
||||
}),
|
||||
followEnabled: _followPacket,
|
||||
onToggleFollow: _toggleFollowPacket,
|
||||
),
|
||||
if (!_panelCollapsed) ...[
|
||||
if (selectedDisplay != null &&
|
||||
selectedDisplay.unresolvedHops > 0)
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(12, 0, 12, 4),
|
||||
child: Text(
|
||||
l10n.pathMap_partialAnimation(
|
||||
selectedDisplay.unresolvedHops,
|
||||
),
|
||||
style: TextStyle(
|
||||
fontSize: 10.5,
|
||||
color: MeshPalette.warn,
|
||||
),
|
||||
),
|
||||
),
|
||||
if (combined)
|
||||
PathSummaryList(
|
||||
paths: entries.map((e) => e.display).toList(),
|
||||
selectedId: selectedDisplay?.id ?? '',
|
||||
hiddenIds: _hiddenPathIds,
|
||||
isImperial: isImperial,
|
||||
onSelect: (display) {
|
||||
for (final entry in entries) {
|
||||
if (entry.display.id == display.id) {
|
||||
_selectEntry(entry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
onToggleVisibility: (display) =>
|
||||
_togglePathVisibility(
|
||||
display,
|
||||
entries,
|
||||
selectedDisplay,
|
||||
),
|
||||
onShowAll: () => setState(_hiddenPathIds.clear),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
Expanded(
|
||||
child: _buildHopListView(
|
||||
hops,
|
||||
selectedDisplay,
|
||||
hopUseCount,
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
PathAnimationControls(
|
||||
playback: _playback,
|
||||
selected: selectedDisplay,
|
||||
animationEnabled: _animationEnabled,
|
||||
onToggleAnimation: () => setState(() {
|
||||
_animationEnabled = !_animationEnabled;
|
||||
if (!_animationEnabled) _playback.stop();
|
||||
}),
|
||||
followEnabled: _followPacket,
|
||||
onToggleFollow: _toggleFollowPacket,
|
||||
),
|
||||
if (!_panelCollapsed) ...[
|
||||
if (selectedDisplay != null &&
|
||||
selectedDisplay.unresolvedHops > 0)
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(12, 0, 12, 4),
|
||||
child: Text(
|
||||
l10n.pathMap_partialAnimation(
|
||||
selectedDisplay.unresolvedHops,
|
||||
),
|
||||
style: TextStyle(fontSize: 10.5, color: MeshPalette.warn),
|
||||
),
|
||||
),
|
||||
if (combined)
|
||||
PathSummaryList(
|
||||
paths: entries.map((e) => e.display).toList(),
|
||||
selectedId: selectedDisplay?.id ?? '',
|
||||
hiddenIds: _hiddenPathIds,
|
||||
isImperial: isImperial,
|
||||
onSelect: (display) {
|
||||
for (final entry in entries) {
|
||||
if (entry.display.id == display.id) {
|
||||
_selectEntry(entry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
onToggleVisibility: (display) => _togglePathVisibility(
|
||||
display,
|
||||
entries,
|
||||
selectedDisplay,
|
||||
),
|
||||
onShowAll: () => setState(_hiddenPathIds.clear),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
Expanded(
|
||||
child: _buildHopListView(hops, selectedDisplay, hopUseCount),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -227,7 +227,13 @@ class MessageRetryService extends ChangeNotifier {
|
||||
void _onMessageResolved(String messageId, String contactKey) {
|
||||
if (_resolvedMessages.contains(messageId)) return;
|
||||
_resolvedMessages.add(messageId);
|
||||
_activeMessages.remove(messageId);
|
||||
// If cleanup already removed this message from the active set, it has
|
||||
// already pumped the queues; avoid double-pumping.
|
||||
if (!_activeMessages.remove(messageId)) return;
|
||||
_pumpQueues(contactKey);
|
||||
}
|
||||
|
||||
void _pumpQueues(String contactKey) {
|
||||
// Pump this contact's queue first, then any other contacts that are waiting.
|
||||
_sendNextForContact(contactKey);
|
||||
for (final key in _sendQueue.keys) {
|
||||
@@ -495,11 +501,17 @@ class MessageRetryService extends ChangeNotifier {
|
||||
(_, mapping) => mapping.messageId == messageId,
|
||||
);
|
||||
_expectedHashToMessageId.removeWhere((_, msgId) => msgId == messageId);
|
||||
final contactKey = _pendingContacts[messageId]?.publicKeyHex;
|
||||
_pendingMessages.remove(messageId);
|
||||
_pendingContacts.remove(messageId);
|
||||
_attemptPathHistory.remove(messageId);
|
||||
_timeoutTimers.remove(messageId);
|
||||
_resolvedMessages.remove(messageId);
|
||||
// Cancellation (and other cleanup paths) must release the active in-flight
|
||||
// slot and pump waiting queues so the global cap does not stall forever.
|
||||
if (_activeMessages.remove(messageId) && contactKey != null) {
|
||||
_pumpQueues(contactKey);
|
||||
}
|
||||
}
|
||||
|
||||
void _handleTimeout(String messageId) {
|
||||
|
||||
Reference in New Issue
Block a user