بازنویسی های بین المللی سازی (i18n) را پیکربندی کنید

از بازنویسی های بین المللی سازی ("بازنویسی های i18n") برای ارائه محتوای مختلف بسته به کشور یا زبان مورد نظر کاربر استفاده کنید. در اینجا چند نمونه پیکربندی است که می توانید تنظیم کنید:

  • همان محتوای فرانسوی را به همه کاربرانی که فرانسوی را ترجیح می دهند (بدون در نظر گرفتن کشور) ارائه دهید.
    مثال: صفحه اصلی با متن فرانسوی

  • محتوای فرانسوی استاندارد را برای کاربرانی که فرانسوی را ترجیح می دهند ارائه دهید، اما برای کاربران کانادایی که فرانسوی را ترجیح می دهند، به جای آن محتوای فرانسوی کانادایی را ارائه دهید.
    مثال: صفحه اصلی با عبارت فرانسوی استاندارد در مقابل صفحه اصلی با عبارت فرانسوی کانادایی

  • محتوای یکسانی را برای همه کاربران کانادایی (صرف نظر از ترجیح زبان آنها) ارائه دهید.
    مثال: یک صفحه اصلی با زبان «پیش‌فرض» سایت شما اما با ویژگی خاص کانادا (مانند موضوع تعطیلات)

  • محتوای فرانسوی کانادایی را به کاربران کانادایی که فرانسوی را ترجیح می دهند ارائه دهید.
    مثال: یک صفحه اصلی با عبارت فرانسوی کانادایی و یک ویژگی خاص کانادا (مانند موضوع تعطیلات)

Firebase Hosting کشور کاربر را از روی آدرس IP و تنظیمات برگزیده زبان کاربر را از سربرگ درخواست Accept-Language تعیین می کند (معمولاً به طور خودکار توسط مرورگر وب آنها تنظیم می شود ).

بازنویسی i18n را تنظیم کنید

برای راه‌اندازی بازنویسی‌های i18n برای سایت Hosting خود، باید یک دایرکتوری "محتوای i18n" برای تمام محتوای محلی خود ایجاد کنید، سپس ویژگی i18n را به فایل firebase.json خود اضافه کنید تا به فهرست "محتوای i18n" جدید خود اشاره کنید.

در اینجا مراحل دقیق وجود دارد:

  1. در پوشه public دایرکتوری برنامه محلی خود، یک دایرکتوری جداگانه برای "محتوای i18n" خود ایجاد کنید، سپس برای هر ترکیب زبان و کشوری که سایت شما پشتیبانی می کند، زیرپوشه هایی ایجاد کنید.

    در هر زیرپوشه، محتوای خاص آن ترکیب را اضافه کنید، مانند صفحات اصلی با موضوع تعطیلات یا صفحات 404 زبان خاص.

    در اینجا یک نمونه دایرکتوری "i18n content" به نام localized-files آمده است:

    public/
        index.html  // your site's default homepage
        404.html  // your site's custom 404 page
    
        localized-files/
            ALL_ca/
                index.html
            es_ALL/
                index.html
                404.html
            fr/
                index.html
                404.html
            fr_ca/
                index.html
    

    فهرست localized-files/ حاوی زیرپوشه‌های جداگانه برای هر ترکیب زبان و کشور است که توسط سایت شما پشتیبانی می‌شود. الگوی نامگذاری هر زیرپوشه باید از یکی از این فرمت ها پیروی کند:

    • languageCode_countryCode : حاوی محتوایی است که مختص کاربرانی است که آن زبان ترجیحی و کد کشور را دارند

    • languageCode : حاوی محتوای خاص برای کاربرانی است که آن زبان ترجیحی دارند، اما محتوا مختص کشور نیست. اساسا معادل languageCode_ALL است

    برای جزئیات بیشتر در مورد این کدها به زیربخش کدهای کشور و زبان زیر مراجعه کنید. برای نشان دادن هر کشوری (مانند es_ALL/ ) یا هر زبانی (مانند ALL_ca/ ) می توانید از مقدار ALL (حساس به حروف کوچک و بزرگ) استفاده کنید.

    فایل‌های یک زیرپوشه نیازی به داشتن فایل‌های مشابه در پوشه public یا سایر زیرپوشه‌ها ندارند. می توانید محتوایی ایجاد کنید که کاملاً مختص یک زبان و/یا کشور باشد.

  2. ویژگی i18n را به فایل firebase.json خود اضافه کنید و دایرکتوری حاوی «محتوای i18n» خود را مشخص کنید. در ادامه مثال ما:

    // firebase.json
    
    "hosting": {
    
      "public": "public",
    
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
    
      "i18n": {
        "root": "/localized-files"  // directory that contains your "i18n content"
      }
    
      ...
    }
    

    دایرکتوری مشخص شده برای root باید نام دایرکتوری باشد که حاوی تمام زیرپوشه های "i18n content" شماست. اگر همه زیرپوشه‌های "i18n content" خود را در ریشه فهرست public خود قرار داده اید، از / برای مقدار root استفاده کنید. اسلش های پیشرو و انتهایی در مقدار root اختیاری هستند.

  3. "محتوای i18n" و پیکربندی خود را در سایت Hosting خود مستقر کنید.

