Salome HOME
suite chgt copyright et menage
[tools/eficas.git] / Telemac / transforme / reEcrittsEn.py
1 #!/usr/bin/env python
2 import sys, re
3 dicoCataToLabel={}
4 dicoCataToTelemac={}
5 Entete  = '<?xml version="1.0" encoding="utf-8"?>'
6 Entete +='<!DOCTYPE TS><TS version="1.1" language="en">'
7 Entete +='<context>\n'
8 Entete +='    <name>@defaut</name>\n'
9
10 Fin ='</context>\n</TS>\n'
11
12 pattern_In=re.compile(r'^\s*<source>(?P<ident>.*)</source>\s*$')
13 pattern_Out=re.compile(r'^\s*<translation>(?P<traduit>.*)</translation>\s*$')
14
15 listeMaj=[]
16 listeMaj.append(('for h','for H'))
17 listeMaj.append(('pour h','pour H'))
18 listeMaj.append(('for u','for U'))
19 listeMaj.append(('pour u','pour U'))
20 listeMaj.append(('of k','of K'))
21 listeMaj.append(('de k','de K'))
22 listeMaj.append(('of h','of H'))
23 listeMaj.append(('de h','de H'))
24 listeMaj.append(('u and v','U and V'))
25 listeMaj.append(('u et v','U et V'))
26 listeMaj.append(('on h','on H'))
27 listeMaj.append(('sur h','sur H'))
28 listeMaj.append(('supg','SUPG'))
29 listeMaj.append(('k and epsilon','K and Epsilon'))
30 listeMaj.append(('k-epsilon','K-Epsilon'))
31 listeMaj.append(('gmres','GMRES'))
32 listeMaj.append(('cgstab','CGSTAB'))
33 listeMaj.append(('q(z)','Q(Z)'))
34 listeMaj.append(('z(q)','Z(Q)'))
35 listeMaj.append(('wgs84','WGS84'))
36 listeMaj.append(('wgs84','UTM'))
37 listeMaj.append(('n-scheme','N-Scheme'))
38 listeMaj.append(('scheme n','Scheme N'))
39 listeMaj.append(('psi-scheme','PSI-Scheme'))
40 listeMaj.append((' psi',' PSI'))
41 listeMaj.append(('f(t90)','F(T90)'))
42 listeMaj.append(('(pa)','(Pa)'))
43 listeMaj.append(('h clipping','H clipping'))
44 listeMaj.append(('delwaq','DELWAQ'))
45 listeMaj.append(('tomawac','TOMAWAC'))
46 listeMaj.append(('chezy','CHEZY'))
47 listeMaj.append(('hllc','HLLC'))
48 listeMaj.append(('c-u','C-U'))
49 listeMaj.append(('c,u,v','C,U,V'))
50 listeMaj.append(('h,u,v','H,U,V'))
51 listeMaj.append(('previmer','PREVIMER'))
52 listeMaj.append(('fes20xx','FES20XX'))
53 listeMaj.append(('legos-nea','LEGOS-NEA'))
54 listeMaj.append(('tpxo','TPXO'))
55 listeMaj.append((' x',' X'))
56 listeMaj.append((' y',' Y'))
57 listeMaj.append(('waf','WAF'))
58 listeMaj.append(('(w/kg)','(W/kg)'))
59 listeMaj.append(('(j/kg)','(W/kg)'))
60 listeMaj.append(('zokagoa','Zokagoa'))
61 listeMaj.append(('nikuradse','Nikuradse'))
62 listeMaj.append(('froude','Froude'))
63 listeMaj.append(('gauss','Gauss'))
64 listeMaj.append(('seidel','Seidel'))
65 listeMaj.append(('leo','Leo'))
66 listeMaj.append(('postma','Postma'))
67 listeMaj.append(('crout','Crout'))
68 listeMaj.append(('okada','Okada'))
69 listeMaj.append(('jmj','JMJ'))
70 listeMaj.append(('haaland','HAALAND'))
71 listeMaj.append(('grad(u)','grad(U)'))
72 listeMaj.append(('variable z','variable Z'))
73 listeMaj.append(('variable r','variable R'))
74 listeMaj.append(('ascii','ASCII'))
75
76
77 def traite(fichier,fichierDico, fichierTs):
78   f=open(fichier,'r')
79   t=f.read()
80   for ligne in t.split('\n'):
81      if pattern_In.match(ligne): 
82         m=pattern_In.match(ligne)
83         ident=m.group('ident')
84      if pattern_Out.match(ligne): 
85         m=pattern_Out.match(ligne)
86         traduit=m.group('traduit')
87         dicoCataToTelemac[ident]=traduit
88         traduitMin=traduit.lower()
89         for t in listeMaj :
90            traduit=traduitMin.replace(t[0],t[1])
91            traduitMin=traduit
92         chaine=traduitMin[0].upper()+traduitMin[1:]
93         dicoCataToLabel[ident]=chaine
94   f.close()
95
96   f=open(fichierDico,'w')
97   f.write ("dicoCataToEngTelemac = {\n")
98   for k in dicoCataToTelemac.keys() :
99        l= '   "'+  k +'" : "'+ dicoCataToTelemac[k]+'",\n'
100        f.write(l)
101   f.write(" }\n")
102   f.write( "dicoCasEnToCata = {\n")
103   for k in dicoCataToTelemac.keys() :
104       l= '   "'+ dicoCataToTelemac[k] +'" : "'+ k+'",\n'
105       f.write(l)
106   f.write( " }\n")
107   f.close()
108
109   f=open(fichierTs,'w')
110   f.write( Entete)
111   for k in dicoCataToTelemac.keys() :
112       texte = "    <message>\n        <source>"
113       texte+= k
114       texte+= "</source>\n        <translation>"
115       texte+= dicoCataToLabel[k]
116       texte+= "</translation>\n    </message>\n"
117       f.write( texte)
118
119   f.write( Fin)
120
121     
122 if __name__ == "__main__":
123   import optparse
124   parser=optparse.OptionParser(usage="utilisation : %prog [options]")
125   parser.add_option(u"-i","--input",dest="fichierIn",type='string',
126                     help=("nom du fichier ts a traduire"))
127   parser.add_option(u"-d","--dico",dest="fichierDico",type='string',
128                     help=("nom du fichier contenant les dictionnaires labelTelemac:labelCata en sortie"))
129   parser.add_option(u"-t","--tsFile",dest="fichierTs",type='string',
130                     help=("nom du fichier ts contenant labelCata vers label IHM"))
131
132
133   (options,args)=parser.parse_args(sys.argv[1:])
134   if options.fichierIn == None or options.fichierDico == None or options.fichierTs==None :
135       print 'reEcrittsEn.py -i <inputfile> -d <dicofile> -t <tsfile>'
136       print './reEcrittsEn.py -i cata_name2eng_name.ts -d dicoCasEnToCata.py -t labelCataToIhmEn.ts'
137       sys.exit(1)
138   traite(options.fichierIn,options.fichierDico,options.fichierTs)
139