> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dkscripts.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Sistema de Localização (Tradução)

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

<Note>
    📁 dk\_animations\_ext > config > shared > locale > !locale.lua
</Note>

***

## 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`.

```lua theme={null}
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.

<Tip>
  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`.
</Tip>

***

## Código Fonte do Sistema

```lua dk_animations_ext/config/shared/locale/!locale.lua theme={null}
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.
