Tableau multi-language and translation techniques for seamless localisation

Eski's data stories
2 min readApr 5, 2022


I help companies build products with Tableau’s Visual Analytics widgets embedded and many of my clients operate at a global scale, so they need to serve content in multiple languages.

This image has nothing to do with this post, I just like it 😄 It’s from the 100th Monkey Multi-Language by Chris Philpott, check it out.

The idea of content localization in Tableau is far from trivial as there are quite a few elements to consider:

  • Data points
  • Field captions
  • Dates & number formats
  • Any free text around the dashboards
  • the GUI elements (e.g. embedded object toolbar text and captions) → not covered in this post!
  • How dynamic the solution needs to be?
  • Is templating needed, can I manage multiple content versions?
  • and more…

I’ve recently delivered a workshop with my talented colleague Tim Payne on the very same topic. We’ve covered a number of techniques that could be utilized as building blocks for addressing the specific requeirements of various customers.

You can watch the session recording here (apologies for the less than average video quality, I do hope it’s still useful to some of you :)

If you did watch the video, note that we’ve presented just a few of the many possible solutions out there.

Some of the ones we’ve covered are discussed in this whitepaper. Tim’s tokenization (xml hacking) idea is inpired by this blog post. He has even suggested that CMT tool could be used to automate some text and field label replacements. My idea on using Analytics Extensions API to translate data points in realtime (e.g. with Python, R, Matlab, etc) can be replaced by a database function that does the same thing from the back end (e.g. when tableau issues a query, one of the fields coming from the db could be powered by a function that quickly translate things for us, rather than letting the BI platform and/or Tabpy to do it or even a google sheet leveraging the googletranslate( ) function (if you have a very simple dataset).

The sky is the limit really. The main takeaway is: Try to keep it simple! Ask yourself:

  • Do you really need multiple languages?
  • If so, can you go for a simple hard coded solution or do you need a fully localized approach with templating and xml hacking?
  • This will certainly look amazing for the end user, but the more sophistication you need, chances are the more of a Frankenstein you might need to maintain.

I hope this post was helpful. Please do share your experience and solutions in the comments section.