Standardowy proces tłumaczenia wykrywa napisy w twojej grze na podstawie tego, jak często są wyświetlane przez graczy, i dodaje je do twojej tabeli lokalizacji do przetłumaczenia. Może przegapić rzadko używane napisy i/lub napisy generowane podczas rozgrywki, takie jak dynamicznie generowany tekst lub tekst tworzony przez graczy. Możesz użyć API tłumaczenia tekstu, aby generować tłumaczenia tych napisów w czasie rzeczywistym, zapewniając, że twoja gra jest w pełni zlokalizowana.
Tłumaczenie tekstu na język gracza
Aby przetłumaczyć tekst na język gracza, przekaż jego Player.LocaleId jako kod języka docelowego. Poniżej znajduje się przykład, jak możesz uzyskać identyfikator lokalizacji gracza w skrypcie klienckim, a następnie przekazać go do Script w ServerScriptService, aby złożyć zapytanie o tłumaczenie.
- API tłumaczenia jest Open Cloud API, co oznacza, że potrzebujesz ścieżki, aby złożyć zapytanie. W tym przypadku potrzebujesz identyfikatora uniwersum, który można znaleźć w menu rozwijanym na płytce gry w Creator Hub.
- Musisz także dołączyć klient pakietu Open Cloud do swojej gry; skrypt serwera go wymaga.
Skrypt klienckilocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Tekst do przetłumaczenialocal textToTranslate = "To jest przykładowy tekst do przetłumaczenia"-- Uzyskaj lokalizację graczalocal Players = game:GetService("Players")local player = Players.LocalPlayer-- uzyskaj identyfikator lokalizacji lokalnego gracza lub ustaw na dowolny wspierany ciąg lokalizacjilocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Przetłumaczony tekst: ", translatedText)
Skrypt serwera 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 rozwijanym płytki gry
local universeID = <your_universe_id>
-- Utwórz RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " poprosił o tłumaczenie tekstu: " .. text .. " na lokalizację: " .. locale)
-- Przygotuj zapytanie o tł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:
-- L lokalizacja gracza uzyskana w lokalnym skrypcie
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Zakładając, że translations[locale] zawiera przetłumaczony tekst
else
return "Błąd: " .. result.Error.message
end
end
Testowanie
API tłumaczenia w czasie rzeczywistym obecnie obsługuje tylko uwierzytelnianie RCC. W związku z tym musisz wdrożyć swój kod do instancji testowej, aby przetestować API z poziomu Studio. Użyj testowania współpracy, aby wdrożyć skrypt do instancji testowej i przetestować swoje zmiany.
Referencje API tłumaczenia
Parametry zapytania API
| Nazwa parametru | Typ | Opis |
|---|---|---|
| path | string | Ścieżka do uniwersum. Wymagane. |
| text | string | Tekst do przetłumaczenia. Wymagane. |
| source_language_code | string | Kod języka IETF BCP-47 reprezentujący język tekstu wejściowego. Jeśli nie podano, system automatycznie wykryje język źródłowy. |
| target_language_codes | Array<string> | Lista kodów języków docelowych w formacie IETF BCP-47 do tłumaczenia. |
Pola odpowiedzi API
| Nazwa pola | Typ | Opis |
|---|---|---|
| source_language_code | string | Kod języka IETF BCP-47 reprezentujący wykryty lub określony przez użytkownika język tekstu źródłowego. |
| translations | Dictionary<string, string> | Mapa zawierająca zgłoszone tłumaczenia. Klucz to kod języka IETF BCP-47, a wartość to przetłumaczony tekst w tym języku. Mapa będzie zawierać wszystkie zgłoszone tłumaczenia. Jeśli tekst źródłowy został przefiltrowany, ta mapa będzie pusta. |
Limity
Roblox używa następującego wzoru do ograniczania zapytań do tego API w zależności od liczby graczy w twojej grze:
maks. zapytań na minutę na grę = 600 + (1.5 * liczba_użytkowników_aktywne)
Istnieje również łączny limit 150 zapytań na minutę, na serwer gry dla wszystkich Open Cloud APIs.
Obsługiwane języki
API tłumaczenia w czasie rzeczywistym obecnie obsługuje następujące języki, które nieco różnią się od obsługiwanych języków dla automatycznego tłumaczenia.
| Język | Kod języka |
|---|---|
| Chiński (uproszczony) | zh-cn |
| Chiński (tradycyjny) | zh-tw |
| Angielski | en-us |
| Francuski | fr-fr |
| Niemiecki | de-de |
| Indonezyjski | id-id |
| Włoski | it-it |
| Japoński | ja-jp |
| Koreański | ko-kr |
| Polski | pl-pl |
| Portugalski | pt-br |
| Rosyjski | ru-ru |
| Hiszpański | es-es |
| Tajski | th-th |
| Turecki | tr-tr |
| Wietnamski | vi-vn |