raylib: unifont for CJK languages (#36430)

* add rest of langs

* unifont

* all langs are supported

* add japanese translations

* fix strip!

* add language name chars

* use unifont in lang selection

* add korean

* test all langs

* doesn't work

* unifont font fallback for multilang

* add ar translations

* fix labels not updating until scrolling

* t chinese

* more chn

* we already default

* wrap

* update

* fix thai

* fix missing chinese langs and all are supported!

* clean up

* update

* ??? mypy r u ok ???

* fix default option font weight
pull/36434/head
Shane Smiskol 2 weeks ago committed by GitHub
parent b14270bd71
commit a0d48b6c63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      .gitattributes
  2. 3
      selfdrive/assets/fonts/unifont.otf
  3. 5
      selfdrive/ui/layouts/settings/device.py
  4. 2
      selfdrive/ui/layouts/settings/software.py
  5. 113
      selfdrive/ui/translations/app.pot
  6. 1237
      selfdrive/ui/translations/app_ar.po
  7. 113
      selfdrive/ui/translations/app_de.po
  8. 113
      selfdrive/ui/translations/app_en.po
  9. 113
      selfdrive/ui/translations/app_es.po
  10. 113
      selfdrive/ui/translations/app_fr.po
  11. 1216
      selfdrive/ui/translations/app_ja.po
  12. 1209
      selfdrive/ui/translations/app_ko.po
  13. 113
      selfdrive/ui/translations/app_pt-BR.po
  14. 1148
      selfdrive/ui/translations/app_th.po
  15. 113
      selfdrive/ui/translations/app_tr.po
  16. 1193
      selfdrive/ui/translations/app_zh-CHS.po
  17. 1192
      selfdrive/ui/translations/app_zh-CHT.po
  18. 19
      system/ui/lib/application.py
  19. 42
      system/ui/lib/multilang.py
  20. 3
      system/ui/lib/text_measure.py
  21. 2
      system/ui/lib/wrap_text.py
  22. 7
      system/ui/widgets/label.py
  23. 3
      system/ui/widgets/option_dialog.py

1
.gitattributes vendored

@ -7,6 +7,7 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
selfdrive/car/tests/test_models_segs.txt filter=lfs diff=lfs merge=lfs -text

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9712a9bc089af7ddc06e0826aa84f2ee23ed2f1a1dddaf2a89c2483e753a8475
size 5321484

@ -10,7 +10,7 @@ from openpilot.selfdrive.ui.ui_state import ui_state
from openpilot.selfdrive.ui.layouts.onboarding import TrainingGuide
from openpilot.selfdrive.ui.widgets.pairing_dialog import PairingDialog
from openpilot.system.hardware import TICI
from openpilot.system.ui.lib.application import gui_app
from openpilot.system.ui.lib.application import FontWeight, gui_app
from openpilot.system.ui.lib.multilang import multilang, tr, tr_noop
from openpilot.system.ui.widgets import Widget, DialogResult
from openpilot.system.ui.widgets.confirm_dialog import ConfirmDialog, alert_dialog
@ -88,7 +88,8 @@ class DeviceLayout(Widget):
self._update_calib_description()
self._select_language_dialog = None
self._select_language_dialog = MultiOptionDialog(tr("Select a language"), multilang.languages, multilang.codes[multilang.language])
self._select_language_dialog = MultiOptionDialog(tr("Select a language"), multilang.languages, multilang.codes[multilang.language],
option_font_weight=FontWeight.UNIFONT)
gui_app.set_modal_overlay(self._select_language_dialog, callback=handle_language_selection)
def _show_driver_camera(self):

@ -180,7 +180,7 @@ class SoftwareLayout(Widget):
branches.insert(0, b)
current_target = ui_state.params.get("UpdaterTargetBranch") or ""
self._branch_dialog = MultiOptionDialog("Select a branch", branches, current_target)
self._branch_dialog = MultiOptionDialog(tr("Select a branch"), branches, current_target)
def handle_selection(result):
# Confirmed selection

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 19:09-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -26,14 +26,14 @@ msgid "OK"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
msgid "Cancel"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr ""
@ -193,8 +193,8 @@ msgstr ""
msgid "FORGETTING..."
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr ""
@ -609,112 +609,127 @@ msgstr ""
msgid "Enable"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"
msgstr[0] ""
msgstr[1] ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] ""
msgstr[1] ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] ""
msgstr[1] ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:25
msgid ""
"Preview the driver facing camera to ensure that driver monitoring has good "
@ -752,13 +767,13 @@ msgid "RESET"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr ""
@ -824,89 +839,89 @@ msgstr ""
msgid "Select a language"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
"Resetting calibration will restart openpilot if the car is powered on."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr ""

