999-Trad-FR Index du Forum

999-Trad-FR
Le forum officiel de la traduction de 999 sur Nintendo DS

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Script pour formater le fichier de texte à traduire
Aller à la page: 1, 2, 3, 4, 5  >
 
Poster un nouveau sujet   Répondre au sujet    999-Trad-FR Index du Forum -> La traduction de 999 -> Avant de commencer
Sujet précédent :: Sujet suivant  
Auteur Message
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Jeu 1 Aoû - 18:48 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Salut à tous,


Je me suis mis à la traduction de 999 avec vous depuis hier, et j'ai suivi votre méthode : ajouter ">>> " en dessous de chaque réplique, aller à la ligne entre chaque phrase... Mais cela reste très long ! Surtout quand je vois la taille de certains fichiers. J'ai donc décidé de créer un script pour nous aider à gagner du temps sur ce point, j'espère que cela vous plaira.


Voilà comment il fonctionne : vous entrez dans une ligne de commande "./script nomFichier" (nomFichier ne contenant pas l'extension, je l'ai mise par défaut dans le programme à ".txt"), puis le script analyse le fichier et vous ressort le fichier indenté de la façon proposée sur le forum, avec le même nom que le votre + un petit ajout (un deuxième fichier est donc créé).


Vous n'avez donc qu'à utiliser le fichier que vous avez créé préalablement à l'aide d'un copier-coller depuis GameFAQs.


Pour que le script sache où démarrer, vous devez mettre une balise "////Début////" au début des répliques.


Quelques remarques :


- Je me suis arrangé pour aller à la ligne après chaque "?", "!".


- Pour les points (".") : 


   -S'il s'agissait d'un point final, le script va à la ligne.
  
  - Sinon, s'il s'agissait de "..." on a deux cas : 
          - La phrase n'est en fait pas terminée (les ... sont collés à la suite de la phrase) : le script ne va pas à la ligne
          - La phrase est terminée : "..." final de bout de ligne, ou suivie d'un espace : le script va à la ligne.


- Seul petit point, il vous faudra supprimer les retours à la ligne générés automatiquement depuis le texte que vous avez copié de GameFAQs comme vous le faites aujourd'hui : je ne sais pas comment trouver le caractère qui a été utilisé pour le supprimer au cours de l'exécution du script.


- Evidemment, si à certains endroits vous rencontrez des phrases trop séparés, vous pourrez les réunir, le script n'ayant pas le jugement humain de décider si cela vaut le coup ou non de séparer.


Par contre comment je vous donne le script ? Si quelqu'un veut bien recevoir en MP le script puis l'héberger avant de redonner un lien sur le forum comme c'est le cas pour celui de réinsertion des textes bruts, ça serait sympa ^^.


En espérant que vous l'apprécierez et qu'il vous fera gagner beaucoup de temps !



#!/usr/bin/php


<?php


if($argc != 2)
echo "Erreur : veuillez entrer un nom de fichier à formater svp. (ex : b12TRAD)";
else
{
$filename = $argv[1];
$ext = ".txt";


$newText = '';
$text = '';
$file = fopen($filename . $ext, 'r') or die ("Fichier " . $filename . " impossible à ouvrir");


$line = ' ';
while($line != '' && (strpos($line, '////Début////') === false))
{
$line = fgets($file);
$text .= $line;
}


echo 'Début trouvé !';


while($line != '')
{
$line = fgets($file);
if($line[0] === '<' || $line[0] === '{' || $line[0] === '(')
{
$text .= $line;
}
else
{
$i = 0;
while(!$line[$i] != '')
{
$text .= $line[$i];
if($line[$i] == '!' || $line[$i] == '?')
{
addTradChars($text);
$i++;
}
else if($line[$i] == '.')
{
$j = 1;
while($line[$i + $j] == '.')
{
$j++;
$text .= '.';
}
if($j != 1)
{
$i = $i + 2;
if($line[$i + 1] == ' ' || $line[$i + 2] == '')
{
addTradChars($text);
$i++;
}


}
else
{
$i++;
addTradChars($text);
}
}
$i++;
}
}
}


fclose($file);


$filename .= "_formate";


$file = fopen($filename . $ext, 'w') or die ("Fichier " . $filename . " impossible à ouvrir");


fputs($file, $text);


fclose($file);


echo "Fichier enregistré avec succès !";
}


