From c561dec14cc19ed21f9aab8f7c0b7098a2b4f351 Mon Sep 17 00:00:00 2001 From: Rafael Andrade de Oliveira <eu.rafa@gmail.com> Date: Sun, 13 Dec 2015 09:03:50 -0200 Subject: [PATCH] Portuguese (Brazil) language added --- Gulpfile.js | 2 + app/controllers/BaseController.go | 2 +- app/i18n/i18n.go | 2 + app/views/home/header.html | 1 + messages/album.pt | 31 ++++ messages/blog.pt | 91 ++++++++++ messages/markdown.pt | 35 ++++ messages/member.pt | 136 +++++++++++++++ messages/msg.pt | 281 ++++++++++++++++++++++++++++++ 9 files changed, 580 insertions(+), 1 deletion(-) create mode 100644 messages/album.pt create mode 100644 messages/blog.pt create mode 100644 messages/markdown.pt create mode 100644 messages/member.pt create mode 100644 messages/msg.pt diff --git a/Gulpfile.js b/Gulpfile.js index 1941a2a..e9289c2 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -271,10 +271,12 @@ gulp.task('i18n', function() { genI18nJsFile('blog.zh', [], keys); genI18nJsFile('blog.en', [], keys); genI18nJsFile('blog.fr', [], keys); + genI18nJsFile('blog.pt', [], keys); genI18nJsFile('msg.fr', ['member.fr', 'markdown.fr', 'album.fr'], keys); genI18nJsFile('msg.zh', ['member.zh', 'markdown.zh', 'album.zh'], keys); genI18nJsFile('msg.en', ['member.en', 'markdown.en', 'album.en'], keys); + genI18nJsFile('msg.pt', ['member.pt', 'markdown.pt', 'album.pt'], keys); }); // 合并album需要的js diff --git a/app/controllers/BaseController.go b/app/controllers/BaseController.go index 53a389e..f9c07b7 100644 --- a/app/controllers/BaseController.go +++ b/app/controllers/BaseController.go @@ -186,7 +186,7 @@ func (c BaseController) SetLocale() string { pos := strings.Index(locale, "-") lang = locale[0:pos] } - if lang != "zh" && lang != "en" { + if lang != "zh" && lang != "en" && lang != "fr" && lang != "pt" { lang = "en" } c.RenderArgs["locale"] = lang diff --git a/app/i18n/i18n.go b/app/i18n/i18n.go index 8b257d3..b008de2 100644 --- a/app/i18n/i18n.go +++ b/app/i18n/i18n.go @@ -86,7 +86,9 @@ func main() { parse("msg.en") parse("msg.zh") parse("msg.fr") + parse("msg.pt") parse("blog.zh") parse("blog.en") parse("blog.fr") + parse("blog.pt") } diff --git a/app/views/home/header.html b/app/views/home/header.html index 97b3814..c6c5167 100644 --- a/app/views/home/header.html +++ b/app/views/home/header.html @@ -41,6 +41,7 @@ function log(o) { <a data-lang="en-us">English</a> <a data-lang="fr-fr">Français</a> <a data-lang="zh-cn">简体中文</a> + <a data-lang="pt-br">Português</a> </div> <ul class="nav navbar-nav navbar-left"> diff --git a/messages/album.pt b/messages/album.pt new file mode 100644 index 0000000..2f38a34 --- /dev/null +++ b/messages/album.pt @@ -0,0 +1,31 @@ + +# album image +Images=Imagens +Upload=Enviar +Image URL=Imagem URL +Albums=Álbuns +Default=Padrão +File title search=Busca pelo título do arquivo +Go to upload images=Ir para envio de imagens +Rename=Renomear +Add=Incluir +Add Album=Incluir álbum +Add Image=Incluir imagem +Can't load this url=Não é possível carregar esta URL +No Images=Sem imagens +Click to upload images Or Drop images to here=Clique para fazer o envio de imagens or arraste imagens aqui + +Cannot delete default album=Não é possível excluir o álbum padrão +Cannot rename default album=Não é possível renomear o álbum padrão +This album has images, please delete it's images at first.=Este álbum tem imagens, favor excluir elas antes. + +Rename Album=Renomear Álbum +Add Success!=Incluído com sucesso! +Rename Success!=Renomeado com sucesso! +Delete Success!=Excluído com sucesso! +Are you sure to delete this image ?=Vocês tem certeza que deseja excluir esta imagem ? +click to remove this image=clique para excluir esta imagem +error=erro +Error=Erro +Prev=Anterior +Next=Próxima \ No newline at end of file diff --git a/messages/blog.pt b/messages/blog.pt new file mode 100644 index 0000000..692b216 --- /dev/null +++ b/messages/blog.pt @@ -0,0 +1,91 @@ +# blog + +blogNavs=Navegação +quickLinks=Links rápidos +latestPosts=Últimas postagens + +noBlog=Sem blog +noTag=Sem tag +blogClass=Categoria +updatedTime=Enviado em +createdTime=Criado em +fullBlog=Blog completo +blogNav=Navegação do blog +more=Mais... +previous=Anterior +next=Próximo + +# +# set blog +# +blogSet=Configuração do blog +baseInfoSet=Informações básicas +commentSet=Comentário +themeSet=Tema +theme=Tema +blogName=Título +blogLogo=Logo +blogDesc=Descrição +aboutMe=Sobre mim + +#domain +domainSet=Domímio +subDomain=Subdomínio +domain=Domain personalizado + +# theme +elegant=Elegante +navFixed=Navegação fixada à esquerda + +openComment=Abrir commentário? +chooseComment=Sistema de comentário +disqusHelp=Favor insira seu Disqus Id +needHelp=Precisa de ajuda? +blogLogoTips=Envie uma imagem para substituir o título do blog +saveSuccess=Gravado com sucesso + +community=Comunidade +home=Home +none=Nada +moreShare=Mais +sinaWeibo=Weibo +weixin=Weichat +tencentWeibo=Tencent Weibo +qqZone=QQ Zone +renren=Renren +report=Relatório +like=Gostei +unlike=Não gostei +viewers=Visualizadores +author=Autor +delete=Excluir +reply=Responder +comment=Comentar +comments=Comentários +cancel=Cancelar +confirm=Confirmar +signIn=Sign In +signUp=Sign Up +submitComment=Submeter +reportReason1=不友善内容 +reportReason2=广告等垃圾信息 +reportReason3=违法违规内容 +reportReason4=不宜公开讨论的政治内容 +other=Outro +reportReason=Razão +chooseReason=请选择举报理由 +reportSuccess=举报成功, 我们处理后会通知作者, 感谢您的监督 +error=Erro +reportComment?=举报该评论? +reportBlog?=举报该博客? +confirmDeleteComment=Você tem certeza? +scanQRCode=Abrir weichat e escanear o código QR +justNow=Agota +minutesAgo=minutos atrás +hoursAgo=horás atrás +daysAgo=dias atrás +weeksAgo=semanas atrás +monthsAgo=meses atrás + + +a=a \ No newline at end of file diff --git a/messages/markdown.pt b/messages/markdown.pt new file mode 100644 index 0000000..a52d093 --- /dev/null +++ b/messages/markdown.pt @@ -0,0 +1,35 @@ + +# markdown editor + +Hyperlink=Hyperlink +Please provide the link URL and an optional title=Favor informar a URL e um título opcional +optional title=título opcional +Ok=Ok +Cancel=Cancelar +Strong=Negrito +strong text=texto em negrito +Emphasis=Itálico +emphasized text=texto em itálido +Blockquote=Avanço +Code Sample=Código de exemplo +enter code here=Insira o código aqui +Image=Imagem +Heading=Cabeçalho +Numbered List=Lista numerada +Bulleted List=Lista não-numerada +List item=Item de lista +Horizontal Rule=Linha horizontal +Markdown syntax=Syntaxe Markdown +Undo=Desfazer +Redo=Refazer +enter image description here=Inserir a descrição da imagem aqui +enter link description here=Inserir a descrição do link aqui +Edit mode=Modo Edit +Vim mode=Movo Vim +Emacs mode=Modo Emacs +Normal mode=Modo Normal +Normal=Normal +Light=Light +Light editor=Editor light + +Insert Image=Inserir Imagem diff --git a/messages/member.pt b/messages/member.pt new file mode 100644 index 0000000..e72a4d5 --- /dev/null +++ b/messages/member.pt @@ -0,0 +1,136 @@ +#################### +# Member Center +#################### + +memberCenter=Membro Central +userNotExists=Usuário inexistente +hasUsers=O usuário já existe +Leanote Blog Theme Api=Tema da API do Blog do Leanote +My Group=Meu grupo + +# post abstract + +Abstract=Resumo +Description=Descrição +Once the abstract has been updated, it will not set the abstract automatically other than you cancel it.=Uma vez que o resumo seja atualizado, ele não será definido automaticamente exceto se você cancelá-lo. +Main Image=Imagem principal +Get next image as main image from content=Usar a próxima imagem do conteúdo como imagem principal +Raw Content=Conteúdo original + +#memeber +welcomeToLeanote=Bem-vindo +accountInfo=Informações da conta +accountType=Tipo da conta +premiumAccountType=Premium +normalAccountType=Normal +imageSize=Tamanho de imagem +attachSize=Tamanho de anexo +totalTraffic=Tráfego de Internet +upgrade=Evoluir minha conta +leanoteEvents=Novidade da Leanote +addLeanoteAccount=Nova conta Leanote +defaultComment=Sistema padrão de comentário Leanote +upgradeAccountTips=Quero utilizar um domínio personalizado para o meu blog, <a class="btn btn-default" href="/service">Evoluir minha conta</a> +cateIsPublicNotebook=Categoria são notas publicadas +dragAndSort=Arraste para ordenar +permanentLink=Link permanente +cate=Categoria +noCates=Sem categoria +single=Página simples +singleTips=Você pode incluir diversas páginas simples +addSingle=Nova página simples +updateSingle=Atualizar página simples +inputSingleTitle=O título é obrigatório +saveSort=Ordenação gravada +pagingAndSort=Configurações de paginação e ordenação +perPageSize=Itens por página +sortField=Campo de ordenação +sortType=Tipo de ordenação +publicTime=Data/hora da publicação +createdTime=Data de criação +updatedTime=Data de atualização +desc=Desc +asc=Asc +postList=Lista de postagens +hasSelfDefined=Definido +noSelfDefined=Não definido +setAbstract=Configurações do resumo +title=Título +content=Conteúdo + +addTheme=Novo tema +importTheme=Importar tema +exportTheme=Exportar tema +export=Exportar +preview=Pré-visualização +edit=Editar +use=Usar +install=Instalar +currentTheme=Tema atual +myOtherThemes=Meus outros tema +leanoteThemeMarket=Venda de temas da Leanote +updateTheme=Atualizar tema +tplStyleScript=template, style, script +newFile=Novo arquivo +image=Imagem +currentFile=Arquivo atual +tpl=Template +style=Style +script=Script +header=Cabeçalho +footer=Rodapé +index=Início +cate=Categoria +search=Pesquisa +single=Página simples +archive=Arquivo +post=Post +tags=Tags +tag_posts=Postagens de tags +share_comment=Comentários +themeJson=Configurações de tema +paging=Paginação +highlight=Realce de código + +# member title +Leanote Member Center=Membro Central Leanote +Username=Usuário +Email=E-mail +Password=Senha +Avatar=Avatar +Add Account=Incluir conta +Update Post Abstract=Atualizar resumo da postagem +Blog Base Info=Informações básicas do blog +Comment=Comentário +Posts=Postagens +Domain=Domínio +Paging=Paginação +Category=Categoria +Add Single=Incluir página simples +Update Single=Atualizar página simples +Single=Página simples +Theme=Tema +Upate Theme=Atualizar tema + +group=Grupo +newGroup=Novo grupo +deleteGroup=Excluir grupo +addMemberTips=Informar nome de usuário ou e-mail para incluir o membro +deleteMember=Excluir membro +forbiddenNotMyGroup=Você não possui autorização de acesso porque você não é o dono do grupo +userExistsInGroup=O membro já está neste grupo +notMyGroup=Você não é o dono do grupo + + +# view js +Are you sure ?=Você tem certeza ? +Are you sure to install it ?=Você tem certeza que deseja instalar ? +Are you sure to delete=Você tem certeza que deseja excluir +Success=Sucesso +Error=Erro +File exists=Arquivo existente +Delete file=Excluir arquivo +No images=Sem imagens +Filename=Arquivo +Group Title=Título do grupo + diff --git a/messages/msg.pt b/messages/msg.pt new file mode 100644 index 0000000..5a650ac --- /dev/null +++ b/messages/msg.pt @@ -0,0 +1,281 @@ +# leanote +app=Leanote +moto=Mais que um bloco de notas! +moto2=Conhecimento, Blog, Compartilhamento, Cooperação... tudo em Leanote +moto3=Breve mas não simples +fork github=Fork Leanote no Github + +# Home +openSource=leanote.org +forgetPassword = Esqueceu sua senha? +or=ou +try=Tente isso +3th=Contas de terceiros +usernameOrEmail=Nome de usuário ou e-mail +password=Senha +home=Página inicial +desktopApp=Aplicativo +aboutLeanote=Sobre Leanote +suggestions=Sugestões +yourSuggestions=Sugestões +leanoteBlog=Blog +knowledge=Conhecimento +knowledgeInfo=Use Leanote como uma nota, gerencie seu conhecimento no Leanote. +share=Compartilhamento +shareInfo=Compartilhe seu conhecimento com amigos no Leanote. +cooperation=Cooperação +cooperationInfo=Coopere com amigos para aprimorar o conhecimento deles. +blog=Blog +blogInfo=Você pode publicar seu conhecimento e leanote no seu blog! +suggestionsInfo=Ajude-nos a melhorar nosso serviço +yourContact=Seu contato +emailOrOthers=E-mail ou outra forma de contato +captcha=Captcha +reloadCaptcha=Recarregar Captcha +captchaError=Captcha inválido +inputCaptcha=Captcha é obrigatório +noTag=Sem Tags + +hi=Hi +welcomeUseLeanote=Bem-vindo! +myNote=Minha nota +curUser=E-mail + +# form +submit=submeter +Submit=Submeter +register=Sign up +login=Sign in +Password=Senha +password2=Confirmação de senha +email=E-mail +inputUsername=Nome de usuário (e-mail) é obrigatório +inputEmail=E-mail é obrigatório +wrongEmail=E-mail inválido +wrongUsernameOrPassword=Nome de usuário ou senha inválida +inputPassword=Senha é obrigatória +inputLoginPasswordTips=Favor informar a senha +wrongPassword=Senha inválida +logining=Sign in +loginSuccess=Login com sucesso +ing=Processando +use = Use +hadAcount = Já possui uma conta? +hasAcount = Não possui uma conta? +signInWithThird=Entrar com outra conta + +# sign in +registerSuccessAndRdirectToNote=Registro com sucesso, redirecionando... +userHasBeenRegistered=%s já está registrado + +# find password +passwordTips=O tamanho deve ser de pelo menos 6 caracteres +findPassword=Recuperar senha +findPasswordSendEmailOver=Nós já enviamos o link de recuperação de senha para o seu e-mail, por favor verifique o seu e-mail +checkEmai=Verificar e-mail +findPasswordTimeout=prazo +reFindPassword=Recuperar senha novamente +updatePassword=Alterar a senha +updatePasswordSuccessRedirectToLogin=Senha alterada com sucesso e redirecionado para a página de login... +inputPassword2=Favor informar sua senha novamente +confirmPassword=Favor confirmar a seua senha +notGoodPassword=Esta não é uma boa senha, o tamanho deve ser de pelo menos 6 caracteres + +# note +myBlog=Blog +history=Histórico +save=Salvar +editorTips=Dicas +editorTipsInfo=<h4>1. Atalhos</h4>ctrl+shift+c Alternar código<h4>2. shift+enter Sair do bloco atual</h4> ex.: <img src="/images/outofcode.png" style="width: 90px"/> neste caso você pode usar shift+enter para sair do bloco atual. +newNote=Nova nota +newMarkdownNote=Nova nota em Markdown +noNoteNewNoteTips=O bloco de notas está vazio porque não... +canntNewNoteTips=Desculpe, não é possível uma nova nota aqui, favor escolher um caderno primeiro. +new=Novo +newMarkdown=Nova nota em markdown +clickAddTag=Clique para incluir uma tag +notebook=Bloco de notas +note=Nota +myNotebook=Meu bloco de notas +addNotebook=Incluir bloco de notas +search=Pesquisar +clearSearch=Limpar pesquisa +all=Recentes +trash=Lixo +delete=Excluir +unTitled=Sem título +defaultShare=Compartilhamento padrão +leftHidden=Ocultar barra deslizante +leftShow=Mostrar barra deslizante +nav=Navegação da nota +writingMode=Modo de escrita +normalMode=Modo normal +saving=Salvando +saveSuccess=Salvo com sucesso +SearchNote=Pequisar nota +SearchNotebook=Pesquisar bloco de notas +Choose File=Escolher arquivo +Download All=Download de tudo +Information=Informação + +Toggle Modify with Readonly=Alternar modificação somente leitura + +update=Alterar +create=Criar + +demoRegister=<a href="/register">Registrar</a> + +close=Fechar +cancel=Cancelar +send=Enviar + +# tag +tag=Tag +myTag=Minha tag +red=vermelho +yellow=amarelo +blue=azul +green=verde + +# setting +accountSetting=Conta +logout=Logout +basicInfo=Básico +basicInfoSet=Configurações básicad do blog +updateEmail=Alterar e-mail +usernameSetting=Alterar nome de usuário +chooseImage=Escolher imagem +oldPassword=Senha anterior +newPassword=Nova senha +admin=Administrador + +# theme +default=Padrõa +simple=Simples + +# tinymce +uploadImage=Enviar imagem + +# blog +aboutMe=Sobre mim +blogSet=Configurações do Blog + +# index +discussion=Discussão +download=Download +howToInstallLeanote=Como instalar o leanote + +# +attachments = Anexos +donate = Doação + +# contextmenu +shareToFriends=Compartilhar com amigos +publicAsBlog=Publicar como blog +cancelPublic=Cancelar publicação +move=Mover +copy=Copiar +rename=Renomear +exportPdf=Exportar PDF +addChildNotebook=Incluir bloco de notas filho +deleteAllShared=Excluir usuário compartilhad +deleteSharedNotebook=Excluir bloco de notas compartilhado +copyToMyNotebook=Copiar para meu bloco de notas + +# note-dev +emailInSending=Enviando para +checkEmail=Verificar e-mail +setUsername=Configurar nome de usuário +setUsernameTips=Seu e-mail atual é: <code>%s</code>. Você pode configurar um nome de usuário único. <br />O tamanho do nome de usuário deve ser de pelo menos 4 caracteres e não pode conter caracteres especiais. +currentEmail=Seu e-mail atual é: <code>%s</code> +updateEmail=Alterar e-mail +updateEmailTips=Você deve verificar o e-mail antes de alterar o e-mail. O e-mail verificado será sua nova conta. +sendVerifiedEmail=Enviar e-mail de verificação +verified=Verificado +unVerified=Não verificado +verifiedNow=Verificar agora +resendVerifiedEmail=Reenviar e-mail de verificação + +# share +defaulthhare=Padrão +addShare=Adicionar amigo +friendEmail=E-mail do amigo +permission=Permissão +readOnly=Somente leitura +writable=Escrita +inputFriendEmail=O e-mail do amigo é obrigatório +clickToChangePermission=Clique para alterar a permissão +sendInviteEmailToYourFriend=Enviar convite por e-mail para seu amigo +copySuccess=Copiado com sucesso +copyFailed=Falha ao copiar +friendNotExits=Seu amigo não possui uma conta, link para o registro: %s +emailBodyRequired=Corpo do e-mail body é obrigatório +clickToCopy=Clique para copiar +sendSuccess=sucesso +inviteEmailBody=Olá, eu sou %s, %s é incrível, vamos lá! + +# history +historiesNum=Nós gravamos pelo menos os <b>10</b> últimas históricos de cada nota +noHistories=Sem histórico +datetime=Data/hora +restoreFromThisVersion=Restaurar a partir desta versão +confirmBackup=Você tem certeza que deseja restaurar a partir desta versão? Nós faremos backup da nota atual. +createAccount=Criar conta +createAccountSuccess=Conta criada com sucesso +createAccountFailed=Falha na criação da conta +thirdCreateAcountTips=Você está usando conta de terceiros para login %(app)s, você pode criar uma %(app)s conta também. <br />Depois de criar %(app)s conta, você pode usar a conta e a conta de terceiros para fazer login %(app)s. + +# valid msg +inputUsername=Informe o nome de usuário +updateUsernameSuccess=Alteração do nome de usuário com sucesso +usernameIsExisted=Nome de usuário existente +noSpecialChars=Nome de usuário não pode conter caracteres especiais +minLength=O tamanho mínimo é %s +errorEmail=Favor informar o e-mail corretamente +verifiedEmaiHasSent=O e-mail de verificação foi enviado, favor verificar o seu e-mail. +emailSendFailed=Falha ao enviar o e-mail +inputPassword=A senha é obrigatória +inputNewPassword=A nova senha é obrigatória +inputPassword2=Favor informar a nova senha novamene +errorPassword=O tamanho da senha deve ser de pelo menos 6 caracteres e uma senha segura +oldPasswordError=A senha antiga não confere +confirmPassword=Senha não confere +updatePasswordSuccess=Alteração de senha com sucesso +errorDomain=O domínio personalizado é inválido, ex.: www.myblog.com +domainExisted=O domínio personalizado já existe +errorSubDomain=Favor informar um subdomínio válido, o tamanho deve ser de pelo menos 4 caracteres e não deve conter caracteres especiais +subDomainExisted=O subdomínio já existe +domainNotPointToLeanote=O domínio personalizado não pode ser d.leanote.com +errorPerPageSize=Tamanho de página está errado +errorSortField=Campo de ordenação está errado +themeValidHasRoundInclude=ALERTA: Templates tem referência circular! + +# share +tokenExpired=Token Expirado +Share=Compartilhar +hasSharedThisNote=compartilhou esta nota +inputSharePwd=Favor informar a senha +shareToGroup=Compartilhar para o grupo +shareByPwd=Compartilhar pela senha +groupName=Nome do grupo +operation=Operação +groupAndMemberManage=Gereciar grupos/membros +shareToGroupTips=Se você compartilhar esta nota com o grupo, o membro pertencente ao grupo irá ter direito de acesso a esta nota +shared=Compartilhado +notShared=Não compartilhado +shareLink=Link compartilhado +sharePwd=Senha de acesso +cancelShare=Cancelar +getShareLinkAndPwd=Pegar link e senha + +# Common +created=Criado +updated=Alterado +modify=Modificar +Search=Pesquisar +Save Success=Salvo com sucesso +Please save note firstly!=Favor salvar a nota primeiro! +Please sign in firstly!=Favor entrar primento! + +# error +notFound=Esta página não pode ser encontrada.