Subversion Repositories svn LFS-FR

Rev

Rev 7165 | Rev 7168 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7156 jlepiller 1
#!/usr/bin/python3
2
# -*- coding: utf-8 -*-
3
 
4
#    Template Translator v0.1
5
#    Traduit automatiquement certaines chaine de caractères des paquets
6
 
7
#    Publié par roptat <julien@lepiller.eu> le 8 août 2016
8
#    sous la licence gnu General Public License version 3 pubilée par la Free Software Foundation.
9
#    Visitez <http://www.gnu.org/licenses/> pour obtenir la licence.
10
 
11
 
12
import sys
13
import re
14
import polib
15
 
16
files = sys.argv
17
files.pop(0)
18
 
7165 jlepiller 19
def convert(entry, regexp, template):
7156 jlepiller 20
        m = regexp.match(entry.msgid)
21
        # do not modify anything if the translation is already correct
22
        if m and ("fuzzy" in entry.flags or not entry.msgstr):
23
                msgstr = template
24
                try:
25
                        msgstr = msgstr.replace("#1", m.group(1))
26
                        msgstr = msgstr.replace('#2', m.group(2))
27
                        msgstr = msgstr.replace('#3', m.group(3))
28
                        msgstr = msgstr.replace('#4', m.group(4))
29
                except:
30
                        x=1
31
                entry.msgstr = msgstr
7165 jlepiller 32
                if "fuzzy" in entry.flags:
33
                        entry.flags.remove("fuzzy")
7156 jlepiller 34
 
35
 
36
# regexps
37
regexps = []
38
 
