From 3b4e939b9f88b70727e687613a912aef36178755 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Tue, 12 Jul 2022 19:58:39 -0700 Subject: [PATCH] UI: translations cleanup (#25120) * Make this one translation * Remote html from translations * getBrand as argument * some stuff * Forget Wi-Fi network * Update translations * Remove obsolete * compilation fixes * remove * Fix missing translation --- selfdrive/ui/qt/offroad/networking.cc | 8 +-- selfdrive/ui/qt/offroad/settings.cc | 2 +- selfdrive/ui/qt/widgets/input.cc | 2 +- selfdrive/ui/qt/widgets/prime.cc | 13 ++-- selfdrive/ui/translations/main_ko.qm | Bin 19981 -> 19439 bytes selfdrive/ui/translations/main_ko.ts | 79 +++++++++++------------ selfdrive/ui/translations/main_zh-CHS.qm | Bin 18469 -> 17931 bytes selfdrive/ui/translations/main_zh-CHS.ts | 79 +++++++++++------------ selfdrive/ui/translations/main_zh-CHT.qm | Bin 18509 -> 17969 bytes selfdrive/ui/translations/main_zh-CHT.ts | 79 +++++++++++------------ selfdrive/ui/update_translations.py | 10 ++- 11 files changed, 129 insertions(+), 143 deletions(-) diff --git a/selfdrive/ui/qt/offroad/networking.cc b/selfdrive/ui/qt/offroad/networking.cc index 536ca495ca..c7341d1987 100644 --- a/selfdrive/ui/qt/offroad/networking.cc +++ b/selfdrive/ui/qt/offroad/networking.cc @@ -84,7 +84,7 @@ void Networking::connectToNetwork(const Network &n) { } else if (n.security_type == SecurityType::OPEN) { wifi->connect(n); } else if (n.security_type == SecurityType::WPA) { - QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"") + n.ssid + "\"", true, 8); + QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); if (!pass.isEmpty()) { wifi->connect(n, pass); } @@ -94,7 +94,7 @@ void Networking::connectToNetwork(const Network &n) { void Networking::wrongPassword(const QString &ssid) { if (wifi->seenNetworks.contains(ssid)) { const Network &n = wifi->seenNetworks.value(ssid); - QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"") + n.ssid +"\"", true, 8); + QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); if (!pass.isEmpty()) { wifi->connect(n, pass); } @@ -174,7 +174,7 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid list->addItem(editApnButton); // Set initial config - wifi->updateGsmSettings(roamingEnabled, QString::fromStdString(params.get("GsmApn"))); + wifi->updateGsmSettings(roamingEnabled, QString::fromStdString(params.get("GsmApn"))); main_layout->addWidget(new ScrollView(list, this)); main_layout->addStretch(1); @@ -296,7 +296,7 @@ void WifiUI::refresh() { QPushButton *forgetBtn = new QPushButton(tr("FORGET")); forgetBtn->setObjectName("forgetBtn"); QObject::connect(forgetBtn, &QPushButton::clicked, [=]() { - if (ConfirmationDialog::confirm(tr("Forget Wi-Fi Network \"") + QString::fromUtf8(network.ssid) + "\"?", this)) { + if (ConfirmationDialog::confirm(tr("Forget Wi-Fi Network \"%1\"?").arg(QString::fromUtf8(network.ssid)), this)) { wifi->forgetConnection(network.ssid); } }); diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 9aeb966ccf..9a6e203966 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -249,7 +249,7 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { }); - auto uninstallBtn = new ButtonControl(tr("Uninstall ") + getBrand(), tr("UNINSTALL")); + auto uninstallBtn = new ButtonControl(tr("Uninstall %1").arg(getBrand()), tr("UNINSTALL")); connect(uninstallBtn, &ButtonControl::clicked, [&]() { if (ConfirmationDialog::confirm(tr("Are you sure you want to uninstall?"), this)) { params.putBool("DoUninstall", true); diff --git a/selfdrive/ui/qt/widgets/input.cc b/selfdrive/ui/qt/widgets/input.cc index b0facfce83..dc54a3621c 100644 --- a/selfdrive/ui/qt/widgets/input.cc +++ b/selfdrive/ui/qt/widgets/input.cc @@ -165,7 +165,7 @@ void InputDialog::handleEnter() { done(QDialog::Accepted); emitText(line->text()); } else { - setMessage(tr("Need at least ") + QString::number(minLength) + tr(" characters!"), false); + setMessage(tr("Need at least %1 characters!").arg(minLength), false); } } diff --git a/selfdrive/ui/qt/widgets/prime.cc b/selfdrive/ui/qt/widgets/prime.cc index d2529821f4..5419475262 100644 --- a/selfdrive/ui/qt/widgets/prime.cc +++ b/selfdrive/ui/qt/widgets/prime.cc @@ -88,13 +88,16 @@ PairingPopup::PairingPopup(QWidget *parent) : QDialogBase(parent) { title->setWordWrap(true); vlayout->addWidget(title); - QLabel *instructions = new QLabel(tr(R"( + QLabel *instructions = new QLabel(QString(R"(
    -
  1. Go to https://connect.comma.ai on your phone
  2. -
  3. Click "add new device" and scan the QR code on the right
  4. -
  5. Bookmark connect.comma.ai to your home screen to use it like an app
  6. +
  7. %1
  8. +
  9. %2
  10. +
  11. %3
- )"), this); + )").arg(tr("Go to https://connect.comma.ai on your phone")) + .arg(tr("Click \"add new device\" and scan the QR code on the right")) + .arg(tr("Bookmark connect.comma.ai to your home screen to use it like an app")), this); + instructions->setStyleSheet("font-size: 47px; font-weight: bold; color: black;"); instructions->setWordWrap(true); vlayout->addWidget(instructions); diff --git a/selfdrive/ui/translations/main_ko.qm b/selfdrive/ui/translations/main_ko.qm index 40b0bb65a38d65ee901ac7a85257e88868b4513c..d59698e07432f37ed105ada86a1c83bc815e0e0f 100644 GIT binary patch delta 2085 zcmYLJ3s98T89lrE|NHp&1qcfgS@r=c1%WkcK?M{P0~C=K4Mjyk2tp9$p~gJAlTkwq zYBdWLX;|7-Q0vsO$ zsjsu}HQ;BzV4uIE&S_uS7$S8GDtRSrT2dnz$;ODP=3(QME zmi(_=FF{uRtE^_ms*??X6oBlMTAph{&Z(CHXW}`mz1YJ8=kdY>0}b2o&ZR3r(kV1o z<#I}a=$Mj0+PN5gV=MQ2WTw~%Af!zea5RKM?v%~l&*{yMk!5y<0il~^Z}oG1fkSpB zO8`u_WH;rU#I!52dr$8o;X1ig^a&7_BM%)Nh7+?N$&;ljsu&?(<7GR2j|31?|PqbSYe z1QuIFeN8zq|GJoD2qp0cV)lAYC`Kt3NgvTVLt;tD2~HqiENMK+5hoG9V|EM&B2u{r&21hG{@#O0UZOj^!O4-$7u~<6H+0cr!)v>##BQ;Df{M!< z#eqQ*u&)zu@1$iyy*-%tia0(&LQ&mHxiyQO#V8G9kyI>Lx$s^x6)RIFE+3}ntjcB0 zZNS0~ll=Wtddf(Q!xbLU_?P~1wL)n7Crn=UfWp;`P*5#u^FE7L|uv|Y2xxsy^Y$=9r2LuseiYYIAf+h)2o z`$2D^MbkI1oLji@Qq&@fe!k9;iaqMths<}fC2d7K5 zlN{;vFsc6hae6dEa^GCZ(bP#tdpTlZuGIK?EtM;moF7JuyuK!>y@-M07O6ur^D((D zb(j|Nwq;3oH&juwZmq2KSA1-4Y3&z2p%<=dlW*+-ri5$P4)Zy%*J{f@6DX;d_SJ2^ zR8X(&{E8!*aa-G+PUTD`I^PQ<5P4W%bzJE;VK?XO*i< zOQaHUa^0#rCJZ*|HZ6ZltXFqv{8=U_)-@mGEi>D7J;$h=BVPCE05R%K-9RS^3ZLth zCqh{8h(0Rl1{=xH$4-#wQ*rvnIo!97>CbH^F4(W{u)RyuItTR~iTs$+s=u_5UeJ2! z`?7f*{kjZ(@15W%HX8z~seo^+!S*nTO6@bm4DmgRzF|n)O9_2nG?XVUW!!zko+B%$ zK%?RJ4JAOZ zfcP85G*V;Be3jPA^{zD4<@WbpYVKWgaW5v&yM+EVOlSLlLfeyY z^>dpmEVfXG&1EtBwwyF)%jC#$jahS~Cr6T8ZhMj|H^d}c$+2U#BNlM+yvf{GJs=U%t5_bJN#=oU$ewUAIrfXZe Y#mB=C2~SQ3x{jrr1aeGpwWdG&KXjTDOaK4? delta 2644 zcmcIk2~bq`9sYLry=6zG(a>Wyk%k_Jfz*{i zM9jOR=-<7EHcHV|An8nG55pE_LUcsc+ z*MacGm~`_4AjXEt`gzQC6&YhUq3_99l1!4WBg^h0Nj`Y#DzkYPVd_us)4m+j)Sq&F z0jAAc&MY~|*;@}tgOQtFL%U;m`Im37%3GLyvK4TK-AD0!KW@ZgX)gnq7GvibGMRcA z4URd$=&5KLl*O_)qi5YB?zgI}v7^c8x2nP01AtM#RYh-L_o5c4vYSVd*uAQEJGh?s zs_NV{0kA$$T~f0X!?mhgkt=~=ZEC6TGaz`QIE$lW-P_0#3WcI{ zGVGo$R9;I0{EiE6%wtJ9gRolo28i1))TSS$0$&?IOX>hx{RYr>Q>d$d$kN<}UETAE znZo`rHc^2p;qXuDfi#ow8=1{9-51V&*~#^M;q2|Za169++cc_Yf!1^{lnl<$CfrIRgC*KY z4ab0_2iln`k{`5OyZhl|z<-SPQI@lVG8?M%8%3&u)w(@HR`6uKx_=isPYhK7Y&F1zL5`JTG3b$e?O=hXK_x1aB09M2B7 z4|@FhZPDwDuTaMRdjC4k`SW-56Tar38!c+R36{IX}jeh1VQatj!ett6t z?YVaS22fsT)VFs|p`5DqSKLc^^Y}{>f_Xb>H%jx*xACO1wDuM+7n=_;k^W<(svBm0 zuaasWv$Z4hq}rpqDbqr!?$UI&s7>15##Rf_lJmft8dA1f`Z!$V1W%Su71B{GlbR%7 z-Xj;JCTju*ZM}5!RR<}9LG|G>+FK0%Cq83ADnr`u*8+o5470ECMhN`eP<~M$lame0 z7kiRHqoMgLw&uB^hSM*SG3(D{&l4;l{DN$2;QGi~ryP=4Ns(-m(^A;uJHbpL;(pOlUyyejh2G}V#yu(3LX3DKQ$XsNZ{COua;*8wc%mRhW zM(v&eCTui@`TULt$uh?FvQVEz#sg8@4+t`Tw1k-GJYj6|`vui|#n_Zg9Cg=tCV^To zSd8tt980f1n7rQK!xQW^4OvYFJhM%H4^zn0aZ^keucAn^DRVs;^xSAFPfn%Z9n;$P zIO)MXrfoOIQyZnGU)3{F%r~ZE52y*>YSX##=PB}2X171_j-26^VfLKBxsJVVwto2- z7^^lO;+4 zX$SeOFQSkxHYV!~79Wq6>is0CV`6hnM^VG+hHluXKMIGh?E1C0&Glf!k6Z=b?!&ch zvrevu^24raN`C%)CC{PQ^Ya!ul*Xgp`?SO4j@*OcEkegEDDeBiR4gd1Q2bmLU(d!J zzPT!=dNCv#{Oy;3QrP+JKqbnMk3<9^g0F&w{cH9oYsJVz1qxAw5`@qr9|hcxqg@1| z>A4i~^h)}N=zVz-XkGLqUSwszYhRMT4>*ryIQT2&dSB3Jgg*`H%Ce20!zf|>asE?= z{~-aATt}4ga}oM~PLgL+Ttk#N=f6qRcgntgJafvYtyDQArTBXAwT%u- z2(uUcOQ(P0qqfET*FJNU6zj8j62eOD136tg6>DRst=u|PdwSUZvS-vTO)n`bS?I{K i+ZETzvEGd - Need at least - 최소 - - - - characters! - 자가 필요합니다! + Need at least %1 characters! + 최소 %1 자가 필요합니다! @@ -481,8 +476,8 @@ location set - for " - 하기위한 " + for "%1" + 하기위한 "%1" @@ -547,52 +542,50 @@ location set 장치를 콤마 계정과 페어링합니다 - - - <ol type='1' style='margin-left: 15px;'> - <li style='margin-bottom: 50px;'>Go to https://connect.comma.ai on your phone</li> - <li style='margin-bottom: 50px;'>Click "add new device" and scan the QR code on the right</li> - <li style='margin-bottom: 50px;'>Bookmark connect.comma.ai to your home screen to use it like an app</li> - </ol> - - - <ol type='1' style='margin-left: 15px;'> - <li style='margin-bottom: 50px;'>https://connect.comma.ai에 접속하세요</li> - <li style='margin-bottom: 50px;'>"새 장치 추가"를 클릭하고 오른쪽 QR 코드를 검색합니다.</li> - <li style='margin-bottom: 50px;'>connect.comma.ai을 앱처럼 사용하려면 홈 화면에 바로가기를 만드십시오.</li> - </ol> - + + Go to https://connect.comma.ai on your phone + https://connect.comma.ai에 접속하세요 + + + + Click "add new device" and scan the QR code on the right + "새 장치 추가"를 클릭하고 오른쪽 QR 코드를 검색합니다 + + + + Bookmark connect.comma.ai to your home screen to use it like an app + connect.comma.ai을 앱처럼 사용하려면 홈 화면에 바로가기를 만드십시오 PrimeAdWidget - + Upgrade Now 지금 업그레이드 - + Become a comma prime member at connect.comma.ai connect.comma.ai에서 comma prime에 가입합니다 - + PRIME FEATURES: PRIME 기능: - + Remote access 원격 접속 - + 1 year of storage 1년간 저장 - + Developer perks 개발자 혜택 @@ -600,22 +593,22 @@ location set PrimeUserWidget - + ✓ SUBSCRIBED ✓ 구독함 - + comma prime comma prime - + CONNECT.COMMA.AI CONNECT.COMMA.AI - + COMMA POINTS COMMA POINTS @@ -857,17 +850,17 @@ location set SetupWidget - + Finish Setup 설정 완료 - + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. 장치를 (connect.comma.ai)에서 페어링하고 comma prime 오퍼를 청구합니다. - + Pair device 장치 페어링 @@ -1023,13 +1016,13 @@ location set - Uninstall - 제거 + UNINSTALL + 제거 - UNINSTALL - 제거 + Uninstall %1 + 제거 %1 @@ -1274,8 +1267,8 @@ location set - Forget Wi-Fi Network " - wifi 네트워크 저장안함 " + Forget Wi-Fi Network "%1"? + wifi 네트워크 저장안함 "%1"? diff --git a/selfdrive/ui/translations/main_zh-CHS.qm b/selfdrive/ui/translations/main_zh-CHS.qm index 2c7963cf17a496e356fb5b0372b565ac82514661..eed52b27788c46e02689a14fb9f11e17c776755a 100644 GIT binary patch delta 2088 zcmYLJ4OCQR8h+-^z4LQt<_;(zBIwKjA%Y-?3OT?L6a5v5t5eF!7x6L%^C2JkbL@>&65@Jm@YFdC+|kFy|E@Y!#6D zDlh&Vc#6q_{ei3qCK)EK06ae)D^25;|zy3gyak-FvU!iE0Nr_76?f~ z^6jHQWDw@+my&A@Qm6A_{H2yBFzee$JFo!ojzmVWi;umA%xk>W^AP5}{4d6pBU|`@ zB8DM*X*F-NAg84X&}U*{%1&|?@a%z?0H^&wSbV072RczP#6XiB`_EqlV!uGEgOv!9 z(J?xMw5xDqa~bz*RbDZnfGtGjy*B^|XjDzx%IbyPR%LYtbG=)&=VPux4yad~sNv@W&pOe%y4SvDgg6 zO%vL;*nlaD@P5ixz?>*t&f*2*E(uqBVvF2J9M8@lBcr(GxtcQ z+BFokTuM{|$$L;*xP%3Y(n*E#`*cpf^n5@w5bh;Cf4GGet|a~h=q5^)%PaW)G-+*= z!Zz3?)&8DD^o=9v`_%}JH;-WKJgFh1i3Ra^OKR9gYZ&6Bri~k@#AnjkAqp;RllrcZ zfaM42>-BVuZPf_cPf3GABox}C5v49 zq{&lJZ(EC|@%}@e8`KPDd`w4tsY`qF8oRQ(lq4h`v`JS!xeFI41ZfA0qT?#ML*958+oF_!VO<=R`cuwRk9^C3&> zUoG!`uaU$q%MHB?SeklyZ#PS<9+D5gx|7NslutOPNbKHp`D`HrB~k8>$8(mPkvqKX zY_?4EfSQP^-2LIFN=!H{;q%UhYB?b(O`#BA)7Q>p$A|(wqRKMuK_y>m0 zZ&;#$2ZoQHrg9!%8a+;vKuC+x+RAnRR^#N@N_wN)=uArd2k_)^V`}tbV8%sbS^|}b zUSZ6sV?w`3J^_&RAAIsitT{8OUP{PqZ%9?~ZG_R!8)MrwGM&-{< zydZKwIr$?!;ZtSSeb0HQ?KFGLV*5@#ZuYwQkkjQwvv*E5r$c(XdG2*43XeBuIOuZS zI&(?k4NBy0-rl=`9#~=iLqQ3p8aAI={a-4z#QfncD+!!6U%9=P-SL|FYSLRk%!MKv zsjKZtZI|NuWZc-kuD-X(eHUt~VL>1wU`d~pm%H|fVHGV( zPx0@YUQn>ilJBq-7vz^ZEP)X&Z!c?Gz1I{?z$j-{)fd^O%I}ALVEZ}T_Bc$peARC( zw!nzCo4zlo1Z29bmQ4BaZldd~HPN-s=B2W^_D`_=vJvgdvqnGKaETM*e_0NF%^Lb> zwJpLXd0OT97294OA^bR_aY0E@NvR{hxR?~%vS!S43-W!gxArf{MG=xv^oS}${!bI} Vj{|*Nr<1+JzzAEs>yzY+{{iv64I%&l delta 2662 zcmcIk3sjTm8Ge)ee=a}CAJ7n5x%~t%Ah%G#aS4cU#EKmkMPQ<}Fe1hVf)ER-mXuj* zDb~vg4pymJfnvw3J79J5Xs0bw(P8VU-RKybQY~W3Y;|X)BDe>zJ#;(U&UVg{!+FT} zy_e^E-sk)3c8FSci*{=q0+G0c$n6Q>IMKXtB1thY6Icl>2Q~ofi5Tqj3L-XwDCB)$ zJW(hQ%twrA8g+=5-XU^DO_?`vComRx6nKV6g*YX0{a+xOdxdC~D}wb1bn^uw(Crzb z#n?0)AWC})ja-SISONSIQC1|1JOHjIa=!)KhV?^4me8BxUq@IxXS_O%=KjQBj} z-%iZ-eME^DiD|q}B;ttaib7U2F}=S6Rul69L*(-nu`ff4&^Mh4A`eFr$wENRb+pI&4o81t(G0>Jv8;c?+W9`7aR7xhv+1&k+SRi34v8l7k}q#HpMO%=U;^ zyW+%#bK=*oVD#P=@rfNE_E@6$ouwG9dX4y_EEM)(#REOCL3o4s>OprR&pZhe?m?sp zm3V)_BJYeuSGN!f>Lr`9Q1=J(CG9+jhYU$Nj>Br|%aW5F$TQ?iy7bk~Yhq7FJM&aq zCm5V&%u6A#tBSD?CK3r}nJtB2B(*c!nY%;_4l<2PPr-mu)5woaqo#2heeW|(Eu&!O z!5q3?1k7cA@xfjq-9F~n(=CuRiTSk>vr!#qE`HXJ^>3JqxBh||xb-lD3y;BY4whR0 z%@Z!Ls=AHPu#HXO12IGcoA(rEvLJ>n=H7u>2H6b(tGnnPuQlA7R*3%o^9F%SGXjyEiZ0^61Ui+?_VW~ z7-iobhvwp4?0bHf;i_|N{{RU2>)B7Y_P_+K)0lXhy*Cbm5u8-)mkoCvmh!j5p`cl6 z98QITe~>QeI879{N}4Z%_5lOZ=FtfvKZEpM#>Wo0OeNC=L#m)4S?ipwI9Z$QXz8bD zoFluv{1Buw$-ce?MIWAQ^oUZ2ZTg1c}Hj?2>|AgZpHn?}Y!Fh~B%rdP3FEI-hW zIUZhBTR;AX`G)Xpsm!Q&+5xuOqyaZ-V+9md<@8xKstHF%b* z8&c!<0j_=mqYXU4HJ)k)p%JdBZzV=_ncLrsQA@_TBaWBqAz43n(!hdQHTP~Y5?O}p z;(YLooaMT-Mi6?7yZK`q8cn!}j#nc-)5ZVHIe6l>OX{C$iDpS$)(ql7@XvAC_z?r* zg)TMEXpleV()|TSqmOhs|3fII8C7b|fI!%Q(ys&Sfj5e!e8RjW}+Yb!?owC0h z1eu*GX=?x;0Do14_wPX@RuwxAqMi+^BT?A*8&RF81ja6RsJe7-z`ZL}UCBT_r@CN- z7dWHpN*=DIW-agjW-Hb&^K-UCfmz@1y3rIU^=CfjDqf<99)8&lC^$Qc-zjm`#=QW!7%t!I@fFcoL!!eIs>$B{#?!7)ou+` zTSLNk5q!GIR3sGG1dFMl!X`Kct$Sy!)*$s#I7= zdB-b9R57(?dAL?W1yoMOWTsLILxzdgVLuLW zkra*0DvC!|;y+ZM>|{i=`C+~J_Nmm#Cf_eu2pTqgtyrHd8cl|8i#jWPlb%GCh^adN zsl)%!fD)Y(KDz&Ri!`51$G<$q=yi2 zQczxOE)BDo*4g5O$mp`Fczxo-a6vFy%-@f54J)+TY}S%EA=)q%>OAWk8expEnEy@E zKjqBxjrp&0T6|KpGy51Ltd{AXog==U?w-;WRlA;>;c{+eskyYmR$#FR&aa|8I+LQ~ wUFXkQ+gJBX%7vLy$vo-y89vvhTFZ+~HX+v>mTDH#O}0vF`O`4|sl^$82ZSevfB*mh diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index d9377054a5..0870ff7028 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -308,13 +308,8 @@ - Need at least - 至少需要 - - - - characters! - 个字符! + Need at least %1 characters! + 至少需要 %1 个字符! @@ -479,8 +474,8 @@ location set - for " - 网络名称:" + for "%1" + 网络名称:"%1" @@ -545,52 +540,50 @@ location set 将您的设备与comma账号配对 - - - <ol type='1' style='margin-left: 15px;'> - <li style='margin-bottom: 50px;'>Go to https://connect.comma.ai on your phone</li> - <li style='margin-bottom: 50px;'>Click "add new device" and scan the QR code on the right</li> - <li style='margin-bottom: 50px;'>Bookmark connect.comma.ai to your home screen to use it like an app</li> - </ol> - - - <ol type='1' style='margin-left: 15px;'> - <li style='margin-bottom: 50px;'>在手机上访问 https://connect.comma.ai</li> - <li style='margin-bottom: 50px;'>点击“添加新设备”,扫描右侧二维码</li> - <li style='margin-bottom: 50px;'>将 connect.comma.ai 收藏到您的主屏幕,以便像应用程序一样使用它</li> - </ol> - + + Go to https://connect.comma.ai on your phone + 在手机上访问 https://connect.comma.ai + + + + Click "add new device" and scan the QR code on the right + 点击“添加新设备”,扫描右侧二维码 + + + + Bookmark connect.comma.ai to your home screen to use it like an app + 将 connect.comma.ai 收藏到您的主屏幕,以便像应用程序一样使用它 PrimeAdWidget - + Upgrade Now 现在升级 - + Become a comma prime member at connect.comma.ai 打开connect.comma.ai以注册comma prime会员 - + PRIME FEATURES: comma prime特权: - + Remote access 远程访问 - + 1 year of storage 1年数据存储 - + Developer perks 开发者福利 @@ -598,22 +591,22 @@ location set PrimeUserWidget - + ✓ SUBSCRIBED ✓ 已订阅 - + comma prime comma prime - + CONNECT.COMMA.AI CONNECT.COMMA.AI - + COMMA POINTS COMMA POINTS点数 @@ -855,17 +848,17 @@ location set SetupWidget - + Finish Setup 完成设置 - + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. 将您的设备与comma connect (connect.comma.ai)配对并领取您的comma prime优惠。 - + Pair device 配对设备 @@ -1021,13 +1014,13 @@ location set - Uninstall - 卸载 + UNINSTALL + 卸载 - UNINSTALL - 卸载 + Uninstall %1 + 卸载 %1 @@ -1272,8 +1265,8 @@ location set - Forget Wi-Fi Network " - 忘记WiFi网络" + Forget Wi-Fi Network "%1"? + 忘记WiFi网络 "%1"? diff --git a/selfdrive/ui/translations/main_zh-CHT.qm b/selfdrive/ui/translations/main_zh-CHT.qm index 0d448f2080322661cb712bd3c06b4049fabbf935..029332de238d74b5cf8c40073a31d27ea6f0bf4f 100644 GIT binary patch delta 2149 zcmZ`(eNa^Q6}@lwz1@9p-|hol5Y`3u0}RLlqJ#o2GC+iYDK3={Ctxe;x}tn2ELE#< zON}LnQFNsmgG3_)O=1%vV&X@l2Bl(=IGWTBLuw5wX0#gZBoxK;;Lg~;%FNDT-tXSu zJ@?%6yM2w!ku6N4&K*u9D<|?5fMY~2oFtMvf!_jG1D^nQ5rylCSe$F_6LB#_5i@`@ zfxib9A?7z;47p3Bcu3?ENu&${z5+}HqK5J`^5+tXJw(Q*L{qL3z3THZii`&i0uksN zM>P9&qNqni*>9jQey_{}UL?wm#U&t+yNt;12yhb!=!nYpBcCU##-%=6iCj4Me_{K* zV7DoZ*t)lgY)6URJw(K4iS0&(@OEPRJ_SA?wx1<3loPkvNHjHwxWny4>H<=9K?3y# zQX1!@+88M#L08>M(yrszp1!RM6f^#M@|o)=tEIL$4lO zPn7IO3(j0X!7^GihCEF;?eD#W?<3UV`ZcudrS6H))(}rOH`n02n(2GIwUY4#I6R!FdiBTV-K4 zZxF>ymt_bp=$a!d_Cd$dfwH|_C}BG%HtjY>OFjdt{$yVFr>#b|p6-1txoB zgBReC$UCy@`}~LkwQ@Fk64AsFdC*-B=XSZdAqAbiDX+;zfw&%d^O;5zx-9=di%ud6 z??8UkN1i@eh`X9y*xre#-?61xP+RI}*WQ>#6g-<CWSzN=PK!o4sMZ@vK7wK z?ckcX!5L~R*ZRjzP@{6N|n&7Ok zE@hj3BRcw7`BBApC~Q~$^gR@icPSswybWj6snR35@x~HV+4AccQGv>F?=h@yQ@vTU z2j{-3cRoP=#6;E6n-&=38(yiw8kyYBTbfmPQ*ZI1&;vJGmcYXcH&YRlO&$1dStv#&uZ1^G ziSCT_%S1_s#O#CxM89Yi=cGZ21iM(!gbNMBVtLLuF{ij|v=A3aV#jv8F#{uB*azjJ z{viH!0B8*t2hM{ayF;UB3q`?unwX%!fk?6@aSTKQ=V=bd;XK5tIkp-Y|D&ec{2oj@ z+pXzN!#|-rG`+Sa?8B*=tMl<3brD*>Lv84&NUN`d0uzpD%_HepbBnbJ*R3c#SvzM7 zB%Cm!U6nQ)d5^U9Z{u-KS*(4(6$Pg6)t>qhp3vJR)dQ?UWtXH&#q*s}Df!=eN;FN7 z0t)hoCgs#iFAw3O=pJdV3ochxNfpkUaO-8M@!BSMV43umqXJU>Abqj&36#o_dTyIQ zAX^$7Zh`b^()El#6D4+*!btZ!laz15=%C}0=W*VaBN z_9Y{QQ7jql>Y~Ej^q(166rRG*kmGPHF_yTDWsZ_+moY5XGva6JT<0IB2oYafiZt`H zMDz0m)zZo;qd6?r?1?q#I{$9SU=);BtR$o7ez3_i)fgi@4^8*HZ%Ut}L>19qQd(77 z;j~w-tXcVtS(2wbBtZclG)VP4oAL1|hFlNu`Oug0H2BkcY)@M{!IUO!zVQExGsWHdlT3uPS N;#p@Yp3%&C{{>l+97q5F delta 2681 zcmcIl3s98T89lrE|GVtJyZ?$V+ZJ{Cc_{dR1p@|QL4|^XElTj!phgJ`Zd@M18emX2 zj8S9oy&B&d6>4l^oq)kKiPkF7V1h9dlGveGix1SA+GwX*t+od+iD{?pv@?a-IqbdP zLS2DjQ9W;atqKD0z)mt3gQUjCgLPO;J)c5AliXpE@C3F ziI~fnXL>Ot1kkcZpEN)>kXS$*MO;oi#{7wZ@e~jm3k+@pp6+uR2=5NOLu8J-tI5y} zBV9usqRm8U9>%p)1CfCkcl9kGR)g{SJhHDw=E#lc{>iLJffqx!V4~Z{bDzSb-;qGT zHaxZHPfW_)x!NfD9Wd{0rOG$ zfcd5f>^^-47!!d8&n(UjXzoXCZEjqCc>(v!Rn}3%y+Bxi>iavxDE2m0+-eRqdXFmm zB%{L)tG0f|_4roRnaKhRJ5=Y?dw~JBRM(z(5eRHoONH+P5qauCmpg%&JaxL{p%Txi zXY}ETqchYy+VsG{5$eM$Ni62H`e?>#z?`K1G@Eq?wx~N=(&&t+AoYb;1AzWN)Cf`E z11x=iEc9=(7e;YJo|5b9qJ(ODq;4% zMz*gNTp3i?d`+n8Oa_!{VPPKWXqO7hh1;x>FKo_ukA95mMY+8fEem@ws6p6Xcb9`Z zDD1hEPwW!j_;@1_GC?>rua0`o5Po6gTueKK53jUyeZTPG^*;b!|J_38=tJ~hwJ43G z;7Om0rrP<`uR=_f2a)zUar$fyB<{LcC>^C!PK(cl)l;W4;&a`O(mRRtxL=@HRZz)e z4-ugXiP8{+mgbcA8JShs8`m3Uh`cfP$-Q#S_7w&{6ebdj|=Hd?8+3(!xRiq!&jU#Cs1&FlxP49Xy%NYSzj(qo`o0 z)^RPJ3SQBUYd8WVq-b+h)IDsScJJMX-0#%hoA?=>6w#^+8A7STZ|Ld+mvG{C-NE9E zY&=PK^Qk?Qu10s~Iu+40>Fy_X(Md=AQinA2t`+-bYDm;v>gW9OJ_$PfRxQ}d{c(P~ zUT2+tIeu?l4&`^FUT5MnViWbD+x>tiTJ&RY6*7LVe#!*zB}yNypSpySjrmBQJA)Dr zI;qb;nLD7UuuOaPkI6Gx((G|3TTdMan^ z__Z-JekL%g%{U>2N+i5soVt+(gKWm4tZrh3#!dI8u|S%!VIA+7?MY+Ht5nY3VEm|^ z7&Xh-ev$-*^(Jk77%#uhWFPnii6oguJs{EkD@+GsxgWg4bhv^zYOvST9P(4TH_g9m7hkcOJtrt?}_QssdC^&G`IIdC}@==+HrayOMq`Q-QueB12V@`ROCuwP$! zeo7kiZp$mS@sdYuk#}^Bp*KYNXLW28+bSRVGd(e2nS5r$qKJ>y?MVhy?TaODq_D$2`$Pm;05OiwiGPDxG=lxux{NT=N!ZF%|pD{L9k6QnAJ6 zj;lL)D=N(w(ti#lUUUIt`!%NM_R9ehlu3r%Y1yfNQ_*)c3_nKScx$lFBmKZ9Sp7q# zO;}M=b9;tAly4&BET=PHnd4F1&N<~CWxX|^(PfR*251)*KtaeiabiJ9nbP>~fLxVV zoe%bU?AL)3xcS|KDwM*BB!nY|9|h$-YwkyDMVNy!6vBmKL^8vP0`4a;E(USTtVANS zlK-K4cP9sAB`#9_+?%tlhWX0O}`=EMDe{D|X8vSD~m!=fEipxE7+-{}u&Dbk_ z5(A4x{=ZT%jkbzJdbhb2HLSYHm2WL?O)n`cbb6F&uE=zklI8SNl$6a=LVV}ba{dnW C?SW|k diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index efd893ec4c..0620382a63 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -308,13 +308,8 @@ - Need at least - 需要至少 - - - - characters! - 個字元! + Need at least %1 characters! + 需要至少 %1 個字元! @@ -481,8 +476,8 @@ location set - for " - 給 " + for "%1" + 給 "%1" @@ -547,52 +542,50 @@ location set 將設備與您的 comma 帳號配對 - - - <ol type='1' style='margin-left: 15px;'> - <li style='margin-bottom: 50px;'>Go to https://connect.comma.ai on your phone</li> - <li style='margin-bottom: 50px;'>Click "add new device" and scan the QR code on the right</li> - <li style='margin-bottom: 50px;'>Bookmark connect.comma.ai to your home screen to use it like an app</li> - </ol> - - - <ol type='1' style='margin-left: 15px;'> - <li style='margin-bottom: 50px;'>用手機連至 https://connect.comma.ai</li> - <li style='margin-bottom: 50px;'>點選 "add new device" 後掃描右邊的二維碼</li> - <li style='margin-bottom: 50px;'>將 connect.comma.ai 加入您的主屏幕,以便像手機 App 一樣使用它</li> - </ol> - + + Go to https://connect.comma.ai on your phone + 用手機連至 https://connect.comma.ai + + + + Click "add new device" and scan the QR code on the right + 點選 "add new device" 後掃描右邊的二維碼 + + + + Bookmark connect.comma.ai to your home screen to use it like an app + 將 connect.comma.ai 加入您的主屏幕,以便像手機 App 一樣使用它 PrimeAdWidget - + Upgrade Now 馬上升級 - + Become a comma prime member at connect.comma.ai 成為 connect.comma.ai 的高級會員 - + PRIME FEATURES: 高級會員特點: - + Remote access 遠程訪問 - + 1 year of storage 一年的雲端行車記錄 - + Developer perks 開發者福利 @@ -600,22 +593,22 @@ location set PrimeUserWidget - + ✓ SUBSCRIBED ✓ 已訂閱 - + comma prime comma 高級會員 - + CONNECT.COMMA.AI CONNECT.COMMA.AI - + COMMA POINTS COMMA 積分 @@ -860,17 +853,17 @@ location set SetupWidget - + Finish Setup 完成設置 - + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. 將您的設備與 comma connect (connect.comma.ai) 配對並領取您的 comma 高級會員優惠。 - + Pair device 配對設備 @@ -1026,13 +1019,13 @@ location set - Uninstall - 卸載 + UNINSTALL + 卸載 - UNINSTALL - 卸載 + Uninstall %1 + 卸載 %1 @@ -1277,8 +1270,8 @@ location set - Forget Wi-Fi Network " - 清除 Wi-Fi 網路 " + Forget Wi-Fi Network "%1"? + 清除 Wi-Fi 網路 "%1"? diff --git a/selfdrive/ui/update_translations.py b/selfdrive/ui/update_translations.py index d872be0d86..f06d54b2d5 100755 --- a/selfdrive/ui/update_translations.py +++ b/selfdrive/ui/update_translations.py @@ -10,7 +10,7 @@ TRANSLATIONS_DIR = os.path.join(UI_DIR, "translations") LANGUAGES_FILE = os.path.join(TRANSLATIONS_DIR, "languages.json") -def update_translations(release=False, translations_dir=TRANSLATIONS_DIR): +def update_translations(release=False, vanish=False, translations_dir=TRANSLATIONS_DIR): with open(LANGUAGES_FILE, "r") as f: translation_files = json.load(f) @@ -20,7 +20,10 @@ def update_translations(release=False, translations_dir=TRANSLATIONS_DIR): continue tr_file = os.path.join(translations_dir, f"{file}.ts") - ret = os.system(f"lupdate -recursive {UI_DIR} -ts {tr_file}") + args = f"lupdate -recursive {UI_DIR} -ts {tr_file}" + if vanish: + args += " -no-obsolete" + ret = os.system(args) assert ret == 0 if release: @@ -32,6 +35,7 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description="Update translation files for UI", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("--release", action="store_true", help="Create compiled QM translation files used by UI") + parser.add_argument("--vanish", action="store_true", help="Remove translations with source text no longer found") args = parser.parse_args() - update_translations(args.release) + update_translations(args.release, args.vanish)