翻譯者的角色是製造/返回為視覺玩家本地化的字串。它可以用來從 LocalizationTable 中恢復顯示準備的本地化文字。Translator.LocaleId 屬性的來源、將搜尋的表集和將在哪裡搜尋它們的順序取決於使用了哪種方法來創建翻譯器實個體、實例。
翻譯機的輸入是原始開發語言字串和一個上下文,在該上下文中所有或部分的上下文都可以用來找到源字串的更精確/情況翻譯。
翻譯者也可用於製造包含插入(數據替換)的翻譯字串,可能根據目標語言變更順序。
概要
方法
以鑰匙返回本地化的文字字串在 LocalizationTable 基於其 Translator 本地,通過鑰鍵。
以源尋找為基礎,返回本地化的文字字串在 LocalizationTable 基於其 Translator 本地,通過源尋找。
屬性
方法
FormatByKey
以鑰匙返回本地化的文字字串在 LocalizationTable 基於其 Translator 本地,通過鍵匙。可選擇的 args 表用於填充匹配的文字輸入中的格式參數。
請注意,此方法在下列情況下會發生錯誤:
- 如果沒有任何 LocalizationTables 可用於此 Translator 包含給定鍵的值。
- 如果鑰匙的 格式字串 使用編號參數和 args 不是一個陣列。
- 如果 格式字串 使用命名參數,且 args 不是一個鑰匙值對陣表,則
- 如果 args 缺少用於匹配 格式字串 的參數值。
請參閱 使用腳本進行本地化 以獲得更多此功能的詳情和使用示例。
參數
要查找和翻譯的 鑰匙 值。
如果 來源 文字和翻譯包含格式字串,將提供。將是 Luau 表的值 或 鑰匙值對,取決於格式字串是否被命名或編號。
返回
Translate
返回本地化的文字字串在 LocalizationTable 基於其 Translator 本地。這個字串會在提供的對物件的上下文中,給予提供的 來源 文字。
請參閱 使用腳本進行本地化 以獲得更多此功能的詳情和使用示例。
上下文覆蓋
在某些情況下,重複的 來源 字串可能在其他語言中有完全不同的翻譯。例如,英文單詞「螢幕」可以指示一個電腦螢幕和一個窗口螢幕,但西班牙語翻譯完全不同:
<td width="16%">B</td><td width="18%">C</td><td width="12%">D</td><td width="18%">E</td></tr><tr><td>關鍵</td><td>上下文</td><td><b>來源</b></td><td>範例</td><td><b>es</b></td></tr><tr><td /><td /><td>螢幕</td><td /><td>螢幕</td></tr><tr><td /><td /><td>螢幕</td><td /><td>蚊子羅</td></tr><tr><td /><td /><td /><td /><td /></tr></tbody>
A |
在這些情況下,這個函數的第一個參數—有效的遊戲內Instance—可以用來作為多個 GUI 對象使用相同來源字串時的"分解器"。要實現這一點,指定要覆蓋的 Instance 到翻譯數據的 上下文 值:
<td width="36%">B</td><td width="18%">C</td><td width="12%">D</td><td width="18%">E</td></tr><tr><td>關鍵</td><td><b>上下文</b></td><td>來源</td><td>範例</td><td>es</td></tr><tr><td /><td>工作區。ComputerScreen.SurfaceGui.TextLabel</td><td>螢幕</td><td /><td>螢幕</td></tr><tr><td /><td /><td>螢幕</td><td /><td>蚊子羅</td></tr><tr><td /><td /><td /><td /><td /></tr></tbody>
A |
然後,在腳指令碼中呼叫此函數時,傳送與第一個參數相同的 Instance 作為第二個引數數,隨後以 來源 查找文字作為第二個參引數:
local Players = game:GetService("Players")
local LocalizationService = game:GetService("LocalizationService")
local success, translator = pcall(function()
return LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer)
end)
if success then
local trans = translator:Translate(workspace.ComputerScreen.SurfaceGui.TextLabel, "Screen")
print(trans)
else
warn("Cannot load translator for player!")
end
參數
要查找和翻譯的 來源 文字。
返回
翻譯的文字。