Skip to content

Yerelleştirme

Yerelleştirme

BUPA Chat tamamen çevrilebilirdir. Çeviriler, locales/ altında yer alan, ox_lib tarafından yüklenen (manifest dosyasında ox_lib 'locale' tanımlıdır) ve t() sarmalayıcısı aracılığıyla okunan düz JSON dosyalarıdır.

Desteklenen Diller

locales/*.json — kutudan çıktığı gibi on dil desteği:

Kod Dil Kod Dil
en İngilizce nl Felemenkçe
tr Türkçe pl Lehçe
de Almanca pt Portekizce
es İspanyolca ru Rusça
fr Fransızca it İtalyanca

Her arayüz metni, kategori etiketi, yer tutucu, animasyon açıklaması ve sistem mesajı bu dosyalardan çekilir.

Dili Seçme

Aktif dil shared/config/core.lua dosyasında belirlenir:

shared/config/core.lua
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))

Çözümleme sırası:

  1. bupa-chat:locale — Yalnızca BUPA Chat için kaynağa özel geçersiz kılma.
  2. ox:locale — Sunucunuz genelinde kullanılan paylaşılan ox_lib yerel ayarı.
  3. en — Hiçbiri ayarlanmadıysa varsayılan İngilizce.
server.cfg
setr ox:locale "tr"          # sunucu genelinde dil
setr bupa-chat:locale "en"   # isteğe bağlı: yalnızca sohbet için İngilizceye zorla

Çalışma Zamanında Değiştirme — bupa:changeLanguage

Bir oyuncunun dilini yeniden başlatmaya gerek kalmadan, oturum sırasında canlı olarak değiştirebilirsiniz. İstemci (client) olayını bir dil koduyla tetikleyin; BUPA Chat, o yerel ayarı ox_lib aracılığıyla yeniden yükler ve doğrudan React arayüzüne iletir:

client
TriggerEvent("bupa:changeLanguage", "de")

Bu işlem dahili olarak loadLang(newLang) fonksiyonunu (ox_lib'in aktif yerel ayarını değiştirir) ve ardından changeUiLang fonksiyonunu çağırır, böylece hem Lua tarafı hem de arayüz aynı anda güncellenir.

Dil Ekleme veya Düzenleme

locales/ klasörü escrow_ignore içindedir, yani JSON dosyasını doğrudan düzenleyebilirsiniz. Yeni bir dil eklemek için en.json dosyasını kopyalayın, değerleri çevirin ve <code>.json (örn. sv.json) olarak kaydedin, ardından ox:locale veya bupa-chat:locale değerini bu kod olarak ayarlayın.

locales/en.json
{
  "CATEGORY_COMMANDS_LABEL": "Commands",
  "CATEGORY_COMMANDS_PLACEHOLDER": "Type a command...",
  "CATEGORY_ADMIN_LABEL": "Admin Chat",
  "EMOTE_ME_COMMAND_DESC": "Describe an action you are doing"
}

Bir çeviri eksik olduğunda t() (ve ox_lib locale()) anahtarın kendisini döndürür. Referans olması için en.json dosyasını eksiksiz tutun ve dinamik değerler için %s / %d yer tutucularını kullanın (örn. "Reason: %s").