Issue type: zmiana nazwy lub tłumaczenie na inny język nie jest widoczne w projektach

Parę dni temu natrafiłem na dosyć irytujący problem. Chciałem zmienić nazwę istniejącego issue jednak zmiana pomimo, iż widoczna w konfiguracji nie była widoczna w projekcie. Użytkownik zakładający zgłoszenie nadal widział stare nazwy. Podobna sytuacja miała miejsce kiedy dodawałem tłumaczenie issue na inny język. Pierwsze rozwiązanie problemu na jakie trafiłem było nieakceptowalne. Drugie już znośne.

Źródło problemu

Na wstępie w skrócie o ustawieniach językowych Jira. Dla dalszego lepszego zrozumienia problemu istotne jest odróżnienie trzech kwestii:

  • defaultowego języka aplikacji, który określa nam m.in. w jakim języku będą tworzyć się niektóre elementy konfiguracji projektów takie jak statusy, typy zgłoszeń, priorytety. Język ten możecie wybrać podczas instalacji aplikacji a potem zmienić w ustawieniach systemowych aplikacji.
  • profili językowych użytkownika, dzięki którym poszczególni użytkownicy mogą samemu wybrać w jakim języku chcą mieć interface aplikacji (do wyboru jest kilka pakietów językowych)
  • elementów konfiguracji, które mogą być przetłumaczone przez administratora aplikacji. Podczas tworzenia nowego projektu elementy jego konfiguracji generują się, tak jak wspomniałem wyżej, w języku, który został wybrany jako default dla aplikacji. Admin ma później możliwość przetłumaczenia tych elementów samemu na dowolny z języków dostępnych w aplikacji.

To trochę zakręcone więc podam przykład:

  • aplikacja ma skonfigurowany defaultowy język angielski
  • administrator tworzy projekt o nazwie FajnyProjekt
  • w tym projekcie issue types, priorities i statuses utworzą się po angielsku, ponieważ taki jest defaultowy język aplikacji
  • użytkownik UserA ustawia sobie język swojego profilu na polski
  • UserA ma elementy interface aplikacji po polsku (przyciski, menu, etc)
  • UserA wchodząc do projektu FajnyProjekt widzi issue types, priorities i statuses po angielsku
  • Żeby widzieć te elementy po polsku UserA musi poprosić administratora aplikacji, żeby ręcznie przetłumaczył je na język polski

Kwestie języków i tłumaczeń opiszę dokładniej kiedy indziej. Na tą chwilę istotne jest to, że w instancji Jira którą się opiekuję, przy instalacji jako defaultowy język aplikacji został wybrany polski. Spowodowało to, że elementy konfiguracji projektów przez długi czas były tworzone po polsku. Do tego dołożyły się jeszcze moje początkowe nieprzemyślane decyzje, kiedy samemu tworzyłem w konfiguracji elementy w języku polskim. Stwierdziłem, że skoro już są jakieś elementy po polsku to dalej jedziemy też po polsku. To był błąd i wpakowałem się na minę.

Znalazłem się w sytuacji w której część elementów była po polsku, część po angielsku. W projekcie potrafiło być pięć issue type z czego trzy po angielsku, dwa po polsku. Masakra i chaos. Szczególnie w sytuacji kiedy niektórzy użytkownicy są tylko anglojęzyczni.

Zbliżają się święta Bożego Narodzenia więc postanowiłem, że czas zacząć robić świąteczne porządki. Postanowiłem i szczerze to wszystkim polecam, że wszystkie elementy konfiguracji będą w języku angielskim. Dodatkowo zalecam ustawienie języka profilu administratora na angielski. Pierwsze przydaje się kiedy zgłaszamy problemy do supportu i prezentowane fragmenty konfiguracji są zrozumiałe dla pracownika Atlassiana a drugie przydaje się kiedy samemu staramy się wyszukać informacji w google. Serio łatwiej jest coś znaleźć kiedy nie musisz się zastawiać jak element przetłumaczony na polski nazywa się w oryginale po angielsku.

Decyzja więc została podjęta. Zmieniłem język administratora na angielski, defaultowy język aplikacji również na angielski.

Jednak wcześniej wygenerowane elementy projektów pozostały po polsku. Trzeba było je wyedytować i ręcznie zmienić ich nazwy. Na pierwszy ogień poszły issue types. I tu pojawiła się pierwsza poważna przeszkoda…

Zmiana nazwy issue type/statuses/priorities powoduje uszkodzenie filtrów i dashboardów

Jeśli w konfiguracji aplikacji zmieniłbym sobie tak po prostu nazwę issue type z Zadanie na Task to jest spora szansa, że wzbudziłbym agresję i protesty użytkowników.

Dlaczego? Każdy, kto korzysta z Jira ma możliwość tworzenia swoich własnych filtrów czy dashboardów prezentujących różne informacje. Jako user mogę sobie stworzyć dashboard w którym będę widział jakie mam zgłoszenia na sobie do zrobienia, jakie zrobiłem, jakie są zawieszone. Możliwości są ogromne. Project Managerowie, kierownicy zespołów, dyrektorzy. Każdy coś tam dla siebie skonfigurował.

Dashboardy wykorzystują filtry JQL a te z kolei korzystają z nazw elementów które mają wyświetlać. Weźmy prosty przykład JQL wyświetlającego Zadania przypisane do użytkownika:

issuetype = Zadanie and assignee = currentUser() 

