國際地址格式的難題通常不是翻譯,而是「哪一行放什麼」與「這個國家把哪一層寫得比較前面」。同一個地址換一個國家,街道名稱的語序、行政區的位置、郵遞區號所在的行都會改變。以下說明幾種主要習慣、欄位命名的陷阱,以及跨國系統該怎麼分開處理資料與顯示。
地址線序為什麼各國不同
地址是人寫給郵差看的,因此它的排列方式反映的是當地辨識方向的方法。有些地方需要先知道大範圍再逐步縮小,有些地方則從門牌開始往外描述。這兩種習慣都能準確送達,差別只在閱讀者從哪一端開始定位。
線序一旦固定下來,就會滲進整個系統:信封上的排版、名片上的寫法、身分文件上的欄位順序。當你只看到某一國的地址時,很容易誤以為那個順序是通則,於是把整份地址當成一個字串處理,日後要拆開就非常痛苦。
這也是為什麼跨國系統通常會把地址拆成多個語意欄位,而不是只存一段文字。
由大到小與由小到大的兩種習慣
東亞地區常見的寫法是從大範圍開始,依序寫到街道與門牌,最後補上收件人;歐美常見的寫法剛好相反,先寫門牌與街道,再寫城市、行政區與郵遞區號。兩種習慣各自內部也可能再變化,例如同一區域的國家不一定都採用同一種順序。
| 習慣 | 起點 | 常見地區 |
|---|---|---|
| 由大到小 | 行政區或城市 | 東亞多地 |
| 由小到大 | 門牌與街道 | 歐美多地 |
| 混合 | 依文件格式而定 | 國際表單常見 |
在跨國表單上,混合的情況其實最多:欄位是拆開的,排版卻要拼成當地習慣的樣子。這代表系統需要同時保留「各欄位的值」與「這個國家的顯示順序」,而兩者是由不同來源決定的。
同一個國家內部也可能因為用途不同而改變順序,護照、報關文件與網站表單的排版就不一定一致。這也是為什麼把整份地址存成一個字串,在跨國情境下幾乎一定會後悔:那一串文字裡混住了資料本身與顯示方式,日後想換一種排版就得重新解析一次。
務實的折衷是資料層維持中性欄位,顯示層才依國家決定順序與標籤,並把這層對應關係集中成一張可維護的設定。新增一個國家時只要加一筆設定,不必回頭改動已經上線的欄位與驗證邏輯。
省、都道府縣與聯邦州該怎麼稱呼?
各國對第一級行政區的稱呼不盡相同,有的叫省、有的叫都道府縣、有的叫聯邦州,還有用大區、郡、縣等不同名稱。把它們全部塞進一個叫做「州」的欄位,短期看起來很方便,長期會讓介面文案、驗證規則與報表都變得難以理解。
比較穩健的做法是給欄位一個中性的內部名稱,另外準備一組可翻譯的標籤,讓介面在各地顯示當地慣用的說法。使用者看到的是他熟悉的詞,系統裡跑的仍然是同一個語意。日本的國家頁與德國的國家頁在欄位標示上就呈現了這種差異。
反過來說,如果資料庫欄位名稱直接叫「state」,日後要服務不以州為單位的國家時,就只能靠註解解釋,而註解不會被新加入的同事讀到。
本地文字與羅馬化要怎麼並存?
國際郵件傳統上會同時保留本地文字與拉丁字母轉寫,因為在跨國轉運過程中,機器與不同語言的郵務人員都需要能辨識。對系統而言,這帶來一個設計問題:同一筆地址會有兩種寫法,它們是不同的欄位,還是同一個欄位的替代表示?
實務上比較好處理的方式是把它們視為兩份可並存的表示,而不是互相覆蓋。運送與顯示可能用其中一種,搜尋與比對可能用另一種,資料來源也可能只提供其中一種。若只留一種並且隨時覆寫,之前的寫法就再也找不回來了。
在測試資料裡,同時準備本地文字與羅馬化的樣本也很重要,因為欄位長度、字元寬度與排序在兩種寫法下都可能不同。
國際郵件為什麼把國名寫在最後?
這是長久以來的慣例:地址從最精確的層級往大範圍寫,最後才寫目的國,讓分揀過程中每一站讀到的資訊都能逐步收斂。當跨國郵件要在多個國家之間轉運時,把國名放在最後一行也方便在最後一段旅程被辨識。
對表單設計者來說,這個慣例的實際意義是「國名通常單獨一行」,而不是混在郵遞區號或城市後面。選填與必填的差別也要考慮:在只服務單一國家的表單裡,國名可能根本不需要讓使用者填。
順帶說明本站資料的性質:產生的內容只供測試,不能投遞。裡面的國名、城市與街道都是為了驗證排版與欄位而造的假資料,不會指向任何真實的收件位置,也不適合拿來當居住證明或繞過地址驗證的手段。它適合的場合是測試環境裡那些需要「看起來像真的、但不可能誤送」的樣本。
給開發者:欄位語意不要綁在顯示順序上
- 一個欄位只代表一種語意,不要把「城市 + 行政區 + 郵遞區號」合成一格。
- 顯示順序依國家決定,並且可以獨立於資料結構調整。
- 欄位標籤要能翻譯,內部名稱保持中性。
- 同一個語意在不同國家的必填狀態可能不同,規則要能依國家切換。
- 保留原始輸入,正規化另存一份,避免覆蓋掉使用者真正寫的內容。
本站的隨機地址產生器就是依這個原則運作:先選國家,再依該國的習慣產生街道、城市、行政區與郵遞區號,欄位彼此一致而且排版符合當地寫法,可以直接拿來驗證表單在跨國情境下的顯示結果。要處理國家與行政區代碼的選擇,可以接著讀ISO 國家與行政區代碼。
下一步
先在表單上實際跑幾個順序相反的國家,確認切換國家後欄位標籤、必填狀態與排版都會跟著變;再把顯示順序抽離成獨立設定,別讓它藏在字串拼接的程式碼裡。另外,本地文字與羅馬化兩種寫法都各留一份樣本,才看得出欄位長度夠不夠。想看單一國家內部的細節,讀美國地址格式。