39
# find an MD5 sum
40
regexps.append([re.compile('([a-f0-9]{32})$'), '#1'])
41
# convert KB to Ko, MB to Mo and GB to Go, and keep SBU
42
regexps.append([re.compile('([0-9\\.]+) ([KMG])B$'), '#1 #2o'])
43
regexps.append([re.compile('([0-9\\.]+) ([KMG])B \(with tests\)$'), '#1 #2o (avec les tests)'])
44
regexps.append([re.compile('([0-9\\.]+) ([KMG])B \(additional ([0-9\\.]+) ([KMG])B for the tests\)$'), '#1 #2o (#3 #4o supplémentaires pour les tests)'])
45
regexps.append([re.compile('([0-9\\.]+) SBU$'), '#1 SBU'])
46
regexps.append([re.compile('([0-9\\.]+) SBU \(with tests\)$'), '#1 SBU (avec les tests)'])
47
regexps.append([re.compile('([0-9\\.]+) SBU \(additional ([0-9\\.]+) SBU for the tests\)$'), '#1 SBuo (#2 SBU supplémentaires pour les tests)'])
48
regexps.append([re.compile('less than 0.1 SBU$'), 'moins de 0.1 SBU'])
49
# termes à gauche des informations
50
regexps.append([re.compile('Package Information$'), 'Informations sur le paquet'])
51
regexps.append([re.compile('Download \(HTTP\): (.*)$'), 'Téléchargement (HTTP)&nbsp;: #1'])
52
regexps.append([re.compile('Download \(FTP\): (.*)$'), 'Téléchargement (FTP)&nbsp;: #1'])
53
regexps.append([re.compile('Download MD5 sum: (.*)$'), 'Somme de contrôle MD5 du téléchargement&nbsp;: #1'])
54
regexps.append([re.compile('Download size: (.*)$'), 'Taille du téléchargement&nbsp;: #1'])
55
regexps.append([re.compile('Estimated disk space required: (.*)$'), 'Estimation de l\'espace disque requis&nbsp;: #1'])
56
regexps.append([re.compile('Estimated build time: (.*)$'), 'Estimation du temps de construction&nbsp;: #1'])
57
regexps.append([re.compile('(http://[^ ]*)$'), '#1'])
58
regexps.append([re.compile('(https://[^ ]*)$'), '#1'])
59
regexps.append([re.compile('(ftp://[^ ]*)$'), '#1'])
60
# Dépendances
61
regexps.append([re.compile('(.*) Dependencies$'), 'Dépendances de #1'])
62
regexps.append([re.compile('Required$'), 'Requises'])
63
regexps.append([re.compile('Optional$'), 'Facultatives'])
64
regexps.append([re.compile('Optional \(Required if building GNOME\)$'), 'Facultatives (Requises pour construire GNOME)'])
65
regexps.append([re.compile('Recommended$'), 'Recommandées'])
66
regexps.append([re.compile('Recommended \(Required if building GNOME\)$'), 'Recommandées (Requises pour construire GNOME)'])
67
regexps.append([re.compile('User Notes: (.*)$'), 'Notes utilisateur&nbsp;: #1'])
68
# Titres
69
regexps.append([re.compile('Installation of (.*)$'), 'Installation de #1'])
70
regexps.append([re.compile('Command Explanations$'), 'Explication des commandes'])
71
regexps.append([re.compile('Config files$'), 'Fichiers de configuration'])
72
regexps.append([re.compile('Config file$'), 'Fichier de configuration'])
73
regexps.append([re.compile('Config Files$'), 'Fichiers de configuration'])
74
regexps.append([re.compile('Config File$'), 'Fichier de configuration'])
75
regexps.append([re.compile('Configuring ([^ ]+)$'), 'Configuration de #1'])
76
regexps.append([re.compile('Kernel Configuration$'), 'Configuration du noyau'])
77
regexps.append([re.compile('Enable the following options in the kernel configuration and recompile the kernel if necessary:$'), 'Activez les options suivantes dans la configuration du noyau et recompilez le noyau si nécessaire&nbsp;:'])
78
regexps.append([re.compile('Boot Script$'), 'Script de démarrage'])
79
regexps.append([re.compile('Boot Scripts$'), 'Scripts de démarrage'])
80
regexps.append([re.compile('Configuration Information$'), 'Informations sur la configuration'])
81
regexps.append([re.compile('Installed Program$'), 'Programme installé'])
82
regexps.append([re.compile('Installed Programs$'), 'Programmes installés'])
83
regexps.append([re.compile('Installed Library$'), 'Bibliothèque installée'])
84
regexps.append([re.compile('Installed Libraries$'), 'Bibliothèques installées'])
85
regexps.append([re.compile('Installed Directory$'), 'Répertoire installé'])
86
regexps.append([re.compile('Installed Directories$'), 'Répertoires installés'])
87
regexps.append([re.compile('Short Descriptions$'), 'Descriptions courtes'])
88
# phrases récurrentes
89
regexps.append([re.compile('Install (.*) by running the following commands:$'), 'Installez #1 en lançant les commandes suivantes&nbsp;:'])
90
regexps.append([re.compile('(<userinput>.*</userinput>)$', re.MULTILINE|re.DOTALL), '#1'])
91
regexps.append([re.compile('(<literal>.*</literal>)$', re.MULTILINE|re.DOTALL), '#1'])
92
regexps.append([re.compile('(<computeroutput>.*</computeroutput>)$', re.MULTILINE|re.DOTALL), '#1'])
93
regexps.append([re.compile('Now, as the (.*) user:$'), 'Maintenant, en tant qu\'utilisateur #1&nbsp;:'])
94
regexps.append([re.compile('To test the results, issue:? (<command>.*</command>).$'), 'Pour tester les résultats lancez&nbsp;: #1.'])
95
regexps.append([re.compile('To run the test suite, issue:? (<command>.*</command>).$'), 'Pour lancer la suite de tests, tapez&nbsp;: #1.'])
96
regexps.append([re.compile('This package does not come with a test suite.$'), 'Ce paquet n\'est pas fourni avec une suite de tests.'])
97
regexps.append([re.compile('Additional Downloads$'), 'Téléchargements supplémentaires'])
98
regexps.append([re.compile('Required patch: (.*)$'), 'Correctif requis&nbsp;: #1'])
7165 jlepiller 99
regexps.append([re.compile('(<othername>.*)$'), '#1'])
7156 jlepiller 100
regexps.append([re.compile('Introduction to (.*)$'), 'Introduction à #1'])
101
regexps.append([re.compile('(<xref [^>]*>)$'), '#1'])
102
regexps.append([re.compile('(<command>[^ <]*</command>)$'), '#1'])
103
regexps.append([re.compile('(<filename[^>]*>[^ <]*</filename>)$'), '#1'])
104
regexps.append([re.compile('([^ <]*)$'), '#1'])
7167 jlepiller 105
regexps.append([re.compile('You can start (<application>.*</application>) from a TTY using (<xref linkend="xinit"/>).$'), 'Vous pouvez démarrer #1 depuis un TTY avec #2.'])
7156 jlepiller 106
regexps.append([re.compile('(<.*>): Use this to disable (.*) support.?$'), '#1&nbsp;: Utilisez ce paramètre pour désactiver le support de #2'])
107
regexps.append([re.compile('(<.*>): Use this switch if you don\'t have (<application>.*</application>) installed.?$'), '#1&nbsp;: Utilisez ce paramètre si vous n\'avez pas installé #2'])
108
regexps.append([re.compile('(<.*>): Use these switches if you don\'t have (<application>.*</application>) installed.?$'), '#1&nbsp;: Utilisez ces paramètres si vous n\'avez pas installé #2'])
109
regexps.append([re.compile('(<.*>): Use this switch if you did( no)?(n\')?t install (<application>.*</application>).?$'), '#1&nbsp;: Utilisez ce paramètre si vous n\'avez pas installé #3'])
110
regexps.append([re.compile('(<.*>): Use these switches if you did not install (<application>.*</application>).?$'), '#1&nbsp;: Utilisez ces paramètres si vous n\'avez pas installé #2'])
111
regexps.append([re.compile('several in (&kde-dir;/[^ ]*)$'), 'plusieurs dans #1'])
112
regexps.append([re.compile('This package does not come with a working test suite.?$'), 'Ce paquet ne contient pas de suite de tests utilisable.'])
113
regexps.append([re.compile('contains the (<application>.*</application>) API functions.$'), 'Contient les fonctions de l\'API de #1'])
114
regexps.append([re.compile('Now as the <systemitem class="username">root</systemitem> user:'), 'Maintenant en tant qu\'utilisateur <systemitem class="username">root</systemitem>&nbsp;:'])
7165 jlepiller 115
regexps.append([re.compile('Project Home Page: (<ulink .*/>)$', re.MULTILINE|re.DOTALL), 'Page d\'accueil du projet&nbsp;: #1'])
116
regexps.append([re.compile('Download Location: (<ulink .*/>)$', re.MULTILINE|re.DOTALL), 'Emplacement du téléchargement&nbsp;: #1'])
7156 jlepiller 117
regexps.append([re.compile('(<.*>): This switch is used to apply( a)? higher level of( the)? compiler( the)? optimizations?.?$', re.MULTILINE|re.DOTALL), '#1&nbsp;: Ce paramètre est utilisé pour appliquer un plus haut niveau d\'optimisation du compilateur.'])
118
 
119
 
120
#regexps.append([re.compile('$'), ''])
121
 
122
number = len(files)
123
current = 1
124
 
125
for filename in files:
126
        print('Traitement du fichier ', current, '/', number, '     \r',
127
                        end="", flush=True),
128
        current = current + 1
129
        po = polib.pofile(filename)
130
        for entry in po:
131
                for reg in regexps:
132
                        convert(entry, reg[0], reg[1])
133
        po.save()
134
print('')
135