NPC 與送貨點多語言對照方案

目標:讓配置區域(角色配置區域、送貨點配置區域)在 6 種語言下顯示官方譯名,與遊戲內實際名稱一致,各語言節點相互對應。

1. 現狀

遊戲是《明日方舟:終末地》(Arknights: Endfield,鷹角網路)。配置資料在 src/data/delivery_area.py

配置區域 資料來源 示例
送貨點(地點) delivery_locations + transfer_search_area 武陵城、試驗園區
角色(目標 NPC) delivery_targets_by_location 常澐、彥寧、齊綸、於施、蘇白易、普里莫(武陵城);趙昭、裴令容、阿禾(試驗園區)
送貨點配置鍵 _to_delivery_point_config_key通向{地点}送货点 通向武陵城送貨點、通向試驗園區送貨點

1.1 多語言通道

  • OCR/識別文本assets/lang/world_map.json(85 鍵,6 語言節點),經 get_world_map_text/get_world_map_matcher 讀取(src/data/world_map_utils.py),get_delivery_targets(area, lang_accessor) 已支援傳入 lang_accessor
  • UI 顯示:配置鍵名(中文)經 gettext og.app.tr() 翻譯,i18n/*/LC_MESSAGES/ok.po
  • 語言啟用src/data/lang/__init__.py ACTIVE_LOCALES_CONFIG 目前僅啟用 zh_CN/zh_TW,en_US/ja_JP/ko_KR/es_ES 節點存在但未啟用。

1.2 現有問題

  1. NPC 名無任何語言節點:world_map.json 中沒有常澐/彥寧等條目,OCR 與本地化會 fallback 到中文。
  2. 現有地點譯名與官方不符(機翻/拼音):
中文 現有 en_US 官方英文
武陵城 Wulingcheng Wuling City
試驗園區 Experimental Park Test Area
武陵 武陵 Wuling
四號谷地 valley four Valley IV
清波寨 Qingbo Village Qingbo Stockade

日/韓/西同理(実験公園 / 실험공원 / Parque Experimental 均為非官方譯法)。

2. 官方譯名資料來源

官方站點endfield.gryphline.com 語言切換支援 13 種(English / 繁體中文 / 日本語 / 한국어 / Español / Português / Français / Deutsch / Русский / Italiano / Indonesia / ไทย / Tiếng Việt),URL 字首 /en-us/zh-tw/ja-jp/ko-kr 等;簡中站 endfield.hypergryph.com。官方多語言 X 賬號:@AKEndfieldJP@AKEndfieldKR

官方地圖 API(最強穩定源,2026-08 已實測可用)

  • 雙域名,語言由域名決定(lang/language/locale/i18n_lang query、lang/x-language/accept-language header、lang/sk-language/x-language cookie 全部實測無效,sk-language: ja-jp 等長程式碼返回空串):
    • 國際服 zonai.skport.com → 官方英文(mark/info.lang=en
    • 國服 zonai.skland.com → 官方簡中(mark/info.lang=zh_Hans
  • 四語擴充套件(2026-08 實測突破)sk-language header 接受短程式碼 ja / ko / en / zh,返回官方日/韓/英/簡中資料(如 map02:sk-language: ja→武陵、ko→무릉、zh→空/回退 skland 域、en→Wuling)。實測覆蓋:ja ko en zh 四碼有效;zh-tw de es fr id it pt ru th vi 及所有長程式碼返回空串(服務端僅釋出這 4 語)。注意zh 在 skport 域返回空名,簡中須走 skland 域。
  • 端點:/web/v1/game/endfield/map/{tree|catalog|mark/list|mark/info},公開免鑑權(web/v1/wiki/* 需簽名 401,不在本方案範圍)。
  • tree:地圖/層級/地區名對照(Wuling City=武陵城=武陵城=무릉성、Test Area=試驗園區=実験區域=실험 구역、Qingbo Stockade=清波寨=清波砦=청파채、Valley IV=四號谷地=四號谷地=4번 협곡、Yinglung Pass=應龍關=応龍関=응룡 관문、Jingyu Valley=景玉谷=景玉谷=경옥 골짜기、Sword Vault Dale=藏劍谷=蔵剣谷=장검 골짜기、Marker Stone=首墩=首礎=수돈、North Wuling Exclusion Zone=北部禁區=北部封鎖區域=북쪽 금지 구역 等,含全部 subLevel 與 region 層名);catalog:POI 型別名對照(Depot Node=倉儲節點=保管ボックス=저장고 노드、Recycling Station=資源回收站=資源回収所=재활용센터、Zipline=滑索=ジップライン=집라인、TP Point=協議傳送點=協約転送ポイント=프로토콜 전송 지점、Stock Redistribution Terminal=物資排程終端=商品取引端末=물자 관리 단말기、Energy Alluvium=能量淤積點=超域活性點=에너지 응집점 等 160 項);mark/list+mark/info:點位座標及型別(mark/info 的 lang 欄位隨 sk-language 變:en/zh_Hans/ja/ko)。
  • 西語源(es_ES,2026-08 實測):官方地圖 API 不提供 es。github.com/Terra-Online/Atlos(社群互動地圖倉庫,TypeScript)的 talos/src/locale/data/region/es-ES.json 提取自遊戲本地化,覆蓋 VL/WL/DJ 全地圖與 site 級:Valle IV=四號谷地、La Base=樞紐區、Meseta de poder=供能高地、Ciudad de Wuling=武陵城、Valle de Jingyu=景玉谷、Empalizada Qingbo=清波寨、Área de pruebas=試驗園區、Piedra Marcadora=首墩、Valle Ocultaespadas=藏劍谷、Cantera Aburrey=阿伯莉採石場 等(共 145/168 site,缺 應龍關 lv007 與 北部禁區 lv008 的 site 級——Atlos 全語言 region 資料均未收錄這兩區域)。該倉庫同時含 locale/data/game/{en-us,zh-cn,ja-JP,ko-KR,es-ES}.json(markerType 全部 POI 分類多語言)與 locale/data/ui/*(13 語 UI 文案)。
  • 前端參考:game.skport.com/map/endfield(webpack main.aaa4ad7b.js → chunk 871.e75ec14f.js,確認域名由 L 標誌切換;語言選擇 UI 支援 13 種但 API 資料僅 英/簡中/日/韓 四語)。
  • 其它可程式設計源:endfield.wiki.gg/api.phpendfield.fandom.com/api.php(MediaWiki API,可查 Category:NPCs)。
  • 社群逆向文件:github.com/AixLnyt/skport-api-docs(Skport/Gryphline API 端點彙總,含簽名演算法;遊戲資料 API 需 cred/salt 簽名,不在本方案範圍)。daydreamer-json/ak-endfield-api-archive(官方 CDN 清單存檔,archive 分支 output/,包體在外部下載庫,過大不採用)。
  • wiki.gg NPC 源實測(2026-08)api.php?action=query&list=categorymembers&cmtitle=Category:NPCs&cmlimit=500 返回 176 個 NPC 標題,10 個送貨 NPC 全部命中(Chang Yun、Yan Ning、Qi Lun、Yu Shi、Su Baiyi、Primo Linde、Zhao Zhao、Pei Lingrong、Ah He、Ruan Yi),en_US 列以此為準。物品名規律:opensearch 可查電池類(中容谷地電池=LC Valley Battery、低容=SC、高容=HC、武陵電池=Wuling Battery)。注意:該分類混入明日方舟本體 NPC(Abner、Ace、Andoain 等),篩選時須排除。
語言 主要源 備選源
en_US 官方地圖 API(zonai.skport.com + sk-language: en,免鑑權)、endfield.wiki.gg(NPC 最全)、endfield.fandom.com(按地區+職責) 官網 /en-us、endfieldhub.org、Game8 EN
ja_JP 官方地圖 API(zonai.skport.com + sk-language: ja 官網 /ja-jp、appmedia.jp/arknights_endfield、game8.jp/arknights-endfield、gamewith.jp/akendfield、gameranbu.jp/endfield
ko_KR 官方地圖 API(zonai.skport.com + sk-language: ko 官網 /ko-kr、namu.wiki/명일방주: 엔드필드、arca.live akendfield 頻道、game.naver.com 專區
es_ES Atlos 倉庫 locale/data/region/es-ES.json(遊戲本地化提取,GitHub raw 免鑑權) 官網 Español 版、guslok.com(Ciudad de Wuling 攻略)、vortexgaming.io/es、evelongames.com

2.1 已核實對照表(中 → 英/日/韓/西)

「待核實」= 該語言尚無官方來源證實(日/韓地名與 POI 型別已全部官方核實;es 地名除應龍關/北部禁區 site 級外已核實;NPC 名日/韓/西仍待核實),落地時節點留空回退 zh_CN(見 §3)。

中文 en_US(官方) ja_JP(官方 API) ko_KR(官方 API) es_ES(Atlos) 來源
武陵 Wuling 武陵 무릉 Wuling 官方地圖 API(sk-language ja/ko)
武陵城 Wuling City 武陵城 무릉성 Ciudad de Wuling 官方地圖 API、Atlos region
試驗園區 Test Area 実験區域 실험 구역 Área de pruebas 官方地圖 API、Atlos region
首墩 Marker Stone 首礎 수돈 Piedra Marcadora 官方地圖 API、Atlos region
清波寨 Qingbo Stockade 清波砦 청파채 Empalizada Qingbo 官方地圖 API、Atlos region
應龍關 Yinglung Pass 応龍関 응룡 관문 (Atlos 缺) 官方地圖 API
北部禁區 North Wuling Exclusion Zone 北部封鎖區域 북쪽 금지 구역 (Atlos 缺) 官方地圖 API
四號谷地 Valley IV 四號谷地 4번 협곡 Valle IV 官方地圖 API、Atlos region
樞紐區 The Hub 中樞エリア 거점 지역 La Base 官方地圖 API、Atlos region
谷地通道 Valley Pass 谷地通路 협곡길 Senda del valle 官方地圖 API、Atlos region
阿伯莉採石場 Aburrey Quarry アブリー採石場 아부레이 채석장 Cantera Aburrey 官方地圖 API、Atlos region
源石研究園 Originium Science Park 源石研究パーク 오리지늄 연구 구역 Parque científico de originio 官方地圖 API、Atlos region
礦脈源區 Origin Lodespring 鉱山エリア 광맥 구역 Veta de origen 官方地圖 API、Atlos region
供能高地 Power Plateau エネルギー高地 에너지 공급 고지 Meseta de poder 官方地圖 API、Atlos region
景玉谷 Jingyu Valley 景玉谷 경옥 골짜기 Valle de Jingyu 官方地圖 API、Atlos region
藏劍谷 Sword Vault Dale 蔵剣谷 장검 골짜기 Valle Ocultaespadas 官方地圖 API、Atlos region
常澐 Chang Yun 待核實 상운(攻略站) 待核實 wiki.gg、arca.live zip-line 帖
彥寧 Yan Ning 待核實 언녕(攻略站) 待核實 wiki.gg、arca.live zip-line 帖
齊綸 Qi Lun 待核實 제륜(攻略站) Chi-Lun wiki.gg、arca.live zip-line 帖、vortexgaming.es
於施 Yu Shi 待核實 待核實 待核實 wiki.gg
蘇白易 Su Baiyi 待核實 소백(攻略站) 待核實 wiki.gg、naver lounge 帖
普里莫 Primo Linde 待核實 待核實 待核實 wiki.gg
趙昭 Zhao Zhao 待核實 待核實 待核實 wiki.gg
裴令容 Pei Lingrong 待核實 待核實 待核實 wiki.gg
阿禾 Ah He 待核實 待核實 待核實 wiki.gg
阮藝(幹員) Ruan Yi 待核實 待核實 待核實 wiki.gg(Ruan Yi/NPC)
資源回收站 Recycling Station 資源回収所 재활용센터 待核實(Atlos game 缺?) 官方地圖 API(sk-language ja/ko)
倉儲節點 Depot Node 保管ボックス 저장고 노드 待核實 官方地圖 API(sk-language ja/ko)
滑索 Zipline ジップライン 집라인 待核實 官方地圖 API(sk-language ja/ko)
物資排程終端 Stock Redistribution Terminal 商品取引端末 물자 관리 단말기 待核實 官方地圖 API(sk-language ja/ko)
能量淤積點 Energy Alluvium 超域活性點 에너지 응집점 待核實 官方地圖 API(sk-language ja/ko)
中容谷地電池 LC Valley Battery 待核實 待核實 待核實 wiki.gg(LC=Low Capacity);同類:低容=SC Valley Battery、高容=HC Valley Battery、武陵電池=Wuling Battery
協議採錄樁 Protocol Datalogger 協約測定裝置 프로토콜 데이터 수집기 待核實 官方地圖 API(sk-language ja/ko)
協議傳送點 TP Point 協約転送ポイント 프로토콜 전송 지점 待核實 官方地圖 API(sk-language ja/ko)
襲擊預警終端 EW Terminal 襲撃警備端末 습격 경보 단말기 待核實 官方地圖 API(sk-language ja/ko)
危機合約 Contingency Contract 危機契約 위기 협약 待核實 官方地圖 API(sk-language ja/ko)
影拓豐碑 Umbral Monument 映像の記念碑 그림자 이정표 待核實 官方地圖 API(sk-language ja/ko)
待回收物品 Salvageable 未回収アイテム 회수 대기 아이템 待核實 官方地圖 API(sk-language ja/ko)
熾燃!競技大會! HEAT RAGE! MEGA ARENA! 燃えよ!アリーナ! 타올라라! 경기 대회! 待核實 官方地圖 API(sk-language ja/ko)

備註

  • 官方地圖 API 四語資料同構(templateId/地圖 ID 完全一致),僅名稱語言不同(skport 域 + sk-language 短程式碼:en/ja/ko;skland 域=簡中),已實測指令碼化批次拉取(/map/tree/map/catalog),產出 JSON 快照保存於 C:\Users\26309\AppData\Local\Temp\opencode\skport\official_tree_{zh,en,ja,ko}.jsonofficial_catalog_{zh,en,ja,ko}.jsonofficial_five_lang.json(含 es)。mark/list 含滑索/倉儲節點/資源回收站/物資排程終端/協議傳送點等 POI 座標(templateId 已確認一致),可用於 OCR 匹配詞校驗。
  • 日文地名多用漢字(武陵城/清波砦/景玉谷/首礎/蔵剣谷/応龍関),且官方日文與中文同名的情況不少(武陵、景玉谷、幽谷、南山 等);韓文為純諺文轉寫(무릉/무릉성/실험 구역)。
  • es 地名由 Atlos 倉庫(遊戲本地化提取)提供,覆蓋 145/168 site(應龍關 lv007 與北部禁區 lv008 的 site 級缺失,Atlos 全語言 region 資料均未收錄這兩區域——如需可後續用遊戲客戶端文本表補);es NPC 名保留拼音轉寫(Chi-Lun),西語官方 NPC 譯名仍待核實。
  • 官方地圖 API 僅釋出 英/簡中/日/韓 四語(sk-language 短程式碼驗證),不含 essk-language 用長程式碼(ja-jp)返回空串而非報錯,排查語言問題時應優先用短程式碼。

3. 各語言"對上"的規則

落地時每條翻譯必須滿足"各語言節點相互對應":

  1. zh_CN:保持現有中文(配置鍵名、OCR 主語言)。
  2. zh_TW:官方繁中,用系統轉換(常澐→常澐、彥寧→彥寧、齊綸→齊綸、於施→於施、蘇白易→蘇白易、普里莫→普里莫、趙昭→趙昭、裴令容→裴令容、阿禾→阿禾;武陵城→武陵城、試驗園區→試驗園區、資源回收站→資源回收站、倉儲節點→倉儲節點)。
  3. en_US:本方案核實填寫的官方英文(上表)。
  4. ja_JP / ko_KR / es_ES:按 §2.1 對照表填入已多源核實的官方譯名;表中標「待核實」的節點留空(預設),LangAccessor 自動回退 zh_CN(_load_module 的 fallback 鏈:當前 locale → zh_CN/zh_TW → 首個可用)。留空優於機翻錯誤譯名。
  5. 停用手工翻譯校驗:任何語言節點的值必須是"官方譯名或空",不允許拼音/機翻佔位(現有 Wulingcheng / Experimental Park 屬此類,需修正)。

4. 落地設計

4.1 world_map.json 擴充套件

為每個 NPC/地點新增鍵(鍵名沿用現有 hash 風格),如:

"k_changyun": {
  "zh_CN": {"pattern": "常沄"},
  "zh_TW": {"pattern": "常沄"},
  "en_US": {"pattern": "Chang Yun"}
}

pattern 欄位用於 OCR 匹配(get_world_map_matcher),string 欄位用於顯示文本——按目標用途選擇。

4.2 配送鏈路適配

  • delivery_area.pydelivery_locations / delivery_targets_by_location 保持中文 canonical 名(鍵名不變,避免觸發 config_key_migrations)。
  • 所有對外顯示/OCR 處已通過 get_delivery_locations(area, lang_accessor) / get_delivery_targets(area, lang_accessor) 本地化(delivery_area_service.py:40-69 已支援)。
  • 待辦DeliveryTask._configure_delivery_area 目前呼叫 get_delivery_targets(self.delivery_area) 未傳 lang_accessor,需補傳,使 ends 列表本地化。
  • 通向{地点}送货点 配置鍵:鍵名保持中文不變(儲存穩定性),顯示翻譯繼續走 gettext ok.po;po 中已存在的「通向武陵城送貨點」等 msgid 由 scripts/sync_world_map_langs.py 的 po 同步邏輯(§5.4)內嵌替換內舊譯名片段。

4.3 啟用語言

ACTIVE_LOCALES_CONFIG 保持現狀(zh_CN/zh_TW),en_US 啟用前需確保全部英文譯名經官方核實。

5. 自動翻譯替換方案(工程化)

5.1 資料層(一次性指令碼)

tools/sync_world_map_from_wiki.py

  1. 內建中→英對照表(上表,人工核實後固化)。
  2. 優先從官方地圖 APIzonai.skland.com=簡中 + zonai.skport.com=sk-language: en|ja|ko/map/tree/map/catalog)拉取地點/型別四語官方名作交叉校驗;es 從 Atlos 倉庫 talos/src/locale/data/region/es-ES.json 拉取;再從 endfield.wiki.gg Category:NPCs 抓取並解析 NPC 英文名(注意排除方舟本體 NPC),輸出 JSON 供校驗:倉庫缺的、wiki 有的 → 列出待補。
  3. 生成/更新 assets/lang/world_map.json 節點:
    • zh_CN = 中文名
    • zh_TW = 繁中轉換(zhconv 或維護表)
    • en_US / ja_JP / ko_KR = 官方 API 四語(缺失則留空不寫);es_ES = Atlos 資料(缺失留空)
  4. 校驗規則(失敗即報錯):
    • en_US 非空時必須是字母/空格,禁止拼音數字混寫(正則 `^[A-Za-z][A-Za-z .'-]*# NPC 與送貨點多語言對照方案

目標:讓配置區域(角色配置區域、送貨點配置區域)在 6 種語言下顯示官方譯名,與遊戲內實際名稱一致,各語言節點相互對應。

1. 現狀

遊戲是《明日方舟:終末地》(Arknights: Endfield,鷹角網路)。配置資料在 src/data/delivery_area.py

配置區域 資料來源 示例
送貨點(地點) delivery_locations + transfer_search_area 武陵城、試驗園區
角色(目標 NPC) delivery_targets_by_location 常澐、彥寧、齊綸、於施、蘇白易、普里莫(武陵城);趙昭、裴令容、阿禾(試驗園區)
送貨點配置鍵 _to_delivery_point_config_key通向{地点}送货点 通向武陵城送貨點、通向試驗園區送貨點

1.1 多語言通道

  • OCR/識別文本assets/lang/world_map.json(85 鍵,6 語言節點),經 get_world_map_text/get_world_map_matcher 讀取(src/data/world_map_utils.py),get_delivery_targets(area, lang_accessor) 已支援傳入 lang_accessor
  • UI 顯示:配置鍵名(中文)經 gettext og.app.tr() 翻譯,i18n/*/LC_MESSAGES/ok.po
  • 語言啟用src/data/lang/__init__.py ACTIVE_LOCALES_CONFIG 目前僅啟用 zh_CN/zh_TW,en_US/ja_JP/ko_KR/es_ES 節點存在但未啟用。