Jeśli w konfiguracji aplikacji zamienię nazwę Zadanie na Task to filtr taki przestanie działać ponieważ nie będzie już istniał element o nazwie Zadanie. Niestety zmiana nazwy w konfiguracji nie skutkuje zmianą tej nazwy wszędzie w całej aplikacji. Jeśli tego typu filtrów jest dużo to będzie dużo protestów, że „przestało działać”.

W sumie mogłem zmienić nazwę a potem do wszystkich użytkowników wysłać wiadomość w stylu „Cześć, zmieniłem nazwę Zadanie na Task a teraz Wy musicie zmienić to u siebie żeby Wam znów działało”. Takie podejście jednak jakoś wydało mi się mało profesjonalne. Do tego zamierzałem zmienić nazwy wielu elementów i zmuszanie userów do ciągłego wprowadzania zmian mogłoby się dla mnie skończyć wywiezieniem na taczce. Musiałem znaleźć inne rozwiązanie.

Cóż zatem zrobić? Jira bez zewnętrznych pluginów nie oferuje żadnej sensownej funkcjonalności, która w tej sytuacji by mi się przydała.

Z pomocą przyszła mi apka Power Admin, którą poznałem na ostatniej konferencji Więcej niż Jira. Moją relację z tej konferencji znajdziecie tutaj.

Power Admin na razie jest darmowy (zmieni się to kiedy dobije do wersji 3.0.0) i pozwala między innymi na zmianę nazwy elementu z jednoczesnym poprawieniem wszystkich miejsc gdzie ta nazwa występuje. Zauważyłem, że jedyne miejsce, które pomija to JQLw queues dla Jira Service Desk.

Obsługa po zainstalowaniu jest trywialna.

W poniższym przykładzie zmieniam Podzadanie na Sub-task.

Krok 1:

Po zalogowaniu na konto administratora, kliknąłem w lewym górnym rogu ikonę Administration a następnie wybrałem z menu Configuration Manager (to menu jest dodawane po zainstalowaniu apki):

Krok 2:

Z rozwijanego menu wybrałem element, który mnie interesuje – Issue Type. W polu wyszukiwania wpisałem nazwę poszukiwanego Issue Type:

Power Admin wyświetlił wszystkie elementy pasujące do wyszukiwania. W tym przypadku jest tylko jeden:

Krok 3:

Kliknąłem Podzadanie i zostałem przeniesiony widoku Usage Summary gdzie widzę wszystkie miejsca wykorzystania Podzadania.

Krok 4:

Zmiana nazwy Podzadanie na Sub-task wymaga najechania kursorem myszy na nazwę Podzadanie i jej wyedytowanie poprzez kliknięcie na ikonie ołówka:

I nazwa zmieniona. Co ważne zmiana dotyczyć będzie także prywatnych elementów do których nawet jako administrator nie mamy dostępu z poziomu GUI aplikacji.

Okazało się jednak, że to jednak nie koniec bo w tym miejscu o zgrozo objawił się kolejny problem. Bug.

Zmiana nazwy oraz tłumaczenie issue type nie jest widoczne dla użytkowników

Tym razem w przykładzie używam pary Zadanie – Task.

Kiedy zmieniłem nazwę na nową okazało się niestety, że widać ją było tylko w Administration > Issue types:

Sprawdziłem jak wygląda sytuacja w Issue type scheme (tutaj przykładowym projektem jest Software Scrum Test i issue scheme o nazwie SOFST: issue type scheme) zobaczyłem, że na samej górze mam starą nazwę Zadanie:

Dokładnie taka sama sytuacja była z punktu widzenia użytkownika chcącego założyć nowe zgłoszenie w projekcie SOFST. Na liście dostępnych zgłoszeń miał do wyboru Zadanie zamiast Task:

To samo było w wielu widokach. Tak naprawdę jedynym miejscem, które znalazłem gdzie zmiana nazwy była widoczna było Project Settings > Summary w obszarze Issue types:

OK. I jak sobie z tym poradzić? Rozwiązania znalazłem dwa.

Rozwiązanie 1:

Restart instancji 🙂 Urocze i równie nieakceptowalne toteż nie będę się rozwodził nad bezsensem takiego działania.

Rozwiązanie 2:

Całkiem znośne i bardzo proste. Wybrałem Administration > Issues > Issue type schemes. Przy dowolnym Issue type scheme gdzie występuje Zadanie kliknąłem z lewej strony Edit:

A następnie w lewym oknie drag and drop przesunąłem Zadanie góra/dół i na dole kliknąłem Save.

To wystarczyło żeby tłumaczenie pojawiło się wszędzie w aplikacji:

Na workaround powyższego problemu nie wpadłem sam. W support Atlassiana jest otwarty od lutego 2017 roku (!) ticket opisujący problem: https://jira.atlassian.com/browse/JRASERVER-64106

Jeszcze słowo jakiej wersji dotyczy problem. Ja trafiłem na niego w Jira Server w wersjach 8.2.2 i 8.2.3. Komentarze pod zgłoszeniem wskazują, że występuje także w wielu innych.

Jeśli znacie jakiś inny sposób na zmianę nazwy issue tak żeby poprawiły się wszystkie filtry i dashboardy (może bez użycia jakiejkolwiek apki?) to dajcie znać.

Nauczka

  1. Przy instalacji aplikacji zawsze wybieraj defaultowy język angielski.
  2. Tworząc nowe elementy w konfiguracji zawsze używaj języka angielskiego, a dopiero potem jeśli jest taka opcja tłumacz je na inne języki.


Skomentuj:

Twój adres email nie zostanie opublikowany

Site Footer