function addTradChars(&$text)
{
$text .= "\n>>> \n\n";
}


?>





J'ai eu le temps de modifier mon script pour qu'il puisse indenter autant de fichiers que l'on veut dans un dossier !


Quelques conditions :
- Le nom du fichier à indenter doit comporter l'extension ".txt"
- Le nom du script doit comporter "script" (peu importe où)
- Attention, si vous modifiez des fichiers indentés dans ce dossier et que vous relancez le script dans ce même dossier, ils seront écrasés par de nouveaux fichiers tout juste reformatés (sauf si l'exemplaire original utilisé pour formater le fichier n'existe plus dans le dossier) car ils auront le même nom que les nouveaux fichiers créés.

Comment fonctionne-t-il ?


Il ne faut pas entrer de nom de fichier si vous utilisez ce code, simplement ./nomDuScript
Le reste se fait tout seul.


Voilà le code :






#!/usr/bin/php


<?php


$fichiers = scandir('.');
foreach ($fichiers as $fichier)
{
if(!is_dir($fichier) &&  strpos($fichier, 'indente') === false && strpos($fichier, 'script') === false) 
{
$filename = $fichier;


$text = '';
$file = fopen($filename, 'r') or die ("Fichier " . $filename . " impossible à ouvrir");
$tabExplode = explode('.', $filename);
$filename = $tabExplode[0];

$line = ' ';
while($line != '' && (strpos($line, '////Début////') === false))
{
$line = fgets($file);
$text .= $line;
}


echo 'Début trouvé !';


while($line != '')
{
$line = fgets($file);
if($line[0] === '<' || $line[0] === '{' || $line[0] === '(')
{
$text .= $line;
}
else
{
$i = 0;
while($line[$i] != '')
{
$text .= $line[$i];
if($line[$i] == '!' || $line[$i] == '?')
{
addTradChars($text);
$i++;
}
else if($line[$i] == '.')
{
$j = 1;
while($line[$i + $j] == '.')
{
$j++;
$text .= '.';
}
if($j != 1)
{
$i = $i + 2;
if($line[$i + 1] == ' ' || $line[$i + 2] ='')
{
addTradChars($text);
$i++;
}


}
else
{
$i++;
addTradChars($text);
}
}
$i++;
}
}
}


fclose($file);




$filename .= "_indente.txt";


$file = fopen($filename, 'w') or die ("Fichier " . $filename . " impossible à ouvrir");


fputs($file, $text);


fclose($file);


echo "Fichier " . $filename . " enregistré avec succès !";
}
}


function addTradChars(&$text)
{
$text .= "\n>>> \n\n";
}


?>







Voici le code permettant d'indenter tous les fichiers d'un dossier, il est à jour et ne devrait plus écrire un nombre incalculable d'erreurs (qui ne gênaient en rien l'indentation, le résultat en restait inchangé).

#!/usr/bin/php


<?php


$fichiers = scandir('.');
foreach ($fichiers as $fichier)
{
if(!is_dir($fichier) &&  strpos($fichier, 'indente') === false && strpos($fichier, 'script') === false) 
{
$filename = $fichier;


$text = '';
$file = fopen($filename, 'r') or die ("Fichier " . $filename . " impossible à ouvrir");
$tabExplode = explode('.', $filename);
$filename = $tabExplode[0];
$line = ' ';
while($line != '' && (strpos($line, '////Début////') === false))
{
$line = fgets($file);
$text .= $line;
}


echo 'Début trouvé !';


while($line != '')
{
$line = fgets($file);
if($line[0] === '<' || $line[0] === '{' || $line[0] === '(')
{
$text .= $line;
}
else
{
$i = 0;
while($i  < strlen($line))
{
$text .= $line[$i];
if($line[$i] == '!' || $line[$i] == '?')
{
addTradChars($text);
$i++;
}
else if($line[$i] == '.')
{
$j = 1;
while($line[$i + $j] == '.')
{
$j++;
$text .= '.';
}
if($j != 1)
{
$i = $i + 2;
if($line[$i + 1] == ' ' ||  $i+2 >= strlen($line))
{
addTradChars($text);
$i++;
}


}
else
{
$i++;
addTradChars($text);
}
}
$i++;
}
}
}


fclose($file);




$filename .= "_indente.txt";


$file = fopen($filename, 'w') or die ("Fichier " . $filename . " impossible à ouvrir");


fputs($file, $text);


fclose($file);


echo "Fichier " . $filename . " enregistré avec succès !";
}
}


