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:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))Kolejność sprawdzania:
bupa-chat:locale— nadpisanie dla pojedynczego zasobu tylko dla BUPA Chat.ox:locale— współdzielone ustawienie języka ox_lib używane na całym serwerze.en— język zapasowy (angielski), jeśli żaden nie jest ustawiony.
setr ox:locale "tr" # język dla całego serwera
setr bupa-chat:locale "en" # opcjonalnie: wymuś język angielski tylko dla czatuZmiana 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:
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.
{
"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").