hexo-theme-icarus
hexo-theme-icarus copied to clipboard
[建議] 優化 <html> 的 lang 屬性
功能問題描述
目前在 layout.jsx 裡,設定 <html> 的語言屬性:
const language = page.lang || page.language || config.language;
<html lang={language ? language.substr(0, 2) : ''}>
這段程式碼會將語言值截斷為前兩個字元,例如 zh-TW 被轉成 zh。 此行為導致以下問題:
-
語言設定不完整 使用 zh-TW、zh-CN 等完整語言標籤會被截斷成 zh,使瀏覽器、搜尋引擎無法準確判斷內容語系。
-
字型渲染錯誤 字體設定為 sans-serif 的情況下:
- 正確情況:lang="zh-TW" → fallback 為 Microsoft JhengHei(微軟正黑體)
- 實際情況情況:lang="zh" → fallback 為 Microsoft YaHei(微軟雅黑)
-
SEO / 可及性(Accessibility)/ 翻譯行為受影響
- 搜尋引擎會根據 lang 屬性決定語系與索引區域設定。
- Screen reader 會依據語言切換發音方式。
- 瀏覽器內建翻譯功能會依 lang 來判斷是否需要翻譯。
解決方法建議
改為保留完整語言設定,不進行 substr(0, 2) 截斷。
若沒有明確指定,預設語言為 en。
建議修改如下:
const language = page.lang || page.language || config.language || 'en';
<html lang={language}>
這樣能:
保留正確的語言標籤(如 zh-TW、zh-CN、en-US 等)。
維持向下相容(未設定的情況仍會預設為 en)。
改善字型 fallback、SEO、Accessibility 等多方面表現。
額外說明
如果這個修改方向可被接受的話,我可以協助調整程式並提交一個 PR。