Remove RHD toggle: determine by driver side instead (#24802)

* driverview

* auto choose

* useless

* remove

* modeld not use toggle

* remove from params

* should have commissue anyway

* delete icon file

* deal with init more elegantly and prohibit switching when engaged

* nonblock save when not unstable

* filter very low speeds

* a few more secs dont harm

* draw icon

* match

* radius

* use const

* ref commit

* new transs

* put_bool_nonblocking

* 5k route tune

* ref comm

Co-authored-by: Comma Device <device@comma.ai>
pull/25314/head
ZwX1616 3 years ago committed by GitHub
parent 753f4c7fab
commit 22408781f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      common/params.cc
  2. BIN
      selfdrive/assets/offroad/icon_openpilot_mirrored.png
  3. 5
      selfdrive/modeld/modeld.cc
  4. 8
      selfdrive/modeld/models/driving.cc
  5. 2
      selfdrive/modeld/models/driving.h
  6. 9
      selfdrive/monitoring/dmonitoringd.py
  7. 20
      selfdrive/monitoring/driver_monitor.py
  8. 2
      selfdrive/test/process_replay/ref_commit
  9. 5
      selfdrive/ui/qt/offroad/driverview.cc
  10. 6
      selfdrive/ui/qt/offroad/settings.cc
  11. 4
      selfdrive/ui/qt/onroad.cc
  12. 2
      selfdrive/ui/qt/onroad.h
  13. 156
      selfdrive/ui/translations/main_ko.ts
  14. 156
      selfdrive/ui/translations/main_zh-CHS.ts
  15. 156
      selfdrive/ui/translations/main_zh-CHT.ts

@ -124,7 +124,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"IsMetric", PERSISTENT}, {"IsMetric", PERSISTENT},
{"IsOffroad", CLEAR_ON_MANAGER_START}, {"IsOffroad", CLEAR_ON_MANAGER_START},
{"IsOnroad", PERSISTENT}, {"IsOnroad", PERSISTENT},
{"IsRHD", PERSISTENT}, {"IsRhdDetected", PERSISTENT},
{"IsTakingSnapshot", CLEAR_ON_MANAGER_START}, {"IsTakingSnapshot", CLEAR_ON_MANAGER_START},
{"IsTestedBranch", CLEAR_ON_MANAGER_START}, {"IsTestedBranch", CLEAR_ON_MANAGER_START},
{"IsUpdateAvailable", CLEAR_ON_MANAGER_START}, {"IsUpdateAvailable", CLEAR_ON_MANAGER_START},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

