הגדרת שפת העמוד
שימו את המאפיין lang על האלמנט <html>, עם הקוד של השפה שבה העמוד כתוב:
למאפיין אין השפעה גלויה על הפסקה הזו, אבל הוא משנה את האופן שבו העמוד מטופל: קורא מסך מקריא אותו בקול אנגלי, הדפדפן משתמש בו כשהוא מחליט אם להציע תרגום, ובודק איות יכול לבחור לפיו את המילון האנגלי. בלעדיו הכלים צריכים לנחש, וקורא מסך שמוגדר לשפה אחרת עלול להקריא את הטקסט האנגלי בהגייה שגויה.
קודי שפה
הערך הוא תג שפה מתקן BCP 47. רובם קוד שפה בן שתי אותיות, ואחריו אפשר להוסיף אזור או כתב:
| קוד | שפה |
|---|---|
en | אנגלית |
en-US, en-GB | אנגלית כפי שמדברים בארצות הברית, בבריטניה |
es, es-MX | ספרדית, ספרדית כפי שמדברים במקסיקו |
pt-BR | פורטוגזית כפי שמדברים בברזיל |
fr, de, it | צרפתית, גרמנית, איטלקית |
ar, he | ערבית, עברית (מימין לשמאל, ראו בהמשך) |
ja, ko | יפנית, קוריאנית |
zh-Hans, zh-Hant | סינית באותיות מפושטות, מסורתיות |
הקודים לא רגישים לאותיות גדולות וקטנות, אבל המוסכמה היא שפה באותיות קטנות ואזור באותיות גדולות. הוסיפו אזור רק כשהגרסה משנה; en הוא ערך שלם ונכון.
דברים ש-lang משנה ושאפשר לראות
רוב ההשפעות של lang נועדו לתוכנה, אבל כמה מהן מופיעות על המסך. המירכאות של האלמנט <q> נקבעות לפי השפה, וכך גם כללי האותיות הגדולות:
כל שורה מקבלת סגנון מירכאות משלה. בעמודה האחרונה, אותו text-transform: uppercase נותן "ISTANBUL" באנגלית ו-"İSTANBUL" בטורקית, כי בטורקית נשארת הנקודה על i גדולה. שנו את ה-lang של השורה הטורקית ל-en והנקודה נעלמת. גם פיצול מילים אוטומטי (hyphens: auto ב-CSS) תלוי ב-lang: הדפדפן צריך לדעת את השפה כדי לדעת איפה מותר לשבור מילים.
סימון ביטויים בשפה אחרת
lang עובד על כל אלמנט, לא רק על <html>. כשעמוד בשפה אחת מצטט ביטוי בשפה אחרת, עטפו את הביטוי ותנו לו קוד משלו. CSS יכול לפנות לשפות עם הסלקטור :lang():
קורא מסך עובר להגייה צרפתית ב-"bon appétit" וחוזר לאנגלית אחריו. :lang(fr) מתאים גם ל-fr-CA ולכל גרסה אחרת של צרפתית, והוא מתאים גם לאלמנטים שיורשים את השפה מאב קדמון, מה שסלקטור מאפיין כמו [lang="fr"] היה מפספס.
שפות מימין לשמאל: dir
ערבית, עברית, פרסית ואורדו נכתבות מימין לשמאל. lang קובע את השפה; המאפיין dir קובע את הכיוון. עמוד שלם בערבית משתמש בשניהם על <html>:
<html lang="ar" dir="rtl">
לביטוי קצר מימין לשמאל בתוך עמוד משמאל לימין, שימו את שניהם על האלמנט שעוטף אותו:
ה-blockquote מתיישר לימין והפס הירוק שלו עובר גם הוא לימין, כי border-inline-start הולך לפי הכיוון. שימוש במאפיינים לוגיים כמו margin-inline-start במקום margin-left שומר על פריסה נכונה בשני הכיוונים.
lang מול hreflang
lang מתאר את התוכן של אלמנט. hreflang נמצא על קישור ומתאר את העמוד שהוא מפנה אליו. אתרים עם תרגומים מפרטים כל גרסה ב-<head> כדי שמנועי חיפוש ישלחו כל קורא לגרסה הנכונה:
<link rel="alternate" hreflang="en" href="https://example.com/">
<link rel="alternate" hreflang="de" href="https://example.com/de/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">
כל עמוד מתורגם עדיין מגדיר lang משלו על <html>: lang="de" בעמוד הגרמני.
טעויות נפוצות
- להשמיט את
lang. הרבה תבניות שוכחות אותו; הגדירו אותו ליד ה-doctype בכל עמוד. - להעתיק
lang="en"לעמודים מתורגמים. עמוד בגרמנית שמסומן כאנגלית מוקרא בהגייה אנגלית. התאימו אותו לתוכן. - להשתמש בקוד מדינה כקוד שפה.
lang="jp"ו-lang="gr"הם לא יפנית ויוונית; הקודים הםjaו-el. - להשתמש ב-
langכדי לקבוע כיוון.lang="ar"לבדו לא גורם לטקסט לרוץ מימין לשמאל. הוסיפוdir="rtl". - לכתוב
lang="en_US". המפריד הוא מקף:en-US.
שאלות נפוצות
מה עושה המאפיין lang ב-HTML?
הוא מצהיר על השפה של התוכן באלמנט. קוראי מסך משתמשים בו כדי לבחור את הקול וההגייה הנכונים, דפדפנים משתמשים בו כדי להציע תרגום, לבחור מירכאות ולפצל מילים בסוף שורה, וחלק מבודקי האיות בוחרים לפיו מילון.
מה לשים במאפיין lang של html?
קוד שפה מתקן BCP 47: en לאנגלית, es לספרדית, fr לצרפתית, ja ליפנית. הוסיפו אזור רק כשזה משנה, כמו ב-en-US, en-GB או pt-BR.
להשתמש ב-lang="en" או ב-lang="en-US"?
שניהם תקינים. en מספיק לרוב העמודים באנגלית. השתמשו ב-en-US או ב-en-GB כשהגרסה האזורית משנה, למשל בכתיב, בתאריכים או בהגייה של מילים מסוימות.
האם המאפיין lang משפיע על SEO?
Google אמרה שהיא מזהה את השפה מהטקסט עצמו ולא מסתמכת על המאפיין lang. הגדירו אותו נכון בכל זאת: מנועי חיפוש אחרים, כלי תרגום וקוראי מסך משתמשים בו. כדי לקשר בין גרסאות מתורגמות של עמוד, השתמשו בקישורי hreflang.
איך מסמנים טקסט בשפה אחרת?
הוסיפו lang לאלמנט שעוטף אותו: <span lang="fr">bon appétit</span>. קוראי מסך מחליפים את ההגייה בביטוי הזה, ו-CSS יכול לעצב אותו עם :lang(fr).
מה ההבדל בין lang ל-hreflang?
lang אומר באיזו שפה התוכן של אלמנט. hreflang נמצא על קישור ואומר באיזו שפה העמוד המקושר, וכך אתרים מפנים את מנועי החיפוש לגרסאות השפה האחרות של עמוד.