Sistema de Localização e Traduções

Este arquivo é o cérebro do sistema de internacionalização (i18n) do script. Ele gerencia qual idioma será usado e fornece as funções necessárias para exibir todos os textos, tanto no jogo quanto na interface do usuário (UI), no idioma selecionado.
  📁 dk_animations_ext > config > shared > locale > !locale.lua

Configurando o Idioma

Para alterar o idioma de todo o script, você precisa modificar apenas uma linha neste arquivo, definindo o idioma desejado na variável language.
local language = "ptbr" -- Idiomas disponíveis por padrão: "ptbr", "en"
Basta trocar "ptbr" pelo código do idioma que você deseja usar (ex: "en" para inglês).

Função Principal: Locale()

A função Locale() é o mecanismo central que busca os textos traduzidos. Ela recebe o nome da variável de texto e, opcionalmente, argumentos para formatar a string dinamicamente.
  • Uso Básico: Locale("sent_anim") retornaria “Convite de animação enviado!”.
  • Uso com Argumentos: Locale("request_anim", {"/beijar"}) retornaria “O jogador deseja iniciar a animação /beijar com você!”.

Integração com a Interface (UI)

O script também garante que a interface web (NUI) seja traduzida. Ele faz isso através de um RegisterNUICallback. Quando a interface do usuário é carregada, o script envia a ela todas as traduções necessárias, garantindo uma experiência de usuário consistente e totalmente traduzida.
Para adicionar um novo idioma (ex: espanhol), você pode criar um arquivo es.lua na mesma pasta, copiando a estrutura de ptbr.lua ou en.lua. Depois, basta definir a variável language neste arquivo para es.

Código Fonte do Sistema

dk_animations_ext/config/shared/locale/!locale.lua
Locales = {}

local language = "ptbr" -- "ptbr", "en"

function Locale(varName, args)
    if not args then
        args = {}
    end
    local locale = Locales[language]["game"]

    if #args > 0 then
        return string.format(locale[varName], table.unpack(args))
    else
        return locale[varName]
    end
end

if not IsDuplicityVersion() then
    RegisterNUICallback("dk_animations_ext/uiLoaded",function(_, cb)
        local locales = Locales[language]["ui"]
        SendNUIMessage({
            locales = locales
        })
        LocalesRegistered = true
        cb(nil)
    end)
end

🔔 Resumo:
  • Este arquivo gerencia todo o sistema de tradução do script.
  • Para mudar o idioma, basta alterar a variável language no topo do arquivo.
  • A função Locale() é a responsável por buscar e formatar os textos traduzidos.
  • O sistema envia automaticamente as traduções para a interface gráfica (NUI).
  • É um sistema expansível, permitindo que novos idiomas sejam adicionados de forma simples.