From ab97b9e6bcbd548819a5a97ae3e03e5c9543e45a Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Wed, 9 Feb 2011 18:56:31 -0200 Subject: [PATCH 01/10] 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| From 7998e3a8419355dfc69d506112e656003bbd8bac Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Wed, 9 Feb 2011 18:56:31 -0200 Subject: [PATCH 02/10] 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 | 66 ++++ lib/locomotive/configuration.rb | 2 +- .../admin/locales/datepicker_pt-BR.js | 18 ++ spec/factories.rb | 6 + 12 files changed, 609 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..6779953a --- /dev/null +++ b/config/locales/devise.pt-BR.yml @@ -0,0 +1,62 @@ +pt-BR: + errors: + messages: + not_found: "não encontrado" + already_confirmed: "já foi confirmado" + not_locked: "não está bloqueado" + + devise: + failure: + admin: + unauthenticated: 'Você precisa se cadasstrar ou fazer o login antes de continuar.' + unconfirmed: 'Você deve confirmar sua conta antes de continuar.' + locked: 'Sua conta está bloquada.' + invalid: 'Email ou senha inválidos.' + invalid_token: 'Autenticação inválida.' + timeout: 'Sua sessão expirou. Por favor, faça o login novamente para continuar.' + inactive: 'Sua conta não foi ativada ainda.' + sessions: + admin: + signed_in: 'Login feito com sucesso.' + signed_out: 'Logout feito com sucesso.' + passwords: + admin: + send_instructions: 'Você receberá um email com as instruções sobre como alterar sua senha em poucos minutos.' + updated: 'Sua senha foi alterada com sucesso. Você está logado.' + confirmations: + admin: + send_instructions: 'Você receberá um email com as instruções sobre como confirmar sua conta em poucos minutos.' + confirmed: 'Sua conta foi confirmada com sucesso. Você está logado.' + registrations: + admin: + signed_up: 'Você logou com sucesso.' + updated: 'Atualização da conta feita com sucesso.' + destroyed: 'Sua conta foi cancelada com sucesso. Logo logo esperamos te ver por aqui. Tchau! + unlocks: + admin: + send_instructions: 'Você receberá um email com as intruções de como desbloquear sua conta em poucos minutos.' + unlocked: 'Sua conta foi desbloqueada com sucesso. Você está logado.' + mailer: + admin: + confirmation_instructions: 'Instruções de confirmação' + reset_password_instructions: 'Instruções para resetar a senha.' + unlock_instructions: 'Instruções de desbloqueio' + + + admin: + mailer: + common: + hello: Olá + + confirmation_instructions: + you_can_confirm_your_account_through_the_link_below: "Você pode confirmar sua conta através do link abaixo.' + confirm_my_account: "Confirmar minha conta" + reset_password_instructions: + reset_password_instruction: "Alguém solicitou um link para alterar sua senha e você poderá fazer isto através do link abaixo:" + change_my_password: "Alterar minha senha" + wrong_request_instruction: "Se você não solicitou isto, por favor ignore este email." + unchange_password_message: "Sua senha não irá ser alterada até que você acesse o link acima e crie uma nova senha." + unlock_instructions: + locked_account_message: "Sua conta foi bloqueada devido a excessiva tentativa de logins sem sucesso." + unlock_account_instruction: "Clique no link abaixo para desbloquear sua conta:" + unlock_my_account: "Desbloquear minha conta" \ No newline at end of file diff --git a/config/locales/flash.pt-BR.yml b/config/locales/flash.pt-BR.yml new file mode 100644 index 00000000..19971750 --- /dev/null +++ b/config/locales/flash.pt-BR.yml @@ -0,0 +1,116 @@ +pt-BR: + flash: + admin: + pages: + create: + notice: "Página criada com sucesso." + alert: "Página não foi criada." + update: + notice: "Página atualizada com sucesso." + alert: "Página não foi atualizada." + sort: + notice: "Páginas foram ordenadas com sucesso." + destroy: + notice: "Páginas foram apagadas com sucesso." + + contents: + create: + notice: "Conteúdo criado com sucesso." + alert: "Conteúdo não foi criado." + update: + notice: "Conteúdo foi atualizado com sucesso." + alert: "Conteúdo não foi atualizado." + sort: + notice: "Conteúdos foram ordenados com sucesso." + destroy: + notice: "Conteúdos foram apagados com sucesso." + + content_types: + create: + notice: "Modelo foi criado com sucesso." + alert: "Modelo não foi criado." + update: + notice: "Modelo foi atualizado com sucesso." + alert: "Modelo não foi atualizado." + destroy: + notice: "Modelo foi apagado com sucesso." + + current_sites: + update: + notice: "Meu site foi atualizado com sucesso." + alert: "Meu site não foi atualizado." + + snippets: + create: + notice: "Fragmento foi criado com sucesso." + alert: "Fragmento não foi criado." + update: + notice: "Fragmento foi atualizado com sucesso." + alert: "Fragmento não foi atualizado." + destroy: + notice: "Fragmento foi apagado com sucesso." + + accounts: + create: + notice: "Conta foi criada com sucesso." + alert: "Conta não foi criada." + + my_accounts: + update: + notice: "Minha conta foi atualizada com sucesso." + alert: "Minha conta não foi atualizada." + + sites: + create: + notice: "Site foi criado com sucesso." + alert: "Site não foi criado com sucesso." + destroy: + notice: "Site foi apagado com sucesso." + + memberships: + create: + notice: "Adesão foi criada com sucesso." + alert: "Adesão não foi criada." + already_created: "Conta já foi adicionada ao site atual." + + asset_collections: + create: + notice: "Coleção criada com sucesso." + alert: "Coleção não foi criada." + update: + notice: "Coleção foi atualizada com sucesso." + alert: "Coleção não foi atualizada." + destroy: + notice: "Coleção foi apagada com sucesso." + + assets: + create: + notice: "Asset foi criada com sucesso." + alert: "Asset não foi criada." + update: + notice: "Asset foi atualizada com sucesso." + alert: "Asset não foi atualizada." + + theme_assets: + create: + notice: "Arquivo foi criado com sucesso." + alert: "Arquivo não foi criado." + update: + notice: "Arquivo foi atualizado com sucesso." + alert: "Arquivo não foi atualizado." + destroy: + notice: "Arquivo foi apagado com sucesso." + + custom_fields: + update: + alert: "Campo não foi atualizado." + + cross_domain_sessions: + create: + alert: "Você precisa fazer o login" + + imports: + create: + done: "Seu site foi atualizado com sucesso." + notice: "Seu site está sento atualizado." + alert: "A importação não foi feita." \ 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..3a7e28c8 --- /dev/null +++ b/config/locales/formtastic.pt-BR.yml @@ -0,0 +1,66 @@ +pt-BR: + formtastic: + titles: + information: Informação geral + meta: SEO Metadata + code: Código + raw_template: Template + credentials: Credenciais + language: Linguagem + sites: Sites + access_points: Pontos de acesso + memberships: Contas + membership_email: Conta de email + file: Arquivo + preview: Pré-visualizar + options: Opções avançadas + custom_fields: Compos customizados + other_fields: Outras informações + presentation: Apresentação + attributes: Atributos + upload: Upload + labels: + theme_asset: + plain_text_name: Nome do arquivo + content_type: Tipo do arquivo + new: + source: Arquivo + edit: + source: Substituir arquivo + custom_fields: + field: + _alias: Apelido + import: + new: + source: Fonte + samples: Amostra + reset: Reiniciar + content_type: + api_accounts: Contas notificadas + + hints: + page: + published: "Apenas contas autenticadas podem ver páginas não publicadas." + cache_strategy: "Faça o Cache da página para obter melhor desempenho. A escolha do "Simples" é um bom compromisso" + templatized: "Utilize a página como template para o modelo definido." + snippet: + slug: "Você precisa saber a ordem para inserir fragmentos dentro da página." + site: + meta_keywords: "Palavras chave usadas dentro da tag 'head' da página. Elas são separadas por um espaço em branco. Requerido para SEO." + meta_description: "Descrição chave usada dentro da tag 'head' da página. Requerido para SEO." + domain_name: "ex: locomotiveapp.org" + theme_asset: + slug: "Você não precisa adicionar as extensões do arquivo (.css or .js)" + edit: + source: "Você pode substituir por um arquivo com a mesma extensão." + custom_fields: + field: + _alias: "Propriedades disponíveis em templates líquidos." + hint: "Texto mostrado no formulário de modelo está abaixo do campo." + import: + source: "Um arquivo .zip contendo um database.yml com assets and templates" + samples: "Se habilitado, a importação também irá copiar conteúdos e assets." + reset: "Se habilitado, todos os dados do site serão apagados antes da importação do novo site." + content_type: + api_enabled: "Ele é utilizado para permitir que pessoas de fora criem novas instâncias (exemplo: mensagens no formulário de contato)" + api_accounts: "Um email de notificação será enviado para conta listada acima quando uma nova instância for criada." \ No newline at end of file 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| From 742305cdfb878fca748fa7d6ae40bf85a1154d4d Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Wed, 9 Feb 2011 23:36:55 -0200 Subject: [PATCH 03/10] Brazillian Portuguese Translation (2) --- config/locales/devise.pt-BR.yml | 68 +++++++++--------- config/locales/flash.pt-BR.yml | 106 ++++++++++++++-------------- config/locales/formtastic.pt-BR.yml | 77 ++++++++++---------- 3 files changed, 125 insertions(+), 126 deletions(-) diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml index 44ed87be..6779953a 100644 --- a/config/locales/devise.pt-BR.yml +++ b/config/locales/devise.pt-BR.yml @@ -1,62 +1,62 @@ pt-BR: errors: messages: - not_found: "not found" - already_confirmed: "was already confirmed" - not_locked: "was not locked" + not_found: "não encontrado" + already_confirmed: "já foi confirmado" + not_locked: "não está bloqueado" 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.' + unauthenticated: 'Você precisa se cadasstrar ou fazer o login antes de continuar.' + unconfirmed: 'Você deve confirmar sua conta antes de continuar.' + locked: 'Sua conta está bloquada.' + invalid: 'Email ou senha inválidos.' + invalid_token: 'Autenticação inválida.' + timeout: 'Sua sessão expirou. Por favor, faça o login novamente para continuar.' + inactive: 'Sua conta não foi ativada ainda.' sessions: admin: - signed_in: 'Signed in successfully.' - signed_out: 'Signed out successfully.' + signed_in: 'Login feito com sucesso.' + signed_out: 'Logout feito com sucesso.' 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.' + send_instructions: 'Você receberá um email com as instruções sobre como alterar sua senha em poucos minutos.' + updated: 'Sua senha foi alterada com sucesso. Você está logado.' 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.' + send_instructions: 'Você receberá um email com as instruções sobre como confirmar sua conta em poucos minutos.' + confirmed: 'Sua conta foi confirmada com sucesso. Você está logado.' 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.' + signed_up: 'Você logou com sucesso.' + updated: 'Atualização da conta feita com sucesso.' + destroyed: 'Sua conta foi cancelada com sucesso. Logo logo esperamos te ver por aqui. Tchau! 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.' + send_instructions: 'Você receberá um email com as intruções de como desbloquear sua conta em poucos minutos.' + unlocked: 'Sua conta foi desbloqueada com sucesso. Você está logado.' mailer: admin: - confirmation_instructions: 'Confirmation instructions' - reset_password_instructions: 'Reset password instructions' - unlock_instructions: 'Unlock Instructions' + confirmation_instructions: 'Instruções de confirmação' + reset_password_instructions: 'Instruções para resetar a senha.' + unlock_instructions: 'Instruções de desbloqueio' admin: mailer: common: - hello: Hello + hello: Olá 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" + you_can_confirm_your_account_through_the_link_below: "Você pode confirmar sua conta através do link abaixo.' + confirm_my_account: "Confirmar minha conta" 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." + reset_password_instruction: "Alguém solicitou um link para alterar sua senha e você poderá fazer isto através do link abaixo:" + change_my_password: "Alterar minha senha" + wrong_request_instruction: "Se você não solicitou isto, por favor ignore este email." + unchange_password_message: "Sua senha não irá ser alterada até que você acesse o link acima e crie uma nova senha." 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" + locked_account_message: "Sua conta foi bloqueada devido a excessiva tentativa de logins sem sucesso." + unlock_account_instruction: "Clique no link abaixo para desbloquear sua conta:" + unlock_my_account: "Desbloquear minha conta" \ No newline at end of file diff --git a/config/locales/flash.pt-BR.yml b/config/locales/flash.pt-BR.yml index 57bb27a6..19971750 100644 --- a/config/locales/flash.pt-BR.yml +++ b/config/locales/flash.pt-BR.yml @@ -3,114 +3,114 @@ pt-BR: admin: pages: create: - notice: "Page was successfully created." - alert: "Page was not created." + notice: "Página criada com sucesso." + alert: "Página não foi criada." update: - notice: "Page was successfully updated." - alert: "Page was not updated." + notice: "Página atualizada com sucesso." + alert: "Página não foi atualizada." sort: - notice: "Pages were successfully sorted." + notice: "Páginas foram ordenadas com sucesso." destroy: - notice: "Page was successfully deleted." + notice: "Páginas foram apagadas com sucesso." contents: create: - notice: "Content was successfully created." - alert: "Content was not created." + notice: "Conteúdo criado com sucesso." + alert: "Conteúdo não foi criado." update: - notice: "Content was successfully updated." - alert: "Content was not updated." + notice: "Conteúdo foi atualizado com sucesso." + alert: "Conteúdo não foi atualizado." sort: - notice: "Contents were successfully sorted." + notice: "Conteúdos foram ordenados com sucesso." destroy: - notice: "Content was successfully deleted." + notice: "Conteúdos foram apagados com sucesso." content_types: create: - notice: "Model was successfully created." - alert: "Model was not created." + notice: "Modelo foi criado com sucesso." + alert: "Modelo não foi criado." update: - notice: "Model was successfully updated." - alert: "Model was not updated." + notice: "Modelo foi atualizado com sucesso." + alert: "Modelo não foi atualizado." destroy: - notice: "Model was successfully deleted." + notice: "Modelo foi apagado com sucesso." current_sites: update: - notice: "My site was successfully updated." - alert: "My site was not updated." + notice: "Meu site foi atualizado com sucesso." + alert: "Meu site não foi atualizado." snippets: create: - notice: "Snippet was successfully created." - alert: "Snippet was not created." + notice: "Fragmento foi criado com sucesso." + alert: "Fragmento não foi criado." update: - notice: "Snippet was successfully updated." - alert: "Snippet was not updated." + notice: "Fragmento foi atualizado com sucesso." + alert: "Fragmento não foi atualizado." destroy: - notice: "Snippet was successfully deleted." + notice: "Fragmento foi apagado com sucesso." accounts: create: - notice: "Account was successfully created." - alert: "Account was not created." + notice: "Conta foi criada com sucesso." + alert: "Conta não foi criada." my_accounts: update: - notice: "My account was successfully updated." - alert: "My account was not updated." + notice: "Minha conta foi atualizada com sucesso." + alert: "Minha conta não foi atualizada." sites: create: - notice: "Site was successfully created." - alert: "Site was not created." + notice: "Site foi criado com sucesso." + alert: "Site não foi criado com sucesso." destroy: - notice: "Site was successfully deleted." + notice: "Site foi apagado com sucesso." memberships: create: - notice: "Membership was successfully created." - alert: "Membership was not created." - already_created: "Account was already added the current site." + notice: "Adesão foi criada com sucesso." + alert: "Adesão não foi criada." + already_created: "Conta já foi adicionada ao site atual." asset_collections: create: - notice: "Collection was successfully created." - alert: "Collection was not created." + notice: "Coleção criada com sucesso." + alert: "Coleção não foi criada." update: - notice: "Collection was successfully updated." - alert: "Collection was not updated." + notice: "Coleção foi atualizada com sucesso." + alert: "Coleção não foi atualizada." destroy: - notice: "Collection was successfully deleted." + notice: "Coleção foi apagada com sucesso." assets: create: - notice: "Asset was successfully created." - alert: "Asset was not created." + notice: "Asset foi criada com sucesso." + alert: "Asset não foi criada." update: - notice: "Asset was successfully updated." - alert: "Asset was not updated." + notice: "Asset foi atualizada com sucesso." + alert: "Asset não foi atualizada." theme_assets: create: - notice: "File was successfully created." - alert: "File was not created." + notice: "Arquivo foi criado com sucesso." + alert: "Arquivo não foi criado." update: - notice: "File was successfully updated." - alert: "File was not updated." + notice: "Arquivo foi atualizado com sucesso." + alert: "Arquivo não foi atualizado." destroy: - notice: "File was successfully deleted." + notice: "Arquivo foi apagado com sucesso." custom_fields: update: - alert: "Field not updated" + alert: "Campo não foi atualizado." cross_domain_sessions: create: - alert: "You need to sign in" + alert: "Você precisa fazer o login" 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 + done: "Seu site foi atualizado com sucesso." + notice: "Seu site está sento atualizado." + alert: "A importação não foi feita." \ No newline at end of file diff --git a/config/locales/formtastic.pt-BR.yml b/config/locales/formtastic.pt-BR.yml index ba3ed9fd..33a997eb 100644 --- a/config/locales/formtastic.pt-BR.yml +++ b/config/locales/formtastic.pt-BR.yml @@ -1,67 +1,66 @@ pt-BR: formtastic: titles: - information: General information + information: Informação geral meta: SEO Metadata - code: Code + code: Código raw_template: Template - credentials: Credentials - language: Language + credentials: Credenciais + language: Língua 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 + access_points: Pontos de acesso + memberships: Contas + membership_email: Conta de email + file: Arquivo + preview: Pré-visualizar + options: Opções avançadas + custom_fields: Compos customizáveis + other_fields: Outras informações + presentation: Apresentação + attributes: Atributos upload: Upload labels: theme_asset: - plain_text_name: File name - content_type: File type + plain_text_name: Nome do arquivo + content_type: Tipo do arquivo new: - source: File + source: Arquivo edit: - source: Replace file + source: Substituir arquivo custom_fields: field: - _alias: Alias + _alias: Apelido import: new: - source: File - samples: Copy samples - reset: Reset site + source: Arquivo + samples: Amostras de cópia + reset: Reiniciar site content_type: - api_accounts: Notified Accounts + api_accounts: Contas notificadas 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." + published: "Apenas contas autenticadas podem ver páginas não publicadas." + cache_strategy: "Faça o Cache da página para obter melhor desempenho. A escolha do "Simples" é um bom compromisso" + templatized: "Utilize a página como template para o modelo definido." snippet: - slug: "You need to know it in order to insert the snippet inside a page" + slug: "Você precisa saber a ordem para inserir fragmentos dentro da página." 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." + meta_keywords: "Palavras chave usadas dentro da tag 'head' da página. Elas são separadas por um espaço em branco. Requerido para SEO." + meta_description: "Descrição chave usada dentro da tag 'head' da página. Requerido para SEO." domain_name: "ex: locomotiveapp.org" theme_asset: - slug: "You do not need to add the extension file (.css or .js)" + slug: "Você não precisa adicionar as extensões do arquivo (.css or .js)" edit: - source: "You can replace it by a file of the same extension" + source: "Você pode substituir por um arquivo com a mesma extensão." custom_fields: field: - _alias: "Property available in liquid templates" - hint: "Text displayed in the model form just below the field" + _alias: "Propriedades disponíveis em templates líquidos." + hint: "Texto mostrado no formulário de modelo está abaixo do campo." 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" + source: "Um arquivo .zip contendo um database.yml com assets and templates" + samples: "Se habilitado, a importação também irá copiar conteúdos e assets." + reset: "Se habilitado, todos os dados do site serão apagados antes da importação do novo 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" - + api_enabled: "Ele é utilizado para permitir que pessoas de fora criem novas instâncias (exemplo: mensagens no formulário de contato)" + api_accounts: "Um email de notificação será enviado para conta listada acima quando uma nova instância for criada." \ No newline at end of file From 5f58a6e1cbcfa1de039ed4785795148e0d421695 Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Thu, 10 Feb 2011 01:00:50 -0200 Subject: [PATCH 04/10] Brazillian Portuguese Translation (3) --- config/locales/default.pt-BR.yml | 206 +++++++++++++++++++++++++++++-- 1 file changed, 194 insertions(+), 12 deletions(-) diff --git a/config/locales/default.pt-BR.yml b/config/locales/default.pt-BR.yml index 0bc166aa..1b314305 100644 --- a/config/locales/default.pt-BR.yml +++ b/config/locales/default.pt-BR.yml @@ -1,19 +1,44 @@ pt-BR: + errors: + # The default format use in full error messages. + format: "%{attribute} %{message}" + + messages: + inclusion: "não está incluído na lista" + exclusion: "não está disponível" + invalid: "não é válido" + confirmation: "não está de acordo com a confirmação" + accepted: "deve ser aceito" + empty: "não pode ficar vazio" + blank: "não pode ficar em branco" + too_long: "é muito longo (máximo: %{count} caracteres)" + too_short: "é muito curto (mínimo: %{count} caracteres)" + wrong_length: "não possui o tamanho esperado (%{count} caracteres)" + not_a_number: "não é um número" + not_an_integer: "não é um número inteiro" + greater_than: "deve ser maior do que %{count}" + greater_than_or_equal_to: "deve ser maior ou igual a %{count}" + equal_to: "deve ser igual a %{count}" + less_than: "deve ser menor do que %{count}" + less_than_or_equal_to: "deve ser menor ou igual a %{count}" + odd: "deve ser ímpar" + even: "deve ser par" + + 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" + + 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: @@ -26,7 +51,164 @@ pt-BR: body: "Conteúdo da página de erro 404" other: body: "Conteúdo vai aqui" - + + activemodel: + attributes: + page: + title: Título + parent: Pai + slug: Slug + templatized: Template + published: Publicado + cache_strategy: Cache + content_type: + name: Nome + description: Descrição + slug: Slug + order_by: Ordenar por + highlighted_field_name: Nome do Campo em destaque + group_by_field_name: Agrupar por name do campo + api_enabled: Activation API + asset_collection: + name: Nome + slug: Slug + asset: + name: Nome + source: Arquivo + account: + email: Email + name: Nome + language: Lingugaem + new_password: "Nova senha" + new_password_confirmation: "Confirmação da nova senha" + snippet: + body: Código + slug: slug + name: Nome + theme_asset: + content_type: Tipo de conteúdo + site: + name: Nome do Site + domain_name: Domínio + subdomain: Sub-domínio + restricted_access: Restrito ? + access_login: Login + access_password: "senha" + pagination: previous: "« Anterior" next: "Próximo »" + + date: + formats: + default: "%d/%m/%Y" + short: "%e %b" + long: "%e %B %Y" + long_ordinal: "%e %B %Y" + only_day: "%e" + + day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado] + abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] + + month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] + abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] + order: [ :day, :month, :year ] + + + time: + formats: + default: "%d %B %Y %H:%M" + time: "%H:%M" + short: "%d %b %H:%M" + long: "%A %d %B %Y %H:%M:%S %Z" + long_ordinal: "%A %d %B %Y %H:%M:%S %Z" + only_second: "%S" + am: 'am' + pm: 'pm' + + datetime: + distance_in_words: + half_a_minute: 'meio minuto' + less_than_x_seconds: + one: 'menos de 1 segundo' + other: 'menos de %{count} segundos' + + x_seconds: + one: '1 segundo' + other: '%{count} segundos' + + less_than_x_minutes: + one: 'menos de um minuto' + other: 'menos de %{count} minutos' + + x_minutes: + one: '1 minuto' + other: '%{count} minutos' + + about_x_hours: + one: 'aproximadamente 1 hora' + other: 'aproximadamente %{count} horas' + + x_days: + one: '1 dia' + other: '%{count} dias' + + about_x_months: + one: 'aproximadamente 1 mês' + other: 'aproximadamente %{count} meses' + + x_months: + one: '1 mês' + other: '%{count} meses' + + about_x_years: + one: 'aproximadamente 1 ano' + other: 'aproximadamente %{count} anos' + + over_x_years: + one: 'mais de 1 ano' + other: 'mais de %{count} anos' + + almost_x_years: + one: 'quase 1 ano' + other: 'quase %{count} anos' + + prompts: + year: "Ano" + month: "Mês" + day: "Dia" + hour: "Hora" + minute: "Minuto" + second: "Segundos" + + + number: + format: + precision: 3 + separator: ',' + delimiter: '. ' + currency: + format: + unit: 'R$' + precision: 2 + format: '%n %u' + human: + format: + precision: 2 + storage_units: + format: '%n %u' + units: + byte: 'Byte' + kb: 'Kb' + mb: 'Mb' + gb: 'Gb' + tb: 'Tb' + + support: + array: + sentence_connector: ' e ' + skip_last_comma: true + words_connector: ", " + two_words_connector: " e " + last_word_connector: " e " + \ No newline at end of file From caeac4791bd15244ae1ccea8494119e9c1f06c1a Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Thu, 10 Feb 2011 01:07:58 -0200 Subject: [PATCH 05/10] Brazillian Portuguese Translation (4) --- config/locales/devise.pt-BR.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml index 6779953a..f2fa6fa6 100644 --- a/config/locales/devise.pt-BR.yml +++ b/config/locales/devise.pt-BR.yml @@ -31,7 +31,7 @@ pt-BR: admin: signed_up: 'Você logou com sucesso.' updated: 'Atualização da conta feita com sucesso.' - destroyed: 'Sua conta foi cancelada com sucesso. Logo logo esperamos te ver por aqui. Tchau! + destroyed: 'Sua conta foi cancelada com sucesso. Logo logo esperamos te ver por aqui. Tchau!' unlocks: admin: send_instructions: 'Você receberá um email com as intruções de como desbloquear sua conta em poucos minutos.' From 858ada2f284f7a0648a9af0c5bc395eacb668809 Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Thu, 10 Feb 2011 01:10:10 -0200 Subject: [PATCH 06/10] Brazillian Portuguese Translation (5) --- config/locales/devise.pt-BR.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml index f2fa6fa6..6cff714d 100644 --- a/config/locales/devise.pt-BR.yml +++ b/config/locales/devise.pt-BR.yml @@ -47,9 +47,8 @@ pt-BR: mailer: common: hello: Olá - confirmation_instructions: - you_can_confirm_your_account_through_the_link_below: "Você pode confirmar sua conta através do link abaixo.' + you_can_confirm_your_account_through_the_link_below: "Você pode confirmar sua conta através do link abaixo." confirm_my_account: "Confirmar minha conta" reset_password_instructions: reset_password_instruction: "Alguém solicitou um link para alterar sua senha e você poderá fazer isto através do link abaixo:" From c5e9f05ee9584f110c82a4ab9977d48791f500e6 Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Thu, 10 Feb 2011 01:12:50 -0200 Subject: [PATCH 07/10] Brazillian Portuguese Translation (5) --- config/locales/formtastic.pt-BR.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/formtastic.pt-BR.yml b/config/locales/formtastic.pt-BR.yml index 33a997eb..9796246e 100644 --- a/config/locales/formtastic.pt-BR.yml +++ b/config/locales/formtastic.pt-BR.yml @@ -41,7 +41,7 @@ pt-BR: hints: page: published: "Apenas contas autenticadas podem ver páginas não publicadas." - cache_strategy: "Faça o Cache da página para obter melhor desempenho. A escolha do "Simples" é um bom compromisso" + cache_strategy: 'Faça o Cache da página para obter melhor desempenho. A escolha do "Simples" é um bom compromisso' templatized: "Utilize a página como template para o modelo definido." snippet: slug: "Você precisa saber a ordem para inserir fragmentos dentro da página." From d97c8b8525d77a51d61feaef5999c36f399cc9d0 Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Thu, 10 Feb 2011 01:23:28 -0200 Subject: [PATCH 08/10] Brazillian Portuguese Translation (5) --- public/images/admin/icons/flags/pt-BR.png | Bin 0 -> 1115 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/admin/icons/flags/pt-BR.png diff --git a/public/images/admin/icons/flags/pt-BR.png b/public/images/admin/icons/flags/pt-BR.png new file mode 100644 index 0000000000000000000000000000000000000000..78c57dea2602f291e1c135c1dcc5684dc46dbafc GIT binary patch literal 1115 zcmV-h1f=_kP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ<;Ymb6RCwCdmP>3~RS<^1bMAF)Cr;udm7BzIi_`=t4K0+YQYisJk!V0rHV73E zEI@z+D$0fDI4074)@0TvLcyi%aNBBW3%9wii-2ac1dI1f8^?AX5N!NN`B zNRj9wSuneM&zkc3Q7YG2pHID581s4e2@!``cN3KrBp34Hj zTmbFL?|b(jYH)!XDFoNFbuJ$XyG+oQpFJ(9k`^m0o{{*Ztq2KNQTDTCzk$h905vY) zYNIJ>#e6Y$K7%E9W5F{Hn?pHnjU_QyJ|1r-o~gzsHI7&T13>jHSzkW&Tn zs<47;Q9Fcunww)ux?5&Z1s8yax6bj+*(N?uM3`3&0Y|SWlh1Kbru@zY&{~r(708v! z01AmVf-4$lIM6Xcan8^4Z*OB{vJrqS(G+*@9b)^ADc=1n#?NzgNNMq%`%A8HP{u3+ zD5F^@Es`k}Sk#i%>LPcxPqC*h$w;D^r(V03`Lqvo0SrvWH!%3?Zk~MbYaZQklJCYN zeDHTGQ+Yo@$KVKw)~b?$Vy0LiTU_L(Xp(!jOcD+jz;pOz;s)BcN2m=b!fuq`<4HzG z7D&bwue^5&M-GnB-8#bM;Yr>ZiSpTG1dYV21ju=Y&OnkwoxicQX&!4NSj*IO9WTF; zBArPS2s$)11c+S}z=;Z7z}RFp_5Qj4>= zHUTCBS^^eT3=^M7lPy*ugl1&iGI#=T1vl=Ca(z!Lf@x4munwScZHClh1Wz?CYerCF za5_ZKu`ZrDaWQF6f>gvdrnq#|EK2#YfOI5PH7+Hk`J``-nZ%#8wWYyPWIVyMKXuU4 z-^CBfT7)Sr11P2O2@h>8M^10zw*D@Tjy5Bzi#&ecmpC>@aly}G-jdH7qzzGDr@4Js zFUSm^jy1FYi>r8PXfw)Me8R)i6>aJng|!X>O~}=ZW&_;+eJ8h!MR;!a5MRCcCI?@= zj+4X92;j<&IENoNPPBcRhmP&!qr^rW0U=*GYi)H|q00aoVI;;_5a5#<*Fs++!ay?2 z6Fbjv^o3rssUX%0!i_oJ8jW(GZx3e+erkORVb90J7_gN>Q(EC5F_;yauW?IcJ;`GO zm+}6Y77p+FgDPpbx4(;T|7oJy(S+O*c4-7H0iZFJZEB1`TBvpdt4_$eDmXnK;jZHw z5I{~zT7m{}R-dRAbcK>VWi%?A|Ifvdv*pPqg{5$TJ3#>TKnw`4@xn<1iKUI^Un Date: Fri, 11 Feb 2011 23:44:35 -0200 Subject: [PATCH 09/10] Brazilian Portuguese Translations --- config/assets.yml | 1 + config/locales/default.pt-BR.yml | 2 +- lib/locomotive/configuration.rb | 2 +- .../javascripts/admin/aloha/i18n/pt-BR.dict | 7 + .../i18n/pt-BR.dict | 30 ++++ .../i18n/pt-BR.dict | 4 + .../i18n/pt-BR.dict | 2 + .../i18n/pt-BR.dict | 1 + .../i18n/pt-BR.dict | 14 ++ .../admin/inline_editor_toolbar.js | 8 + .../admin/locales/datepicker_pt-BR.js | 4 +- .../admin/plugins/tiny_mce/langs/pt-BR.js | 170 ++++++++++++++++++ .../tiny_mce/themes/advanced/langs/pt-BR.js | 62 +++++++ .../themes/advanced/langs/pt-BR_dlg.js | 51 ++++++ 14 files changed, 354 insertions(+), 4 deletions(-) create mode 100644 public/javascripts/admin/aloha/i18n/pt-BR.dict create mode 100644 public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Format/i18n/pt-BR.dict create mode 100644 public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/i18n/pt-BR.dict create mode 100644 public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.List/i18n/pt-BR.dict create mode 100644 public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/i18n/pt-BR.dict create mode 100644 public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/pt-BR.dict create mode 100644 public/javascripts/admin/plugins/tiny_mce/langs/pt-BR.js create mode 100644 public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR.js create mode 100644 public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR_dlg.js diff --git a/config/assets.yml b/config/assets.yml index 156926eb..55f54446 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -20,6 +20,7 @@ javascripts: - public/javascripts/admin/plugins/cookie.js - public/javascripts/admin/plugins/selectmenu.js - public/javascripts/admin/locales/datepicker_fr.js + - public/javascripts/admin/locales/datepicker_pt-BR.js - public/javascripts/admin/application.js custom_fields: - public/javascripts/admin/plugins/fancybox.js diff --git a/config/locales/default.pt-BR.yml b/config/locales/default.pt-BR.yml index 1b314305..2882a12e 100644 --- a/config/locales/default.pt-BR.yml +++ b/config/locales/default.pt-BR.yml @@ -44,7 +44,7 @@ pt-BR: defaults: pages: index: - title: "'Página Inicial" + title: "Página Inicial" body: "Conteúdo da página inicial" "404": title: "Página não encontrada" diff --git a/lib/locomotive/configuration.rb b/lib/locomotive/configuration.rb index 32f6d850..4f7f551e 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 pt-BR}, + :locales => %w{en fr "pt-BR"}, :cookie_key => '_locomotive_session', :enable_logs => false, :heroku => false, diff --git a/public/javascripts/admin/aloha/i18n/pt-BR.dict b/public/javascripts/admin/aloha/i18n/pt-BR.dict new file mode 100644 index 00000000..676ad8af --- /dev/null +++ b/public/javascripts/admin/aloha/i18n/pt-BR.dict @@ -0,0 +1,7 @@ +floatingmenu.tab.format=Formato +floatingmenu.tab.insert=Inserir +yes=Sim +no=Não +cancel=Cancelar +repository.no_item_found=Nenhum item encotrado. +repository.loading=Carregando \ No newline at end of file diff --git a/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Format/i18n/pt-BR.dict b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Format/i18n/pt-BR.dict new file mode 100644 index 00000000..eae11d26 --- /dev/null +++ b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Format/i18n/pt-BR.dict @@ -0,0 +1,30 @@ +button.b.tooltip=Bold +button.i.tooltip=Italic +button.u.tooltip=Underline +button.cite.tooltip=Cite +button.q.tooltip= +button.code.tooltip=Code +button.abbr.tooltip=Abbreviation +button.del.tooltip=Strikethrough +button.sub.tooltip=Subscript +button.sup.tooltip=Superscript +button.p.tooltip=Paragraph +button.h1.tooltip=Heading 1 +button.h2.tooltip=Heading 2 +button.h3.tooltip=Heading 3 +button.h4.tooltip=Heading 4 +button.h5.tooltip=Heading 5 +button.h6.tooltip=Heading 6 +button.pre.tooltip=Pre formated text +button.title.tooltip=Title +button.removeFormat.tooltip=Remove formatting +button.removeFormat.text=Remove formatting +GENTICS_button_p=GENTICS_button_p +GENTICS_button_h1=GENTICS_button_h1 +GENTICS_button_h2=GENTICS_button_h2 +GENTICS_button_h3=GENTICS_button_h3 +GENTICS_button_h4=GENTICS_button_h4 +GENTICS_button_h5=GENTICS_button_h5 +GENTICS_button_h6=GENTICS_button_h6 +GENTICS_button_pre=GENTICS_button_pre +GENTICS_button_title=GENTICS_button_title \ No newline at end of file diff --git a/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/i18n/pt-BR.dict b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/i18n/pt-BR.dict new file mode 100644 index 00000000..e043bde4 --- /dev/null +++ b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Link/i18n/pt-BR.dict @@ -0,0 +1,4 @@ +button.addlink.tooltip=Inserir Link +button.removelink.tooltip=Remover Link +newlink.defaulttext=Novo Link +floatingmenu.tab.link=Link diff --git a/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.List/i18n/pt-BR.dict b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.List/i18n/pt-BR.dict new file mode 100644 index 00000000..ef966e5a --- /dev/null +++ b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.List/i18n/pt-BR.dict @@ -0,0 +1,2 @@ +button.createulist.tooltip=Inserir lista não ordenada +button.createolist.tooltip=Inserir lista ordenada diff --git a/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/i18n/pt-BR.dict b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/i18n/pt-BR.dict new file mode 100644 index 00000000..a0ac27d5 --- /dev/null +++ b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.TOC/i18n/pt-BR.dict @@ -0,0 +1 @@ +button.addtoc.tooltip=Tabela de conteúdos \ No newline at end of file diff --git a/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/pt-BR.dict b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/pt-BR.dict new file mode 100644 index 00000000..885b9e96 --- /dev/null +++ b/public/javascripts/admin/aloha/plugins/com.gentics.aloha.plugins.Table/i18n/pt-BR.dict @@ -0,0 +1,14 @@ +floatingmenu.tab.table=Tabela +deleterows.confirm=Do you really want to delete the selected rows? +deletecolumns.confirm=Do you really want to delete the selected columns? +deletetable.confirm=Do you really want to delete the table? +Table=Table +button.createtable.tooltip=Insert Table +button.addcolleft.tooltip=Add Column left +button.addcolright.tooltip=Add Column right +button.delcols.tooltip=Delete Columns +button.addrowbefore.tooltip=Add Row before +button.addrowafter.tooltip=Add Row after +button.delrows.tooltip=Delete Rows +button.caption.tooltip=Table caption +empty.caption=Table caption \ No newline at end of file diff --git a/public/javascripts/admin/inline_editor_toolbar.js b/public/javascripts/admin/inline_editor_toolbar.js index c642711c..0adb7f20 100644 --- a/public/javascripts/admin/inline_editor_toolbar.js +++ b/public/javascripts/admin/inline_editor_toolbar.js @@ -165,6 +165,14 @@ var InlineEditorToolbar = { 'cancel': 'annuler', 'back': 'fin mode edition', 'saving': 'sauvegarde en cours' + } + 'pt-BR': { + 'home': 'admin', + 'edit': 'editar', + 'save': 'salvar', + 'cancel': 'cancelar', + 'back': 'terminar edição', + 'saving': 'salvando' } } }; \ No newline at end of file diff --git a/public/javascripts/admin/locales/datepicker_pt-BR.js b/public/javascripts/admin/locales/datepicker_pt-BR.js index bd9efe88..d19bc5a4 100644 --- a/public/javascripts/admin/locales/datepicker_pt-BR.js +++ b/public/javascripts/admin/locales/datepicker_pt-BR.js @@ -1,5 +1,5 @@ -/* French initialisation for the jQuery UI date picker plugin. */ -/* Written by Keith Wood (kbwood@virginbroadband.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +/* Brazilian Portuguese initialisation for the jQuery UI date picker plugin. */ +/* Written by Raphael Costa (raphael@experia.com.br) */ jQuery(function($){ $.datepicker.regional['pt-BR'] = { closeText: 'Fechar', diff --git a/public/javascripts/admin/plugins/tiny_mce/langs/pt-BR.js b/public/javascripts/admin/plugins/tiny_mce/langs/pt-BR.js new file mode 100644 index 00000000..8021c701 --- /dev/null +++ b/public/javascripts/admin/plugins/tiny_mce/langs/pt-BR.js @@ -0,0 +1,170 @@ +tinyMCE.addI18n({en:{ +common:{ +edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?", +apply:"Aplicar", +insert:"Inserir", +update:"Update", +cancel:"Cancel", +close:"Close", +browse:"Browse", +class_name:"Class", +not_set:"-- Not set --", +clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?", +clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.", +popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.", +invalid_data:"Error: Invalid values entered, these are marked in red.", +more_colors:"More colors" +}, +contextmenu:{ +align:"Alignment", +left:"Left", +center:"Center", +right:"Right", +full:"Full" +}, +insertdatetime:{ +date_fmt:"%Y-%m-%d", +time_fmt:"%H:%M:%S", +insertdate_desc:"Insert date", +inserttime_desc:"Insert time", +months_long:"January,February,March,April,May,June,July,August,September,October,November,December", +months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", +day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday", +day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun" +}, +print:{ +print_desc:"Print" +}, +preview:{ +preview_desc:"Preview" +}, +directionality:{ +ltr_desc:"Direction left to right", +rtl_desc:"Direction right to left" +}, +layer:{ +insertlayer_desc:"Insert new layer", +forward_desc:"Move forward", +backward_desc:"Move backward", +absolute_desc:"Toggle absolute positioning", +content:"New layer..." +}, +save:{ +save_desc:"Save", +cancel_desc:"Cancel all changes" +}, +nonbreaking:{ +nonbreaking_desc:"Insert non-breaking space character" +}, +iespell:{ +iespell_desc:"Run spell checking", +download:"ieSpell not detected. Do you want to install it now?" +}, +advhr:{ +advhr_desc:"Horizontal rule" +}, +emotions:{ +emotions_desc:"Emotions" +}, +searchreplace:{ +search_desc:"Find", +replace_desc:"Find/Replace" +}, +advimage:{ +image_desc:"Insert/edit image" +}, +advlink:{ +link_desc:"Insert/edit link" +}, +xhtmlxtras:{ +cite_desc:"Citation", +abbr_desc:"Abbreviation", +acronym_desc:"Acronym", +del_desc:"Deletion", +ins_desc:"Insertion", +attribs_desc:"Insert/Edit Attributes" +}, +style:{ +desc:"Edit CSS Style" +}, +paste:{ +paste_text_desc:"Paste as Plain Text", +paste_word_desc:"Paste from Word", +selectall_desc:"Select All", +plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.", +plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode." +}, +paste_dlg:{ +text_title:"Use CTRL+V on your keyboard to paste the text into the window.", +text_linebreaks:"Keep linebreaks", +word_title:"Use CTRL+V on your keyboard to paste the text into the window." +}, +table:{ +desc:"Inserts a new table", +row_before_desc:"Insert row before", +row_after_desc:"Insert row after", +delete_row_desc:"Delete row", +col_before_desc:"Insert column before", +col_after_desc:"Insert column after", +delete_col_desc:"Remove column", +split_cells_desc:"Split merged table cells", +merge_cells_desc:"Merge table cells", +row_desc:"Table row properties", +cell_desc:"Table cell properties", +props_desc:"Table properties", +paste_row_before_desc:"Paste table row before", +paste_row_after_desc:"Paste table row after", +cut_row_desc:"Cut table row", +copy_row_desc:"Copy table row", +del:"Delete table", +row:"Row", +col:"Column", +cell:"Cell" +}, +autosave:{ +unload_msg:"The changes you made will be lost if you navigate away from this page.", +restore_content:"Restore auto-saved content.", +warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?." +}, +fullscreen:{ +desc:"Toggle fullscreen mode" +}, +media:{ +desc:"Insert / edit embedded media", +edit:"Edit embedded media" +}, +fullpage:{ +desc:"Document properties" +}, +template:{ +desc:"Insert predefined template content" +}, +visualchars:{ +desc:"Visual control characters on/off." +}, +spellchecker:{ +desc:"Toggle spellchecker", +menu:"Spellchecker settings", +ignore_word:"Ignore word", +ignore_words:"Ignore all", +langs:"Languages", +wait:"Please wait...", +sug:"Suggestions", +no_sug:"No suggestions", +no_mpell:"No misspellings found." +}, +pagebreak:{ +desc:"Insert page break." +}, +advlist:{ +types:"Types", +def:"Default", +lower_alpha:"Lower alpha", +lower_greek:"Lower greek", +lower_roman:"Lower roman", +upper_alpha:"Upper alpha", +upper_roman:"Upper roman", +circle:"Circle", +disc:"Disc", +square:"Square" +}}}); \ No newline at end of file diff --git a/public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR.js b/public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR.js new file mode 100644 index 00000000..52989e39 --- /dev/null +++ b/public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR.js @@ -0,0 +1,62 @@ +tinyMCE.addI18n('en.advanced',{ +style_select:"Styles", +font_size:"Font size", +fontdefault:"Font family", +block:"Format", +paragraph:"Paragraph", +div:"Div", +address:"Address", +pre:"Preformatted", +h1:"Heading 1", +h2:"Heading 2", +h3:"Heading 3", +h4:"Heading 4", +h5:"Heading 5", +h6:"Heading 6", +blockquote:"Blockquote", +code:"Code", +samp:"Code sample", +dt:"Definition term ", +dd:"Definition description", +bold_desc:"Bold (Ctrl+B)", +italic_desc:"Italic (Ctrl+I)", +underline_desc:"Underline (Ctrl+U)", +striketrough_desc:"Strikethrough", +justifyleft_desc:"Align left", +justifycenter_desc:"Align center", +justifyright_desc:"Align right", +justifyfull_desc:"Align full", +bullist_desc:"Unordered list", +numlist_desc:"Ordered list", +outdent_desc:"Outdent", +indent_desc:"Indent", +undo_desc:"Undo (Ctrl+Z)", +redo_desc:"Redo (Ctrl+Y)", +link_desc:"Insert/edit link", +unlink_desc:"Unlink", +image_desc:"Insert/edit image", +cleanup_desc:"Cleanup messy code", +code_desc:"Edit HTML Source", +sub_desc:"Subscript", +sup_desc:"Superscript", +hr_desc:"Insert horizontal ruler", +removeformat_desc:"Remove formatting", +custom1_desc:"Your custom description here", +forecolor_desc:"Select text color", +backcolor_desc:"Select background color", +charmap_desc:"Insert custom character", +visualaid_desc:"Toggle guidelines/invisible elements", +anchor_desc:"Insert/edit anchor", +cut_desc:"Cut", +copy_desc:"Copy", +paste_desc:"Paste", +image_props_desc:"Image properties", +newdocument_desc:"New document", +help_desc:"Help", +blockquote_desc:"Blockquote", +clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?", +path:"Path", +newdocument:"Are you sure you want clear all contents?", +toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X", +more_colors:"More colors" +}); \ No newline at end of file diff --git a/public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR_dlg.js b/public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR_dlg.js new file mode 100644 index 00000000..80e49419 --- /dev/null +++ b/public/javascripts/admin/plugins/tiny_mce/themes/advanced/langs/pt-BR_dlg.js @@ -0,0 +1,51 @@ +tinyMCE.addI18n('en.advanced_dlg',{ +about_title:"About TinyMCE", +about_general:"About", +about_help:"Help", +about_license:"License", +about_plugins:"Plugins", +about_plugin:"Plugin", +about_author:"Author", +about_version:"Version", +about_loaded:"Loaded plugins", +anchor_title:"Insert/edit anchor", +anchor_name:"Anchor name", +code_title:"HTML Source Editor", +code_wordwrap:"Word wrap", +colorpicker_title:"Select a color", +colorpicker_picker_tab:"Picker", +colorpicker_picker_title:"Color picker", +colorpicker_palette_tab:"Palette", +colorpicker_palette_title:"Palette colors", +colorpicker_named_tab:"Named", +colorpicker_named_title:"Named colors", +colorpicker_color:"Color:", +colorpicker_name:"Name:", +charmap_title:"Select custom character", +image_title:"Insert/edit image", +image_src:"Image URL", +image_alt:"Image description", +image_list:"Image list", +image_border:"Border", +image_dimensions:"Dimensions", +image_vspace:"Vertical space", +image_hspace:"Horizontal space", +image_align:"Alignment", +image_align_baseline:"Baseline", +image_align_top:"Top", +image_align_middle:"Middle", +image_align_bottom:"Bottom", +image_align_texttop:"Text top", +image_align_textbottom:"Text bottom", +image_align_left:"Left", +image_align_right:"Right", +link_title:"Insert/edit link", +link_url:"Link URL", +link_target:"Target", +link_target_same:"Open link in the same window", +link_target_blank:"Open link in a new window", +link_titlefield:"Title", +link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", +link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", +link_list:"Link list" +}); \ No newline at end of file From f281934832de387eacfd467af3fa192166bf4ef1 Mon Sep 17 00:00:00 2001 From: Raphael Costa Date: Sat, 12 Feb 2011 01:50:47 -0200 Subject: [PATCH 10/10] fix in portuguese translations --- public/javascripts/admin/inline_editor_toolbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/admin/inline_editor_toolbar.js b/public/javascripts/admin/inline_editor_toolbar.js index 0adb7f20..24c522bd 100644 --- a/public/javascripts/admin/inline_editor_toolbar.js +++ b/public/javascripts/admin/inline_editor_toolbar.js @@ -165,7 +165,7 @@ var InlineEditorToolbar = { 'cancel': 'annuler', 'back': 'fin mode edition', 'saving': 'sauvegarde en cours' - } + }, 'pt-BR': { 'home': 'admin', 'edit': 'editar',