Salta ai contenuti

API delle locale

Tutto questo viene da bs_core/shared/sh_locale.lua. Come preparare una resource alla traduzione è spiegato in Lingue. Questa pagina è il riferimento.

Lingue: en, pt, de, pl, tr, es, fr, it, ru. Le chiavi mancanti ripiegano su en, poi sulla chiave stessa.

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

Ogni locales/<lang>.lua restituisce una tabella piatta:

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

I placeholder sono {name}. Un placeholder sconosciuto viene lasciato com’è, così gli errori di battitura si vedono invece di sparire.

FunzioneLatoCosa fa
L(key, vars)clientTesto nella lingua del giocatore locale
L(key, vars)serverTesto nella lingua predefinita del server
L(src, key, vars)serverTesto nella lingua di quel giocatore
Lp(src, key, vars)serverCome sopra, prende sempre un source
BSLocale.T(lang, key, vars)entrambiTesto in una lingua che indichi
BSLocale.Lang()entrambiLingua del giocatore locale (client) o quella predefinita (server)
BSLocale.LangOf(src)entrambiLingua di un giocatore, ripiega su quella predefinita
BSLocale.Default()entrambiPredefinita del server (GlobalState.bs_defaultLang, altrimenti en)
BSLocale.IsValid(lang)entrambiSe è uno dei nove codici
BSLocale.Dict(lang)entrambiL’intera tabella con en sotto, per NUI
BSLocale.OnChange(fn)clientfn(lang) gira quando la lingua cambia
BSLocale.Set(lang)clientChiede a bs_core di cambiare la lingua del giocatore
BSLocale.Languages, BSLocale.NativeentrambiL’elenco dei codici e i nomi nativi

Export del server: exports.bs_core:GetLanguage(src).

Sul server passa sempre il source del giocatore quando il testo va a un solo giocatore. L('key') senza source usa la lingua predefinita del server, che per una notifica è sbagliata.

TriggerClientEvent('bs:ui:notify', src, { type = 'success', message = L(src, 'shop.bought', { item = label, price = 50 }) })
  • Scelta del giocatore: state bag bs_lang sul giocatore.
  • Predefinita del server: GlobalState.bs_defaultLang (F1 Global.defaultLanguage, o la convar bs_defaultLanguage).
  • Salvata per account in bs_users.language.
  • Cambiarla scatena l’evento server bs_core:setLanguage.

Se la resource ha una ui_page, lo script di locale risponde al callback NUI bs_i18n con { lang, dict } e invia la nuova tabella quando la lingua cambia. Carica l’helper e marca il tuo HTML:

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

In JS: t('key', vars) e BSI18n.onChange(fn). Dettagli in Lingue.