Problème traduction fr sur le task planning board (Agile)

valerie_gallot
Giga Expert

Bonjour,

Est-ce que certains d'entre vous utilisent le module Agile ?

Avez-vous rencontré le problème qui existe sur le task planning board ?

Le champ "Test Result" des Scrum Tasks affiche 3 fois la même valeur (Réussite, Réussite, Réussite) quand on l'utilise depuis le task planning board...

Par contre ça marche bien en anglais...

Toute idée de contournement est la bienvenue.

(évidemment, j'ai vérifié dnas le dictionnaire, c'est ok, et depuis le form, ça marche bien aussi)

1 ACCEPTED SOLUTION

s_lefebvre
Kilo Expert

Bonjour à tous,

 

Après moultes recherches et débogages (merci hichem pour avoir fait le début du debug!), il y a bien un script include qui génère ces choix et que nous pouvons modifier pour corriger cette anomalie.

 

Le script include en question est ScrumAjaxChoiceDetailsProvider. La fonction getChoiceData va récupérer les choix en anglais et si la langue est différente de l'anglais, alors il va récupérer le libellé dans l'autre langue.

L'anomalie vient du fait qu'il ne récupère pas le libellé en fonction de la valeur déjà trouvée, ce qui fait qu'il va toujours récupérer le premier libellé trouvé.

Pour corriger cette anomalie, il suffit de rajouter cette ligne avant le lancement de la query en ligne 24 : 

gr3.addQuery("value", value);

Lien : https://{votre_instance}.service-now.com/nav_to.do?uri=sys_script_include.do?sys_id=f9d5f70eff311000dadaefff0efe1e3b

 

 

En Kingston, le script a été remanié et utilise l'objet "GlideSysChoice".

var ScrumAjaxChoiceDetailsProvider = Class.create();
ScrumAjaxChoiceDetailsProvider.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   getChoiceData: function() {
      var userLanguage = this.getParameter('sysparm_user_language');
      var name = this.getParameter('sysparm_table');
      var element = this.getParameter('sysparm_column');
      var result = "";

      //Get the sys_choice entries
	  var choices = new GlideSysChoice(name, element);
	  var gr = choices.getChoices();
      while (gr.next()){
         var label = gr["label"];
         var value = gr["value"];
         var item = this.newItem("choice");
         item.setAttribute('label', label);
         item.setAttribute('value', value);
      }
   },
	
	/**
	 * Prevent public access to this processor
	 */
	isPublic: function() {
		return false;
	}
});

View solution in original post

15 REPLIES 15

Hichem
Mega Expert

Tout à fait pbo, les libellés en français sont bien corrects.
Le problème ne vient pas des libellés à proprement parler, mais du script qui doit chargé les valeurs dans la liste de la popup.

Pourquoi ça fonctionne en EN et pas en FR ?

En fait le script gère la récupération des libellés et valeurs de l'anglais, indépendamment des autres langues et c'est dans la boucle qui récupère les libellés des autres langues qu'il doit y'avoir une ligne de code erronée..

 

J'ai activé une autre langue (espagnol) et même résultat qu'en FR, ce qui appuie cette théorie

 

s_lefebvre
Kilo Expert

Bonjour à tous,

 

Après moultes recherches et débogages (merci hichem pour avoir fait le début du debug!), il y a bien un script include qui génère ces choix et que nous pouvons modifier pour corriger cette anomalie.

 

Le script include en question est ScrumAjaxChoiceDetailsProvider. La fonction getChoiceData va récupérer les choix en anglais et si la langue est différente de l'anglais, alors il va récupérer le libellé dans l'autre langue.

L'anomalie vient du fait qu'il ne récupère pas le libellé en fonction de la valeur déjà trouvée, ce qui fait qu'il va toujours récupérer le premier libellé trouvé.

Pour corriger cette anomalie, il suffit de rajouter cette ligne avant le lancement de la query en ligne 24 : 

gr3.addQuery("value", value);

Lien : https://{votre_instance}.service-now.com/nav_to.do?uri=sys_script_include.do?sys_id=f9d5f70eff311000dadaefff0efe1e3b

 

 

En Kingston, le script a été remanié et utilise l'objet "GlideSysChoice".

var ScrumAjaxChoiceDetailsProvider = Class.create();
ScrumAjaxChoiceDetailsProvider.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   getChoiceData: function() {
      var userLanguage = this.getParameter('sysparm_user_language');
      var name = this.getParameter('sysparm_table');
      var element = this.getParameter('sysparm_column');
      var result = "";

      //Get the sys_choice entries
	  var choices = new GlideSysChoice(name, element);
	  var gr = choices.getChoices();
      while (gr.next()){
         var label = gr["label"];
         var value = gr["value"];
         var item = this.newItem("choice");
         item.setAttribute('label', label);
         item.setAttribute('value', value);
      }
   },
	
	/**
	 * Prevent public access to this processor
	 */
	isPublic: function() {
		return false;
	}
});

Le correctif fonctionne parfaitement sur nos instances (Jakarta)

Merci pour le travail

Hichem
Mega Expert

Bien vu Sébastien,

C'était ce que je cherchais depuis le début 🙂
Je ne trouvais pas le lien entre les 2 scripts  ScrumAjaxTaskBoardDetailsProvider  et  ScrumAjaxTaskBoardDetailsProvider. ^^

Workaround testé et OK

 

find_real_file.png

valerie_gallot
Giga Expert

Bravo ça marche nickel ! Grand merci à tous les deux !