Dropdowns Translation » History » Version 19

« Previous - Version 19/33 (diff) - Next » - Current version
ddurieux, 10/18/2010 09:44 AM


Traductiondropdowns

Depuis la 0.78, les intitulés sont tous des objets.

Pour pouvoir gérer les traductions de ces champs, je propose un onglet pour les traduire :

Une table glpi_dropdowns_lang :

CREATE TABLE `glpi_dropdowns_lang` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `items_id` int(11) NOT NULL DEFAULT '0',
   `itemtype` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
   `field` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
   `lang` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
   `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
   `completename` text COLLATE utf8_unicode_ci,
   `comment` text COLLATE utf8_unicode_ci,
   PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

avec un exemple :

INSERT INTO `glpi_dropdowns_lang` 
(`id`, `items_id`, `itemtype`, `field`, `lang`, `traduction`) VALUES
(1, 10, 'ComputerType', 'name', 'fr_FR', 'Portable');

Là, on traduit le champ name de glpi_computertypes qui est Laptop

MoYo : Comment tu fais pour les dropdowns hierarchique pour recontruire l'arborescence ?

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é)

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 ?

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

Ajout d'une option d'activation

  • Dans l'interface, dans le menu Accueil > Configuration > Générale > Configuration générale
    Activation des traductions d'intitulés : oui/non (avec le non par défaut)
  • Ajout d'un champs dans la table "glpi_configs"
    `dropdown_lang` tinyint(1) NOT NULL DEFAULT '0',
    

Donc :
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.

Un onglet "traduction" permettra de traduire ces champs dans la/les langues que l'on souhaite.

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.