Dropdowns Translation » History » Version 19

ddurieux, 10/18/2010 09:44 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 19 ddurieux
   `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
18 19 ddurieux
   `completename` text COLLATE utf8_unicode_ci,
19 19 ddurieux
   `comment` text COLLATE utf8_unicode_ci,
20 1 ddurieux
   PRIMARY KEY (`id`)
21 1 ddurieux
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
22 1 ddurieux
</pre>
23 1 ddurieux
24 1 ddurieux
avec un exemple : 
25 1 ddurieux
26 1 ddurieux
<pre>
27 1 ddurieux
INSERT INTO `glpi_dropdowns_lang` 
28 4 ddurieux
(`id`, `items_id`, `itemtype`, `field`, `lang`, `traduction`) VALUES
29 4 ddurieux
(1, 10, 'ComputerType', 'name', 'fr_FR', 'Portable');
30 1 ddurieux
</pre>
31 1 ddurieux
32 1 ddurieux
Là, on traduit le champ name de glpi_computertypes qui est Laptop
33 1 ddurieux
34 1 ddurieux
35 16 moyo
MoYo : Comment tu fais pour les dropdowns hierarchique pour recontruire l'arborescence ?
36 16 moyo
37 17 ddurieux
David : Chaque éléments de la dropdown hiérarchique est un objet, donc on aura un onglet de traduction pour chacun. Il faudra que je modifie les fonctions de dropdowns pour aller chercher les traductions (s'il y en a) lorsque l'option de traduction est activée dans la configuration. Si un champs n'est pas traduit, on prendra la valeur par défaut (c'est à dire celle comme aujourd'hui on a dans la table de l'intitulé)
38 17 ddurieux
39 1 ddurieux
MoYo : ma question porte sur la gestion du completename qui est précalculé pour les dropdowns hierarchiques. La il faudrait le recalculer à chaque fois si besoin ?
40 19 ddurieux
41 19 ddurieux
David : Ah oui en effet, le plus logique serait de le recalculer quand on ajoute/modifie une langue et de rajouter un champs "completename" dans la table `glpi_dropdowns_lang` correspondant à sa langue
42 19 ddurieux
43 18 moyo
44 16 moyo
45 15 ddurieux
h2. Ajout d'une option d'activation
46 15 ddurieux
47 15 ddurieux
* Dans l'interface, dans le menu _Accueil  > Configuration >  Générale > Configuration générale_
48 15 ddurieux
Activation des traductions d'intitulés : oui/non (avec le non par défaut)
49 15 ddurieux
50 15 ddurieux
* Ajout d'un champs dans la table "glpi_configs"
51 15 ddurieux
<pre>
52 15 ddurieux
`dropdown_lang` tinyint(1) NOT NULL DEFAULT '0',
53 15 ddurieux
</pre>
54 15 ddurieux
55 15 ddurieux
56 2 ddurieux
Donc : 
57 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.
58 1 ddurieux
59 11 walid
Un onglet "traduction" permettra de traduire ces champs dans la/les langues que l'on souhaite.
60 12 ddurieux
61 12 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.