translate
This commit is contained in:
Binary file not shown.
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-05-14 15:51+0200\n"
|
"POT-Creation-Date: 2026-05-14 16:19+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -1392,23 +1392,6 @@ msgid ""
|
|||||||
"administrator."
|
"administrator."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: modules/capture_interface.py:3
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
"Interface abstraite de capture vidéo.\n"
|
|
||||||
"Définit le contrat que toutes les implémentations doivent respecter.\n"
|
|
||||||
"\n"
|
|
||||||
" 4 méthodes @abstractmethod à implémenter : open(), close(), "
|
|
||||||
"capture_frame(), is_available()\n"
|
|
||||||
" Boucle de capture dans un thread daemon avec compensation de latence "
|
|
||||||
"pour tenir les 5 fps\n"
|
|
||||||
" Callback set_frame_callback(fn) appelé à chaque frame avec (bytes, "
|
|
||||||
"datetime)\n"
|
|
||||||
" save_frame() avec horodatage, start()/stop(), gestionnaire de "
|
|
||||||
"contexte (with)\n"
|
|
||||||
" CaptureError exception dédiée\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: planarian/admin.py:24
|
#: planarian/admin.py:24
|
||||||
msgid "Calibration optique: générée lors de la calibration"
|
msgid "Calibration optique: générée lors de la calibration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -2422,15 +2405,15 @@ msgstr ""
|
|||||||
msgid "Expériences puits"
|
msgid "Expériences puits"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scanner/process.py:384
|
#: scanner/process.py:381
|
||||||
msgid "La session est nulle!..."
|
msgid "La session est nulle!..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scanner/process.py:391
|
#: scanner/process.py:388
|
||||||
msgid "Balayage démarré..."
|
msgid "Balayage démarré..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: scanner/process.py:394
|
#: scanner/process.py:391
|
||||||
msgid "Erreur lors du démarrage du balayage..."
|
msgid "Erreur lors du démarrage du balayage..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
#from django.utils.translation import gettext_lazy as _
|
|
||||||
"""
|
"""
|
||||||
Interface abstraite de capture vidéo.
|
Interface abstraite de capture vidéo.
|
||||||
Définit le contrat que toutes les implémentations doivent respecter.
|
Définit le contrat que toutes les implémentations doivent respecter.
|
||||||
@@ -103,7 +101,7 @@ class VideoCaptureInterface(abc.ABC):
|
|||||||
try:
|
try:
|
||||||
if self.use_tracking and cfg:
|
if self.use_tracking and cfg:
|
||||||
self._tracker = PlanarianTracker(**cfg)
|
self._tracker = PlanarianTracker(**cfg)
|
||||||
logger.info(f"Tracker de test créé avec conf: {cfg}")
|
logger.info(f"Create test with conf: {cfg}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error creating tracker with conf {cfg}: {e}")
|
logger.error(f"Error creating tracker with conf {cfg}: {e}")
|
||||||
self._tracker = None
|
self._tracker = None
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
#!.trans/bin/python
|
||||||
|
'''
|
||||||
|
Created on 11 mai 2025
|
||||||
|
## pip install argostranslate polib
|
||||||
|
@author: denis
|
||||||
|
'''
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import polib
|
||||||
|
import argostranslate.package
|
||||||
|
import argostranslate.translate
|
||||||
|
|
||||||
|
DJANGO_PROJECT = "test_tube_scanner"
|
||||||
|
|
||||||
|
def install_translation_model(from_lang="en", to_lang="fr"):
|
||||||
|
print("Cheching translation model...")
|
||||||
|
argostranslate.package.update_package_index()
|
||||||
|
available_packages = argostranslate.package.get_available_packages()
|
||||||
|
|
||||||
|
try:
|
||||||
|
package_to_install = next(
|
||||||
|
p for p in available_packages if p.from_code == from_lang and p.to_code == to_lang
|
||||||
|
)
|
||||||
|
print(f"Loading model {from_lang} >> {to_lang}...")
|
||||||
|
argostranslate.package.install_from_path(package_to_install.download())
|
||||||
|
print("Installation model ")
|
||||||
|
except StopIteration:
|
||||||
|
print("No models found for this language pair.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def translate_po_file(input_path, output_path, from_lang="en", to_lang="fr"):
|
||||||
|
print(f"Loading file {input_path}...")
|
||||||
|
po = polib.pofile(input_path)
|
||||||
|
|
||||||
|
print("Start traduction...")
|
||||||
|
for entry in po:
|
||||||
|
if entry.msgstr.strip() == "" and entry.msgid.strip():
|
||||||
|
try:
|
||||||
|
translation = argostranslate.translate.translate(entry.msgid, from_lang, to_lang)
|
||||||
|
entry.msgstr = translation
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Translation error: {entry.msgid}\n{e}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
po.save(output_path)
|
||||||
|
print(f"End of translation. Output file in: {output_path}")
|
||||||
|
|
||||||
|
|
||||||
|
def main(app, from_lang, to_lang):
|
||||||
|
INPUT_FILE = f'{app}/locale/{from_lang}/LC_MESSAGES/django.po'
|
||||||
|
OUTPUT_FILE = f'{app}/locale/{to_lang}/LC_MESSAGES/django.po'
|
||||||
|
install_translation_model(from_lang, to_lang)
|
||||||
|
translate_po_file(INPUT_FILE, OUTPUT_FILE, from_lang, to_lang)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description="Translation for Django")
|
||||||
|
parser.add_argument("--app", type=str, default='home', help="Django application name")
|
||||||
|
parser.add_argument("--from_lang", type=str, default="fr", help="From language")
|
||||||
|
parser.add_argument("--to_lang", type=str, default='en', help="To language", required=True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
main(f'{DJANGO_PROJECT}/{args.app}', args.from_lang, args.to_lang)
|
||||||
|
exit(0)
|
||||||
Reference in New Issue
Block a user