Dropdowns Translation » History » Version 18

moyo, 10/18/2010 09:37 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 16 moyo
MoYo : Comment tu fais pour les dropdowns hierarchique pour recontruire l'arborescence ?
34 16 moyo
35 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é)
36 17 ddurieux
37 18 moyo
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 ?
38 18 moyo
39 16 moyo
40 15 ddurieux
h2. Ajout d'une option d'activation
41 15 ddurieux
42 15 ddurieux
* Dans l'interface, dans le menu _Accueil  > Configuration >  Générale > Configuration générale_
43 15 ddurieux
Activation des traductions d'intitulés : oui/non (avec le non par défaut)
44 15 ddurieux
45 15 ddurieux
* Ajout d'un champs dans la table "glpi_configs"
46 15 ddurieux
<pre>
47 15 ddurieux
`dropdown_lang` tinyint(1) NOT NULL DEFAULT '0',
48 15 ddurieux
</pre>
49 15 ddurieux
50 15 ddurieux
51 2 ddurieux
Donc : 
52 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.
53 1 ddurieux
54 11 walid
Un onglet "traduction" permettra de traduire ces champs dans la/les langues que l'on souhaite.
55 12 ddurieux
56 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.