openpilot icon indicating copy to clipboard operation
openpilot copied to clipboard

Auto translate with OpenAI

Open meirdev opened this issue 1 year ago • 4 comments

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&apos;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&apos;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>

meirdev avatar Jan 03 '24 07:01 meirdev

About half of these translations are flat-out incorrect.

nworb-cire avatar Jan 03 '24 16:01 nworb-cire

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).

meirdev avatar Jan 03 '24 16:01 meirdev

We should be able to improve the prompt quite a bit. GPT4 definitely knows about openpilot.

image

adeebshihadeh avatar Jan 03 '24 18:01 adeebshihadeh

I fixed the code and slightly changed the prompt.

meirdev avatar Jan 04 '24 12:01 meirdev

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)

meirdev avatar Jan 05 '24 07:01 meirdev

For anyone getting 404 errors: you need to add a credit card and spend $1 so the GPT 4 model shows up.

sshane avatar Jan 06 '24 07:01 sshane