1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| CREATE TABLE My_Translations
( Table_Name VARCHAR(30) -- Nom de la table traduite
, Column_Name VARCHAR(30) -- Nom de la colonne traduite
, Language VARCHAR(2) -- Code de la langue
, Translated VARCHAR(250) -- Libellé traduit
)
;
CREATE VIEW My_Table_Translated
AS SELECT src.Id -- L'identifiant de la table
, COALESCE(tr1.Translation, src.Lib1) AS Lib1 -- Le premier libellé dans la langue de l'utilisateur
, COALESCE(tr2.Translation, src.Lib2) AS Lib2 -- Le second libellé dans la langue de l'utilisateur
, src.Other_Values -- Les autres colonnes de la table
FROM My_Users_Language usr
CROSS JOIN
My_Table src
LEFT JOIN
My_Translations tr1 -- Les libellés de la colonne My_Table.Lib1
ON src.Id = tr1.Id
AND tr1.Table_Name = 'My_Table'
AND tr1.Column_Name = 'Lib1'
LEFT JOIN
My_Translations tr2 -- Les libellés de la colonne My_Table.Lib2
ON src.Id = tr2.Id
AND tr2.Table_Name = 'My_Table'
AND tr2.Column_Name = 'Lib2'
WHERE usr.User_Name = CURRENT_USER -- Identifier la langue de l'utilisateur
AND tr1.Language = usr.Language
AND tr2.Language = usr.Language
; |
Partager