Hello world! Or English Habr, v1.0

    This is the first publication in our blog in 2019, but it is very important for all of us. We are finally launching the English version of Habr! We had almost everything ready by mid-December, but to be released before the New Year is how to roll out the release on Friday evening. Therefore, we decided to postpone the departure to a large voyage to the beginning of 2019.


    The development of the English version of Habr was similar to an iceberg, the tip of which was the user “ it would be nice to be able to publish posts in English ” - one of the many feature requests without at least an approximate assessment of the scale of all the works.

    For almost a year, this feature request collected likes, as a result, collected neither more nor less - one, but the idea to do so was born with us long before that. The idea seemed promising, because the English-speaking competitors can be counted on the fingers of one hand. We thought for a long time, estimated, listened to the requests of users and clients, skipped articles in the Sandbox in English, but still the final puzzle didn’t fit together.

    As you know, about 90% of the iceberg is hidden under water, while our iceberg had even higher density and as a result, almost all Habr had to be redone. Actually, we spent half of 2018 on this. And now, in early 2019, we are happy to present you the results of our work.

    What was done

    When we announced the release of Habr outside Russia, we already had a plan. Rough estimate of work and deadlines for them. But already in the process of work, we realized that the alterations would be more ambitious.

    Habr is pretty big - both inside and out. When in any section of the settings you add a new line of text, you do not notice these scales, but when you translate the entire site, you realize that this is really an iceberg. It became clear to make the English-speaking Habr enough to simply translate "Habr" → "Habr".

    1. The structure of the

    localization Experience We practically did not have experience; when developing Habr, we did not include multilingualism in it. Therefore, in the architecture of the project, many things had to be changed in order for the support of a new language in principle to be possible and work correctly.

    First, we tried to solve the problem quickly, through the classic gettext, but very soon it became clear that its capabilities were not enough ...

    All the translation work was divided into three functional blocks:

    • Interface (language files)

      For the full internationalization of the interface, the ICU format was chosen - with it it became possible to transfer dates, endings, etc. Each translation element was assigned a unique ID, for convenience, they were grouped by entities. Then a multi-line language file was sent to the translator.
    • Templates (reference section, documents, manuals, letters)

      Large “independent” texts were translated separately, on their own. But the translation of legal documents (and we had a lot of them) is a separate universe with its black holes, so I had to resort to the help of a UFO.

      We tried to translate even pictures, refreshing them at the same time. For example:

      It was

    • Directories (hubs, badges, streams)

      Here, in general, everything is simple - a classic CRUD with a separate section in the administration panel.

    In the future, this approach will allow (if necessary) to add to the site and other languages. If you are brave, dexterous, skillful, you want to try your hand at translating Habr into a new language, please email us.

    Some numbers:

    Interface: about 250 KB of text, more than 3000 lines
    Templates: more than 800 KB of text
    Letters: more than 400 KB of text

    2. Multi-language settings

    It was necessary to decide how it would all work. We did not consider the option of creating a separate site seriously, but in the process of work such an idea came to us occasionally.

    Therefore, we took the path of content sharing and it remains to figure out how to do it. As a result, we stopped at the most flexible option: so that each user could choose both the language of the site interfaces and the language of the content.

    To do this, each user in the settings can specify what will be in what language. You can leave only content in Russian in the feed, you can only in English, but you can immediately on both.

    So, from today on Habré two settings appeared:

    • Interface

      Language The language of all site elements. So far, either Russian or English is supported. We tried to do a “smart” autodetection of the language (based on the accept language header), but this setting can always be overridden by ourselves.
    • Publishing language

      This setting allows the user to see publications in selected languages ​​in his feed. The content of the context blocks depends on it (“Most Read,” “Read Now,” “What They Discuss”). By default, it is inherited from the interface language, but it can also be changed at any time.

    Before authorization, the choice of languages ​​is in the upper right corner (planet icon), after authorization - it moves to the user menu. In the mobile version, the behavior is similar - the settings are in the footer and in the user menu.

    In the ribbon, you can choose one specific language or several. But when creating a publication, you can choose only one language.

    3. SEO

    Everything is done, translated, started testing. It was pleasant, but any absence-presence was felt. And they remembered that they forgot about god SEO.

    When your website is in one language, you can often not think about search engine optimization - everything somehow works on its own. But when the site appears content in different languages, then this point can no longer be ignored.

    Prior to this, Habr was only in Russian and was generally well indexed. With the advent of multilingualism, it became necessary to teach search engines to “see” both the Russian and English versions correctly. For this, we had to conduct a comprehensive audit and redo some things on the site - change the links, change the sitemap, set the correct canonical-url, and so on.

    Something like this:

    β testing

    By and large, we are now announcing a beta test of new functionality, so we will be grateful for any feedback, and especially for ideas and bug reports. It is necessary to test innovation thoroughly and in different conditions: on different platforms, on different operating systems and browsers, from different countries, with / without VPN, etc. Historically, our users are the best testers, and we hope for your help.

    Let's play!

    From today you can fully start posting your publications in English and making translations of Russian-language articles. And also to invite friends who live in other countries and speak English. If everyone invites at least one such friend, we will surely live, and our bold attempt to get out of our over-regulated sandbox will not look so crazy. To make it easier to do, for each user with positive karma, we will charge one invitation today.

    There is a lot of interesting things ahead - the elaboration of the strategy, the search for new authors and translators, SMM, analytics and much more, so if you can offer something, write to welcome@habr.com - we are always happy to meet new people.

    In touch!

    Also popular now: