From 5540148f60921e4ddfc2f1640840972cdfc039a2 Mon Sep 17 00:00:00 2001 From: Androz2091 Date: Tue, 9 Mar 2021 08:10:49 +0100 Subject: [PATCH] :sparkles: Add portuguese --- src/components/NavigationBar/LanguageMenu.vue | 1 + src/locales/pt-BR.json | 225 ++++++++++++++++++ src/locales/pt.js | 91 +++++++ src/main.js | 13 +- 4 files changed, 329 insertions(+), 1 deletion(-) create mode 100644 src/locales/pt-BR.json create mode 100644 src/locales/pt.js diff --git a/src/components/NavigationBar/LanguageMenu.vue b/src/components/NavigationBar/LanguageMenu.vue index 02c328e95..92c072b7a 100644 --- a/src/components/NavigationBar/LanguageMenu.vue +++ b/src/components/NavigationBar/LanguageMenu.vue @@ -2,6 +2,7 @@ English (EN) Français (FR) + Português (PT) diff --git a/src/locales/pt-BR.json b/src/locales/pt-BR.json new file mode 100644 index 000000000..ef152a6e1 --- /dev/null +++ b/src/locales/pt-BR.json @@ -0,0 +1,225 @@ +{ + "BASE_BLOCKS": "Blocos de base", + "MESSAGE_RELATED_BLOCKS": "Bloqueios relacionados a mensagens", + "REPLY": "reply %1", + "LOGIN": "Conecte-se ao Discord com o token %1", + "LOGIN_TOOLTIP": "Conecte seu bot ao Discord. Para obter seu token de bot, vá para https://discord.com/developers/.", + "ON_MESSAGE": "Quando uma mensagem é recebida", + "ON_CONNECTED": "Quando o bot está conectado", + "ON_CONNECTED_TOOLTIP": "Evento emitido quando seu bot está conectado ao Discord.", + "MESSAGE_ID": "message ID", + "MESSAGE_CONTENT": "conteudo da mensagem", + "MESSAGE_AUTHOR": "autor da mensagem", + "MESSAGE_AUTHOR_RAW": "%1 do autor da mensagem", + "USERNAME": "apelido", + "NICKNAME": "sobrenome", + "GET_GUILD": "encontre servidor %1 usando %2", + "NAME": "nome", + "ADD_ROLE": "adicione cargo %1 do membro %2", + "BAN_MEMBER": "banir membro %1", + "KICK_MEMBER": "kicka membro %1", + "MESSAGE_GUILD": "servidor da mensagem", + "MESSAGE_CHANNEL": "canal da mensagem", + "BASIC_BLOCKS": "blocos basicos", + "ADVANCED_BLOCKS": "blocos avançados", + "MENTIONED_MEMBER": "membro mensianado", + "ADMINISTRATOR": "Administrator", + "DETECT_MESSAGES": "Detectar mensagem", + "MESSAGE_ACTIONS": "Ações na mensagem", + "RELATED_TO_MESSAGE_STRINGS": "Strings relacionadas à mensagem", + "DELETE_MESSAGE": "deleta a mensagem", + "RES_ADD_REACTION_MISSING_REACTION": "você precisa adiciona um emoji valido !", + "ADD_REACTION": "adiciona reação %1 para a mensagem", + "MESSAGE_EMBED": "Message Embed", + "COLOR": "cor", + "TITLE": "titulo", + "MESSAGE": "mensagem", + "IMAGE": "image", + "TOOLS": "ferramentas", + "CHECK_PERMISSIONS": "Verifique as permissões dos membros", + "MEMBER_HAS_PERMISSION": "o membro %1 tem permissão %2", + "PERM_CREATE_INSTANT_INVITE": "criar convites instantâneos", + "PERM_KICK_MEMBERS": "kicka membros", + "PERM_BAN_MEMBERS": "banir membros", + "PERM_ADMINISTRATOR": "administrator", + "PERM_MANAGE_CHANNELS": "gerenciar canais", + "PERM_MANAGE_GUILD": "gerenciar servidores", + "PERM_ADD_REACTIONS": "adiciona reação", + "PERM_VIEW_AUDIT_LOG": "ver registros de auditoria", + "PERM_PRIORITY_SPEAKER": "Voz Prioritária", + "PERM_VIEW_CHANNEL": "ver canal", + "PERM_READ_MESSAGES": "lé mensagens", + "PERM_SEND_MESSAGES": "mandar mensagens", + "PERM_SEND_TTS_MESSAGES": "manda TTS mensagens", + "PERM_MANAGE_MESSAGES": "gerenciar mensagens", + "PERM_EMBED_LINKS": "embed links", + "PERM_ATTACH_FILES": "anexar arquivos", + "PERM_READ_MESSAGE_HISTORY": "ler histórico de mensagens", + "PERM_MENTION_EVERYONE": "mencionar @everyone", + "PERM_EXTERNAL_EMOJIS": "ver emojis externos", + "PERM_USE_EXTERNAL_EMOJIS": "usar emojis externos", + "PERM_CONNECT": "conectar", + "PERM_SPEAK": "falar", + "PERM_MUTE_MEMBERS": "mutar membros", + "PERM_DEAFEN_MEMBERS": "membros surdos", + "PERM_MOVE_MEMBERS": "mover membros", + "PERM_USE_VAD": "usar atividade de voz", + "PERM_CHANGE_NICKNAME": "troca sobrenome", + "PERM_MANAGE_NICKNAMES": "gerenciar sobrenomes", + "PERM_MANAGE_ROLES": "gerenciar cargos", + "PERM_MANAGE_WEBHOOKS": "gerenciar webhooks", + "PERM_MANAGE_EMOJIS": "Blocos relacionados a associações de membros", + "DETECT_JOINS": "Detectar entrada", + "ON_MEMBER_JOIN": "Quando um membro se junta a um servidor", + "JOINING_MEMBER_INFORMATIONS": "Informações sobre o membro", + "JOINING_MEMBER": "membro entrado", + "RELATED_TO_JOIN_STRINGS": "Strings relacionadas a entrada", + "JOINING_MEMBER_RAW": "%1 do membro que entrou", + "JOINING_GUILD": "servidor onde o membro entrou", + "TEMPORARILY": "Temporariamente", + "HOURS": "horas", + "REASON": "motivo", + "DURING_HOURS": "durante", + "WITH_REASON": "com o motivo", + "RES_MUST_BE_IN_ON_MESSAGE": "Este bloco só pode ser usado em um \"Quando uma mensagem é recebida\" evento", + "RES_MISSING_CONTENT": "You must specify a valid content to reply!", + "RES_MISSING_MEMBER_HAS_PERMISSION": "You must specify a valid member to check permissions!", + "RES_MUST_BE_IN_ON_MEMBER_JOIN": "Este bloco só pode ser usado em um \"Quando um membro se junta a um servidor\" evento", + "RES_ADD_ROLE_MISSING_ROLE": "Você deve especificar um nome ou ID de um cargo válido para adicionar!", + "RES_ADD_ROLE_MISSING_MEMBER": "você teve especifica um membro valido para adiciona o cargo nele!", + "RES_REMOVE_ROLE_MISSING_ROLE": "Você deve especificar um nome ou ID de um cargo válido para remove", + "RES_REMOVE_ROLE_MISSING_MEMBER": "você teve especifica um membro valido para remove o cargo nele!", + "RES_KICK_MEMBER_MISSING_MEMBER": "você teve especifica um membro valido para ser kickado!", + "RES_BAN_MEMBER_MISSING_MEMBER": "você teve especifica um membro valido para ser banido!", + "MANDATORY_BLOCKS": "Blocos obrigatorios", + "STARTS_WITH":"linha nova", + "FIND_CHANNEL": "Encontre um canal", + "SEND_CHANNEL_LABEL": "Envie uma mensagem no canal encontrado", + "GET_CHANNEL": "pegue o salão com %2 igual a %1", + "RES_MISSING_CHANNEL_VALUE": "você teve especifica um nome ou id de um canal valido!", + "RES_SEND_CHANNEL_CONTENT": "você teve especifica um conteudo para manda!", + "RES_SEND_CHANNEL_CHANNEL": "Você deve especificar um canal para enviar o conteúdo!", + "SEND_CHANNEL": "envie %1 no canal %2", + "TOOLBOX_LOGIC": "Logica", + "TOOLBOX_LOOPS": "Loops", + "TOOLBOX_MATH": "Matematica", + "TOOLBOX_TEXT": "Texto", + "TOOLBOX_LISTS": "Listas", + "TOOLBOX_COLORS": "Cors", + "TOOLBOX_VARIABLES": "Variaveis", + "TOOLBOX_FUNCTIONS": "Funções", + "TOOLBOX_CHANNELS": "Canais", + "TOOLBOX_ACTIONS": "Ações", + "TOOLBOX_BASE": "Base", + "TOOLBOX_SERVER": "Servers", + "TOOLBOX_ROLES": "Cargos", + "FIND_SERVER": "Encontre um servidor", + "GET_SERVER": "encontre um servidor com %2 igual a %1", + "RES_GET_SERVER_SERVER": "você precisa especifica um nome ou id de um servidor valido!", + "LABEL_SERVER_INFOS": "Informações sobre o servidor", + "MEMBER_COUNT": "numero de membros no servidor %1", + "RES_VALID_SERVER": "você precisa coloca um servidor valido!", + "ICON_URL": "icone url do servidor %1", + "SERVER_NAME": "nome do servidor %1", + "SERVER_OWNER": "dono do servidor %1", + "RES_SET_SERVER_NAME_SERVER": "você precisa especifica um servidor valido!", + "RES_SET_SERVER_NAME_NEW_NAME": "você precisa especifica um nome novo valido!", + "LABEL_MODIFY_SERVER": "Modifique o servidor", + "SET_SERVER_NAME": "troque o nome do servidor %1 nome novo %2", + "GET_ROLE_SERVER": "no servidor", + "GET_ROLE": "pegue o cargo com %2 igual a %1", + "RES_GET_ROLE_VALUE": "você precisa especifica um nome ou id de um cargo valido!", + "RES_GET_SERVER_VALUE": "você precisa especifica um nome ou id de um servidor valido!", + "FIND_ROLE": "Encontre um cargo", + "ROLE_ASSIGNMENT": "Atribuição de cargos", + "FIND_MEMBER": "Encontre um membro", + "GET_MEMBER": "encontre um membro com %2 igual a %1 no servidor %3", + "INIT_TOOLTIP": "Permite que você use blocos Discord!", + "JOINING_GUILD_RAW": "%1 do membro que entrou no servidor", + "LABEL_MEMBER_ACTIONS": "Ações no membro", + "LABEL_MESSAGE_CONTEXT": "Contexto da mensagem", + "MESSAGE_CHANNEL_RAW": "%1 do canal da mensagem", + "MESSAGE_GUILD_RAW": "%1 do servidor da mensagem", + "RES_GET_MEMBER_SERVER": "você precisa especifica um servidor valido onde o membro esta!", + "RES_GET_MEMBER_VALUE": "você precisa especifica um nome ou id de um membro valido!", + "TOOLBOX_MEMBERS": "Membro", + "MEMBER_INFORMATIONS": "Informações dos membros", + "RES_VALID_MEMBER": "Você deve especificar um membro válido!", + "MEMBER_DISCRIMINATOR": "discriminador de membro %1", + "MEMBER_ID": "id do membro %1", + "MEMBER_TAG": "tag do membro %1", + "MEMBER_USERNAME": "sobrenome do membro %1", + "MEMBER_IS_BOT": "membro %1 é um bot", + "SET_MEMBER_NICKNAME": "troque o apelido %1 novo apelido %2", + "RES_SET_MEMBER_NICKNAME_MEMBER": "Você deve especificar um membro válido para alterar o apelido", + "RES_SET_MEMBER_NICKNAME_NEW_NAME": "Você deve especificar um novo apelido válido para o membro!", + "SERVER_BOOST_COUNT": "numero de impulsos no servidor %1", + "SERVER_BOOST_LEVEL": "nível de impulso do servidor %1", + "SEND_WAIT_REPLY": "envie %1 no canal %2 e espere por uma resposta do membro %3 durante (minutos) %4 quando uma resposta é recebida %5 se nenhuma responde vo recebida %6", + "RES_SEND_WAIT_REPLY_VALUE_PARENT": "This block can only be used in a \"Wait for an answer\" bl!", + "SEND_WAIT_REPLY_VALUE": "resposta do membro", + "FORMS": "Formulários", + "SEND_WAIT_REPLY_EXAMPLE": "Qual é o seu nome??", + "REPLY_EXAMPLE": "Hey!", + "ON_REACT_ADDED": "Quando uma reação é adicionada", + "REACT_RELATED_BLOCKS": "Blocos relacionados a reações", + "DETECT_REACT": "Eu estou escrevendo, estou escrevendo", + "REACT_INFORMATIONS": "Informações sobre a reação adicionada / removida", + "REACT_MESSAGE_ID": "ID da mensagem de reação", + "RES_MUST_BE_IN_ON_REACT": "Este bloco só pode ser usado em um bloco de \"reação adicionada\" ou em um bloco \"reação removida\"!", + "REACT_EMOJI": "emoji da reação", + "REACT_MEMBER": "membro que reaciu", + "ON_REACT_REMOVED": "Quando uma reação é removida", + "BOT_PING": "bot ping", + "BOT_INFORMATIONS": "Informação do bot", + "BOT_ACTIONS": "Ações no bot", + "RES_MISSING_GAME": "Você deve especificar um jogo para o bot!", + "SET_BOT_GAME": "definir o jogo de bot para %1", + "BOT_SERVER_COUNT": "contagem de servidores bot", + "TOOLBOX_E_JOINS": "Entradas", + "TOOLBOX_E_MESSAGES": "Mensagems", + "TOOLBOX_E_REACTIONS": "Reações", + "TOOLBOX_DATABASE": "Banco de dados", + "GET_DATA": "pegue %1 do banco de dados", + "LABEL_READ_DB": "lé banco de dados", + "LABEL_UPDATE_DB": "atualiza banco de dados", + "SET_DATA": "setar %1 para %2 no banco de dados", + "DELETE_DATA": "deletar %1 banco de dados", + "HAS_DATA": "%1 existe no banco de dados", + "ADD_DATA": "adiciona %1 para %2", + "SUBTRACT_DATA": "remover %1 do %2", + "DETECT_LEAVES": "Detectar licenças", + "LEAVING_GUILD": "deixando o servidor membro", + "LEAVING_GUILD_RAW": "%1 do servidor do membro que está saindo", + "LEAVING_MEMBER_INFORMATIONS": "Informações sobre o membro", + "LEAVES_RELATED_BLOCKS": "Bloqueios relacionados às saídas de membros", + "ON_MEMBER_LEAVE": "Quando um membro sai de um servidor", + "RELATED_TO_LEAVE_STRINGS": "Strings relacionados a saida", + "TOOLBOX_E_LEAVES": "Saidas", + "RES_MUST_BE_IN_ON_MEMBER_LEAVE": "Este bloco só pode ser usado em um evento \"Quando um membro deixa um servidor \"", + "LEAVING_MEMBER_RAW": "%1 do membro que saiu do servidor", + "WAIT_SECONDS": "espere %1 segundos", + "TOOLBOX_OTHER": "Outros", + "RUN_SAVE_OUTPUT": "faça %1 e salve a saída em %2", + "TOOLBOX_MESSAGES": "mensagens", + "GET_MESSAGE": "obter mensagem com ID igual a %1 no canal %2", + "RES_GET_MESSAGE_CHANNEL": "Você deve especificar um canal válido no qual a mensagem é!", + "RES_GET_MESSAGE_VALUE": "Você deve especificar um ID de mensagem válido!", + "FIND_MESSAGE": "Encontre a mensagem", + "MESSAGE_INFORMATIONS": "Informações sobre a mensagem", + "CURRENT": "%1 atual", + "HOUR": "hora", + "MINUTE": "minuto", + "MONTH": "mês", + "DAY_OF_WEEK": "dia da semana", + "SECOND": "segundo", + "DATE": "data", + "FOREVER": "repita para sempre %1 faz %2", + "YES": "sim", + "NO": "não", + "CREATE_CHANNEL": "crie um canal com o nome %1 no servidor %2 do tipo %3", + "CHANNEL_ACTIONS": "Ações para o canal", + "TEXT": "texto", + "VOICE": "voz", + "CATEGORY": "categoria" +} diff --git a/src/locales/pt.js b/src/locales/pt.js new file mode 100644 index 000000000..aba7198e9 --- /dev/null +++ b/src/locales/pt.js @@ -0,0 +1,91 @@ +import Blockly from "blockly"; + +import blocklyMessages from "./pt-BR.json"; + +export const applyBlocklyLocale = () => { + for(let key in blocklyMessages){ + Blockly.Msg[key] = blocklyMessages[key]; + } +}; + +export const websiteMessages = { + untitled: "Documento sem nome", + help: "Ajuda", + load: { + error: "O arquivo enviado está corrompido e não pode ser carregado pelo Scratch For Discord..." + }, + file: { + title: "Arquivo", + javascript: "Exporta para javascirpt", + open: "abrir arquivo...", + save: "Salva" + }, + edit: { + title: "Edita", + undo: "desfazer", + redo: "refazer", + clear: "deleta {blockCount} blocos", + cleanup: "limpa blocos", + cleardb: "limpa database" + }, + lang: { + title: "linguagem" + }, + examples: { + title: "Exemplos", + confirm: { + title: "Deleta os blocos atual?", + text: "Você gostaria de remover os blocos do projeto atual antes de importar o exemplo?", + cancel: "Cancela", + yes: "Sim", + no: "Não" + }, + loaded: "Exemplo {example} importando com sucesso!", + ping_pong: "comando ping-pong", + command_parsing: "handler de comandos", + leveling: "XP e sistema de níveis" + }, + download: { + title: "Instale o seu bot", + content: { + title: "Como iniciar o seu bot depois de baixado?", + unzipFile: "Descompacte o arquivo baixado.", + node: "Instale o NPM e o Node.js (pesquise tutoriais no Google)", + start: "Execute 'npm install' e 'npm start' em um terminal", + done: "Seu bot foi iniciado!" + }, + cancel: "Cancela", + confirm: "Instala" + }, + tour: { + skip: "Pular tour", + previous: "Anterior", + next: "Próximo", + finish: "Termina", + steps: { + load_examples: "Importe exemplos para descobrir Scratch4Discord!", + run_test: "Teste as funcionalidades do seu bot aqui!", + export_code: "Exporte seu código aqui!" + } + }, + warnings: { + login_block: "O bloco \"Conectar ao Discord\" na categoria \"Base\" é obrigatório." + }, + run_modal: { + title: "Clique em Iniciar para testar seu bot!", + start: "Inicie o bot", + stop: "Pare o bot", + invalid_token: "Unable to connect to Discord... Maybe the bot's token isn't valid!", + error: "Incapaz de conectar ao Discord ... Talvez o token do bot não seja válido!", + disabled: "⚠️ Este recurso está disponível apenas usando o aplicativo Scratch For Discord (pegue ele {here})", + here: "aqui" + }, + code_modal: { + title: "Código JavaScript do seu bot" + } +}; + +export default { + applyBlocklyLocale, + websiteMessages +}; diff --git a/src/main.js b/src/main.js index 05d6dc3e0..07e413db0 100755 --- a/src/main.js +++ b/src/main.js @@ -27,13 +27,16 @@ Vue.config.ignoredElements = ["field","block","category","xml","mutation","value import blocklyLocaleEN from "blockly/msg/en"; import blocklyLocaleFR from "blockly/msg/fr"; +import blocklyLocalePT from "blockly/msg/pt"; import customLocaleEN from './locales/en'; import customLocaleFR from './locales/fr'; +import customLocalePT from './locales/pt'; const messages = { en: customLocaleEN.websiteMessages, - fr: customLocaleFR.websiteMessages + fr: customLocaleFR.websiteMessages, + pt: customLocalePT.websiteMessages }; const i18n = new Vuei18n({ @@ -100,6 +103,14 @@ Vue.mixin({ // Change website languages (navbar, etc...) this.$root.$i18n.locale = "fr"; break; + case "pt": + // Change Blockly language for default blocks + Blockly.setLocale(blocklyLocalePT); + // Change Blockly language for custom blocks + customLocalePT.applyBlocklyLocale(); + // Change website languages (navbar, etc...) + this.$root.$i18n.locale = "pt"; + break; default: break; }