shiny.i18n shiny.i18n logo

Shiny applications internationalization made easy!

CRAN status codecov cranlogs total R-CMD-check

Using it is very simple: just prepare your translation files in one of the supported formats, read them into your app using user-friendly shiny.i18n interface and surround your expressions to translate by a translator tag. Thanks to that your app will remain neat and readable.

Actually, you can use shiny.i18n as a standalone R package - shiny app is just a perfect use-case example.

Change languages and formats easy with shiny.i18n.

How to install?

Stable version:


Development version:



See shiny.i18n in action live

You can find some basic examples in examples folder:

  1. Using i18n object with CSV translation files or JSON translation files.

  2. Live language change on the browser side or with the server function renderUI.

  3. RMarkdown translations.

  4. Example of translation data format.

  5. shiny.i18n works seamlessly with Quarto.

  6. shiny.i18n also works when used in interactive Quarto + Shiny instances. Alternatively, you can also experience a deployed version.

Translation file format

Currently shiny.i18n supports two translation formats:

Translator$new(translation_csvs_path = "...")
Translator$new(translation_json_path = "...")

shiny.i18n and rhino

shiny.i18n can be used to add live language change feature to Shiny applications built using Rhino framework. For more details, check this tutorial.

How to contribute?

If you want to contribute to this project please submit a regular PR, once you’re done with a new feature or bug fix.

Reporting a bug is also helpful - please use GitHub issues and describe your problem as detailed as possible.


Appsilon is a Posit (formerly RStudio) Full Service Certified Partner.
Learn more at

Get in touch

Check our Open Source tools.

We are hiring!