File diff suppressed because it is too large Load Diff

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 18:57-0700\n"
"PO-Revision-Date: 2025-10-20 16:35-0700\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -17,17 +17,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr " Die Lenkmoment-Reaktionskalibrierung ist abgeschlossen."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr " Die Lenkmoment-Reaktionskalibrierung ist zu {}% abgeschlossen."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr " Ihr Gerät ist um {:.1f}° {} und {:.1f}° {} ausgerichtet."
@ -76,12 +76,12 @@ msgstr ""
"Experimentalmodus wird empfohlen, wenn Sie die openpilot-Längsregelung "
"(Alpha) aktivieren."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr "<br><br>Kalibrierung der Lenkverzögerung abgeschlossen."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr "<br><br>Kalibrierung der Lenkverzögerung zu {}% abgeschlossen."
@ -144,22 +144,22 @@ msgstr ""
"Eine Alpha-Version der openpilot-Längsregelung kann zusammen mit dem "
"Experimentalmodus auf Nicht-Release-Zweigen getestet werden."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr "Sind Sie sicher, dass Sie ausschalten möchten?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr "Sind Sie sicher, dass Sie neu starten möchten?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr "Sind Sie sicher, dass Sie die Kalibrierung zurücksetzen möchten?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr "Sind Sie sicher, dass Sie deinstallieren möchten?"
@ -187,10 +187,10 @@ msgstr ""
msgid "CHANGE"
msgstr "ÄNDERN"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr "PRÜFEN"
@ -215,7 +215,7 @@ msgid "CONNECTING..."
msgstr "VERBINDUNG"
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
@ -249,12 +249,12 @@ msgstr "Klicken Sie auf \"add new device\" und scannen Sie den QR‑Code rechts"
msgid "Close"
msgstr "Schließen"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr "Aktuelle Version"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr "HERUNTERLADEN"
@ -282,17 +282,17 @@ msgstr "Gerät"
msgid "Disengage on Accelerator Pedal"
msgstr "Beim Gaspedal deaktivieren"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr "Zum Ausschalten deaktivieren"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr "Zum Neustart deaktivieren"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr "Zum Zurücksetzen der Kalibrierung deaktivieren"
@ -306,7 +306,7 @@ msgstr "Geschwindigkeit in km/h statt mph anzeigen."
msgid "Dongle ID"
msgstr "Dongle-ID"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr "Herunterladen"
@ -415,8 +415,8 @@ msgstr "Passwort eingeben"
msgid "Enter your GitHub username"
msgstr "Geben Sie Ihren GitHub‑Benutzernamen ein"
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr "Fehler"
@ -533,8 +533,8 @@ msgstr "Netzwerk"
msgid "INACTIVE: connect to an unmetered network"
msgstr "INAKTIV: Mit einem unlimitierten Netzwerk verbinden"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr "INSTALLIEREN"
@ -544,7 +544,7 @@ msgstr "INSTALLIEREN"
msgid "IP Address"
msgstr "IP‑Adresse"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr "Update installieren"
@ -614,7 +614,7 @@ msgstr "Keine Versionshinweise verfügbar."
msgid "OFFLINE"
msgstr "OFFLINE"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -682,7 +682,7 @@ msgid "Please connect to Wi-Fi to complete initial pairing"
msgstr "Bitte mit WLAN verbinden, um das erste Koppeln abzuschließen"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr "Ausschalten"
@ -725,7 +725,7 @@ msgid "REVIEW"
msgstr "ANSEHEN"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr "Neustart"
@ -793,7 +793,7 @@ msgstr "Remote‑Schnappschüsse"
msgid "Request timed out"
msgstr "Zeitüberschreitung bei der Anfrage"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr "Zurücksetzen"
@ -813,6 +813,11 @@ msgid "Review the rules, features, and limitations of openpilot"
msgstr ""
"Überprüfen Sie die Regeln, Funktionen und Einschränkungen von openpilot"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/developer.py:53
#, python-format
msgid "SSH Keys"
@ -823,11 +828,16 @@ msgstr "SSH‑Schlüssel"
msgid "Scanning Wi-Fi networks..."
msgstr "WLAN‑Netzwerke werden gesucht..."
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr "Auswählen"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:91
#, python-format
msgid "Select a language"
@ -883,6 +893,11 @@ msgstr "SOFORT DIE KONTROLLE ÜBERNEHMEN"
msgid "TEMP"
msgstr "TEMP"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/network.py:124
#, python-format
msgid "Tethering Password"
@ -892,7 +907,7 @@ msgstr "Tethering‑Passwort"
msgid "Toggles"
msgstr "Schalter"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr "DEINSTALLIEREN"
@ -902,8 +917,8 @@ msgstr "DEINSTALLIEREN"
msgid "UPDATE"
msgstr "UPDATE"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr "Deinstallieren"
@ -912,7 +927,7 @@ msgstr "Deinstallieren"
msgid "Unknown"
msgstr "Unbekannt"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr "Updates werden nur heruntergeladen, wenn das Auto aus ist."
@ -1024,12 +1039,12 @@ msgstr "comma prime"
msgid "default"
msgstr "Standard"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr "unten"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr "Überprüfung auf Updates fehlgeschlagen"
@ -1050,7 +1065,7 @@ msgstr "km/h"
msgid "leave blank for automatic configuration"
msgstr "für automatische Konfiguration leer lassen"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr "links"
@ -1065,12 +1080,12 @@ msgstr "getaktet"
msgid "mph"
msgstr "mph"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr "nie"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr "jetzt"
@ -1113,7 +1128,7 @@ msgstr ""
"manche Kurven besser zu zeigen. Das Experimentalmodus‑Logo wird außerdem "
"oben rechts angezeigt."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
@ -1149,7 +1164,7 @@ msgstr ""
"openpilot erfordert, dass das Gerät innerhalb von 4° nach links oder rechts "
"und innerhalb von 5° nach oben oder 9° nach unten montiert ist."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr "rechts"
@ -1159,22 +1174,22 @@ msgstr "rechts"
msgid "unmetered"
msgstr "unbegrenzt"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr "oben"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr "Aktuell, zuletzt geprüft: nie"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr "Aktuell, zuletzt geprüft: {}"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr "Update verfügbar"
@ -1186,21 +1201,21 @@ msgid_plural "{} ALERTS"
msgstr[0] "{} WARNUNG"
msgstr[1] "{} WARNUNGEN"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] "vor {} Tag"
msgstr[1] "vor {} Tagen"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] "vor {} Stunde"
msgstr[1] "vor {} Stunden"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 18:57-0700\n"
"PO-Revision-Date: 2025-10-21 18:18-0700\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -17,17 +17,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr " Steering torque response calibration is complete."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr " Steering torque response calibration is {}% complete."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr " Your device is pointed {:.1f}° {} and {:.1f}° {}."
@ -76,12 +76,12 @@ msgstr ""
"control alpha. Changing this setting will restart openpilot if the car is "
"powered on."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr "<br><br>Steering lag calibration is complete."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr "<br><br>Steering lag calibration is {}% complete."
@ -143,22 +143,22 @@ msgstr ""
"An alpha version of openpilot longitudinal control can be tested, along with "
"Experimental mode, on non-release branches."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr "Are you sure you want to power off?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr "Are you sure you want to reboot?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr "Are you sure you want to reset calibration?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr "Are you sure you want to uninstall?"
@ -184,10 +184,10 @@ msgstr "Bookmark connect.comma.ai to your home screen to use it like an app"
msgid "CHANGE"
msgstr "CHANGE"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr "CHECK"
@ -212,7 +212,7 @@ msgid "CONNECTING..."
msgstr "CONNECTING..."
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
@ -244,12 +244,12 @@ msgstr "Click \"add new device\" and scan the QR code on the right"
msgid "Close"
msgstr "Close"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr "Current Version"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr "DOWNLOAD"
@ -277,17 +277,17 @@ msgstr "Device"
msgid "Disengage on Accelerator Pedal"
msgstr "Disengage on Accelerator Pedal"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr "Disengage to Power Off"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr "Disengage to Reboot"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr "Disengage to Reset Calibration"
@ -301,7 +301,7 @@ msgstr "Display speed in km/h instead of mph."
msgid "Dongle ID"
msgstr "Dongle ID"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr "Download"
@ -410,8 +410,8 @@ msgstr "Enter password"
msgid "Enter your GitHub username"
msgstr "Enter your GitHub username"
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr "Error"
@ -527,8 +527,8 @@ msgstr "Hidden Network"
msgid "INACTIVE: connect to an unmetered network"
msgstr "INACTIVE: connect to an unmetered network"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr "INSTALL"
@ -538,7 +538,7 @@ msgstr "INSTALL"
msgid "IP Address"
msgstr "IP Address"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr "Install Update"
@ -607,7 +607,7 @@ msgstr "No release notes available."
msgid "OFFLINE"
msgstr "OFFLINE"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -675,7 +675,7 @@ msgid "Please connect to Wi-Fi to complete initial pairing"
msgstr "Please connect to Wi-Fi to complete initial pairing"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr "Power Off"
@ -718,7 +718,7 @@ msgid "REVIEW"
msgstr "REVIEW"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr "Reboot"
@ -786,7 +786,7 @@ msgstr "Remote snapshots"
msgid "Request timed out"
msgstr "Request timed out"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr "Reset"
@ -805,6 +805,11 @@ msgstr "Review Training Guide"
msgid "Review the rules, features, and limitations of openpilot"
msgstr "Review the rules, features, and limitations of openpilot"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/developer.py:53
#, python-format
msgid "SSH Keys"
@ -815,11 +820,16 @@ msgstr "SSH Keys"
msgid "Scanning Wi-Fi networks..."
msgstr "Scanning Wi-Fi networks..."
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr "Select"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:91
#, python-format
msgid "Select a language"
@ -874,6 +884,11 @@ msgstr "TAKE CONTROL IMMEDIATELY"
msgid "TEMP"
msgstr "TEMP"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/network.py:124
#, python-format
msgid "Tethering Password"
@ -883,7 +898,7 @@ msgstr "Tethering Password"
msgid "Toggles"
msgstr "Toggles"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr "UNINSTALL"
@ -893,8 +908,8 @@ msgstr "UNINSTALL"
msgid "UPDATE"
msgstr "UPDATE"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr "Uninstall"
@ -903,7 +918,7 @@ msgstr "Uninstall"
msgid "Unknown"
msgstr "Unknown"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr "Updates are only downloaded while the car is off."
@ -1011,12 +1026,12 @@ msgstr "comma prime"
msgid "default"
msgstr "default"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr "down"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr "failed to check for update"
@ -1037,7 +1052,7 @@ msgstr "km/h"
msgid "leave blank for automatic configuration"
msgstr "leave blank for automatic configuration"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr "left"
@ -1052,12 +1067,12 @@ msgstr "metered"
msgid "mph"
msgstr "mph"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr "never"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr "now"
@ -1099,7 +1114,7 @@ msgstr ""
"some turns. The Experimental mode logo will also be shown in the top right "
"corner."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
@ -1135,7 +1150,7 @@ msgstr ""
"openpilot requires the device to be mounted within 4° left or right and "
"within 5° up or 9° down."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr "right"
@ -1145,22 +1160,22 @@ msgstr "right"
msgid "unmetered"
msgstr "unmetered"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr "up"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr "up to date, last checked never"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr "up to date, last checked {}"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr "update available"
@ -1172,21 +1187,21 @@ msgid_plural "{} ALERTS"
msgstr[0] "{} ALERT"
msgstr[1] "{} ALERTS"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] "{} day ago"
msgstr[1] "{} days ago"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] "{} hour ago"
msgstr[1] "{} hours ago"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 18:57-0700\n"
"PO-Revision-Date: 2025-10-20 16:35-0700\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -17,17 +17,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr " La calibración de respuesta de par de dirección está completa."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr " La calibración de respuesta de par de dirección está {}% completa."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr " Tu dispositivo está orientado {:.1f}° {} y {:.1f}° {}."
@ -75,12 +75,12 @@ msgstr ""
"cambiar al control longitudinal de openpilot. Se recomienda activar el modo "
"Experimental al habilitar el control longitudinal de openpilot (alpha)."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr ""
@ -143,22 +143,22 @@ msgstr ""
"Se puede probar una versión alpha del control longitudinal de openpilot, "
"junto con el modo Experimental, en ramas que no son de lanzamiento."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr "¿Seguro que quieres apagar?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr "¿Seguro que quieres reiniciar?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr "¿Seguro que quieres restablecer la calibración?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr "¿Seguro que quieres desinstalar?"
@ -185,10 +185,10 @@ msgstr ""
msgid "CHANGE"
msgstr "CAMBIAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr "COMPROBAR"
@ -213,7 +213,7 @@ msgid "CONNECTING..."
msgstr "CONECTAR"
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
@ -247,12 +247,12 @@ msgstr ""
msgid "Close"
msgstr "Cerrar"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr "Versión actual"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr "DESCARGAR"
@ -280,17 +280,17 @@ msgstr "Dispositivo"
msgid "Disengage on Accelerator Pedal"
msgstr "Desactivar con el pedal del acelerador"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr "Desactivar para apagar"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr "Desactivar para reiniciar"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr "Desactivar para restablecer la calibración"
@ -304,7 +304,7 @@ msgstr "Mostrar la velocidad en km/h en lugar de mph."
msgid "Dongle ID"
msgstr "ID del dongle"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr "Descargar"
@ -415,8 +415,8 @@ msgstr ""
msgid "Enter your GitHub username"
msgstr "Introduce tu nombre de usuario de GitHub"
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr ""
@ -531,8 +531,8 @@ msgstr "Red"
msgid "INACTIVE: connect to an unmetered network"
msgstr "INACTIVO: conéctate a una red sin límites"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr "INSTALAR"
@ -542,7 +542,7 @@ msgstr "INSTALAR"
msgid "IP Address"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr "Instalar actualización"
@ -612,7 +612,7 @@ msgstr "No hay notas de versión disponibles."
msgid "OFFLINE"
msgstr "SIN CONEXIÓN"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -680,7 +680,7 @@ msgid "Please connect to Wi-Fi to complete initial pairing"
msgstr "Conéctate a Wi‑Fi para completar el emparejamiento inicial"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr "Apagar"
@ -724,7 +724,7 @@ msgid "REVIEW"
msgstr "REVISAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr "Reiniciar"
@ -792,7 +792,7 @@ msgstr "Capturas remotas"
msgid "Request timed out"
msgstr "Se agotó el tiempo de espera de la solicitud"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr "Restablecer"
@ -811,6 +811,11 @@ msgstr "Revisar guía de entrenamiento"
msgid "Review the rules, features, and limitations of openpilot"
msgstr "Revisa las reglas, funciones y limitaciones de openpilot"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/developer.py:53
#, python-format
msgid "SSH Keys"
@ -821,11 +826,16 @@ msgstr ""
msgid "Scanning Wi-Fi networks..."
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:91
#, python-format
msgid "Select a language"
@ -881,6 +891,11 @@ msgstr "TOME EL CONTROL INMEDIATAMENTE"
msgid "TEMP"
msgstr "TEMP"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/network.py:124
#, python-format
msgid "Tethering Password"
@ -890,7 +905,7 @@ msgstr ""
msgid "Toggles"
msgstr "Interruptores"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr "DESINSTALAR"
@ -900,8 +915,8 @@ msgstr "DESINSTALAR"
msgid "UPDATE"
msgstr "ACTUALIZAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr "Desinstalar"
@ -910,7 +925,7 @@ msgstr "Desinstalar"
msgid "Unknown"
msgstr "Desconocido"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr "Las actualizaciones solo se descargan cuando el coche está apagado."
@ -1022,12 +1037,12 @@ msgstr "comma prime"
msgid "default"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr "abajo"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr "Error al buscar actualizaciones"
@ -1048,7 +1063,7 @@ msgstr "km/h"
msgid "leave blank for automatic configuration"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr "izquierda"
@ -1063,12 +1078,12 @@ msgstr ""
msgid "mph"
msgstr "mph"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr "nunca"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr "ahora"
@ -1112,7 +1127,7 @@ msgstr ""
"mostrar mejor algunos giros. El logotipo del modo Experimental también se "
"mostrará en la esquina superior derecha."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
@ -1149,7 +1164,7 @@ msgstr ""
"openpilot requiere que el dispositivo esté montado dentro de 4° a izquierda "
"o derecha y dentro de 5° hacia arriba o 9° hacia abajo."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr "derecha"
@ -1159,22 +1174,22 @@ msgstr "derecha"
msgid "unmetered"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr "arriba"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr "actualizado, última comprobación: nunca"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr "actualizado, última comprobación: {}"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr "actualización disponible"
@ -1186,21 +1201,21 @@ msgid_plural "{} ALERTS"
msgstr[0] "{} ALERTA"
msgstr[1] "{} ALERTAS"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] "hace {} día"
msgstr[1] "hace {} días"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] "hace {} hora"
msgstr[1] "hace {} horas"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 18:57-0700\n"
"PO-Revision-Date: 2025-10-20 18:19-0700\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -17,17 +17,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr ""
@ -76,12 +76,12 @@ msgstr ""
"est recommandé d'activer le mode expérimental lors de l'activation du "
"contrôle longitudinal openpilot alpha."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr ""
@ -144,22 +144,22 @@ msgstr ""
"Une version alpha du contrôle longitudinal openpilot peut être testée, avec "
"le mode expérimental, sur des branches non publiées."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr "Êtes-vous sûr de vouloir éteindre ?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr "Êtes-vous sûr de vouloir redémarrer ?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr "Êtes-vous sûr de vouloir réinitialiser la calibration ?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr "Êtes-vous sûr de vouloir désinstaller ?"
@ -187,10 +187,10 @@ msgstr ""
msgid "CHANGE"
msgstr "CHANGER"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr "VÉRIFIER"
@ -215,7 +215,7 @@ msgid "CONNECTING..."
msgstr "CONNECTER"
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
@ -249,12 +249,12 @@ msgstr "Cliquez sur \"add new device\" et scannez le code QR à droite"
msgid "Close"
msgstr "Fermer"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr "Version actuelle"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr "TÉLÉCHARGER"
@ -282,17 +282,17 @@ msgstr "Appareil"
msgid "Disengage on Accelerator Pedal"
msgstr "Désengager à l'appui sur l'accélérateur"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr "Désengager pour éteindre"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr "Désengager pour redémarrer"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr "Désengager pour réinitialiser la calibration"
@ -306,7 +306,7 @@ msgstr "Afficher la vitesse en km/h au lieu de mph."
msgid "Dongle ID"
msgstr "ID du dongle"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr "Télécharger"
@ -417,8 +417,8 @@ msgstr ""
msgid "Enter your GitHub username"
msgstr "Entrez votre nom d'utilisateur GitHub"
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr ""
@ -534,8 +534,8 @@ msgstr "Réseau"
msgid "INACTIVE: connect to an unmetered network"
msgstr "INACTIF : connectez-vous à un réseau non limité"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr "INSTALLER"
@ -545,7 +545,7 @@ msgstr "INSTALLER"
msgid "IP Address"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr "Installer la mise à jour"
@ -615,7 +615,7 @@ msgstr "Aucune note de version disponible."
msgid "OFFLINE"
msgstr "HORS LIGNE"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -683,7 +683,7 @@ msgid "Please connect to Wi-Fi to complete initial pairing"
msgstr "Veuillez vous connecter au Wi‑Fi pour terminer l'association initiale"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr "Éteindre"
@ -727,7 +727,7 @@ msgid "REVIEW"
msgstr "CONSULTER"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr "Redémarrer"
@ -795,7 +795,7 @@ msgstr "Captures à distance"
msgid "Request timed out"
msgstr "Délai de la requête dépassé"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr "Réinitialiser"
@ -814,6 +814,11 @@ msgstr "Consulter le guide d'entraînement"
msgid "Review the rules, features, and limitations of openpilot"
msgstr "Consultez les règles, fonctionnalités et limitations d'openpilot"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/developer.py:53
#, python-format
msgid "SSH Keys"
@ -824,11 +829,16 @@ msgstr ""
msgid "Scanning Wi-Fi networks..."
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:91
#, python-format
msgid "Select a language"
@ -884,6 +894,11 @@ msgstr "REPRENEZ IMMÉDIATEMENT LE CONTRÔLE"
msgid "TEMP"
msgstr "TEMPÉRATURE"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/network.py:124
#, python-format
msgid "Tethering Password"
@ -893,7 +908,7 @@ msgstr ""
msgid "Toggles"
msgstr "Options"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr "DÉSINSTALLER"
@ -903,8 +918,8 @@ msgstr "DÉSINSTALLER"
msgid "UPDATE"
msgstr "METTRE À JOUR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr "Désinstaller"
@ -913,7 +928,7 @@ msgstr "Désinstaller"
msgid "Unknown"
msgstr "Inconnu"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr ""
@ -1025,12 +1040,12 @@ msgstr "comma prime"
msgid "default"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr "échec de la vérification de mise à jour"
@ -1051,7 +1066,7 @@ msgstr "km/h"
msgid "leave blank for automatic configuration"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr ""
@ -1066,12 +1081,12 @@ msgstr ""
msgid "mph"
msgstr "mph"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr "jamais"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr "maintenant"
@ -1114,7 +1129,7 @@ msgstr ""
"pour mieux montrer certains virages. Le logo du mode expérimental sera "
"également affiché en haut à droite."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
@ -1154,7 +1169,7 @@ msgstr ""
"openpilot exige que l'appareil soit monté à moins de 4° à gauche ou à droite "
"et à moins de 5° vers le haut ou 9° vers le bas."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr ""
@ -1164,22 +1179,22 @@ msgstr ""
msgid "unmetered"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr "à jour, dernière vérification jamais"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr "à jour, dernière vérification {}"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr "mise à jour disponible"
@ -1191,21 +1206,21 @@ msgid_plural "{} ALERTS"
msgstr[0] "{} ALERTE"
msgstr[1] "{} ALERTES"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] "il y a {} jour"
msgstr[1] "il y a {} jours"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] "il y a {} heure"
msgstr[1] "il y a {} heures"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 18:57-0700\n"
"PO-Revision-Date: 2025-10-21 00:00-0700\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -17,17 +17,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr " A calibração da resposta de torque da direção foi concluída."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr " A calibração da resposta de torque da direção está {}% concluída."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr " Seu dispositivo está apontado {:.1f}° {} e {:.1f}° {}."
@ -75,12 +75,12 @@ msgstr ""
"longitudinal do openpilot. Recomenda-se ativar o Modo Experimental ao ativar "
"o controle longitudinal do openpilot em alpha."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr ""
@ -143,22 +143,22 @@ msgstr ""
"Uma versão alpha do controle longitudinal do openpilot pode ser testada, "
"junto com o Modo Experimental, em ramificações fora de release."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr "Tem certeza de que deseja desligar?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr "Tem certeza de que deseja reiniciar?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr "Tem certeza de que deseja redefinir a calibração?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr "Tem certeza de que deseja desinstalar?"
@ -184,10 +184,10 @@ msgstr "Adicione connect.comma.ai à tela inicial para usá-lo como um app"
msgid "CHANGE"
msgstr "ALTERAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr "VERIFICAR"
@ -212,7 +212,7 @@ msgid "CONNECTING..."
msgstr "CONECTAR"
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
@ -245,12 +245,12 @@ msgstr "Toque em \"adicionar novo dispositivo\" e escaneie o QR code à direita"
msgid "Close"
msgstr "Fechar"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr "Versão Atual"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr "BAIXAR"
@ -278,17 +278,17 @@ msgstr "Dispositivo"
msgid "Disengage on Accelerator Pedal"
msgstr "Desativar ao pressionar o acelerador"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr "Desativar para Desligar"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr "Desativar para Reiniciar"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr "Desativar para Redefinir Calibração"
@ -302,7 +302,7 @@ msgstr "Exibir velocidade em km/h em vez de mph."
msgid "Dongle ID"
msgstr "ID do Dongle"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr "Baixar"
@ -412,8 +412,8 @@ msgstr ""
msgid "Enter your GitHub username"
msgstr "Digite seu nome de usuário do GitHub"
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr ""
@ -528,8 +528,8 @@ msgstr "Rede"
msgid "INACTIVE: connect to an unmetered network"
msgstr "INATIVO: conecte a uma rede sem franquia"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr "INSTALAR"
@ -539,7 +539,7 @@ msgstr "INSTALAR"
msgid "IP Address"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr "Instalar Atualização"
@ -609,7 +609,7 @@ msgstr "Sem notas de versão disponíveis."
msgid "OFFLINE"
msgstr "OFFLINE"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -677,7 +677,7 @@ msgid "Please connect to Wi-Fi to complete initial pairing"
msgstr "Conecte-se ao Wi‑Fi para concluir o emparelhamento inicial"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr "Desligar"
@ -721,7 +721,7 @@ msgid "REVIEW"
msgstr "REVISAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr "Reiniciar"
@ -788,7 +788,7 @@ msgstr "Capturas remotas"
msgid "Request timed out"
msgstr "Tempo da solicitação esgotado"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr "Redefinir"
@ -807,6 +807,11 @@ msgstr "Revisar Guia de Treinamento"
msgid "Review the rules, features, and limitations of openpilot"
msgstr "Revise as regras, recursos e limitações do openpilot"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/developer.py:53
#, python-format
msgid "SSH Keys"
@ -817,11 +822,16 @@ msgstr ""
msgid "Scanning Wi-Fi networks..."
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:91
#, python-format
msgid "Select a language"
@ -877,6 +887,11 @@ msgstr "ASSUMA O CONTROLE IMEDIATAMENTE"
msgid "TEMP"
msgstr "TEMP"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/network.py:124
#, python-format
msgid "Tethering Password"
@ -886,7 +901,7 @@ msgstr ""
msgid "Toggles"
msgstr "Alternâncias"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr "DESINSTALAR"
@ -896,8 +911,8 @@ msgstr "DESINSTALAR"
msgid "UPDATE"
msgstr "ATUALIZAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr "Desinstalar"
@ -906,7 +921,7 @@ msgstr "Desinstalar"
msgid "Unknown"
msgstr "Desconhecido"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr "Atualizações são baixadas apenas com o carro desligado."
@ -1017,12 +1032,12 @@ msgstr "comma prime"
msgid "default"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr "para baixo"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr "falha ao verificar atualização"
@ -1043,7 +1058,7 @@ msgstr "km/h"
msgid "leave blank for automatic configuration"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr "à esquerda"
@ -1058,12 +1073,12 @@ msgstr ""
msgid "mph"
msgstr "mph"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr "nunca"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr "agora"
@ -1106,7 +1121,7 @@ msgstr ""
"curvas. O logotipo do Modo Experimental também será exibido no canto "
"superior direito."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
@ -1142,7 +1157,7 @@ msgstr ""
"o openpilot requer que o dispositivo seja montado dentro de 4° para a "
"esquerda ou direita e dentro de 5° para cima ou 9° para baixo."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr "à direita"
@ -1152,22 +1167,22 @@ msgstr "à direita"
msgid "unmetered"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr "para cima"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr "atualizado, última verificação: nunca"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr "atualizado, última verificação: {}"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr "atualização disponível"
@ -1179,21 +1194,21 @@ msgid_plural "{} ALERTS"
msgstr[0] "{} ALERTA"
msgstr[1] "{} ALERTAS"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] "{} dia atrás"
msgstr[1] "{} dias atrás"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] "{} hora atrás"
msgstr[1] "{} horas atrás"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"

