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

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

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

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

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

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

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

تنظیم بازنویسی‌های i18n

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

در اینجا مراحل دقیق آمده است:

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

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

    در اینجا یک مثال از دایرکتوری "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 است

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

    فایل‌های موجود در یک زیرپوشه نیازی به داشتن فایل‌های مشابه در دایرکتوری 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 خود مستقر کنید.

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

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

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

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

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

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

  • Hosting هرگونه زیربرچسب منطقه‌ای و کشوری را در سربرگ Accept-Language حذف می‌کند، بنابراین کد زبان در نام زیرپوشه "i18n content" نمی‌تواند شامل این زیربرچسب‌ها باشد. برای مثال، شما نمی‌توانید 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. رسیدگی به خطای ۴۰۴

    1. صفحات ۴۰۴ i18n
      این از همان ترتیب اولویت ذکر شده در بالا برای محتوای استاتیک دقیقاً منطبق پیروی می‌کند.

    2. صفحه ۴۰۴ سفارشی

    3. صفحه پیش‌فرض ۴۰۴ (ارائه شده توسط 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. رسیدگی به خطای ۴۰۴

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

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

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

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

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

  • اگرچه دایرکتوری localized-files/ شامل زیرپوشه es_ALL/ است، درخواست مثال بالا شامل کد زبان es یا es-foo نمی‌شود، بنابراین Hosting به دنبال "i18n content" که با 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";

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

لغو کوکی‌ها در گزارش‌ها منعکس نمی‌شود.