FineLocalization é um pacote leve e direto para projetos Unity, com foco em tornar a tradução multilíngue simples, prática e eficiente.
Através de uma planilha .csv com chaves e valores por idioma, o sistema permite que todos os textos do jogo sejam centralizados, gerenciados e atualizados de forma rápida — tanto durante o desenvolvimento quanto em produção.
- Tradução automática via planilha CSV com múltiplos idiomas
- Atualização dinâmica em runtime (ideal para WebGL, mobile e desktop)
- Importação/atualização manual via Editor com ferramenta no menu Tools
- Suporte completo ao TextMeshPro
- Componente de texto localizado via Key (ex:
menu.start) - Fallback automático quando uma chave está ausente
- Suporte a múltiplas fontes/tabelas (ex: diálogos, menus, sistema etc.)
- Evento para atualizar UI automaticamente quando o idioma muda:
Action OnLocalizationChanged = () => { };
- Projetos Unity que precisam de localização multilíngue
- Desenvolvedores que querem evitar duplicação de texto hardcoded
- Equipes que precisam de flexibilidade para alterar textos em produção (runtime)
No Unity, abra: Window → Package Manager → + → Add package from git URL...
Cole:
https://github.com/NoTaskStudios/com.notask.finelocalization.git
Você também pode baixar o repositório e importar no projeto (caso prefira).
Vá até: Tools → Fine Localization
No painel, encontre Table IDs e informe o(s) identificador(es) das tabelas que deseja usar no projeto.
Você pode usar mais de um Table ID, por exemplo:
- Planilha 1: regras
- Planilha 2: erros
Onde encontrar o Table ID:
Clique em Resolve Sheets.
Isso busca automaticamente todas as planilhas disponíveis para os Table IDs fornecidos. Depois disso, selecione manualmente quais planilhas pertencem a este projeto.
Escolha a pasta onde as planilhas serão baixadas.
Importante: não baixe na pasta padrão:
Packages/Fine Localization/Resources/Localization
Depois, clique em Download.
As planilhas selecionadas serão baixadas e armazenadas localmente no projeto, prontas para uso pelo sistema de localização.
Para cada elemento de texto (ex: TextMeshProUGUI) que precisa de tradução:
- Adicione o componente
LocaleComponent.cs - Preencha o campo Key com a chave correspondente da planilha
Exemplo:
Key: menu.start
O sistema atualizará automaticamente o texto de acordo com o idioma ativo.
Também é possível usar por script (dependendo do seu fluxo).
Adicione um GameObject vazio na cena e anexe:
LocaleRuntimeDownloader.cs
Nele você define se o download das tabelas deve ser feito:
- ✅ Automaticamente no
Start()quando o jogador abre o jogo - 🛠️ Manualmente, apenas no Editor, quando o desenvolvedor decidir atualizar
Algumas planilhas podem ter colunas adicionais antes de Key (ex: ID interno, comentários, metadados).
Para ignorar essas colunas, o FineLocalization permite configurar Skip, que define quantas colunas devem ser ignoradas antes da coluna Key.
Essa configuração fica em:
Resources/LocalizationSettings.asset
Durante o carregamento, o sistema ignora automaticamente as colunas especificadas.
| ID | Tipo | Key | pt-BR | en-US |
|---|---|---|---|---|
| 01 | UI | menu.start | Iniciar | Start |
| 02 | UI | menu.exit | Sair | Exit |
Nesse caso, existem duas colunas extras antes de Key (ID e Tipo), então:
Skip = 2
Durante o desenvolvimento, é útil testar diferentes idiomas direto no Editor, sem alterar arquivos externos.
Para isso existe o Force Editor Language (apenas para Play Mode no Editor).
Vá até: Tools → Fine Localization → Settings
- Encontre Force Editor Language
- Selecione o idioma desejado (ex:
pt-BR,en-US) - Dê Play: o idioma será aplicado imediatamente
Isso não afeta builds em produção. Serve apenas para testes no Editor.