Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit aab8723

Browse files
committed
Add script to copy translations between files
So we can fill in missing translations from different dialects Use it to fill in missing strings in pt from pt_BR
1 parent 24f1bd1 commit aab8723

File tree

2 files changed

+137
-1
lines changed

2 files changed

+137
-1
lines changed

scripts/copy-i18n.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python
2+
3+
import json
4+
import sys
5+
import os
6+
7+
if len(sys.argv) < 3:
8+
print "Usage: %s <source> <dest>" % (sys.argv[0],)
9+
print "eg. %s pt_BR.json pt.json" % (sys.argv[0],)
10+
print
11+
print "Adds any translations to <dest> that exist in <source> but not <dest>"
12+
sys.exit(1)
13+
14+
srcpath = sys.argv[1]
15+
dstpath = sys.argv[2]
16+
tmppath = dstpath + ".tmp"
17+
18+
with open(srcpath) as f:
19+
src = json.load(f)
20+
21+
with open(dstpath) as f:
22+
dst = json.load(f)
23+
24+
toAdd = {}
25+
for k,v in src.iteritems():
26+
if k not in dst:
27+
print "Adding %s" % (k,)
28+
toAdd[k] = v
29+
30+
# don't just json.dumps as we'll probably re-order all the keys (and they're
31+
# not in any given order so we can't just sort_keys). Append them to the end.
32+
with open(dstpath) as ifp:
33+
with open(tmppath, 'w') as ofp:
34+
for line in ifp:
35+
strippedline = line.strip()
36+
if strippedline in ('{', '}'):
37+
ofp.write(line)
38+
elif strippedline.endswith(','):
39+
ofp.write(line)
40+
else:
41+
ofp.write(' '+strippedline)
42+
ofp.write(",\n")
43+
toAddStr = json.dumps(toAdd, indent=4, separators=(',', ': '), ensure_ascii=False, encoding="utf8")[1:-1]
44+
ofp.write(toAddStr.encode('utf8'))
45+
46+
os.rename(tmppath, dstpath)

src/i18n/strings/pt.json

