Kalo te përmbajtja
SEO Analyzer

Ndërkombëtare

Kodet e gjuhëve te hreflang

Etiketat hreflang duhet të përdorin kode ISO të vlefshme; mjeti kontrollon kodin bazë kundrejt një liste të fiksuar.

Çfarë është

<link rel="alternate" hreflang="…"> i tregon motorit se e njëjta përmbajtje ekziston në një gjuhë ose rajon tjetër, dhe ku.

Vlera është një kod gjuhe sipas ISO 639-1, opsionalisht i ndjekur nga një kod rajoni sipas ISO 3166-1 Alpha-2, të ndarë me vizë: sq, sq-AL, sq-XK, en-GB.

Rregullat që shkelen më shpesh janë tri: përdorimi i nënvijës në vend të vizës (en_US), shkrimi i gjuhës me emër (english), dhe përdorimi i një kodi shteti si kod gjuhe (uk për Ukrainën, kur uk është vërtet ukrainishtja, ose al për shqipen, kur al nuk është gjuhë fare).

Pse ka rëndësi

Një kod i pavlefshëm nuk shkakton gabim — shkakton heshtje. Motori e shpërfill atë etiketë dhe vazhdon. Ti mendon se ke ndërtuar një grup faqesh të lidhura ndërkombëtarisht; në fakt ke faqe të palidhura që konkurrojnë me njëra-tjetrën.

Pasoja praktike është që vizitori nga Kosova merr versionin anglisht, ose anasjelltas — dhe largohet.

Në rastin më të keq, faqet e ndryshme gjuhësore trajtohen si dublikatë të njëra-tjetrës, dhe motori zgjedh të shfaqë vetëm njërën.

Gabimi i shpeshtë me en_US vjen nga zakoni i programimit: në kod, lokalet shkruhen me nënvijë. Në HTML ato shkruhen me vizë. Një shabllon që e kalon variablin drejtpërdrejt e prish çdo etiketë.

Si rregullohet

<link rel="alternate" hreflang="sq"        href="https://shembull.com/">
<link rel="alternate" hreflang="sq-XK"     href="https://shembull.com/xk/">
<link rel="alternate" hreflang="en"        href="https://shembull.com/en/">
<link rel="alternate" hreflang="x-default" href="https://shembull.com/">

Hapat:

  • Vizë, jo nënvijë: en-US, kurrë en_US.
  • Gjuha e para, rajoni i dyti. en-GB do të thotë anglisht për Britaninë; GB-en nuk ekziston.
  • Vetëm rajon nuk lejohet. hreflang="US" është i pavlefshëm; duhet en-US.
  • URL absolute te href.
  • Të gjitha versionet duhet të tregojnë te njëra-tjetra, në mënyrë reciproke. Nëse faqja A tregon te B, B duhet të tregojë te A.
  • Kontrollo shabllonin, jo një faqe të vetme — gabimi është zakonisht i njëjtë kudo.

Si e mat ky mjet

InternationalSeoAnalyzer::analyzeHreflang() (services/InternationalSeoAnalyzer.php:85) merr çdo //link[@rel="alternate"][@hreflang], e normalizon vlerën, kapërcen x-default, ndan pjesën para vizës dhe e krahason me një listë të fiksuar prej 139 kodesh ISO 639-1 (:93).

Kodet që nuk gjenden në listë mblidhen dhe raportohen bashkë si paralajmërim me −10 pikë (:34).

Një kopje e dytë e mbledhjes së etiketave hreflang ndodhet te MetaAnalyzer::analyzeHreflang() (services/MetaAnalyzer.php:230), por ajo nuk prodhon asnjë konstatim.

Çfarë NUK e mat

Ndarja bëhet te vija e parë dhe validohet vetëm pjesa e parë. Kjo do të thotë se rajoni nuk kontrollohet fare: sq-ZZ, sq-123 ose sq-Kosova kalojnë të gjitha, sepse sq është i vlefshëm.

Një vlerë me nënvijë si en_US nuk ndahet, prandaj e gjithë vlera krahasohet me listën, nuk gjendet, dhe raportohet saktë si e pavlefshme — por si kod gjuhe i panjohur, jo si gabim formati.

Lista e 139 kodeve është e ngurtë dhe përmban disa kode të vjetruara (jw, in, iw, mo) ndërsa nuk përfshin variante me shkrim si zh-Hans. Një zh-Hans kalon vetëm sepse zh është në listë.

Nuk kontrollohet asnjëra nga kërkesat e vërteta të hreflang-ut: reciprociteti midis faqeve, ekzistenca e URL-ve të synuara, apo përputhja e tyre me canonical-in.

Kodi që e kryen matjen

  • services/InternationalSeoAnalyzer.php:85InternationalSeoAnalyzer::analyzeHreflang
  • services/InternationalSeoAnalyzer.php:93validLangs
  • services/MetaAnalyzer.php:230MetaAnalyzer::analyzeHreflang

Standardi