Eating our Own Dogfood: Translating

February 23, 2012
5 min read

How will you ever build a trully good product if you don’t use it yourself? In order to be able to design great features that make sense and are useful to your users it goes without saying that you know of their needs first-hand.

This post introduces a series about how we use our own product to translate itself to many languages. The first post will be about the actual translation and the second about management which includes managing teams and members, string-freezes, release cycles, updating content, etc.

Setting up

I dedicate a whole browser window to Transifex when translating and a couple of tabs. With Firefox, I use the keyboard shortcuts Alt-1 and Alt-2 .

  • I navigate to the translation editor for the resource and language I am interested in. Opening the editor automatically marks the file as Locked so that my work doesn’t overlap with others.
  • In a second tab I open my project’s glossary which I use to ensure my translations are consistent across the project.


The procedure is as simple as it can get. I click on the first translation textarea and fill it in. Then I hit ‘tab’ on the keyboard to go to the next translation while the first is saved on the server in the background. I fill in the second translation, hit ‘tab’, and so on.

It becomes interesting when I find it difficult to find a proper translation for the current source string. Here is where I use all of Transifex’s (and Google’s) tools I have in my arsenal:

Suggestions – Translation Memory matches

When I hover on the source string, I can see on the ‘suggestions’ tab whether there’s anything helpful there. The suggestions panel shows user-generated suggestions and translation memory matches. User suggestions come from other translators who weren’t sure how to translate this specific string and let someone else like me to take the responsibility and Transifex’s translation memory provides translations to similar source strings to the current.

If I’m not sure about the translation, I add a suggestion and pass the responsibility of the translation to the next translator. People can also vote for suggestions if there are more than one, for extremely ambiguous cases.

Using a suggestion or translation memory match is as easy as clicking on the ‘use this’ button.


I search the glossary for definitions and translation suggestions for keywords in the source string. The great thing here is that these definitions are already in the context of the project and serve as guidelines for when there are more than one possible translations for the same keyword. This way, it helps translations to be consistent across a whole project.

For example, there is no proper translation for the word ‘slug’ in greek, except for the literal interpretation which is no good (see why here). The glossary instructs greek translators to use the word ‘αναγνωριστικό’ instead, which is more similar to ‘identifier’ and serves our translation’s purpose.

Considering how helpful the glossary is, I try to enhance it in any encounter with a “tricky” term in the source language, even if I’m confident about how to translate it in greek from the start.

Web Editor Search

I can search for difficult terms and their past translations straight in lotte, just by writing them on the search field and re-enabling the ‘translated’ filter, which is off by default. I can use the search functionality in other resources too, which is why I have them open in other tabs of my browser window (Alt-4 and above). Usually in those cases, I don’t clear the search until I’ve finished with all source entities that contain the term I’ve searched for.

This is also great for when ambiguous tranlations have been submitted in the past. It gives me a chance to edit past translations so that translation consistency is improved.

For example, if someone in the future comes up with a better translation for the word ‘slug’ in greek, he can edit all my translations with his own definition so that the whole translation is more consistent.

Machine Translation

When I need some help that can’t be found in the above sources, or if my mind gets stuck and there is a word whose translation I’m sure I know, but can’t remember no matter how hard I try (it happens a lot), I can turn to machine translation for hints. If my project’s maintainers have set up an API key for Google or Bing translate, I can simply click ‘auto-translate’ which prepopulates the translation field. I then edit it to make sure that it meets the quality requirements.

In my case though, I can achieve a similar result (while requiring some more keyboard input and mouse clicks) by hitting ‘Alt-3’ (see above) and using Google translate straight on Google’s website.

Random Hint

I couldn’t find a section for the following hint in the post’s structure so here it goes now:

When translating a source string that contains HTML, or any other markup format, it sometimes helps to click on the ‘copy source’ button and then edit the specific words or sentences in the translation textarea, leaving the markup symbols or tags intact. It’s easier than copying the markup itself from the source string to the translation.

Start your localization journey
Bring your brand to the world and create global experiences with the power of AI
FacebookgithubGoogle+Fill 88Twitter