Jump to content

Chats translator for lobby, rooms and in game


Pudim
 Share

Recommended Posts

PudimTranslate — tradução de chat para 0 A.D.

Clique em uma mensagem de chat para traduzir. Clique novamente para recuperar o original. Funciona em uma partida, em o lobby multiplayer e a tela de configuração da partida.

Qualquer linguagem, em ambas as direções, sem nada para configurar. Você nunca escolhe um par de idiomas:

  • O que foi escrito é detectado automaticamente. Inglês, espanhol, alemão, russo, chinês, Português — não importa, e não precisa ser o mesmo idioma duas vezes seguidas. A Sala onde três pessoas digitam em três idiomas diferentes simplesmente funciona.
  • O que você recebe de volta é a linguagem em que seu 0 A.D. está instalado. Tocar em espanhol dá vocês espanhóis; jogar em polonês te dá polonês. O mod lê o local do jogo próprio, então existe Nenhuma configuração para encontrar e nada para manter sincronizado.

Feito para jogadores que querem jogar multiplayer sem ficarem bloqueados na conversa.

Nada para instalar, no Windows, Linux ou macOS — o programa complementar vem em duas versões, PowerShell e Python, e o launcher usa o que seu sistema já tem. Sem dependência de PudimMod também: os dois são independentes, e rodar ambos juntos não causa conflito, porque O PudimTranslate mantém seus auxiliares em seu próprio namespace ().pudimtr_*


⚠️ Leia isso primeiro: o tradutor deve estar rodando antes do jogo

Tradução precisa de um pequeno programa complementar. Comece antes de abrir 0 A.D., toda vez.

Isso não é uma preferência de estilo — é como o jogo funciona. 0 A.D. indexa suas pastas de dados uma vez, em inicialização, e nunca percebe arquivos que aparecem depois. Se o tradutor ainda não estiver em execução Quando o jogo começa, ele não consegue ver a ponte e nada vai ser traduzido para isso Sessão inteira. Fechar e reabrir 0 A.D. resolve isso.

Então não lance 0 A.D. da forma usual. Inicie com ferramentas/Play0AD.bat (ou no Linux e macOS), o que inicia o Tradutor, espera a ponte estar pronta, abre o jogo e desliga o tradutor quando você Desiste. Um clique, ordem certa, nada para lembrar.tools/Play0AD.sh

Na primeira vez que você executa, Play0AD.bat cria um atalho de tradutor 0 A.D. no seu desktop, carregando o ícone 0 A.D. para que fique reconhecível ao lado do próprio atalho do jogo. Use a partir daí no lugar do seu atalho normal 0 A.D., e você terminou — um clique inicia tudo no Ordem certa.

O arquivo em si sempre mostrará o ícone simples do script do Windows. Isso não é algo que um mod pode mudar: o Windows tira um ícone do tipo de arquivo, não do arquivo, então é apenas um atalho Pode carregar um personalizado. É exatamente por isso que o atalho foi criado para você..bat.bat

Tanto o atalho quanto o lançador determinam onde o 0 A.D. está instalado sozinhos — eles olham no locais habituais de instalação, nas bibliotecas do Steam, e finalmente lendo o destino do Menu Iniciar Atalho que o instalador deixou para trás. O caminho encontrado é lembrado em , a seguir para os scripts, então a busca acontece apenas uma vez. Esse arquivo é específico de cada máquina e é propositalmente Fica fora do repositório, para que ninguém herde o caminho de instalação de outra pessoa. Se o jogo estiver em algum lugar incomum e a busca falha, execute uma vez com o caminho e a partir daí é lembrada:tools/caminho_do_jogo.txt

powershell -File tools\Play0AD.ps1 -Jogo "C:\your\path\to\pyrogenesis.exe"
 

Se preferir manter os dois separados, corra, deixe a janela aberta e apenas então abra o 0 A.D. você mesmo.tools/PudimTradutor.bat


Installation

Download the repository (Code → Download ZIP, or ) and put the folder inside your 0 A.D. directory:git clonePudimTranslatemods

System Path
Windows %APPDATA%\0ad\mods\ — or Documents\My Games\0ad\mods\
Linux ~/.local/share/0ad/mods/
macOS ~/Library/Application Support/0ad/mods/

If you are unsure, the game's own reference is at https://trac.wildfiregames.com/wiki/GameDataPaths.

The folder must sit directly inside , so that exists — a common mistake is ending up with .mods/mods/PudimTranslate/mod.jsonmods/PudimTranslate/PudimTranslate/

Then open 0 A.D., go to Settings → Mod Selection, pick PudimTranslate, click Enable, then Save Configuration and Start Mods.

Nothing to install, on any system. The companion program exists twice — once in PowerShell, once in Python — and the launcher picks whichever your machine already has. That is not accidental duplication: the native coverage is complementary.

