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-GBdo të thotë anglisht për Britaninë;GB-ennuk ekziston. - Vetëm rajon nuk lejohet.
hreflang="US"është i pavlefshëm; duheten-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:85— InternationalSeoAnalyzer::analyzeHreflangservices/InternationalSeoAnalyzer.php:93— validLangsservices/MetaAnalyzer.php:230— MetaAnalyzer::analyzeHreflang