Betimleme ile script oluşturma

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Yerelleştirme API'lerini, yerelleştirme tablosuna çeviriler ekleyerek otomatik olarak yönetilmeyen özel çeviri görevleri için kullanabilirsiniz. Roblox, tüm yerelleştirme script ihtiyaçlarını karşılamak için LocalizationService sağlar. Aşağıdaki görevler için LocalizationService'ı kullanın:

Oyununuza çeviri yaparken herhangi bir yerelleştirme API'si kullanıyorsanız, kullanıcıların dil değişikliklerine tepki vermek için kullanıcının LocaleID'sinde herhangi bir değişikliği dinleyin.

Çeviri kodunu yeniden kullanırken, hataları ve eksik çevirileri yönetmek için bir TranslationHelper ModuleScript kullanmalısınız.

Görüntüleri ve sesleri yerelleştirin

Oyununuzda metin dışında yerelleştirme eklemek için, bir kullanıcının yerel ayarlarına dayalı benzersiz görüntüler ve sesler sağlayın. Varlıkların yerelleştirilmesi için, öncelikle oyununuzun yerelleştirme tablosuna kaynak ve hedef varlık kimliklerini ekleyin ve ardından yerelleştirme API'sini kullanarak farklı varlıkları alın.

İngilizce (Kaynak) - rbxassetid://2957093606
İspanyolca (es) - rbxassetid://2957093671
Portekizce (pt) - rbxassetid://2957093727

Görüntüleri ve sesleri yerelleştirmeye başlamak için, kaynak ve hedef varlık kimliklerinizi yerelleştirme tablonuza ekleyin. Yerelleştirme tablosundaki varlık kimliği girişleri, API tarafından çağrılacak bir Anahtar içermelidir.

Yerelleştirme tablosundaki varlık kimlikleri için bir örnek girişi:

AnahtarKaynakespt
Anahtar_TaşlarGörüntü295709360629570936712957093727

Aşağıdaki kod, ImageLabel'in varlık kimliğini yerelleştirme tablosunda sağlanan İspanyol varlık kimliği ile değiştirecektir:


local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalizationService = game:GetService("LocalizationService")
-- Yerel değişkenler
local localizedImageID
local localizedImage = Instance.new("ImageLabel")
-- "es" için Çevirici yükleyin. Başarısızlıklara karşı korumak için fonksiyonu pcall() içine sarın.
local res, translator = pcall(function()
return LocalizationService:GetTranslatorForLocaleAsync("es")
end)
if res then
-- Anahtarı referans alarak yerelleştirme tablosundan varlık kimliğini alın
localizedImageID = translator:FormatByKey("Anahtar_TaşlarGörüntü")
-- Görüntüyü ayarlayın
localizedImage.Image = "rbxassetid://" .. localizedImageID
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. translator)
end

Bireysel dizeleri çevirin

Bazı durumlarda, bireysel dizeleri çevirme hedefiniz olabilir. Translator:Translate() kaynak dizeye dayalı olarak yerelleştirme tablosundaki bireysel girdileri alabilir.

Aşağıdaki örnekte, şu yerelleştirme girişi kullanılır:

Kaynakesespt
ScreenPantalla2950936712957093727

Aşağıdaki script, "Screen" kelimesinin İspanyolca çevirisini Çıktı penceresine yazdıracaktır:


local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalizationService = game:GetService("LocalizationService")
-- "es" için Çevirici yükleyin. Başarısızlıklara karşı korumak için fonksiyonu pcall() içine sarın.
local res, translator = pcall(function()
return LocalizationService:GetTranslatorForLocaleAsync("es")
end)
if res then
-- Dize ve nesne bağlamını sağlayarak Çevir fonksiyonunu kullanın
local sourceTranslation = translator:Translate(game, "Screen")
print(sourceTranslation) -- Beklenen Çıktı: "Pantalla"
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. translator)
end

Bağlam geçersiz kılmalarını kullanın

Aynı dize farklı anlamlara sahip olabileceği bazı durumlar vardır. Örneğin, "Screen" kelimesi hem bir bilgisayar ekranını hem de bir pencere ekranını belirtebilir, ancak İspanyolca çevirileri tamamen farklıdır.

Yerelleştirme tablosundaki Bağlam sütunu, bağlam geçersiz kılmaları aracılığıyla çevirileri belirtmek için kullanılır. Aşağıdaki örnekte yerelleştirme tablosuna oyundaki nesneyi belirtin:

BağlamKaynakes
workspace.WindowScreen.SurfaceGui.TextLabelScreenMosquitero
ScreenPantalla

Aşağıdaki script, belirli bir çeviriyi önceliklendirerek bir bağlam geçersiz kılmasını kullanmaktadır:


local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalizationService = game:GetService("LocalizationService")
local Workspace = game:GetService("Workspace")
-- "es" için Çevirici yükleyin. Başarısızlıklara karşı korumak için fonksiyonu pcall() içine sarın.
local res, translator = pcall(function()
return LocalizationService:GetTranslatorForLocaleAsync("es")
end)
if res then
-- Dize ve nesne bağlamını sağlayarak Çevir fonksiyonunu kullanın
local sourceTranslation = translator:Translate(Workspace.WindowScreen.SurfaceGui.TextLabel, "Screen")
print(sourceTranslation) -- Beklenen Çıktı: Mosquitero
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. translator)
end

