模板:Tc

出自 Terraria Wiki
前往: 導覽搜尋
Lua logo.svg
This template uses Module:Tc, a script written in the Lua programming language. Please see wikipedia:Lua and mw:Extension:Scribunto to learn more about Lua.
Template-info.svg 文檔 以下文檔內容來自模板:Tc/doc。 (edit | history)
Important.svg

該模本是中文wiki的基礎模板之一,被嵌入到 幾乎所有 模板和頁面中,修改時一定要極其小心

模板簡述

該模板以標準譯名數據庫為基準,配合一些變體擴展處理,提供自動翻譯功能,使各類名詞的翻譯能夠統一處理,並為翻譯工作提供便利。

同時,此模板為{{item link}}、{{il2l}}、{{il2c}}、{{Npc infobox}}等大量模板提供透明自動翻譯支持。

模板已經過仔細的性能優化,單個頁面內使用上萬次不會引發問題,可以放心使用。

如何使用

常規翻譯

常規用法:

{{Tc|英文}}

翻譯成功時會輸出相應翻譯中文結果,翻譯失敗則將輸入參數原樣輸出。

輸入參數大小寫不敏感,但翻譯失敗時的輸出會按輸入的大小寫原樣輸出,不會引入任何額外處理。

例:

輸入 輸出 預期 備註
{{Tc|Copper Shortsword}} 銅短劍 銅短劍 翻譯成功,輸出中文
{{Tc|someTHING}} someTHING someTHING 翻譯失敗,維持原始大小寫輸出原文

針對頁面標題

針對頁面標題,將英文wiki標題轉為中文: {{Tc|英文|link=yes}}

由於英文翻譯為中文時有多詞同譯的情況,可能導致兩個英文頁面標題翻譯為同樣的中文,此時需要額外進行消衝突處理,此用法即用於自動處理此種情況。

例如,英文 wiki 中同時有 MushroomsMushroom 兩個頁面,但是直接翻譯中文均為「蘑菇」,因此需要將其中之一加後綴做消衝突處理:

輸入 輸出 預期
{{Tc|Mushroom}} 蘑菇 蘑菇
{{Tc|Mushrooms}} 蘑菇 蘑菇
{{Tc|Mushroom|link=yes}} 蘑菇 蘑菇
{{Tc|Mushrooms|link=yes}} 蘑菇(類別) 蘑菇(類別)

當{{Tc}}的結果用於鏈接至其他頁面時應當使用此參數。

詞間空格

{{Tc}}空格處理遵循以下規則(本章節中出現下劃線均表示此處為空格,使用下劃線僅為了更清晰):

  • 最終輸出結果前後一定無空格,無論輸入時前後是否有空格。因此使用時可能需要手工在前後加空格,例如:世界_{{Tc|NPCs}},請使用時自行判斷。
  • 遊戲內的中文譯名在涉及中英文混合的情況中英文之間不加空格,{{Tc}}對此類詞條及其衍生詞條維持此處理,不加空格,例如「Propeller Gato」的翻譯為「飛翔Gato」而非「飛翔 Gato」。此類詞條和其他前後綴組合時,中英文之間也不加空格,例如「Propeller Gato pet」的輸出是「飛翔Gato寵物」而非「飛翔Gato 寵物」。
  • 其他情況下中英文之間、普通中文與阿拉伯數字之間加空格,例如「town npc」這個詞條的中文是「城鎮 NPC」,「town npc pet」的輸出是「城鎮 NPC 寵物」,「town npc pet 2」的輸出是「城鎮 NPC 寵物 2」。
    • 但英文和中文標點之間不加空格。例如「Ballista Panic! debuff」的輸出是「弩車恐慌!Debuff」而非「弩車恐慌!_Debuff」。
    • 以上兩條結合起來,配合{{Tc}}本身的處理順序,有時會產生意料之外的結果,例如「normal UFO Mount」,期望分解為 normal + (UFO Mount),輸出「普通UFO坐騎」,但實際上因為另有一個叫 UFO 的詞條,同時後綴優先匹配,因此會被分解為 (Normal UFO) + 後綴Mount,然後再被分解為 前綴Normal + 主體UFO + 後綴Mount,最後輸出「普通 UFO 坐騎」。
  • 輸出不會包含連續空格,輸入中如有連續空格會被壓縮成一個。例如 「Normal_ _ _UFO」的輸出依然是「普通 UFO」。


一個沒實際意義的例子:

>{{Tc| basic the melee regular red yellow green blue purple pink normal Lazure's Valkyrie Circlet buff 4 Bewitched surface biomes set weapons Boss Debuff (bug) npc(biome) material 2 layer 7 accessory IDs 2763 3234 }}<

會輸出(注意其中Lazure前後無空格):

>基本近戰常規紅黃綠藍紫粉普通Lazure的女武神頭環增益 4 着魔地表生物群落套裝武器 Boss 減益(Bug)NPC(生物群落)材料 2 層 7 配飾 ID 2763 3234<

性能問題

{{Tc}}的處理能力在設計時大量照顧了各種模版內集成使用以實現透明自動翻譯的需求,因此有一些地方為了功能的強大而部分妥協了性能。在日常人工翻譯頁面時,請注意:

  • {{Tc}}在翻譯失敗時的開銷是非常高的,如果使用了{{Tc}}後確定翻譯失敗,請編輯解除此次調用,以提高頁面性能。注意詞表中有部分「保持原文」的詞條,這並非翻譯失敗,使用Tc有助於標準化輸出大小寫並方便未來必要時更改譯名。此類詞條的例子有 NPC、bug 等。
  • {{Tc}}在翻譯長輸入時開銷偏高,避免單次給出太長的輸入,可以恰當地拆成若干個{{Tc}}調用。長輸入並不太容易預測輸出結果,反而增加了翻譯工作成本。

和翻譯結果相關的更多細節注意事項,請參考下文。

內部流程解析

了解自動翻譯的內部流程有助於了解 {{tc}} 的能力範圍,並正確預計其輸出結果。

{{tc}} 的工作基於三類處理:

  1. 直接匹配:按照主詞表進行直接精確匹配(不區分大小寫)。這是最基礎的翻譯實現部分。
  2. 基本處理:嘗試對輸入進行冠詞和複數的判定,脫冠詞並轉單數,處理完的結果再嘗試匹配。基本處理負責解決常見的詞形變體。
  3. 擴展處理:包括前綴、後綴、尾部數字編號三種,擴展處理負責將輸入分解成若干片段並對每一片段進行單獨翻譯處理,如果所有片段全部成功則合併後輸出結果,若有任何片段不成功則視為翻譯失敗。

處理的的大致流程規則如下,一旦某一步成功就中止後繼處理,返回得到的結果:

  1. 如果指定了 pagename=yes,查詢標題消衝突數據表。
  2. 進行標準翻譯處理,標準翻譯處理按如下流程進行
    1. 嘗試進行直接匹配(大小寫不敏感)。
    2. 嘗試通過基本處理解除常見變體並嘗試匹配。按如下順序進行,每一步處理完成後立刻將得到的處理結果嘗試進行直接匹配:
      1. 脫冠詞,去掉前面的the/a/an。
      2. 將上一步的結果疊加進行s/es/ies解複數處理。
      3. 嘗試將未脫冠詞的輸入進行 s/es/ies/ves解複數處理。
      4. 嘗試 脫冠詞+解ves 處理
    3. 嘗試進行擴展處理,按如下順序進行:
      1. 尾部數字編號判定,將輸入拆分成 主體+尾部數字編號,主體遞歸套用標準翻譯處理。注意如果成功,此處輸出結果中中文和數字之間是沒有空格的。
      2. 進行後綴/前綴判定,將輸入拆分成 主體+後綴 或 前綴+主體 的兩個片段,並對兩個片段遞歸分別套用標準翻譯處理進行嘗試。
  3. 全部嘗試失敗,返回輸入原文。

其中,基本處理內:

  • 第一輪(脫冠詞後的)解複數處理只嘗試 s、es、ies 三種後綴,並按此順序進行嘗試,一旦成功即中止後繼。例如,輸入為 Pixies, 則首先嘗試的是 Pixie,並在這裡成功匹配,不會再繼續嘗試 Pixi 和 Pixy。 如果輸入為the taxies,在這一輪會依次嘗試(注意會被脫冠詞)taxie、taxi、taxy。
  • 第二輪(未脫冠詞的)解複數處理會處理 ves、ies、es、s 四種後綴,並且 ves 後綴會嘗試 f 和 fe 兩種解法,均按列出順序進行,與第一輪正好相反。因此,假設輸入為 the baxies,在第二輪會依次嘗試匹配 the baxy、the baxi、the baxie;如果輸入為 kaves,會依次嘗試 kaf、kafe、kav、kave。
  • 前兩輪嘗試都不成功且 -ves 結尾的輸入會額外嘗試脫冠詞+解ves複數處理(按-f,-fe的順序)。因此,假設基本處理的輸入為 the kaves,那麼完整的匹配嘗試順序是: kave、kav、the kaf、the kafe、the kav、the kave、kaf、kafe(共8個候選)。

擴展處理內:

  • 前綴:
    • 前綴的拆分標準為脫冠詞後的第一個單詞。
    • 前綴的匹配順序為:優先在前綴表內進行匹配(無變體處理、不區分大小寫),如果未找到結果則嘗試對前綴進行標準翻譯處理
  • 後綴:
    • 後綴的拆分標準為最後一個單詞(要非數字),或最後帶括號的內容。 例如,Buggy body 2 會視為後綴拆分失敗(最後一個單詞是2,不合格);big buggy body 則會被拆分為 big buggy + 後綴body;enemy (buddy body)則拆分為enemy + 帶括號後綴(buddy body)。
    • 標準後綴的匹配方式類似於前綴,優先查後綴表,不成功則嘗試對後綴進行標準翻譯處理
    • 帶括號後綴的匹配處理方式為:首先按帶括號完整版本查後綴表,不成功則脫掉括號後再查後綴表,還不成功則對脫掉括號的後綴進行標準翻譯處理。如果成功有結果,結果會視情況加回括號,並且輸出括號會轉為中文括號,並去掉括號前的空格(如果有)。例如,block (item),輸出結果為: 物塊(物品)
  • 前綴/後綴的分析優先級為:
    • 第一次擴展處理時優先匹配後綴。例如, Basic Block 會被視為 主體Basic + 後綴Block 而非 前綴Basic + 主體Block。
    • 遞歸處理時,每個片段內,則視上一層切分匹配成功的是否是前綴拆分或後綴拆分,如果是,則優先選擇使用另一個,即整體上優先嘗試讓前後綴交替拆分,優先嘗試匹配成 前綴 + 主體 + 後綴 的模式。例如,basic surface block,在第一輪拆分會優先匹配後綴變成 basic surface + 後綴block,在第二輪對 basic surface進行處理時就會優先考慮前綴,優先嘗試按 前綴basic + 主體surface 的方式拆分。
  • 尾部數字編號:
    • 要求最後一個單詞為純阿拉伯數字,例如 238,諸如 II 之類的不視為數字編號。
    • 數字編號拆分成功後的主體部分下一輪處理中如果涉及前後綴拆分,總是為後綴優先。注意,因為數字編號的匹配優先於前後綴,因此在多重擴展處理中,如果數字編號拆分不是出現在第一輪,那麼其上一輪匹配必然是後綴而非前綴。
    • 數字編號輸出時前後會各帶有一個空格。 例如 block 2 item 的翻譯結果是 物塊 2 物品。

整體疊加後,需要注意:

  • 擴展處理之間能不斷疊加,而兩輪基本處理之間必須要隔着一輪擴展處理。因此,雙重冠詞時無法處理的。例如, The The block 是無法解析的(每一輪基本處理只能處理一個冠詞)。在「實際」的使用中此條並不會造成問題。
  • 由於脫冠詞處理先於複數處理進行,個別情況下,詞條可能在經過 脫冠詞+擴展處理 之後命中匹配,但結果卻並非預期。例如,The Corruptions(The Corruption的複數)預期結果為「腐化之地」,但依據處理流程會被先脫冠詞再處理複數而以Corruption進行匹配,得到「腐化」。但此類情況總是可以通過將詞條和正確翻譯直接加入標準翻譯詞庫來解決。
  • 更複雜的多重處理疊加時會有更多類似的可能情況,但都可以通過直接加入主詞庫的方式來解決問題。


各種例子:

輸入 輸出 預期 備註
{{Tc|Copper Shortsword}} 銅短劍 銅短劍 直接精確匹配
{{Tc|a Book}} 脫冠詞 the
{{Tc|the Book}} 脫冠詞 a
{{Tc|Books}} 複數處理 -s
{{Tc|Thorny Bushes}} 多刺灌木 多刺灌木 複數處理 -es
{{Tc|Butterflies}} 蝴蝶 蝴蝶 複數處理 -ies
{{Tc|Waterleaves}} 幌菊 幌菊 複數處理 -ves
{{Tc|the Butterflies}} 蝴蝶 蝴蝶 脫冠詞+自動複數處理雙重生效
{{Tc|Buggy Body}} 蚜蟲身體 蚜蟲身體 後綴,自動拆分為主詞條 Buggy 與後綴 Body 分別處理
{{Tc| Surface (Biome) }} 地表(生物群落) 地表(生物群落) 後綴處理,拆分為主詞條 Surface 與後綴 (Biome) 分別套用翻譯,後綴來自後綴表。
{{Tc| Snow (Space) }} 雪原(太空) 雪原(太空) 後綴處理,拆分為主詞條 Snow 與後綴 (Space) 分別處理,後綴來自主詞表。
{{Tc|Buggy 2}} 蚜蟲 2 蚜蟲 2 數字編號,自動拆分為主詞條 Buggy 與 數字編號 2 分別處理
{{Tc|Phantasm Dragon Body 4 }} 幻影弓龍身體 4 幻影弓龍身體 4 數字編號+後綴, 自動拆分為主詞條 Phantasm Dragon 與後綴 Body 加上數字編號 4 分別處理
{{Tc|Basic Weapon}} 基本武器 基本武器 前綴,拆分為前綴 basic 和主詞條 Weapon 分別判定處理。
{{Tc|Basic Buggy Body}} 基本蚜蟲身體 基本蚜蟲身體 前綴+後綴同時存在
{{Tc|Basic Buggies}} 基本蚜蟲 基本蚜蟲 前綴+複數
{{Tc|Surface Block}} 地表塊 地表塊 前後綴衝突,優先匹配後綴。
{{Tc|Surface Block Block}} 地表物塊塊 地表物塊塊 兩輪前後綴分析,自動互相交替,變為 前綴 + 主體 + 後綴
{{Tc|Shit Block}} Shit Block Shit Block 前/後綴拆分之後任何一部分匹配不成功即整體視為不成功
{{Tc|the yellow woods blocks 3}} 黃木材塊 3 黃木材塊 3 多重疊加:冠詞+前綴+主體帶複數+後綴
{{Tc|The Corruptions}} 腐化 腐化 先脫冠詞再判定複數。
{{tc|a basic the melee regular pink slimes normal Baby Face Monster 4 surface biomes weapons set material 2 event 7 accessory 2763}} 基本近戰常規粉史萊姆普通臉怪寶寶 4 地表生物群落武器套裝材料 2 事件 7 配飾 2763 基本近戰常規粉史萊姆普通臉怪寶寶 4 地表生物群落武器套裝材料 2 事件 7 配飾 2763 毫無實用性的超級複雜多重解析。

臨時詞條

有時在單個頁面上有一些詞彙反覆出現,但因為種種原因主詞條庫不包含此詞彙。此時可以用在頁面上定義臨時詞條:

{{Tc/define|英文原文(大小寫不敏感)|中文翻譯(大小寫敏感)}}

定義之後即可在tc中正常使用此詞條。

注意:

  • 英文原文參數無視大小寫。中文參數則會按輸入的樣子原樣呈現。
  • 臨時詞條定義如果和主數據庫重複,則不會覆蓋主數據庫定義。這是為了保持主數據庫翻譯的權威性,也便於後繼擴充升級。
    • 臨時詞條如果互相重複,也遵循不覆蓋原則,先定義的有效。
  • 臨時詞條定義對基本處理有效,但對擴展處理無效
  • 臨時詞條定義僅限於單個頁面內部有效,自定義之處開始,到頁面結束。所謂「單個頁面」指的是「根頁面」,即訪問的url所對應的那個頁面。如果在一個模板中定義了臨時詞條,那麼調用此模板的頁面中在模板之後此臨時詞條依然有效。

例,以下代碼序列及結果:

臨時詞條定義
輸入(按順序) 輸出(按順序) 備註
{{Tc|keke}} keke 此詞條此時尚無無定義
{{Tc/define|keke|蛤蛤}} 定義臨時詞條,無可見輸出
{{Tc|keke}} 蛤蛤 定義後此詞條即可使用
{{Tc|the kekes}} 蛤蛤 基本處理有效
{{Tc|the keke block}} the keke block 擴展處理無效
{{Tc/define|keke|克克}} 重複定義,也無可見輸出
{{Tc|keke}} 蛤蛤 重複定義無效
{{Tc|Book}} 主詞條數據庫有定義
{{Tc/define|book|书本}} 重複定義,無可見輸出
{{Tc|Book}} 重複定義無效

翻譯相關詞表維護

  • 主詞表: Template:Tc/db 和 Module:Tc/db 中各有一份,需要同步維護。這種冗餘是為了Tc的高性能而不得不付出的代價。
  • 頁面衝突解決表: Template:Tc/db 中。
  • 前綴表: Module:Tc/db 中。
  • 後綴表: Module:Tc/db 中。

注意:

  • 所有數據表的英文輸入部分信息均必須為全小寫,混雜大寫的條目無效。
  • 條目重複定義不會出錯(但會增加不必要的負載)。在同一表內部重複定義,後定義的覆蓋先定義的。(注意這和臨時詞條定義的覆蓋順序不同)
  • 空格的處理依賴於詞表內的定義,因此在詞表中在中文翻譯的前後要視情況加上空格,{{tc}}才能知道詞條和其他前後綴組合時是否需要加空格。