می‌توانید تنظیمات خود را با استفاده از لغو کوکی‌ها آزمایش کنید.

کدهای کشور و زبان

هنگام نام‌گذاری زیرپوشه‌های «محتوای i18n»، باید از حروف کوچک برای کدهای کشور و زبان استفاده کنید. برای نشان دادن هر کشوری (مانند es_ALL/ ) یا هر زبانی (مانند ALL_ca/ ) می توانید از مقدار ALL (حساس به حروف کوچک و بزرگ) استفاده کنید.

Hosting کد کشور را از آدرس IP کاربر دریافت می کند. کدهای کشور کدهای دو حرفی ISO 3166-1 آلفا-2 هستند.

کدهای زبان از سربرگ درخواست Accept-Language کاربر (معمولاً به طور خودکار توسط مرورگر وب آنها تنظیم می شود ) به دست می آیند. آنها کدهای ISO 639-1 هستند. هنگام استفاده از کدهای زبان، موارد زیر را در نظر داشته باشید:

  • هنگامی که Hosting جستجو می کند که کدام "محتوای i18n" را ارائه کند، زبان ها را بر اساس مقادیر کیفیت در هدر Accept-Language مرتب می کند.

  • Hosting هر گونه زیربرچسب منطقه ای و کشوری را در هدر Accept-Language حذف می کند، بنابراین کد زبان در نام زیرپوشه "content i18n" نمی تواند حاوی این زیربرچسب ها باشد. برای مثال، نمی‌توانید es-419 یا es-US به عنوان کد زبان در نام زیرپوشه استفاده کنید، اما می‌توانید از es استفاده کنید.

    اگر می‌خواهید محتوای منطقه‌ای یا کشوری خاصی را ارائه دهید، می‌توانید زیرپوشه‌هایی ایجاد کنید که حاوی محتوای زبان کشور خاصی است که می‌خواهید پشتیبانی کنید.

ترتیب اولویت برای "محتوای i18n"

