Bonjour,

J'ai créé mon site web que je compte lancer officiellement prochainement à l'adresse suivante : lien enlevé (j'enlèverai le lien à la fin du sujet si aspect publicitaire, je le mets pour le moment histoire d'avoir un meilleur aperçu pour tenter de résoudre le sujet)

J'ai trouvé un bouton intéressant permettant de traduire instantanément le site en 52 langues via google translate.
Donc ça, c'est une chose.
Par contre, j'aimerais proposer une traduction exacte en 3-4 langues faite par moi-même.

Pour cela, je ne sais pas comment faire, pouvez-vous m'aider ?

Voici mes interrogations :

1) sur la forme : proposer des drapeaux qui changent la langue en cliquant dessus en PHP par exemple ? Ou effectuer une reconnaissance de la zone géographique ? Le second est plus "propre", mais il y a beaucoup de français à l'étranger ou d'anglophones en dehors des pays anglophones qui tomberaient sur la langue du pays et désireraient avoir le site dans leur langue natale. Donc est-il possible de combiner les deux ? Mettre en premier une reconnaissance géographique, et si on veut changer, un clic sur drapeau et hop, ça change la langue ?
Exemple concret : un français aux US : il voit le site en anglais, et clique sur le drapeau fr et hop, toutes les pages sont en fr.

2) Sur le fond : comment faire le plus simple possible ? Avec des include par exemple ?
Exemple : le menu en haut. il y a écrit "Feed". Imaginons qu'en français il y ai écrit "Flux".
Comment faire : une condition php du genre "switch : si FR alors érire flux, si en/us/australien alors écrire feed" ? et je l'organiserais comment ? une condition php à chaque endroit où il y a du texte qui choisit entre tel ou tel fichier ?
Ou un include à chaque endroit du texte à traduire qui inclut un fichier qui lui-même contient les différentes traductions avec des conditions ?

Merci d'avance à vous =)
Modifié par LightBen (31 Dec 2011 - 20:29)
Bonjour,

humm, perso j'ai opté pour les drapeaux. pas de reconnaissance de la langue ou de la zone géographique mais un "bombardement de cookies", un cookie par langue. un dossier central où on retrouve les textes communs à toutes les pages, du style "retour au menu" etc. dans chaque dossier, un sous-dossier avec les traductions de la page concernée. donc oui, avec des includes de toute façon. mais bon y a sûrement plus propre et plus fonctionnel.
Salut,
FloydinBremen a écrit :
perso j'ai opté pour les drapeaux

Les drapeaux ne sont pas la solution la plus pertinente : un francophone n'est pas forcément de nationalité française, par exemple (même remarque pour bon nombre de langues). Smiley cligne À la place, je préfère des liens intitulés Français, English, Español, etc.

Quant aux outils de type Google Translate, autant les oublier si tu recherches la qualité dans la traduction.
Modifié par Victor BRITO (29 Dec 2011 - 18:43)
Justement, je compte mettre en place une traduction automatique par google translate qui est vraiment meilleur au fil du temps. Mais la question n'est pas là.

Je voudrais savoir quel est le meilleur moyen pour mettre en place une traduction EXACTE faite par moi-même en 3-4 langues.

Merci pour vos (précédentes et futures) réponses Smiley cligne
sur PunBB, ils utilisent un répertoire "lang" dans lequel se trouve un sous-répertoire par langue ("lang/french" ou "lang/english") par exemple. La langue est déterminée par l'administrateur à l'inscription, mais je pense que c'est tout à fait possible de fixer l'info par cookie chez la personne.

Dans chaque sous-répertoire, il y a une série de fichiers php (common.php, post.php, topic.php,...). Il y en a en fait 1 par page qui appellera l'affichage + un common. Le fichier lié à une page d'affichage porte le même nom que son fichier d'appel (post.php appellera lang/french/post.php,....)

Chaque fichier est composé en réalité d'un array de ce type :

$lang_common = array(
// Text orientation and encoding
'lang_direction'		=>	'ltr',	// ltr (Left-To-Right) or rtl (Right-To-Left)
'lang_encoding'			=>	'iso-8859-1',
'lang_multibyte'		=>	false,
 
// Notices
'Bad request'			=>	'Erreur. Le lien que vous avez suivi est incorrect ou périmé.',
'No view'				=>	'Vous n\'avez pas l\'autorisation d\'accéder à ces forums.',
'No permission'			=>	'Vous n\'avez pas l\'autorisation d\'afficher cette page.',
'Bad referrer'			=>	'Mauvais HTTP_REFERER. Vous avez été renvoyé sur cette page par une source inconnue ou interdite. Si le problème persiste, assurez-vous que le champ \'URL de base\' de la page Admin/Options est correctement renseigné et que vous visitez ces forums en utilisant cette URL. Plus d\'informations pourront être trouvées dans la documentation de FluxBB.'
}
 



Dans l'entete des fichiers d'affichage, il y a donc :
- un include avec common.php (qui comme son nom l'indique est commun à tous les fichiers)
et un second include construit ainsi :

lang/*langue*/*fichier qui appelle*.php

*langue* est récupérer dans les tables, mais pourrait l'être par cookies.
*fichier qui appelle* est récupérer via les variables globales de php ^^



Après, je sais pas si y a plus ergonomiques, mais ça marche pas mal du tout comme système ^^
Modifié par Lothindil (30 Dec 2011 - 12:49)
J'suis un novice en PHP... bon, merci de ta réponse, je vais étudier cette solution (et la garder en favori Smiley langue ), faut bien avancer ^^ s'il y a d'autres solutions à me proposer n'hésitez pas je suis preneur pour ouvrir mes possibilités =)

Merci Lothindil =)
Bonjour,

En plus du tableau de traduction, Il y existe les fonctions gettext pour internationaliser un script ou les fonctions d'internationalisation (abrégé i18n).
La doc de gettext est complexe mais on trouve des tutos facilement, il y a en un très succinct sur le site du zéro qui permet un démarrage rapide. Le défaut, c'est les chaîne dynamique où il faut jouer avec (s)printf & co, idem pour la méthode avec tableau.

Il reste le problème du format des nombres, des dates, etc qui dépende de la locale. MessageFormatter les résouts en partie (tous?). Couplé avec un tableau comme celui expliqué par Lothindil c'est -je pense- une bonne solution.
Modifié par jo_link_noir (01 Jan 2012 - 16:12)
Dans la continuité du post précédent, il y a un tutoriel vidéo sur l'excellent site de Grafikart, qui te permettra de mettre en place ce genre de chose.

Je suis en train de le faire pour un client pour un site en trois langues (français, anglais, russe).