Skip to content

Localization

Lokalizacja

BUPA Chat jest w pełni przetłumaczalny. Tłumaczenia znajdują się w zwykłych plikach JSON w katalogu locales/, są ładowane przez ox_lib (manifest deklaruje ox_lib 'locale') i odczytywane za pomocą wrappera t().

Dostępne języki

locales/*.json — dziesięć języków w standardzie:

Kod Język Kod Język
en Angielski nl Holenderski
tr Turecki pl Polski
de Niemiecki pt Portugalski
es Hiszpański ru Rosyjski
fr Francuski it Włoski

Każdy tekst interfejsu, etykieta kategorii, placeholder, opis animacji oraz komunikat systemowy pobierany jest z tych plików.

Wybór języka

Aktywny język jest definiowany w shared/config/core.lua:

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

Kolejność sprawdzania:

  1. bupa-chat:locale — nadpisanie dla pojedynczego zasobu tylko dla BUPA Chat.
  2. ox:locale — współdzielone ustawienie języka ox_lib używane na całym serwerze.
  3. en — język zapasowy (angielski), jeśli żaden nie jest ustawiony.
server.cfg
setr ox:locale "tr"          # język dla całego serwera
setr bupa-chat:locale "en"   # opcjonalnie: wymuś język angielski tylko dla czatu

Zmiana w czasie rzeczywistym — bupa:changeLanguage

Możesz zmienić język gracza na żywo, podczas trwania sesji, bez konieczności restartu. Wywołaj event klienta podając kod języka; BUPA Chat przeładuje ten plik językowy przez ox_lib i przekaże go bezpośrednio do interfejsu React:

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

Wewnątrz wywołuje to loadLang(newLang) (co zmienia aktywny język ox_lib), a następnie changeUiLang, dzięki czemu zarówno strona Lua, jak i interfejs aktualizują się jednocześnie.

Dodawanie lub edycja języka

Katalog locales/ znajduje się w escrow_ignore, więc możesz bezpośrednio edytować pliki JSON. Aby dodać język, skopiuj plik en.json, przetłumacz wartości i zapisz go jako <code>.json (np. sv.json), a następnie ustaw ox:locale lub bupa-chat:locale na ten kod.

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"
}

t() (oraz locale() z ox_lib) zwraca sam klucz, jeśli brakuje tłumaczenia. Upewnij się, że en.json jest kompletny jako plik referencyjny, i używaj placeholderów %s / %d dla wartości dynamicznych (np. "Reason: %s").