CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

WebApp Multilingue ?

Thegodpornman
Thegodpornman
Niveau 10
07 septembre 2012 à 13:27:39

slt vous savez comment on peut rendre son application web multilingue :question:
Sur le chrome web store on trouve des applications en plusieurs langues par exemple evernote la déscription de l'application est en FR et s'adapte au pays ou l'on se trouve et elle est disponible en : Bahasa Indonesia, Deutsch, English, Français, Nederlands, Tiếng Việt, Türkçe, dansk, español, italiano, magyar, polski, português (Brasil), suomi, svenska, Српски, русский,

ไทย, 中文 (简体), 中文 (繁體), 日本語, 한국어
Comment fait on pour gérer les langues et que l'application se mette automatiquement dans la langue du pays ou on se trouve :question:

deepblue
deepblue
Niveau 16
07 septembre 2012 à 14:00:05

Recherche les topics de Fire_Storm car des solutions y sont expliquées :ok:

slash_snakepit
slash_snakepit
Niveau 9
07 septembre 2012 à 14:02:11

Tu peux récupérer la langue en javascript en récupérant la langue du navigateur par exemple.

Après il existe plein de moyens d'avoir un site multi langue, un fichier xml ou une base de donnée avec un système de clés qui te permet d'avoir par exemple

<welcome>Bienvenue</welcome> dans ton fichier fr.xml
<welcome>Welcome</welcome> dans ton fichier en.xml

Mais ça peut devenir un peu lourd... Du coup t'as des solutions dédiées au probleme si tu fouilles sur le web

Je sais qu'on en a déjà parlé sur ce forum et que d'autres forumers te donneront des pistes intéressantes

Fire_Storm
Fire_Storm
Niveau 10
07 septembre 2012 à 14:51:20

A quel niveau ? (traduction générale du site par outil genre Google Traduction donc automatique ou alors faites par toi même ?)

Au niveau site j'ai un dossier i18n reprenant les fichiers de langue (fr.php, en.php etc) reprenant un tableau, ou des define ou ce que tu as envie du moment qu'ils aient tous les même noms de variable. La seule chose qui change c'est évidemment leur contenu.

Il ne reste plus qu'a inclure le fichier en fonction de la langue (de base tu en imposes une si il n'existe pas de variable lang dans l'URL, ou si celle ci ne correspond pas aux langues prévues).

Donc si l'URL est ?lang=fr -> c'est le fichier fr.php qui sera inclus

?lang=en -> c'est le fichier en.php

?lang=un_nom_qui_ne_veut_rien_dire -> fr.php (car valeur inattendue donc méfiance)

Au niveau de la base de données tu as 2 solutions: un champ par langue:

ID
CreationDate
Title_fr
Title_en
Title_es
Text_fr
Text_en
Text_es
...

Dans ce cas là tu vas récuperer donc le champ Text_<?php echo htmlspecialchars($_GET['lang']); ?>

Le seul soucis, si tu as 15 langues en plus il va te falloir toucher à la structure de ta base de données et rajouter donc les 15 champs par type de données (ici par exemple 15 Text_ et 15 Title_).

Et avouons le c'est assez chiant.

L'autre solution c'est de fonctionner en 2 tables:

news
news_i18n

La table news contiendra toute les données relative à la news et qui n'ont pas besoin d'être traduite (ici par exemple l'ID et la date), la table news_i18n contiendra les "versions" de cette news et elle contiendra toutes les données relative à la news et qui donc doivent être traduites (Title et Text dans ce cas ci), en plus de ça il y a 2 champs supplémentaires: TargetID qui est en fait l'ID de la table news (ba oui il faut bien lié la traduction à la news -> une news possède plusieurs traductions mais une traduction appartient à une seule news, relation 1 à n entre 2 tables donc) et puis un autre qui est donc LanguageID et qui détermine donc la langue.

En bref:

news

ID: 345
CreationDate: 2012-09-07

news_i18n

ID: 777
Title: Ma première news
Text: Texte de ma première news
TargetID: 345
LanguageID: fr

ID: 778
Title: My first news
Text: Text of my first news
TargetID: 345
LanguageID: en

Le gros avantage de cette technique: on peut rajouter 2000 langues si on veut sans avoir besoin de toucher à quoi que se soit au niveau de la base de données, seulement il y aura pour la plupart des tables donc 2 au lieu de 1, mais un seul champ même si il y a 10000 langues (alors que dans l'autre il faudrait 10000 x le nombre de champs à traduire). C'est la solution que j'utilise (et que deepblue utilise aussi je crois).

Thegodpornman
Thegodpornman
Niveau 10
07 septembre 2012 à 21:18:15

En gros je veux simplement que mon app soit automatiquement a la langue de l'internaute .
Avec ta methode se sera le cas ou il devra choisir du genre "choisissez votre langue" :question:

Thegodpornman
Thegodpornman
Niveau 10
09 septembre 2012 à 13:00:36

Sinon j'ai une autre question vous savez pas comment supprimer les lieux déjà présent sur la carte avec google map API ?
Par exemple retirer les jardins , églises ,écoles qui sont déjà dessus :(

Davy_Graham
Davy_Graham
Niveau 4
09 septembre 2012 à 18:49:06

Fire_Storm : tu peux me montrer à quoi ressemble ton fichier fr.php avec la 2eme solution ?

Fire_Storm
Fire_Storm
Niveau 10
09 septembre 2012 à 21:47:18

Ben par exemple avec des défine ça donnerait ceci:

fr.php

<?php
define("BONJOUR", "Bonjour");
define("AU_REVOIR", "Au revoir");
define("CONNEXION", "Connexion");
?>

et en.php

<?php
define("BONJOUR", "Hello");
define("AU_REVOIR", "Bye");
define("CONNEXION", "Connection");
?>

Comme tu vois ils ont le même nom de constante, mais le contenu varie selon le fichier.

Ce qui donc en PHP donnera

<?php echo BONJOUR; ?> Fire_Storm

et selon le fichier le résultat sera:

fr.php -> Bonjour Fire_Storm
en.php -> Hello Fire_Storm

Davy_Graham
Davy_Graham
Niveau 4
11 septembre 2012 à 22:12:28

J'avais compris ça mais en fait ce que je comprends pas c'est ou est ton lien entre tes define et les données dans la BD

Fire_Storm
Fire_Storm
Niveau 10
12 septembre 2012 à 00:33:10

Ah mais non les define c est uniquement et justement pour ce qui n est pas géré par la base de données.

deepblue
deepblue
Niveau 16
12 septembre 2012 à 09:12:40

On préféra exiff aux defines car c'est fait pour et c'est plus simple/complet à utiliser :p) http://fr.wikipedia.org/wiki/XLIFF ; exemple dans symfony 1 http://www.symfony-project.org/askeet/1_0/en/23

Meebo
Meebo
Niveau 9
12 septembre 2012 à 09:34:53

Quelqu’un sait pourquoi Wordpress utilise un format tout bizarre par hasard ? :(

Fire_Storm
Fire_Storm
Niveau 10
12 septembre 2012 à 11:43:08

Bah j'ai parlé de define mais ça peut se faire avec n'importe quoi, avec c'était des define mais j'aurais plus tendance maintenant à utiliser du XML.

L'important c'est qu'il ai tous la même structure, seul le contenu changera.

deepblue
deepblue
Niveau 16
12 septembre 2012 à 11:52:35

Meebo, parce qu'il n'y a pas de solution miracle ^^ Il existe des formats binaires pour avoir plus de perf.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment