From ab97b9e6bcbd548819a5a97ae3e03e5c9543e45a Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Wed, 9 Feb 2011 18:56:31 -0200 Subject: [PATCH] Brazillian Portuguese Translation --- config/initializers/locomotive.rb | 2 +- config/locales/admin_ui.en.yml | 1 + config/locales/admin_ui.fr.yml | 1 + config/locales/admin_ui.pt-BR.yml | 301 ++++++++++++++++++ config/locales/carrierwave.pt-BR.yml | 4 + config/locales/default.pt-BR.yml | 32 ++ config/locales/devise.pt-BR.yml | 62 ++++ config/locales/flash.pt-BR.yml | 116 +++++++ config/locales/formtastic.pt-BR.yml | 67 ++++ lib/locomotive/configuration.rb | 2 +- .../admin/locales/datepicker_pt-BR.js | 18 ++ spec/factories.rb | 6 + 12 files changed, 610 insertions(+), 2 deletions(-) create mode 100644 config/locales/admin_ui.pt-BR.yml create mode 100644 config/locales/carrierwave.pt-BR.yml create mode 100644 config/locales/default.pt-BR.yml create mode 100644 config/locales/devise.pt-BR.yml create mode 100644 config/locales/flash.pt-BR.yml create mode 100644 config/locales/formtastic.pt-BR.yml create mode 100644 public/javascripts/admin/locales/datepicker_pt-BR.js diff --git a/config/initializers/locomotive.rb b/config/initializers/locomotive.rb index 280d3898..a76f403e 100644 --- a/config/initializers/locomotive.rb +++ b/config/initializers/locomotive.rb @@ -37,7 +37,7 @@ Locomotive.configure do |config| # If you do not mind about importing theme without DelayedJob, disable it. config.delayed_job = false - # default locale (for now, only en and fr are supported) + # default locale (for now, only en, fr and pt-BR are supported) config.default_locale = :en # Configure the e-mail address which will be shown in the DeviseMailer, NotificationMailer, ...etc diff --git a/config/locales/admin_ui.en.yml b/config/locales/admin_ui.en.yml index 1a4062e4..bc9989cc 100644 --- a/config/locales/admin_ui.en.yml +++ b/config/locales/admin_ui.en.yml @@ -159,6 +159,7 @@ en: new_site: new site en: English fr: French + pt-BR: "Brazilian Portuguese" ask_for_name: "Please type your new name" theme_assets: diff --git a/config/locales/admin_ui.fr.yml b/config/locales/admin_ui.fr.yml index 37780fe9..11fa67eb 100644 --- a/config/locales/admin_ui.fr.yml +++ b/config/locales/admin_ui.fr.yml @@ -159,6 +159,7 @@ fr: new_site: nouveau site en: en Anglais fr: en Français + pt-BR: "en Portugaise" ask_for_name: "Veuillez entrer le nouveau nom" theme_assets: diff --git a/config/locales/admin_ui.pt-BR.yml b/config/locales/admin_ui.pt-BR.yml new file mode 100644 index 00000000..f19de87d --- /dev/null +++ b/config/locales/admin_ui.pt-BR.yml @@ -0,0 +1,301 @@ +pt-BR: + admin: + buttons: + login: Entrar + send_password: Enviar + change_password: Mudar + new_item: "+ adicionar" + switch_to_site: Ir + + messages: + confirm: Você tem certeza ? + + shared: + header: + welcome: Bem-Vindo, %{name} + see: Ver websiste + logout: Sair + menu: + contents: Conteúdos + assets: Arquivos + settings: Configurações + pages: Páginas + snippets: Blocos de código + account: Minha Conta + site: Site + theme_assets: Arquivos do Tema + footer: + who_is_behind: "Desenvovido por %{development} e desenhado por Sacha Greif" + form_actions: + back: Voltar sem salvar + create: Criar + update: Atualizar + send: Enviar + + errors: + "500": + title: Erro de aplicação + notice: "Desculpe-nos, algo não está funcionando como deveria" + link: "→ Voltar a aplicação" + "404": + title: Página não encontrada + notice: "A página requisitada não existe." + link: "→ Voltar a aplicação" + + notifications: + new_content_instance: + subject: " Novo [%{type}] " + title: "Olá %{name}, apenas informando que uma nova instância foi criada em %{date}" + type: "Modelo: %{type}" + + custom_fields: + edit: + title: Editando campo customizado + kind: + string: Texto Simples + text: Texto + category: Caixa de Seleção + boolean: Checkbox + date: Data + file: Arquivo + text_formatting: + none: Nenhum + html: HTML + edit_field: + title: Edita campo + edit_category: + title: Editar opções + help: Gerenciar a lista de opções da sua caixa de seleçõa. + collection_label: Lista de opções + custom_form: + edit_categories: Editar opções + delete_file: Excluir arquivo + + sessions: + new: + title: Login + link: "Esqueci minha senha" + email: "Email" + password: "Senha" + + passwords: + new: + title: Esqueci minha senha + link: "→ Voltar a página de login" + email: "Seu email" + edit: + title: Atualizar minha senha + link: "→ Voltar a página de login" + password: "Sua nova senha" + password_confirmation: "Confirmação da sua nova senha" + + pages: + index: + title: Listando páginas + help: "As páginas são organizadas como uma árvore. Você pode reordenar as páginas como se fossem pastas" + no_items: "Não existe nenhuma página ainda. Clique aqui para criar a primeira." + new: nova página + lastest_items: Últmas páginas + new: + title: Nova página + help: "Por favor, preencha o formulário a seguir para criar sua página. Atenção: Por padrão a página não é publicada." + page: + updated_at: atualizada em + edit: + show: mostrar + help: "O título da página pode ser alterado clicando nele." + ask_for_title: "Por favor preencha o novo título" + form: + delete_file: Excluir arquivo + default_block: Padrão + cache_strategy: + none: Nenhum + simple: Simples + hour: 1 hora + day: 1 dia + week: 1 semana + month: 1 mês + + snippets: + index: + title: Listando Blocos de Código + help: "Blocos de código são alguns códigos HTML que pode sem encontrados em diferentes lugares do site e podem ser reutilizados ( como o rodapé )." + no_items: "Você ainda não tem blocos de código. Clique aqui para criar o primeiro." + new: novo bloco + new: + title: Novo bloco + help: "Preecha o formulário a seguirar para atulizar o seu bloco de código." + edit: + title: Editing snippet + help: "Preecha o formulário a seguirar para atulizar o seu bloco de código." + snippet: + updated_at: Atualizado em + + sites: + new: + title: Novo site + help: "Preencha o formulário a seguir para criar um novo site." + + current_sites: + edit: + import: importar + new_membership: adicionar conta + help: "O nome do site pode ser alterado clicando nele." + ask_for_name: "Por favor, digite o novo nome do site" + + memberships: + new: + title: Novo usuário + help: "Por favor, forneça o e-mail que deseja adicionar. Se ele não exister, você será redirecionado para o formulário de criação." + + accounts: + new: + title: Nova conta + help: "Preencha o formulário a seguir para criar uma nova conta." + + my_accounts: + edit: + help: "Seu nome pode ser atualizado clicando nele." + new_site: novo site + en: Inglês + fr: Francês + pt-BR: "Português do Brasil" + ask_for_name: "Por favor preencha o novo nome" + + theme_assets: + index: + title: Listando arquivos do tema + help: "Nesta seção todos os arquivos relacionados a layout são armazenados e gerenciados. Se você precisa de uma galeria de imagens, vá a seção de Arquivos." + all: todos arquivos + new: novo arquivo + snippets: Blocos + css_and_js: CSS e Javascript + fonts: Fontes + images: Imagens + media: Mídia + no_items: "Ainda não existem arquivos. Clique aqui para criar o primeiro." + asset: + updated_at: Atualizado em + new: + title: Novo arquivo + help: "Você pode escolher em enviar qualquer arquivo ou copiar/colar um arquivo de css/javascript em texto." + edit: + title: "Editando %{file}" + help: "Esse arquivo pode ser acessado pela seguinte URL: %{url}" + form: + picker_link: Insira um arquivo no código + choose_file: Escolha um arquivo + choose_plain_text: Escolher texto plano + images: + title: Listando imagens + no_items: "Não existem imagens ainda." + + asset_collections: + index: + title: Coleções de arquivos + help: "O nome da coleção pode ser alterado clicando nele. Você pode customizar os arquivos nas coleções adicionando campos." + new: nova coleção + no_items: "Não existem coleções ainda. Clique aqui para criar a primeira." + new: + title: Nova Coleção + help: "Por enquanto, apenas insira o nome. Outras opções irão aparecer após o formulário ser enviado." + edit: + help: "O nome da coleção pode ser alterado clicando nele. Você pode customizar os arquivos nas coleções adicionando campos." + add_asset: adicionar arquivo + destroy: excluir coleção + no_items: "Não existem coleções ainda. Clique aqui para criar a primeira." + ask_for_name: Por favor preencha o novo nome" + + assets: + new: + title: Novo arquivo + help: "Preencha o formulário a seguir para criar o seu arquivo." + edit: + title: Editar arquivo + help: "Preencha o formulário a seguir para atualizar o seu arquivo." + + content_types: + index: + new: novo modelo + new: + title: Novo modelo + help: "Crie o seu próprio modelo de dados (Projetos, Pessoas, ...etc). Seu modelo deve conter um campo pelo menos. Os itens criados a partir desse tipo de conteúdo terão seu primeiro campo como obrigatório." + edit: + title: Editar modelo + help: "Seu modelo deve conter um campo pelo menos. Os itens criados a partir desse tipo de conteúdo terão seu primeiro campo como obrigatório." + show_items: mostrar itens + new_item: novo item + form: + order_by: + created_at: 'Por "criado em" data' + updated_at: 'Por "atualizado em" data' + position_in_list: Manual + + contents: + index: + title: 'Listando "%{type}"' + edit: editar modelo + destroy: excluir modelo + download: download dos itens + new: novo item + category_noname: "Sem nome" + lastest_items: "Últimos itens" + updated_at: "Atualizado em" + list: + no_items: "Não existem itens ainda. Clique aqui para criar o primeiro." + new: + title: '%{type} — novo item' + edit: + title: '%{type} — editando item' + + image_picker: + link: Insira uma imagem no código + + cross_domain_sessions: + new: + title: Autenticação por mútiplos domínios. + notice: Você será redirecionado para o site em alguns segundos. + + imports: + new: + title: Importar + help: "Tenha cuidado ao enviar um novo tema ao seu site que já existe, seus dados atuais podem ser atualizados ou até removidos." + show: + title: Importação em progresso + help: "Seu site está sendo atualizado pelo arquivo zip enviado. Irá demorar alguns segundos." + steps: + site: Informações do site + content_types: Tipos de Conteúdo customizados + assets: Arquivos do Tema + asset_collections: Coleções de Arquivos + snippets: Blocos + pages: Páginas + messages: + success: "Seu site foi atualizado com sucesso" + failure: "A importação não funcionou." + + installation: + common: + title: Primeira instalação do Locomotive + next: Próximo + step_1: + title: Passo 1/3 + explanations: "Este é o primeiro passo da instalação do Locomotive. Por favor , leia com atenção o que está escrito" + database: + label: "Nome da Base de Dados: %{name}" + notes: "Todas as configurações de conexão do mongodb podem ser encontradas no arquivo config/mongoid.yml da sua aplicação." + default_domain: + label: "Domínio padrão: %{name}" + notes: "Basicamente, Locomotive é uma plataforma multi-site. Cada instância de site tem uma entrada padrão, , também chamada de sub-domínio e baseada no dominio principal. Obviamente, você pode mapear outros domínios para a instância do seu site , como uma referência.
O nome do domínio principal pode ser encontrado no arquivo config/initializers/locomotive.rb." + step_2: + title: "Passo 2/3 — Criar conta" + name: Nome da Conta + email: Email + password: Senha + password_confirmation: Confirmação da Senha + done: "Você ja adicionou uma conta com:
%{name}, %{email}" + next: Criar Conta + step_3: + title: "Passo 3/3 — Criar primeiro site" + explanations: "Este é o último passo da instalação. Você pode enviar um tema como um arquivo zip. Nós temos alguns temas de graça para download aqui." + next: Criar Site diff --git a/config/locales/carrierwave.pt-BR.yml b/config/locales/carrierwave.pt-BR.yml new file mode 100644 index 00000000..61f9c3e9 --- /dev/null +++ b/config/locales/carrierwave.pt-BR.yml @@ -0,0 +1,4 @@ +pt-BR: + carrierwave: + errors: + integrity: 'não é um tipo de arquivo compatível.' \ No newline at end of file diff --git a/config/locales/default.pt-BR.yml b/config/locales/default.pt-BR.yml new file mode 100644 index 00000000..0bc166aa --- /dev/null +++ b/config/locales/default.pt-BR.yml @@ -0,0 +1,32 @@ +pt-BR: + date: + formats: + default: "%d/%m/%Y" + + errors: + messages: + domain_taken: "%{value} já está em uso." + invalid_domain: "%{value} é inválido." + needs_admin_account: "Uma conta de administrador é necessário pelo menos." + protected_page: "Você não pode remover a página inicial e a do erro 404" + extname_changed: "Novo arquivos não tem a mesma extensão que o original" + array_too_short: "é muito pequeno (mínimo de elementos é %{count})" + liquid_syntax: "Erro de sintaxe do Liquid, por favor verifique a sintaxe" + liquid_extend: "A página extende um template que não existe." + invalid_theme_file: "não pode ser vazio ou não é um arquivo zip" + + attributes: + defaults: + pages: + index: + title: "'Página Inicial" + body: "Conteúdo da página inicial" + "404": + title: "Página não encontrada" + body: "Conteúdo da página de erro 404" + other: + body: "Conteúdo vai aqui" + + pagination: + previous: "« Anterior" + next: "Próximo »" diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml new file mode 100644 index 00000000..44ed87be --- /dev/null +++ b/config/locales/devise.pt-BR.yml @@ -0,0 +1,62 @@ +pt-BR: + errors: + messages: + not_found: "not found" + already_confirmed: "was already confirmed" + not_locked: "was not locked" + + devise: + failure: + admin: + unauthenticated: 'You need to sign in or sign up before continuing.' + unconfirmed: 'You have to confirm your account before continuing.' + locked: 'Your account is locked.' + invalid: 'Invalid email or password.' + invalid_token: 'Invalid authentication token.' + timeout: 'Your session expired, please sign in again to continue.' + inactive: 'Your account was not activated yet.' + sessions: + admin: + signed_in: 'Signed in successfully.' + signed_out: 'Signed out successfully.' + passwords: + admin: + send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.' + updated: 'Your password was changed successfully. You are now signed in.' + confirmations: + admin: + send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.' + confirmed: 'Your account was successfully confirmed. You are now signed in.' + registrations: + admin: + signed_up: 'You have signed up successfully.' + updated: 'You updated your account successfully.' + destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.' + unlocks: + admin: + send_instructions: 'You will receive an email with instructions about how to unlock your account in a few minutes.' + unlocked: 'Your account was successfully unlocked. You are now signed in.' + mailer: + admin: + confirmation_instructions: 'Confirmation instructions' + reset_password_instructions: 'Reset password instructions' + unlock_instructions: 'Unlock Instructions' + + + admin: + mailer: + common: + hello: Hello + + confirmation_instructions: + you_can_confirm_your_account_through_the_link_below: "You can confirm your account through the link below:" + confirm_my_account: "Confirm my account" + reset_password_instructions: + reset_password_instruction: "Someone has requested a link to change your password, and you can do this through the link below:" + change_my_password: "Change my password" + wrong_request_instruction: "If you didn't request this, please ignore this email." + unchange_password_message: "Your password won't change until you access the link above and create a new one." + unlock_instructions: + locked_account_message: "Your account has been locked due to an excessive amount of unsuccessful sign in attempts." + unlock_account_instruction: "Click the link below to unlock your account:" + unlock_my_account: "Unlock my account" diff --git a/config/locales/flash.pt-BR.yml b/config/locales/flash.pt-BR.yml new file mode 100644 index 00000000..57bb27a6 --- /dev/null +++ b/config/locales/flash.pt-BR.yml @@ -0,0 +1,116 @@ +pt-BR: + flash: + admin: + pages: + create: + notice: "Page was successfully created." + alert: "Page was not created." + update: + notice: "Page was successfully updated." + alert: "Page was not updated." + sort: + notice: "Pages were successfully sorted." + destroy: + notice: "Page was successfully deleted." + + contents: + create: + notice: "Content was successfully created." + alert: "Content was not created." + update: + notice: "Content was successfully updated." + alert: "Content was not updated." + sort: + notice: "Contents were successfully sorted." + destroy: + notice: "Content was successfully deleted." + + content_types: + create: + notice: "Model was successfully created." + alert: "Model was not created." + update: + notice: "Model was successfully updated." + alert: "Model was not updated." + destroy: + notice: "Model was successfully deleted." + + current_sites: + update: + notice: "My site was successfully updated." + alert: "My site was not updated." + + snippets: + create: + notice: "Snippet was successfully created." + alert: "Snippet was not created." + update: + notice: "Snippet was successfully updated." + alert: "Snippet was not updated." + destroy: + notice: "Snippet was successfully deleted." + + accounts: + create: + notice: "Account was successfully created." + alert: "Account was not created." + + my_accounts: + update: + notice: "My account was successfully updated." + alert: "My account was not updated." + + sites: + create: + notice: "Site was successfully created." + alert: "Site was not created." + destroy: + notice: "Site was successfully deleted." + + memberships: + create: + notice: "Membership was successfully created." + alert: "Membership was not created." + already_created: "Account was already added the current site." + + asset_collections: + create: + notice: "Collection was successfully created." + alert: "Collection was not created." + update: + notice: "Collection was successfully updated." + alert: "Collection was not updated." + destroy: + notice: "Collection was successfully deleted." + + assets: + create: + notice: "Asset was successfully created." + alert: "Asset was not created." + update: + notice: "Asset was successfully updated." + alert: "Asset was not updated." + + theme_assets: + create: + notice: "File was successfully created." + alert: "File was not created." + update: + notice: "File was successfully updated." + alert: "File was not updated." + destroy: + notice: "File was successfully deleted." + + custom_fields: + update: + alert: "Field not updated" + + cross_domain_sessions: + create: + alert: "You need to sign in" + + imports: + create: + done: "Your site was successfully updated." + notice: "Your site is being updated." + alert: "The import was not done." \ No newline at end of file diff --git a/config/locales/formtastic.pt-BR.yml b/config/locales/formtastic.pt-BR.yml new file mode 100644 index 00000000..ba3ed9fd --- /dev/null +++ b/config/locales/formtastic.pt-BR.yml @@ -0,0 +1,67 @@ +pt-BR: + formtastic: + titles: + information: General information + meta: SEO Metadata + code: Code + raw_template: Template + credentials: Credentials + language: Language + sites: Sites + access_points: Access points + memberships: Accounts + membership_email: Account email + file: File + preview: Preview + options: Advanced options + custom_fields: Custom fields + other_fields: Other information + presentation: Presentation + attributes: Attributes + upload: Upload + labels: + theme_asset: + plain_text_name: File name + content_type: File type + new: + source: File + edit: + source: Replace file + custom_fields: + field: + _alias: Alias + import: + new: + source: File + samples: Copy samples + reset: Reset site + content_type: + api_accounts: Notified Accounts + + hints: + page: + published: "Only authenticated accounts can view unpublished pages." + cache_strategy: "Cache the page for better performance. The 'Simple' choice is a good compromise." + templatized: "Use the page as a template for a model you defined." + snippet: + slug: "You need to know it in order to insert the snippet inside a page" + site: + meta_keywords: "Meta keywords used within the head tag of the page. They are separeted by an empty space. Required for SEO." + meta_description: "Meta description used within the head tag of the page. Required for SEO." + domain_name: "ex: locomotiveapp.org" + theme_asset: + slug: "You do not need to add the extension file (.css or .js)" + edit: + source: "You can replace it by a file of the same extension" + custom_fields: + field: + _alias: "Property available in liquid templates" + hint: "Text displayed in the model form just below the field" + import: + source: "A zipfile containing a database.yml along with assets and templates" + samples: "If enabled, the import process will also copy contents and assets" + reset: "If enabled, all the data of your site will be destroyed before importing the new site" + content_type: + api_enabled: "It is used to let people from outside to create new instances (example: messages in a contact form)" + api_accounts: "A notification email will be sent to each of the accounts listed above when a new instance is created" + diff --git a/lib/locomotive/configuration.rb b/lib/locomotive/configuration.rb index db5cb1cf..32f6d850 100644 --- a/lib/locomotive/configuration.rb +++ b/lib/locomotive/configuration.rb @@ -7,7 +7,7 @@ module Locomotive :reserved_subdomains => %w{www admin email blog webmail mail support help site sites}, # :forbidden_paths => %w{layouts snippets stylesheets javascripts assets admin system api}, :reserved_slugs => %w{stylesheets javascripts assets admin images api pages edit}, - :locales => %w{en fr}, + :locales => %w{en fr pt-BR}, :cookie_key => '_locomotive_session', :enable_logs => false, :heroku => false, diff --git a/public/javascripts/admin/locales/datepicker_pt-BR.js b/public/javascripts/admin/locales/datepicker_pt-BR.js new file mode 100644 index 00000000..bd9efe88 --- /dev/null +++ b/public/javascripts/admin/locales/datepicker_pt-BR.js @@ -0,0 +1,18 @@ +/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood@virginbroadband.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +jQuery(function($){ + $.datepicker.regional['pt-BR'] = { + closeText: 'Fechar', + prevText: '<Ant', + nextText: 'Prox>', + currentText: 'Atual', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], + dayNamesMin: ['Do','Se','Te','Qua','Qu','Se','Sa'], + dateFormat: 'dd/mm/yy', firstDay: 1, + isRTL: false}; +}); \ No newline at end of file diff --git a/spec/factories.rb b/spec/factories.rb index 17ce2dfc..9f9f253a 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -39,6 +39,12 @@ Factory.define "frenchy user", :parent => :account do |a| a.locale 'fr' end +Factory.define "brazillian user", :parent => :account do |a| + a.name "José Carlos" + a.email "jose@carlos.com.br" + a.locale 'pt-BR' +end + ## Memberships ## Factory.define :membership do |m|