Bonjour,
Mon objectif est :
-Enregistrer un travail temporaire de la traduction du fichier .srt, pouvoir le stocker dans une base de données pour pouvoir revenir plus tard.
-pouvoir exporter la traduction dans un autre fichier de sous-titres .srt qu'on doit réaliser.
-stocker toute la traduction ou juste une traduction partielle en base de données
-upload d'un nouveau fichier .srt à traduire.
-utilisation du pattern DAO
Pour cela j'ai créé deux classes : une classe Morceau
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class Morceau { private int id; private int numero_morceau; private String debutPeriode; private String finPeriode; private String texte; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getNumero_morceau() { return numero_morceau; } public void setNumero_morceau(int numero_morceau) { this.numero_morceau = numero_morceau; } public String getDebut() { return debutPeriode; } public void setDebut(String debut) { this.debutPeriode = debut; } public String getFin() { return finPeriode ; } public void setFin(String fin) { finPeriode = fin; } public String getTexte() { return texte; } public void setTexte(String texte) { this.texte = texte; } }
Ensuite, j'ai créé une classe ListeMorceaux :
Ensuite j'ai créé la classe SubtitlesHandler :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class ListeMorceaux { private int id; private List<Morceau> morceaux; public int getId() { return id; } public void setId(int id) { this.id = id; } public List<Morceau> getMorceaux() { return morceaux; } public void setMorceaux(List<Morceau> morceaux) { this.morceaux = morceaux; } }
Ensuite la jsp :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 public class SubtitlesHandler { private ArrayList<String> originalSubtitles = null; private ArrayList<String> translatedSubtitles = null; public SubtitlesHandler(String fileName) { originalSubtitles = new ArrayList<String>(); translatedSubtitles = new ArrayList<String>(); BufferedReader br; try { br = new BufferedReader(new FileReader(fileName)); String line; while ((line = br.readLine()) != null) { originalSubtitles.add(line); } br.close(); } catch (IOException e) { e.printStackTrace(); } } public void exportTexteTraduitFichierSRT(String fileName) { File file = new File(fileName); try { if (!file.exists()) { boolean res = file.createNewFile(); } FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw); for (int i = 0; i < this.translatedSubtitles.size(); i++) { bw.write(translatedSubtitles.get(i) + "\n"); bw.flush(); } bw.close(); System.out.println("Fichier créé ! "); } catch (IOException e) { System.out.println("Échec d'écriture ! "); e.printStackTrace(); } } public ArrayList<String> getSubtitles() { return originalSubtitles; } public ArrayList<String> getTranslatedSubtitles() { return translatedSubtitles; } public ArrayList<String> ExtraireTexteUniquement(ArrayList<String> original) { originalSubtitles = new ArrayList<String>(); for (int i = 0; i < original.size(); i++) { String ch = original.get(i); if (!estUnEntier(ch) && !ch.matches("^$") // pas de ligne vide && !ch.matches("[0-2][0-3]:[0-5][0-9]:[0-5][0-9],[0-9][0-9][0-9] --> [0-2][0-3]:[0-5][0-9]:[0-5][0-9],[0-9][0-9][0-9]")) { originalSubtitles.add(ch); } } return originalSubtitles; } private boolean estUnEntier(String line) { try { Integer.parseInt(line); return true; } catch (NumberFormatException e) { return false; } } }
J'ai utilisé aussi pattern DAO.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <%@ page pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Editer les sous-titres</title> </head> <body> <form method="post" action="/edit"> <input type="submit" value="valider" style="position:fixed; top: 10px; right: 10px;" /> <table> <c:forEach items="${ subtitles }" var="line" varStatus="status"> <tr> <td style="text-align:right;"><c:out value="${line}" /></td> <td><input type="text" name="line${ status.index }" id="line${ status.index }" size="35" /></td> </tr> </c:forEach> </table> </form> </body> </html>
La jsp permet d'afficher le texte du fichier .srt et de pouvoir traduire.
Pour le constructeur de la classe SubtitleHandler doit en même temps lire le fichier.srt de la langue originale et remplir au fur et à mesure la liste translatedSubtitles.
Enfin mon problème est de trouver une idée pour la traduction : je pense qu'à chaque fois que je traduis une ligne de texte, en appuyant sur le bouton valider de la jsp, il y aura enregistrement dans la base de données.
C'est quelqu'un a des idées, je le remercie d'avance de me les faire partager.
Avatar71
Partager