@ -55,7 +55,7 @@ mat3 update_calibration(Eigen::Matrix<float, 3, 4> &extrinsics, bool wide_camera
void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcClient &vipc_client_extra, bool main_wide_camera, bool use_extra_client) { void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcClient &vipc_client_extra, bool main_wide_camera, bool use_extra_client) {
// messaging // messaging
PubMaster pm({"modelV2", "cameraOdometry"}); PubMaster pm({"modelV2", "cameraOdometry"});
SubMaster sm({"lateralPlan", "roadCameraState", "liveCalibration"}); SubMaster sm({"lateralPlan", "roadCameraState", "liveCalibration", "driverMonitoringState"});
// setup filter to track dropped frames // setup filter to track dropped frames
FirstOrderFilter frame_dropped_filter(0., 10., 1. / MODEL_FREQ); FirstOrderFilter frame_dropped_filter(0., 10., 1. / MODEL_FREQ);
@ -111,6 +111,7 @@ void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcCl
// TODO: path planner timeout? // TODO: path planner timeout?
sm.update(0); sm.update(0);
int desire = ((int)sm["lateralPlan"].getLateralPlan().getDesire()); int desire = ((int)sm["lateralPlan"].getLateralPlan().getDesire());
bool is_rhd = ((bool)sm["driverMonitoringState"].getDriverMonitoringState().getIsRHD());
frame_id = sm["roadCameraState"].getRoadCameraState().getFrameId(); frame_id = sm["roadCameraState"].getRoadCameraState().getFrameId();
if (sm.updated("liveCalibration")) { if (sm.updated("liveCalibration")) {
auto extrinsic_matrix = sm["liveCalibration"].getLiveCalibration().getExtrinsicMatrix(); auto extrinsic_matrix = sm["liveCalibration"].getLiveCalibration().getExtrinsicMatrix();
@ -146,7 +147,7 @@ void run_model(ModelState &model, VisionIpcClient &vipc_client_main, VisionIpcCl
} }
double mt1 = millis_since_boot(); double mt1 = millis_since_boot();
ModelOutput *model_output = model_eval_frame(&model, buf_main, buf_extra, model_transform_main, model_transform_extra, vec_desire, prepare_only); ModelOutput *model_output = model_eval_frame(&model, buf_main, buf_extra, model_transform_main, model_transform_extra, vec_desire, is_rhd, prepare_only);
double mt2 = millis_since_boot(); double mt2 = millis_since_boot();
float model_execution_time = (mt2 - mt1) / 1000.0; float model_execution_time = (mt2 - mt1) / 1000.0;

@ -49,14 +49,12 @@ void model_init(ModelState* s, cl_device_id device_id, cl_context context) {
#endif #endif
#ifdef TRAFFIC_CONVENTION #ifdef TRAFFIC_CONVENTION
const int idx = Params().getBool("IsRHD") ? 1 : 0;
s->traffic_convention[idx] = 1.0;
s->m->addTrafficConvention(s->traffic_convention, TRAFFIC_CONVENTION_LEN); s->m->addTrafficConvention(s->traffic_convention, TRAFFIC_CONVENTION_LEN);
#endif #endif
} }
ModelOutput* model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* wbuf, ModelOutput* model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* wbuf,
const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool prepare_only) { const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool is_rhd, bool prepare_only) {
#ifdef DESIRE #ifdef DESIRE
if (desire_in != NULL) { if (desire_in != NULL) {
for (int i = 1; i < DESIRE_LEN; i++) { for (int i = 1; i < DESIRE_LEN; i++) {
@ -72,6 +70,10 @@ ModelOutput* model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* wbuf,
} }
#endif #endif
int rhd_idx = is_rhd;
s->traffic_convention[rhd_idx] = 1.0;
s->traffic_convention[1-rhd_idx] = 0.0;
// if getInputBuf is not NULL, net_input_buf will be // if getInputBuf is not NULL, net_input_buf will be
auto net_input_buf = s->frame->prepare(buf->buf_cl, buf->width, buf->height, buf->stride, buf->uv_offset, transform, static_cast<cl_mem*>(s->m->getInputBuf())); auto net_input_buf = s->frame->prepare(buf->buf_cl, buf->width, buf->height, buf->stride, buf->uv_offset, transform, static_cast<cl_mem*>(s->m->getInputBuf()));
s->m->addImage(net_input_buf, s->frame->buf_size); s->m->addImage(net_input_buf, s->frame->buf_size);

@ -268,7 +268,7 @@ struct ModelState {
void model_init(ModelState* s, cl_device_id device_id, cl_context context); void model_init(ModelState* s, cl_device_id device_id, cl_context context);
ModelOutput *model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* buf_wide, ModelOutput *model_eval_frame(ModelState* s, VisionBuf* buf, VisionBuf* buf_wide,
const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool prepare_only); const mat3 &transform, const mat3 &transform_wide, float *desire_in, bool is_rhd, bool prepare_only);
void model_free(ModelState* s); void model_free(ModelState* s);
void model_publish(PubMaster &pm, uint32_t vipc_frame_id, uint32_t vipc_frame_id_extra, uint32_t frame_id, float frame_drop, void model_publish(PubMaster &pm, uint32_t vipc_frame_id, uint32_t vipc_frame_id_extra, uint32_t frame_id, float frame_drop,
const ModelOutput &net_outputs, uint64_t timestamp_eof, const ModelOutput &net_outputs, uint64_t timestamp_eof,

@ -3,7 +3,7 @@ import gc
import cereal.messaging as messaging import cereal.messaging as messaging
from cereal import car from cereal import car
from common.params import Params from common.params import Params, put_bool_nonblocking
from common.realtime import set_realtime_priority from common.realtime import set_realtime_priority
from selfdrive.controls.lib.events import Events from selfdrive.controls.lib.events import Events
from selfdrive.locationd.calibrationd import Calibration from selfdrive.locationd.calibrationd import Calibration
@ -20,7 +20,7 @@ def dmonitoringd_thread(sm=None, pm=None):
if sm is None: if sm is None:
sm = messaging.SubMaster(['driverStateV2', 'liveCalibration', 'carState', 'controlsState', 'modelV2'], poll=['driverStateV2']) sm = messaging.SubMaster(['driverStateV2', 'liveCalibration', 'carState', 'controlsState', 'modelV2'], poll=['driverStateV2'])
driver_status = DriverStatus(rhd=Params().get_bool("IsRHD")) driver_status = DriverStatus(rhd_saved=Params().get_bool("IsRhdDetected"))
sm['liveCalibration'].calStatus = Calibration.INVALID sm['liveCalibration'].calStatus = Calibration.INVALID
sm['liveCalibration'].rpyCalib = [0, 0, 0] sm['liveCalibration'].rpyCalib = [0, 0, 0]
@ -83,6 +83,11 @@ def dmonitoringd_thread(sm=None, pm=None):
} }
pm.send('driverMonitoringState', dat) pm.send('driverMonitoringState', dat)
# save rhd virtual toggle every 5 mins
if (sm['driverStateV2'].frameId % 6000 == 0 and
driver_status.wheelpos_learner.filtered_stat.n > driver_status.settings._WHEELPOS_FILTER_MIN_COUNT and
driver_status.wheel_on_right == (driver_status.wheelpos_learner.filtered_stat.M > driver_status.settings._WHEELPOS_THRESHOLD)):
put_bool_nonblocking("IsRhdDetected", driver_status.wheel_on_right)
def main(sm=None, pm=None): def main(sm=None, pm=None):
dmonitoringd_thread(sm, pm) dmonitoringd_thread(sm, pm)

@ -57,8 +57,9 @@ class DRIVER_MONITOR_SETTINGS():
self._POSE_OFFSET_MIN_COUNT = int(60 / self._DT_DMON) # valid data counts before calibration completes, 1min cumulative self._POSE_OFFSET_MIN_COUNT = int(60 / self._DT_DMON) # valid data counts before calibration completes, 1min cumulative
self._POSE_OFFSET_MAX_COUNT = int(360 / self._DT_DMON) # stop deweighting new data after 6 min, aka "short term memory" self._POSE_OFFSET_MAX_COUNT = int(360 / self._DT_DMON) # stop deweighting new data after 6 min, aka "short term memory"
self._WHEELPOS_CALIB_MIN_SPEED = 11
self._WHEELPOS_THRESHOLD = 0.5 self._WHEELPOS_THRESHOLD = 0.5
self._WHEELPOS_FILTER_MIN_COUNT = int(5 / self._DT_DMON) self._WHEELPOS_FILTER_MIN_COUNT = int(15 / self._DT_DMON) # allow 15 seconds to converge wheel side
self._RECOVERY_FACTOR_MAX = 5. # relative to minus step change self._RECOVERY_FACTOR_MAX = 5. # relative to minus step change
self._RECOVERY_FACTOR_MIN = 1.25 # relative to minus step change self._RECOVERY_FACTOR_MIN = 1.25 # relative to minus step change
@ -115,7 +116,7 @@ class DriverBlink():
self.right_blink = 0. self.right_blink = 0.
class DriverStatus(): class DriverStatus():
def __init__(self, rhd=False, settings=DRIVER_MONITOR_SETTINGS()): def __init__(self, rhd_saved=False, settings=DRIVER_MONITOR_SETTINGS()):
# init policy settings # init policy settings
self.settings = settings self.settings = settings
@ -138,7 +139,8 @@ class DriverStatus():
self.driver_distracted = False self.driver_distracted = False
self.driver_distraction_filter = FirstOrderFilter(0., self.settings._DISTRACTED_FILTER_TS, self.settings._DT_DMON) self.driver_distraction_filter = FirstOrderFilter(0., self.settings._DISTRACTED_FILTER_TS, self.settings._DT_DMON)
self.wheel_on_right = False self.wheel_on_right = False
self.rhd_toggled = rhd self.wheel_on_right_last = None
self.wheel_on_right_default = rhd_saved
self.face_detected = False self.face_detected = False
self.terminal_alert_cnt = 0 self.terminal_alert_cnt = 0
self.terminal_time = 0 self.terminal_time = 0
@ -227,13 +229,18 @@ class DriverStatus():
def update_states(self, driver_state, cal_rpy, car_speed, op_engaged): def update_states(self, driver_state, cal_rpy, car_speed, op_engaged):
rhd_pred = driver_state.wheelOnRightProb rhd_pred = driver_state.wheelOnRightProb
if car_speed > 0.01: # calibrates only when there's movement and either face detected
if car_speed > self.settings._WHEELPOS_CALIB_MIN_SPEED and (driver_state.leftDriverData.faceProb > self.settings._FACE_THRESHOLD or
driver_state.rightDriverData.faceProb > self.settings._FACE_THRESHOLD):
self.wheelpos_learner.push_and_update(rhd_pred) self.wheelpos_learner.push_and_update(rhd_pred)
if self.wheelpos_learner.filtered_stat.n > self.settings._WHEELPOS_FILTER_MIN_COUNT: if self.wheelpos_learner.filtered_stat.n > self.settings._WHEELPOS_FILTER_MIN_COUNT:
self.wheel_on_right = self.wheelpos_learner.filtered_stat.M > self.settings._WHEELPOS_THRESHOLD self.wheel_on_right = self.wheelpos_learner.filtered_stat.M > self.settings._WHEELPOS_THRESHOLD
else: else:
self.wheel_on_right = rhd_pred > self.settings._WHEELPOS_THRESHOLD self.wheel_on_right = self.wheel_on_right_default # use default/saved if calibration is unfinished
driver_data = driver_state.rightDriverData if self.rhd_toggled else driver_state.leftDriverData # make sure no switching when engaged
if op_engaged and self.wheel_on_right_last is not None and self.wheel_on_right_last != self.wheel_on_right:
self.wheel_on_right = self.wheel_on_right_last
driver_data = driver_state.rightDriverData if self.wheel_on_right else driver_state.leftDriverData
if not all(len(x) > 0 for x in (driver_data.faceOrientation, driver_data.facePosition, if not all(len(x) > 0 for x in (driver_data.faceOrientation, driver_data.facePosition,
driver_data.faceOrientationStd, driver_data.facePositionStd, driver_data.faceOrientationStd, driver_data.facePositionStd,
driver_data.readyProb, driver_data.notReadyProb)): driver_data.readyProb, driver_data.notReadyProb)):
@ -243,6 +250,7 @@ class DriverStatus():
self.pose.roll, self.pose.pitch, self.pose.yaw = face_orientation_from_net(driver_data.faceOrientation, driver_data.facePosition, cal_rpy) self.pose.roll, self.pose.pitch, self.pose.yaw = face_orientation_from_net(driver_data.faceOrientation, driver_data.facePosition, cal_rpy)
if self.wheel_on_right: if self.wheel_on_right:
self.pose.yaw *= -1 self.pose.yaw *= -1
self.wheel_on_right_last = self.wheel_on_right
self.pose.pitch_std = driver_data.faceOrientationStd[0] self.pose.pitch_std = driver_data.faceOrientationStd[0]
self.pose.yaw_std = driver_data.faceOrientationStd[1] self.pose.yaw_std = driver_data.faceOrientationStd[1]
model_std_max = max(self.pose.pitch_std, self.pose.yaw_std) model_std_max = max(self.pose.pitch_std, self.pose.yaw_std)

@ -1 +1 @@
cfe79d760f161a46e48b60c1debe11b8f300e717 912413daa4c36a788cf2c801fc49829d46ae3072

@ -31,7 +31,6 @@ DriverViewScene::DriverViewScene(QWidget* parent) : sm({"driverStateV2"}), QWidg
void DriverViewScene::showEvent(QShowEvent* event) { void DriverViewScene::showEvent(QShowEvent* event) {
frame_updated = false; frame_updated = false;
is_rhd = params.getBool("IsRHD");
params.putBool("IsDriverViewEnabled", true); params.putBool("IsDriverViewEnabled", true);
} }
@ -60,7 +59,7 @@ void DriverViewScene::paintEvent(QPaintEvent* event) {
cereal::DriverStateV2::Reader driver_state = sm["driverStateV2"].getDriverStateV2(); cereal::DriverStateV2::Reader driver_state = sm["driverStateV2"].getDriverStateV2();
cereal::DriverStateV2::DriverData::Reader driver_data; cereal::DriverStateV2::DriverData::Reader driver_data;
// is_rhd = driver_state.getWheelOnRightProb() > 0.5; is_rhd = driver_state.getWheelOnRightProb() > 0.5;
driver_data = is_rhd ? driver_state.getRightDriverData() : driver_state.getLeftDriverData(); driver_data = is_rhd ? driver_state.getRightDriverData() : driver_state.getLeftDriverData();
bool face_detected = driver_data.getFaceProb() > 0.7; bool face_detected = driver_data.getFaceProb() > 0.7;
@ -85,7 +84,7 @@ void DriverViewScene::paintEvent(QPaintEvent* event) {
// icon // icon
const int img_offset = 60; const int img_offset = 60;
const int img_x = rect().left() + img_offset; const int img_x = is_rhd ? rect().right() - FACE_IMG_SIZE - img_offset : rect().left() + img_offset;
const int img_y = rect().bottom() - FACE_IMG_SIZE - img_offset; const int img_y = rect().bottom() - FACE_IMG_SIZE - img_offset;
p.setOpacity(face_detected ? 1.0 : 0.2); p.setOpacity(face_detected ? 1.0 : 0.2);
p.drawPixmap(img_x, img_y, face_img); p.drawPixmap(img_x, img_y, face_img);

@ -41,12 +41,6 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) {
tr("Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h)."), tr("Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h)."),
"../assets/offroad/icon_warning.png", "../assets/offroad/icon_warning.png",
}, },
{
"IsRHD",
tr("Enable Right-Hand Drive"),
tr("Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat."),
"../assets/offroad/icon_openpilot_mirrored.png",
},
{ {
"IsMetric", "IsMetric",
tr("Use Metric System"), tr("Use Metric System"),

@ -217,6 +217,7 @@ void NvgWindow::updateState(const UIState &s) {
if (sm.frame % (UI_FREQ / 2) == 0) { if (sm.frame % (UI_FREQ / 2) == 0) {
setProperty("engageable", cs.getEngageable() || cs.getEnabled()); setProperty("engageable", cs.getEngageable() || cs.getEnabled());
setProperty("dmActive", sm["driverMonitoringState"].getDriverMonitoringState().getIsActiveMode()); setProperty("dmActive", sm["driverMonitoringState"].getDriverMonitoringState().getIsActiveMode());
setProperty("rightHandDM", sm["driverMonitoringState"].getDriverMonitoringState().getIsRHD());
} }
if (s.scene.calibration_valid) { if (s.scene.calibration_valid) {
@ -381,7 +382,8 @@ void NvgWindow::drawHud(QPainter &p) {
// dm icon // dm icon
if (!hideDM) { if (!hideDM) {
drawIcon(p, radius / 2 + (bdr_s * 2), rect().bottom() - footer_h / 2, int dm_icon_x = rightHandDM ? rect().right() - radius / 2 - (bdr_s * 2) : radius / 2 + (bdr_s * 2);
drawIcon(p, dm_icon_x, rect().bottom() - footer_h / 2,
dm_img, blackColor(70), dmActive ? 1.0 : 0.2); dm_img, blackColor(70), dmActive ? 1.0 : 0.2);
} }
p.restore(); p.restore();

@ -39,6 +39,7 @@ class NvgWindow : public CameraViewWidget {
Q_PROPERTY(bool engageable MEMBER engageable); Q_PROPERTY(bool engageable MEMBER engageable);
Q_PROPERTY(bool dmActive MEMBER dmActive); Q_PROPERTY(bool dmActive MEMBER dmActive);
Q_PROPERTY(bool hideDM MEMBER hideDM); Q_PROPERTY(bool hideDM MEMBER hideDM);
Q_PROPERTY(bool rightHandDM MEMBER rightHandDM);
Q_PROPERTY(int status MEMBER status); Q_PROPERTY(int status MEMBER status);
public: public:
@ -62,6 +63,7 @@ private:
bool engageable = false; bool engageable = false;
bool dmActive = false; bool dmActive = false;
bool hideDM = false; bool hideDM = false;
bool rightHandDM = false;
bool has_us_speed_limit = false; bool has_us_speed_limit = false;
bool has_eu_speed_limit = false; bool has_eu_speed_limit = false;
int status = STATUS_DISENGAGED; int status = STATUS_DISENGAGED;

@ -108,152 +108,152 @@
<context> <context>
<name>DevicePanel</name> <name>DevicePanel</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="106"/> <location filename="../qt/offroad/settings.cc" line="100"/>
<source>Dongle ID</source> <source>Dongle ID</source>
<translation>Dongle ID</translation> <translation>Dongle ID</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="106"/> <location filename="../qt/offroad/settings.cc" line="100"/>
<source>N/A</source> <source>N/A</source>
<translation>N/A</translation> <translation>N/A</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="107"/> <location filename="../qt/offroad/settings.cc" line="101"/>
<source>Serial</source> <source>Serial</source>
<translation>Serial</translation> <translation>Serial</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="111"/> <location filename="../qt/offroad/settings.cc" line="105"/>
<source>Driver Camera</source> <source>Driver Camera</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="111"/> <location filename="../qt/offroad/settings.cc" line="105"/>
<source>PREVIEW</source> <source>PREVIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="112"/> <location filename="../qt/offroad/settings.cc" line="106"/>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source> <source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
<translation> . ( )</translation> <translation> . ( )</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="116"/> <location filename="../qt/offroad/settings.cc" line="110"/>
<source>Reset Calibration</source> <source>Reset Calibration</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="116"/> <location filename="../qt/offroad/settings.cc" line="110"/>
<source>RESET</source> <source>RESET</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="119"/> <location filename="../qt/offroad/settings.cc" line="113"/>
<source>Are you sure you want to reset calibration?</source> <source>Are you sure you want to reset calibration?</source>
<translation> ?</translation> <translation> ?</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review Training Guide</source> <source>Review Training Guide</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>REVIEW</source> <source>REVIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review the rules, features, and limitations of openpilot</source> <source>Review the rules, features, and limitations of openpilot</source>
<translation>openpilot의 , </translation> <translation>openpilot의 , </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="128"/> <location filename="../qt/offroad/settings.cc" line="122"/>
<source>Are you sure you want to review the training guide?</source> <source>Are you sure you want to review the training guide?</source>
<translation> ?</translation> <translation> ?</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="136"/> <location filename="../qt/offroad/settings.cc" line="130"/>
<source>Regulatory</source> <source>Regulatory</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="136"/> <location filename="../qt/offroad/settings.cc" line="130"/>
<source>VIEW</source> <source>VIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="144"/> <location filename="../qt/offroad/settings.cc" line="138"/>
<source>Change Language</source> <source>Change Language</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="144"/> <location filename="../qt/offroad/settings.cc" line="138"/>
<source>CHANGE</source> <source>CHANGE</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="148"/> <location filename="../qt/offroad/settings.cc" line="142"/>
<source>Select a language</source> <source>Select a language</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="168"/> <location filename="../qt/offroad/settings.cc" line="162"/>
<source>Reboot</source> <source>Reboot</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="173"/> <location filename="../qt/offroad/settings.cc" line="167"/>
<source>Power Off</source> <source>Power Off</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="193"/> <location filename="../qt/offroad/settings.cc" line="187"/>
<source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required.</source> <source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required.</source>
<translation>openpilot은 4° , 5° 8° . openpilot은 .</translation> <translation>openpilot은 4° , 5° 8° . openpilot은 .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="204"/> <location filename="../qt/offroad/settings.cc" line="198"/>
<source> Your device is pointed %1° %2 and %3° %4.</source> <source> Your device is pointed %1° %2 and %3° %4.</source>
<translation> %1° %2 %3° %4 .</translation> <translation> %1° %2 %3° %4 .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="205"/> <location filename="../qt/offroad/settings.cc" line="199"/>
<source>down</source> <source>down</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="205"/> <location filename="../qt/offroad/settings.cc" line="199"/>
<source>up</source> <source>up</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="206"/> <location filename="../qt/offroad/settings.cc" line="200"/>
<source>left</source> <source>left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="206"/> <location filename="../qt/offroad/settings.cc" line="200"/>
<source>right</source> <source>right</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="217"/> <location filename="../qt/offroad/settings.cc" line="211"/>
<source>Are you sure you want to reboot?</source> <source>Are you sure you want to reboot?</source>
<translation> ?</translation> <translation> ?</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="224"/> <location filename="../qt/offroad/settings.cc" line="218"/>
<source>Disengage to Reboot</source> <source>Disengage to Reboot</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="230"/> <location filename="../qt/offroad/settings.cc" line="224"/>
<source>Are you sure you want to power off?</source> <source>Are you sure you want to power off?</source>
<translation> ?</translation> <translation> ?</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="237"/> <location filename="../qt/offroad/settings.cc" line="231"/>
<source>Disengage to Power Off</source> <source>Disengage to Power Off</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -294,7 +294,7 @@
<context> <context>
<name>DriverViewScene</name> <name>DriverViewScene</name>
<message> <message>
<location filename="../qt/offroad/driverview.cc" line="56"/> <location filename="../qt/offroad/driverview.cc" line="55"/>
<source>camera starting</source> <source>camera starting</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -498,20 +498,20 @@ location set</source>
<translation>mph</translation> <translation>mph</translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="279"/> <location filename="../qt/onroad.cc" line="280"/>
<location filename="../qt/onroad.cc" line="282"/> <location filename="../qt/onroad.cc" line="283"/>
<source>MAX</source> <source>MAX</source>
<translation>MAX</translation> <translation>MAX</translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="326"/> <location filename="../qt/onroad.cc" line="327"/>
<location filename="../qt/onroad.cc" line="329"/> <location filename="../qt/onroad.cc" line="330"/>
<source>SPEED</source> <source>SPEED</source>
<translation>SPEED</translation> <translation>SPEED</translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="332"/> <location filename="../qt/onroad.cc" line="333"/>
<location filename="../qt/onroad.cc" line="335"/> <location filename="../qt/onroad.cc" line="336"/>
<source>LIMIT</source> <source>LIMIT</source>
<translation>LIMIT</translation> <translation>LIMIT</translation>
</message> </message>
@ -710,33 +710,33 @@ location set</source>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="338"/> <location filename="../qt/offroad/settings.cc" line="332"/>
<source>×</source> <source>×</source>
<translation>×</translation> <translation>×</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="364"/> <location filename="../qt/offroad/settings.cc" line="358"/>
<source>Device</source> <source>Device</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="365"/> <location filename="../qt/offroad/settings.cc" line="359"/>
<location filename="../qt/offroad/settings.cc" line="404"/> <location filename="../qt/offroad/settings.cc" line="398"/>
<source>Network</source> <source>Network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="366"/> <location filename="../qt/offroad/settings.cc" line="360"/>
<source>Toggles</source> <source>Toggles</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="367"/> <location filename="../qt/offroad/settings.cc" line="361"/>
<source>Software</source> <source>Software</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="372"/> <location filename="../qt/offroad/settings.cc" line="366"/>
<source>Navigation</source> <source>Navigation</source>
<translation></translation> <translation></translation>
</message> </message>
@ -975,89 +975,89 @@ location set</source>
<context> <context>
<name>SoftwarePanel</name> <name>SoftwarePanel</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="242"/> <location filename="../qt/offroad/settings.cc" line="236"/>
<source>Git Branch</source> <source>Git Branch</source>
<translation>Git </translation> <translation>Git </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="243"/> <location filename="../qt/offroad/settings.cc" line="237"/>
<source>Git Commit</source> <source>Git Commit</source>
<translation>Git </translation> <translation>Git </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="244"/> <location filename="../qt/offroad/settings.cc" line="238"/>
<source>OS Version</source> <source>OS Version</source>
<translation>OS </translation> <translation>OS </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="245"/> <location filename="../qt/offroad/settings.cc" line="239"/>
<source>Version</source> <source>Version</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="246"/> <location filename="../qt/offroad/settings.cc" line="240"/>
<source>Last Update Check</source> <source>Last Update Check</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="246"/> <location filename="../qt/offroad/settings.cc" line="240"/>
<source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source> <source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source>
<translation> openpilot이 . .</translation> <translation> openpilot이 . .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="247"/> <location filename="../qt/offroad/settings.cc" line="241"/>
<source>Check for Update</source> <source>Check for Update</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="252"/> <location filename="../qt/offroad/settings.cc" line="246"/>
<source>CHECKING</source> <source>CHECKING</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<source>Switch Branch</source> <source>Switch Branch</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<source>ENTER</source> <source>ENTER</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<location filename="../qt/offroad/settings.cc" line="261"/> <location filename="../qt/offroad/settings.cc" line="255"/>
<source>The new branch will be pulled the next time the updater runs.</source> <source>The new branch will be pulled the next time the updater runs.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="261"/> <location filename="../qt/offroad/settings.cc" line="255"/>
<source>Enter branch name</source> <source>Enter branch name</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="272"/> <location filename="../qt/offroad/settings.cc" line="266"/>
<source>UNINSTALL</source> <source>UNINSTALL</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="272"/> <location filename="../qt/offroad/settings.cc" line="266"/>
<source>Uninstall %1</source> <source>Uninstall %1</source>
<translation>%1 </translation> <translation>%1 </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="274"/> <location filename="../qt/offroad/settings.cc" line="268"/>
<source>Are you sure you want to uninstall?</source> <source>Are you sure you want to uninstall?</source>
<translation>?</translation> <translation>?</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="291"/> <location filename="../qt/offroad/settings.cc" line="285"/>
<source>failed to fetch update</source> <source>failed to fetch update</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="292"/> <location filename="../qt/offroad/settings.cc" line="286"/>
<location filename="../qt/offroad/settings.cc" line="313"/> <location filename="../qt/offroad/settings.cc" line="307"/>
<source>CHECK</source> <source>CHECK</source>
<translation></translation> <translation></translation>
</message> </message>
@ -1165,72 +1165,70 @@ location set</source>
<translation> 50km/h(31mph) .</translation> <translation> 50km/h(31mph) .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Enable Right-Hand Drive</source> <source>Enable Right-Hand Drive</source>
<translation> </translation> <translation type="vanished"> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source> <source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source>
<translation>openpilot이 .</translation> <translation type="vanished">openpilot이 .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="52"/> <location filename="../qt/offroad/settings.cc" line="46"/>
<source>Use Metric System</source> <source>Use Metric System</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="53"/> <location filename="../qt/offroad/settings.cc" line="47"/>
<source>Display speed in km/h instead of mph.</source> <source>Display speed in km/h instead of mph.</source>
<translation>mph km/h로 .</translation> <translation>mph km/h로 .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="58"/> <location filename="../qt/offroad/settings.cc" line="52"/>
<source>Record and Upload Driver Camera</source> <source>Record and Upload Driver Camera</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="59"/> <location filename="../qt/offroad/settings.cc" line="53"/>
<source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source> <source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="64"/> <location filename="../qt/offroad/settings.cc" line="58"/>
<source>Disengage On Accelerator Pedal</source> <source>Disengage On Accelerator Pedal</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="65"/> <location filename="../qt/offroad/settings.cc" line="59"/>
<source>When enabled, pressing the accelerator pedal will disengage openpilot.</source> <source>When enabled, pressing the accelerator pedal will disengage openpilot.</source>
<translation> openpilot이 .</translation> <translation> openpilot이 .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="71"/> <location filename="../qt/offroad/settings.cc" line="65"/>
<source>Show ETA in 24h format</source> <source>Show ETA in 24h format</source>
<translation>24 </translation> <translation>24 </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="72"/> <location filename="../qt/offroad/settings.cc" line="66"/>
<source>Use 24h format instead of am/pm</source> <source>Use 24h format instead of am/pm</source>
<translation>/ 24 </translation> <translation>/ 24 </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="77"/> <location filename="../qt/offroad/settings.cc" line="71"/>
<source>Show Map on Left Side of UI</source> <source>Show Map on Left Side of UI</source>
<translation>UI </translation> <translation>UI </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="78"/> <location filename="../qt/offroad/settings.cc" line="72"/>
<source>Show map on left side when in split screen view.</source> <source>Show map on left side when in split screen view.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="90"/> <location filename="../qt/offroad/settings.cc" line="84"/>
<source>openpilot Longitudinal Control</source> <source>openpilot Longitudinal Control</source>
<translation>openpilot Longitudinal Control</translation> <translation>openpilot Longitudinal Control</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="91"/> <location filename="../qt/offroad/settings.cc" line="85"/>
<source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source> <source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source>
<translation>openpilot은 &apos; . 경고: AEB를 !</translation> <translation>openpilot은 &apos; . 경고: AEB를 !</translation>
</message> </message>

@ -108,152 +108,152 @@
<context> <context>
<name>DevicePanel</name> <name>DevicePanel</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="106"/> <location filename="../qt/offroad/settings.cc" line="100"/>
<source>Dongle ID</source> <source>Dongle ID</source>
<translation>IDDongle ID</translation> <translation>IDDongle ID</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="106"/> <location filename="../qt/offroad/settings.cc" line="100"/>
<source>N/A</source> <source>N/A</source>
<translation>N/A</translation> <translation>N/A</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="107"/> <location filename="../qt/offroad/settings.cc" line="101"/>
<source>Serial</source> <source>Serial</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="111"/> <location filename="../qt/offroad/settings.cc" line="105"/>
<source>Driver Camera</source> <source>Driver Camera</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="111"/> <location filename="../qt/offroad/settings.cc" line="105"/>
<source>PREVIEW</source> <source>PREVIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="112"/> <location filename="../qt/offroad/settings.cc" line="106"/>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source> <source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="116"/> <location filename="../qt/offroad/settings.cc" line="110"/>
<source>Reset Calibration</source> <source>Reset Calibration</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="116"/> <location filename="../qt/offroad/settings.cc" line="110"/>
<source>RESET</source> <source>RESET</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="119"/> <location filename="../qt/offroad/settings.cc" line="113"/>
<source>Are you sure you want to reset calibration?</source> <source>Are you sure you want to reset calibration?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review Training Guide</source> <source>Review Training Guide</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>REVIEW</source> <source>REVIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review the rules, features, and limitations of openpilot</source> <source>Review the rules, features, and limitations of openpilot</source>
<translation>openpilot的使用规则</translation> <translation>openpilot的使用规则</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="128"/> <location filename="../qt/offroad/settings.cc" line="122"/>
<source>Are you sure you want to review the training guide?</source> <source>Are you sure you want to review the training guide?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="136"/> <location filename="../qt/offroad/settings.cc" line="130"/>
<source>Regulatory</source> <source>Regulatory</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="136"/> <location filename="../qt/offroad/settings.cc" line="130"/>
<source>VIEW</source> <source>VIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="144"/> <location filename="../qt/offroad/settings.cc" line="138"/>
<source>Change Language</source> <source>Change Language</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="144"/> <location filename="../qt/offroad/settings.cc" line="138"/>
<source>CHANGE</source> <source>CHANGE</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="148"/> <location filename="../qt/offroad/settings.cc" line="142"/>
<source>Select a language</source> <source>Select a language</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="168"/> <location filename="../qt/offroad/settings.cc" line="162"/>
<source>Reboot</source> <source>Reboot</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="173"/> <location filename="../qt/offroad/settings.cc" line="167"/>
<source>Power Off</source> <source>Power Off</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="193"/> <location filename="../qt/offroad/settings.cc" line="187"/>
<source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required.</source> <source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required.</source>
<translation>openpilot要求设备安装的偏航角在左4°4°5°8°openpilot会持续更新校准</translation> <translation>openpilot要求设备安装的偏航角在左4°4°5°8°openpilot会持续更新校准</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="204"/> <location filename="../qt/offroad/settings.cc" line="198"/>
<source> Your device is pointed %1° %2 and %3° %4.</source> <source> Your device is pointed %1° %2 and %3° %4.</source>
<translation>%1° %2%3° %4</translation> <translation>%1° %2%3° %4</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="205"/> <location filename="../qt/offroad/settings.cc" line="199"/>
<source>down</source> <source>down</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="205"/> <location filename="../qt/offroad/settings.cc" line="199"/>
<source>up</source> <source>up</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="206"/> <location filename="../qt/offroad/settings.cc" line="200"/>
<source>left</source> <source>left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="206"/> <location filename="../qt/offroad/settings.cc" line="200"/>
<source>right</source> <source>right</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="217"/> <location filename="../qt/offroad/settings.cc" line="211"/>
<source>Are you sure you want to reboot?</source> <source>Are you sure you want to reboot?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="224"/> <location filename="../qt/offroad/settings.cc" line="218"/>
<source>Disengage to Reboot</source> <source>Disengage to Reboot</source>
<translation>openpilot以重新启动</translation> <translation>openpilot以重新启动</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="230"/> <location filename="../qt/offroad/settings.cc" line="224"/>
<source>Are you sure you want to power off?</source> <source>Are you sure you want to power off?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="237"/> <location filename="../qt/offroad/settings.cc" line="231"/>
<source>Disengage to Power Off</source> <source>Disengage to Power Off</source>
<translation>openpilot以关机</translation> <translation>openpilot以关机</translation>
</message> </message>
@ -294,7 +294,7 @@
<context> <context>
<name>DriverViewScene</name> <name>DriverViewScene</name>
<message> <message>
<location filename="../qt/offroad/driverview.cc" line="56"/> <location filename="../qt/offroad/driverview.cc" line="55"/>
<source>camera starting</source> <source>camera starting</source>
<translation></translation> <translation></translation>
</message> </message>
@ -496,20 +496,20 @@ location set</source>
<translation>mph</translation> <translation>mph</translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="279"/> <location filename="../qt/onroad.cc" line="280"/>
<location filename="../qt/onroad.cc" line="282"/> <location filename="../qt/onroad.cc" line="283"/>
<source>MAX</source> <source>MAX</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="326"/> <location filename="../qt/onroad.cc" line="327"/>
<location filename="../qt/onroad.cc" line="329"/> <location filename="../qt/onroad.cc" line="330"/>
<source>SPEED</source> <source>SPEED</source>
<translation>SPEED</translation> <translation>SPEED</translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="332"/> <location filename="../qt/onroad.cc" line="333"/>
<location filename="../qt/onroad.cc" line="335"/> <location filename="../qt/onroad.cc" line="336"/>
<source>LIMIT</source> <source>LIMIT</source>
<translation>LIMIT</translation> <translation>LIMIT</translation>
</message> </message>
@ -708,33 +708,33 @@ location set</source>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="338"/> <location filename="../qt/offroad/settings.cc" line="332"/>
<source>×</source> <source>×</source>
<translation>×</translation> <translation>×</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="364"/> <location filename="../qt/offroad/settings.cc" line="358"/>
<source>Device</source> <source>Device</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="365"/> <location filename="../qt/offroad/settings.cc" line="359"/>
<location filename="../qt/offroad/settings.cc" line="404"/> <location filename="../qt/offroad/settings.cc" line="398"/>
<source>Network</source> <source>Network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="366"/> <location filename="../qt/offroad/settings.cc" line="360"/>
<source>Toggles</source> <source>Toggles</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="367"/> <location filename="../qt/offroad/settings.cc" line="361"/>
<source>Software</source> <source>Software</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="372"/> <location filename="../qt/offroad/settings.cc" line="366"/>
<source>Navigation</source> <source>Navigation</source>
<translation></translation> <translation></translation>
</message> </message>
@ -973,89 +973,89 @@ location set</source>
<context> <context>
<name>SoftwarePanel</name> <name>SoftwarePanel</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="242"/> <location filename="../qt/offroad/settings.cc" line="236"/>
<source>Git Branch</source> <source>Git Branch</source>
<translation>Git Branch</translation> <translation>Git Branch</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="243"/> <location filename="../qt/offroad/settings.cc" line="237"/>
<source>Git Commit</source> <source>Git Commit</source>
<translation>Git Commit</translation> <translation>Git Commit</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="244"/> <location filename="../qt/offroad/settings.cc" line="238"/>
<source>OS Version</source> <source>OS Version</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="245"/> <location filename="../qt/offroad/settings.cc" line="239"/>
<source>Version</source> <source>Version</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="246"/> <location filename="../qt/offroad/settings.cc" line="240"/>
<source>Last Update Check</source> <source>Last Update Check</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="246"/> <location filename="../qt/offroad/settings.cc" line="240"/>
<source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source> <source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="247"/> <location filename="../qt/offroad/settings.cc" line="241"/>
<source>Check for Update</source> <source>Check for Update</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="252"/> <location filename="../qt/offroad/settings.cc" line="246"/>
<source>CHECKING</source> <source>CHECKING</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<source>Switch Branch</source> <source>Switch Branch</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<source>ENTER</source> <source>ENTER</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<location filename="../qt/offroad/settings.cc" line="261"/> <location filename="../qt/offroad/settings.cc" line="255"/>
<source>The new branch will be pulled the next time the updater runs.</source> <source>The new branch will be pulled the next time the updater runs.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="261"/> <location filename="../qt/offroad/settings.cc" line="255"/>
<source>Enter branch name</source> <source>Enter branch name</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="272"/> <location filename="../qt/offroad/settings.cc" line="266"/>
<source>UNINSTALL</source> <source>UNINSTALL</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="272"/> <location filename="../qt/offroad/settings.cc" line="266"/>
<source>Uninstall %1</source> <source>Uninstall %1</source>
<translation> %1</translation> <translation> %1</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="274"/> <location filename="../qt/offroad/settings.cc" line="268"/>
<source>Are you sure you want to uninstall?</source> <source>Are you sure you want to uninstall?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="291"/> <location filename="../qt/offroad/settings.cc" line="285"/>
<source>failed to fetch update</source> <source>failed to fetch update</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="292"/> <location filename="../qt/offroad/settings.cc" line="286"/>
<location filename="../qt/offroad/settings.cc" line="313"/> <location filename="../qt/offroad/settings.cc" line="307"/>
<source>CHECK</source> <source>CHECK</source>
<translation></translation> <translation></translation>
</message> </message>
@ -1163,72 +1163,70 @@ location set</source>
<translation>31mph50km/h线</translation> <translation>31mph50km/h线</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Enable Right-Hand Drive</source> <source>Enable Right-Hand Drive</source>
<translation></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source> <source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source>
<translation>openpilot遵守左侧交通惯例并在右侧驾驶座上执行驾驶员监控</translation> <translation type="vanished">openpilot遵守左侧交通惯例并在右侧驾驶座上执行驾驶员监控</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="52"/> <location filename="../qt/offroad/settings.cc" line="46"/>
<source>Use Metric System</source> <source>Use Metric System</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="53"/> <location filename="../qt/offroad/settings.cc" line="47"/>
<source>Display speed in km/h instead of mph.</source> <source>Display speed in km/h instead of mph.</source>
<translation>km/h代替mph</translation> <translation>km/h代替mph</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="58"/> <location filename="../qt/offroad/settings.cc" line="52"/>
<source>Record and Upload Driver Camera</source> <source>Record and Upload Driver Camera</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="59"/> <location filename="../qt/offroad/settings.cc" line="53"/>
<source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source> <source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="64"/> <location filename="../qt/offroad/settings.cc" line="58"/>
<source>Disengage On Accelerator Pedal</source> <source>Disengage On Accelerator Pedal</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="65"/> <location filename="../qt/offroad/settings.cc" line="59"/>
<source>When enabled, pressing the accelerator pedal will disengage openpilot.</source> <source>When enabled, pressing the accelerator pedal will disengage openpilot.</source>
<translation>openpilot</translation> <translation>openpilot</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="71"/> <location filename="../qt/offroad/settings.cc" line="65"/>
<source>Show ETA in 24h format</source> <source>Show ETA in 24h format</source>
<translation>24</translation> <translation>24</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="72"/> <location filename="../qt/offroad/settings.cc" line="66"/>
<source>Use 24h format instead of am/pm</source> <source>Use 24h format instead of am/pm</source>
<translation>使24am/pm</translation> <translation>使24am/pm</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="77"/> <location filename="../qt/offroad/settings.cc" line="71"/>
<source>Show Map on Left Side of UI</source> <source>Show Map on Left Side of UI</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="78"/> <location filename="../qt/offroad/settings.cc" line="72"/>
<source>Show map on left side when in split screen view.</source> <source>Show map on left side when in split screen view.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="90"/> <location filename="../qt/offroad/settings.cc" line="84"/>
<source>openpilot Longitudinal Control</source> <source>openpilot Longitudinal Control</source>
<translation>openpilot纵向控制</translation> <translation>openpilot纵向控制</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="91"/> <location filename="../qt/offroad/settings.cc" line="85"/>
<source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source> <source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source>
<translation>openpilot将禁用车辆的雷达并接管油门和刹车的控制AEB将被禁用</translation> <translation>openpilot将禁用车辆的雷达并接管油门和刹车的控制AEB将被禁用</translation>
</message> </message>

@ -108,152 +108,152 @@
<context> <context>
<name>DevicePanel</name> <name>DevicePanel</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="106"/> <location filename="../qt/offroad/settings.cc" line="100"/>
<source>Dongle ID</source> <source>Dongle ID</source>
<translation>Dongle ID</translation> <translation>Dongle ID</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="106"/> <location filename="../qt/offroad/settings.cc" line="100"/>
<source>N/A</source> <source>N/A</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="107"/> <location filename="../qt/offroad/settings.cc" line="101"/>
<source>Serial</source> <source>Serial</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="111"/> <location filename="../qt/offroad/settings.cc" line="105"/>
<source>Driver Camera</source> <source>Driver Camera</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="111"/> <location filename="../qt/offroad/settings.cc" line="105"/>
<source>PREVIEW</source> <source>PREVIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="112"/> <location filename="../qt/offroad/settings.cc" line="106"/>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source> <source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="116"/> <location filename="../qt/offroad/settings.cc" line="110"/>
<source>Reset Calibration</source> <source>Reset Calibration</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="116"/> <location filename="../qt/offroad/settings.cc" line="110"/>
<source>RESET</source> <source>RESET</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="119"/> <location filename="../qt/offroad/settings.cc" line="113"/>
<source>Are you sure you want to reset calibration?</source> <source>Are you sure you want to reset calibration?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review Training Guide</source> <source>Review Training Guide</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>REVIEW</source> <source>REVIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="126"/> <location filename="../qt/offroad/settings.cc" line="120"/>
<source>Review the rules, features, and limitations of openpilot</source> <source>Review the rules, features, and limitations of openpilot</source>
<translation> openpilot 使</translation> <translation> openpilot 使</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="128"/> <location filename="../qt/offroad/settings.cc" line="122"/>
<source>Are you sure you want to review the training guide?</source> <source>Are you sure you want to review the training guide?</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="136"/> <location filename="../qt/offroad/settings.cc" line="130"/>
<source>Regulatory</source> <source>Regulatory</source>
<translation>/</translation> <translation>/</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="136"/> <location filename="../qt/offroad/settings.cc" line="130"/>
<source>VIEW</source> <source>VIEW</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="144"/> <location filename="../qt/offroad/settings.cc" line="138"/>
<source>Change Language</source> <source>Change Language</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="144"/> <location filename="../qt/offroad/settings.cc" line="138"/>
<source>CHANGE</source> <source>CHANGE</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="148"/> <location filename="../qt/offroad/settings.cc" line="142"/>
<source>Select a language</source> <source>Select a language</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="168"/> <location filename="../qt/offroad/settings.cc" line="162"/>
<source>Reboot</source> <source>Reboot</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="173"/> <location filename="../qt/offroad/settings.cc" line="167"/>
<source>Power Off</source> <source>Power Off</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="193"/> <location filename="../qt/offroad/settings.cc" line="187"/>
<source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required.</source> <source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required.</source>
<translation>openpilot 4° 5° 8° </translation> <translation>openpilot 4° 5° 8° </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="204"/> <location filename="../qt/offroad/settings.cc" line="198"/>
<source> Your device is pointed %1° %2 and %3° %4.</source> <source> Your device is pointed %1° %2 and %3° %4.</source>
<translation> %2 %1° %4 %3° </translation> <translation> %2 %1° %4 %3° </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="205"/> <location filename="../qt/offroad/settings.cc" line="199"/>
<source>down</source> <source>down</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="205"/> <location filename="../qt/offroad/settings.cc" line="199"/>
<source>up</source> <source>up</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="206"/> <location filename="../qt/offroad/settings.cc" line="200"/>
<source>left</source> <source>left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="206"/> <location filename="../qt/offroad/settings.cc" line="200"/>
<source>right</source> <source>right</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="217"/> <location filename="../qt/offroad/settings.cc" line="211"/>
<source>Are you sure you want to reboot?</source> <source>Are you sure you want to reboot?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="224"/> <location filename="../qt/offroad/settings.cc" line="218"/>
<source>Disengage to Reboot</source> <source>Disengage to Reboot</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="230"/> <location filename="../qt/offroad/settings.cc" line="224"/>
<source>Are you sure you want to power off?</source> <source>Are you sure you want to power off?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="237"/> <location filename="../qt/offroad/settings.cc" line="231"/>
<source>Disengage to Power Off</source> <source>Disengage to Power Off</source>
<translation></translation> <translation></translation>
</message> </message>
@ -294,7 +294,7 @@
<context> <context>
<name>DriverViewScene</name> <name>DriverViewScene</name>
<message> <message>
<location filename="../qt/offroad/driverview.cc" line="56"/> <location filename="../qt/offroad/driverview.cc" line="55"/>
<source>camera starting</source> <source>camera starting</source>
<translation></translation> <translation></translation>
</message> </message>
@ -498,20 +498,20 @@ location set</source>
<translation>mph</translation> <translation>mph</translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="279"/> <location filename="../qt/onroad.cc" line="280"/>
<location filename="../qt/onroad.cc" line="282"/> <location filename="../qt/onroad.cc" line="283"/>
<source>MAX</source> <source>MAX</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="326"/> <location filename="../qt/onroad.cc" line="327"/>
<location filename="../qt/onroad.cc" line="329"/> <location filename="../qt/onroad.cc" line="330"/>
<source>SPEED</source> <source>SPEED</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/onroad.cc" line="332"/> <location filename="../qt/onroad.cc" line="333"/>
<location filename="../qt/onroad.cc" line="335"/> <location filename="../qt/onroad.cc" line="336"/>
<source>LIMIT</source> <source>LIMIT</source>
<translation></translation> <translation></translation>
</message> </message>
@ -713,33 +713,33 @@ location set</source>
<context> <context>
<name>SettingsWindow</name> <name>SettingsWindow</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="338"/> <location filename="../qt/offroad/settings.cc" line="332"/>
<source>×</source> <source>×</source>
<translation>×</translation> <translation>×</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="364"/> <location filename="../qt/offroad/settings.cc" line="358"/>
<source>Device</source> <source>Device</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="365"/> <location filename="../qt/offroad/settings.cc" line="359"/>
<location filename="../qt/offroad/settings.cc" line="404"/> <location filename="../qt/offroad/settings.cc" line="398"/>
<source>Network</source> <source>Network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="366"/> <location filename="../qt/offroad/settings.cc" line="360"/>
<source>Toggles</source> <source>Toggles</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="367"/> <location filename="../qt/offroad/settings.cc" line="361"/>
<source>Software</source> <source>Software</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="372"/> <location filename="../qt/offroad/settings.cc" line="366"/>
<source>Navigation</source> <source>Navigation</source>
<translation></translation> <translation></translation>
</message> </message>
@ -978,89 +978,89 @@ location set</source>
<context> <context>
<name>SoftwarePanel</name> <name>SoftwarePanel</name>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="242"/> <location filename="../qt/offroad/settings.cc" line="236"/>
<source>Git Branch</source> <source>Git Branch</source>
<translation>Git </translation> <translation>Git </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="243"/> <location filename="../qt/offroad/settings.cc" line="237"/>
<source>Git Commit</source> <source>Git Commit</source>
<translation>Git </translation> <translation>Git </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="244"/> <location filename="../qt/offroad/settings.cc" line="238"/>
<source>OS Version</source> <source>OS Version</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="245"/> <location filename="../qt/offroad/settings.cc" line="239"/>
<source>Version</source> <source>Version</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="246"/> <location filename="../qt/offroad/settings.cc" line="240"/>
<source>Last Update Check</source> <source>Last Update Check</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="246"/> <location filename="../qt/offroad/settings.cc" line="240"/>
<source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source> <source>The last time openpilot successfully checked for an update. The updater only runs while the car is off.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="247"/> <location filename="../qt/offroad/settings.cc" line="241"/>
<source>Check for Update</source> <source>Check for Update</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="252"/> <location filename="../qt/offroad/settings.cc" line="246"/>
<source>CHECKING</source> <source>CHECKING</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<source>Switch Branch</source> <source>Switch Branch</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<source>ENTER</source> <source>ENTER</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="259"/> <location filename="../qt/offroad/settings.cc" line="253"/>
<location filename="../qt/offroad/settings.cc" line="261"/> <location filename="../qt/offroad/settings.cc" line="255"/>
<source>The new branch will be pulled the next time the updater runs.</source> <source>The new branch will be pulled the next time the updater runs.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="261"/> <location filename="../qt/offroad/settings.cc" line="255"/>
<source>Enter branch name</source> <source>Enter branch name</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="272"/> <location filename="../qt/offroad/settings.cc" line="266"/>
<source>UNINSTALL</source> <source>UNINSTALL</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="272"/> <location filename="../qt/offroad/settings.cc" line="266"/>
<source>Uninstall %1</source> <source>Uninstall %1</source>
<translation> %1</translation> <translation> %1</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="274"/> <location filename="../qt/offroad/settings.cc" line="268"/>
<source>Are you sure you want to uninstall?</source> <source>Are you sure you want to uninstall?</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="291"/> <location filename="../qt/offroad/settings.cc" line="285"/>
<source>failed to fetch update</source> <source>failed to fetch update</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="292"/> <location filename="../qt/offroad/settings.cc" line="286"/>
<location filename="../qt/offroad/settings.cc" line="313"/> <location filename="../qt/offroad/settings.cc" line="307"/>
<source>CHECK</source> <source>CHECK</source>
<translation></translation> <translation></translation>
</message> </message>
@ -1168,72 +1168,70 @@ location set</source>
<translation> 50 (31 ) </translation> <translation> 50 (31 ) </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="46"/>
<source>Enable Right-Hand Drive</source> <source>Enable Right-Hand Drive</source>
<translation></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="47"/>
<source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source> <source>Allow openpilot to obey left-hand traffic conventions and perform driver monitoring on right driver seat.</source>
<translation>openpilot ()</translation> <translation type="vanished">openpilot ()</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="52"/> <location filename="../qt/offroad/settings.cc" line="46"/>
<source>Use Metric System</source> <source>Use Metric System</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="53"/> <location filename="../qt/offroad/settings.cc" line="47"/>
<source>Display speed in km/h instead of mph.</source> <source>Display speed in km/h instead of mph.</source>
<translation> mp/h km/h</translation> <translation> mp/h km/h</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="58"/> <location filename="../qt/offroad/settings.cc" line="52"/>
<source>Record and Upload Driver Camera</source> <source>Record and Upload Driver Camera</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="59"/> <location filename="../qt/offroad/settings.cc" line="53"/>
<source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source> <source>Upload data from the driver facing camera and help improve the driver monitoring algorithm.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="64"/> <location filename="../qt/offroad/settings.cc" line="58"/>
<source>Disengage On Accelerator Pedal</source> <source>Disengage On Accelerator Pedal</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="65"/> <location filename="../qt/offroad/settings.cc" line="59"/>
<source>When enabled, pressing the accelerator pedal will disengage openpilot.</source> <source>When enabled, pressing the accelerator pedal will disengage openpilot.</source>
<translation> openpilot </translation> <translation> openpilot </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="71"/> <location filename="../qt/offroad/settings.cc" line="65"/>
<source>Show ETA in 24h format</source> <source>Show ETA in 24h format</source>
<translation> 24 </translation> <translation> 24 </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="72"/> <location filename="../qt/offroad/settings.cc" line="66"/>
<source>Use 24h format instead of am/pm</source> <source>Use 24h format instead of am/pm</source>
<translation>使 24 ( 12 )</translation> <translation>使 24 ( 12 )</translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="77"/> <location filename="../qt/offroad/settings.cc" line="71"/>
<source>Show Map on Left Side of UI</source> <source>Show Map on Left Side of UI</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="78"/> <location filename="../qt/offroad/settings.cc" line="72"/>
<source>Show map on left side when in split screen view.</source> <source>Show map on left side when in split screen view.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="90"/> <location filename="../qt/offroad/settings.cc" line="84"/>
<source>openpilot Longitudinal Control</source> <source>openpilot Longitudinal Control</source>
<translation>openpilot </translation> <translation>openpilot </translation>
</message> </message>
<message> <message>
<location filename="../qt/offroad/settings.cc" line="91"/> <location filename="../qt/offroad/settings.cc" line="85"/>
<source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source> <source>openpilot will disable the car&apos;s radar and will take over control of gas and brakes. Warning: this disables AEB!</source>
<translation>openpilot (AEB) </translation> <translation>openpilot (AEB) </translation>
</message> </message>

Loading…
Cancel
Save