Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/01/2014, à 11:55

corrigo

Script de réinsertion de traduction (999 sur NDS)

Bonjour à tous.

Je suis actuellement à la tête d'un groupe de traduction du jeu 999 sur Nintendo DS : http://999-traduction.leforum.eu/portal.php
Nous avons traduit plus de 50% des fichiers, mais nous avons un petit souci.
Un membre de notre équipe avait mis au point un script permettant de traduire le jeu directement via le script de gamefaqs. En effet, les scripts du jeu dans la rom, bien que répertoriés par salle d'exploration (le casino, la cuisine, etc...), sont mélangés, ce qui rendrait la traduction assez peu confortable.

C'est pourquoi le-dit membre a créé ce script pour insérer notre traduction dans les fichiers textes du jeu.
Le script est le suivant :

#!/bin/bash

clear
echo "SCRIPT DE REMPLACEMENT SEMI-AUTOMATIQUE"
echo ""
echo "------------- CLOVER [4] --------------"
echo "Sauvegarde de la traduction dans le fichier SAV$1..."
cp "$1" "SAV$1"
echo "Sauvegarde des textes bruts dans le fichier SAV$2..."
cp "$2" "SAV$2"
echo "Conversion des fichiers au format UNIX..."
dos2unix -q $1
dos2unix -q $2
echo "Traitement en cours..."
echo "--- DÉBUT DU RAPPORT ---" >> $3
ancienne=
cat $1 |
sed "s/\[/【/g" |
sed "s/\\]/】/g" |
sed "s/^[A-Z][a-z]*: //g" |
sed "s/^[<{][]*[}>]//g" |
sed "s/^\* //g" |
while read line
do
    if [ "$line" = "" ];
    then :
    else
	if [ "${line:0:3}" = ">>>" ];
	then
            nboc=`cat $2 | grep "$ancienne" | wc -l`
	    if [ $nboc = 0 ];
	    then echo "NON REMPLACÉ ### $ancienne" >> $3
	    else
                ancienne=`echo $ancienne | sed "s/\*/\\\\\*/g" | sed "s/\./\\\\\./g"`
                sed -i "s/$ancienne/${line:4}/g" $2
            fi
	    if [ $nboc -gt 1 ];
            then echo "    DOUBLONS ### $ancienne" >> $3
            else :
	    fi
	else ancienne=$line
	fi
    fi
done
echo "--- FIN DU RAPPORT ---" >> $3
echo "" >> $3
echo "Les non-remplacements peuvent être dus à une absence de saut de ligne" >> $3
echo "entre deux phrases à traduire ou la présence de caractères spéciaux rares." >> $3
echo "Vous devez rechercher ces phrases à la main et insérer votre traduction" >> $3
echo "directement dans $2." >> $3
echo "" >> $3
echo "Les doublons peuvent être dus à la présence de sauts de ligne injustifiés." >> $3
echo "Ils peuvent également être dus à des redondances dans les textes du jeu." >> $3
echo "Vous devez rechercher ces passages dans $2 et $1 et vérifier que les" >> $3
echo "traductions ont correctement été appliquées." >> $3
echo "Conversion des fichiers au format Windows..."
unix2dos -q $1
unix2dos -q $2
unix2dos -q $3
echo "Opération terminée. Le log est disponible dans $3"

Pour que ce script fonctionne de manière optimale, nous avions des consignes à respecter (retour à la ligne après un point, un point d'interrogation, encodage en UTF-8, etc...)

Problème, même en respectant ces consignes, nous avons un perte d'environ 10% de textes qui ne sont pas réinsérés.

Autre problème, la réinsertion fonctionne sous Windows via Cygwin que sous Linux lui-même ! Un comble !!


J'ai pris le contenu d'un fichier traduit traduction depuis Google Drive, l'ai collé dans un document texte via Pluma et j'ai pourtant choisi UTF-8 en encodage, et que je choisisse une fin de ligne Unix/Linux ou Windows, ça ne marche pas. Car oui, ce serait trop simple, il y a plusieurs fins de ligne

J'ai aussi essayé un export depuis Google Drive en fichier .txt, sans succès non plus.

Dans le LOG du logiciel de réinsertion, j'ai juste comme info que mes phrases traduites ne sont pas remplacées.

Toutefois, la réinsertion fonctionne sous un environnement Windows.

Bon, j'ai quand même eu le même soucis que sous Linux, il fallait déjà installer le paquet dos2unix pour que ça fonctionne, sinon j'avais un message d'erreur dont ce lien m'a bien dépanné.

Sous windows, j'ai pris le contenu du script Clover, que j'ai copié dans un fichier txt, en virant l'extension.
Puis, j'ai passé le script clover  du format windows au format unix via la commande

dos2unix clover

Donc si j'ai bien compris, la gestion des retours à la ligne n'est pas la même entre windows et Linux, mais alors pourquoi ça ne marche pas tout simplement sous Linux ?

Bref, tout ce pavé pour 2 demandes :

1-Une bonne âme pourrait-il optimiser le script pout nous éviter d'avoir ces 10% de perte ? Son auteur (un étudiant) nous a quittés, et je ne suis qu'un simple utilisateur de Linux. Des experts en la matière auront sûrement vu des erreurs facilement modifiables.

2-Pourquoi le script donné ci-dessus ne fonctionne pas en environnement Linux ?

Merci par avance de vôtre intérêt.

Dernière modification par corrigo (Le 20/01/2014, à 11:55)

Hors ligne

#2 Le 30/01/2014, à 10:26

corrigo

Re : Script de réinsertion de traduction (999 sur NDS)

Up !
Personne n'a une petite idée ?

Hors ligne

#3 Le 30/01/2014, à 12:28

pingouinux

Re : Script de réinsertion de traduction (999 sur NDS)

Bonjour,
Pourrais-tu fournir un petit exemple (fichiers de départ, fichiers que tu voudrais obtenir, fichiers que tu obtiens) ?

Hors ligne