Dropdowns Translation » History » Version 15

ddurieux, 10/18/2010 09:21 AM

1 1 ddurieux
h1. Traductiondropdowns
2 1 ddurieux
3 1 ddurieux
Depuis la 0.78, les intitulés sont tous des objets.
4 1 ddurieux
5 1 ddurieux
Pour pouvoir gérer les traductions de ces champs, je propose un onglet pour les traduire : 
6 1 ddurieux
7 1 ddurieux
8 15 ddurieux
h2. Une table glpi_dropdowns_lang : 
9 1 ddurieux
10 1 ddurieux
<pre>
11 1 ddurieux
CREATE TABLE `glpi_dropdowns_lang` (
12 1 ddurieux
   `id` int(11) NOT NULL AUTO_INCREMENT,
13 4 ddurieux
   `items_id` int(11) NOT NULL DEFAULT '0',
14 1 ddurieux
   `itemtype` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
15 1 ddurieux
   `field` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
16 1 ddurieux
   `lang` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
17 1 ddurieux
   `traduction` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
18 1 ddurieux
   PRIMARY KEY (`id`)
19 1 ddurieux
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
20 1 ddurieux
</pre>
21 1 ddurieux
22 1 ddurieux
avec un exemple : 
23 1 ddurieux
24 1 ddurieux
<pre>
25 1 ddurieux
INSERT INTO `glpi_dropdowns_lang` 
26 4 ddurieux
(`id`, `items_id`, `itemtype`, `field`, `lang`, `traduction`) VALUES
27 4 ddurieux
(1, 10, 'ComputerType', 'name', 'fr_FR', 'Portable');
28 1 ddurieux
</pre>
29 1 ddurieux
30 1 ddurieux
Là, on traduit le champ name de glpi_computertypes qui est Laptop
31 1 ddurieux
32 1 ddurieux
33 15 ddurieux
h2. Ajout d'une option d'activation
34 15 ddurieux
35 15 ddurieux
* Dans l'interface, dans le menu _Accueil  > Configuration >  Générale > Configuration générale_
36 15 ddurieux
Activation des traductions d'intitulés : oui/non (avec le non par défaut)
37 15 ddurieux
38 15 ddurieux
* Ajout d'un champs dans la table "glpi_configs"
39 15 ddurieux
<pre>
40 15 ddurieux
`dropdown_lang` tinyint(1) NOT NULL DEFAULT '0',
41 15 ddurieux
</pre>
42 15 ddurieux
43 15 ddurieux
44 2 ddurieux
Donc : 
45 1 ddurieux
Les champs des tables intitulés serait aurait une valeur definie par l'utilisateur (par exemple tous les champs en anglais) et on gère la traduction pour chacun de ces champs en base MySQL. c'est la référence absolue (pour les règles / dictionnaires par exemple) ou si la traduction n'existe pas en russe, il affiche cette valeur.
46 1 ddurieux
47 1 ddurieux
Un onglet "traduction" permettra de traduire ces champs dans la/les langues que l'on souhaite.
48 1 ddurieux
49 15 ddurieux
Lors de l'affichage de ces champs, on irait chercher les champs dans la langue de l'utilisateur si l'option est activés dans la configuration.
50 15 ddurieux
51 15 ddurieux
52 15 ddurieux
53 1 ddurieux
54 1 ddurieux
MoYo : je ne comprend pas tout. C'est pour traduire le contenu d'un dropdown ? Mais tu n'as aucune référence dans ta table de l'id de l'élément. Quel intérêt du champ name ? Comment tu fais pour les dropdowns hierarchique pour recontruire l'arborescence ?
55 4 ddurieux
56 4 ddurieux
David : oups j'ai oublié le items_id 
57 5 moyo
58 5 moyo
MoYo : après sur le fond je pense que c'est vraiment une usine à gaz pour un besoin vraiment minime... 
59 6 ddurieux
60 7 moyo
David : le besoin est requis pour les societe multilangue (utilisation de GLPI dans plusieurs pays (c'est la multi-entité qui veut ca :p)*
61 7 moyo
62 7 moyo
MoYo : c'est une discussion qui a déjà eut lieu un certain nombre de fois. Une société multi-entité / multi-langue défini une langue de travail. C'est vrai pour les grands groupes par exemple. Ils ne gèrent pas plusieurs langues. Il n'y a que l'union européenne pour galérer avec des services de traductions démentiels...
63 8 ddurieux
64 8 ddurieux
David : donc tu penses que ca ne vaut pas le coup de coder ça dans le coeur (complexité / besoin)?
65 9 moyo
66 9 moyo
MoYo : c'est ce qui est ressortir des discussions la dernière fois que cette problématique a été abordée. A voir ce qu'en pense les autres.
67 10 walid
68 10 walid
Walid : le besoin existe effectivement. J'ai peur que ça fasse une grosse usine à gaz pour traiter 1% des utilisateurs...
69 11 walid
  * il te faut une option pour dire si tu actives ou pas la gestion multilingue des dropdowns, car ça va être consommateurs en requêtes en base
70 11 walid
  * par défaut l'option devrait-être désactivée
71 12 ddurieux
72 12 ddurieux
David : Ca me semble une bonne solution (options et désactivé par defaut). De toute façon pour gérer ca, on est obligé de faire un patch coeur, il n'est pas possible de faire un plugin pour gérer ça.