Terraria Wiki
Advertisement
This template uses Lua.
This template uses Module:Tr, a script written in the Lua programming language. To learn more about Lua, see Terraria Wiki:Lua.
Template-info Documentation The documentation below is transcluded from Template:Tr/doc. (edit | history)
Important

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

模板簡述

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

同時,此模板是 i18n 體系的主要基礎設施之一,為其他大量模板提供透明自動翻譯支持。

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

如何使用

常規翻譯

常規用法:{{Tr|英文}}

或者,推薦使用terraria各語言wiki的通用翻譯模板別名 tr{{Tr|英文}}

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

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

例:

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

針對頁面標題

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

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

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

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

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

詞間空格

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

  • 最終輸出結果前後一定無空格,無論輸入時前後是否有空格。因此使用時可能需要手工在前後加空格,例如:世界_{{tr|NPCs}},請使用時自行判斷。
  • 遊戲內的中文譯名在涉及中英文混合的情況中英文之間不加空格,{{Tr}}對此類詞條及其衍生詞條維持此處理,不加空格,例如「Propeller Gato」的翻譯為「飛翔Gato」而非「飛翔 Gato」。此類詞條和其他前後綴組合時,中英文之間也不加空格,例如「Propeller Gato pet」的輸出是「飛翔Gato寵物」而非「飛翔Gato 寵物」。
  • 其他情況下中英文之間、普通中文與阿拉伯數字之間加空格,例如「town npc」這個詞條的中文是「城鎮 NPC」,「town npc pet」的輸出是「城鎮 NPC 寵物」,「town npc pet 2」的輸出是「城鎮 NPC 寵物 2」。
    • 但英文和中文標點之間不加空格。例如「Ballista Panic! NPC」的輸出是「弩車恐慌!NPC」而非「弩車恐慌!_NPC」。
    • 以上兩條結合起來,配合{{Tr}}本身的處理順序,有時會產生意料之外的結果,即因為實際切分的不同而導致英文單詞左右的空格有無情況和預期的有所不同。但總能通過直接添加詞條解決。
  • 詞間出現多個連續空格的情況不做保證,在處理的不同階段和不同場景下是否能夠處理連續空格是不確定的。有許多情況下連續空格和單個空格的效果一致,但請勿依賴於此。

一個沒實際意義的例子:

