Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2010, 18h39   #1
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 67
Points : 18
Points : 18
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 :
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
Frazeks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 18h49   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 058
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 058
Points : 8 403
Points : 8 403
c'est pour traduire les variables d'un fichier php ? t'a un exemple de fichier de départ et un de fin ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 18h55   #3
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 67
Points : 18
Points : 18
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 :
1
2
3
4
5
<?php
$var1 = "bla bla";
$var2 = "plop plop";
etc.
?>
Alors que moi j'ai un fichier ini :

Code :
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 :
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.
Frazeks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 19h09   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 058
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 058
Points : 8 403
Points : 8 403
tu veux traduire tout les fichier .ini d'un dossier si j'ai bien compris
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 19h18   #5
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 67
Points : 18
Points : 18
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 :
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?
Frazeks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 19h21   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 058
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 058
Points : 8 403
Points : 8 403
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é)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 19h34   #7
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 67
Points : 18
Points : 18
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.
Frazeks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 19h49   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 058
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 058
Points : 8 403
Points : 8 403
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)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 20h07   #9
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 67
Points : 18
Points : 18
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.
Frazeks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 20h46   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 058
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 058
Points : 8 403
Points : 8 403
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 ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h34.


 
 
 
 
Partenaires

Hébergement Web