Le flux de travail de traduction standard détecte les chaînes dans votre jeu en fonction de leur fréquence d'affichage par les joueurs et les ajoute à votre tableau de localisation pour la traduction. Il peut manquer des chaînes peu courantes et/ou des chaînes générées durant le jeu, comme du texte généré dynamiquement ou du texte créé par les joueurs. Vous pouvez utiliser l'API de traduction de texte pour générer des traductions pour ces chaînes en temps réel, garantissant ainsi que votre jeu est complètement localisé.
Traduire du texte dans la langue d'un joueur
Pour traduire du texte dans la langue d'un joueur, passez son Player.LocaleId comme code de langue cible. Ci-dessous un exemple de la façon dont vous pouvez obtenir l'identifiant de locale du joueur dans un script client et ensuite le passer à un Script dans ServerScriptService pour faire la demande de traduction.
- L'API de traduction est une Open Cloud API, ce qui signifie que vous avez besoin d'un chemin pour faire une demande. Dans ce cas, vous avez besoin de l'ID de l'univers, qui peut être trouvé dans le menu déroulant de la vignette du jeu sur le Creator Hub.
- Vous devez également inclure le package client Open Cloud dans votre jeu ; le script serveur en a besoin.
Script clientlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Texte à traduirelocal textToTranslate = "Ceci est le texte d'exemple à traduire"-- Obtenir la locale du joueurlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- obtient l'identifiant de la locale pour la locale du joueur local ou défini sur n'importe quelle chaîne de locale supportéelocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Texte traduit : ", translatedText)
Script serveur dans ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Trouvé sur https://create.roblox.com/dashboard/creations dans le menu déroulant d'une vignette de jeu
local universeID = <your_universe_id>
-- Créer RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " a demandé la traduction pour le texte : " .. text .. " vers la locale : " .. locale)
-- Préparer la demande de traduction
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- les codes de langue cible prennent en charge une liste de multiples locales à traduire.
-- Ici nous ne passons qu'une seule langue :
-- La locale du joueur récupérée dans le script local
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Supposant que translations[locale] contient le texte traduit
else
return "Erreur : " .. result.Error.message
end
end
Test
L'API de traduction en temps réel ne prend actuellement en charge que l'authentification RCC. En conséquence, vous devez déployer votre code dans une instance de test pour pouvoir tester l'API depuis Studio. Utilisez le test collaboratif pour déployer le script dans une instance de test et tester vos modifications.
Référence de l'API de traduction
Paramètres de demande API
| Nom du paramètre | Type | Description |
|---|---|---|
| path | string | Le chemin de l'univers. Requis. |
| text | string | Le texte à traduire. Requis. |
| source_language_code | string | Le code de langue IETF BCP-47 représentant la langue du texte d'entrée. Si non fourni, le système détectera automatiquement la langue source. |
| target_language_codes | Array<string> | Une liste de codes de langue cible au format IETF BCP-47 pour la traduction. |
Champs de réponse API
| Nom du champ | Type | Description |
|---|---|---|
| source_language_code | string | Le code de langue IETF BCP-47 représentant la langue détectée ou spécifiée par l'utilisateur du texte source. |
| translations | Dictionary<string, string> | Une carte contenant les traductions demandées. La clé est le code de langue IETF BCP-47, et la valeur est le texte traduit pour cette langue. La carte contiendra toutes les traductions demandées. Si le texte source a été filtré, cette carte sera vide. |
Limites
Roblox utilise la formule suivante pour limiter les demandes pour cette API en fonction du nombre de joueurs dans votre jeu :
demandes max par minute par jeu = 600 + (1.5 * nombre_de_joueurs_concurrents)
Il existe également une limite combinée de 150 demandes par minute, par serveur de jeu pour toutes les APIs Open Cloud.
Langues prises en charge
L'API de traduction en temps réel prend actuellement en charge les langues suivantes, qui diffèrent légèrement des langues prises en charge pour la traduction automatique.
| Langue | Code de langue |
|---|---|
| Chinois (simplifié) | zh-cn |
| Chinois (traditionnel) | zh-tw |
| Anglais | en-us |
| Français | fr-fr |
| Allemand | de-de |
| Indonésien | id-id |
| Italien | it-it |
| Japonais | ja-jp |
| Coréen | ko-kr |
| Polonais | pl-pl |
| Portugais | pt-br |
| Russe | ru-ru |
| Espagnol | es-es |
| Thaïlandais | th-th |
| Turc | tr-tr |
| Vietnamien | vi-vn |