İçeriğe geç

Locale API

Bunların hepsi bs_core/shared/sh_locale.lua dosyasından gelir. Bir resource’u çeviriye hazırlamak Diller sayfasında anlatılır. Bu sayfa referanstır.

Diller: en, pt, de, pl, tr, es, fr, it, ru. Eksik anahtarlar önce ene, sonra anahtarın kendisine düşer.

shared_scripts { '@bs_core/shared/sh_locale.lua' }
files { 'locales/*.lua' }

Her locales/<lang>.lua düz bir tablo döndürür:

return {
['shop.title'] = 'Trader',
['shop.bought'] = 'You bought {item} for ${price}',
}

Placeholder’lar {name} biçimindedir. Bilinmeyen bir placeholder olduğu gibi bırakılır, böylece yazım hataları kaybolmaz, görünür.

FonksiyonTarafNe yapar
L(key, vars)clientYerel oyuncunun dilinde metin
L(key, vars)serverSunucunun varsayılan dilinde metin
L(src, key, vars)serverO oyuncunun dilinde metin
Lp(src, key, vars)serverYukarıdakiyle aynı, her zaman bir source alır
BSLocale.T(lang, key, vars)ikisi deBelirttiğin dilde metin
BSLocale.Lang()ikisi deYerel oyuncunun dili (client) veya varsayılan (server)
BSLocale.LangOf(src)ikisi deBir oyuncunun dili, yoksa varsayılana düşer
BSLocale.Default()ikisi deSunucu varsayılanı (GlobalState.bs_defaultLang, yoksa en)
BSLocale.IsValid(lang)ikisi deDokuz koddan biri mi
BSLocale.Dict(lang)ikisi deAltında en olan tüm tablo, NUI için
BSLocale.OnChange(fn)clientDil değişince fn(lang) çalışır
BSLocale.Set(lang)clientbs_core’dan oyuncunun dilini değiştirmesini ister
BSLocale.Languages, BSLocale.Nativeikisi deKod listesi ve yerel adlar

Sunucu export’u: exports.bs_core:GetLanguage(src).

Metin tek bir oyuncuya gidiyorsa sunucuda her zaman oyuncunun source’unu ver. Source’suz L('key') sunucunun varsayılan dilini kullanır, bu da bir bildirim için yanlıştır.

TriggerClientEvent('bs:ui:notify', src, { type = 'success', message = L(src, 'shop.bought', { item = label, price = 50 }) })
  • Oyuncu seçimi: oyuncu üzerindeki bs_lang state bag’i.
  • Sunucu varsayılanı: GlobalState.bs_defaultLang (F1 Global.defaultLanguage veya bs_defaultLanguage convar’ı).
  • Hesap başına bs_users.language içinde saklanır.
  • Değiştirmek bs_core:setLanguage sunucu eventini tetikler.

Resource’un bir ui_pagei varsa locale betiği bs_i18n NUI callback’ine { lang, dict } ile yanıt verir ve dil değişince yeni tabloyu gönderir. Helper’ı yükle ve HTML’ini işaretle:

<script src="nui://bs_ui/html/js/i18n.js"></script>
<span data-i18n="ui.level">LEVEL</span>

JS’te: t('key', vars) ve BSI18n.onChange(fn). Ayrıntılar Diller sayfasında.