Alur kerja penerjemahan standar mendeteksi string di dalam permainan Anda berdasarkan seberapa sering string tersebut dilihat oleh pemain dan menambahkannya ke tabel lokal Anda untuk diterjemahkan. Ini mungkin melewatkan string yang tidak umum dan/atau string yang dihasilkan selama gameplay, seperti teks yang dihasilkan secara dinamis atau teks yang dibuat oleh pemain. Anda dapat menggunakan API penerjemahan teks untuk menghasilkan terjemahan untuk string-string ini secara real-time, memastikan bahwa permainan Anda sepenuhnya dilokalisasi.
Terjemahkan teks ke dalam bahasa pemain
Untuk menerjemahkan teks ke dalam bahasa pemain, berikan Player.LocaleId mereka sebagai kode bahasa target. Di bawah ini adalah contoh bagaimana Anda dapat mendapatkan ID lokal pemain dalam skrip klien dan kemudian mengirimkannya ke Script dalam ServerScriptService untuk membuat permintaan terjemahan.
- API penerjemahan adalah Open Cloud API, yang berarti Anda memerlukan jalur untuk membuat permintaan. Dalam hal ini, Anda memerlukan ID alam semesta, yang dapat ditemukan di menu overflow dari ubin permainan di Creator Hub.
- Anda juga harus menyertakan paket klien Open Cloud dalam permainan Anda; skrip server membutuhkannya.
Skrip klienlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Teks untuk diterjemahkanlocal textToTranslate = "Ini adalah teks contoh untuk diterjemahkan"-- Dapatkan locale pemainlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- dapatkan ID lokal untuk locale pemain lokal atau atur ke string locale yang didukunglocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Teks yang diterjemahkan: ", translatedText)
Skrip server di ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Temukan di https://create.roblox.com/dashboard/creations di menu overflow dari ubin permainan
local universeID = <your_universe_id>
-- Buat RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " meminta terjemahan untuk teks: " .. text .. " ke locale: " .. locale)
-- Siapkan permintaan terjemahan
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- kode bahasa target mendukung daftar beberapa locale untuk diterjemahkan.
-- Di sini kita hanya mengirimkan satu bahasa:
--Locale pemain yang diambil dalam skrip lokal
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Diasumsikan translations[locale] berisi teks yang diterjemahkan
else
return "Kesalahan: " .. result.Error.message
end
end
Pengujian
API terjemahan real-time saat ini hanya mendukung otentikasi RCC. Oleh karena itu, Anda harus menerapkan kode Anda ke instansi uji untuk menguji API dari Studio. Gunakan pengujian kolaboratif untuk menerapkan skrip ke instansi uji dan menguji perubahan Anda.
Referensi API terjemahan
Parameter permintaan API
| Nama Parameter | Tipe | Deskripsi |
|---|---|---|
| path | string | Jalur alam semesta. Diperlukan. |
| text | string | Teks yang akan diterjemahkan. Diperlukan. |
| source_language_code | string | Kode bahasa IETF BCP-47 yang mewakili bahasa dari teks input. Jika tidak disediakan, sistem akan secara otomatis mendeteksi bahasa sumber. |
| target_language_codes | Array<string> | Sebuah daftar kode bahasa target dalam format IETF BCP-47 untuk terjemahan. |
Bidang respons API
| Nama Bidang | Tipe | Deskripsi |
|---|---|---|
| source_language_code | string | Kode bahasa IETF BCP-47 yang mewakili bahasa yang terdeteksi atau yang ditentukan pengguna dari teks sumber. |
| translations | Dictionary<string, string> | Peta yang berisi terjemahan yang diminta. Kunci adalah kode bahasa IETF BCP-47, dan nilai adalah teks yang diterjemahkan untuk bahasa tersebut. Peta akan berisi semua terjemahan yang diminta. Jika teks sumber difilter, peta ini akan kosong. |
Batasan
Roblox menggunakan rumus berikut untuk membatasi permintaan untuk API ini berdasarkan jumlah pemain dalam permainan Anda:
jumlah maksimal permintaan per menit per permainan = 600 + (1.5 * jumlah_pemain_konkuren)
Ada juga batasan gabungan sebanyak 150 permintaan per menit, per server permainan untuk semua Open Cloud APIs.
Bahasa yang didukung
API terjemahan real-time saat ini mendukung bahasa-bahasa berikut, yang sedikit berbeda dari bahasa yang didukung untuk terjemahan otomatis.
| Bahasa | Kode Bahasa |
|---|---|
| Chinese (Sederhana) | zh-cn |
| Chinese (Tradisional) | zh-tw |
| Inggris | en-us |
| Prancis | fr-fr |
| Jerman | de-de |
| Bahasa Indonesia | id-id |
| Italia | it-it |
| Jepang | ja-jp |
| Korea | ko-kr |
| Polandia | pl-pl |
| Portugis | pt-br |
| Rusia | ru-ru |
| Spanyol | es-es |
| Thai | th-th |
| Turki | tr-tr |
| Vietnam | vi-vn |