Hello world! Or Habr in English, v1.0
This is the first post in our blog in 2019. And this is important for all of us: we are finally launching the English version of Habr! Actually it was ready in the middle of December, but — you know — releasing a new feature right before Christmas is like deploying on Friday afternoon. So we decided to do it in the beginning of 2019.
The development of the English version looked like an iceberg with «it would be cool to be able to create posts in English» on the top — one of the numerous feature requests with no even approximate scope of work.
For almost a year this feature request had been gaining likes (and after all gained just one), but this idea was born long before the request. The idea seemed promising because you can count our English-language competitors on the fingers of one hand (as well as implementation options). We were thinking hard for a long time, estimating, listening for users and clients requests, approving posts in English from «Sandbox», but pieces of the puzzle still did not fit to each other.
It’s known more than 90% of iceberg is hidden under the water. And our iceberg had even greater density so we had to rework almost the whole Habr. In fact we spent one half of 2018 for it. And now in the beginning of 2019 we are glad to release the result of our work.
When we announced that Habr is going to become international we already had a specific plan. It was raw scope of work and approximate terms. But after we started we understood that rework will become really massive.
Habr is quite big — both inside and outside. You don’t realise it if you need to add a single line of text, but when you translate the whole website it becomes clear the it is really an iceberg. We understood that «Habr in English» is not just translation «Хабр» → «Habr».
1. Translation structure
We had virtually no experience in localization, at the very beginning we didn’t expect Habr will be multilingual. So we had to change many things in project architecture in order to make it technically possible.
At first we tried to solve the problem fast with classic gettext, but soon we realized it has not enough capabilities…
We divided all translations into 3 functional blocks:
In future such approach will allow us to add (if needed) new languages. Ifthere's no case too big, no case too small you want to try your hand in translating Habr to another language, please feel free to contact us.
Some numbers:
Interface: about 250 KB of text, more than 3 000 lines
Templates: more than 800 KB of text
Emails: more than 400 KB of text
2. Multilingual settings
We had to decide how it all should work. There were some ideas of making a separate website, but we actually didn’t take this option seriously.
So we chose the way of separating content as the most flexible one: when user can select both — the language of the interface and the language of the feed.
Every user can go to settings and select the language. You can choose only English feed, or only Russian, or turn on both.
So, today we announce two new features on Habr:
If you are not logged in, you can find language selector is in the upper right corner (planet icon), if you are logged in — you’ll find it in the user menu. In the mobile version the scenario is similar — settings menu is in the footer and in the user menu.
For your feed you can choose more than one language but when you create new post you will be able to choose only one.
3. SEO
Everything was done and checked, and it was time for testing. The result was good, but there was something the air… Something that we missed. It was SEO.
When you maintain a website in a single language you usually don’t have to think about search optimization — it just works somehow. But after you add another language you can’t ignore this thing.
Before English was added to Habr search engines had been indexing it quite well. After we made the website multilingual we got need to teach search engines to «see» our website both in English and Russian clearly. We had to make a full check and rework things — change links, create new sitemap, specify canonical-URL, etc.
Like this:
Generally speaking we are announcing beta-testing of new functionality. We’d be grateful for any feedback, especially for ideas and bug reports. We need to carefully test new features in different conditions: different platforms, OS and browsers, from different locations, w/ and w/o VPN, etc. Historically our users are the best testers, and we hope you will help us.
From today you can create publications in English and translate articles from Russian. Also feel free to invite friends who live abroad and speak English. If each of us will send invitation even to one such fellow, be sure we will succeed and our bold attempt to get out of our throughout regulated sandbox will look not so crazy. To make it easier during the day we will grant one invitation to each user with positive karma.
There are a lot of interesting things ahead — strategy development, search for new authors and translators, SMM, analytics, and much more. If you also can offer something please send email to welcome@habr.com — we are always glad to meet new people.
Stay tuned!
Iceberg
The development of the English version looked like an iceberg with «it would be cool to be able to create posts in English» on the top — one of the numerous feature requests with no even approximate scope of work.
Feature request (in Russian)
For almost a year this feature request had been gaining likes (and after all gained just one), but this idea was born long before the request. The idea seemed promising because you can count our English-language competitors on the fingers of one hand (as well as implementation options). We were thinking hard for a long time, estimating, listening for users and clients requests, approving posts in English from «Sandbox», but pieces of the puzzle still did not fit to each other.
It’s known more than 90% of iceberg is hidden under the water. And our iceberg had even greater density so we had to rework almost the whole Habr. In fact we spent one half of 2018 for it. And now in the beginning of 2019 we are glad to release the result of our work.
What we did
When we announced that Habr is going to become international we already had a specific plan. It was raw scope of work and approximate terms. But after we started we understood that rework will become really massive.
Habr is quite big — both inside and outside. You don’t realise it if you need to add a single line of text, but when you translate the whole website it becomes clear the it is really an iceberg. We understood that «Habr in English» is not just translation «Хабр» → «Habr».
1. Translation structure
We had virtually no experience in localization, at the very beginning we didn’t expect Habr will be multilingual. So we had to change many things in project architecture in order to make it technically possible.
At first we tried to solve the problem fast with classic gettext, but soon we realized it has not enough capabilities…
We divided all translations into 3 functional blocks:
- Interface (language files)
For full internationalization we chose ICU-format — you can translate dates, word endings, etc. Each element of translation got its’ own ID, and for convenience they were grouped together by entities. After that translator received multiline language-file. - Templates (help, documents, guides, emails)
We translated big “independed” chunks of text individually, without any outside help. But legal documents is different universe with its’ own «black holes», so we asked an UFO for help.
We tried to translate even images and brush it up at the same time. For example:What we previously had (in Russian)What we have now - Guides (hubs, badges, flows)
This was more or less simple task — classic CRUD with separate tab on the admin panel.
In future such approach will allow us to add (if needed) new languages. If
Some numbers:
Interface: about 250 KB of text, more than 3 000 lines
Templates: more than 800 KB of text
Emails: more than 400 KB of text
2. Multilingual settings
We had to decide how it all should work. There were some ideas of making a separate website, but we actually didn’t take this option seriously.
So we chose the way of separating content as the most flexible one: when user can select both — the language of the interface and the language of the feed.
Every user can go to settings and select the language. You can choose only English feed, or only Russian, or turn on both.
So, today we announce two new features on Habr:
- Language of the interface
The language of all the elements on the website. Currently you can choose from English and Russian. We've attempted to determine locale in a «smart» way (based onAccept-Language
header) but you always can override it yourself. - Language of the posts
This feature allows user to see personal feed in selected languages. It also affects on the content of context blocks («Top posts», «Most popular right now», «Top discussions»). By default it's inherited from the interface language setting, but you can change it any time.
If you are not logged in, you can find language selector is in the upper right corner (planet icon), if you are logged in — you’ll find it in the user menu. In the mobile version the scenario is similar — settings menu is in the footer and in the user menu.
For your feed you can choose more than one language but when you create new post you will be able to choose only one.
3. SEO
Everything was done and checked, and it was time for testing. The result was good, but there was something the air… Something that we missed. It was SEO.
When you maintain a website in a single language you usually don’t have to think about search optimization — it just works somehow. But after you add another language you can’t ignore this thing.
Before English was added to Habr search engines had been indexing it quite well. After we made the website multilingual we got need to teach search engines to «see» our website both in English and Russian clearly. We had to make a full check and rework things — change links, create new sitemap, specify canonical-URL, etc.
Like this:
β-testing
Generally speaking we are announcing beta-testing of new functionality. We’d be grateful for any feedback, especially for ideas and bug reports. We need to carefully test new features in different conditions: different platforms, OS and browsers, from different locations, w/ and w/o VPN, etc. Historically our users are the best testers, and we hope you will help us.
Let’s play!
From today you can create publications in English and translate articles from Russian. Also feel free to invite friends who live abroad and speak English. If each of us will send invitation even to one such fellow, be sure we will succeed and our bold attempt to get out of our throughout regulated sandbox will look not so crazy. To make it easier during the day we will grant one invitation to each user with positive karma.
There are a lot of interesting things ahead — strategy development, search for new authors and translators, SMM, analytics, and much more. If you also can offer something please send email to welcome@habr.com — we are always glad to meet new people.
Stay tuned!