تكتشف سير العمل القياسية لترجمة المحتوى السلاسل الموجودة في لعبتك بناءً على مدى تكرار عرضها من قبل اللاعبين وتضيفها إلى جدولLocalization الخاص بك للترجمة. قد تفوت السلاسل غير الشائعة و/أو السلاسل الناتجة أثناء اللعب، مثل النصوص المولدة ديناميكيًا أو النصوص التي أنشأها اللاعبون. يمكنك استخدام واجهة برمجة التطبيقات لترجمة النصوص لإنشاء ترجمات لهذه السلاسل في الوقت الفعلي، مما يضمن أن تكون لعبتك مترجمة بالكامل.
ترجمة النص إلى لغة اللاعب
لترجمة النص إلى لغة اللاعب، مرر Player.LocaleId كرمز لغة الهدف. أدناه مثال على كيفية الحصول على معرف locale للاعب في نص العميل ثم تمريره إلى Script في ServerScriptService لإجراء طلب الترجمة.
- واجهة برمجة تطبيقات الترجمة هي Open Cloud API، مما يعني أنك بحاجة إلى مسار لإجراء طلب. في هذه الحالة، تحتاج إلى معرف الكون، والذي يمكن العثور عليه في قائمة الخيارات في مربع اللعبة على Creator Hub.
- يجب عليك أيضًا تضمين حزمة عميل Open Cloud في لعبتك؛ يتطلب النص الخادم ذلك.
نص العميلlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- النص المراد ترجمتهlocal textToTranslate = "هذا هو النص التجريبي لترجمته"-- الحصول على locale للاعبlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- الحصول على معرف locale للاعب المحلي أو تعيينه إلى أي سلسلة locale مدعومةlocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("النص المترجم: ", translatedText)
نص الخادم في ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- العثور على https://create.roblox.com/dashboard/creations في قائمة الخيارات لمربع اللعبة
local universeID = <your_universe_id>
-- إنشاء RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " طلب ترجمة النص: " .. text .. " إلى locale: " .. locale)
-- إعداد طلب الترجمة
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- رموز اللغة المستهدفة تدعم قائمة من عدة لغات للترجمة.
-- هنا نقوم بتمرير لغة واحدة فقط:
-- اللغة المستخرجة من اللاعب في النص المحلي
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- بفرض أن translations[locale] تحتوي على النص المترجم
else
return "خطأ: " .. result.Error.message
end
end
الاختبار
واجهة برمجة تطبيقات الترجمة في الوقت الفعلي تدعم حاليًا فقط مصادقة RCC. نتيجة لذلك، يجب عليك نشر كودك إلى مثيل اختبار من أجل اختبار واجهة برمجة التطبيقات من الاستوديو. استخدم الاختبار التعاوني لنشر النص إلى مثيل اختبار وتجربة تغييراتك.
مرجع واجهة برمجة التطبيقات للترجمة
معلمات طلب الواجهة
| اسم المعلمة | النوع | الوصف |
|---|---|---|
| path | string | مسار الكون. مطلوب. |
| text | string | النص المراد ترجمته. مطلوب. |
| source_language_code | string | رمز اللغة IETF BCP-47 الذي يمثل لغة النص المدخل. إذا لم يتم تقديمه، سيقوم النظام بالكشف تلقائيًا عن اللغة المصدر. |
| target_language_codes | Array<string> | قائمة من رموز اللغات المستهدفة بتنسيق IETF BCP-47 للترجمة. |
حقول استجابة واجهة برمجة التطبيقات
| اسم الحقل | النوع | الوصف |
|---|---|---|
| source_language_code | string | رمز لغة IETF BCP-47 الذي يمثل اللغة المكتشفة أو المحددة من قبل المستخدم للنص المصدر. |
| translations | Dictionary<string, string> | خريطة تحتوي على الترجمات المطلوبة. المفتاح هو رمز لغة IETF BCP-47، والقيمة هي النص المترجم لتلك اللغة. ستحتوي الخريطة على جميع الترجمات المطلوبة. إذا تم تصفية النص المصدر، ستكون هذه الخريطة فارغة. |
الحدود
تستخدم Roblox الصيغة التالية لتقليل الطلبات على هذه الواجهة بناءً على عدد اللاعبين في لعبتك:
عدد الطلبات القصوى في الدقيقة لكل لعبة = 600 + (1.5 * عدد المستخدمين المتزامنين)
هناك أيضًا حد مشترك قدره 150 طلبًا لكل دقيقة، لكل خادم لعبة لجميع واجهات برمجة التطبيقات الخاصة بـ Open Cloud.
اللغات المدعومة
تدعم واجهة برمجة التطبيقات للترجمة في الوقت الفعلي حاليًا اللغات التالية، والتي تختلف قليلاً عن اللغات المدعومة للترجمة التلقائية.
| اللغة | رمز اللغة |
|---|---|
| الصينية (المبسطة) | zh-cn |
| الصينية (التقليدية) | zh-tw |
| الإنجليزية | en-us |
| الفرنسية | fr-fr |
| الألمانية | de-de |
| الإندونيسية | id-id |
| الإيطالية | it-it |
| اليابانية | ja-jp |
| الكورية | ko-kr |
| البولندية | pl-pl |
| البرتغالية | pt-br |
| الروسية | ru-ru |
| الإسبانية | es-es |
| التايلاندية | th-th |
| التركية | tr-tr |
| الفيتنامية | vi-vn |