File diff suppressed because it is too large Load Diff

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-22 15:30-0700\n"
"POT-Creation-Date: 2025-10-22 18:57-0700\n"
"PO-Revision-Date: 2025-10-20 18:19-0700\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -17,17 +17,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:159
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:160
#, python-format
msgid " Steering torque response calibration is complete."
msgstr " Direksiyon tork tepkisi kalibrasyonu tamamlandı."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:157
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:158
#, python-format
msgid " Steering torque response calibration is {}% complete."
msgstr " Direksiyon tork tepkisi kalibrasyonu {}% tamamlandı."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid " Your device is pointed {:.1f}° {} and {:.1f}° {}."
msgstr " Cihazınız {:.1f}° {} ve {:.1f}° {} yönünde konumlandırılmış."
@ -75,12 +75,12 @@ msgstr ""
"etkinleştirin. openpilot boylamsal kontrol alfayı etkinleştirirken Deneysel "
"modu etkinleştirmeniz önerilir."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:147
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:148
#, python-format
msgid "<br><br>Steering lag calibration is complete."
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:145
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:146
#, python-format
msgid "<br><br>Steering lag calibration is {}% complete."
msgstr ""
@ -143,22 +143,22 @@ msgstr ""
"openpilot boylamsal kontrolünün alfa sürümü, Deneysel mod ile birlikte, "
"yayın dışı dallarda test edilebilir."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Are you sure you want to power off?"
msgstr "Kapatmak istediğinizden emin misiniz?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Are you sure you want to reboot?"
msgstr "Yeniden başlatmak istediğinizden emin misiniz?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Are you sure you want to reset calibration?"
msgstr "Kalibrasyonu sıfırlamak istediğinizden emin misiniz?"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Are you sure you want to uninstall?"
msgstr "Kaldırmak istediğinizden emin misiniz?"
@ -185,10 +185,10 @@ msgstr ""
msgid "CHANGE"
msgstr "DEĞİŞTİR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:142
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:107
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:147
#, python-format
msgid "CHECK"
msgstr "KONTROL ET"
@ -213,7 +213,7 @@ msgid "CONNECTING..."
msgstr "BAĞLAN"
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:23
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:34
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/keyboard.py:81
#: /home/batman/openpilot/system/ui/widgets/network.py:318
#, python-format
@ -246,12 +246,12 @@ msgstr "\"yeni cihaz ekle\"ye tıklayın ve sağdaki QR kodunu tarayın"
msgid "Close"
msgstr "Kapat"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#, python-format
msgid "Current Version"
msgstr "Geçerli Sürüm"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:110
#, python-format
msgid "DOWNLOAD"
msgstr "İNDİR"
@ -279,17 +279,17 @@ msgstr "Cihaz"
msgid "Disengage on Accelerator Pedal"
msgstr "Gaz Pedalında Devreden Çık"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:183
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:184
#, python-format
msgid "Disengage to Power Off"
msgstr "Kapatmak için Devreden Çıkın"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:171
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:172
#, python-format
msgid "Disengage to Reboot"
msgstr "Yeniden Başlatmak için Devreden Çıkın"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:102
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:103
#, python-format
msgid "Disengage to Reset Calibration"
msgstr "Kalibrasyonu Sıfırlamak için Devreden Çıkın"
@ -303,7 +303,7 @@ msgstr "Hızı mph yerine km/h olarak göster."
msgid "Dongle ID"
msgstr "Dongle ID"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:49
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:50
#, python-format
msgid "Download"
msgstr "İndir"
@ -411,8 +411,8 @@ msgstr ""
msgid "Enter your GitHub username"
msgstr "GitHub kullanıcı adınızı girin"
#: /home/batman/openpilot/system/ui/widgets/list_view.py:115
#: /home/batman/openpilot/system/ui/widgets/list_view.py:153
#: /home/batman/openpilot/system/ui/widgets/list_view.py:123
#: /home/batman/openpilot/system/ui/widgets/list_view.py:160
#, python-format
msgid "Error"
msgstr ""
@ -528,8 +528,8 @@ msgstr "Ağ"
msgid "INACTIVE: connect to an unmetered network"
msgstr "PASİF: sınırsız bir ağa bağlanın"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:131
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:136
#, python-format
msgid "INSTALL"
msgstr "YÜKLE"
@ -539,7 +539,7 @@ msgstr "YÜKLE"
msgid "IP Address"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:52
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:53
#, python-format
msgid "Install Update"
msgstr "Güncellemeyi Yükle"
@ -609,7 +609,7 @@ msgstr "Sürüm notu mevcut değil."
msgid "OFFLINE"
msgstr "ÇEVRİMDIŞI"
#: /home/batman/openpilot/system/ui/widgets/html_render.py:247
#: /home/batman/openpilot/system/ui/widgets/html_render.py:263
#: /home/batman/openpilot/system/ui/widgets/confirm_dialog.py:93
#: /home/batman/openpilot/selfdrive/ui/layouts/sidebar.py:127
#, python-format
@ -677,7 +677,7 @@ msgid "Please connect to Wi-Fi to complete initial pairing"
msgstr "İlk eşleştirmeyi tamamlamak için lütfen Wi‑Fi'a bağlanın"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:186
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:187
#, python-format
msgid "Power Off"
msgstr "Kapat"
@ -720,7 +720,7 @@ msgid "REVIEW"
msgstr "GÖZDEN GEÇİR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:55
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:174
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:175
#, python-format
msgid "Reboot"
msgstr "Yeniden Başlat"
@ -787,7 +787,7 @@ msgstr "Uzaktan anlık görüntüler"
msgid "Request timed out"
msgstr "İstek zaman aşımına uğradı"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:118
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:119
#, python-format
msgid "Reset"
msgstr "Sıfırla"
@ -807,6 +807,11 @@ msgid "Review the rules, features, and limitations of openpilot"
msgstr ""
"openpilot'un kurallarını, özelliklerini ve sınırlamalarını gözden geçirin"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "SELECT"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/developer.py:53
#, python-format
msgid "SSH Keys"
@ -817,11 +822,16 @@ msgstr ""
msgid "Scanning Wi-Fi networks..."
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:35
#: /home/batman/openpilot/system/ui/widgets/option_dialog.py:36
#, python-format
msgid "Select"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:183
#, python-format
msgid "Select a branch"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:91
#, python-format
msgid "Select a language"
@ -876,6 +886,11 @@ msgstr "HEMEN KONTROLÜ DEVRALIN"
msgid "TEMP"
msgstr "TEMP"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:61
#, python-format
msgid "Target Branch"
msgstr ""
#: /home/batman/openpilot/system/ui/widgets/network.py:124
#, python-format
msgid "Tethering Password"
@ -885,7 +900,7 @@ msgstr ""
msgid "Toggles"
msgstr "Seçenekler"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#, python-format
msgid "UNINSTALL"
msgstr "KALDIR"
@ -895,8 +910,8 @@ msgstr "KALDIR"
msgid "UPDATE"
msgstr "GÜNCELLE"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:70
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:158
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:72
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:163
#, python-format
msgid "Uninstall"
msgstr "Kaldır"
@ -905,7 +920,7 @@ msgstr "Kaldır"
msgid "Unknown"
msgstr "Bilinmiyor"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:47
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:48
#, python-format
msgid "Updates are only downloaded while the car is off."
msgstr "Güncellemeler yalnızca araç kapalıyken indirilir."
@ -1015,12 +1030,12 @@ msgstr "comma prime"
msgid "default"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "down"
msgstr "aşağı"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:105
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:106
#, python-format
msgid "failed to check for update"
msgstr "güncelleme kontrolü başarısız"
@ -1041,7 +1056,7 @@ msgstr "km/h"
msgid "leave blank for automatic configuration"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "left"
msgstr "sol"
@ -1056,12 +1071,12 @@ msgstr ""
msgid "mph"
msgstr "mph"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:19
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:20
#, python-format
msgid "never"
msgstr "asla"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:30
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:31
#, python-format
msgid "now"
msgstr "şimdi"
@ -1103,7 +1118,7 @@ msgstr ""
"göstermek için yola bakan geniş açılı kameraya geçer. Deneysel mod logosu "
"sağ üst köşede de gösterilecektir."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:164
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:165
#, python-format
msgid ""
"openpilot is continuously calibrating, resetting is rarely required. "
@ -1138,7 +1153,7 @@ msgstr ""
"openpilot, cihazın sağa/sola 4° ve yukarı 5° veya aşağı 9° içinde monte "
"edilmesini gerektirir."
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:134
#, python-format
msgid "right"
msgstr "sağ"
@ -1148,22 +1163,22 @@ msgstr "sağ"
msgid "unmetered"
msgstr ""
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:132
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/device.py:133
#, python-format
msgid "up"
msgstr "yukarı"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:116
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:117
#, python-format
msgid "up to date, last checked never"
msgstr "güncel, son kontrol asla"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:114
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:115
#, python-format
msgid "up to date, last checked {}"
msgstr "güncel, son kontrol {}"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:108
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:109
#, python-format
msgid "update available"
msgstr "güncelleme mevcut"
@ -1175,21 +1190,21 @@ msgid_plural "{} ALERTS"
msgstr[0] "{} UYARI"
msgstr[1] "{} UYARILAR"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:39
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:40
#, python-format
msgid "{} day ago"
msgid_plural "{} days ago"
msgstr[0] "{} gün önce"
msgstr[1] "{} gün önce"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:36
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:37
#, python-format
msgid "{} hour ago"
msgid_plural "{} hours ago"
msgstr[0] "{} saat önce"
msgstr[1] "{} saat önce"
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:33
#: /home/batman/openpilot/selfdrive/ui/layouts/settings/software.py:34
#, python-format
msgid "{} minute ago"
msgid_plural "{} minutes ago"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -51,6 +51,14 @@ class FontWeight(StrEnum):
BOLD = "Inter-Bold.ttf"
EXTRA_BOLD = "Inter-ExtraBold.ttf"
BLACK = "Inter-Black.ttf"
UNIFONT = "unifont.otf"
def font_fallback(font: rl.Font) -> rl.Font:
"""Fall back to unifont for languages that require it."""
if multilang.requires_unifont():
return gui_app.font(FontWeight.UNIFONT)
return font
@dataclass
@ -335,7 +343,7 @@ class GuiApplication:
except KeyboardInterrupt:
pass
def font(self, font_weight: FontWeight = FontWeight.NORMAL):
def font(self, font_weight: FontWeight = FontWeight.NORMAL) -> rl.Font:
return self._fonts[font_weight]
@property
@ -356,14 +364,16 @@ class GuiApplication:
all_chars |= set("–‑✓×°§•")
# Load only the characters used in translations
for language in multilang.codes:
for language, code in multilang.languages.items():
all_chars |= set(language)
try:
with open(os.path.join(TRANSLATIONS_DIR, f"app_{language}.po")) as f:
with open(os.path.join(TRANSLATIONS_DIR, f"app_{code}.po")) as f:
all_chars |= set(f.read())
except FileNotFoundError:
cloudlog.warning(f"Translation file for language '{language}' not found when loading fonts.")
cloudlog.warning(f"Translation file for language '{code}' not found when loading fonts.")
all_chars = "".join(all_chars)
cloudlog.debug(f"Loading fonts with {len(all_chars)} glyphs.")
codepoint_count = rl.ffi.new("int *", 1)
codepoints = rl.load_codepoints(all_chars, codepoint_count)
@ -390,6 +400,7 @@ class GuiApplication:
rl._orig_draw_text_ex = rl.draw_text_ex
def _draw_text_ex_scaled(font, text, position, font_size, spacing, tint):
font = font_fallback(font)
return rl._orig_draw_text_ex(font, text, position, font_size * FONT_SCALE, spacing, tint)
rl.draw_text_ex = _draw_text_ex_scaled

