نشانی متعارف خود صفحه است
فارسی و انگلیسی این سایت دو فایل جدا هستند. hreflang فقط وقتی جفت واقعی باشد میآید، و نشانی متعارف هر صفحه آدرس خودش است نه نشانی زبان مقابل.
یک صفحه در این سایت نشانی خودش را متعارف میداند. نسخهی فارسی به انگلیسی اشاره نمیکند که «اصل آنجاست»، و برعکس. canonical در Base.astro همان مسیر جاری است، مطلقشده با مبدأ https://mh-honarvar.github.io. زبان مقابل فقط وقتی در hreflang میآید که آن صفحه واقعاً وجود داشته باشد.
خوشهی جهت در موضوع راستبهچپ است. شرح بلندتر مسیر در دو مسیر، نه یک صفحهی وارونه است.
دو فایل، نه یک سند با سوئیچ
src/pages/[lang]/ خانه، وبلاگ، پروژهها، درباره و همکاری را برای fa و en جدا میسازد. نوشتهها در src/content/blog/fa و src/content/blog/en هستند. نام فایل نامک است. getStaticPaths نامکهای زبان دیگر را جمع میکند. hasTwin یعنی همان نام آنجا باشد.
متن رابط موقع ساخت از src/i18n/ui.ts انتخاب میشود. مرورگر بعداً یک HTML را به زبان دیگر عوض نمیکند. دکمهی زبان پیشوند /fa/ یا /en/ را عوض میکند. اگر نوشته جفت داشته باشد به ترجمه میرود. اگر نداشته باشد، altPath فهرست وبلاگ دیگر است و alternate خاموش است.
سرصفحه چه را حق دارد بگوید
برای صفحهای که noindex نیست، hreflang خود صفحه همیشه هست: fa-IR یا en-US. لینک زبان مقابل و x-default فقط وقتی alternate روشن باشد اضافه میشوند. x-default به آدرس فارسی همان جفت اشاره میکند، نه به ریشهی سایت. og:locale:alternate همان شرط را دارد.
نوشته این پرچم را از hasTwin میگیرد. کپی فارسی در پوشهی انگلیسی ترجمه نیست. این نوشته و جفت انگلیسیاش همین نام را دارند، پس پرچم برایشان روشن است. راستبهچپ را از روز اول بگذار هم جفت دارد. برچسب صفحه چیز دیگری است. tagPairs امروز راستبهچپ را با rtl، تایپوگرافی را با typography، فارسی را با persian، و دوزبانه را با bilingual جفت میکند، همراه چند جفت دیگر. نامی که در آن جدول نیست ادعای ترجمهی برچسب نمیکند. خود نوشته با نامک جفت میشود.
استثنای ریشه
/ نشانی متعارف خودش نیست. noindex, follow است و متعارفش https://mh-honarvar.github.io/fa/ است. اسکریپت با navigator.language.startsWith('fa') به /fa/ یا /en/ میرود. بدون اسکریپت، noscript به /fa/ برمیگردد. روی خود ریشه dir نیست. این ایستگاه را با خانهی فارسی یکی نکنید، جز در همان لینک متعارف.
نقشهی سایت / و rss.xml و /og/ را برمیدارد. اگر در لینکهای یک صفحه هر دو زبان باشند، x-default به فارسی اضافه میشود. اگر یکی نباشد، لینک جایگزین پاک میشود. خوراک هر زبان جداست و در نقشه نیست.
صفحهی ۴۰۴ فارسی است، noindex است، و alternate ندارد. خانهی هیچ زبانی نیست.
چرا این به خواندن مربوط است
جهت، فونت، و ترتیب Tab روی همان سندی تصمیم گرفته میشوند که نشانیاش متعارف است. صفحهی فارسی dir="rtl" دارد و لینک پرش به لبهی راست میرود. صفحهی انگلیسی این کار را نمیکند. اگر هر دو یک فایل بودند و فقط یک ویژگی عوض میشد، متعارف یکی میماند و دیگری سایه بود. اینجا هر کدام فایل خود را دارند. تمرکز از همان لبهای شروع میشود که خواندن ترتیب همان سند است.
این سایت معرفی کوتاه است. چرا این سایت را از نو ساختم دلیل ساختن را میگوید. صفحهی همکاری در ناوبری سرصفحه نیست. از پاپیچ میآید، و تنها تماس عمومیاش تلگرام است، @MH759.
اگر یک چیز بماند این است: ترجمه را با عوض کردن dir اعلام نمیکنم. فایل دوم لازم است، و تا آن فایل نباشد نشانی متعارف همین صفحه میماند.