function addTradChars(&$text)
{
$text .= "\n>>> \n\n";
}


?>





Dernière édition par Zelati le Mer 9 Oct - 01:09 (2013); édité 10 fois
Revenir en haut
Publicité






MessagePosté le: Jeu 1 Aoû - 18:48 (2013)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Ven 2 Aoû - 10:43 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Je m'auto-réponds, mais le script étant en PHP, il faut PHP pour l'exécuter etc, de plus je ne suis pas certain qu'il fonctionnera sans modification sous Windows via Cygwin.


Pour faire assez simple on peut faire cela : on crée un dossier de partage sur le drive utilisé par la team, qui contiendra les fichiers à traduire. Donc pour commencer on crée les fichiers habituels depuis le site de GameFAQs.


Puis je télécharge le dossier, j'exécute le script (je me débrouillerai pour qu'il fonctionne sur un dossier entier, peu importe le nom de vos fichiers) et je mets dans le dossier les fichiers obtenus, qui seront prêts à être traduits.


Je peux toujours vous donner un exemple de résultat d'exécution sur un fichier si vous le voulez en attendant, je verrai avec corrigo comment mettre les fichiers à la disposition de tous.


Revenir en haut
corrigo
Administrateur

Hors ligne

Inscrit le: 15 Aoû 2012
Messages: 183
Localisation: Dijon

MessagePosté le: Sam 3 Aoû - 17:04 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Tu peux faire un tuto pour expliquer plus en détails comment ça fonctionne ?
Je comprends bien l'intérêt de la chose, mais avec des images, ça parle plus.  Mr. Green


Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Sam 3 Aoû - 18:36 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Alors pour essayer de faire simple :


Vous copiez (enfin copierez, quand le script sera en ligne) le script dans un dossier qui vous convient (personnellement j'ai fait un dossier par fichier de traduction). Vous copiez votre nouveau fichier créé depuis le copier-coller de GameFAQs dans ce même dossier (b12eTRAD.txt dans l'exemple qui suit). 
Il faut ensuite ajouter une balise qui indique au script où commencer à modifier le texte, ajoutez donc comme dans l'exemple "////Début////" au bon endroit.


Depuis une ligne de commande, vous vous arrangez pour vous placer dans le dossier contenant le script ainsi que le fichier texte à traduire.


Puis vous exécutez le script : ./nomScript nomFichierSansExtension
Dans mon exemple : ./script_prepare_fichier b12eTRAD


Il y a pas mal de pseudo-erreurs qui nous sont signalées, mais finalement vous devriez obtenir le fichier nomFicherSansExtension_formate qui sera prêt à être utilisé pour la traduction, soit dans mon exemple : b12eTRAD_formate.


Nous passons donc de : 





à : 