@ -3,25 +3,27 @@ import json
import gettext
from openpilot.common.params import Params
from openpilot.common.basedir import BASEDIR
from openpilot.common.swaglog import cloudlog
SYSTEM_UI_DIR = os.path.join(BASEDIR, "system", "ui")
UI_DIR = os.path.join(BASEDIR, "selfdrive", "ui")
TRANSLATIONS_DIR = os.path.join(UI_DIR, "translations")
LANGUAGES_FILE = os.path.join(TRANSLATIONS_DIR, "languages.json")
SUPPORTED_LANGUAGES = [
"en",
"de",
"fr",
"pt-BR",
"es",
"tr",
UNIFONT_LANGUAGES = [
"ar",
"th",
"zh-CHT",
"zh-CHS",
"ko",
"ja",
]
class Multilang:
def __init__(self):
self._params = Params()
self._language: str = "en"
self.languages = {}
self.codes = {}
self._translation: gettext.NullTranslations | gettext.GNUTranslations = gettext.NullTranslations()
@ -29,28 +31,28 @@ class Multilang:
@property
def language(self) -> str:
lang = str(self._params.get("LanguageSetting")).strip("main_")
if lang not in SUPPORTED_LANGUAGES:
lang = "en"
return lang
return self._language
def requires_unifont(self) -> bool:
"""Certain languages require unifont to render their glyphs."""
return self._language in UNIFONT_LANGUAGES
def setup(self):
language = self.language
try:
with open(os.path.join(TRANSLATIONS_DIR, f'app_{language}.mo'), 'rb') as fh:
with open(os.path.join(TRANSLATIONS_DIR, f'app_{self._language}.mo'), 'rb') as fh:
translation = gettext.GNUTranslations(fh)
translation.install()
self._translation = translation
print(f"Loaded translations for language: {language}")
cloudlog.warning(f"Loaded translations for language: {self._language}")
except FileNotFoundError:
print(f"No translation file found for language: {language}, using default.")
cloudlog.error(f"No translation file found for language: {self._language}, using default.")
gettext.install('app')
self._translation = gettext.NullTranslations()
return None
def change_language(self, language_code: str) -> None:
# Reinstall gettext with the selected language
self._params.put("LanguageSetting", language_code)
self._language = language_code
self.setup()
def tr(self, text: str) -> str:
@ -61,8 +63,12 @@ class Multilang:
def _load_languages(self):
with open(LANGUAGES_FILE, encoding='utf-8') as f:
self.languages = {k: v for k, v in json.load(f).items() if v in SUPPORTED_LANGUAGES}
self.codes = {v: k for k, v in self.languages.items() if v in SUPPORTED_LANGUAGES}
self.languages = json.load(f)
self.codes = {v: k for k, v in self.languages.items()}
lang = str(self._params.get("LanguageSetting")).removeprefix("main_")
if lang in self.codes:
self._language = lang
multilang = Multilang()

@ -1,5 +1,5 @@
import pyray as rl
from openpilot.system.ui.lib.application import FONT_SCALE
from openpilot.system.ui.lib.application import FONT_SCALE, font_fallback
from openpilot.system.ui.lib.emoji import find_emoji
_cache: dict[int, rl.Vector2] = {}
@ -7,6 +7,7 @@ _cache: dict[int, rl.Vector2] = {}
def measure_text_cached(font: rl.Font, text: str, font_size: int, spacing: int = 0) -> rl.Vector2:
"""Caches text measurements to avoid redundant calculations."""
font = font_fallback(font)
key = hash((font.texture.id, text, font_size, spacing))
if key in _cache:
return _cache[key]

@ -1,5 +1,6 @@
import pyray as rl
from openpilot.system.ui.lib.text_measure import measure_text_cached
from openpilot.system.ui.lib.application import font_fallback
def _break_long_word(font: rl.Font, word: str, font_size: int, max_width: int) -> list[str]:
@ -40,6 +41,7 @@ _cache: dict[int, list[str]] = {}
def wrap_text(font: rl.Font, text: str, font_size: int, max_width: int) -> list[str]:
font = font_fallback(font)
key = hash((font.texture.id, text, font_size, max_width))
if key in _cache:
return _cache[key]

@ -134,9 +134,6 @@ class Label(Widget):
self._font_size = size
self._update_text(self._text)
def _update_layout_rects(self):
self._update_text(self._text)
def _update_text(self, text):
self._emojis = []
self._text_size = []
@ -170,6 +167,10 @@ class Label(Widget):
self._text_size.append(measure_text_cached(self._font, t, self._font_size))
def _render(self, _):
# Text can be a callable
# TODO: cache until text changed
self._update_text(self._text)
text_size = self._text_size[0] if self._text_size else rl.Vector2(0.0, 0.0)
if self._text_alignment_vertical == rl.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE:
text_pos = rl.Vector2(self._rect.x, (self._rect.y + (self._rect.height - text_size.y) // 2))

@ -17,7 +17,7 @@ LIST_ITEM_SPACING = 25
class MultiOptionDialog(Widget):
def __init__(self, title, options, current=""):
def __init__(self, title, options, current="", option_font_weight=FontWeight.MEDIUM):
super().__init__()
self.title = title
self.options = options
@ -27,6 +27,7 @@ class MultiOptionDialog(Widget):
# Create scroller with option buttons
self.option_buttons = [Button(option, click_callback=lambda opt=option: self._on_option_clicked(opt),
font_weight=option_font_weight,
text_alignment=rl.GuiTextAlignment.TEXT_ALIGN_LEFT, button_style=ButtonStyle.NORMAL,
text_padding=50, elide_right=True) for option in options]
self.scroller = Scroller(self.option_buttons, spacing=LIST_ITEM_SPACING)

Loading…
Cancel
Save