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

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    décembre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2008
    Messages : 87
    Points : 65
    Points
    65

    Par défaut Langues étrangères et SGBD

    Bonjour,

    Je m'interroge actuellement sur la "meilleur" façon de gérer le multi langue dans un logiciel, et notamment dans la base de données.

    Les solutions que je peux imaginer ne me semblent pas propres, or je ne me souviens pas avoir rencontré ce cas dans les livres.

    Les solutions que j'ai en tête sont pour le moment :

    - J'ai la solution d'avoir une base par langue, mais je n'aime pas cela, dans la mesure où cela fait des doublons.

    - Avoir tout dans une langue, et traduire pour l'utilisateur, mais je ne vais pas convertir des saisies utilisateurs dans la langue de la base.

    - Rajouter une référence locale à plus ou moins tous les champs de la base, avec des tables de traduction.

    Vu que je ne pense pas être le premier avec cette interrogation, il existe certainement une solution de référence ?

    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    3 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 856
    Points : 8 921
    Points
    8 921

    Par défaut

    Bonjour,
    Pour gérer cette problématique nous avons une table des langues dans la base, et chaque donnée qui doit être traduite est dans une table avec l'id de la langue.
    Par exemple pour les désignations des articles, nous avons une table ART_ML avec comme colonne l'id de l'article, l'Id de la langue et la désignation. Ainsi on peut traduire la désignation dans autant de langues que nécessaire, sans rien dupliquer.

    Tatayo.

  3. #3
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 906
    Points : 44 220
    Points
    44 220

    Par défaut

    Aujourd'hui le coup de la table des langue est très désuet par rapport à une approche XML par exemple. L'idée est d'avoir dans une colonne XML toutes les traductions pour les littéraux.

    Après il faut faire des requêtes XQuery / XPath dans SQL pour retrouver la langue souhaitée

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  4. #4
    Membre éprouvé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    septembre 2016
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 546
    Points : 1 017
    Points
    1 017

    Par défaut

    L'approche XML est potentiellement plus longue pour faire des recherches du type :
    - lister les traductions qui manquent en québécois
    bien valider avec votre SGBD la bonne prise en charge du type XML et notamment l'indexation.
    Si vous utilisez SQL server vous n'êtes pas dans le bon forum

    Bon c'est vrai que dans le même temps c'est pas une requête hyper fréquente.

    Le cas le plus fréquent est de retrouver le texte dans la langue voulue, et à défaut, dans la langue "de base".
    Et dans ce cas le traitement XML est correct.

    Attention toutefois à la mécanique de validation du flux XML, la mise à jour est parfois lourde.
    Le savoir est une nourriture qui exige des efforts.

  5. #5
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 906
    Points : 44 220
    Points
    44 220

    Par défaut

    Potentiellement, tout dépend si le SGBDR utilisé est capable d'index le XML ou pas. Par exemple dans SQL Server c'est beaucoup plus rapide qu'une solution à base de multi sets par ce qu'il index le XML et que l'on peut le valider grammaticalement via des XSD et que cela évite une jointure avec une table de traduction. Par contre sur PostGreSQL c'est indubitablement plus lent... pas de validation XSD et pas d'index XML !

    Enfin, pour gérer correctement le multilinguisme il faut un SGBDR qui supporte correctement les collations et à ce stade il n'y en as pas 36. Seul SQL Server et IBM DB2 permettent de traiter correctement toutes les opération COLLATE à ce jour.... Même Oracle est très en retard venant en fin de comprendre dans la version 12 l'intérêt de la gestion des collations...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    décembre 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2008
    Messages : 87
    Points : 65
    Points
    65

    Par défaut

    Merci pour vos retours.
    Je vais voir comment intégrer cela à mon projet.

  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    3 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 3 505
    Points : 5 806
    Points
    5 806
    Billets dans le blog
    1

    Par défaut

    SQL Server supportant depuis les dernières versions JSON, est-ce possible d'utiliser ce type plutôt que XML ?

    En effet, cette syntaxe est à la fois plus succinte et plus lisible, mais aussi et surtout peut être utilisée "telle quelle" pour produire des objets côté applicatif.

    Quel serait l'équivalent du XSD pour une colonne JSON ? On peut indiquer une classe JS comme modèle ?
    On ne jouit bien que de ce qu’on partage.

  8. #8
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 906
    Points : 44 220
    Points
    44 220

    Par défaut

    Oui et NON !

    JSON n'est pas un type de données contrairement à XML. JSON repose sur du texte.
    Ce qui implique différentes choses, prenant l'exemple de SQL Server (mais même chose dans Oracle) :
    1) pas de typage fort (une colonne XML peut être contretypée par une collection de schéma XML)
    2) pas d'indexation possible (une colonne XML peut être doté de 1 à 4 types d'index suivant les besoins)
    3) des méthodes de manipulation qui peuvent utiliser les index et le parallélisme, pour l'accès aux composantes du XML (nœuds, éléments, attributs, balises…)

    Il va s'écouler beaucoup de temps avant le jour ou le JSON ne devienne efficace, c'est à dire que les pôles de R&D des grand éditeurs ne découvrent les moyens de résoudre ces problèmes de performance…
    Je crains hélas que les effets de mode ne tournent les développeurs un peu trop vite vers le JSON sans en mesurer pleinement les conséquences….

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  9. #9
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    3 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 3 505
    Points : 5 806
    Points
    5 806
    Billets dans le blog
    1

    Par défaut

    C'est surprenant cette différence entre JSON et XML.
    Car tout ce que permet de faire XML peut être fait en JSON, au détail près du schéma (qui peut avantageusement être remplacé par une définition de classe pour le JSON).

    J'imaginais donc naïvement que JSON = XML au niveau du moteur de stockage/requête, mais que seule la représentation changeait (et le langage d'interrogation).
    On ne jouit bien que de ce qu’on partage.

  10. #10
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 18 906
    Points : 44 220
    Points
    44 220

    Par défaut

    Pour information en ce qui concerne l'indexation, la méthode la plus efficace concerne les valeurs scalaire de type unipoint comme nombre, date ou chaine (binaire ou caractères), tout simplement parce qu'il suffit d'un tri de ces valeurs et une méthode dichotomique pour y accéder efficacement.
    Dès que l'on a affaire avec autre chose qu'une collections de "points" pour lesquels il existe une fonction de classement, il faut trouver, et l'organisation apte à créer un ordonnancement et la méthode de recherche dans l'organisation.
    Par exemple pour le spatial (des données à deux points en X/Y) l'organisation est un pavage (en anglais tesselation) et la méthode d'accès peut être un QuadTree (solution adopté par PostgreSQL) par exemple.
    Pour ce qui concerne le XML, les éditeurs (IBM, Oracle, MS SQL Server) créent, et leurs organisations qui leurs sont propres, et les méthodes d'accès qu'ils ne peuvent breveter, mais dont ils conservent jalousement le secret.
    C'est pourquoi PostgreSQL ne sait pas du tout indexer le XML et recoure à un artifice plus que limite pour indexer un p'tit bout du XML, via une fonction qui expose un élément littéral extrait du XML. Autrement dit, rien du tout….

    Donc, je pense que la similitude apparente entre les deux formes (XML et JSON) dont l'organisation diffère, nécessite hélas de nouvelles investigations en R&D pour trouver un moyen d'accès efficace et l'organisation qui va avec et sera propre au JSON…. Mais peut être qu'entre temps, nous aurons eu une nouvelle mode et donc une nouvelle forme… ou bien une ancienne comme SGML !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

Discussions similaires

  1. Langues étrangères avec IE6 - page blanche
    Par NET_Nicolas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/05/2011, 15h46
  2. Réponses: 1
    Dernier message: 12/08/2008, 11h34
  3. Java - éditeur de texte en langue étrangère
    Par azad_892000 dans le forum Général Java
    Réponses: 6
    Dernier message: 14/03/2007, 11h26
  4. [CR] paramètrer une langue étrangère
    Par jonmarion dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 01/06/2006, 10h58

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