Localizing Slack

Localization is so easy! …said no one ever. This week, we launched French, German, and Spanish localization in Slack. I’d like to share some of the lessons learned, tooling, and processes we put in place to complete this project and build localization into our ongoing workflow. Handling Strings The first step in localizing Slack was to prepare…

Scott Sandler
9 min readadvanced
--
View Original

Overview

The article discusses the process of localizing Slack into French, German, and Spanish, detailing the challenges faced and the solutions implemented. It highlights the importance of string handling, release processes, and tooling in achieving high-quality translations and seamless integration into the development workflow.

What You'll Learn

1

How to prepare strings in a codebase for localization using ICU MessageFormat

2

Why pseudolocalization is essential for testing localization readiness

3

How to implement a feature flag system for managing localization in new releases

Prerequisites & Requirements

  • Understanding of localization concepts and practices
  • Familiarity with Translation Management Systems (TMS)(optional)
  • Experience with web development and string manipulation in code

Key Questions Answered

What steps were taken to localize Slack into multiple languages?
The localization process involved preparing strings in the codebase for translation, implementing ICU MessageFormat for string representation, and using pseudolocalization for testing. The team also engaged in extensive collaboration and training to ensure quality translations and integration into the development workflow.
How does Slack ensure high-quality translations during localization?
Slack hired a full-time translation team to create glossaries and style guides for each language. They also implemented linting tools to validate the ICU syntax of strings and ensure that all user-visible strings were wrapped for localization, preventing localization regressions.
What challenges did Slack face during the localization process?
Challenges included managing approximately 20,000 strings across 2,000 files, ensuring consistent translations across languages, and adapting features like the /remind command for non-English locales. The team also had to address issues with emoji names and search indexing for different languages.

Key Statistics & Figures

Number of strings localized
20,000
This number represents the total strings that needed to be prepared for localization across Slack's codebase.
Number of files affected
2,000
This indicates the scale of the localization effort, showing the extensive reach of the changes required.

Technologies & Tools

Localization
Icu Messageformat
Used for representing strings in a way that supports complex localization needs.
Templating
Handlebars
Utilized for creating ICU helpers to manage string localization in templates.
Templating
Smarty
Another templating language used for implementing localization helpers.
Date Formatting
Moment.js
Used to handle date formats in a locale-specific manner without burdening translators.

Key Actionable Insights

1
Implement pseudolocalization early in the localization process to identify potential UI issues.
Pseudolocalization allows developers to test the readiness of strings for localization by simulating longer words and ensuring that UI elements can accommodate different text lengths.
2
Use feature flags to manage the rollout of new features while ensuring all strings are translated.
This approach prevents users from encountering untranslated strings in a localized experience, maintaining a consistent user interface across different languages.
3
Engage the entire engineering team in localization efforts through training and collaborative sessions.
Involving the team in 'string jams' not only helps in wrapping strings for localization but also fosters a culture of awareness about localization best practices.

Common Pitfalls

1
Failing to wrap all user-visible strings for localization can lead to untranslated content in the application.
This often happens when developers overlook certain strings during the localization process. Implementing linting tools can help catch these issues early.
2
Using English strings as keys for localization can complicate future translations if the original strings change.
This can lead to unnecessary re-translation efforts. Instead, using a hash of the English string as a key can simplify the process, but requires careful management.

Related Concepts

Localization Best Practices
Internationalization (i18n)
Translation Management Systems (tms)