iOS Internationalization: Handling Plurals
Article Summary
Lou Franco from Atlassian admits he spent decades writing plural-unfriendly strings because Brian Kernighan tricked him. Now, scaling Trello to 21 languages forced him to confront a hard truth: English pluralization is embarrassingly simple compared to most languages.
When Trello expanded beyond European languages into Russian and Czech, the classic "item(s)" hack stopped working. Franco shares how Atlassian tackled iOS internationalization using Unicode's CLDR pluralization rules, which define six categories (zero, one, two, few, many, other) that different languages use in wildly different ways.
Key Takeaways
- Russian pluralization rules are harder than FizzBuzz (involves mod 10 and mod 100 calculations)
- English uses only 2 plural categories while other languages need up to 6
- Smartling.i18n framework implements CLDR rules with special string key suffixes
- Trello added custom 'zero' category for better UX despite English not requiring it
Proper iOS internationalization requires abandoning simple one vs. not-one plural logic and implementing language-specific CLDR rules through frameworks like Smartling.i18n.