Thanks for joining me on my talk on end-to-end internationalization. I'm Luke Ersman. I'm one of the co-founders and software engineers at Gazelle. Gazelle is a SaaS company focused on automating business processes for piano technicians. We handle things like scheduling, invoicing, sending automated reminders, all tailored specifically to the piano service industry.
Now for some technical context, we have a React web front end and a React native mobile app that uses Expo. Our back end is a Rails app that provides a GraphQL to these interfaces and we share a lot of code between the web UI and the mobile app, including all of our translated strings. We market our product to piano technicians around the world and we're currently in over 30 countries.
Now early on, one of the technical problems that we ran into was that we needed to fully internationalize our product to serve this global market. This seems like something that would be pretty common, but I was surprised to find how little help there was out there for this. Lots of people have done little bits and pieces of this, but I couldn't find much help for fully internationalizing the app front to back, including all kinds of things, not just translating the strings. The first thing people think of when they think of internationalizing is, you know, translating strings, and this is an important part of it, but it's not the only thing that you need to consider. So in today's talk, I'm going to walk you through how to internationalize a React app from front to end. We're going to cover all aspects, including how to code up the app to handle translated strings, how to localize currency, number, and date formatting, how to extract those strings into something that a translator can use, how to find and manage translators, and finally, how to take those translated strings from the translators back and inject them back into your app.
Now to demonstrate this today, I've created this very simple demo app. This is a shopping list management system where you can type in some items. Here, let me type in bacon for $4.50, and let's say we need to get some lettuce for $1.25, and let's get some tomatoes for $3. Okay. Now when we're out shopping, we can mark some of these items as completed, and you see it shows us the date that we marked it as complete. Now obviously, this is a contrived example. It's not terribly useful, but I did this because it shows all the different components of internationalizing and localizing your app. We have text strings, we have numbers, we have dates, all these things. So in this example, up here is my localization settings. I can change the language to French, I can change the currency to, let's say, where it's in the euro. I can change the location of the currency symbol to be the end — some locales format it that way. I can change the date format, I can change the number format, and you can see all this stuff is instantly localized. Okay, I'm going to change this back to English, so I can actually read it, because I actually don't speak French. Okay, so let me show you — let's take a peek behind the curtain and see how this actually is all coded up. Let me load up my editor here. I use JetBrains as my code editor.
Comments