System Launcher Uses Already installed?
Windows tools\Play0AD.bat Windows PowerShell Yes, ships with Windows 10 and 11
Linux tools/Play0AD.sh Python 3 Yes, in practically every distribution
macOS tools/Play0AD.sh Python 3 Yes, with the command line tools

Each launcher falls back to the other runtime if the preferred one is missing. On Windows the calls PowerShell with , which applies to that one call and changes no system setting. On Linux and macOS, give the permission to run once with ..bat-ExecutionPolicy Bypass.shchmod +x tools/Play0AD.sh

The desktop shortcut is a Windows convenience and is simply skipped elsewhere.

To update, replace the folder with the newer version and restart the game.


How to translate a message

Click the message. That is the whole thing. There is no button to find and no menu to open — the line of text is the button.

The screenshots below happen to show English being turned into Portuguese, because that is the author's setup — but nothing in them is specific to that pair.

In the multiplayer lobby, someone says hello in a language you do not read:

Lobby chat before translating

Clique nessa linha e ela retorna no seu idioma, em verde, para que você possa ver de relance o que foi Traduzido e o que ainda está como foi escrito:

A mesma linha, traduzida

Clique novamente para recuperar o original. Nada está perdido.

Funciona da mesma forma na tela de preparação da partida, onde a maior parte das conversas acontece antes do jogo. Aqui um Toda a conversa é em um idioma estrangeiro:

Chat de configuração da partida antes de traduzir

Clique em qualquer linha que quiser. Cada um é independente, então você pode traduzir apenas o que lhe interessa:

Vários versos traduzidos

Em uma partida, é o mesmo gesto: clique na linha de chat na tela. Lá, a linha também transporta um dica de ferramenta, então passar o mouse por uma mensagem traduzida mostra a redação original sem voltar atrás.

Algumas coisas que valem a pena saber:

  • Enquanto uma frase está sendo buscada, a linha mostra traduzindo.... Geralmente dura um piscar de olhos.
  • Se disser que o tradutor está desligado, você abriu o jogo sem o tradutor rodando. Fechar 0 d.C., Inicie com o atalho da área de trabalho e tente novamente.
  • Avisos do sistema ("== Alguém entrou.") não fazem nada quando clicados, de propósito: 0 A.D. já mostra Essas estão no seu próprio idioma, então não há nada para traduzir.
  • Uma frase já traduzida uma vez é livre para sempre — ela fica armazenada em cache no disco, então repetições como gg ou well played nunca mais chegam à rede.

Não quer clicar de jeito nenhum? Defina para na configuração do usuário e todo A mensagem recebida é traduzida conforme chega. Isso se aplica apenas dentro de uma partida — no lobby e Na tela de configuração da partida, você ainda clica nas mensagens que quiser.pudimtranslate.autotrue

Neither language is ever configured. The one you read is taken from your 0 A.D. install, and the one that was written is detected from the message itself — see the top of this page.


Is it working?

The translator opens in a window of its own and prints what it does. A healthy start looks like this, and a translated phrase shows up as a line (what was said) followed by a line (what came back):><

PudimTranslate - tradutor de chat
  pasta do jogo : D:\Documents\My Games\0ad
  ponte         : D:\Documents\My Games\0ad\saves\campaigns
  idioma destino: pt (o jogo pode pedir outro)
  cache         : 12 frase(s) ja conhecidas

  traduzindo para: pt
  > attack blue from the north, i need help
  < ataque o azul do norte, preciso de ajuda
 

Leave that window open while you play. Closing it stops translation; the game keeps running.

Two other lines are worth recognising:

  ! Google limitou o ritmo (429). Pausando 5s.
  . aguardando o limite do Google passar (5s)
 

That is Google rate-limiting your address, not a fault in the mod — see The translator is running but nothing gets translated below.

When something goes wrong

The message says the translator is off. The game was opened before the translator was running. This is the one failure that cannot fix itself mid-session: 0 A.D. indexes its data folders once at startup, so if the bridge was not there at that moment, it stays invisible for the whole session. Close 0 A.D. and open it again with the desktop shortcut.

The translator is running but nothing gets translated. Look for in its window. The translation endpoint is free and undocumented, and it rate-limits by IP address; when it decides you asked for too much it answers and keeps refusing for a while.429HTTP Error 429: Too Many Requests

The translator now backs off on its own — five seconds at first, doubling on each refusal, up to five minutes — and it makes no network call at all while it waits. A single successful translation resets the wait, so one bad moment does not slow down the rest of the session.

There is nothing to fix on your side: the block belongs to Google and expires by itself. Just leave the window open. What you should not do is restart the translator over and over — every attempt during a block is what keeps the block alive.

The translator window flashes and disappears. Something in it failed. Run on its own — the window stays open and shows the error instead of vanishing.tools/PudimTradutor.bat

Nada acontece quando você clica em uma mensagem. Se a linha for um aviso de sistema (), Isso é deliberado — o jogo já mostra essas coisas no seu idioma. Para qualquer outra coisa, verifique se A janela do tradutor ainda está aberta.== Someone joined

Vermelho CVFSFile ... não podiam ser abertas linhas na tela. Corrigido — mas apenas para tradutor versões a partir de 19 de agosto de 2026, então atualize se ainda vir isso. O tradutor costumava Publique cada resposta escrevendo um arquivo temporário e renomeando-o sobre o antigo. Esse é o livro didático forma de evitar uma leitura pela metade, mas ele substitui a entrada do diretório, e o 0 A.D. armazena em cache esses de Quando indexava a pasta: a entrada então apontava para um arquivo que não existia mais. Desde que todo A resposta é preenchida para o mesmo tamanho, agora é reescrita no lugar, então o arquivo indexado permanece O mesmo arquivo.tools/

Você atualizou o mod e nada mudou. 0 A.D. carrega scripts de mods apenas quando começa. Feche o Jogo completamente e abra de novo. O mesmo se aplica a: é lido uma vez em Inicialização, então feche a janela do tradutor e reabra depois da atualização.tools/pudim_tradutor.py

O atalho da área de trabalho aponta para algum lugar parado depois de mover a pasta do mod. Execute o lançador uma vez a partir de sua nova localização e o atalho corrige seu próprio alvo.


Por que um programa complementar afinal

Não há como evitar: o motor de script GUI com 0 AD não tem HTTP — não, nem XHR. O apenas redes expostas a scripts são o lobby XMPP e mod.io, ambos em C++. Um mod simplesmente não pode Ligue para um serviço de tradução.fetch

O que um mod pode fazer é ler e gravar arquivos. Então o moderador escreve a frase em um arquivo, o companion o programa traduz e escreve a resposta de volta:

mod  --writes-->  saves/campaigns/pudim_tr_req.json  --reads-->  PudimTradutor.ps1  --HTTP--> Google
mod  <---reads--  saves/campaigns/pudim_tr_res.json  <--writes-------'
 

Sem chave de API e sem cadastro: ele chama o mesmo endpoint gratuito que a página translate.google.com usa. As traduções são armazenadas em cache no disco, então uma frase já vista não custa ida e volta na rede.