Lines changed: 91 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -875,5 +875,95 @@
875875
"Tagged as: ": "Marcado como: ",
876876
"You have <a>disabled</a> URL previews by default.": "Você <a>desabilitou</a> pré-visualizações de links por padrão.",
877877
"You have <a>enabled</a> URL previews by default.": "Você <a>habilitou</a> pré-visualizações de links por padrão.",
878-
"You have entered an invalid contact. Try using their Matrix ID or email address.": "Você inseriu um contato inválido. Tente usar o ID Matrix ou endereço de e-mail da pessoa que está buscando."
878+
"You have entered an invalid contact. Try using their Matrix ID or email address.": "Você inseriu um contato inválido. Tente usar o ID Matrix ou endereço de e-mail da pessoa que está buscando.",
879+
880+
"You have been banned from %(roomName)s by %(userName)s.": "Você foi expulso(a) da sala %(roomName)s por %(userName)s.",
881+
"Send anyway": "Enviar de qualquer maneira",
882+
"This room": "Esta sala",
883+
"Create new room": "Criar nova sala",
884+
"Click on the button below to start chatting!": "Clique no botão abaixo para começar a conversar!",
885+
"Disable markdown formatting": "Desabilitar formatação MarkDown",
886+
"No display name": "Sem nome público de usuária(o)",
887+
"This will be your account name on the <span></span> homeserver, or you can pick a <a>different server</a>.": "Este será seu nome de conta no Servidor de Base <span></span>, ou então você pode escolher um <a>servidor diferente</a>.",
888+
"Uploading %(filename)s and %(count)s others.one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
889+
"Hide removed messages": "Ocultar mensagens removidas",
890+
"You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.",
891+
"Welcome page": "Página de boas vindas",
892+
"Upload new:": "Enviar novo:",
893+
"Private Chat": "Conversa privada",
894+
"You must <a>register</a> to use this functionality": "Você deve <a>se registrar</a> para poder usar esta funcionalidade",
895+
"And %(count)s more...": "E mais %(count)s...",
896+
"Start chatting": "Iniciar a conversa",
897+
"Public Chat": "Conversa pública",
898+
"Uploading %(filename)s and %(count)s others.zero": "Enviando o arquivo %(filename)s",
899+
"Room contains unknown devices": "Esta sala contém dispositivos desconhecidos",
900+
"Admin tools": "Ferramentas de administração",
901+
"You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.",
902+
"Undecryptable": "Não é possível descriptografar",
903+
"Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida",
904+
"Otherwise, <a>click here</a> to send a bug report.": "Caso contrário, <a>clique aqui</a> para enviar um relatório de erros.",
905+
"To link to a room it must have <a>an address</a>.": "Para produzir um link para uma sala, ela necessita ter <a>um endereço</a>.",
906+
"a room": "uma sala",
907+
"Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.",
908+
"Searching known users": "Buscando pessoas conhecidas",
909+
"Alias (optional)": "Apelido (opcional)",
910+
"Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)",
911+
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Não foi possível garantir que o endereço para o qual este convite foi enviado bate com alqum que está associado com sua conta.",
912+
"Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.",
913+
"Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!",
914+
"This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado para um endereço de e-mail que não é associado a esta conta:",
915+
"Show Text Formatting Toolbar": "Exibir barra de formatação de texto",
916+
"Room directory": "Lista pública de salas",
917+
"Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil",
918+
"Incoming call from %(name)s": "Chamada de %(name)s recebida",
919+
"Last seen": "Último uso",
920+
"Drop File Here": "Arraste o arquivo aqui",
921+
"Start Chatting": "Iniciar a conversa",
922+
"Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?": "Você gostaria de <acceptText>aceitar</acceptText> ou <declineText>recusar</declineText> este convite?",
923+
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s",
924+
"Verified": "Verificado",
925+
"%(roomName)s does not exist.": "%(roomName)s não existe.",
926+
"Enable Notifications": "Habilitar notificações",
927+
"Username not available": "Nome de usuária(o) indisponível",
928+
"Encrypted by a verified device": "Criptografado por um dispositivo verificado",
929+
"(~%(count)s results).other": "(~%(count)s resultados)",
930+
"unknown caller": "a pessoa que está chamando é desconhecida",
931+
"Start authentication": "Iniciar autenticação",
932+
"(~%(count)s results).one": "(~%(count)s resultado)",
933+
"New Password": "Nova senha",
934+
"Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s",
935+
"Disable Notifications": "Desabilitar notificações",
936+
"%(count)s new messages.one": "%(count)s nova mensagem",
937+
"Device Name": "Nome do dispositivo",
938+
"Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida",
939+
"If you already have a Matrix account you can <a>log in</a> instead.": "Se você já tem uma conta Matrix, pode também fazer <a>login</a>.",
940+
"Can't connect to homeserver - please check your connectivity, ensure your <a>homeserver's SSL certificate</a> is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o <a>certificado SSL do Servidor de Base</a> é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.",
941+
"Encrypted by an unverified device": "Criptografado por um dispositivo não verificado",
942+
"Set": "Definir",
943+
"Unencrypted message": "Mensagem não criptografada",
944+
"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.": "Participar por <voiceText>voz</voiceText> ou por <videoText>vídeo</videoText>.",
945+
"Uploading %(filename)s and %(count)s others.other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos",
946+
"Username available": "Nome de usuária(o) disponível",
947+
"Close": "Fechar",
948+
"Level:": "Nível:",
949+
"%(count)s new messages.other": "%(count)s novas mensagens",
950+
"Unverified": "Não verificado",
951+
"<a>Click here</a> to join the discussion!": "<a>Clique aqui</a> para participar da conversa!",
952+
"Decline": "Recusar",
953+
"Custom": "Personalizado",
954+
"Add": "Adicionar",
955+
"%(user)s is a": "%(user)s é um(a)",
956+
"Unnamed Room": "Sala sem nome",
957+
"The phone number entered looks invalid": "O número de telefone inserido parece ser inválido",
958+
"Rejoin": "Voltar a participar da sala",
959+
"Create a new chat or reuse an existing one": "Criar uma nova conversa ou reutilizar alguma já existente",
960+
"<a>Resend all</a> or <a>cancel all</a> now. You can also select individual messages to resend or cancel.": "<a>Reenviar todas</a> ou <a>cancelar todas</a> agora. Você também pode selecionar mensagens individuais que queira reenviar ou cancelar.",
961+
"Reason: %(reasonText)s": "Justificativa: %(reasonText)s",
962+
"Home": "Início",
963+
"Something went wrong!": "Algo deu errado!",
964+
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)",
965+
"Start chat": "Iniciar conversa pessoal",
966+
"You already have existing direct chats with this user:": "Você já tem conversas pessoais com esta pessoa:",
967+
"Accept": "Aceitar",
968+
"%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento."
879969
}

0 commit comments

Comments
 (0)