Birden fazla bağlam

Birden fazla bağlam söz konusu olduğunda, yerelleştirme hizmeti Bağlam alanındaki nesne ilişkilerini sağdan sola karşılaştırır ve en yakın eşleşmeyi kullanır.

Örneğin, oyununuza ait bir yerelleştirme tablosunda aşağıdaki paylaşılan Kaynak dizeleri girişleri olabilir:

BağlamKaynakes
workspace.WindowScreen.SurfaceGui.TextLabelScreenMosquitero
playerGui.ScreenGui.TextButtonScreenPantalla

Eğer "Screen" dizesi oyununuzdaki bir playerGui.ScreenGui.TextLabel nesnesine eklenirse, yerelleştirme hizmeti "Mosquitero"yu İspanyolca çeviri olarak en yakın bağlam eşleşmesi olarak gösterir.

Parametreleri değiştirin

Yerelleştirme API'sini kullanarak dinamik içerik çevirmek için parametrelerin değerlerini bir tablo olarak ayarlayın ve tabloyu API aracılığıyla bir argüman olarak geçirin.

Bu örnekte, oyunun yerelleştirme tablosunda aşağıdaki girişler bulunmaktadır:

AnahtarKaynakes
Anahtar_Ödül_1{1:int} jewels{1:int} joyas
Anahtar_Ödül_2${AmountCash:fixed} cash and {NumJewels:int} jewels${AmountCash:fixed} dinero y {NumJewels:int} joyas

Bu dizeleri parametre değerleri ile çevirmek için aşağıdaki kod örneğini kullanın:


local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalizationService = game:GetService("LocalizationService")
-- "es" için Çevirici yükleyin. Başarısızlıklara karşı korumak için fonksiyonu pcall() içine sarın.
local res, translator = pcall(function()
return LocalizationService:GetTranslatorForLocaleAsync("es")
end)
if res then
-- "Anahtar_Ödül_1"deki parametre değerini 100 olarak ayarlayın
local keyTranslation1 = translator:FormatByKey("Anahtar_Ödül_1", {100})
print(keyTranslation1) -- Beklenen Çıktı: 100 joyas
-- 500 ve 100 parametrelerini isimle ayarlayın
local keyTranslation2 = translator:FormatByKey("Anahtar_Ödül_2", {AmountCash=500, NumJewels=100})
print(keyTranslation2) -- Beklenen Çıktı: $500.00 dinero y 100 joyas
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. translator)
end

Dilleri değiştirin

Bazı durumlarda, oyununuza diğer dillerin çevirilerini görüntülemek isteyebilirsiniz. LocalizationService:GetTranslatorForLocaleAsync() kullanarak farklı bir ülke koduna sahip yeni bir çevirici ayarlayabilirsiniz.

Aşağıdaki kod örneği, manuel bir ülke koduna sahip bir çevirici ve kullanıcının küresel yerel ayarlarına dayalı ek bir çevirici ayarlamaktadır:


local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")
-- Yerel değişkenler
local player = Players.LocalPlayer
-- "pt" için çevirici yükleyin. Başarısızlıklara karşı korumak için çevirici fonksiyonlarını pcall() içine sarın.
local res1, translator = pcall(function()
return LocalizationService:GetTranslatorForLocaleAsync("pt")
end)
-- Oyuncunun yerel ayarları ile ikinci çevirici yükleyin, bu örnekte "es"
local res2, fallbackTranslator = pcall(function()
return LocalizationService:GetTranslatorForPlayerAsync(player)
end)
-- İlk Çevirici ile Çevir fonksiyonunu kullanın
if res1 then
local translate1 = translator:Translate(game, "jewels")
print(translate1) -- Beklenen Çıktı pt için: joyas
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. translator)
end
-- İkinci Çevirici ile Çevir fonksiyonunu kullanın
if res2 then
local translate2 = fallbackTranslator:Translate(game, "jewels")
print(translate2) -- Eğer kullanıcı 'es' ayarlıyorsa Beklenen Çıktı: jóias
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. fallbackTranslator)
end

Kullanıcıların Dillerini Değiştirmesine Tepki Verin

Kullanıcılar, oyun içi Ayarlar menüsünü kullanarak dil ayarlarını her an değiştirebilir. Bu kullanıcı ayar değişikliği otomatik çeviri ile yönetilen metinler gibi, sonraki yerelleştirme varlıklarını otomatik olarak günceller, ancak zaten işlenmiş olan script yerelleştirme değişikliklerini, örneğin GUI görüntüleri veya sesler gibi güncellemeyebilir.

Oyun içi Dil Ayarı
Kullanıcılar oyunda ayarlanan mevcut dilleri seçebilir

Script yerelleştirilmiş varlıklarınızın doğru şekilde güncellenmesini sağlamak için, Translator örneğinin LocalizationService.GetTranslatorForPlayerAsync metoduna döndürülen LocaleID özelliğinde değişiklikler için GetPropertyChangedSignal olayını dinleyin. LocalizationService.GetTranslatorForPlayerAsync kullanırken, hatalar durumunda işlevi bir pcall() içine sarın.

