Standart çeviri iş akışı, oyununuzdaki dizeleri oyuncular tarafından ne sıklıkla görüntülendiğine dayanarak algılar ve bunları çeviri için yerelleştirme tablonuza ekler. Nadir dizeleri ve/veya oyun sırasında üretilen dizeleri kaçırabilir, örneğin dinamik olarak oluşturulan metin veya oyuncular tarafından oluşturulan metin. Çeviri metni API'sini kullanarak bu dizelerin gerçek zamanlı çevirilerini oluşturabilir, böylece oyununuzun tamamen yerelleştirildiğinden emin olabilirsiniz.
Metni oyuncunun diline çevirin
Metni oyuncunun diline çevirmek için Player.LocaleId'sini hedef dil kodu olarak geçin. Aşağıda, bir istemci betiğinde oyuncunun yerel ID'sini nasıl alıp sonra bunu Script'e ServerScriptService içinde çeviri talebinde bulmak için nasıl geçireceğinize dair bir örnek bulunmaktadır.
- Çeviri API'si bir Açık Bulut API'sidir, bu nedenle bir talepte bulunmak için bir yol gereklidir. Bu durumda, oyun simgesinin Yaratıcı Merkezi üzerindeki taşma menüsünde bulunabilen evren ID'sine ihtiyacınız vardır.
- Ayrıca oyununuzda Açık Bulut istemci paketini de dahil etmelisiniz; sunucu betiği bunu gerektirir.
İstemci betiğilocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Çevrilecek metinlocal textToTranslate = "Bu çevrilecek örnek metin"-- Oyuncunun yerelini allocal Players = game:GetService("Players")local player = Players.LocalPlayer-- Yerel oyuncunun yerel ID'sini al veya desteklenen herhangi bir yerel dize ile ayarlalocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Çevrilen metin: ", translatedText)
ServerScriptService'deki Sunucu betiği
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- https://create.roblox.com/dashboard/creations adresinde bir oyun simgesinin taşma menüsünde bulunabilir
local universeID = <your_universe_id>
-- RemoteFunction oluştur
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " için metin çevirisi talep etti: " .. text .. " yerel: " .. locale)
-- Çeviri talebi hazırlayın
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- hedef dil kodları birden fazla yerel dil için desteklenir.
-- Burada yalnızca bir dili geçiyoruz:
-- Yerel betikte alınan oyuncu yereli
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Çevirilerin [locale] içerdiğini varsayıyor
else
return "Hata: " .. result.Error.message
end
end
Test Etme
Gerçek zamanlı çeviri API'si şu anda yalnızca RCC kimlik doğrulamasını desteklemektedir. Sonuç olarak, API'yi Studio'dan test etmek için kodunuzu bir test örneğine dağıtmalısınız. Betiği bir test örneğine dağıtmak ve değişikliklerinizi test etmek için işbirlikçi test kullanın.
Çeviri API'si referansı
API istek parametreleri
| Parametre Adı | Tür | Açıklama |
|---|---|---|
| path | dize | Evrenin yolu. Gereklidir. |
| text | dize | Çevrilecek metin. Gereklidir. |
| source_language_code | dize | Giriş metninin dilini temsil eden IETF BCP-47 dil kodu. Sağlanmazsa, sistem otomatik olarak kaynak dilini algılar. |
| target_language_codes | Dizi<string> | Çeviri için IETF BCP-47 formatında hedef dil kodlarının bir listesi. |
API yanıt alanları
| Alan Adı | Tür | Açıklama |
|---|---|---|
| source_language_code | dize | Algılanan veya kullanıcı tarafından belirtilen kaynak metnin dilini temsil eden IETF BCP-47 dil kodu. |
| translations | Sözlük<string, string> | Talep edilen çevirileri içeren bir harita. Anahtar, IETF BCP-47 dil kodu ve değer, o dil için çevrilen metindir. Harita, talep edilen tüm çevirileri içerecektir. Eğer kaynak metin filtrelenmişse, bu harita boş olacaktır. |
Sınırlar
Roblox, bu API'ye gelen istekleri oyununuzdaki oyuncu sayısına göre sınırlandırmak için aşağıdaki formülü kullanır:
dakika başına maksimum istek sayısı = 600 + (1.5 * eşzamanlı kullanıcı sayısı)
Ayrıca, tüm Açık Bulut API'leri için oyun sunucusu başına dakika başına 150 isteklik bir birleşik limit vardır.
Desteklenen diller
Gerçek zamanlı çeviri API'si şu anda aşağıdaki dilleri desteklemekte olup, bu diller otomatik çeviri için desteklenen dillerden biraz farklıdır.
| Dil | Dil Kodu |
|---|---|
| Çince (Basitleştirilmiş) | zh-cn |
| Çince (Geleneksel) | zh-tw |
| İngilizce | en-us |
| Fransızca | fr-fr |
| Almanca | de-de |
| Endonezyaca | id-id |
| İtalyanca | it-it |
| Japonca | ja-jp |
| Korece | ko-kr |
| Lehçe | pl-pl |
| Portekizce | pt-br |
| Rusça | ru-ru |
| İspanyolca | es-es |
| Thai | th-th |
| Türkçe | tr-tr |
| Vietnamca | vi-vn |