Essa pasta não é uma questão de gosto. A interface gráfica só aceita um fechado Lista de caminhos — , , , , , e . Qualquer outra resposta responde Restrito acesso a .... Dessas, é a única pasta de usuário que pode ser gravada. Não perturba Campanhas: O jogo só aparece lá, e esses arquivos são .ReadJSONFileWriteJSONFilegui/simulation/maps/campaigns/saves/campaigns/config/matchsettings.jsonconfig/matchsettings.mp.jsonsaves/campaigns/*.0adcampaign.json

O arquivo de resposta tem sempre exatamente 64 KB, preenchido com espaços. O VFS do jogo lembra do arquivo tamanho de quando indexou a pasta, então um arquivo que cresce é lido e truncado — um JSON cortado ao meio. Um tamanho fixo mantém esse valor lembrado correto para sempre.

De onde vem uma tradução

Quatro fontes, testadas nesta ordem. A ordem não é arbitrária — cada uma está lá porque o Um antes de falhar de uma forma específica.

1. O dicionário embutido, para frases curtas ele cobre completamente. Sem rede, sem cota, instantâneo. Ele começa porque, na gíria do jogo, é mais preciso do que qualquer tradutor geral: é "bom jogo", não duas letras; , , , , todos significam algo que um a tradução literal destrói. Ele é limitado a quatro palavras, porque o dicionário troca palavras e não conjuga, não concorda com gênero ou reordena — além desse comprimento, a gramática importa mais do que gírias e Um tradutor de verdade vence.ggafkraxecopopbrb

2. Google Tradutor, alternando entre três extremidades. Os limites de taxa do endpoint gratuito são por parâmetro, não pelo seu IP ou sua conta. Medido em uma máquina em um minuto: respondi 429 a tudo enquanto traduzia 8 frases de 8. Então o a primeira reação a um bloqueio é mudar de endpoint, não desistir do Google. O recuo é Por ponto final: Um 429 em um não silencia os outros. Todos os três retornam o mesmo formato de resposta.clientclient=gtxclient=at

3. MyMemory, filtrado apenas para traduções automáticas (). Sem esse filtro ele retorna entradas de sua memória de tradução, que frequentemente são frases não relacionadas que alguém já teve Submetido.created-by == "MT!"

4. O dicionário novamente, parcialmente. Tudo o que ela sabe é traduzida, o resto fica como veio, e a contagem é mostrada: . Meia linha legível vence o silêncio.(dicionario, 5 de 7 palavras)

Dois dicionários, e por que eles são separados

tools/pudimtr_dicionario.json — gíria de jogos, 279 conceitos, manuscritos, em inglês, português e espanhol. É escrito à mão porque não há nada para copiar: , , e têm Entradas do Wiktionary, mas sem tabela de tradução utilizável, e as listas de abreviações gratuitas no GitHub são Ou pequena, abandonada desde 2018, ou declara que não há nenhuma licença. Este é o arquivo que supera o Google, E é a que é consultada antes da rede.ggwpafkglhf

tools/dicionario/wikdict-*.json.gz — vocabulário geral, ~250.000 pares de palavras entre os seis direções, extraídas do Wiktionary via DBnary e WikDict. 1,7 MB comprimido, carregado preguiçosamente e Apenas na direção realmente necessária. Comparado a 32 falas reais de um jogo, a gíria O arquivo sozinho cobria 41% das palavras; com este, 64%. O resto são nomes dos jogadores e erros de digitação, que Nenhum dicionário jamais cobrirá.

Esses arquivos carregam uma licença diferente do restante do mod — CC BY-SA 3.0, não GPL. Veja , que é necessário para permanecer com eles.tools/dicionario/ATTRIBUTION.md

O vocabulário geral é deliberadamente não usado no caminho rápido. O caminho rápido existe porque A gíria do mod supera um tradutor geral; para vocabulário comum, o oposto é verdade — o Google é melhor e conjugado. Deixar o WikDict seguir o caminho rápido tiraria do Google exatamente as linhas É a melhor tradução.

Uma consequência que vale a pena conhecer: um dicionário maior torna a detecção de idiomas mais difícil, não mais fácil. Com 279 conceitos, ler português como espanhol era raro; com 70.000 palavras, saiu como porque e existe em ambos. O Detector agora também mede o quanto o texto se parece com o idioma de alvo e o deixa intacto quando já está."brincadeira nao se preocupe""brincadeira nau SE preocupe"naose

O idioma de origem não está na solicitação, então ele tenta os três e mantém o que reconhece Mais palavras.

Microsoft Tradutor e Amazon Tradutor não são opções. A Microsoft precisa de uma chave Azure — a endpoint sem chave que o Edge usou () agora retorna 404. Amazon requer credenciais AWS SigV4; Não existe um caminho anônimo. Instâncias públicas do LibreTranslate e Lingva foi testada e ambas reprovaram.edge.microsoft.com/translate/auth

Duas implementações, um comportamento

Existe um tradutor de Python e um de PowerShell. prefere o PowerShell, porque ele vem com Windows e nada precisa ser instalado; ele volta para Python se o PowerShell for desaparecido. No Linux e macOS, a ordem é invertida.PudimTradutor.bat

Cada correção de comportamento precisa ser incluída em ambos. Isso não é uma preferência de estilo — custou meia hora de diagnóstico uma vez: o tratamento 429 estava escrito apenas em , o jogador estava executando a do PowerShell, e a evidência era sutil porque o .NET reporta o erro no Windows Exibir a linguagem. existe para que a omissão apareça como teste reprovado em vez de ser um inseto em uma partida.pudim_tradutor.pytools/test_paridade.py

Como funciona, por tela

Em uma partida, nenhum botão precisou ser inventado. O próprio jogo já oferece todos os chats linha como botão — conjuntos — e dimensiona a linha exatamente na largura do texto. Então, anexar um callback torna a mensagem clicável sem cobrir o mapa ou roubar cliques destinados às unidades.ChatOverlaygui/session/chat/ChatOverlay.jsghost = !chatMessage.callback

No lobby e na tela de configuração de partidas, o chat é um , um item por mensagem. Ali não há botão por linha ali, mas há seleção, então o gesto termina sendo o mesmo: clique no Mensagem para traduzir.type="list"

Privacidade

As mensagens de chat que você escolhe traduzir são enviadas para o Google Tradutor ou para o MyMemory quando o Google é limitado por taxa. Nada mais sai da sua máquina, e nada é enviado até você clicar em uma mensagem — A menos que você ative , caso em que toda mensagem de chat que chega durante um A correspondência é enviada assim que chega.pudimtranslate.auto

Avisos do sistema nunca são enviados. Uma frase já presente no cache no disco é respondida localmente, e Assim como qualquer frase curta que o dicionário embutido cobre — essas nunca tocam a rede.

Idioma

O texto do mod (dicas de ferramentas, avisos) é em português ou inglês, seguindo o idioma do jogo.

Licença

O PudimTranslate é lançado sob a Licença Pública Geral GNU v3 ou posterior — veja .LICENSE

Todo o código é original — veja .NOTICE

PudimTranslate-main (3).zip

Edited by Pudim
  • Like 1
  • Thanks 2
Link to comment
Share on other sites

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...