Etsy Icon>

Code as Craft

Internationalizing Etsy: Fostering a Global Marketplace main image

Internationalizing Etsy: Fostering a Global Marketplace


There’s nothing more frustrating than not understanding what’s right in front of you, as the non-German speakers among us might surmise after watching the clip from comedy programme Loriot above.  At Etsy, we’ve been working to build the world’s first truly global marketplace, allowing buyers and sellers to connect and have meaningful exchanges, regardless of which languages they speak.  As a first step, we launched Etsy in German in September.

As Chad points out, Etsy has always been a global marketplace, but it’s only recently that we’ve really focused on better supporting our international (non-US, non-English) members. Internationalization at Etsy means preparing our business to support international members and transactions, and also preparing the website—everything from registration, to searching and discovering, to buying and selling, to support.

We typically think of two broad categories when thinking of the technical side of internationalization: localization and translation.

Over the coming weeks, we’ll be sharing some of the engineering work we’ve done to internationalize Etsy.  Check back here on Code as Craft as we dig into some of the interesting bits of our internationalization stack (on both the localization and translation sides), discuss some of the challenges we’ve faced and share the solutions we’ve developed.

Some of the topics we plan on covering:

  • Localization logic: Combining cues such as Geo IP, browser language preferences along with cookie/user preferences to display the appropriately-localized language, region and currency content.
  • Translation stack: How we tag templates and database content for translation, then translate and serve to our visitors. Will include our PHP-based message extractor, Smarty prefilter for precompiling in translated content, and SQLite translation bundler.
  • Translator tools, used by translators to translate and test the translated site.
  • Translation Memory, we’ll discuss one of the key pieces of our Translation Tools: our translation memory built on Lucene, and how we extended CodeMirror to handle HTML and Smarty entities.
  • Translating user-generated content: allowing for multilanguage user-generated content (such as shops and item listings) comes with data model challenges.
  • Search query translation to allow for performant cross-language search and discovery of shops and listings, using a translated taxonomy and machine translation services.
  • Multilingual User Generated Content and SEO: cues for search engines to understand translated content, translated site UI, and how to play nice with sitemaps and robots.txt.
  • Continuous deployment = continuous translation. We’ll talk about our translation workflow, and how we’re dealing with common translation and linguistic QA problems.
  • Localization gotchas: addresses, date formats, possessives, plurals, gender, cache keys, stemming, compound words.

If you haven’t already, take a test drive of Etsy in German, and comment below with any questions or feedback.