Software internationalization opens doors to new markets and gives your users a product that “speaks their language”—both literally and figuratively.
Imagine you’ve built this great app or software, and people all over the world want to use it. Exciting, isn’t it?
To achieve global success, you’d need to make sure that your product feels natural and intuitive for users from Tokyo to Toronto, and adapts seamlessly to different markets and specific locale.
That’s exactly what good software internationalization does.
🧠 Good to know
Before we dive in, let’s make sure we know the key terms.
Translation, done by a translator or machine, swaps one language for another, keeping the same meaning (what is being said). Localization goes deeper, including the cultural nuances and norms (how it’s being said).In this article, we’ll be talking about software internationalization, which is the technical foundation for translation and localization, done by developers.
What is software internationalization?
Software internationalization is the process of designing and building software in a way that makes it easy to adapt for various languages, regions, and cultures.
It’s your job as a developer to prepare the software to support localization—where content, interfaces, and functionality are tailored to the preferences and standards of different user groups around the world.
By ensuring proper software internationalization, you streamline future translation and localization efforts. This makes it easier to adapt your product to different countries.
Let’s take a closer look at the best practices for software localization, as well as useful tips and resources.
Software internationalization and localization
While software localization fine-tunes elements like dates, times, number formats, and cultural design cues to suit a specific audience, software internationalization prepares your codebase to handle these changes with ease.
You can think of it as laying the groundwork for localization, something that needs to be done to enable it.
Instead of hardcoding each language, software internationalization uses placeholders for text. These placeholders automatically pull in the correct translated content and format based on the user’s preferences, all without requiring any re-engineering.
Best practices for software internationalization
Every process is different, but internationalizing your software generally involves four key steps. We’ll discuss each and provide useful tips and examples to make the process easier for you.
1. Create placeholders
When building your user interface, use placeholders instead of hard codes. These placeholders link back to translated content and resource files to display the right language automatically for each user.
For example, rather than typing “Buy now” directly into a purchase button, add a placeholder that will display “Buy now” in the appropriate language based on the user’s settings. This is typically done using Unicode to ensure smooth formatting.
You may also need to add extra support for specific languages, like bidirectional text for Arabic or Hebrew, CSS styling for vertical languages, or accents and punctuation unique to each language. This allows your software to adapt to various language needs without any major changes.
💡 Pro tip
Before translating into actual languages, consider using pseudo-localization. This can be a part of quality assurance efforts. You temporarily alter the text to mimic longer character lengths and different scripts (like using accented characters). It’s a great way to spot UI issues and test the character sizes and actual number of letters that fit into different fields.
2. Enable cultural formatting
To localize your software effectively, your code needs to recognize and adapt to different regional preferences.
You should include data and components specific to each locale in your source library. This allows your software to adjust formats like calendars, writing systems, phone numbers, number formats, names, and titles–automatically.
Take time formats, for example. In the United States, a 12-hour clock is common, so 2:00 PM refers to the afternoon, while 2:00 AM means early morning. In many other countries, a 24-hour clock is standard, meaning 2:00 always refers to 2:00 AM, and 2:00 PM is written as 14:00.
❗Important note
Keep in mind that, even within the same language, formats can vary by region. For instance, Spanish dates in Spain differ from those in Latin America. Make sure your app recognizes regional codes in its settings (like “es-ES” for Spain vs. “es-MX” for Mexico).
Hreflang tags help search engines serve the correct language version of your page to users based on their location. This improves user experience and could potentially boost SEO performance. Implementing hreflang tags prevents duplicate content issues and allows language-targeted pages to share ranking signals in search results.
3. Organizing your source code
3. Organize your source code
Set up your software with separate files for each language. Start by extracting all textual content from the application and storing it outside the code. This way, you’re not hardcoding any language directly into your software.
With this structure, it’s easy to import and export translations without affecting the core code. Here are some key best practices:
- To keep things organized, use a logical structure by nesting strings, which groups related translations together
- Create a clear naming convention for each string, like “Headline” or “CTA_button,” to make it easy to identify where each piece of content is used
- Once ready, these files can be uploaded to a translation management system (TMS) like Lokalise
Here’s an example from Ruby on Rails framework:
<h1><%= t 'main.welcome' %></h1> <h2><%= t 'main.description' %></h2>
We display two headings but instead of hardcoding the text, we use a special function t
(which is an alias for translate
). This function accepts a placeholder name which called a translation key. Then, you can create translation files in YAML format and provide translations for these keys:
en: main: welcome: "Welcome to the app!" description: "We offer a wide range of services"
4. Optimize your code language
Regardless of what programming language or technology you’re using, you can internationalize your software. At Lokalise, we support all major programming languages and frameworks.
Read through our more detailed tutorials on how to internationalize with:
- Python
- VueJS framework
- Java
- Rails framework
- PHP
- Golang
- React
- Angular
- iOS and Android
- …and other examples listed in this article.
You may also be interested in learning about common localization issues developers face and how to solve them.
📚Further reading
Feeling like you’re always drowning in challenges? Discover how to solve key localization issues developers face.
7 tools for software internationalization
Software internationalization can be complex, particularly if you’re trying to add localization into the software development process. The good news is, you can begin internationalizing your application the moment you define target markets.
To be able to expand your operations globally and into new languages, you must also expand the mindset and culture of your development team. While translating content does take time, there are ways to automate the localization process and create a localization workflow that performs. Let’s take a closer look.
1. Command-line interface (CLI)
While not strictly for internationalization, CLI is a tool every developer should keep handy.
At Lokalise, we created a CLI to streamline the localization process, making it easy for developers to download files, set up projects, add team members, and more—all through simple commands instead of a web interface.
For example, with one command, you can download files in JSON format for English, French, and German, filter by specific tags like “main” and “register”, and skip any empty translations. You can also create automated scripts to fit various technologies, like Node.js, Rails, or Django, simplifying workflows across projects.
You can also create automatic scripts to use for different technologies, like Node.js, Rails, or Django.
2. Application programming interface (API)
APIs support the integration of your TMS with the rest of your tech stack. Lokalise’s API, for example, allows you to manage translation files, add contributors, back up projects, and download data automatically or semi-automatically. It’s compatible with Ruby, PHP, JavaScript, Python, Go, and Elixir.
APIs are a flexible way to make any localization workflow process easy for your team. Write code once and it works indefinitely.
3. Webhooks
Webhooks enable automatic notifications from one app to another, making it easy to keep your tech stack in sync. With Lokalise, you can set up webhooks to export translation files to another service. This way, whenever translated content gets downloaded, your other software is notified and can immediately access and use those files.
Here are a few tips for using webhooks:
- It’s important to test webhooks in a sandbox or a development environment first to ensure all files transfer correctly (you want to avoid any interruptions in production)
- Use triggers for specific events—like when translations are updated or downloaded—so files are always sent to the right place without any manual steps
- Webhooks are especially useful when your translated content needs to go live quickly, so make sure to use them for real-time updates
💡Pro tip: Webhooks and APIs can work together. For example, you can use webhooks to notify an app when translations is ready, and then an API call to retrieve and implement it.
4. In-context editing
In-context editing allows translators and team members to see exactly where and how translations will appear in the final product. This added context is invaluable for approvals and revisions, especially in larger teams, as it ensures the translated content flows naturally within various interfaces or content types.
With in-context editing, you can translate a website in different languages as you browse it, and get a live view of how translated content impacts design and layout. This makes it easier to spot and fix issues early.
5. Code repository
If you’re already using Azure Repos, GitHub, Bitbucket, and GitLab to host and manage code, integrating them with your TMS can make internationalization much smoother. With seamless integration, your code and translations can stay in sync, so updates flow smoothly between both systems.
When translation files are well-organized and formatted, it’s easy to update them directly within your repository. This is how you can keep everything aligned and simplify the maintenance process.
6. Designer tools
Lokalise integrates with Figma, Adobe XD, and Sketch, letting you preview how your designs adapt to different languages. This helps you design with localization in mind.
With just a few clicks, you can exchange translations between your design tech stack and management platform, streamlining the process and catching layout issues early.
7. Lokalise
Lastly, Lokalise has earned its place on this list. Going global requires many moving parts, and we’re here to help you move through the complex process of software internationalization and beyond.
With powerful localization workflow management that allows your team to collaborate, manage, and review translations in a productive, flexible, and efficient way, you’ll expand into global markets easily.
Try Lokalise free for 14 days, no credit card required.