>{{tr| 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<

性能問題

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

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

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

示例

以下是各種使用示例,兼做單元測試:

輸入 輸出 備註
{{tr|Copper Shortsword}} 銅短劍 直接精確匹配
{{tr|a Book}} 脫冠詞 a
{{tr|the Book}} 脫冠詞 the
{{tr|Books}} 複數處理 -s
{{tr|Thorny Bushes}} 多刺灌木 複數處理 -es
{{tr|Butterflies}} 蝴蝶 複數處理 -ies
{{tr|Waterleaves}} 幌菊 複數處理 -ves
{{tr|the Butterflies}} 蝴蝶 脫冠詞+自動複數處理雙重生效
{{tr|Buggy Body}} 蚜蟲身體 後綴,自動拆分為主詞條 Buggy 與後綴 Body 分別處理
{{tr| Surface (Biome) }} 地表(生物群落) 後綴處理,拆分為主詞條 Surface 與後綴 (Biome) 分別套用翻譯,後綴來自後綴表。
{{tr| Snow (Space) }} 雪原(太空) 後綴處理,拆分為主詞條 Snow 與後綴 (Space) 分別處理,後綴來自主詞表。
{{tr|Buggy 2}} 蚜蟲 2 數字編號,自動拆分為主詞條 Buggy 與 數字編號 2 分別處理
{{tr|Desktop 1.3.5.2}} 電腦版 1.3.5.2 帶有.的數字編號,自動拆分為主詞條 Desktop 與 數字編號 1.3.5.2 分別處理
{{tr|Phantasm Dragon Body 4 }} 幻影龍身體 4 數字編號+後綴, 自動拆分為主詞條 Phantasm Dragon 與後綴 Body 加上數字編號 4 分別處理
{{tr|Basic Weapon}} 基本武器 前綴,拆分為前綴 basic 和主詞條 Weapon 分別判定處理。
{{tr|Basic Buggy Body}} 基本蚜蟲身體 前綴+後綴同時存在
{{tr|Basic Buggies}} 基本蚜蟲 前綴+複數
{{tr|Surface Block}} 地表塊 前後綴衝突,優先匹配後綴。
{{tr|Surface Block Block}} 源地表塊 兩輪前後綴分析,變為 前綴 + 主體 + 後綴
{{tr|Shit Block}} Shit Block 前/後綴拆分之後任何一部分匹配不成功即整體視為不成功
{{tr|the yellow woods blocks 3}} 黃木材塊 3 多重疊加:冠詞+前綴+主體帶複數+後綴
{{tr|The Corruptions}} 腐化 先脫冠詞再判定複數。
{{tr|Dirt Block and Stone Block}} 土塊和石塊 and組合。普通案例,不考慮and劃分直接通過連續前後綴處理也能得到正確結果。
{{tr|the Crimson and Stone Block}} 猩紅之地和石塊 and組合,特殊案例,和只通過連續前後綴處理得到的結果是不同的,用於確定and劃分的正確性
{{tr|the Crimson/the Corruption}} 猩紅之地/腐化之地 / 組合
{{tr|the Crimson, the Corruption}} 猩紅之地、腐化之地 逗號組合
{{tr|the Crimson ,the Corruption}} 猩紅之地、腐化之地 逗號前後空格任意
{{tr|the Crimson, the hallow, and the Corruption }} 猩紅之地、神聖之地、和腐化之地 and/or加上逗號的並列結構。
{{tr|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 毫無實用性的超級複雜多重解析。
{{tr|xs}} {{tr|x}} {{tr|xs}} xs x xs 緩存一致性

內部流程解析

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

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

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

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

  1. 如果指定了 pagename=yes,查詢標題消衝突數據表。
  2. 進行標準翻譯處理,標準翻譯處理按如下流程進行
    1. 嘗試進行直接匹配(大小寫不敏感)。
    2. 嘗試通過基本處理解除常見變體並嘗試匹配。按如下順序進行,每一步處理完成後立刻將得到的處理結果嘗試進行直接匹配:
      1. 脫冠詞,去掉前面的the/a/an。
      2. 將上一步的結果疊加進行s/es/ies解複數處理。
      3. 嘗試將未脫冠詞的輸入進行 s/es/ies/ves解複數處理。
      4. 嘗試 脫冠詞+解ves 處理
    3. 嘗試進行擴展處理,按如下順序進行:
      1. 逗號處理,嘗試匹配 X, Y 的格式,拆分為X和Y兩部分,兩部分分別遞歸套用標準翻譯處理。輸出為 X、Y。注意此時X和Y都可能不止一個單詞。另外X部分按照最短匹配選擇,例如對於 A, B, C, X = A, y = B, C。
      2. and處理,嘗試匹配 X and Y 的格式,拆分為X和Y兩部分,兩部分分別遞歸套用標準翻譯處理。輸出為 X和Y。注意此時X和Y都可能不止一個單詞。X部分按照最短匹配選擇。
      3. or處理,嘗試匹配 X or Y 的格式,拆分為X和Y兩部分,兩部分分別遞歸套用標準翻譯處理。輸出為 X或Y。注意此時X和Y都可能不止一個單詞。X部分按照最短匹配選擇。
      4. 尾部數字編號判定,將輸入拆分成 主體+尾部數字編號,主體遞歸套用標準翻譯處理。注意如果成功,此處輸出結果中中文和數字之間是有空格的,輸出類似於:中文_數字_。
      5. 尾部括號後綴判定,將輸入按照 主體 (後綴) 的模式嘗試拆分,主體遞歸套用標準翻譯處理,後綴部分按照如下順序嘗試處理:
        1. 帶括號進行專用後綴匹配
        2. 後綴去掉括號進行專用後綴匹配
        3. 後綴去掉括號進行基本處理
      6. 進行後綴/前綴判定,按照如下順序嘗試:
        1. 拆分為 主體+後綴, 主體套用標準翻譯處理,後綴套用專用後綴匹配。
        2. 拆分為 前綴+主體, 主體套用標準翻譯處理,前綴套用專用前綴匹配。
        3. 拆分為 主體+後綴, 主體套用標準翻譯處理,後綴套用基本處理。
        4. 拆分為 前綴+主體, 主體套用標準翻譯處理,前綴套用基本處理。
  3. 全部嘗試失敗,返回輸入原文。

其中,基本處理內:

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

擴展處理內:

  • 前綴:
    • 前綴的拆分標準為脫冠詞後的第一個單詞。
  • 後綴:
    • 後綴的拆分標準為最後一個單詞。
  • 尾部數字編號:
    • 要求最後一個單詞為純阿拉伯數字和小數點(.)字符組成,例如 238、0.3、1.3.4 等,諸如 II 之類的不視為數字編號。注意,由於 lua 的正則表達式功能限制,這裡 ..、1..4 等亦符合此處模式要求,但一般使用中不會引發困擾。

整體疊加後,需要注意:

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

臨時詞條

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

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

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

注意:

  • 英文原文參數無視大小寫。中文參數則會按輸入的樣子原樣呈現。
  • 臨時詞條定義如果和主資料庫重複,則不會覆蓋主資料庫定義。這是為了保持主資料庫翻譯的權威性,也便於後繼擴充升級。
    • 臨時詞條如果互相重複,也遵循不覆蓋原則,先定義的有效。
  • 臨時詞條定義必須在所有實際使用之前定義,否則無效。
    • 技術細節:對於非直接命中的翻譯,{{Tr}} 會將第一次翻譯的結果以類似於臨時詞條定義的方式緩存起來以加快後繼查詢。因此如果先調用過 {{Tr}} 嘗試翻譯則相當於已經定義過臨時詞條。
  • 臨時詞條定義對基本處理有效,但對擴展處理無效
  • 臨時詞條定義僅限於單個頁面內部有效,自定義之處開始,到頁面結束。所謂「單個頁面」指的是「根頁面」,即訪問的url所對應的那個頁面。如果在一個模板中定義了臨時詞條,那麼調用此模板的頁面中在模板之後此臨時詞條依然有效。

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

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

翻譯相關詞表維護

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

注意:

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