快轉到主要內容

Immich 繁體中文地理資料技術解析(三):五個地區,五種方案

··2686 字·6 分鐘
目錄
immich-geodata-zh-tw - 本文屬於一個選集。
§ 4: 本文

兩篇把機制與流程講完了:Immich 從 cities500.txt 讀地名,而那份檔案由各國圖資經過 extractrelease 產生。技術上「怎麼換」已經沒有懸念,真正難的是另一件事:外國地名要顯示成什麼樣子,臺灣使用者讀起來才自然。

immich-geodata-zh-tw 目前處理五個地區,給出了五種不同的答案。這篇談的是那些答案背後的判斷標準。

各地區方案
#

地區顯示語言圖資來源
🇹🇼 臺灣繁體中文官方名稱國土測繪中心(NLSC)村里界
🇯🇵 日本日文原名(漢字與假名)国土数値情報(N03 行政区域)
🇰🇷 南韓一級行政區繁體中文,縣市為韓國官方漢字admdongkor 行政洞界
🇹🇭 泰國繁體中文翻譯,官方英文與泰文備用COD-AB(Royal Thai Survey Department / OCHA)
🇮🇩 印尼繁體中文翻譯,BIG 官方印尼文備用印尼地理空間資訊局(BIG)村級圖資
🌏 其他地區國教院官方譯名 → GeoNames 中文 → 保留原文GeoNames

五種答案看起來很雜,但依據其實只有一個:臺灣使用者看到哪一種寫法最自然。

這不是語言學上的分類。日本與韓國的行政區名以漢字書寫,臺灣讀者不需要翻譯就看得懂;而在日本地名這件事上,臺灣使用者反而更習慣看到原本的寫法(即使地名可能包含平假名或片假名)。既然如此,翻譯不會讓資訊更好讀,只會多一層出錯的機會。

反過來說,泰文與印尼文對臺灣讀者不具可讀性,那就只能翻譯。所謂「五種答案」,差別就在這裡。

日本:為什麼 Immich 直接顯示日文原名
#

日本的處理最能說明這條標準。

日本的行政區名本來就是漢字寫的:横浜市静岡県渋谷区。理論上可以「翻譯」成臺灣慣用的字形,例如「橫濱市」、「靜岡縣」、「澀谷區」,但這麼做會產生兩個問題。

第一,它不是翻譯,是轉寫。「横浜市」與「橫濱市」指的是同一個地方、同一組漢字,只是字形不同。走機器轉換反而可能會冒出「静岡県」變成「靜岡県」這種四不像的結果。

第二,對臺灣使用者來說原文更自然。「横浜市」本來就讀得懂,「うるま市」也不至於造成理解障礙;而且看慣了日本的招牌、車站與地圖之後,看到「橫濱市」反而會有一瞬間的違和。既然原文可讀又符合習慣,翻譯就只剩下製造錯誤的風險。

所以日本的 handler(專案內負責單一地區資料處理的模組)直接沿用官方圖資 N03 欄位裡的日文原名,一個字都不改。這個決定同時省掉了整套翻譯流程要面對的所有問題。

Note

日本的政令指定都市有額外處理:admin_2 只顯示市名(如「横浜市」),區名(如「中区」)放在中介 CSV 的 admin_3。郡轄町村則會判斷是否需要加郡名前綴,避免同名衝突。

南韓:縣市用官方漢字,一級行政區用慣用譯名
#

南韓的圖資給的是韓文:관악구청주시。但韓國的行政區名同樣以漢字構成,청주시 的官方漢字是「淸州市」、관악구 是「冠岳區」。這些漢字不是翻譯出來的結果,而是那個地名本來的寫法。

所以現在的做法分成兩層:

縣市層級取自韓文維基百科條目的漢字表記。 這一層有 200 多個行政區,逐一維護不現實,而漢字表記本身就是官方寫法,直接採用即可。Wikidata 在這裡只負責「認出這是哪一個實體」與驗證行政隸屬關係,名稱本身不從它身上取。

一級行政區走 handler 內建的對照表。 這一層只有 16 個,數量固定,寫死比查詢可靠,也避免結果在不同版本之間漂移。

比較值得說的是,對照表放的不是官方全稱,而是慣用的簡稱:

  • 首爾特別市 → 首爾市
  • 釜山廣域市 → 釜山市
  • 世宗特別自治市 → 世宗市
  • 全南光州統合特別市 → 全南光州市

那些行政類別的修飾詞在日常裡幾乎不會出現,放進相簿的地點欄位只會增加閱讀負擔。

道的部分也一樣,一律輸出「X道」,例如 경기도 就是京畿道。

統一成「X市」「X道」的好處是,16 個一級行政區在相簿的地點欄位裡呈現一致,不會一下子出現「特別自治道」、一下子出現「廣域市」。

這條規則也解釋了幾個看起來像沿用舊稱的輸出。강원특별자치도 去掉修飾詞得到江原道、제주특별자치도 得到濟州道,剛好與兩者改制前的名稱相同,那是巧合而不是刻意保留舊名。唯一需要額外處理的是 전북특별자치도:韓文本身用的是「全北」這個縮寫,機械套用規則會得到不成詞的「全北道」,所以對照表展開成完整的「全羅北道」。

