IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Développement SQL Server Discussion :

Traduction d'une base de données en plusieurs langues


Sujet :

Développement SQL Server

  1. #1
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut Traduction d'une base de données en plusieurs langues
    Bonjour,

    Je continue le développement de ma base de donnée. J'ai réussi à faire ma table de clef, mais maintenant on me demande autre chose :

    Faire en sorte que l'appli sur laquelle je travaille puisse être traduite en plusieurs langue. Quand je parle de langue j'entends (anglais, 'espagnol etc....).

    Mon chef me dis de faire une table avec
    1) une clef primaire numérique
    2) un identifiant langue genre code ISO
    3) un champ varchar

    Dans ce Varchar seraient contenues toutes les données des tables de références (genre Monsieur, madame, mister, senor, madam, janvier, january, médecin, doctor etc....)

    Perso cela me titille un peu. Je me disais que cela serait mieux de faire des champs supplémentaires dans chacune des tables avec les traductions Non?
    genre Civil_FR, Civil_EN etc....

    En plus, avec leur idée on se retrouve avec une colonne contenant des infos totalement hétégorgènes (des dates, des civilités, des noms professions, des noms produits, etc....)


    Quelle est votre idée là dessus ??

    Merci de vos conseils.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Je me disais que cela serait mieux de faire des champs supplémentaires dans chacune des tables avec les traductions Non?
    Non, gardez les tables "sources" telles qu'elles sont : moins une table est large, plus vos performances seront bonnes.

    Créez plutôt :

    - une table avec toutes les langues possibles
    - une table pour chaque table "source", qui référence par contraintes de clé étrangère la clé primaire de la table "source", et la table de langues, plus les colonnes à traduire.

    Si vous n'avez pas besoin des alphabets non-Latins, alors ces dernières peuvent être en varchar (ASCII, 1 octet par caractère).
    Sinon, vous devrez passer en nvarchar (Unicode, 2 octets par caractère).

    @++

  3. #3
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Merci elsuket pour ta réponse !

    Si je comprends bien, j'ai :

    1) une table langue avec:
    - Lang_Id (clef primaire)
    - Lang_Lib --> le nom de la langue

    d'ou

    1---français
    2---espagnol

    2) une table civilité ( par exemple) avec

    - Civ_Id (clef primaire)
    - Lang_ Id (clef étrangère)
    - Civ_Lib --> la civité

    1---1---Monsieur
    2---1---Madame
    3---2---Senor
    4---2---Senorita

    etc...
    Idem pour toutes les tables de références ????


    Mais maintenant, puis faire une requete qui me donne sur deux colonnes, les civilités en français et en espagnol ??

    merci de ton aide

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Qu'est-ce qui doit avoir une traduction ?

    L'interface et/ou les données (si oui, lesquelles) ?

  5. #5
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Salut SergeJack,

    L'interface, elle n'est pas traduite. Seules les données des tables de références le sont.
    Par exemple, un des champs recueille la nationalité d'un producteur. Donc j'ai une table de référence avec tous les pays du monde. C'est ce genre de table qui doit être traduite. Comme l'est la table des civilités, une pour les métiers etc...

    Je ne sais pas si je suis assez clair en fait. le truc c'est que parfois doit apparaitre le nom d'un pays en français plus sa tradution en anglais

    merci de ton aide

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Moi j'aime bien l'idée de joomfish! à ce niveau.

    Tu fais une table genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    - TableField -
     
    ID (INT) PK
    RefTable (VARCHAR)
    Field (VARCHAR)
     
     + INDEX (RefTable, Field)
    une autre pour la langue.

    et une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    - Translation-
     
    ID (INT) PK
    LangueID (INT) FK
    TableFieldID (INT) FK
    Translation (NVARCHAR(MAX))
     
     + INDEX ( TableFieldID, LangueID  )
    Puis si tu veux connaître par exemple le status civil en roumain :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT
     CIV.ID
     , ISULL(CIV.Title, TR.Translation) AS Title
    FROM dbo.Civilite AS CIV
    CROSS JOIN dbo.Lang AS L
    CROSS JOIN dbo.TableField AS TF
    LEFT JOIN dbo.Translation AS TR ON (
     TR.TableFieldID = TF.ID
     AND
     TR.LangueID = L.ID
    )
    WHERE  L.iso = 'ro'
    AND TF.RefTable = 'Civilite'
    AND TF.Field = 'Title'
    Ce n'est pas la solution la plus rapide à l’exécution mais elle sera très rapide à mettre en place et maintenir.
    La solution la plus rapide étant une table par champs à traduire (c'est du 5NF je crois).

    Note: et avec une view faisant la liason dbo.Lang - dbo.TableField - dbo.Translation c'est en core plus simple.

  7. #7
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Ok d'accord je vois la manip.

    je te remercie. Je vais voir ce qui peux se faire avec une manip utilisant une vue.

    Encore Merci

    Bon WE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creation d'une base de donnée a plusieur colonnes
    Par slimebdx dans le forum LabVIEW
    Réponses: 2
    Dernier message: 30/03/2010, 03h06
  2. Une base de données ou plusieurs ?
    Par rvzip64 dans le forum Requêtes
    Réponses: 13
    Dernier message: 20/11/2009, 15h08
  3. Transfert d'une base de données vers plusieurs bases
    Par Focheur dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/07/2008, 23h11
  4. Traduction d'une base de données de mot-clefs
    Par is_null dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/12/2006, 13h55
  5. Réponses: 1
    Dernier message: 18/12/2006, 00h26

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