Standardowy przepływ pracy tłumaczenia wykrywa struny w Twoim doświadczeniu w oparciu o to, jak często są oglądane przez graczy i dodaje je do tabeli lokalizacji do tłumaczenia.Może pominąć niezwykłe ciągi i/lub ciągi generowane podczas gry, takie jak dynamicznie generowany tekst lub tekst stworzony przez graczy.Możesz użyć API tłumaczenia tekstu, aby generować tłumaczenia dla tych ciągów w czasie rzeczywistym, zapewniając, że twoje doświadczenie jest w pełni zlokalizowane.
Przetłumacz tekst na język gracza
Aby przetłumaczyć tekst na język gracza, przekaż jego Player.LocaleId jako kod języka docelowego.Poniżej jest przykład tego, jak możesz uzyskać lokalną identyfikację gracza w skrypcie klienta, a następnie przekazać ją do Script w ServerScriptService , aby złożyć prośbę o tłumaczenie.
- API tłumaczenia jest Otwartym API chmury, co oznacza, że potrzebujesz ścieżki dla złożenia żądania.W tym przypadku potrzebujesz ID wszechświata, które można znaleźć w menu przepięcia kafelki doświadczenia na Creator Hub.
- Musisz również uwzględnić pakiet klienta Otwórz chmurę w swoim doświadczeniu; skrypt serwera tego wymaga.
Skrypt klienta
local ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Tekst do przetłumaczenialocal textToTranslate = "This is the example text to translate"-- Zdobądź lokalizację graczalocal Players = game:GetService("Players")local player = Players.LocalPlayer-- zdobądź lokalną identyfikację dla lokalnego obszaru gracza lub ustaw na dowolną wspieraną stronę lokalnąlocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Translated text: ", translatedText)
Skrypt serwerowy w ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Znajdź na https://create.roblox.com/dashboard/creations w menu przepięcia przekładki doświadczenia
local universeID = <your_universe_id>
-- Stwórz funkcję zdalną
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)
-- Przygotuj wniosek o przetłumaczenie
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- kody języków docelowych wspierają listę wielu lokalizacji do przetłumaczenia.
-- Tutaj przekazujemy tylko jeden język:
--Lokalny odtwarzacz odzyskany w lokalnym skrypcie
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Załóżmy, że tłumaczenia [locale] zawierają przetłumaczony tekst
else
return "Error: " .. result.Error.message
end
end
Testowanie
Obecnie interfejs API tłumaczenia w czasie rzeczywistym wspiera tylko autoryzację RCC.W rezultacie musisz wdrożyć swój kod do instancji testowej, aby przetestować API z Studio.Użyj Testu zespołu, aby wdrożyć skrypt do instancji testowej i przetestować swoje zmiany.
Referencja API do tłumaczenia
Parametry żądania API
Nazwa parametryczna | Typ | Opis |
---|---|---|
ścieżka | string | Ścieżka wszechświata. Wymagana. |
tekst | string | Tekst, który ma być przetłumaczony. Wymagany. |
źródłowy kod języka | string | Kod językowy IETF BCP-47 reprezentujący język tekstu wejściowego. Jeśli nie zostanie podany, system wykryje automatycznie język źródła. |
target_language_codes | Array<string> | Lista kodów językowych docelowych w formacie IETF BCP-47 do tłumaczenia. |
Pola odpowiedzi API
Nazwa pola | Typ | Opis |
---|---|---|
źródłowy kod języka | string | Kod językowy IETF BCP-47 reprezentujący wykryty lub określony przez użytkownika język tekstu źródłowego. |
przetłumaczenia | Dictionary<string, string> | Mapa zawierająca wymagane tłumaczenia.Kluczem jest kod językowy IETF BCP-47, a wartością jest przetłumaczony tekst na ten język.Mapa będzie zawierać wszystkie wymagane tłumaczenia.Jeśli tekst źródłowy został przefiltrowany, mapa będzie pusta. |
Greny
Roblox używa następującej formuły do ograniczania żądań dla tego API w oparciu o liczbę graczy w Twoim doświadczeniu:
max requests per minute per experience = 600 + (1.5 * number_of_concurrent_users)
Istnieje również łączny limit 150 żądań na minutę, na serwerze gry dla wszystkich otwartych chmurowych API.
Obsługiwane języki
Obecnie interfejs API tłumienia w czasie rzeczywistym wspiera następujące języki, które różnią się nieco od wspieranych języków do automatycznego tłumienia .
Język | Kod językowy |
---|---|
Chiński (uproszczony) | zh-cn |
Chiński (tradycyjny) | zh-tw |
Angielski | pl-us |
Francuski | pl-pl |
Niemiecki | pl-pl |
Indonezja | identyfikator-id |
Włochy | it-it |
Japonki | ja-jp |
Koreański | ko-kr |
Polski | pl-pl |
Portugalski | pt-br |
Rosyjski | ru-ru |
hiszpański | es-es |
Tajlandia | th-th |
Turkijski | tr-tr |
Wietnamski | vi-vn |