Standart çeviri iş akışı, oyuncular tarafından ne sıklıkla görüldüklerine dayanarak deneyiminizdeki dizeleri tespit eder ve çeviri için yerelleştirme tablosuna ekler.Oyun sırasında oluşturulan sıradışı dize ve/veya oyuncular tarafından oluşturulan dinamik olarak oluşturulan metin gibi oyun sırasında oluşturulan dize veya metinleri kaçırabilir.Gerçek zamanlı olarak bu dize için çeviri oluşturmak için çeviri API'sini kullanabilirsiniz, böylece deneyiminiz tamamen yerelleştirilmiş olur.
Metni oyuncunun diline çevirin
Metni oyuncunun diliine çevirmek için, hedeflenmiş dil kodu olarak Player.LocaleId geçin.Aşağıda, bir oyuncunun yerel kimliğini bir istemci kriptinde nasıl alabileceğinizin bir örneği ve ardından çeviri isteği yapmak için bir Script 'e geçirdiğiniz örnek bir ServerScriptService var.
- Çeviri API'si bir Açık Bulut API'dır, yani bir istek göndermek için bir yol gerekir.Bu durumda, deneyim arayüzündeki aşırı yük menüsünde bulunabilen evren ID'sine ihtiyacınız var, ki bunu Yaratıcı Merkez 'de bulabilirsiniz.
- Deneyiminize Açık Bulut müşteri paketi de dahil etmelisiniz; sunucu kodu bunu gerektiriyor.
İstemci kodu
local ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Tercüme edilecek metinlocal textToTranslate = "This is the example text to translate"-- Oyuncunun yerelini alınlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- yerel oyuncunun yerel kimliğini alın veya herhangi bir desteklenen yerel dizeyi ayarlalocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Translated text: ", translatedText)
ServerScriptService'te sunucu kodu
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Deneyim arayüzünün aşırı yük menüsünde https://create.roblox.com/dashboard/creations adresinde bulunan yaratımları bul
local universeID = <your_universe_id>
-- Uzaktan Fonksiyon Oluşturma
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " requested translation for text: " .. text .. " to locale: " .. locale)
-- Çeviri isteğini hazırlayın
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- hedef dil kodları, çevirilecek birden fazla yerel dil listesini destekler.
-- Burada yalnızca bir dil geçiyor:
--Yerel senaryoda alınan oyun yerelindeki oyuncu
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Tercümelerin [yerel dil] tercüme edilmiş metin içerdiğini varsayalım
else
return "Error: " .. result.Error.message
end
end
Test Yapıyor
Gerçek zamanlı çeviri API'si şu anda sadece RCC doğrulamasını destekliyor.Sonuç olarak, API'yi Studio'dan test etmek için bir test örneğine kodunuzu yüklemeniz gerekir.Senaryoyu bir test örneğine dağıtmak ve değişikliklerinizi test etmek için Takım Testi kullanın.
Çeviri API referansı
API isteği parametleri
Parametre Adı | Türü | Açıklama |
---|---|---|
yol | sipariş | Evrenin yolu. Gerekli. |
text yazıcı text yazar | sipariş | Tercüme edilecek metin. Zorunlu. |
kaynak_dil_kodu | sipariş | Giriş metninin dili temsil eden IETF BCP-47 dil kodu. Eğer sağlanmazsa, sistem otomatik olarak kaynağın dili tespit edecektir. |
target_language_codes | Array<string> | Tercüme için IETF BCP-47 formatında hedef dili kodlarının bir listesi. |
API yanıt alanları
Alan adı | Türü | Açıklama |
---|---|---|
kaynak_dil_kodu | sipariş | Kaynak metnin tespit edilen veya kullanıcı tarafından belirtilen dili temsil eden IETF BCP-47 dil kodu. |
tercümeler | Dictionary<string, string> | Talep edilen çevirileri içeren bir harita.Anahtar, IETF BCP-47 dil kodudur ve değer, o dilde çevrilmiş metindir.Harita talep edilen tüm çevirileri içerecektir.Kaynak metin filtrelenmişse, bu harita boş olacaktır. |
Sınırlar
Roblox, deneyiminizdeki oyuncu sayısına göre bu API için istekleri sınırlandırmak için aşağıdaki formülü kullanır:
max requests per minute per experience = 600 + (1.5 * number_of_concurrent_users)
Ayrıca tüm Açık Bulut API'leri için her oyun sunucusu başına dakika başına 150 istek sınırı da vardır.
Desteğe sahip diller
Gerçek zamanlı çeviri API'si şu anda otomatik çeviri için desteklenen dillerden biraz farklı olan aşağıdaki dilleri destekliyor, otomatik çeviri için desteklenen dillerden biraz farklı.
Language İngilizce | Dil kodu |
---|---|
Çince (Basitleştirilmiş) | zh-cn |
Çince (Geleneksel) | zh-tw |
İngilizce | en-us |
Fransızca | fr-fr |
Almança | de-de |
Endonezya | kimlik-kimlik |
İtalyanca | onu-bu |
Japonya | ja-jp |
Korece | ko-kr |
Lehçe | pl-pl |
Portekizce | pt-br |
Rusça | ru-ru |
İspanya'ya ait | es-es |
Taylandça | th-th |
Türkçe | tr-tr |
Vietnamese'ye | vi-vn |