--- Localização
Localização
O BUPA Chat é totalmente traduzível. As traduções são arquivos JSON simples localizados em locales/, carregados pelo ox_lib (o manifesto declara ox_lib 'locale') e lidos através do wrapper t().
Idiomas inclusos
locales/*.json — dez idiomas disponíveis por padrão:
| Código | Idioma | Código | Idioma |
|---|---|---|---|
en |
Inglês | nl |
Holandês |
tr |
Turco | pl |
Polonês |
de |
Alemão | pt |
Português |
es |
Espanhol | ru |
Russo |
fr |
Francês | it |
Italiano |
Todas as strings da interface, rótulos de categorias, placeholders, descrições de emotes e mensagens do sistema são obtidos a partir desses arquivos.
Selecionando o idioma
O idioma ativo é definido em shared/config/core.lua:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))Ordem de prioridade:
bupa-chat:locale— uma substituição por resource apenas para o BUPA Chat.ox:locale— o idioma compartilhado do ox_lib usado em todo o seu servidor.en— Inglês como padrão caso nenhum seja definido.
setr ox:locale "tr" # idioma global do servidor
setr bupa-chat:locale "en" # opcional: forçar inglês apenas para o chatAlteração em tempo de execução — bupa:changeLanguage
Você pode alterar o idioma de um jogador em tempo real, por sessão, sem precisar reiniciar. Acione o evento client com o código do idioma; o BUPA Chat recarrega esse arquivo de tradução via ox_lib e o envia diretamente para a interface em React:
TriggerEvent("bupa:changeLanguage", "de")Internamente, isso chama loadLang(newLang) (que altera o idioma ativo no ox_lib) e depois changeUiLang, fazendo com que tanto o lado do Lua quanto a interface sejam atualizados simultaneamente.
Adicionando ou editando um idioma
A pasta locales/ está em escrow_ignore, permitindo que você edite os arquivos JSON diretamente. Para adicionar um idioma, copie o arquivo en.json, traduza os valores e salve-o como <code>.json (por exemplo, sv.json), depois configure ox:locale ou bupa-chat:locale para usar esse código.
{
"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"
}A função t() (e o locale() do ox_lib) retornam a própria chave caso uma tradução esteja faltando. Mantenha o arquivo en.json completo como sua referência e utilize placeholders como %s / %d para valores dinâmicos (por exemplo, "Reason: %s").