實務專案中多語言處理分為資料多語言與介面多語言兩層面,本文分享資料層雙軌制設計經驗。
適用於文章、產品描述等大量文字內容。每筆資料含 Language 欄位標識語言,查詢時篩選對應語言。
適用於標題、公告等短字串。單一資料列以 XML 結構儲存多語言:
<ML V="1.0"> <M L="zh-CN">中文</M> <M L="en">English</M> <M L="ja">日本語</M> </ML>

| 操作 | XQuery 語法 |
|---|---|
| 取值 | 欄位名.value('(/ML/M[@L="zh-CN"])[1]', 'nvarchar(max)') |
| 取節點 | 欄位名.query('/ML/M[@L="en"]') |
| 判斷存在 | 欄位名.exist('/ML/M[@L="zh-CN"]') |
| 排序 | 先取值再 ORDER BY |

此設計相容舊系統 XML 欄位,且查詢效能優於多表 JOIN 方案。