IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Script de traduction


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 68
    Points : 40
    Points
    40
    Par défaut Script de traduction
    Bonjour,

    Je viens de trouver un script de traduction de fichier langue php.

    Celui-ci utilise l'API Google Gtranslate, je viens de le tester, il marche à merveille,
    ce n'est qu'une traduction, mais si on doit traduire 3000 lignes, cela devient très fastigieux.

    Mon problème, mon fichier de langue à traduire n'est pas en php, c'est un fichier ini.

    Cela ne devrai pas changer grand chose mais le script vérifie s'il s'agit bien d'une variable "$"
    pour poursuivre la traduction, dans le cas contraire le fichier reste pareille, sans aucun changement.

    Je vais donc poster le fichier index.php du script, peu être quelqu'un peut m'aider, je ne m'y conait pas trop en php.

    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
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    <?php
     
    require("gtranslate/GTranslate.php");
     
    $languages = parse_ini_file("gtranslate/languages.ini");
     
     
     
    // Mettre le repertoire d'origine ici
     
    $path_from = "lang/fr/";
     
    // Mettre le repertoire de destination ici
     
    $path_to = "lang/en/";
     
    // Mettre la langue desiree ici
     
    $lang_to = "english";
     
    $lang_to_iso = $languages[strtoupper($lang_to)];
     
     
     
    // On recupere la liste des fichiers contenus dans le repertoire d'origine
     
    $rep = dir($path_from);
     
    $files_to_translate = array();
     
    while ($nametmp = $rep->read()) {
     
    	if (is_file($path_from.$nametmp) && $nametmp!="." && $nametmp!=".." && $nametmp!="Thumbs.db") $files_to_translate[] = $nametmp;
     
    }
     
    $rep->close();
     
     
     
    $gt = new Gtranslate;
     
    foreach($files_to_translate as $filename){
     
    	$translation = "";
     
    	// On traite le contenu du fichier ligne par ligne
     
    	$filecontent = file($path_from.$filename);
     
    	foreach($filecontent as $line){
     
    		// Si la ligne contient un variable PHP, alors on traduit
     
    		if(strstr($line,'$')){
     
    			// On extrait le nom et la valeur de la variable
     
    			list($name,$value) = explode("=",$line);
     
    			$value = str_replace('";','',$value);
     
    			$value = str_replace(' "','',$value);
     
    			$value = htmlentities($value);
     
    			// On reecrit la ligne avec la traduction de la valeur de la variable
     
    			$translation .= $name.'= "'.$gt->{"french_to_".$lang_to}($value).'";';
     
    			$translation .= "\n";
     
    		}
     
    		// Si la ligne ne contient pas de variable, alors on recopie la ligne telle quelle
     
    		else {
     
    			$translation .= $line;
     
    		}
     
    	}
     
     
     
    	// Ecriture du nouveau fichier de langue
     
    	if(!is_dir($path_to)) mkdir($path_to);
     
    	$newfilename = str_replace("_fr","_".$lang_to_iso,$filename);
     
    	$fp = fopen($path_to.$newfilename, "w");
     
    	fwrite($fp,$translation);
     
    	fclose($fp);
     
    }
    Ci quelqu'un es interessé je peux également lui fournir les liens du script complet.

    J'attends vos réponses avec impatiente

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est pour traduire les variables d'un fichier php ? t'a un exemple de fichier de départ et un de fin ?

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est pour traduire les variables d'un fichier php ?
    Pour que la traduction fonctionne il faut que ce soit un fichier php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $var1 = "bla bla";
    $var2 = "plop plop";
    etc.
    ?>
    Alors que moi j'ai un fichier ini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ; [RSS]
    RSS20 = "RSS 2.0"
    Atom03 = "Atom 0.3"
    RSSPopularProducts = "%s: Popular Products"
    RSSPopularProductsDesc = "A list of the popular products at %s."
    RSSNewProducts = "%s: New Products"
    RSSNewProductsDesc = "A list of the new products at %s."
    RSSFeaturedProducts = "%s: Featured Products"
    Ce ne devrai pas être trop compliqué de changer le format suporté je pensse. Ceci doit se jouer au niveau :

    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
     $gt = new Gtranslate;
     foreach($files_to_translate as $filename){
     $translation = "";
     // On traite le contenu du fichier ligne par ligne
     $filecontent = file($path_from.$filename);
     foreach($filecontent as $line){
     // Si la ligne contient un variable PHP, alors on traduit
     if(strstr($line,'$')){
     // On extrait le nom et la valeur de la variable
     list($name,$value) = explode("=",$line);
     $value = str_replace('";','',$value);
     $value = str_replace(' "','',$value);
     $value = htmlentities($value);
     // On reecrit la ligne avec la traduction de la valeur de la variable
     $translation .= $name.'= "'.$gt->{"french_to_".$lang_to}($value).'";';
     $translation .= "\n";
     }
     // Si la ligne ne contient pas de variable, alors on recopie la ligne telle quelle
     else {
     $translation .= $line;
     }
     }
    Merci pour ta réponse rapide.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu veux traduire tout les fichier .ini d'un dossier si j'ai bien compris

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    tu veux traduire tout les fichier .ini d'un dossier si j'ai bien compris
    Je veux traduire un seul fichier ini, mais le script verifie si c'est un fichier à variable php.

    J'ai essayé d'enlever la partie :

    mais il senblerai qu'elle ai un role important à jouer, j'ai eu une erreur en retour.

    Il faudrai qu'il teste si c'est un fichier ini ou que dans la partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     // Si la ligne ne contient pas de variable, alors on recopie la ligne telle quelle
     else {
     $translation .= $line;
    quand le script detecte un fichier ini il s'ocupe de la traduction.

    La partie traduite étant simplement celle entre les " ".

    Je pense qu'il s'agit de l'absence de "$" dans mon fichier ini.

    En language humain : Si le fichier est un ini, recupérer le texte dans les " ", la traduire puis la recopier à la place. As tu une idée?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si c'est un seul fichier tas pas besion de tout le code, pourquoi avec garder dir et compagnie ? repart de zéro ca va être plus simple
    t'as une clé pour l'API google ?
    le script a la base est pas top, c'est mieux de partie sur un bonne base, (j'ai tester en 20 lignes c'est baclé)

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    Je ne me suis pas trop aventuré dans le code vu que celui ci est fonctionnel,
    j'ai tester avec un fichier php, la traduction est quasi parfaite.

    Je n'ai pas de clé pour l'API de google,
    il s'agit d'une classe qui communique avec les services de google translate.

    C'est un scipt qui utilise GTranslate.

    C'est une librairie non suporté officielement par google.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Frazeks Voir le message
    Je ne me suis pas trop aventuré dans le code vu que celui ci est fonctionnel,
    j'ai tester avec un fichier php, la traduction est quasi parfaite.

    Je n'ai pas de clé pour l'API de google,
    il s'agit d'une classe qui communique avec les services de google translate.

    C'est un scipt qui utilise GTranslate.

    C'est une librairie non suporté officielement par google.
    si tu veux juste adapter le code il va falloir prendre totu ce qu'il y'a apres le = et le traduire, par contre niveau traduction tu va avoir des surpises, ta chaine va pas garder son état actuelle (je pense au %s)

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    C'est ce que je veux faire mais mon script ne prend même pas le fichier .ini en compte,
    mais sa ne marche qu'avec du php, c'est cela que je veux changer principalement,
    et pour les chaines, j'ai fait un test avec un petit fichier, sa reste impecable,
    mais c'est à voir pour mon fichier ini de plusieurs millers de lignes.

    -Il y a t'il un moyen de transformer mon fichier .ini en .php, sans que j'ai à ajouter "$" à chaque debut de ligne?

    -Puis le reconvertir en .ini après.

    Je ne sais pas si ma démarche est bonne, dit moi ce que tu en pensse.
    Pour les chaines je pourais les ajoutés plus tard, moi fastigieux que la traductuion de tous le fichier.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Frazeks Voir le message
    C'est ce que je veux faire mais mon script ne prend même pas le fichier .ini en compte,
    mais sa ne marche qu'avec du php, c'est cela que je veux changer principalement,
    et pour les chaines, j'ai fait un test avec un petit fichier, sa reste impecable,
    mais c'est à voir pour mon fichier ini de plusieurs millers de lignes.

    -Il y a t'il un moyen de transformer mon fichier .ini en .php, sans que j'ai à ajouter "$" à chaque debut de ligne?

    -Puis le reconvertir en .ini après.

    Je ne sais pas si ma démarche est bonne, dit moi ce que tu en pensse.
    Pour les chaines je pourais les ajoutés plus tard, moi fastigieux que la traductuion de tous le fichier.
    est ce que tu comprends tout le code de base deja ?

Discussions similaires

  1. script de traduction
    Par webide dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/08/2009, 22h43
  2. script de traduction
    Par webide dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/08/2009, 18h15
  3. Script de traduction
    Par Bruno.C dans le forum Langage
    Réponses: 1
    Dernier message: 21/02/2009, 13h28
  4. aide traduction script
    Par calitom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/07/2006, 11h54
  5. script de traduction
    Par kanzarih dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 30/01/2006, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo