Meertalige rapporten in Power BI
Stel, je hebt een mooi Power BI rapport gefabriceerd.. in het Nederlands. Maar je wil deze eigenlijk ook in het Engels aanbieden. Of in het Duits, Spaans, of wat voor taal dan ook. Probleem?! Helemaal opnieuw beginnen?! Nee hoor đ. Moeilijk? Ook niet. Veel werk? Zoals zo vaak: dat ligt er aan.
De Translations Builder is een externe Power BI tool (net als de meer algemeen bekende en veelgebruikte externe tools DAX Studio, Tabular Editor), die jou goed kan helpen bij je vertaalslag. In dit artikel ga ik verder in op drie onderdelen van rapportvertaling en welke rol de Translation Builder daarbij kan spelen. Vervolgens zal ik ook kort stilstaan bij wat er met de Translation Builder nĂet kan. Hopelijk een goed verhaal.. En lekker kort. Voorts zal ik ingaan op waar je rekening mee moet houden voordat je aan het grote vertaalavontuur begint, om te af te sluiten met wat er voor nodig is, om er mee van start te gaan.
Wat is er mogelijk? De drie onderdelen van rapportvertaling
Het vertalen van een rapport bestaat uit drie onderdelen. Aan jou om te bepalen welke van de drie in jouw geval van toepassing zijn (mogelijk allemaal) en in welke volgorde je deze oppakt. De Translation Builder is met name gericht op de eerste twee. Bij het derde onderdeel, kĂĄn de Translation Builder behulpzaam zijn, maar kun je in mijn beleving evengoed een andere vertaaltool gebruiken.span/p>
- Het vertalen van datamodelobjecten: Tabel-, kolom en measurenamen.
Dit is waar de Translations Builder Ă©cht voor bedoeld is en ook uitstekend werkt.- Open de Translation Builder
- Kies de gewenste Secondary Language
- Klik op Generate Translations en de kolom met vertaling naar de gekozen taal wordt voor je gecreëerd.
Het vertalen van datamodelobjecten is vooral handig wanneer je kolom- en measurenamen ook Ă©Ă©n op Ă©Ă©n in velden van je rapport visual overneemt.
Maar in de praktijk worden veldnamen in visuals nog wel eens handmatig aangepast. Statische tekst in een veld van een visual is niet meer dynamisch te maken. Zorgen dat die kolom-/ veldnamen zo âspot onâ zijn, dat ze geen verandering meer behoeven, zou dan dus het devies zijn.
- Vertaling van zogenaamde ârapport labelsâ
Dat zijn stukken tekst die in een shape (onder vormstijl Ă tekst) op het rapportcanvas staan; Een rapportpaginatitel bijvoorbeeld. Wat je hiervoor in de Translations Builder doet is:- Create a Localized Labels Table
- Add Labels to Localized Labels Table
- Dan voeg je in het nieuwe dialoogvenster het rapportlabel / de rapportlabels toe die je vertaald wil hebben. (Type ze in of kopieer en plak ze vanuit een bestand waarin je alle reportlabels opslaat):
- Vervolgens kies je voor Generate Translated Localized Labels Table. Vanaf dat moment maakt de tabel met rapportlabels en de vertaling daarvan, deel uit van het datamodel.
- De statische ingevoerde tekst in de shape, kun je nu conditioneel / dynamisch maken door daar de nieuwe, vertaalde veldwaarde (Field value) te gebruiken die je nu in de Localized Labels Table tot je beschikking hebt. Ook dit werkt als een zonnetje, met de kanttekening dat je enigszins terughoudend moet zijn in het gebruik hiervan. Een handvol van deze dynamische rapport labels zal straffeloos gaan, maar worden het er tientallen, dan zal dat ten koste gaan van de performance.
Een belangrijk aandachtpunt bij het vertalen van datamodelobjecten en rapportlabels met behulp van de Translations Builder: Je ziet de vertaling nĂet terug in de Power BI Desktop. Om het resultaat te zien, publiceer je naar de Power BI Service en voeg je in de browser &language[culturename] toe aan de URL. Een culturename duidt de specifieke taal en geografische locatie (regio/ land) van de gebruiker. Culturename en-US bijvoorbeeld, identificeert een gebruiker als Engelstalig en woonachtig in de VS. In de Translation Builder zie je een overzicht van usercultures wanneer je kiest voor Add Language (Zie tweede ullet). Dus om het resultaat van de Translations Builder vertalingen te zien, vanuit het perspectief van een Engelstalige gebruiker in de VS, voeg je aan de URL dus deze string toe: &language=en-US.
- Inhoudelijke datavertaling
Dit betreft het vertalen van de waarden in de rijen van een kolom die je ook in je rapport gebruikt (bijvoorbeeld in de rijkoppen van een tabel of matrix). Dus stel dat er in het rapport een tabel staat met de verkoop van sportkleding. Hoe zorg je dan dat behalve de kolomnaam sportkleding (Dit is een datamodelobject dat gemakkelijk is te vertalen. Zie onderdeel 1), ook de waarden schoenen, broeken en shirts getoond kunnen worden in het Engels? Wat daar in ieder geval voor nodig is, is dat er in het datamodel een separate kolom (âsportswear') is, met de bijbehorende vertaling. Is die er niet, dan zul je die alsnog zelf moeten toevoegen (Power Query).
Daarbij kun je gebruik maken van de vertaalkracht van de Translations Builder, Chat GPT (lekker 2.0) of straks hopelijk, van Microsoft Co-Pilot. Hoewel je de Translations Builder in theorie wel zou kunnen gebruiken, voor inhoudelijke datavertaling; de tool is daar niet voor bedoeld, waardoor het in de praktijk naar mijn smaak omslachtig werkt. Zo heb ik in mijn proof of concept alle inhoudelijke data als localized labels opgevoerd en laten vertalen, maar uiteindelijk weer verwijderd. Ten behoeve van de overzichtelijkheid wilde ik hier alleen de âechteâ reportlabels overhouden. Daarom heb ik voor het stuk inhoudelijke datavertaling een beroep gedaan op Chat GPT. De aanpak die ik gehanteerd heb, is als volgt: - Ga in Power BI Desktop naar de tabelweergave, kopieer de kolom die je vertaald wil zien en plak deze in Excel tabblad 1 (kolom A, voor het voorbeeld). Tabblad 1, wordt je vertaalsheet.
- Plak de kolom tevens in tabblad 2 (kolom A). Tabblad 2 is je zoekmatrix.
- Verwijder dubbele rijen in tabblad 2 en kopieer de unieke waarden naar ChatGPT.
- Geef ChatGTP opdracht om deze te vertalen, kopieer het resultaat en plak deze in tabblad 2, kolom B.
- Vul kolom B tabblad 1, met de vertaling van alle waarden in kolom A. Gebruik de functie verticaal zoeken om deze eenvoudig âop te halenâ uit de zoekmatrix.
- Je vertaalsheet is nu gereed.
- Als de tabel meerdere kolommen bevat die vertaling behoeven, herhaal je dit recept voor iedere kolom. Voor het vertalen van benodigde kolommen uit andere tabellen, gebruik je een ander tabblad / vertaalsheet.
- Ga naar Power Query. Merge de oorspronkelijke tabel (Queries samenvoegen) met het vertaalsheet en breidt deze uit met de kolom met de vertaling (uitvouwen).
- Nu de tabel bestaat uit zowel een kolom in de oorspronkelijke taal, als een vertaalde kolom, kun je Power BI Field Parameters gebruiken om in het rapport te schakelen tussen beide talen. Mocht je hier nog niet in thuis zijn; ik kan vast verklappen dat het niet moeilijk is ;): Hoe werkt Field Parameter in Power BI (youtube.com) In dit scenario is het nog wel raadzaam om een kolom TaalID aan de Field Parameter toe te voegen, die je vervolgens in je slicer kunt gebruiken om van taalweergave te kunnen wisselen.
Het resultaat als je met de buttons 'NLâ en âEnâ wisselt tussen taalweergaven:
Wat kan er niet?
Als je bovenstaande missie(s) hebt volbracht, is je rapport vertaald. Bijna. Want Ă©Ă©n onderdeel wordt nĂet vertaald (en bij mijn weten is daar ook geen manier voor), namelijk de naam van de tabbladen in de Power BI Desktop, die in de Power BI Service in het linkernavigatiemenu als paginatitels worden weergeven. Toch jammer. Om dit te ondervangen kun je voor de naam van de tabbladen misschien het beste meteen een taal kiezen, die alle internationale rapportgebruikers machtig zijn? Andere suggesties zijn welkom đ
Waarmee vooraf rekening te houden?
Naast de vraag of je kunt leven met bovenstaande (naar mijn smaak overkomelijke) beperking, doe je er denk ik goed aan om voordat je begint aan rapportvertaling, stil te staan bij de factor tijd. Ben je bereid om de tijd te investeren die er voor nodig is? Vooraf, Ă©n gedurende de periode dat het rapport in gebruik is?:
- Inhoudelijke datavertaling (bullet 3 onder âde drie onderdelen van rapportvertaling), kan afhankelijk van het aantal kolommen dat vertaling behoeft, een tijdrovende klus worden, als die benodigde kolom met de vertaling van de kolomwaarden in de oorspronkelijke taal er nog niet is. Ook al hoef je er geen woordenboek voor af te stoffen en kun je terugvallen op krachtige vertaaltools; de boel zal toch kolom voor kolom vertaald moeten worden. En wat als vertaling die de machine je voorschotelt niet voldoet? Voor al die gevallen, zul je dus zelf een passende vertaling moeten vinden, waarmee de klus verder groeit in omvang.
- Als je het rapport eenmaal vertaald hebt, ben je niet voor eens en altijd klaar. Rapportvertaling is geen Ă©Ă©nmalige actie waarna je met de handen over elkaar kunt gaan zitten. Tenzij je model er nooit rapport labels, (dimensie)tabellen en - kolommen bij krijgt, en daar ook geen enkele rij meer aan wordt toegevoegd. Maar dat klinkt niet erg niet realistisch. Zodra dat wel gebeurt, zul je de Translation Builder (of een andere vertaaltool in geval van inhoudelijke datavertaling) opnieuw zijn werk moeten laten doen.
Als je in de gelukkige positie bent dat je vóórdat je aan je datamodel begint al weet dat je rapporten meertalig moeten zijn, is er nog een derde punt, van geheel andere orde, om vooraf rekening te houden en dat is de modeltaal (Opties en instellingen Ă regionale instellingen). Deze moet van meet af aan goed staan. Anders gaat die stelling uit de introductie, dat rapportvertaling geen probleem is en je heus niet opnieuw hoeft te beginnen, niet meer op đ.
Waarom is dat zo? Dat is omdat wanneer jouw datamodel met Nederlandse input (tabelnamen en -inhoud, kolomnamen en -inhoud, measures etc.) door de modeltaalinstelling wordt âgelabeldâ als bijvoorbeeld Engels, de vertaalmachine dan natuurlijk denkt, de input is al Engels, dus vertalen van Engels naar Engels is helemaal geen optie. Sterker nog, dat zogenaamd Engelse woord (dat de facto dus Nederlands is) herken ik helemaal niet als Engels, dus het vertalen van een voor mij onbekend woord naar, zeg maar wat, Duits of Spaans, gaat óók niet.
Dus wat als je, zoals in mijn geval, pas nadat het model met modeltaalinstelling X (Engels) en feitelijke data in Y (Nederlands) al gebouwd is, notie krijgt van de wens om deze meertalig beschikbaar te krijgen? Dan wijzig je de modeltaal toch achteraf even? Klinkt snugger, maar helaas. Dat is zinloos, want eenmaal gekozen, blijft deze onder water roestvast ingebakken. Je zult met een blanco Power BI desktopfile, met de juiste taalinstelling moeten beginnen en moeten zorgen dat het datamodel dĂĄĂĄr in terecht komt (De ALM toolkit kan daarbij ondersteunen, maar het blijft een klus).
Wat is er nodig
Als jij, ook na bovenstaande in overweging te hebben genomen, om bent en denkt, âik ga voor het meertalige rapport', dan heb je het volgende nodig:
- Allereerst zul je de Translation Builder natuurlijk moeten installeren. Dat vond ik zelf het lastigste gedeelte, maar dat kwam omdat ik de Installation Guide niet goed had gelezen đ Dus Ă©Ă©n tip: doe dat wel. De download vind je hier: https://github.com/PowerBiDevCamp/TranslationsBuilder.git
De installation guide hier: TranslationsBuilder/Docs/Installation Guide.md at main · PowerBiDevCamp/TranslationsBuilder · GitHub - Een key om vanuit de desktop via een API tegen de vertaalmachine van de Translations Builder aan te mogen praten: TranslationsBuilder/Docs/Obtaining a Key for the Azure Translator Service.md at main · PowerBiDevCamp/TranslationsBuilder · GitHub
Anders ontbreekt de sectie Machine Translations, met de toverknop âGenerate translationsâ. - Een Power BI Premium licentie
Al met al is het maken van een meertalig rapport in mijn beleving een goed uitvoerbare, leuke klus, die voor gebruikers die de oorspronkelijke rapporttaal niet machtig zijn, natuurlijk van grote toegevoegde waarde is. Je moet alleen bereid zijn er de nodige tijd in te steken en accepteren dat het wat beheer en onderhoud zal vergen. Hoe denk jij er over?