اگر بازنویسی‌های i18n را راه‌اندازی کنید، Hosting محتوا را بر اساس اولویت‌بندی زیر ارائه می‌کند:

  1. فضاهای نام رزرو شده که با یک بخش مسیر /__/* شروع می شوند

  2. تغییر مسیرهای پیکربندی شده

  3. محتوای ثابت با تطابق دقیق

    1. کد زبان + کد کشور (به عنوان مثال، محتوای fr_ca/ )
      ترتیب از مقادیر کیفیت برای هر زبان در هدر Accept-Language درخواست پیروی می کند.

    2. فقط کد کشور (به عنوان مثال، محتوای ALL_ca/ )

    3. فقط کد زبان (به عنوان مثال، محتوای fr/ یا es_ALL/ )
      ترتیب از مقادیر کیفیت برای هر زبان در هدر Accept-Language درخواست پیروی می کند.

    4. محتوای ثابت با تطابق دقیق «پیش‌فرض».
      این محتوایی است که خارج از فهرست راهنمای "i18n content" است، مانند ریشه دایرکتوری public .

  4. بازنویسی های پیکربندی شده

  5. 404 هندلینگ

    1. i18n 404 صفحه
      این از همان ترتیب اولویت ذکر شده در بالا برای محتوای ثابت با تطابق دقیق پیروی می کند.

    2. صفحه سفارشی 404

    3. صفحه پیش فرض 404 (ارائه شده توسط Firebase)

مثال برای ترتیب اولویت

بیایید مثال خود را از بالا ادامه دهیم. ما از همان دایرکتوری مثال و یک درخواست مثال استفاده خواهیم کرد.

  • نمونه فهرست راهنما پروژه محلی با فهرست راهنمای "i18n content" (به نام localized-files )

    public/
        index.html  // your site's default homepage
        404.html  // your site's custom 404 page
    
        localized-files/
            ALL_ca/
                index.html
            es_ALL/
                index.html
                404.html
            fr/
                index.html
                404.html
            fr_ca/
                index.html
    
  • اطلاعات درخواست نمونه

    • کدهای زبان: fr , en (فرانسوی و سپس انگلیسی)
      کدهای زبان بر اساس مقادیر کیفیت در هدر Accept-Language مرتب شده اند.

    • کد کشور: ca (کانادا)

با توجه به ترتیب اولویت دقیقا مطابقت و مقادیر کیفیت برای ترجیحات زبان، Hosting دایرکتوری ها را برای صفحه درخواستی به ترتیب زیر جستجو می کند.

  1. public/localized-files/fr_ca/

  2. public/localized-files/en_ca/

  3. public/localized-files/ALL_ca/

  4. public/localized-files/fr_ALL/

  5. public/localized-files/fr/

  6. public/localized-files/en_ALL/

  7. public/localized-files/en/

  8. public/

  9. 404 هندلینگ

کدام صفحه به کاربر ارائه خواهد شد؟

  • صفحه درخواستی: index.html

  • صفحه درخواستی: awesome-page.html

در مورد این جستجو و سرویس فهرست راهنمای "i18n content" به موارد زیر توجه کنید:

  • دایرکتوری localized-files/ در واقع حاوی زیرپوشه‌های en_ca/ ، en_ALL/ ، یا en/ نیست، بنابراین Hosting فقط از فهرست اولویت‌ها پرش می‌کند تا زمانی که یک زیرپوشه منطبق برای ترکیب زبان-کشور درخواست پیدا کند.

  • حتی اگر دایرکتوری localized-files/ حاوی یک زیرپوشه es_ALL/ است، درخواست مثال بالا شامل کد زبان es یا es-foo نمی‌شود، بنابراین Hosting «محتوای i18n» را که با es مطابقت دارد جستجو نمی‌کند.

  • پوشه های فرعی به نام fr/ و fr_ALL/ از منظر ترجیحات کشور و زبان کاربر معادل هستند. با این حال، اگر هر دو زیرپوشه وجود داشته باشند، Hosting محتوا fr_ALL/ را قبل از محتوای fr/ ارائه می‌کند.

می‌توانید با استفاده از کوکی‌ها برای لغو سرصفحه‌های کشور و زبان، محتوای ارائه‌شده را تغییر دهید.

در اینجا چند راه وجود دارد که می توانید از لغو کوکی ها استفاده کنید:

  • یک ویژگی را با ترکیب‌های مختلف زبان/کشور آزمایش کنید تا بررسی کنید کدام محتوا ارائه می‌شود.

  • به کاربران خود اجازه دهید محتوایی را که می بینند تغییر دهند. به عنوان مثال، می توانید یک انتخابگر زبان را پیاده سازی کنید، سپس کوکی firebase-language-override کاربر را بر اساس آن تنظیم کنید.

برای پیکربندی لغو کوکی‌ها، کوکی‌ها را با هر دو یا یکی از این نام‌ها تنظیم کنید: firebase-country-override و firebase-language-override . به عنوان مثال، قطعه کد جاوا اسکریپت زیر کد کشور را به صورت ca و سرصفحه Accept-Language به صورت fr,en لغو می کند:

document.cookie = "firebase-country-override=ca";
document.cookie = "firebase-language-override=fr,en";

لغو کوکی‌های زبان باید فهرستی از کدهای زبان جدا شده با کاما و به ترتیب اولویت، بدون برچسب‌های فرعی یا مقادیر کیفیت باشد.

نادیده گرفتن کوکی ها در گزارش ها منعکس نمی شوند.