之所以不直接採用 Wikidata 的中文標籤,是因為那層資料的品質相對還說不穩。實際遇過的情況包括:首爾 관악구 被輸出成區內的「新林洞」、송파구 變成區內的地鐵站「蠶室站」、함평군 的繁中標籤把「咸」轉成了「鹹」、여주시 的標籤停在升格前的舊名「驪州郡」。改以漢字表記為準之後,這幾類錯誤一次消除,也不需要為它們維護人工對照表。

Note

這也是為什麼你在 Immich 裡會看到「淸州市」而不是「清州市」。那是韓國官方使用的漢字字形,不是錯字。

泰國與印尼:只能翻譯
#

泰文與印尼文都不是漢字系統,นครราชสีมาKabupaten Ngawi 沒有「原本的漢字寫法」可以沿用。這兩國因此只能走翻譯路線,用 Wikidata 解析行政區實體後取繁體中文名稱。

既然是翻譯,就必須準備好翻不出來的情況。兩國的處理都是分層回退:

  • 泰國:Wikidata 繁中 → COD-AB 官方英文 → 官方泰文。
  • 印尼:Wikidata 繁中 → BIG 官方印尼文。

回退到原文看起來像是「失敗」,但它其實是刻意的選擇:顯示 Kabupaten Ngawi 至少是正確的地名,而硬湊一個來源不明的中文翻譯,反而會導致錯了也沒人看得出來。這個取捨會在下一篇:Wikidata 譯名的六種失效形態詳談。

其他地區:三層 fallback
#

沒有專屬 handler 的地區,走的是全球通用流程:

  1. 國家教育研究院《外國地名譯名》:官方臺灣譯名,目前收錄六萬多筆,優先採用。
  2. GeoNames 的中文資料:國教院沒收錄時使用。
  3. 保留原文:兩者都沒有時,維持來源語言。

所以冷門地點在 Immich 裡仍然可能顯示英文。這是刻意的。與其硬翻,不如讓使用者看到一個至少可以拿去搜尋的原名。

同一個依據,五種結果
#

回頭看,五個地區的差異其實都來自同一個問題:臺灣使用者看到什麼最自然:

  • 臺灣、日本、南韓的地名以漢字書寫,讀者不需要翻譯就看得懂,因此直接採用官方寫法。差別只在於臺灣是中文、日韓是各自的官方漢字。
  • 泰國、印尼的文字對臺灣讀者不具可讀性,因此翻譯,並準備好回退到官方原文。
  • 其他地區沒有專屬圖資,只能靠譯名資料庫補,補不到就保留原文。

值得一提的是,這幾個決定沒有一個是「哪種做法比較正確」的問題,而是「哪種做法對使用這份資料的人比較好用」。

下一篇:用 Wikidata 翻地名,以及它如何安靜地出錯會進到這條路線最麻煩的部分:用 Wikidata 翻地名時,它出錯的方式往往不會讓流程中斷,而是安靜地產出一個看起來很合理的錯誤中文名。


參考資源
#

immich-geodata-zh-tw - 本文屬於一個選集。
§ 4: 本文

相關文章

Immich 繁體中文地理資料技術解析(二):資料處理流程

··4554 字·10 分鐘
系列上一篇:反向地理編碼是怎麼運作的拆解了 Immich 怎麼讀地理資料:啟動時把幾個純文字檔匯入 PostgreSQL,照片上傳時用最近鄰查詢找出地名。既然換掉檔案就能換掉顯示結果,剩下的問題就落在那份「更好的檔案」本身。 這篇拆解 immich-geodata-zh-tw 的資料處理流程:從各國官方圖資,到使用者下載的那包 release.tar.gz。

Immich 繁體中文地理資料技術解析(一):反向地理編碼是怎麼運作的

··3450 字·7 分鐘
每當你上傳一張照片到 Immich,系統就會自動標註拍攝地點,例如「臺北市信義區」、「東京都澀谷區」。這背後並非雲端 API 的功勞,而是一套完全離線運行的反向地理編碼(Reverse Geocoding)系統。 也因為它是離線的,immich-geodata-zh-tw 這個專案才有存在的空間(實際安裝步驟見系列首篇的圖文安裝教學):Immich 從幾個純文字檔讀取地名,那麼換掉那幾個檔案,顯示出來的地名就會跟著換。 這篇是系列的技術篇第一篇,先把地基講清楚:Immich 查到一個地名時到底發生了什麼事、它讀的是哪幾個檔案,以及這個機制留下了哪些可以動手腳的空間。後續幾篇談的各國處理策略、翻譯與驗證,全部建立在這篇的基礎上。

Immich 地理編碼臺灣特化 - immich-geodata-zh-tw 專案介紹與使用教學

··4145 字·9 分鐘
本文介紹 immich-geodata-zh-tw 專案,這是一個專為繁體中文使用者打造的 Immich 反向地理編碼優化方案。除了針對臺灣進行深度的在地化處理(中文化、行政區層級補齊),支援範圍目前也涵蓋日本、南韓、泰國與印尼,其餘地區則補上臺灣慣用的中文譯名,並提供穩定的自動化更新機制。