UI 汉化

This commit is contained in:
机械小鸽 2025-03-04 18:21:41 +08:00 committed by GitHub
parent 5c1654bc1a
commit f3602d7231
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 84 additions and 84 deletions

View File

@ -725,7 +725,7 @@ class CarrotMan:
except Exception as e: except Exception as e:
print(f"carrot_cmd_zmq error: {e}") print(f"carrot_cmd_zmq error: {e}")
socket.close() socket.close()
time.sleep(1) time.sleep(1)
socket, poller = setup_socket() socket, poller = setup_socket()
def recvall(self, sock, n): def recvall(self, sock, n):
@ -964,7 +964,7 @@ class CarrotServ:
self.bearing_measured = 0.0 self.bearing_measured = 0.0
self.bearing = 0.0 self.bearing = 0.0
self.gps_valid = False self.gps_valid = False
self.totalDistance = 0 self.totalDistance = 0
self.xSpdLimit = 0 self.xSpdLimit = 0
self.xSpdDist = 0 self.xSpdDist = 0
@ -1194,72 +1194,72 @@ class CarrotServ:
def _get_sdi_descr(self, nSdiType): def _get_sdi_descr(self, nSdiType):
sdi_types = { sdi_types = {
0: "신호과속", 0: "信号超速",
1: "과속 (고정식)", 1: "超速 (固定式)",
2: "구간단속 시작", 2: "区间测速开始",
3: "구간단속 끝", 3: "区间测速结束",
4: "구간단속중", 4: "区间测速中",
5: "꼬리물기단속카메라", 5: "尾随监控摄像头",
6: "신호 단속", 6: "信号监控",
7: "과속 (이동식)", 7: "超速 (移动式)",
8: "고정식 과속위험 구간(박스형)", 8: "固定式超速危险区(盒型)",
9: "버스전용차로구간", 9: "公交专用车道区",
10: "가변 차로 단속", 10: "可变车道监控",
11: "갓길 감시 지점", 11: "应急车道监控点",
12: "끼어들기 금지", 12: "禁止插队",
13: "교통정보 수집지점", 13: "交通信息收集点",
14: "방범용cctv", 14: "防范用CCTV",
15: "과적차량 위험구간", 15: "超载车辆危险区",
16: "적재 불량 단속", 16: "装载不当监控",
17: "주차단속 지점", 17: "停车监控点",
18: "일방통행도로", 18: "单行道",
19: "철길 건널목", 19: "铁路道口",
20: "어린이 보호구역(스쿨존 시작 구간)", 20: "儿童保护区(学校区域开始)",
21: "어린이 보호구역(스쿨존 끝 구간)", 21: "儿童保护区(学校区域结束)",
22: "과속방지턱", 22: "减速带",
23: "lpg충전소", 23: "LPG加油站",
24: "터널 구간", 24: "隧道区",
25: "휴게소", 25: "休息区",
26: "톨게이트", 26: "收费站",
27: "안개주의 지역", 27: "雾区警告",
28: "유해물질 지역", 28: "有害物质区域",
29: "사고다발", 29: "事故多发",
30: "급커브지역", 30: "急转弯区域",
31: "급커브구간1", 31: "急转弯区1",
32: "급경사구간", 32: "陡坡区域",
33: "야생동물 교통사고 잦은 구간", 33: "野生动物交通事故频发区域",
34: "우측시야불량지점", 34: "右侧视野不良点",
35: "시야불량지점", 35: "视野不良点",
36: "좌측시야불량지점", 36: "左侧视野不良点",
37: "신호위반다발구간", 37: "信号违规多发区",
38: "과속운행다발구간", 38: "超速行驶多发区",
39: "교통혼잡지역", 39: "交通拥堵区域",
40: "방향별차로선택지점", 40: "方向性车道选择点",
41: "무단횡단사고다발지점", 41: "行人横穿事故多发点",
42: "갓길 사고 다발 지점", 42: "应急车道事故多发点",
43: "과속 사발 다발 지점", 43: "超速多发点",
44: "졸음 사고 다발 지점", 44: "疲劳驾驶事故多发点",
45: "사고다발지점", 45: "事故多发点",
46: "보행자 사고다발지점", 46: "行人事故多发点",
47: "차량도난사고 상습발생지점", 47: "车辆盗窃事故频发点",
48: "낙석주의지역", 48: "落石警告区域",
49: "결빙주의지역", 49: "结冰警告区域",
50: "병목지점", 50: "瓶颈点",
51: "합류 도로", 51: "汇合道路",
52: "추락주의지역", 52: "坠落警告区域",
53: "지하차도 구간", 53: "地下通道区",
54: "주택밀집지역(교통진정지역)", 54: "住宅密集区(交通平缓区)",
55: "인터체인지", 55: "互通立交",
56: "분기점", 56: "分岔点",
57: "휴게소(lpg충전가능)", 57: "休息区(LPG充电可用)",
58: "교량", 58: "桥梁",
59: "제동장치사고다발지점", 59: "制动装置事故多发点",
60: "중앙선침범사고다발지점", 60: "中央线侵占事故多发点",
61: "통행위반사고다발지점", 61: "通行违规事故多发点",
62: "목적지 건너편 안내", 62: "目的地对面指引",
63: "졸음 쉼터 안내", 63: "疲劳休息区指引",
64: "노후경유차단속", 64: "老旧柴油车监控",
65: "터널내 차로변경단속", 65: "隧道内车道变更监控",
66: "" 66: ""
} }
return sdi_types.get(nSdiType, "") return sdi_types.get(nSdiType, "")
@ -1392,7 +1392,7 @@ class CarrotServ:
if atc_type in ["turn left", "turn right"] and x_dist_to_turn > start_turn_dist: if atc_type in ["turn left", "turn right"] and x_dist_to_turn > start_turn_dist:
atc_type = "atc left" if atc_type == "turn left" else "atc right" atc_type = "atc left" if atc_type == "turn left" else "atc right"
if self.autoTurnMapChange > 0 and check_steer: if self.autoTurnMapChange > 0 and check_steer:
#print(f"x_dist_to_turn: {x_dist_to_turn}, atc_start_dist: {atc_start_dist}") #print(f"x_dist_to_turn: {x_dist_to_turn}, atc_start_dist: {atc_start_dist}")
#print(f"atc_activate_count: {self.atc_activate_count}") #print(f"atc_activate_count: {self.atc_activate_count}")
if self.atc_activate_count == 2: if self.atc_activate_count == 2:
@ -1427,7 +1427,7 @@ class CarrotServ:
return atc_desired, atc_type, atc_speed, atc_dist return atc_desired, atc_type, atc_speed, atc_dist
def update_nav_instruction(self, sm): def update_nav_instruction(self, sm):
if sm.alive['navInstruction'] and sm.valid['navInstruction']: if sm.alive['navInstruction'] and sm.valid['navInstruction']:
msg_nav = sm['navInstruction'] msg_nav = sm['navInstruction']
@ -1446,7 +1446,7 @@ class CarrotServ:
self.debugText = f"{msg_nav.maneuverType},{msg_nav.maneuverModifier} " self.debugText = f"{msg_nav.maneuverType},{msg_nav.maneuverModifier} "
#print(msg_nav) #print(msg_nav)
#print(f"navInstruction: {self.xTurnInfo}, {self.xDistToTurn}, {self.szTBTMainText}") #print(f"navInstruction: {self.xTurnInfo}, {self.xDistToTurn}, {self.szTBTMainText}")
def update_navi(self, remote_ip, sm, pm, vturn_speed, coords, distances, route_speed): def update_navi(self, remote_ip, sm, pm, vturn_speed, coords, distances, route_speed):
self.debugText = "" self.debugText = ""
@ -1495,7 +1495,7 @@ class CarrotServ:
sdi_speed = 250 sdi_speed = 250
hda_active = False hda_active = False
### 과속카메라, 사고방지턱 ### 과속카메라, 사고방지턱
if self.xSpdDist > 0 and self.active_carrot > 0: if self.xSpdDist > 0 and self.active_carrot > 0:
safe_sec = self.autoNaviSpeedBumpTime if self.xSpdType == 22 else self.autoNaviSpeedCtrlEnd safe_sec = self.autoNaviSpeedBumpTime if self.xSpdType == 22 else self.autoNaviSpeedCtrlEnd
decel = self.autoNaviSpeedDecelRate decel = self.autoNaviSpeedDecelRate
@ -1650,7 +1650,7 @@ class CarrotServ:
inst = messaging.new_message('navInstructionCarrot') inst = messaging.new_message('navInstructionCarrot')
if self.active_carrot > 1: if self.active_carrot > 1:
inst.valid = True inst.valid = True
instruction = inst.navInstructionCarrot instruction = inst.navInstructionCarrot
instruction.distanceRemaining = self.nGoPosDist instruction.distanceRemaining = self.nGoPosDist
instruction.timeRemaining = self.nGoPosTime instruction.timeRemaining = self.nGoPosTime
@ -1668,7 +1668,7 @@ class CarrotServ:
navTypeNext, navModifierNext, xTurnInfoNext = "invalid", "", -1 navTypeNext, navModifierNext, xTurnInfoNext = "invalid", "", -1
if self.nTBTTurnTypeNext in nav_type_mapping: if self.nTBTTurnTypeNext in nav_type_mapping:
navTypeNext, navModifierNext, xTurnInfoNext = nav_type_mapping[self.nTBTTurnTypeNext] navTypeNext, navModifierNext, xTurnInfoNext = nav_type_mapping[self.nTBTTurnTypeNext]
instruction.maneuverType = navType instruction.maneuverType = navType
instruction.maneuverModifier = navModifier instruction.maneuverModifier = navModifier