Aşağıdaki kod örneği, kullanıcı dil değiştirdiğinde kullanıcının Locale ID'sini ve o kullanıcının çevirici örneğinin Locale ID'sini yazdırır:


local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- GetTranslatorForPlayerAsync başarılı olursa, oyuncunun mevcut yerel ayarları için bir Çevirici döndürür
local res, translator = pcall(function()
return LocalizationService:GetTranslatorForPlayerAsync(player)
end)
-- Oyuncunun yerel ID'sinde bir değişiklik tespit edildiğinde çağrılan işlev
local function OnLocaleIdChanged()
print("Çevirici şu şekilde değişti: " .. translator.LocaleId)
-- Oyuncunun yeni dili için yerelleştirme API'leri ile çevrilen varlıkları burada tekrar çevirmelisiniz
end
-- GetTranslatorForPlayerAsync başarılı oldu mu kontrol edin
if res then
-- Başarılıysa, buraya çeviri varlıklarını çevirin
-- Oyuncunun yerel ID'sinde bir değişiklik olduğunu dinleyin
translator:GetPropertyChangedSignal("LocaleId"):Connect(OnLocaleIdChanged)
else
print('GetTranslatorForPlayerAsync başarısız oldu: ' .. translator)
end

TranslationHelper modülü oluşturun

Oyuncunun varsayılan yerel ayarlarına dayalı olarak çeviricileri yüklediğinizde, kodu yeniden kullanabilirsiniz. Kodunuzu yeniden kullanmak için, oyuncunun varsayılan yerel ayarına dayalı güvenli bir şekilde çeviricileri yükleyen ve belirli çevirileri sağlamak ve dilleri değiştirmek için işlevler içeren bir yardımcı ModuleScript oluşturun.

Aşağıdaki kod örneği, kendi projenize ModuleScript olarak kopyalayabileceğiniz bir TranslationHelper'ı uygulamaktadır:


local TranslationHelper = {}
local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")
-- Yerel değişkenler
local player = Players.LocalPlayer
local sourceLanguageCode = "en"
-- Çeviricileri al
local playerTranslator, fallbackTranslator
local foundPlayerTranslator = pcall(function()
playerTranslator = LocalizationService:GetTranslatorForPlayerAsync(player)
end)
local foundFallbackTranslator = pcall(function()
fallbackTranslator = LocalizationService:GetTranslatorForLocaleAsync(sourceLanguageCode)
end)
-- TranslationHelper için yeni bir çeviri yüklemek için TranslationHelper.setLanguage metodunu oluşturun
function TranslationHelper.setLanguage(newLanguageCode)
if sourceLanguageCode ~= newLanguageCode then
local success, newPlayerTranslator = pcall(function()
return LocalizationService:GetTranslatorForLocaleAsync(newLanguageCode)
end)
-- Yeni çevirici geçerli ise mevcut playerTranslator'ı yalnızca geçersiz kılın (fallbackTranslator oyunun kaynak dili olarak kalır)
if success and newPlayerTranslator then
playerTranslator = newPlayerTranslator
return true
end
end
return false
end
-- İlk çevirici yüklenemez veya başarıyla döndürülemezse bir yedek çevirici kullanan bir Çevir fonksiyonu oluşturun. Referans alınan nesneyi varsayılan olarak genel nesneye ayarlayabilirsiniz
function TranslationHelper.translate(text, object)
if not object then
object = game
end
if foundPlayerTranslator then
return playerTranslator:Translate(object, text)
end
if foundFallbackTranslator then
return fallbackTranslator:Translate(object, text)
end
return false
end
-- İlk çevirici yüklenemez veya başarıyla döndürülemezse bir yedek çevirici kullanan FormatByKey() işlevini oluşturun
function TranslationHelper.translateByKey(key, arguments)
local translation = ""
local foundTranslation = false
-- Öncelikle oyuncunun dili için çeviri yapmayı dener (bir çevirici bulunduysa)
if foundPlayerTranslator then
foundTranslation = pcall(function()
translation = playerTranslator:FormatByKey(key, arguments)
end)
end
if foundFallbackTranslator and not foundTranslation then
foundTranslation = pcall(function()
translation = fallbackTranslator:FormatByKey(key, arguments)
end)
end
if foundTranslation then
return translation
else
return false
end
end
return TranslationHelper

Modül ReplicatedStorage'da olduğunda, bir LocalScript'ten require ederek modülün fonksiyonlarını çağırın. Aşağıdaki kod, bu modülün yardımcı işlevini bireysel bir dizeyi çevirmek için kullanır:


local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Çeviri modülünü require edin
local TranslationHelper = require(ReplicatedStorage:WaitForChild("TranslationHelper"))
-- TranslationHelper'da sağlanan fonksiyonları kullanın
TranslationHelper.setLanguage("es")
local sourceTranslation = TranslationHelper.translate("Screen")
print(sourceTranslation) -- Beklenen Çıktı 'es': "Pantalla"
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.