Dernier point, il reste à supprimer comme vous le faisiez avant les retours à la lignes qui étaient déjà présents, comme dans cet exemple (il y en a un que je n'ai pas entouré dans les screens précédents) :






Il sera cependant peut-être plus simple de procéder comme je l'ai dit et de me fabriquer les fichiers à formater que je vous redonnerai ensuite, si vous n'avez pas PHP et/ou êtes sur Windows sans trop savoir comment vous en servir.




Revenir en haut
corrigo
Administrateur

Hors ligne

Inscrit le: 15 Aoû 2012
Messages: 183
Localisation: Dijon

MessagePosté le: Sam 3 Aoû - 23:32 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Ha oui, effectivement, c'est pas mal ton script, ça améliorer grandement le confort de traduction !  Okay


Envoie nous ça dès que tu peux.  Mr. Green


Revenir en haut
corrigo
Administrateur

Hors ligne

Inscrit le: 15 Aoû 2012
Messages: 183
Localisation: Dijon

MessagePosté le: Lun 5 Aoû - 23:03 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Je viens d'essayer ton script
#!/usr/bin/php 


<?php 


if($argc != 2) 
echo "Erreur : veuillez entrer un nom de fichier à formater svp. (ex : b12TRAD)"; 
else 

$filename = $argv[1]; 
$ext = ".txt"; 


$newText = ''; 
$file = fopen($filename . $ext, 'r') or die ("Fichier " . $filename . " impossible à ouvrir"); 


$line = ' '; 
while($line != '' && (strpos($line, '////Début////') === false)) 

$line = fgets($file); 
$text .= $line; 



echo 'Début trouvé !'; 


while($line != '') 

$line = fgets($file); 
if($line[0] === '<' && $line[0] === '{') 

$text .= $line; 

else 

$i = 0; 
while($line[$i] != '') 

$text .= $line[$i]; 
if($line[$i] == '!' || $line[$i] == '?') 

addTradChars($text); 
$i++; 

else if($line[$i] == '.') 

$j = 1; 
while($line[$i + $j] == '.') 

$j++; 
$text .= '.'; 

if($j != 1) 

$i = $i + 2; 
if($line[$i + 1] == ' ' || $line[$i + 2] == '') 

addTradChars($text); 
$i++; 




else 

$i++; 
addTradChars($text); 


$i++; 





fclose($file); 


$filename .= "_formate"; 


$file = fopen($filename . $ext, 'w') or die ("Fichier " . $filename . " impossible à ouvrir"); 


fputs($file, $text); 


fclose($file); 


echo "Fichier enregistré avec succès !"; 



function addTradChars(&$text) 

$text .= "\n>>> \n\n"; 



?>

, j'ai un message d'erreur, mais j'ai dû mal m'y prendre.


J'ai copié coller le contenu de ton script dans un fichier vierge, que j'ai appelé "999" (sans extension ni guillemets)


J'ai pris copier-coller le contenu du fichier m20a dans un fichier vierge, que j'ai appelé "m20a" (sans extension ni guillemets)


J'ai mis les 2 fichiers à la racine de mon home.


J'ai ensuite rentré la commande suivante:
./999 m20a


J'ai obtenu:
bash: ./999: Permission non accordée


J'ai donc ensuite coché la case "autoriser l’exécution du fichier comme un programme" et j'ai cette fois obtenu ce résultat :
bash: ./999 : /usr/bin/php : mauvais interpréteur: Aucun fichier ou dossier de ce type


Il y aurait un paquet php à rajouter ? Lequel ? car dans synaptic, il y en a plein...





Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Mar 6 Aoû - 00:11 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Effectivement j'ai oublié de vous dire : ajoutez les droits droits d'exécution du script en faisant : chmod +x nomScript .Il te faut PHP5 installé sur ton ordinateur,  là il te renvoie une erreur en te disant qu'il ne trouve pas php (qui est donc capable d'interpréter le script écrit en php). Sous ubuntu on doit piuvoir faire "sudo apt-get install php5" je suppose de mémoire. 


Dernier point, mettez vos fichiers avec comme extension .txt, le script cherche le fichier entré mais avec l'extension présente sur le véritable fichier. Ex : vous avez le fichier abc.txt, vous faites ./script abc


J'ai repéré une erreur qui ne change vraiment pas grand chose mais je mettrai le script à jour rapidement. 


Revenir en haut
corrigo
Administrateur

Hors ligne

Inscrit le: 15 Aoû 2012
Messages: 183
Localisation: Dijon

MessagePosté le: Mar 6 Aoû - 22:30 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

En installant le paquet php5 tout a fonctionné du tonnerre.  Mr. Green


Ça rajoute des chevrons pour tout...même pour les fichiers qui pointent la suite des textes dans le script de gamefaqs, mais bon, c'est pas trop grave, on arrive à faire le tri.


Bon boulot, je pense que faire des scripts prêts à traduire pourraient être sympas, je vais voir ça.


Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Mar 6 Aoû - 22:35 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Est-ce que tu peux me donner un screen d'un exemple d'ajout de chevron qui je gêne et le poster ?

Sinon on fait comme j'ai dit pour les fichiers prêts à traduire : on crée tous les fichiers manquants depuis gamefaqs, je modifie le script en 2 minutes pour qu'il gère un dossier complet à partir d'un simple "./script" et que ça crée un fichier formaté par fichierTRAD.txt dans le dossier. Puis on met le tout à disposition de chacun dans un dossier drive partagé. 


