Skip to content

--- 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:

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

Ordem de prioridade:

  1. bupa-chat:locale — uma substituição por resource apenas para o BUPA Chat.
  2. ox:locale — o idioma compartilhado do ox_lib usado em todo o seu servidor.
  3. en — Inglês como padrão caso nenhum seja definido.
server.cfg
setr ox:locale "tr"          # idioma global do servidor
setr bupa-chat:locale "en"   # opcional: forçar inglês apenas para o chat

Alteraçã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:

client
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.

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

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").