Subversion Repositories svn LFS-FR

Rev

Rev 8230 | 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
 
19
def convert(entry, regexp, template):
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
        if m:
24
                msgstr = template
25
                try:
26
                        msgstr = msgstr.replace("#1", m.group(1))
27
                        msgstr = msgstr.replace('#2', m.group(2))
28
                        msgstr = msgstr.replace('#3', m.group(3))
29
                        msgstr = msgstr.replace('#4', m.group(4))
30
                except:
31
                        x=1
32
                entry.msgstr = msgstr
7170 jlepiller 33
                if "fuzzy" in entry.flags:
34
                        entry.flags.remove("fuzzy")
7156 jlepiller 35
 
36
 
37
frenchMonth = {
7225 jlepiller 38
        'January': 'janvier',
39
        'February': 'février',
40
        'March': 'mars',
41
        'April': 'avril',
42
        'May': 'mai',
43
        'June': 'juin',
44
        'July': 'juillet',
45
        'August': 'août',
46
        'September': 'septembre',
47
        'October': 'octobre',
48
        'November': 'novembre',
49
        'December': 'décembre'
7156 jlepiller 50
}
51
 
52
# regexps
53
regexps = []
54
 
8230 jlepiller 55
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+).?$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2.'])
56
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2. Corrige #3'])
8581 jlepiller 57
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+). +Finishes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2. Termine #3'])
8230 jlepiller 58
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? ([^ ]+). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2. Corrige #3'])
59
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+). +Part of (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] – Mise à jour vers #2. Corrige partiellement #3'])
60
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) and ([^ ]+). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 et #3. Corrige #4'])
61
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) ([0-9\.]+). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 #3. Corrige #4'])
62
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+). +Partially fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2. Corrige partiellement #3'])
63
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) (\([^ ]+\)). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 #3. Corrige #4'])
64
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) \(([^ ]+) [mM]odule\). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 (module #3). Corrige #4'])
65
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) \([sS]ecurity [fF]ixe?s?\). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 (correctif de sécurité). Corrige #3'])
66
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) \([sS]ecurity [uU]pdate?s?\). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 (correctif de sécurité). Corrige #3'])
67
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) \(Xorg Library\). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 (bibliothèque Xorg). Corrige #3'])
8581 jlepiller 68
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+) \(Xorg Application\). +Fixes (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2 (application Xorg). Corrige #3'])
69
regexps.append([re.compile('\[([^\]]+)\] - Up[dg]r?a[td]ed? to ([^ ]+). Addresses (<ulink [^>]+> *#[0-9]+ *</ulink>.?)$', re.MULTILINE|re.DOTALL), '[#1] — Mise à jour vers #2. Corrige #3'])
8230 jlepiller 70
regexps.append([re.compile('\[([^\]]+)\] - Reintroduce ([^ ]+).?$', re.MULTILINE|re.DOTALL), '[#1] — Réintroduction de #2.'])
71
regexps.append([re.compile('\[([^\]]+)\] - Reinstate ([^ ]+).?$', re.MULTILINE|re.DOTALL), '[#1] — Réintroduction de #2.'])
72
regexps.append([re.compile('\[([^\]]+)\] - Add? ([^ ]+).?$', re.MULTILINE|re.DOTALL), '[#1] — Ajout de #2.'])
7156 jlepiller 73
 
7425 jlepiller 74
datereg = re.compile('([^ ]+) ([0-9]{1,2})(th|nd|st|rd|),? (20[0-9]{2})')
7156 jlepiller 75
 
76
 
77
 
78
#regexps.append([re.compile('$'), ''])
79
 
80
number = len(files)
81
current = 1
82
 
83
for filename in files:
84
        print('Traitement du fichier ', current, '/', number, '     \r',
85
                        end="", flush=True),
86
        current = current + 1
87
        po = polib.pofile(filename)
88
        for entry in po:
89
                for reg in regexps:
90
                        convert(entry, reg[0], reg[1])
91
                m = datereg.match(entry.msgid)
92
                if m and ("fuzzy" in entry.flags or not entry.msgstr):
93
                        day = m.group(2)
94
                        if int(day) == 1:
95
                                day = '1er'
7226 jlepiller 96
                        try:
97
                                month = frenchMonth[m.group(1)]
98
                                year = m.group(4)
99
                                entry.msgstr = day + " " + month + " " + year
100
                                if "fuzzy" in entry.flags:
101
                                        entry.flags.remove("fuzzy")
102
                        except:
103
                                pass
7156 jlepiller 104
        po.save()
105
print('')
106