Est-ce que si tu as traduit un bout de fichier généré avec mon script tu peux tenter de réinsérer la traduction dans le texte brut avec ce fichier en utilisant l'autre script du forum ? Histoire de vérifier que nos traductions fonctionneront sans souci (pas de problème de compatibilité des formats de fichiers ou je ne sais trop quoi)


Revenir en haut
corrigo
Administrateur

Hors ligne

Inscrit le: 15 Aoû 2012
Messages: 183
Localisation: Dijon

MessagePosté le: Mer 7 Aoû - 22:52 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Voici un des exemples (j'ai encadré en rouge).


Avant :



Après :  



Comme tu le vois, les commentaires mis dans le script  gamefaqs pour aller à un autre endroit ont aussi droit à  des chevrons.


Ça m'a fait bizarre la 1ère fois, mais en regardant le texte d'origine, je m'y suis fait.


Je n'ai pas testé ton script  avec l'autre script de réinsertion puisque celui que je fais actuellement est déjà commencé avant que ton script n'ait existé... Embarassed


Dernière édition par corrigo le Jeu 8 Aoû - 09:13 (2013); édité 1 fois
Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Jeu 8 Aoû - 08:27 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Ah super que ce soit ça ! Ça vient de mon erreur dans le script ! ^^ (erreur d'inattention)

Je vais mettre le script à jour en spoiler.


C'est fait, il est dans mon premier message.


J'ai corrigé ma petite erreur, rajouté un cas (celui où une ligne commence par une parenthèse que je ne connaissais pas avant ton screen). J'ai aussi modifié le code pour qu'il ne génère plus "d'erreur" au cours de son exécution, il est donc plus propre à lancer Smile.


Revenir en haut
terapty
Équipe de traduction

Hors ligne

Inscrit le: 11 Déc 2012
Messages: 60
Localisation: Elbeuf,France

MessagePosté le: Jeu 8 Aoû - 15:08 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Pour ceux qui auraient wampServer et qui voudraient tenter, j'ai essayé, c'est pas la peine, avec le navigateur vous avez pas accès aux variables argc et argv. J'm'étais même fait chier à faire une interface pour voir si c'était possible avec une page qui demande le nom du fichier (le truc basique qui fait 5 lignes quoi...) et ça marche pas.Va falloir que j'installe PHP, ou peut-être que ce sera pas la peine si vous comptez le faire pour tous les fichiers puis mettre en commun ensuite. Tenez-moi au courant SVP ! Mr. Green
_________________
BIIIM ET C'EST LE RETOUR DU CAVALIER FOU!


Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Jeu 8 Aoû - 16:59 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

En installant wamp normalement tu as installé PHP il me semble, mais sous Windows il faut modifier les variables d'environnement pour avoir accès à la commande php... C'est un peu le bordel.


Tu peux toujours entrer le nom de ton fichier directement dans mon script puis l'exécuter via ton serveur plutôt que d'utiliser argc et argv non ? Very Happy


Revenir en haut
corrigo
Administrateur

Hors ligne

Inscrit le: 15 Aoû 2012
Messages: 183
Localisation: Dijon

MessagePosté le: Dim 25 Aoû - 18:57 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Zelati, peux tu produire un script global pour produire la mise en forme pour tous les fichiers restants ?


Tout le monde n'a pas linux, si on met tous les fichiers prêts à la traduction en ligne sur Google drive, ça sera plus pratique pour la suite.


Revenir en haut
Zelati
Équipe de traduction

Hors ligne

Inscrit le: 31 Juil 2013
Messages: 78

MessagePosté le: Dim 25 Aoû - 19:31 (2013)    Sujet du message: Script pour formater le fichier de texte à traduire Répondre en citant

Oui bien sûr. 

Préparez un fichier drive dans lequel il y aura les fichiers prêts à etre formatés. 


Je ferai ça dès que possible mais je risque de le faire dans plus d'une semaine, je vais être 
 très pris dans les jours qui arrivent.


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 08:41 (2018)    Sujet du message: Script pour formater le fichier de texte à traduire

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    999-Trad-FR Index du Forum -> La traduction de 999 -> Avant de commencer Toutes les heures sont au format GMT + 2 Heures
Aller à la page: 1, 2, 3, 4, 5  >
Page 1 sur 5

 
Sauter vers:  

Portail | Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com