เวิร์กโฟลว์การแปลตามมาตรฐานจะตรวจจับสายอักขระในเกมของคุณตามความถี่ที่ผู้เล่นมองเห็นและเพิ่มลงในตารางการแปลของคุณเพื่อทำการแปล อาจพลาดสายอักขระที่ไม่พบบ่อยและ/หรือสายอักขระที่สร้างขึ้นในระหว่างการเล่นเกม เช่น ข้อความที่สร้างขึ้นแบบไดนามิกหรือข้อความที่สร้างโดยผู้เล่น คุณสามารถใช้ API แปลข้อความเพื่อสร้างการแปลสำหรับสายอักขระเหล่านี้แบบเรียลไทม์ เพื่อให้แน่ใจว่าเกมของคุณได้รับการแปลอย่างสมบูรณ์
แปลข้อความเป็นภาษาของผู้เล่น
ในการแปลข้อความเป็นภาษาของผู้เล่น คุณต้องส่ง Player.LocaleId ของพวกเขาเป็นรหัสภาษาที่เป้าหมาย ด้านล่างเป็นตัวอย่างวิธีการที่คุณสามารถรับ ID ภาษาของผู้เล่นในสคริปต์ฝั่งลูกค้าและส่งให้กับ Script ใน ServerScriptService เพื่อทำการขอการแปล
- API การแปลเป็น Open Cloud API ซึ่งหมายความว่าคุณต้องมี เส้นทาง เพื่อทำการร้องขอ ในกรณีนี้ คุณต้องมี ID เอกจักรวาล ซึ่งสามารถพบได้ในเมนูการล้นของเกมที่ไอคอนของเกมใน Creator Hub.
- คุณต้องรวม แพ็คเกจ Open Cloud client ในเกมของคุณ เนื่องจากสคริปต์ฝั่งเซิร์ฟเวอร์ต้องการมัน
สคริปต์ลูกค้าlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- ข้อความที่จะทำการแปลlocal textToTranslate = "นี่คือตัวอย่างข้อความที่จะทำการแปล"-- รับ ID ภาษา ของผู้เล่นlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- รับ ID ภาษา สำหรับ ID ภาษา ของผู้เล่นในท้องถิ่นหรือเซ็ตเป็นสายอักขระที่สนับสนุนใดๆlocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("ข้อความที่แปลแล้ว: ", translatedText)
สคริปต์เซิร์ฟเวอร์ใน ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- หาได้ที่ https://create.roblox.com/dashboard/creations ในเมนูที่ล้นของไอคอนเกม
local universeID = <your_universe_id>
-- สร้าง RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " ขอการแปลข้อความ: " .. text .. " เป็นภาษา: " .. locale)
-- จัดเตรียมการร้องขอการแปล
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- รหัสภาษาเป้าหมายสนับสนุนรายการของหลายภาษาในการแปล
-- ที่นี่เรากำลังส่งภาษาหนึ่งเดียว:
-- ID ภาษา ของผู้เล่นที่ถูกดึงมาในสคริปต์ท้องถิ่น
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- สมมติว่าการแปล[locale] มีข้อความที่แปลแล้ว
else
return "ข้อผิดพลาด: " .. result.Error.message
end
end
การทดสอบ
API การแปลแบบเรียลไทม์ปัจจุบันสนับสนุนเฉพาะการพิสูจน์ตัวตนแบบ RCC เท่านั้น ดังนั้นคุณต้องนำโค้ดของคุณไปวางในอินสแตนซ์การทดสอบเพื่อทดสอบ API จาก Studio ใช้ การทดสอบแบบร่วมมือ เพื่อเผยแพร่สคริปต์ไปยังอินสแตนซ์การทดสอบและทดสอบการเปลี่ยนแปลงของคุณ
เอกสารอ้างอิง API การแปล
พารามิเตอร์การร้องขอ API
| ชื่อพารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
| path | string | เส้นทางของเอกจักรวาล ต้องระบุ |
| text | string | ข้อความที่จะถูกแปล ต้องระบุ |
| source_language_code | string | รหัสภาษา IETF BCP-47 ที่แสดงถึงภาษาของข้อความเข้า หากไม่ระบุ ระบบจะตรวจจับภาษาต้นทางโดยอัตโนมัติ |
| target_language_codes | Array<string> | รายการของรหัสภาษาที่เป็นเป้าหมายในรูปแบบ IETF BCP-47 สำหรับการแปล |
ฟิลด์การตอบสนอง API
| ชื่อฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
| source_language_code | string | รหัสภาษา IETF BCP-47 ที่แสดงถึงภาษาที่ตรวจพบหรือระบุโดยผู้ใช้สำหรับข้อความต้นทาง |
| translations | Dictionary<string, string> | แผนที่ที่มีการแปลที่ร้องขอ โดยคีย์คือรหัสภาษา IETF BCP-47 และค่าคือข้อความที่แปลแล้วสำหรับภาษานั้น แผนที่นี้จะมีการแปลทั้งหมดที่ร้องขอ หากข้อความต้นทางถูกกรอง แผนที่นี้จะว่างเปล่า |
ขีดจำกัด
Roblox ใช้สูตรต่อไปนี้ในการควบคุมการร้องขอสำหรับ API นี้ตามจำนวนผู้เล่นในเกมของคุณ:
สูงสุดการร้องขอต่อหนึ่งนาทีต่อเกม = 600 + (1.5 * จำนวนผู้ใช้ที่พร้อมกัน)
นอกจากนี้ยังมีขีดจำกัดรวมที่ 150 การร้องขอต่อหนึ่งนาที, ต่อเซิร์ฟเวอร์เกม สำหรับ Open Cloud API ทั้งหมด
ภาษา ที่สนับสนุน
API การแปลแบบเรียลไทม์ในปัจจุบันสนับสนุนภาษาต่อไปนี้ ซึ่งแตกต่างเล็กน้อยจาก ภาษาที่สนับสนุนสำหรับการแปลอัตโนมัติ.
| ภาษา | รหัสภาษา |
|---|---|
| จีน (ประยุกต์) | zh-cn |
| จีน (ดั้งเดิม) | zh-tw |
| อังกฤษ | en-us |
| ฝรั่งเศส | fr-fr |
| เยอรมัน | de-de |
| อินโดนีเซีย | id-id |
| อิตาลี | it-it |
| ญี่ปุ่น | ja-jp |
| เกาหลี | ko-kr |
| โปแลนด์ | pl-pl |
| โปรตุเกส | pt-br |
| รัสเซีย | ru-ru |
| สเปน | es-es |
| ไทย | th-th |
| ตุรกี | tr-tr |
| เวียดนาม | vi-vn |