View File

@ -687,11 +687,11 @@ public:
else if (longActive) { else if (longActive) {
if (xState == 3 || xState == 5) { //XState.e2eStop, XState.e2eStopped if (xState == 3 || xState == 5) { //XState.e2eStop, XState.e2eStopped
if (v_ego < 1.0) { if (v_ego < 1.0) {
sprintf(str, "%s", (trafficState >= 1000) ? "신호오류" : "신호대기"); sprintf(str, "%s", (trafficState >= 1000) ? "信号错误" : "信号等待");
ui_draw_text(s, x, disp_y, str, disp_size, COLOR_WHITE, BOLD); ui_draw_text(s, x, disp_y, str, disp_size, COLOR_WHITE, BOLD);
} }
else { else {
ui_draw_text(s, x, disp_y, "신호감속중", disp_size, COLOR_WHITE, BOLD); ui_draw_text(s, x, disp_y, "信号减速中", disp_size, COLOR_WHITE, BOLD);
} }
#if 0 #if 0
else if (getStopDist() > 0.5) { else if (getStopDist() > 0.5) {
@ -703,7 +703,7 @@ public:
#endif #endif
} }
else if (xState == 4) { //XState.e2ePrepare else if (xState == 4) { //XState.e2ePrepare
ui_draw_text(s, x, disp_y, "E2E주행중", disp_size, COLOR_WHITE, BOLD); ui_draw_text(s, x, disp_y, "E2E驾驶中", disp_size, COLOR_WHITE, BOLD);
} }
else if (xState == 0 || xState == 1 || xState == 2) { //XState.lead else if (xState == 0 || xState == 1 || xState == 2) { //XState.lead
draw_dist = true; draw_dist = true;
@ -1026,10 +1026,10 @@ protected:
active_carrot = 2; active_carrot = 2;
nGoPosDist = 500000; nGoPosDist = 500000;
nGoPosTime = 4 * 60 * 60; nGoPosTime = 4 * 60 * 60;
szSdiDescr = "어린이 보호구역(스쿨존 시작 구간)"; szSdiDescr = "儿童保护区(学校区域开始段)";
xTurnInfo = 1; xTurnInfo = 1;
xDistToTurn = 1000; xDistToTurn = 1000;
szPosRoadName = "구문천 1길 17"; szPosRoadName = "구문천 1길 17"; // 此处保持原文不变
#endif #endif
//if (active_carrot <= 1) return; //if (active_carrot <= 1) return;
@ -1071,9 +1071,9 @@ protected:
case 4: ui_draw_image(s, { bx - icon_size / 2, by - icon_size / 2, icon_size, icon_size }, "ic_lane_change_r", 1.0f); break; case 4: ui_draw_image(s, { bx - icon_size / 2, by - icon_size / 2, icon_size, icon_size }, "ic_lane_change_r", 1.0f); break;
case 7: ui_draw_image(s, { bx - icon_size / 2, by - icon_size / 2, icon_size, icon_size }, "ic_turn_u", 1.0f); break; case 7: ui_draw_image(s, { bx - icon_size / 2, by - icon_size / 2, icon_size, icon_size }, "ic_turn_u", 1.0f); break;
case 6: ui_draw_text(s, bx, by + 20, "TG", 35, COLOR_WHITE, BOLD); break; case 6: ui_draw_text(s, bx, by + 20, "TG", 35, COLOR_WHITE, BOLD); break;
case 8: ui_draw_text(s, bx, by + 20, "목적지", 35, COLOR_WHITE, BOLD); break; case 8: ui_draw_text(s, bx, by + 20, "目的地", 35, COLOR_WHITE, BOLD); break;
default: default:
sprintf(str, "감속:%d", xTurnInfo); sprintf(str, "减速:%d", xTurnInfo);
ui_draw_text(s, bx, by + 20, str, 35, COLOR_WHITE, BOLD); ui_draw_text(s, bx, by + 20, str, 35, COLOR_WHITE, BOLD);
break; break;
} }
@ -1097,14 +1097,14 @@ protected:
} }
if (nGoPosDist > 0 && nGoPosTime > 0) { if (nGoPosDist > 0 && nGoPosTime > 0) {
time_t now = time(NULL); // 현재 시간 얻기 time_t now = time(NULL); // 获取当前时间
struct tm* local = localtime(&now); struct tm* local = localtime(&now);
int remaining_minutes = (int)nGoPosTime / 60; int remaining_minutes = (int)nGoPosTime / 60;
local->tm_min += remaining_minutes; local->tm_min += remaining_minutes;
mktime(local); mktime(local);
sprintf(str, "도착: %.1f분(%02d:%02d)", (float)nGoPosTime / 60., local->tm_hour, local->tm_min); sprintf(str, "到达: %.1f分钟(%02d:%02d)", (float)nGoPosTime / 60., local->tm_hour, local->tm_min);
ui_draw_text(s, tbt_x + 190, tbt_y + 80, str, 50, COLOR_WHITE, BOLD); ui_draw_text(s, tbt_x + 190, tbt_y + 80, str, 50, COLOR_WHITE, BOLD);
sprintf(str, "%.1fkm", nGoPosDist / 1000.); sprintf(str, "%.1f公里", nGoPosDist / 1000.);
ui_draw_text(s, tbt_x + 190 + 120, tbt_y + 130, str, 50, COLOR_WHITE, BOLD); ui_draw_text(s, tbt_x + 190 + 120, tbt_y + 130, str, 50, COLOR_WHITE, BOLD);
} }
} }