Supporting over 50 languages in our public holidays API was a huge milestone for Festivo. Internationalization (i18n) is more than just translation—it’s about making sure every user, no matter where they are, can access accurate, culturally relevant information.
The Challenge
Holidays are deeply cultural, and their names, descriptions, and even dates can vary by language and region. We needed a system that could:
- Store and serve holiday names in multiple languages
- Handle right-to-left scripts and special characters
- Allow for easy updates as new translations become available
Our Approach
We built a flexible data model that links each holiday to a set of translations, using ISO language codes. Our API lets you specify a language parameter, so you can get results in your user’s preferred language:
curl "https://api.getfestivo.com/v3/public-holidays/list?country=FR&year=2024&language=fr"
We also invested in a robust translation workflow, combining professional translators with community contributions and automated checks for consistency.
Lessons Learned
- Context is key: Literal translations often miss cultural nuances. We worked closely with native speakers to ensure accuracy.
- Testing matters: We built automated tests to catch encoding issues and layout bugs for RTL languages.
- Continuous improvement: Language evolves, so we made it easy to update translations without downtime.
We’re proud to make Festivo accessible to users around the world, and we’re always looking to add more languages. If you’d like to contribute, get in touch!