Sobes.tech
Middle

Turli tillarda mavjud bo'lgan kontent bo'lgan sahifa qanday tartibda bo'lishi kerak?

sobes.tech AI

AIdan javob

SEO va foydalanuvchi qulayligi uchun, har bir sahifada <html> tegida lang atributidan foydalanish kerak.

<html lang="ru">
  ...
</html>

Boshqa tillardagi sahifaning alternativ versiyalarini ko'rsatish uchun <head> ichida hreflang meta-tegi ishlatiladi. Bu qidiruv tizimlariga (masalan, Google) ayni sahifaning boshqa tillardagi versiyalari mavjudligini ko'rsatadi.

Misol:

<head>
  <link rel="alternate" hreflang="ru" href="https://example.com/страница" />
  <link rel="alternate" hreflang="en" href="https://example.com/en/page" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/" />
</head>
  • hreflang="ru": rus tilidagi versiyani ko'rsatadi.
  • hreflang="en": ingliz tilidagi versiyani ko'rsatadi.
  • hreflang="x-default": standart sahifa, foydalanuvchining til afzalliklariga mos kelmaydigan holatda ishlatiladi. Odatda, asosiy sahifa yoki til tanlash sahifasi.

Frontendda tilni o'zgartirishning turli usullari mavjud:

  1. Har til uchun alohida URL: example.com/ru/page, example.com/en/page. Bu SEO uchun afzalroq.
  2. So'rov parametrlar: example.com/page?lang=ru, example.com/page?lang=en. Bu kamroq afzal.
  3. Cookie yoki Local Storage: Til foydalanuvchi qurilmasida saqlanadi. Server yoki klient tarafidan ishlov berishni talab qiladi.

Frontendda tarjimalarni boshqarish uchun ko'pincha i18n kutubxonalari ishlatiladi:

  • React: react-i18next, react-intl
  • Vue: vue-i18n
  • Angular: @angular/localize
  • Oddiy JS: i18next

Ushbu kutubxonalar quyidagilarni imkonini beradi:

  • Koddan tarjima satrlarini chiqarib olish.
  • Turli tillar uchun fayllarni boshqarish (masalan, JSON formatida).
  • URL va kontentni to'liq o'zgartirmasdan, tilni dinamik ravishda o'zgartirish.
  • Tilga xos o'zgarishlar, ko'p sonli shakllar va sana/numeral formatlash.

i18next bilan React uchun misol (schematik):

// src/i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

import translationEN from './locales/en/translation.json';
import translationRU from './locales/ru/translation.json';

const resources = {
  en: {
    translation: translationEN,
  },
  ru: {
    translation: translationRU,
  },
};

i18n
  .use(initReactI18next) // react-i18next'ga i18n'ni o'tkazadi
  .init({
    resources,
    lng: 'ru', // standart til
    interpolation: {
      escapeValue: false, // react XSS'dan himoya qiladi
    },
  });

export default i18n;
// src/locales/ru/translation.json
{
  "title": "Привет, мир!"
}
// src/locales/en/translation.json
{
  "title": "Hello, world!"
}
// src/App.js
import React from 'react';
import { useTranslation } from 'react-i18next';

function App() {
  const { t, i18n } = useTranslation();

  const changeLanguage = (lng) => {
    i18n.changeLanguage(lng);
  };

  return (
    <div>
      <h1>{t('title')}</h1>
      <button onClick={() => changeLanguage('ru')}>Rus</button>
      <button onClick={() => changeLanguage('en')}>Ingliz</button>
    </div>
  );
}

export default App;

Sahifa mazmuni (matnlar, rasm va matn bilan) tanlangan til/URLga mos ravishda tarjima qilinishi va ko'rsatilishi kerak.