1.2 現有問題

  1. NPC 名無任何語言節點:world_map.json 中沒有常澐/彥寧等條目,OCR 與本地化會 fallback 到中文。
  2. 現有地點譯名與官方不符(機翻/拼音):
中文 現有 en_US 官方英文
武陵城 Wulingcheng Wuling City
試驗園區 Experimental Park Test Area
武陵 武陵 Wuling
四號谷地 valley four Valley IV
清波寨 Qingbo Village Qingbo Stockade

日/韓/西同理(実験公園 / 실험공원 / Parque Experimental 均為非官方譯法)。

2. 官方譯名資料來源

官方站點endfield.gryphline.com 語言切換支援 13 種(English / 繁體中文 / 日本語 / 한국어 / Español / Português / Français / Deutsch / Русский / Italiano / Indonesia / ไทย / Tiếng Việt),URL 字首 /en-us/zh-tw/ja-jp/ko-kr 等;簡中站 endfield.hypergryph.com。官方多語言 X 賬號:@AKEndfieldJP@AKEndfieldKR

官方地圖 API(最強穩定源,2026-08 已實測可用)

  • 雙域名,語言由域名決定(lang/language/locale/i18n_lang query、lang/x-language/accept-language header、lang/sk-language/x-language cookie 全部實測無效,sk-language: ja-jp 等長程式碼返回空串):
    • 國際服 zonai.skport.com → 官方英文(mark/info.lang=en
    • 國服 zonai.skland.com → 官方簡中(mark/info.lang=zh_Hans
  • 四語擴充套件(2026-08 實測突破)sk-language header 接受短程式碼 ja / ko / en / zh,返回官方日/韓/英/簡中資料(如 map02:sk-language: ja→武陵、ko→무릉、zh→空/回退 skland 域、en→Wuling)。實測覆蓋:ja ko en zh 四碼有效;zh-tw de es fr id it pt ru th vi 及所有長程式碼返回空串(服務端僅釋出這 4 語)。注意zh 在 skport 域返回空名,簡中須走 skland 域。
  • 端點:/web/v1/game/endfield/map/{tree|catalog|mark/list|mark/info},公開免鑑權(web/v1/wiki/* 需簽名 401,不在本方案範圍)。
  • tree:地圖/層級/地區名對照(Wuling City=武陵城=武陵城=무릉성、Test Area=試驗園區=実験區域=실험 구역、Qingbo Stockade=清波寨=清波砦=청파채、Valley IV=四號谷地=四號谷地=4번 협곡、Yinglung Pass=應龍關=応龍関=응룡 관문、Jingyu Valley=景玉谷=景玉谷=경옥 골짜기、Sword Vault Dale=藏劍谷=蔵剣谷=장검 골짜기、Marker Stone=首墩=首礎=수돈、North Wuling Exclusion Zone=北部禁區=北部封鎖區域=북쪽 금지 구역 等,含全部 subLevel 與 region 層名);catalog:POI 型別名對照(Depot Node=倉儲節點=保管ボックス=저장고 노드、Recycling Station=資源回收站=資源回収所=재활용센터、Zipline=滑索=ジップライン=집라인、TP Point=協議傳送點=協約転送ポイント=프로토콜 전송 지점、Stock Redistribution Terminal=物資排程終端=商品取引端末=물자 관리 단말기、Energy Alluvium=能量淤積點=超域活性點=에너지 응집점 等 160 項);mark/list+mark/info:點位座標及型別(mark/info 的 lang 欄位隨 sk-language 變:en/zh_Hans/ja/ko)。
  • 西語源(es_ES,2026-08 實測):官方地圖 API 不提供 es。github.com/Terra-Online/Atlos(社群互動地圖倉庫,TypeScript)的 talos/src/locale/data/region/es-ES.json 提取自遊戲本地化,覆蓋 VL/WL/DJ 全地圖與 site 級:Valle IV=四號谷地、La Base=樞紐區、Meseta de poder=供能高地、Ciudad de Wuling=武陵城、Valle de Jingyu=景玉谷、Empalizada Qingbo=清波寨、Área de pruebas=試驗園區、Piedra Marcadora=首墩、Valle Ocultaespadas=藏劍谷、Cantera Aburrey=阿伯莉採石場 等(共 145/168 site,缺 應龍關 lv007 與 北部禁區 lv008 的 site 級——Atlos 全語言 region 資料均未收錄這兩區域)。該倉庫同時含 locale/data/game/{en-us,zh-cn,ja-JP,ko-KR,es-ES}.json(markerType 全部 POI 分類多語言)與 locale/data/ui/*(13 語 UI 文案)。
  • 前端參考:game.skport.com/map/endfield(webpack main.aaa4ad7b.js → chunk 871.e75ec14f.js,確認域名由 L 標誌切換;語言選擇 UI 支援 13 種但 API 資料僅 英/簡中/日/韓 四語)。
  • 其它可程式設計源:endfield.wiki.gg/api.phpendfield.fandom.com/api.php(MediaWiki API,可查 Category:NPCs)。
  • 社群逆向文件:github.com/AixLnyt/skport-api-docs(Skport/Gryphline API 端點彙總,含簽名演算法;遊戲資料 API 需 cred/salt 簽名,不在本方案範圍)。daydreamer-json/ak-endfield-api-archive(官方 CDN 清單存檔,archive 分支 output/,包體在外部下載庫,過大不採用)。
  • wiki.gg NPC 源實測(2026-08)api.php?action=query&list=categorymembers&cmtitle=Category:NPCs&cmlimit=500 返回 176 個 NPC 標題,10 個送貨 NPC 全部命中(Chang Yun、Yan Ning、Qi Lun、Yu Shi、Su Baiyi、Primo Linde、Zhao Zhao、Pei Lingrong、Ah He、Ruan Yi),en_US 列以此為準。物品名規律:opensearch 可查電池類(中容谷地電池=LC Valley Battery、低容=SC、高容=HC、武陵電池=Wuling Battery)。注意:該分類混入明日方舟本體 NPC(Abner、Ace、Andoain 等),篩選時須排除。
語言 主要源 備選源
en_US 官方地圖 API(zonai.skport.com + sk-language: en,免鑑權)、endfield.wiki.gg(NPC 最全)、endfield.fandom.com(按地區+職責) 官網 /en-us、endfieldhub.org、Game8 EN
ja_JP 官方地圖 API(zonai.skport.com + sk-language: ja 官網 /ja-jp、appmedia.jp/arknights_endfield、game8.jp/arknights-endfield、gamewith.jp/akendfield、gameranbu.jp/endfield
ko_KR 官方地圖 API(zonai.skport.com + sk-language: ko 官網 /ko-kr、namu.wiki/명일방주: 엔드필드、arca.live akendfield 頻道、game.naver.com 專區
es_ES Atlos 倉庫 locale/data/region/es-ES.json(遊戲本地化提取,GitHub raw 免鑑權) 官網 Español 版、guslok.com(Ciudad de Wuling 攻略)、vortexgaming.io/es、evelongames.com

2.1 已核實對照表(中 → 英/日/韓/西)

「待核實」= 該語言尚無官方來源證實(日/韓地名與 POI 型別已全部官方核實;es 地名除應龍關/北部禁區 site 級外已核實;NPC 名日/韓/西仍待核實),落地時節點留空回退 zh_CN(見 §3)。

中文 en_US(官方) ja_JP(官方 API) ko_KR(官方 API) es_ES(Atlos) 來源
武陵 Wuling 武陵 무릉 Wuling 官方地圖 API(sk-language ja/ko)
武陵城 Wuling City 武陵城 무릉성 Ciudad de Wuling 官方地圖 API、Atlos region
試驗園區 Test Area 実験區域 실험 구역 Área de pruebas 官方地圖 API、Atlos region
首墩 Marker Stone 首礎 수돈 Piedra Marcadora 官方地圖 API、Atlos region
清波寨 Qingbo Stockade 清波砦 청파채 Empalizada Qingbo 官方地圖 API、Atlos region
應龍關 Yinglung Pass 応龍関 응룡 관문 (Atlos 缺) 官方地圖 API
北部禁區 North Wuling Exclusion Zone 北部封鎖區域 북쪽 금지 구역 (Atlos 缺) 官方地圖 API
四號谷地 Valley IV 四號谷地 4번 협곡 Valle IV 官方地圖 API、Atlos region
樞紐區 The Hub 中樞エリア 거점 지역 La Base 官方地圖 API、Atlos region
谷地通道 Valley Pass 谷地通路 협곡길 Senda del valle 官方地圖 API、Atlos region
阿伯莉採石場 Aburrey Quarry アブリー採石場 아부레이 채석장 Cantera Aburrey 官方地圖 API、Atlos region
源石研究園 Originium Science Park 源石研究パーク 오리지늄 연구 구역 Parque científico de originio 官方地圖 API、Atlos region
礦脈源區 Origin Lodespring 鉱山エリア 광맥 구역 Veta de origen 官方地圖 API、Atlos region
供能高地 Power Plateau エネルギー高地 에너지 공급 고지 Meseta de poder 官方地圖 API、Atlos region
景玉谷 Jingyu Valley 景玉谷 경옥 골짜기 Valle de Jingyu 官方地圖 API、Atlos region
藏劍谷 Sword Vault Dale 蔵剣谷 장검 골짜기 Valle Ocultaespadas 官方地圖 API、Atlos region
常澐 Chang Yun 待核實 상운(攻略站) 待核實 wiki.gg、arca.live zip-line 帖
彥寧 Yan Ning 待核實 언녕(攻略站) 待核實 wiki.gg、arca.live zip-line 帖
齊綸 Qi Lun 待核實 제륜(攻略站) Chi-Lun wiki.gg、arca.live zip-line 帖、vortexgaming.es
於施 Yu Shi 待核實 待核實 待核實 wiki.gg
蘇白易 Su Baiyi 待核實 소백(攻略站) 待核實 wiki.gg、naver lounge 帖
普里莫 Primo Linde 待核實 待核實 待核實 wiki.gg
趙昭 Zhao Zhao 待核實 待核實 待核實 wiki.gg
裴令容 Pei Lingrong 待核實 待核實 待核實 wiki.gg
阿禾 Ah He 待核實 待核實 待核實 wiki.gg
阮藝(幹員) Ruan Yi 待核實 待核實 待核實 wiki.gg(Ruan Yi/NPC)
資源回收站 Recycling Station 資源回収所 재활용센터 待核實(Atlos game 缺?) 官方地圖 API(sk-language ja/ko)
倉儲節點 Depot Node 保管ボックス 저장고 노드 待核實 官方地圖 API(sk-language ja/ko)
滑索 Zipline ジップライン 집라인 待核實 官方地圖 API(sk-language ja/ko)
物資排程終端 Stock Redistribution Terminal 商品取引端末 물자 관리 단말기 待核實 官方地圖 API(sk-language ja/ko)
能量淤積點 Energy Alluvium 超域活性點 에너지 응집점 待核實 官方地圖 API(sk-language ja/ko)
中容谷地電池 LC Valley Battery 待核實 待核實 待核實 wiki.gg(LC=Low Capacity);同類:低容=SC Valley Battery、高容=HC Valley Battery、武陵電池=Wuling Battery
協議採錄樁 Protocol Datalogger 協約測定裝置 프로토콜 데이터 수집기 待核實 官方地圖 API(sk-language ja/ko)
協議傳送點 TP Point 協約転送ポイント 프로토콜 전송 지점 待核實 官方地圖 API(sk-language ja/ko)
襲擊預警終端 EW Terminal 襲撃警備端末 습격 경보 단말기 待核實 官方地圖 API(sk-language ja/ko)
危機合約 Contingency Contract 危機契約 위기 협약 待核實 官方地圖 API(sk-language ja/ko)
影拓豐碑 Umbral Monument 映像の記念碑 그림자 이정표 待核實 官方地圖 API(sk-language ja/ko)
待回收物品 Salvageable 未回収アイテム 회수 대기 아이템 待核實 官方地圖 API(sk-language ja/ko)
熾燃!競技大會! HEAT RAGE! MEGA ARENA! 燃えよ!アリーナ! 타올라라! 경기 대회! 待核實 官方地圖 API(sk-language ja/ko)

備註

  • 官方地圖 API 四語資料同構(templateId/地圖 ID 完全一致),僅名稱語言不同(skport 域 + sk-language 短程式碼:en/ja/ko;skland 域=簡中),已實測指令碼化批次拉取(/map/tree/map/catalog),產出 JSON 快照保存於 C:\Users\26309\AppData\Local\Temp\opencode\skport\official_tree_{zh,en,ja,ko}.jsonofficial_catalog_{zh,en,ja,ko}.jsonofficial_five_lang.json(含 es)。mark/list 含滑索/倉儲節點/資源回收站/物資排程終端/協議傳送點等 POI 座標(templateId 已確認一致),可用於 OCR 匹配詞校驗。
  • 日文地名多用漢字(武陵城/清波砦/景玉谷/首礎/蔵剣谷/応龍関),且官方日文與中文同名的情況不少(武陵、景玉谷、幽谷、南山 等);韓文為純諺文轉寫(무릉/무릉성/실험 구역)。
  • es 地名由 Atlos 倉庫(遊戲本地化提取)提供,覆蓋 145/168 site(應龍關 lv007 與北部禁區 lv008 的 site 級缺失,Atlos 全語言 region 資料均未收錄這兩區域——如需可後續用遊戲客戶端文本表補);es NPC 名保留拼音轉寫(Chi-Lun),西語官方 NPC 譯名仍待核實。
  • 官方地圖 API 僅釋出 英/簡中/日/韓 四語(sk-language 短程式碼驗證),不含 essk-language 用長程式碼(ja-jp)返回空串而非報錯,排查語言問題時應優先用短程式碼。

3. 各語言"對上"的規則

落地時每條翻譯必須滿足"各語言節點相互對應":

  1. zh_CN:保持現有中文(配置鍵名、OCR 主語言)。
  2. zh_TW:官方繁中,用系統轉換(常澐→常澐、彥寧→彥寧、齊綸→齊綸、於施→於施、蘇白易→蘇白易、普里莫→普里莫、趙昭→趙昭、裴令容→裴令容、阿禾→阿禾;武陵城→武陵城、試驗園區→試驗園區、資源回收站→資源回收站、倉儲節點→倉儲節點)。
  3. en_US:本方案核實填寫的官方英文(上表)。
  4. ja_JP / ko_KR / es_ES:按 §2.1 對照表填入已多源核實的官方譯名;表中標「待核實」的節點留空(預設),LangAccessor 自動回退 zh_CN(_load_module 的 fallback 鏈:當前 locale → zh_CN/zh_TW → 首個可用)。留空優於機翻錯誤譯名。
  5. 停用手工翻譯校驗:任何語言節點的值必須是"官方譯名或空",不允許拼音/機翻佔位(現有 Wulingcheng / Experimental Park 屬此類,需修正)。

4. 落地設計

4.1 world_map.json 擴充套件

為每個 NPC/地點新增鍵(鍵名沿用現有 hash 風格),如:

"k_changyun": {
  "zh_CN": {"pattern": "常沄"},
  "zh_TW": {"pattern": "常沄"},
  "en_US": {"pattern": "Chang Yun"}
}

pattern 欄位用於 OCR 匹配(get_world_map_matcher),string 欄位用於顯示文本——按目標用途選擇。

4.2 配送鏈路適配

  • delivery_area.pydelivery_locations / delivery_targets_by_location 保持中文 canonical 名(鍵名不變,避免觸發 config_key_migrations)。
  • 所有對外顯示/OCR 處已通過 get_delivery_locations(area, lang_accessor) / get_delivery_targets(area, lang_accessor) 本地化(delivery_area_service.py:40-69 已支援)。
  • 待辦DeliveryTask._configure_delivery_area 目前呼叫 get_delivery_targets(self.delivery_area) 未傳 lang_accessor,需補傳,使 ends 列表本地化。
  • 通向{地点}送货点 配置鍵:鍵名保持中文不變(儲存穩定性),顯示翻譯繼續走 gettext ok.po;po 中已存在的「通向武陵城送貨點」等 msgid 由 scripts/sync_world_map_langs.py 的 po 同步邏輯(§5.4)內嵌替換內舊譯名片段。

4.3 啟用語言

ACTIVE_LOCALES_CONFIG 保持現狀(zh_CN/zh_TW),en_US 啟用前需確保全部英文譯名經官方核實。

5. 自動翻譯替換方案(工程化)

5.1 資料層(一次性指令碼)

tools/sync_world_map_from_wiki.py

  1. 內建中→英對照表(上表,人工核實後固化)。
  2. 優先從官方地圖 APIzonai.skland.com=簡中 + zonai.skport.com=sk-language: en|ja|ko/map/tree/map/catalog)拉取地點/型別四語官方名作交叉校驗;es 從 Atlos 倉庫 talos/src/locale/data/region/es-ES.json 拉取;再從 endfield.wiki.gg Category:NPCs 抓取並解析 NPC 英文名(注意排除方舟本體 NPC),輸出 JSON 供校驗:倉庫缺的、wiki 有的 → 列出待補。
  3. 生成/更新 assets/lang/world_map.json 節點:
    • zh_CN = 中文名
    • zh_TW = 繁中轉換(zhconv 或維護表)
    • en_US / ja_JP / ko_KR = 官方 API 四語(缺失則留空不寫);es_ES = Atlos 資料(缺失留空)
  4. 校驗規則(失敗即報錯):
    • en_US 非空時必須是字母/空格,禁止拼音數字混寫(正則 )
    • 不允許 WulingchengExperimental Park 類已知錯誤譯名殘留
    • 每個中文名在對照表中必須有對映,或顯式標記"未核實"

5.2 檢查機制(CI/測試)

tests/test_world_map_i18n.py

  • 遍歷 delivery_area.py 全部地點/NPC 名,斷言 world_map.json 中存在對應節點。
  • 斷言 en_US 節點值滿足官方名規則(非空、無拼音混寫)。
  • 斷言 zh_TW 節點存在。
  • 斷言不包含黑名單錯誤譯名。

5.3 後續語言補充流程(ja/ko/es)

按 §2.1 表,日/韓已全量官方核實(官方地圖 API sk-language: ja|ko,160 項 catalog + 全地圖/層級/site 名);西語地名已由 Atlos 提取(145/168 site,缺 應龍關/北部禁區 site 級);其餘 NPC 名(日/韓/西)待以下官方渠道齊備後逐條核實再填,遵循「官方譯名或留空」原則:

  • 日文:appmedia 武陵城ジップライン/NPC 相關頁面、game8.jp、官網 /ja-jp 公告
  • 韓文:namu.wiki 등장인물 文件(被反爬時可經搜尋摘要/存檔站讀取)、X @AKEndfieldKR
  • 西語:官網 Español 版新聞、西語社群攻略(guslok.com 等)
  • es 應龍關/北部禁區 site 級:後續可從遊戲客戶端本地化文本表補(或查 Atlos 更新)

5.4 ok.po 譯名同步

scripts/sync_world_map_langs.py 在重新整理 world_map.json 與 tools/official_five_lang.json 快照後,還會把官方譯名同步進 i18n/{en_US,ja_JP,ko_KR,es_ES}/LC_MESSAGES/ok.po

  1. 精確匹配:msgid(去尾 \n)與官方 zh 名一致 → 整條 msgstr 替換為官方譯名(ja 官方未翻譯的名可能直接是中文/片假名,屬官方資料)。
  2. 內嵌替換:msgid 含官方 zh 名(子串)且 msgstr 含該名舊譯名 → 文本替換為新譯名,如「通向試驗園區送貨點」的 Test ZoneTest Area、ja「武陵買入價」的 ウーリン武陵。按 zh 名長度降序處理,避免短名子串衝突。
  3. 變更後同目錄 ok.mo 同步用 polib 重編譯。
  4. 冪等:官方譯名已是最新時不產生任何 diff。

注意:官方 catalog 個別條目存在編號錯位(如 高階培養I ↔ II 的英文名顛倒),po 同步忠實採用官方資料;tests/TestPoLocaleConsistency.py 對官方各語言與英文相同的條目(如 es「武陵」= Wuling)有 OFFICIAL_SAME_AS_ENGLISH 豁免集。

6. 分階段計劃

階段 內容 產出
1 固化多語言對照表 + 修正 world_map.json 現有錯誤譯名 + 補 NPC 節點(見 §8 清單 A/C) world_map.json 更新
2 DeliveryTask 補傳 lang_accessor,ends/地點 OCR 本地化生效;修 DeliveryTask.json / TakeDeliveryTask.json / WarehouseTransferTask.json 錯譯與重複鍵(清單 D) 程式碼小改
3 同步指令碼 + 測試檔案 tools/ + tests/
4 zh_TW 全量核對;en_US 啟用 ACTIVE_LOCALES_CONFIG 語言切換可用
5 統一兩通道譯名:po(gettext)與 assets/lang JSON 同名概念保持一致(清單 B) po 重編譯 + JSON 校準
6 雜項:login_mixin 硬編碼中文、to_model_area 中文模組名、daily_demo/daily_liaison 殘缺節點(清單 E) 程式碼小改

7. 相關文件

  • docs/dev/i18n_OCR配置流程.md:語言資源兩套機制說明
  • docs/dev/API.md §530-558:語言資源 API
  • src/data/lang/__init__.py:LangAccessor / fallback 實現

8. 類似資料配置盤點(2026-08 全庫調查)

delivery_area.py + world_map.json 外,以下配置同樣包含中文名/中文文本,涉及多語言或 OCR 匹配。狀態分三級:已本地化(節點齊全但譯名待校準)、半本地化(部分通路未接 lang / 缺節點)、未本地化(硬編碼中文)。

A. 同類的"中文地點/NPC/物品"資料來源

# 檔案 內容 狀態 問題
A1 assets/data/delivery_area.json(載入器 src/data/delivery_area.py 地區/地點/NPC 半本地化 10 個 NPC 無語言節點;DeliveryTask._configure_delivery_area:92-93 未傳 lang_accessor
A2 assets/data/world_map.json(載入器 src/data/world_map.py 地點/據點/貨物/關卡/倉庫對映 已本地化 主資料全名自動補 lang 節點(sync_world_map_langs.py sync_canon),官方有譯名則填;官方新增名列印 MANUAL 提示人工決定是否入主資料
A3 assets/data/characters.json(載入器 src/data/characters.py 30 幹員名 已本地化 官方六語已同步(endfield.wiki.gg 自動同步);canonical en 為內部 ID(FeatureList 繫結),不與官方名一致屬設計
A4 src/data/zh_en.py:19-130 103 物品中→英 feature 名 未本地化(設計如此) 僅模板匹配(WarehouseTransferTask.py:61,176),無需 lang
A5 assets/items/map/item_names.json 154 地圖實體中文名 未本地化 ItemNavigatorTask.py:22,65,365 純中文讀取

B. 兩通道譯名不一致(po gettext vs JSON OCR)

概念 po(gettext) assets/lang JSON 官方參考
倉儲節點 Storage Node Warehousing node(DeliveryTask.json k_a72a252f Depot Node
武陵城 Wuling City Wulingcheng(world_map.json k_93e2bdac Wuling City
試驗園區 Test Zone/Test Area Experimental Park(world_map.json k_ba83829f Test Area

C. world_map.json 內的可疑/錯誤譯名(§2.1 表之外)

中文 現有 en_US 官方(2026-08 官方地圖 API 四語 + wiki.gg + Atlos es)
k_214efec8 四號谷地 valley four Valley IV(map01),ja 四號谷地 / ko 4번 협곡 / es Valle IV
k_f87e5ddb 中容谷地電池 Zhongrong Valley Battery LC Valley Battery(wiki.gg,LC=Low Capacity);zh_TW 多"量"字、ja 中栄谷砲台 錯譯(同類:低容谷地電池=SC Valley Battery、高容=HC Valley Battery、武陵電池=Wuling Battery)
k_ece5ec1b 清波寨 Qingbo Village Qingbo Stockade(map02_lv003),ja 清波砦 / ko 청파채 / es Empalizada Qingbo;現有 ja 青波村 錯譯

D. 任務 OCR 按鈕錯譯(assets/lang/*.json)

檔案 中文 現有譯名 問題
DeliveryTask.json k_c7b4d04e 送達 en service / ja サービス / ko 서비스 全部譯成"服務",應 delivered/納品 類
DeliveryTask.json k_6536f6f1 資源 ko 의지(意志) 可疑
DeliveryTask.json k_a72a252f / _1 倉儲節點 Warehousing node 官方 Depot Node;且存在重複鍵
DeliveryTask.json k_ae8fb114 vs k_accept_delivery 運送委託列表/接取運送委託 譯名不統一 統一術語
WarehouseTransferTask.json (存放) 存放 ja / ko 가게 商店?錯譯
daily_routine_mixin.json k_3ecdd4bb 鍵領取 疑似"一鍵領取"漏字
daily_routine_mixin.json k_7d394484/_1k_39d12e73/_1 重複鍵 清理
daily_liaison_mixin.json 艦橋/信賴/存放 缺 en_US,英文環境回退中文

E. 硬編碼中文 / 結構殘缺(未本地化)

檔案 位置 問題
src/tasks/mixin/login_mixin.py L64 re.compile("最近")、L72 click_text("登录") 硬編碼中文
src/core/base_mixin/game_flow_mixin.py:604-608daily_logistics_mixin.py:57,104daily_buy_mixin.py:44daily_demo_mixin.py:87 to_model_area("物资调度"/"仓储节点"/"据点管理"/"武陵") 中文模組名硬編碼(OCR 用 feature 識別,影響較小)
assets/lang/daily_demo_mixin.json 結構殘缺 double_reward 僅中繁;k_27d2b829 等僅有 en_US 無中文
assets/lang/map_mixin.jsonnavigation_mixin.json 死資源 程式碼無引用(k_8967d3c6 在 daily_battle 複用)
在 GitHub 查看來源 ↗ · 頁面產生時間: 2026年8月10日