هذا هو أول منشور في مدونتنا في عام 2019. وهذا مهم بالنسبة لنا جميعًا: لقد بدأنا أخيرًا إصدار النسخة الإنجليزية من Habr! في الواقع ، كانت جاهزة في منتصف شهر ديسمبر ، ولكن - كما تعلمون - إن إطلاق ميزة جديدة قبل عيد الميلاد يشبه النشر بعد ظهر يوم الجمعة. لذلك قررنا أن نفعل ذلك في بداية عام 2019.

جبل جليدي
بدا تطوير النسخة الإنجليزية بمثابة جبل جليدي مع
"سيكون من الرائع أن تكون قادرًا على إنشاء منشورات باللغة الإنجليزية" في الجزء العلوي - أحد طلبات الميزات العديدة مع عدم وجود نطاق تقريبي للعمل.
طلب ميزة (باللغة الروسية) على مدار عام تقريبًا ، اكتسب طلب الميزة هذا إعجابًا (وفي النهاية اكتسب واحدًا فقط) ، لكن هذه الفكرة ولدت قبل فترة طويلة من الطلب. بدت الفكرة واعدة لأنه يمكنك الاعتماد على منافسي اللغة الإنجليزية لدينا على أصابع يد واحدة (بالإضافة إلى خيارات التنفيذ). كنا نفكر مليا لفترة طويلة في تقدير طلبات المستخدمين والعملاء والاستماع إليها ، والموافقة على المنشورات باللغة الإنجليزية من "Sandbox" ، لكن أجزاء من اللغز لا تزال غير مناسبة لبعضها البعض.
ومن المعروف أن أكثر من 90 ٪ من جبل الجليد مخبأة تحت الماء. وكان جبل الجليد لدينا كثافة أكبر لذلك اضطررنا إلى إعادة صياغة ما يقرب من هبر كله. في الواقع لقد قضينا نصف عام 2018 لذلك. والآن في بداية عام 2019 ، يسرنا أن نعلن عن نتيجة عملنا.
ماذا فعلنا
عندما أعلنا أن هبر ستصبح دولية ، لدينا بالفعل خطة محددة. وكان نطاق العمل الخام وشروط تقريبية. ولكن بعد أن بدأنا فهمنا أن إعادة صياغة سيصبح ضخمة حقا.
هبر كبير جدا - داخل وخارج على حد سواء. لا تدرك ذلك إذا كنت بحاجة إلى إضافة سطر واحد من النص ، ولكن عندما تترجم الموقع بالكامل يصبح واضحًا أنه في الحقيقة جبل جليدي. لقد فهمنا أن "Habr in English" ليس مجرد ترجمة "Habr" → "Habr".
1. هيكل الترجمةلم يكن لدينا أي خبرة في الترجمة ، في البداية لم نتوقع أن يكون هبر متعدد اللغات. لذلك كان علينا تغيير أشياء كثيرة في بنية المشروع من أجل جعلها ممكنة تقنياً.
في البداية حاولنا حل المشكلة بسرعة مع gettext الكلاسيكية ، ولكن سرعان ما أدركنا أنها لا تملك قدرات كافية ...
قسمنا جميع الترجمات إلى 3 كتل وظيفية:
- واجهة (ملفات اللغة)
من أجل التدويل الكامل ، اخترنا تنسيق ICU - يمكنك ترجمة التواريخ ونهايات الكلمات وما إلى ذلك. حصل كل عنصر من عناصر الترجمة على معرّفه الخاص ، ولراحته تم تجميعها معًا بواسطة كيانات. بعد ذلك تلقى المترجم متعدد اللغات لغة الملف. - قوالب (مساعدة ، وثائق ، أدلة ، رسائل بريد إلكتروني)
لقد قمنا بترجمة أجزاء كبيرة "مستقلة" من النص بشكل فردي ، دون أي مساعدة خارجية. لكن الوثائق القانونية هي كون مختلف مع "الثقوب السوداء" الخاصة به ، لذلك طلبنا من الجسم الغريب طلب المساعدة.
لقد حاولنا ترجمة الصور حتى وتنظيفها في نفس الوقت. على سبيل المثال:
ما كان لدينا سابقا (باللغة الروسية)
ما لدينا الآن(من
هنا ):

- أدلة (لوحات الوصل والشارات والتدفقات)
كانت هذه مهمة بسيطة إلى حد ما - CRUD الكلاسيكية مع علامة تبويب منفصلة في لوحة الإدارة.
في المستقبل ، سيسمح لنا هذا النهج بإضافة لغات جديدة (إذا لزم الأمر). إذا
لم يكن
هناك أي حالة كبيرة جدًا ، فلا توجد أي حالة تريد أن تجرب يدك في ترجمة Habr إلى لغة أخرى ، فلا تتردد في الاتصال بنا.
بعض الأرقام:
الواجهة: حوالي 250 كيلو بايت من النص ، أكثر من 3000 سطر
القوالب: أكثر من 800 كيلو بايت من النص
رسائل البريد الإلكتروني: أكثر من 400 كيلوبايت من النص
2. إعدادات متعددة اللغاتكان علينا أن نقرر كيف ينبغي أن يعمل كل شيء. كانت هناك بعض الأفكار حول إنشاء موقع ويب منفصل ، لكننا في الواقع لم نأخذ هذا الخيار على محمل الجد.
لذلك اخترنا طريقة فصل المحتوى على أنه الأكثر مرونة: متى يمكن للمستخدم اختيار - لغة الواجهة ولغة الخلاصة.
يمكن لكل مستخدم الانتقال إلى الإعدادات وتحديد اللغة. يمكنك اختيار التغذية الإنجليزية فقط ، أو الروسية فقط ، أو تشغيل كليهما.
لذلك ، اليوم نعلن عن اثنين من الميزات الجديدة على هبر:
- 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 on Accept-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. SEOEverything 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!