Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3062 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Méthode d'internationalisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Méthode d'internationalisation

n°2019440
Pascal le ​nain
Posté le 27-08-2010 à 16:45:50  profilanswer
 

Bonjour,
 
Je souhaite internationaliser un site web vitrine.
Je ne souhaite pas utiliser de bibli type gettext.
Je compte passer par une solution simple en mysql basique.
 
J'ai imaginé 2 méthodes sensiblement différentes dans le stockage des données, et je ne sais pas laquelle est la meilleure.
A vous donc de juger.
 
Tout d'abord, très important, la méthode doit m'éviter de devoir imaginer des noms pour chaque zone de texte.
Donc chaque élément de texte est nommé par un id numérique, incrémenté automatiquement lors de l'ajout.
 
Voici les deux méthodes de stockage :
 

1ère méthode :
 
- Une seule table mysql :
 
langue |    1     |           2              |              3             |    ......
--------------------------------------------------------------------------------
  fr      coucou     où est mon parapluie ?      Brian est dans cuisine
  en        hi       where is my umbrella ?      Brian is in the kitchen
  es       hola      donde esta my paraguas ?    Brian esta en la cocina
 
J'ajoute donc un champ à chaque ajout d'un élement de texte.
 
Avantage : Une seule table => Simplicité
Inconvénient : Données supplémentaires quand au type du champ répété pour chacun


2ème méthode :
 
Une table de langues
 
id  |     nom     |  indicatif
------------------------------
1       Français      fr
2       English       en
3       Español       es
 
Une table de traduction
 
id   |  langue    |  valeur
------------------------------
42        1          coucou
42        2          hello
..      ....          ....
 
Avantage : Nombre de champs fini
Inconvenient : Plus lent à exploiter ?


 
Actuellement, j'ai mis en oeuvre la 2ème solution, mais j'ai des doutes.
 
Pouvez-vous m'ôter ces doutes ?
 
Merci d'avance ;)


Message édité par Pascal le nain le 27-08-2010 à 16:46:35
mood
Publicité
Posté le 27-08-2010 à 16:45:50  profilanswer
 

n°2019529
aideinfo
Posté le 27-08-2010 à 22:58:00  profilanswer
 
n°2019794
Oliiii
Posté le 30-08-2010 à 09:09:16  profilanswer
 

La deuxieme m'a l'air la meilleure solution aussi.
 
La perte de performance ne sera pas vraiment significative pour toi car le server va d'abord chercher l'id et puis n'aura plus qu'a choisir entre quelques langues.
Ca ne deviendra problematique que si tu as des centaines de langues differentes.

n°2019801
rufo
Pas me confondre avec Lycos!
Posté le 30-08-2010 à 09:46:08  profilanswer
 

forcément la 2ième, les tables MySQL sont limitées à 1000 colonnes. Donc si t'as plus de 1000 libellés, t'es mort avec la 1ère solution. :/
 
Cela dit, pour la 2ième solution, je ne suis pas convaincu de l'utilité de la 1ère table de langues. Tu mets un char(2) pour le champ langue dans la 2ième table et la clé primaire est portée par les champs "id" + "langue".


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2019810
Oliiii
Posté le 30-08-2010 à 10:58:48  profilanswer
 

Laisser le label de la langue dans la deuxieme table serai redondant (avec tout les problemes qui en decoulent), pour que le schema soit normalisé il faut avoir les deux tables.

n°2019834
rufo
Pas me confondre avec Lycos!
Posté le 30-08-2010 à 13:06:27  profilanswer
 

Je pensais plus à mettre uniquement l'indicatif (fr, es...) et l'appli se charge de mettre le libellé. En effet, faire une table juste pour ça, on m'a dit que c'était pas terrible. L'autre solution est d'utiliser un enum pour la langue.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2019841
Pascal le ​nain
Posté le 30-08-2010 à 13:38:14  profilanswer
 

C'est ce que je pensais aussi. Merci pour votre aide ;)

n°2019894
Deamon
Posté le 30-08-2010 à 16:26:49  profilanswer
 

Pour la 1ere méthode pourquoi tu n'as pas inversé lignes/colonnes ? C'est-à-dire mettre les langues en colonnes ?

n°2020331
skeye
Posté le 01-09-2010 à 10:25:26  profilanswer
 

La première solution me parait particulièrement stupide, même en mettant à part les limitations de mysql...tu rajoutes des colonnes à chaque fois que t'as un nouveau bout de texte sur le site?[:pingouino]

 

...bon après je ne mettrais pas ça dans une base de données, de toute manière, c'est se compliquer la vie pour rien. L'avantage de gettext par exemple c'est d'avoir des éditeurs spécifiques pour les fichiers de traduction. En mettant ça en base tu vas soit devoir te faire chier à les rentrer toi-même à la main, soit te faire chier à faire une interface perso pour les saisir...


Message édité par skeye le 01-09-2010 à 10:25:32

---------------
Can't buy what I want because it's free -
n°2020341
Oliiii
Posté le 01-09-2010 à 11:19:26  profilanswer
 

Moi je voyais plutot la premiere table comme une table normale mais ecrite avec colonne et ligne inversée pour plus de lisiblité dans le forum ...
 
Comme quoi ... on voit ce qu'on veut bien voire :)

mood
Publicité
Posté le 01-09-2010 à 11:19:26  profilanswer
 

n°2020467
rufo
Pas me confondre avec Lycos!
Posté le 01-09-2010 à 16:59:57  profilanswer
 

Perso, je gère aussi mes traductions dans des fichiers texte.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2020539
Pascal le ​nain
Posté le 01-09-2010 à 20:20:22  profilanswer
 

Je trouve l'idée de Daemon excellente.
 

rufo a écrit :

Perso, je gère aussi mes traductions dans des fichiers texte.


 
Comment fais-tu pour chercher uniquement certains textes ?


Message édité par Pascal le nain le 01-09-2010 à 20:21:01
n°2020753
rufo
Pas me confondre avec Lycos!
Posté le 02-09-2010 à 15:07:13  profilanswer
 

Je fais un fichier par langue, après 2 solutions : des constantes, une par texte, ou un tableau associatif, une clé par texte.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Méthode d'internationalisation

 

Sujets relatifs
Pb de méthode virtuelle sur Interface[Javascript] Méthode générée dynamiquement
[OpenGl] Choisir la bonne méthode d'affichage (Vertex Array ?)POST et GET : est ce la bonne méthode ?
Methode permettant de bien affiché un objet[C++] Prototype méthode membre de classe template
[RESOLU]Accéder méthode ou objet autre FrameAccès dynamique à une classe pour appeler .... une méthode statique
Trouver l'adresse d'une méthode C++ en assembleurInternationalisation en java ... bonne méthode ?
Plus de sujets relatifs à : Méthode d'internationalisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR