openpilot
openpilot copied to clipboard
Auto translate with OpenAI
Hi,
I wrote a script that can translate a whole file or parts of it using the OpenAI API. (#30883)
Example of usage (use source.xml as template, translate to French, write the new file to out.xml):
export OPENAI_API_KEY=YOUR-KEY
./auto_translate.py -s source.xml -l fr -o out.xml
It is possible to translate only places marked as unfinished if you add -u.
Example of diff between regular translate and the script:
--- source.xml 2024-01-03 09:42:02
+++ out.xml 2024-01-03 09:43:55
@@ -6,17 +6,17 @@
<message>
<source>Dongle ID</source>
- <translation>Dongle ID</translation>
+ <translation>ID de dongle</translation>
</message>
<message>
<source>N/A</source>
- <translation>N/A</translation>
+ <translation>S/O</translation>
</message>
<message>
<source>Serial</source>
- <translation>N° de série</translation>
+ <translation>Série</translation>
</message>
<message>
<source>Driver Camera</source>
- <translation>Caméra conducteur</translation>
+ <translation>Caméra de Conducteur</translation>
</message>
<message>
\ No newline at end of file
@@ -26,9 +26,9 @@
<message>
<source>Preview the driver facing camera to ensure that driver monitoring has good visibility. (vehicle must be off)</source>
- <translation>Aperçu de la caméra orientée vers le conducteur pour assurer une bonne visibilité de la surveillance du conducteur. (véhicule doit être éteint)</translation>
+ <translation>Prévisualisez la caméra orientée vers le conducteur pour vous assurer que le suivi du conducteur a une bonne visibilité. (le véhicule doit être éteint)</translation>
</message>
<message>
<source>Reset Calibration</source>
- <translation>Réinitialiser la calibration</translation>
+ <translation>Réinitialiser l'étalonnage</translation>
</message>
<message>
\ No newline at end of file
@@ -46,21 +46,21 @@
<message>
<source>Review Training Guide</source>
- <translation>Revoir le guide de formation</translation>
+ <translation>Guide de Formation d'Examen</translation>
</message>
<message>
<source>REVIEW</source>
- <translation>REVOIR</translation>
+ <translation>CRITIQUE</translation>
</message>
<message>
<source>Review the rules, features, and limitations of openpilot</source>
- <translation>Revoir les règles, fonctionnalités et limitations d'openpilot</translation>
+ <translation>Examinez les règles, les fonctionnalités et les limites de openpilot</translation>
</message>
<message>
<source>Are you sure you want to review the training guide?</source>
- <translation>Êtes-vous sûr de vouloir revoir le guide de formation ?</translation>
+ <translation>Êtes-vous sûr de vouloir revoir le guide de formation?</translation>
</message>
<message>
<source>Review</source>
- <translation>Revoir</translation>
+ <translation>Critique</translation>
</message>
<message>
\ No newline at end of file
@@ -78,9 +78,9 @@
<message>
<source>CHANGE</source>
- <translation>CHANGER</translation>
+ <translation>CHANGEMENT</translation>
</message>
<message>
<source>Select a language</source>
- <translation>Choisir une langue</translation>
+ <translation>Sélectionnez une langue</translation>
</message>
<message>
\ No newline at end of file
@@ -94,17 +94,17 @@
<message>
<source>openpilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. openpilot is continuously calibrating, resetting is rarely required.</source>
- <translation>openpilot nécessite que l'appareil soit monté à 4° à gauche ou à droite et à 5° vers le haut ou 9° vers le bas. openpilot se calibre en continu, la réinitialisation est rarement nécessaire.</translation>
+ <translation>openpilot nécessite que l'appareil soit monté à moins de 4° à gauche ou à droite et à moins de 5° vers le haut ou 9° vers le bas. openpilot se calibre continuellement, une réinitialisation est rarement nécessaire.</translation>
</message>
<message>
<source> Your device is pointed %1° %2 and %3° %4.</source>
- <translation> Votre appareil est orienté %1° %2 et %3° %4.</translation>
+ <translation>Votre appareil est orienté à %1° %2 et %3° %4.</translation>
</message>
<message>
<source>down</source>
- <translation>bas</translation>
+ <translation>en bas</translation>
</message>
<message>
<source>up</source>
- <translation>haut</translation>
+ <translation>en haut</translation>
</message>
<message>
\ No newline at end of file
@@ -114,5 +114,5 @@
<message>
<source>right</source>
- <translation>droite</translation>
+ <translation>droit</translation>
</message>
<message>
\ No newline at end of file
@@ -122,5 +122,5 @@
<message>
<source>Disengage to Reboot</source>
- <translation>Désengager pour redémarrer</translation>
+ <translation>Désengagez pour redémarrer</translation>
</message>
<message>
About half of these translations are flat-out incorrect.
yeah... it's impossible to get a professional translation with AI, especially for short sentences that require context to understand them properly. (I can't check the French translation I only brought it because it was translated manually and I wanted to show the differences).
We should be able to improve the prompt quite a bit. GPT4 definitely knows about openpilot.
I fixed the code and slightly changed the prompt.
I changed it again, the languages are loaded from the languages.json file:
usage: Auto translate [-h] (-a | -f FILE [FILE ...]) [-t]
options:
-h, --help show this help message and exit
-a, --all-files Translate all files
-f FILE [FILE ...], --file FILE [FILE ...]
Translate the selected files. (Example: -f fr de)
-t, --all-translations
Translate all sections. (Default: only unfinished)
For anyone getting 404 errors: you need to add a credit card and spend $1 so the GPT 4 model shows up.