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__.pyACTIVE_LOCALES_CONFIG目前僅啟用 zh_CN/zh_TW,en_US/ja_JP/ko_KR/es_ES 節點存在但未啟用。
1.2 現有問題
- NPC 名無任何語言節點:world_map.json 中沒有常澐/彥寧等條目,OCR 與本地化會 fallback 到中文。
- 現有地點譯名與官方不符(機翻/拼音):
| 中文 | 現有 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_langquery、lang/x-language/accept-languageheader、lang/sk-language/x-languagecookie 全部實測無效,sk-language: ja-jp等長程式碼返回空串):- 國際服
zonai.skport.com→ 官方英文(mark/info.lang=en) - 國服
zonai.skland.com→ 官方簡中(mark/info.lang=zh_Hans)
- 國際服
- 四語擴充套件(2026-08 實測突破):
sk-languageheader 接受短程式碼ja/ko/en/zh,返回官方日/韓/英/簡中資料(如 map02:sk-language: ja→武陵、ko→무릉、zh→空/回退 skland 域、en→Wuling)。實測覆蓋:jakoenzh四碼有效;zh-twdeesfriditptruthvi及所有長程式碼返回空串(服務端僅釋出這 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(webpackmain.aaa4ad7b.js→ chunk871.e75ec14f.js,確認域名由L標誌切換;語言選擇 UI 支援 13 種但 API 資料僅 英/簡中/日/韓 四語)。 - 其它可程式設計源:
endfield.wiki.gg/api.php、endfield.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}.json、official_catalog_{zh,en,ja,ko}.json、official_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短程式碼驗證),不含 es;sk-language用長程式碼(ja-jp)返回空串而非報錯,排查語言問題時應優先用短程式碼。
3. 各語言"對上"的規則
落地時每條翻譯必須滿足"各語言節點相互對應":
- zh_CN:保持現有中文(配置鍵名、OCR 主語言)。
- zh_TW:官方繁中,用系統轉換(常澐→常澐、彥寧→彥寧、齊綸→齊綸、於施→於施、蘇白易→蘇白易、普里莫→普里莫、趙昭→趙昭、裴令容→裴令容、阿禾→阿禾;武陵城→武陵城、試驗園區→試驗園區、資源回收站→資源回收站、倉儲節點→倉儲節點)。
- en_US:本方案核實填寫的官方英文(上表)。
- ja_JP / ko_KR / es_ES:按 §2.1 對照表填入已多源核實的官方譯名;表中標「待核實」的節點留空(預設),LangAccessor 自動回退 zh_CN(
_load_module的 fallback 鏈:當前 locale → zh_CN/zh_TW → 首個可用)。留空優於機翻錯誤譯名。 - 停用手工翻譯校驗:任何語言節點的值必須是"官方譯名或空",不允許拼音/機翻佔位(現有 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.py中delivery_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:
- 內建中→英對照表(上表,人工核實後固化)。
- 優先從官方地圖 API(
zonai.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 有的 → 列出待補。 - 生成/更新
assets/lang/world_map.json節點:- zh_CN = 中文名
- zh_TW = 繁中轉換(
zhconv或維護表) - en_US / ja_JP / ko_KR = 官方 API 四語(缺失則留空不寫);es_ES = Atlos 資料(缺失留空)
- 校驗規則(失敗即報錯):
- 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__.pyACTIVE_LOCALES_CONFIG目前僅啟用 zh_CN/zh_TW,en_US/ja_JP/ko_KR/es_ES 節點存在但未啟用。
1.2 現有問題
- NPC 名無任何語言節點:world_map.json 中沒有常澐/彥寧等條目,OCR 與本地化會 fallback 到中文。
- 現有地點譯名與官方不符(機翻/拼音):
| 中文 | 現有 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_langquery、lang/x-language/accept-languageheader、lang/sk-language/x-languagecookie 全部實測無效,sk-language: ja-jp等長程式碼返回空串):- 國際服
zonai.skport.com→ 官方英文(mark/info.lang=en) - 國服
zonai.skland.com→ 官方簡中(mark/info.lang=zh_Hans)
- 國際服
- 四語擴充套件(2026-08 實測突破):
sk-languageheader 接受短程式碼ja/ko/en/zh,返回官方日/韓/英/簡中資料(如 map02:sk-language: ja→武陵、ko→무릉、zh→空/回退 skland 域、en→Wuling)。實測覆蓋:jakoenzh四碼有效;zh-twdeesfriditptruthvi及所有長程式碼返回空串(服務端僅釋出這 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(webpackmain.aaa4ad7b.js→ chunk871.e75ec14f.js,確認域名由L標誌切換;語言選擇 UI 支援 13 種但 API 資料僅 英/簡中/日/韓 四語)。 - 其它可程式設計源:
endfield.wiki.gg/api.php、endfield.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}.json、official_catalog_{zh,en,ja,ko}.json、official_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短程式碼驗證),不含 es;sk-language用長程式碼(ja-jp)返回空串而非報錯,排查語言問題時應優先用短程式碼。
3. 各語言"對上"的規則
落地時每條翻譯必須滿足"各語言節點相互對應":
- zh_CN:保持現有中文(配置鍵名、OCR 主語言)。
- zh_TW:官方繁中,用系統轉換(常澐→常澐、彥寧→彥寧、齊綸→齊綸、於施→於施、蘇白易→蘇白易、普里莫→普里莫、趙昭→趙昭、裴令容→裴令容、阿禾→阿禾;武陵城→武陵城、試驗園區→試驗園區、資源回收站→資源回收站、倉儲節點→倉儲節點)。
- en_US:本方案核實填寫的官方英文(上表)。
- ja_JP / ko_KR / es_ES:按 §2.1 對照表填入已多源核實的官方譯名;表中標「待核實」的節點留空(預設),LangAccessor 自動回退 zh_CN(
_load_module的 fallback 鏈:當前 locale → zh_CN/zh_TW → 首個可用)。留空優於機翻錯誤譯名。 - 停用手工翻譯校驗:任何語言節點的值必須是"官方譯名或空",不允許拼音/機翻佔位(現有 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.py中delivery_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:
- 內建中→英對照表(上表,人工核實後固化)。
- 優先從官方地圖 API(
zonai.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 有的 → 列出待補。 - 生成/更新
assets/lang/world_map.json節點:- zh_CN = 中文名
- zh_TW = 繁中轉換(
zhconv或維護表) - en_US / ja_JP / ko_KR = 官方 API 四語(缺失則留空不寫);es_ES = Atlos 資料(缺失留空)
- 校驗規則(失敗即報錯):
- en_US 非空時必須是字母/空格,禁止拼音數字混寫(正則 )
- 不允許
Wulingcheng、Experimental 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:
- 精確匹配:msgid(去尾
\n)與官方 zh 名一致 → 整條 msgstr 替換為官方譯名(ja 官方未翻譯的名可能直接是中文/片假名,屬官方資料)。 - 內嵌替換:msgid 含官方 zh 名(子串)且 msgstr 含該名舊譯名 → 文本替換為新譯名,如「通向試驗園區送貨點」的
Test Zone→Test Area、ja「武陵買入價」的ウーリン→武陵。按 zh 名長度降序處理,避免短名子串衝突。 - 變更後同目錄
ok.mo同步用 polib 重編譯。 - 冪等:官方譯名已是最新時不產生任何 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:語言資源 APIsrc/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/_1、k_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-608、daily_logistics_mixin.py:57,104、daily_buy_mixin.py:44、daily_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.json、navigation_mixin.json |
死資源 | 程式碼無引用(k_8967d3c6 在 daily_battle 複用) |