aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.hound.yml11
-rw-r--r--.travis.yml4
-rw-r--r--Gemfile4
-rw-r--r--Gemfile.lock59
-rw-r--r--README.md12
-rw-r--r--Vagrantfile2
-rw-r--r--app/assets/stylesheets/responsive/_global_style.scss5
-rw-r--r--app/controllers/admin_request_controller.rb4
-rw-r--r--app/controllers/application_controller.rb4
-rw-r--r--app/controllers/comment_controller.rb2
-rw-r--r--app/controllers/general_controller.rb8
-rw-r--r--app/controllers/public_body_controller.rb40
-rw-r--r--app/controllers/request_controller.rb8
-rw-r--r--app/controllers/services_controller.rb2
-rw-r--r--app/controllers/track_controller.rb12
-rw-r--r--app/controllers/user_controller.rb10
-rw-r--r--app/helpers/application_helper.rb25
-rw-r--r--app/helpers/date_time_helper.rb69
-rw-r--r--app/helpers/highlight_helper.rb98
-rwxr-xr-xapp/helpers/link_to_helper.rb83
-rw-r--r--app/mailers/outgoing_mailer.rb8
-rw-r--r--app/mailers/request_mailer.rb8
-rw-r--r--app/models/comment.rb2
-rw-r--r--app/models/foi_attachment.rb2
-rw-r--r--app/models/incoming_message.rb20
-rw-r--r--app/models/info_request.rb10
-rw-r--r--app/models/info_request_event.rb8
-rw-r--r--app/models/mail_server_log.rb2
-rw-r--r--app/models/outgoing_message.rb2
-rw-r--r--app/models/post_redirect.rb2
-rw-r--r--app/models/profile_photo.rb2
-rw-r--r--app/models/public_body.rb46
-rw-r--r--app/models/track_thing.rb4
-rw-r--r--app/models/user.rb6
-rw-r--r--app/views/general/_locale_switcher.html.erb2
-rw-r--r--app/views/track_mailer/event_digest.text.erb8
-rw-r--r--app/views/user/_user_listing_single.html.erb2
-rw-r--r--app/views/user/show.html.erb2
-rw-r--r--config/crontab-example28
-rw-r--r--config/database.yml-example10
-rw-r--r--config/database.yml-test1
-rw-r--r--config/httpd.conf-example2
-rw-r--r--config/initializers/alaveteli.rb1
-rw-r--r--config/routes.rb4
-rw-r--r--config/varnish-alaveteli.vcl2
-rw-r--r--db/migrate/028_give_incoming_messages_events.rb2
-rw-r--r--db/migrate/036_add_public_body_tags.rb2
-rw-r--r--db/migrate/061_include_responses_in_tracks.rb2
-rw-r--r--db/migrate/065_add_comments_to_user_track.rb2
-rw-r--r--db/migrate/088_public_body_machine_tags.rb2
-rw-r--r--db/migrate/090_remove_tag_uniqueness.rb2
-rw-r--r--doc/CHANGES.md9
-rw-r--r--doc/DEPLOY.md41
-rw-r--r--doc/INSTALL-exim4.md99
-rw-r--r--doc/INSTALL-postfix.md68
-rw-r--r--doc/INSTALL.md651
-rw-r--r--doc/README.md9
-rw-r--r--doc/THEMES.md165
-rw-r--r--doc/TRANSLATE.md106
-rw-r--r--lib/acts_as_xapian/acts_as_xapian.rb80
-rw-r--r--lib/alaveteli_file_types.rb8
-rw-r--r--lib/has_tag_string/has_tag_string.rb4
-rw-r--r--lib/mail_handler/backends/mail_backend.rb2
-rw-r--r--lib/mail_handler/mail_handler.rb4
-rw-r--r--lib/public_body_csv.rb95
-rw-r--r--lib/strip_attributes/strip_attributes.rb2
-rw-r--r--lib/tasks/config_files.rake5
-rw-r--r--locale/ar/app.po10
-rw-r--r--locale/bg/app.po12
-rw-r--r--locale/cs/app.po315
-rw-r--r--locale/cy/app.po12
-rw-r--r--locale/de/app.po5
-rw-r--r--locale/en_IE/app.po4
-rw-r--r--locale/fi/app.po4
-rw-r--r--locale/fr/app.po14
-rw-r--r--locale/fr_CA/app.po6
-rw-r--r--locale/he_IL/app.po12
-rw-r--r--locale/hr/app.po8
-rw-r--r--locale/hr_HR/app.po4
-rw-r--r--locale/hu_HU/app.po4
-rw-r--r--locale/id/app.po8
-rw-r--r--locale/it/app.po4
-rw-r--r--locale/nb_NO/app.po62
-rw-r--r--locale/pl/app.po4
-rw-r--r--locale/pt_BR/app.po14
-rw-r--r--locale/pt_PT/app.po2033
-rw-r--r--locale/ro_RO/app.po28
-rw-r--r--locale/sr@latin/app.po8
-rw-r--r--locale/tr/app.po4
-rw-r--r--locale/uk/app.po4
-rw-r--r--locale/vi/app.po4
-rwxr-xr-xscript/request-creation-graph2
-rwxr-xr-xscript/site-specific-install.sh1
-rwxr-xr-xscript/user-use-graph2
-rw-r--r--spec/controllers/comment_controller_spec.rb2
-rw-r--r--spec/controllers/general_controller_spec.rb2
-rw-r--r--spec/controllers/public_body_controller_spec.rb17
-rw-r--r--spec/controllers/request_controller_spec.rb25
-rw-r--r--spec/controllers/track_controller_spec.rb6
-rw-r--r--spec/controllers/user_controller_spec.rb8
-rw-r--r--spec/helpers/date_time_helper_spec.rb71
-rw-r--r--spec/helpers/highlight_helper_spec.rb247
-rw-r--r--spec/helpers/link_to_helper_spec.rb123
-rw-r--r--spec/integration/xapian_search_highlighting_spec.rb39
-rw-r--r--spec/lib/public_body_csv_spec.rb114
-rw-r--r--spec/models/customstates.rb2
-rw-r--r--spec/models/public_body_spec.rb16
-rw-r--r--spec/models/raw_email_spec.rb2
-rw-r--r--spec/models/user_spec.rb2
-rw-r--r--spec/models/xapian_spec.rb50
-rw-r--r--spec/spec_helper.rb2
112 files changed, 2537 insertions, 2786 deletions
diff --git a/.gitignore b/.gitignore
index a4ec2380e..994f9a3a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,7 @@ bin/
config/aliases
config/httpd.conf
config/general*.yml
+config/deploy.yml.*
.sass-cache
alaveteli.sublime*
webrat.log
diff --git a/.hound.yml b/.hound.yml
deleted file mode 100644
index 574cfe7ac..000000000
--- a/.hound.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Configuration for https://houndci.com/
-
-Style/IndentationWidth:
- Description: 'Use 2 spaces for indentation.'
- Enabled: false
-
-Style/HashSyntax:
- Description: >-
- Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
- { :a => 1, :b => 2 }.
- Enabled: false
diff --git a/.travis.yml b/.travis.yml
index 6a6b73e90..3351bed2a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,7 +16,9 @@ before_install:
- gem update --system 2.1.11
- gem install rake --version=0.9.2.2
- git submodule update --init --recursive
- - psql -c "create database foi_test template template0 encoding 'SQL_ASCII';" -U postgres
+ - psql -c "create database template_utf8 template template0 encoding 'UTF-8';" -U postgres
+ - psql -c "update pg_database set datistemplate=true where datname='template_utf8';" -U postgres
+ - psql -c "create database foi_test template template_utf8;" -U postgres
- cp config/database.yml-test config/database.yml
- cp config/general.yml-example config/general.yml
- cp config/newrelic.yml-example config/newrelic.yml
diff --git a/Gemfile b/Gemfile
index fa6c39262..418c60668 100644
--- a/Gemfile
+++ b/Gemfile
@@ -7,7 +7,7 @@ if File.exist? "/etc/debian_version" and File.open("/etc/debian_version").read.s
end
source 'https://rubygems.org'
-gem 'rails', '3.2.18'
+gem 'rails', '3.2.19'
gem 'pg'
@@ -17,7 +17,6 @@ gem 'charlock_holmes'
gem 'dynamic_form'
gem 'exception_notification'
gem 'fancybox-rails'
-gem 'fastercsv', '>=1.5.5'
gem 'foundation-rails'
gem 'jquery-rails', '~> 3.0.4'
gem 'jquery-ui-rails'
@@ -82,6 +81,7 @@ end
group :development do
gem 'capistrano'
gem 'mailcatcher'
+ gem 'quiet_assets'
gem 'rdoc'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index fd02983c0..688f2f2c7 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -18,12 +18,12 @@ GIT
GEM
remote: https://rubygems.org/
specs:
- actionmailer (3.2.18)
- actionpack (= 3.2.18)
+ actionmailer (3.2.19)
+ actionpack (= 3.2.19)
mail (~> 2.5.4)
- actionpack (3.2.18)
- activemodel (= 3.2.18)
- activesupport (= 3.2.18)
+ actionpack (3.2.19)
+ activemodel (= 3.2.19)
+ activesupport (= 3.2.19)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
@@ -31,18 +31,18 @@ GEM
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.2.1)
- activemodel (3.2.18)
- activesupport (= 3.2.18)
+ activemodel (3.2.19)
+ activesupport (= 3.2.19)
builder (~> 3.0.0)
- activerecord (3.2.18)
- activemodel (= 3.2.18)
- activesupport (= 3.2.18)
+ activerecord (3.2.19)
+ activemodel (= 3.2.19)
+ activesupport (= 3.2.19)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
- activeresource (3.2.18)
- activemodel (= 3.2.18)
- activesupport (= 3.2.18)
- activesupport (3.2.18)
+ activeresource (3.2.19)
+ activemodel (= 3.2.19)
+ activesupport (= 3.2.19)
+ activesupport (3.2.19)
i18n (~> 0.6, >= 0.6.4)
multi_json (~> 1.0)
annotate (2.5.0)
@@ -104,7 +104,6 @@ GEM
fancybox-rails (0.2.1)
railties (>= 3.1.0)
fast_gettext (0.7.0)
- fastercsv (1.5.5)
foundation-rails (5.2.1.0)
railties (>= 3.1.0)
sass (>= 3.2.0)
@@ -145,7 +144,7 @@ GEM
thin (~> 1.5.0)
memcache-client (1.8.5)
mime-types (1.25.1)
- multi_json (1.10.0)
+ multi_json (1.10.1)
net-http-local (0.1.2)
net-purge (0.1.0)
net-scp (1.1.1)
@@ -161,7 +160,9 @@ GEM
activerecord (~> 3.0)
railties (~> 3.0)
pg (0.15.1)
- polyglot (0.3.4)
+ polyglot (0.3.5)
+ quiet_assets (1.0.2)
+ railties (>= 3.1, < 5.0)
rack (1.4.5)
rack-cache (1.2)
rack (>= 0.4)
@@ -171,19 +172,19 @@ GEM
rack
rack-test (0.6.2)
rack (>= 1.0)
- rails (3.2.18)
- actionmailer (= 3.2.18)
- actionpack (= 3.2.18)
- activerecord (= 3.2.18)
- activeresource (= 3.2.18)
- activesupport (= 3.2.18)
+ rails (3.2.19)
+ actionmailer (= 3.2.19)
+ actionpack (= 3.2.19)
+ activerecord (= 3.2.19)
+ activeresource (= 3.2.19)
+ activesupport (= 3.2.19)
bundler (~> 1.0)
- railties (= 3.2.18)
+ railties (= 3.2.19)
rails-i18n (0.7.3)
i18n (~> 0.5)
- railties (3.2.18)
- actionpack (= 3.2.18)
- activesupport (= 3.2.18)
+ railties (3.2.19)
+ actionpack (= 3.2.19)
+ activesupport (= 3.2.19)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
@@ -295,7 +296,6 @@ DEPENDENCIES
fakeweb
fancybox-rails
fast_gettext
- fastercsv (>= 1.5.5)
foundation-rails
gettext
gettext_i18n_rails
@@ -312,8 +312,9 @@ DEPENDENCIES
newrelic_rpm
nokogiri
pg
+ quiet_assets
rack
- rails (= 3.2.18)
+ rails (= 3.2.19)
rails-i18n
rake (= 0.9.2.2)
rdoc
diff --git a/README.md b/README.md
index a860470a4..2a0d3ed80 100644
--- a/README.md
+++ b/README.md
@@ -17,12 +17,12 @@ Please join our mailing list at
https://groups.google.com/group/alaveteli-dev and introduce yourself, or
drop a line to hello@alaveteli.org to let us know that you're using Alaveteli.
-Some documentation can be found in the
-[`doc/` folder](https://github.com/mysociety/alaveteli/tree/master/doc).
-There's background information and more documentation on
-[our wiki](https://github.com/mysociety/alaveteli/wiki/Home/), and lots
-of useful information (including a blog) on
-[the project website](http://alaveteli.org)
+There's lots of useful information and documentation (including a blog)
+on [the project website](http://alaveteli.org). There's background
+information and notes on [our
+wiki](https://github.com/mysociety/alaveteli/wiki/Home/), and upgrade
+notes in the [`doc/`
+folder](https://github.com/mysociety/alaveteli/tree/master/doc/CHANGES.md)
## How to contribute
diff --git a/Vagrantfile b/Vagrantfile
index 31b2553a1..183df5893 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -86,7 +86,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
end
# Fetch and run the install script:
- config.vm.provision :shell, :inline => "wget -O install-site.sh https://raw.github.com/mysociety/commonlib/master/bin/install-site.sh"
+ config.vm.provision :shell, :inline => "wget -O install-site.sh https://raw.githubusercontent.com/mysociety/commonlib/master/bin/install-site.sh"
config.vm.provision :shell, :inline => "chmod a+rx install-site.sh"
config.vm.provision :shell, :inline => "./install-site.sh " \
"--dev " \
diff --git a/app/assets/stylesheets/responsive/_global_style.scss b/app/assets/stylesheets/responsive/_global_style.scss
index 5b268f3a6..290591b5f 100644
--- a/app/assets/stylesheets/responsive/_global_style.scss
+++ b/app/assets/stylesheets/responsive/_global_style.scss
@@ -222,4 +222,7 @@ div.pagination {
}
-
+/* Search result highlighting */
+.highlight {
+ background:#FF0;
+}
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index fc291d998..5c45a6e6e 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.rb
@@ -199,7 +199,7 @@ class AdminRequestController < AdminController
end
# Bejeeps, look, sometimes a URL is something that belongs in a controller, jesus.
- # XXX hammer this square peg into the round MVC hole
+ # TODO: hammer this square peg into the round MVC hole
post_redirect = PostRedirect.new(
:uri => upload_response_url(:url_title => info_request.url_title),
:user_id => user.id)
@@ -253,7 +253,7 @@ class AdminRequestController < AdminController
end
info_request_event.described_state = 'waiting_clarification'
info_request_event.calculated_state = 'waiting_clarification'
- # XXX deliberately don't update described_at so doesn't reenter search?
+ # TODO: deliberately don't update described_at so doesn't reenter search?
info_request_event.save!
flash[:notice] = "Old response marked as having been a clarification"
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 78a82316a..0c5f5bd02 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -278,10 +278,10 @@ class ApplicationController < ActionController::Base
session[:post_redirect_token] = post_redirect.token
- # XXX what is the built in Ruby URI munging function that can do this
+ # TODO: what is the built in Ruby URI munging function that can do this
# choice of & vs. ? more elegantly than this dumb if statement?
if uri.include?("?")
- # XXX This looks odd. What would a fragment identifier be doing server-side?
+ # TODO: This looks odd. What would a fragment identifier be doing server-side?
# But it also looks harmless, so I’ll leave it just in case.
if uri.include?("#")
uri.sub!("#", "&post_redirect=1#")
diff --git a/app/controllers/comment_controller.rb b/app/controllers/comment_controller.rb
index 5e39c3a2c..2c0037577 100644
--- a/app/controllers/comment_controller.rb
+++ b/app/controllers/comment_controller.rb
@@ -21,7 +21,7 @@ class CommentController < ApplicationController
end
if params[:comment]
- # XXX this check should theoretically be a validation rule in the model
+ # TODO: this check should theoretically be a validation rule in the model
@existing_comment = Comment.find_existing(@info_request.id, params[:comment][:body])
else
# Default to subscribing to request when first viewing form
diff --git a/app/controllers/general_controller.rb b/app/controllers/general_controller.rb
index e2a2190b0..158492eb2 100644
--- a/app/controllers/general_controller.rb
+++ b/app/controllers/general_controller.rb
@@ -59,7 +59,7 @@ class GeneralController < ApplicationController
# Actual search
def search
- # XXX Why is this so complicated with arrays and stuff? Look at the route
+ # TODO: Why is this so complicated with arrays and stuff? Look at the route
# in config/routes.rb for comments.
combined = params[:combined].split("/")
@sortby = nil
@@ -70,7 +70,7 @@ class GeneralController < ApplicationController
else
@advanced = false
end
- # XXX currently /described isn't linked to anywhere, just used in RSS and for /list/successful
+ # TODO: currently /described isn't linked to anywhere, just used in RSS and for /list/successful
# This is because it's confusingly different from /newest - but still useful for power users.
if combined.size > 0 && (['newest', 'described', 'relevant'].include?(combined[-1]))
@sort_postfix = combined.pop
@@ -124,7 +124,7 @@ class GeneralController < ApplicationController
end
end
- # Query each type separately for separate display (XXX we are calling
+ # Query each type separately for separate display (TODO: we are calling
# perform_search multiple times and it clobbers per_page for each one,
# so set as separate var)
requests_per_page = params[:requests_per_page] ? params[:requests_per_page].to_i : 25
@@ -159,7 +159,7 @@ class GeneralController < ApplicationController
end
# Spelling and highight words are same for all three queries
- @highlight_words = @request_for_spelling.words_to_highlight
+ @highlight_words = @request_for_spelling.words_to_highlight(:regex => true, :include_original => true)
if !(@request_for_spelling.spelling_correction =~ /[a-z]+:/)
@spelling_correction = @request_for_spelling.spelling_correction
end
diff --git a/app/controllers/public_body_controller.rb b/app/controllers/public_body_controller.rb
index 96e69d333..d2c84d820 100644
--- a/app/controllers/public_body_controller.rb
+++ b/app/controllers/public_body_controller.rb
@@ -5,12 +5,11 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
-require 'fastercsv'
require 'confidence_intervals'
require 'tempfile'
class PublicBodyController < ApplicationController
- # XXX tidy this up with better error messages, and a more standard infrastructure for the redirect to canonical URL
+ # TODO: tidy this up with better error messages, and a more standard infrastructure for the redirect to canonical URL
def show
long_cache
if MySociety::Format.simplify_url_part(params[:url_name], 'body') != params[:url_name]
@@ -43,7 +42,7 @@ class PublicBodyController < ApplicationController
query = InfoRequestEvent.make_query_from_params(params.merge(:latest_status => @view))
query += " requested_from:#{@public_body.url_name}"
# Use search query for this so can collapse and paginate easily
- # XXX really should just use SQL query here rather than Xapian.
+ # TODO: really should just use SQL query here rather than Xapian.
sortby = "described"
begin
@xapian_requests = perform_search([InfoRequestEvent], query, sortby, 'request_collapse')
@@ -86,7 +85,7 @@ class PublicBodyController < ApplicationController
def list
long_cache
- # XXX move some of these tag SQL queries into has_tag_string.rb
+ # TODO: move some of these tag SQL queries into has_tag_string.rb
like_query = params[:public_body_query]
like_query = "" if like_query.nil?
@@ -191,6 +190,9 @@ class PublicBodyController < ApplicationController
redirect_to list_public_bodies_url(:tag => @tag)
end
+ # GET /body/all-authorities.csv
+ #
+ # Returns all public bodies (except for the internal admin authority) as CSV
def list_all_csv
# FIXME: this is just using the download directory for zip
# archives, since we know that is allowed for X-Sendfile and
@@ -198,21 +200,29 @@ class PublicBodyController < ApplicationController
# used for the zips. However, really there should be a
# generically named downloads directory that contains all
# kinds of downloadable assets.
- download_directory = File.join(InfoRequest.download_zip_dir(),
- 'download')
- FileUtils.mkdir_p download_directory
+ download_directory = File.join(InfoRequest.download_zip_dir, 'download')
+ FileUtils.mkdir_p(download_directory)
output_leafname = 'all-authorities.csv'
- output_filename = File.join download_directory, output_leafname
+ output_filename = File.join(download_directory, output_leafname)
# Create a temporary file in the same directory, so we can
# rename it atomically to the intended filename:
- tmp = Tempfile.new output_leafname, download_directory
+ tmp = Tempfile.new(output_leafname, download_directory)
tmp.close
- # Export all the public bodies to that temporary path and make
- # it readable:
- PublicBody.export_csv tmp.path
- FileUtils.chmod 0644, tmp.path
- # Rename into place and send the file:
- File.rename tmp.path, output_filename
+
+ # Create the CSV
+ csv = PublicBodyCSV.new
+ PublicBody.visible.find_each(:include => [:translations, :tags]) do |public_body|
+ next if public_body.site_administration?
+ csv << public_body
+ end
+
+ # Export all the public bodies to that temporary path, make it readable,
+ # and rename it
+ File.open(tmp.path, 'w') { |file| file.write(csv.generate) }
+ FileUtils.chmod(0644, tmp.path)
+ File.rename(tmp.path, output_filename)
+
+ # Send the file
send_file(output_filename,
:type => 'text/csv; charset=utf-8; header=present',
:filename => 'all-authorities.csv',
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index 55a03e7b4..6281959fb 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -310,7 +310,7 @@ class RequestController < ApplicationController
end
# See if the exact same request has already been submitted
- # XXX this check should theoretically be a validation rule in the
+ # TODO: this check should theoretically be a validation rule in the
# model, except we really want to pass @existing_request to the view so
# it can link to it.
@existing_request = InfoRequest.find_existing(params[:info_request][:title], params[:info_request][:public_body_id], params[:outgoing_message][:body])
@@ -365,7 +365,7 @@ class RequestController < ApplicationController
end
# This automatically saves dependent objects, such as @outgoing_message, in the same transaction
@info_request.save!
- # XXX send_message needs the database id, so we send after saving, which isn't ideal if the request broke here.
+ # TODO: send_message needs the database id, so we send after saving, which isn't ideal if the request broke here.
@outgoing_message.send_message
flash[:notice] = _("<p>Your {{law_used_full}} request has been <strong>sent on its way</strong>!</p>
<p><strong>We will email you</strong> when there is a response, or after {{late_number_of_days}} working days if the authority still hasn't
@@ -543,7 +543,7 @@ class RequestController < ApplicationController
elsif @info_request_event.is_outgoing_message?
redirect_to outgoing_message_url(@info_request_event.outgoing_message), :status => :moved_permanently
else
- # XXX maybe there are better URLs for some events than this
+ # TODO: maybe there are better URLs for some events than this
redirect_to request_url(@info_request_event.info_request), :status => :moved_permanently
end
end
@@ -1012,7 +1012,7 @@ class RequestController < ApplicationController
params[:info_request][:public_body] = PublicBody.find(params[:url_name])
else
public_body = PublicBody.find_by_url_name_with_historic(params[:url_name])
- raise ActiveRecord::RecordNotFound.new("None found") if public_body.nil? # XXX proper 404
+ raise ActiveRecord::RecordNotFound.new("None found") if public_body.nil? # TODO: proper 404
params[:info_request][:public_body] = public_body
end
elsif params[:public_body_id]
diff --git a/app/controllers/services_controller.rb b/app/controllers/services_controller.rb
index 97c47c448..dc4f783a6 100644
--- a/app/controllers/services_controller.rb
+++ b/app/controllers/services_controller.rb
@@ -31,7 +31,7 @@ class ServicesController < ApplicationController
FastGettext.locale = old_fgt_locale
end
end
- render :text => text, :content_type => "text/plain" # XXX workaround the HTML validation in test suite
+ render :text => text, :content_type => "text/plain" # TODO: workaround the HTML validation in test suite
end
def hidden_user_explanation
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb
index dccc52efc..83700a55b 100644
--- a/app/controllers/track_controller.rb
+++ b/app/controllers/track_controller.rb
@@ -82,7 +82,7 @@ class TrackController < ApplicationController
def track_search_query
@query = params[:query_array]
- # XXX more hackery to make alternate formats still work with query_array
+ # TODO: more hackery to make alternate formats still work with query_array
if /^(.*)\.json$/.match(@query)
@query = $1
params[:format] = "json"
@@ -154,7 +154,15 @@ class TrackController < ApplicationController
request.format = 'xml' unless params[:format]
respond_to do |format|
format.json { render :json => @xapian_object.results.map { |r| r[:model].json_for_api(true,
- lambda { |t| view_context.highlight_and_excerpt(t, @xapian_object.words_to_highlight, 150) }
+ lambda do |t|
+ view_context.highlight_and_excerpt(
+ t,
+ @xapian_object.words_to_highlight(
+ :regex => true,
+ :include_original => true),
+ 150
+ )
+ end
) } }
format.any { render :template => 'track/atom_feed',
:formats => ['atom'],
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb
index 12207362b..fcc500e06 100644
--- a/app/controllers/user_controller.rb
+++ b/app/controllers/user_controller.rb
@@ -46,7 +46,7 @@ class UserController < ApplicationController
@is_you = !@user.nil? && @user.id == @display_user.id
# Use search query for this so can collapse and paginate easily
- # XXX really should just use SQL query here rather than Xapian.
+ # TODO: really should just use SQL query here rather than Xapian.
if @show_requests
begin
requests_query = 'requested_by:' + @display_user.url_name
@@ -102,11 +102,11 @@ class UserController < ApplicationController
@is_you = !@user.nil? && @user.id == @display_user.id
feed_results = Set.new
# Use search query for this so can collapse and paginate easily
- # XXX really should just use SQL query here rather than Xapian.
+ # TODO: really should just use SQL query here rather than Xapian.
begin
requests_query = 'requested_by:' + @display_user.url_name
comments_query = 'commented_by:' + @display_user.url_name
- # XXX combine these as OR query
+ # TODO: combine these as OR query
@xapian_requests = perform_search([InfoRequestEvent], requests_query, 'newest', 'request_collapse')
@xapian_comments = perform_search([InfoRequestEvent], comments_query, 'newest', nil)
rescue
@@ -121,7 +121,7 @@ class UserController < ApplicationController
if @is_you
@track_things = TrackThing.find(:all, :conditions => ["tracking_user_id = ? and track_medium = ?", @display_user.id, 'email_daily'], :order => 'created_at desc')
for track_thing in @track_things
- # XXX factor out of track_mailer.rb
+ # TODO: factor out of track_mailer.rb
xapian_object = ActsAsXapian::Search.new([InfoRequestEvent], track_thing.track_query,
:sort_by_prefix => 'described_at',
:sort_by_ascending => true,
@@ -262,7 +262,7 @@ class UserController < ApplicationController
end
end
- # Change password (XXX and perhaps later email) - requires email authentication
+ # Change password (TODO: and perhaps later email) - requires email authentication
def signchangepassword
if @user and ((not session[:user_circumstance]) or (session[:user_circumstance] != "change_password"))
# Not logged in via email, so send confirmation
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 33525cb3d..49ce94951 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -13,12 +13,18 @@ module ApplicationHelper
# all of all.
include LinkToHelper
+ # Some extra date and time formatters
+ include DateTimeHelper
+
# Site-wide access to configuration settings
include ConfigHelper
# Useful for sending emails
include MailerHelper
+ # Extra highlight helpers
+ include HighlightHelper
+
# Copied from error_messages_for in active_record_helper.rb
def foi_error_messages_for(*params)
options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
@@ -51,25 +57,6 @@ module ApplicationHelper
end
end
- # Highlight words, also escapes HTML (other than spans that we add)
- def highlight_words(t, words, html = true)
- if html
- highlight(h(t), words, :highlighter => '<span class="highlight">\1</span>').html_safe
- else
- highlight(t, words, :highlighter => '*\1*')
- end
- end
-
- def highlight_and_excerpt(t, words, excount, html = true)
- newt = excerpt(t, words[0], :radius => excount)
- if not newt
- newt = excerpt(t, '', :radius => excount)
- end
- t = newt
- t = highlight_words(t, words, html)
- return t
- end
-
def locale_name(locale)
return LanguageNames::get_language_name(locale)
end
diff --git a/app/helpers/date_time_helper.rb b/app/helpers/date_time_helper.rb
new file mode 100644
index 000000000..5f129e590
--- /dev/null
+++ b/app/helpers/date_time_helper.rb
@@ -0,0 +1,69 @@
+module DateTimeHelper
+ # Public: Usually-correct format for a DateTime-ish object
+ # To define a new new format define the `simple_date_{FORMAT}` method
+ #
+ # date - a DateTime, Date or Time
+ # opts - a Hash of options (default: { format: :html})
+ # :format - :html returns a HTML <time> tag
+ # :text returns a plain String
+ #
+ # Examples
+ #
+ # simple_date(Time.now)
+ # # => "<time>..."
+ #
+ # simple_date(Time.now, :format => :text)
+ # # => "March 10, 2014"
+ #
+ # Returns a String
+ # Raises ArgumentError if the format is unrecognized
+ def simple_date(date, opts = {})
+ opts = { :format => :html }.merge(opts)
+ date_formatter = "simple_date_#{ opts[:format] }"
+
+ if respond_to?(date_formatter)
+ send(date_formatter, date)
+ else
+ raise ArgumentError, "Unrecognized format :#{ opts[:format] }"
+ end
+ end
+
+ # Usually-correct HTML formatting of a DateTime-ish object
+ # Use LinkToHelper#simple_date with desired formatting options
+ #
+ # date - a DateTime, Date or Time
+ #
+ # Returns a String
+ def simple_date_html(date)
+ date = date.in_time_zone unless date.is_a?(Date)
+ time_tag date, simple_date_text(date), :title => date.to_s
+ end
+
+ # Usually-correct plain text formatting of a DateTime-ish object
+ # Use LinkToHelper#simple_date with desired formatting options
+ #
+ # date - a DateTime, Date or Time
+ #
+ # Returns a String
+ def simple_date_text(date)
+ date = date.in_time_zone.to_date unless date.is_a? Date
+
+ date_format = _('simple_date_format')
+ date_format = :long if date_format == 'simple_date_format'
+ I18n.l(date, :format => date_format)
+ end
+
+ # Strips the date from a DateTime
+ #
+ # date - a DateTime, Date or Time
+ #
+ # Examples
+ #
+ # simple_time(Time.now)
+ # # => "10:46:54"
+ #
+ # Returns a String
+ def simple_time(date)
+ date.strftime("%H:%M:%S").strip
+ end
+end
diff --git a/app/helpers/highlight_helper.rb b/app/helpers/highlight_helper.rb
new file mode 100644
index 000000000..a98f6f320
--- /dev/null
+++ b/app/helpers/highlight_helper.rb
@@ -0,0 +1,98 @@
+module HighlightHelper
+ include ERB::Util
+
+ # Implementation of rails' highlight that allows regex to be passed to
+ # the phrases parameter.
+ # https://github.com/rails/rails/pull/11793
+ def highlight_matches(text, phrases, options = {})
+ text = ActionController::Base.helpers.sanitize(text).try(:html_safe) if options.fetch(:sanitize, true)
+
+ if text.blank? || phrases.blank?
+ text
+ else
+ match = Array(phrases).map do |p|
+ Regexp === p ? p.to_s : Regexp.escape(p)
+ end.join('|')
+
+ if block_given?
+ text.gsub(/(#{match})(?![^<]*?>)/i) { |found| yield found }
+ else
+ highlighter = options.fetch(:highlighter, '<mark>\1</mark>')
+ text.gsub(/(#{match})(?![^<]*?>)/i, highlighter)
+ end
+ end.html_safe
+ end
+
+ # Highlight words, also escapes HTML (other than spans that we add)
+ def highlight_words(t, words, html = true)
+ if html
+ highlight_matches(h(t), words, :highlighter => '<span class="highlight">\1</span>').html_safe
+ else
+ highlight_matches(t, words, :highlighter => '*\1*')
+ end
+ end
+
+ def highlight_and_excerpt(t, words, excount, html = true)
+ newt = excerpt(t, words[0], :radius => excount)
+ if not newt
+ newt = excerpt(t, '', :radius => excount)
+ end
+ t = newt
+ t = highlight_words(t, words, html)
+ return t
+ end
+
+ def excerpt(text, phrase, options = {})
+ return unless text && phrase
+
+ separator = options.fetch(:separator, nil) || ""
+ case phrase
+ when Regexp
+ regex = phrase
+ else
+ regex = /#{Regexp.escape(phrase)}/i
+ end
+
+ return unless matches = text.match(regex)
+ phrase = matches[0]
+
+ unless separator.empty?
+ text.split(separator).each do |value|
+ if value.match(regex)
+ regex = phrase = value
+ break
+ end
+ end
+ end
+
+ first_part, second_part = text.split(phrase, 2)
+
+ prefix, first_part = cut_excerpt_part(:first, first_part, separator, options)
+ postfix, second_part = cut_excerpt_part(:second, second_part, separator, options)
+
+ affix = [first_part, separator, phrase, separator, second_part].join.strip
+ [prefix, affix, postfix].join
+ end
+
+ private
+
+ def cut_excerpt_part(part_position, part, separator, options)
+ return "", "" unless part
+
+ radius = options.fetch(:radius, 100)
+ omission = options.fetch(:omission, "...")
+
+ part = part.split(separator)
+ part.delete("")
+ affix = part.size > radius ? omission : ""
+
+ part = if part_position == :first
+ drop_index = [part.length - radius, 0].max
+ part.drop(drop_index)
+ else
+ part.first(radius)
+ end
+
+ return affix, part.join(separator)
+ end
+end
diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb
index dd6ffa805..3709469cf 100755
--- a/app/helpers/link_to_helper.rb
+++ b/app/helpers/link_to_helper.rb
@@ -28,19 +28,19 @@ module LinkToHelper
# Incoming / outgoing messages
def incoming_message_url(incoming_message, options = {})
- return request_url(incoming_message.info_request, options.merge(:anchor => "incoming-#{incoming_message.id}"))
+ message_url(incoming_message, options)
end
def incoming_message_path(incoming_message)
- incoming_message_url(incoming_message, :only_path => true)
+ message_path(incoming_message)
end
def outgoing_message_url(outgoing_message, options = {})
- request_url(outgoing_message.info_request, options.merge(:anchor => "outgoing-#{outgoing_message.id}"))
+ message_url(outgoing_message, options)
end
def outgoing_message_path(outgoing_message)
- outgoing_message_url(outgoing_message, :only_path => true)
+ message_path(outgoing_message)
end
def comment_url(comment, options = {})
@@ -279,73 +279,30 @@ module LinkToHelper
end
end
- # Public: Usually-correct format for a DateTime-ish object
- # To define a new new format define the `simple_date_{FORMAT}` method
- #
- # date - a DateTime, Date or Time
- # opts - a Hash of options (default: { format: :html})
- # :format - :html returns a HTML <time> tag
- # :text returns a plain String
- #
- # Examples
- #
- # simple_date(Time.now)
- # # => "<time>..."
- #
- # simple_date(Time.now, :format => :text)
- # # => "March 10, 2014"
- #
- # Returns a String
- # Raises ArgumentError if the format is unrecognized
- def simple_date(date, opts = {})
- opts = { :format => :html }.merge(opts)
- date_formatter = "simple_date_#{ opts[:format] }"
-
- if respond_to?(date_formatter)
- send(date_formatter, date)
- else
- raise ArgumentError, "Unrecognised format :#{ opts[:format] }"
- end
- end
+ #I18n locale switcher
- # Usually-correct HTML formatting of a DateTime-ish object
- # Use LinkToHelper#simple_date with desired formatting options
- #
- # date - a DateTime, Date or Time
- #
- # Returns a String
- def simple_date_html(date)
- date = date.in_time_zone unless date.is_a? Date
- time_tag date, simple_date_text(date), :title => date.to_s
+ def locale_switcher(locale, params)
+ params['locale'] = locale
+ return url_for(params)
end
- # Usually-correct plain text formatting of a DateTime-ish object
- # Use LinkToHelper#simple_date with desired formatting options
- #
- # date - a DateTime, Date or Time
- #
- # Returns a String
- def simple_date_text(date)
- date = date.in_time_zone.to_date unless date.is_a? Date
+ private
- date_format = _("simple_date_format")
- date_format = :long if date_format == "simple_date_format"
- I18n.l(date, :format => date_format)
- end
+ # Private: Generate a request_url linking to the new correspondence
+ def message_url(message, options = {})
+ message_type = message.class.to_s.gsub('Message', '').downcase
- def simple_time(date)
- return date.strftime("%H:%M:%S").strip
- end
+ default_options = { :anchor => "#{ message_type }-#{ message.id }" }
- def year_from_date(date)
- return date.strftime("%Y").strip
- end
+ if options.delete(:cachebust)
+ default_options.merge!(:nocache => "#{ message_type }-#{ message.id }")
+ end
- #I18n locale switcher
+ request_url(message.info_request, options.merge(default_options))
+ end
- def locale_switcher(locale, params)
- params['locale'] = locale
- return url_for(params)
+ def message_path(message)
+ message_url(message, :only_path => true)
end
end
diff --git a/app/mailers/outgoing_mailer.rb b/app/mailers/outgoing_mailer.rb
index 083c05a7c..797bf9fdd 100644
--- a/app/mailers/outgoing_mailer.rb
+++ b/app/mailers/outgoing_mailer.rb
@@ -8,7 +8,7 @@
# separated) paragraphs, as is the convention for all the other mailers. This
# turned out to fit better with user exepectations when formatting messages.
#
-# XXX The other mail templates are written to use blank line separated
+# TODO: The other mail templates are written to use blank line separated
# paragraphs. They could be rewritten, and the wrapping method made uniform
# throughout the application.
@@ -35,10 +35,10 @@ class OutgoingMailer < ApplicationMailer
:subject => OutgoingMailer.subject_for_followup(info_request, outgoing_message))
end
- # XXX the condition checking valid_to_reply_to? also appears in views/request/_followup.html.erb,
+ # TODO: the condition checking valid_to_reply_to? also appears in views/request/_followup.html.erb,
# it shouldn't really, should call something here.
- # XXX also OutgoingMessage.get_salutation
- # XXX these look like they should be members of IncomingMessage, but logically they
+ # TODO: also OutgoingMessage.get_salutation
+ # TODO: these look like they should be members of IncomingMessage, but logically they
# need to work even when IncomingMessage is nil
def OutgoingMailer.name_and_email_for_followup(info_request, incoming_message_followup)
if incoming_message_followup.nil? || !incoming_message_followup.valid_to_reply_to?
diff --git a/app/mailers/request_mailer.rb b/app/mailers/request_mailer.rb
index 1fd5b9ba7..768257ba8 100644
--- a/app/mailers/request_mailer.rb
+++ b/app/mailers/request_mailer.rb
@@ -71,7 +71,7 @@ class RequestMailer < ApplicationMailer
def new_response(info_request, incoming_message)
# Don't use login link here, just send actual URL. This is
# because people tend to forward these emails amongst themselves.
- @url = incoming_message_url(incoming_message)
+ @url = incoming_message_url(incoming_message, :cachebust => true)
@incoming_message, @info_request = incoming_message, info_request
headers('Return-Path' => blackhole_email,
@@ -234,7 +234,7 @@ class RequestMailer < ApplicationMailer
def requests_matching_email(email)
# We deliberately don't use Envelope-to here, so ones that are BCC
# drop into the holding pen for checking.
- reply_info_requests = [] # XXX should be set?
+ reply_info_requests = [] # TODO: should be set?
for address in (email.to || []) + (email.cc || [])
reply_info_request = InfoRequest.find_by_incoming_email(address)
reply_info_requests.push(reply_info_request) if reply_info_request
@@ -362,7 +362,7 @@ class RequestMailer < ApplicationMailer
store_sent.user = info_request.user
store_sent.alert_type = type_code
store_sent.info_request_event_id = alert_event_id
- # XXX uses same template for reminder 1 and reminder 2 right now.
+ # TODO: uses same template for reminder 1 and reminder 2 right now.
RequestMailer.new_response_reminder_alert(info_request, last_response_message).deliver
store_sent.save!
end
@@ -405,7 +405,7 @@ class RequestMailer < ApplicationMailer
# cron jobs broke for more than a month events would be lost, but no
# matter. I suspect the performance gain will be needed (with an index on updated_at)
- # XXX the :order part info_request_events.created_at is a work around
+ # TODO: the :order part info_request_events.created_at is a work around
# for a very old Rails bug which means eager loading does not respect
# association orders.
# http://dev.rubyonrails.org/ticket/3438
diff --git a/app/models/comment.rb b/app/models/comment.rb
index b4c099123..a62c086d5 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -63,7 +63,7 @@ class Comment < ActiveRecord::Base
# When posting a new comment, use this to check user hasn't double submitted.
def Comment.find_existing(info_request_id, body)
- # XXX can add other databases here which have regexp_replace
+ # TODO: can add other databases here which have regexp_replace
if ActiveRecord::Base.connection.adapter_name == "PostgreSQL"
# Exclude spaces from the body comparison using regexp_replace
return Comment.find(:first, :conditions => [ "info_request_id = ? and regexp_replace(body, '[[:space:]]', '', 'g') = regexp_replace(?, '[[:space:]]', '', 'g')", info_request_id, body ])
diff --git a/app/models/foi_attachment.rb b/app/models/foi_attachment.rb
index 6f198249a..a8d105f52 100644
--- a/app/models/foi_attachment.rb
+++ b/app/models/foi_attachment.rb
@@ -178,7 +178,7 @@ class FoiAttachment < ActiveRecord::Base
return filename
end
- # XXX changing this will break existing URLs, so have a care - maybe
+ # TODO: changing this will break existing URLs, so have a care - maybe
# make another old_display_filename see above
def display_filename
filename = self.filename
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index 124db8d4a..135a6bdaf 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -150,7 +150,7 @@ class IncomingMessage < ActiveRecord::Base
end
# The cached fields mentioned in the previous comment
- # XXX there must be a nicer way to do this without all that
+ # TODO: there must be a nicer way to do this without all that
# repetition. I tried overriding method_missing but got some
# unpredictable results.
def valid_to_reply_to
@@ -194,7 +194,7 @@ class IncomingMessage < ActiveRecord::Base
end
# And look up by URL part number and display filename to get an attachment
- # XXX relies on extract_attachments calling MailHandler.ensure_parts_counted
+ # TODO: relies on extract_attachments calling MailHandler.ensure_parts_counted
# The filename here is passed from the URL parameter, so it's the
# display_filename rather than the real filename.
def self.get_attachment_by_url_part_number_and_filename(attachments, found_url_part_number, display_filename)
@@ -220,7 +220,7 @@ class IncomingMessage < ActiveRecord::Base
# Converts email addresses we know about into textual descriptions of them
def mask_special_emails!(text)
- # XXX can later display some of these special emails as actual emails,
+ # TODO: can later display some of these special emails as actual emails,
# if they are public anyway. For now just be precautionary and only
# put in descriptions of them in square brackets.
if self.info_request.public_body.is_followupable?
@@ -368,8 +368,8 @@ class IncomingMessage < ActiveRecord::Base
# Remove quoted sections from emails (eventually the aim would be for this
- # to do as good a job as GMail does) XXX bet it needs a proper parser
- # XXX and this FOLDED_QUOTED_SECTION stuff is a mess
+ # to do as good a job as GMail does) TODO: bet it needs a proper parser
+ # TODO: and this FOLDED_QUOTED_SECTION stuff is a mess
def self.remove_quoted_sections(text, replacement = "FOLDED_QUOTED_SECTION")
text = text.dup
replacement = "\n" + replacement + "\n"
@@ -399,7 +399,7 @@ class IncomingMessage < ActiveRecord::Base
(
\s*#{score}\n(?:(?!#{score}\n).)*? # top line
(disclaimer:\n|confidential|received\sthis\semail\sin\serror|virus|intended\s+recipient|monitored\s+centrally|intended\s+(for\s+|only\s+for\s+use\s+by\s+)the\s+addressee|routinely\s+monitored|MessageLabs|unauthorised\s+use)
- .*?(?:#{score}|\z) # bottom line OR end of whole string (for ones with no terminator XXX risky)
+ .*?(?:#{score}|\z) # bottom line OR end of whole string (for ones with no terminator TODO: risky)
)
/imx, replacement)
end
@@ -480,7 +480,7 @@ class IncomingMessage < ActiveRecord::Base
# Returns body text from main text part of email, converted to UTF-8, with uudecode removed,
# emails and privacy sensitive things remove, censored, and folded to remove excess quoted text
# (marked with FOLDED_QUOTED_SECTION)
- # XXX returns a .dup of the text, so calling functions can in place modify it
+ # TODO: returns a .dup of the text, so calling functions can in place modify it
def get_main_body_text_folded
if self.cached_main_body_text_folded.nil?
self._cache_main_body_text
@@ -511,7 +511,7 @@ class IncomingMessage < ActiveRecord::Base
source_charset = part.charset
if part.content_type == 'text/html'
# e.g. http://www.whatdotheyknow.com/request/35/response/177
- # XXX This is a bit of a hack as it is calling a
+ # TODO: This is a bit of a hack as it is calling a
# convert to text routine. Could instead call a
# sanitize HTML one.
@@ -627,7 +627,7 @@ class IncomingMessage < ActiveRecord::Base
return nil
end
# otherwise return it assuming it is text (sometimes you get things
- # like binary/octet-stream, or the like, which are really text - XXX if
+ # like binary/octet-stream, or the like, which are really text - TODO: if
# you find an example, put URL here - perhaps we should be always returning
# nil in this case)
return p
@@ -722,7 +722,7 @@ class IncomingMessage < ActiveRecord::Base
text = get_main_body_text_unfolded
folded_quoted_text = get_main_body_text_folded
- # Remove quoted sections, adding HTML. XXX The FOLDED_QUOTED_SECTION is
+ # Remove quoted sections, adding HTML. TODO: The FOLDED_QUOTED_SECTION is
# a nasty hack so we can escape other HTML before adding the unfold
# links, without escaping them. Rather than using some proper parser
# making a tree structure (I don't know of one that is to hand, that
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 47ad435cb..a2112a210 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -387,16 +387,16 @@ public
# When constructing a new request, use this to check user hasn't double submitted.
- # XXX could have a date range here, so say only check last month's worth of new requests. If somebody is making
+ # TODO: could have a date range here, so say only check last month's worth of new requests. If somebody is making
# repeated requests, say once a quarter for time information, then might need to do that.
- # XXX this *should* also check outgoing message joined to is an initial
+ # TODO: this *should* also check outgoing message joined to is an initial
# request (rather than follow up)
def InfoRequest.find_existing(title, public_body_id, body)
return InfoRequest.find(:first, :conditions => [ "title = ? and public_body_id = ? and outgoing_messages.body = ?", title, public_body_id, body ], :include => [ :outgoing_messages ] )
end
def find_existing_outgoing_message(body)
- # XXX can add other databases here which have regexp_replace
+ # TODO: can add other databases here which have regexp_replace
if ActiveRecord::Base.connection.adapter_name == "PostgreSQL"
# Exclude spaces from the body comparison using regexp_replace
return self.outgoing_messages.find(:first, :conditions => [ "regexp_replace(outgoing_messages.body, '[[:space:]]', '', 'g') = regexp_replace(?, '[[:space:]]', '', 'g')", body ])
@@ -658,7 +658,7 @@ public
event.last_described_at = Time.now()
event.save!
end
- if event.last_described_at.nil? # XXX actually maybe this isn't needed
+ if event.last_described_at.nil? # TODO: actually maybe this isn't needed
event.last_described_at = Time.now()
event.save!
end
@@ -713,7 +713,7 @@ public
elsif event.event_type == 'resent'
last_sent = event
elsif expecting_clarification and event.event_type == 'followup_sent'
- # XXX this needs to cope with followup_resent, which it doesn't.
+ # TODO: this needs to cope with followup_resent, which it doesn't.
# Not really easy to do, and only affects cases where followups
# were resent after a clarification.
last_sent = event
diff --git a/app/models/info_request_event.rb b/app/models/info_request_event.rb
index 5eed5ba83..9dde3ba80 100644
--- a/app/models/info_request_event.rb
+++ b/app/models/info_request_event.rb
@@ -75,7 +75,7 @@ class InfoRequestEvent < ActiveRecord::Base
:values => [
[ :created_at, 0, "range_search", :date ], # for QueryParser range searches e.g. 01/01/2008..14/01/2008
[ :created_at_numeric, 1, "created_at", :number ], # for sorting
- [ :described_at_numeric, 2, "described_at", :number ], # XXX using :number for lack of :datetime support in Xapian values
+ [ :described_at_numeric, 2, "described_at", :number ], # TODO: using :number for lack of :datetime support in Xapian values
[ :request, 3, "request_collapse", :string ],
[ :request_title_collapse, 4, "request_title_collapse", :string ],
],
@@ -174,7 +174,7 @@ class InfoRequestEvent < ActiveRecord::Base
end
def get_clipped_response_efficiently
- # XXX this ugly code is an attempt to not always load all the
+ # TODO: this ugly code is an attempt to not always load all the
# columns for an incoming message, which can be *very* large
# (due to all the cached text). We care particularly in this
# case because it's called for every search result on a page
@@ -266,7 +266,7 @@ class InfoRequestEvent < ActiveRecord::Base
# We store YAML version of parameters in the database
def params=(params)
- # XXX should really set these explicitly, and stop storing them in
+ # TODO: should really set these explicitly, and stop storing them in
# here, but keep it for compatibility with old way for now
if not params[:incoming_message_id].nil?
self.incoming_message_id = params[:incoming_message_id]
@@ -392,7 +392,7 @@ class InfoRequestEvent < ActiveRecord::Base
:outgoing_message_id => self.outgoing_message_id,
:comment_id => self.comment_id,
- # XXX would be nice to add links here, but alas the
+ # TODO: would be nice to add links here, but alas the
# code to make them is in views only. See views/request/details.html.erb
# perhaps can call with @template somehow
}
diff --git a/app/models/mail_server_log.rb b/app/models/mail_server_log.rb
index 0e5b60ff1..07d2fdac0 100644
--- a/app/models/mail_server_log.rb
+++ b/app/models/mail_server_log.rb
@@ -166,7 +166,7 @@ class MailServerLog < ActiveRecord::Base
# lines. Writes any errors to STDERR. This check is really mainly to
# check the envelope from is the request address, as Ruby is quite
# flaky with regard to that, and it is important for anti-spam reasons.
- # XXX does this really check that, as the log just wouldn't pick
+ # TODO: does this really check that, as the log just wouldn't pick
# up at all if the requests weren't sent that way as there would be
# no request- email in it?
#
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index a435511d3..160f69d0b 100644
--- a/app/models/outgoing_message.rb
+++ b/app/models/outgoing_message.rb
@@ -125,7 +125,7 @@ class OutgoingMessage < ActiveRecord::Base
get_salutation + "\n\n" + get_default_letter + "\n\n" + get_signoff + "\n\n"
end
def set_signature_name(name)
- # XXX We use raw_body here to get unstripped one
+ # TODO: We use raw_body here to get unstripped one
if self.raw_body == self.get_default_message
self.body = self.raw_body + name
end
diff --git a/app/models/post_redirect.rb b/app/models/post_redirect.rb
index 5da3d2742..6f288b471 100644
--- a/app/models/post_redirect.rb
+++ b/app/models/post_redirect.rb
@@ -65,7 +65,7 @@ class PostRedirect < ActiveRecord::Base
# Used by (rspec) test code only
def self.get_last_post_redirect
- # XXX yeuch - no other easy way of getting the token so we can check
+ # TODO: yeuch - no other easy way of getting the token so we can check
# the redirect URL, as it is by definition opaque to the controller
# apart from in the place that it redirects to.
post_redirects = PostRedirect.find_by_sql("select * from post_redirects order by id desc limit 1")
diff --git a/app/models/profile_photo.rb b/app/models/profile_photo.rb
index 6c3b2cfa0..3c0be222c 100644
--- a/app/models/profile_photo.rb
+++ b/app/models/profile_photo.rb
@@ -115,7 +115,7 @@ class ProfilePhoto < ActiveRecord::Base
return
end
- self.image = image_list[0] # XXX perhaps take largest image or somesuch if there were multiple in the file?
+ self.image = image_list[0] # TODO: perhaps take largest image or somesuch if there were multiple in the file?
self.convert_image
end
end
diff --git a/app/models/public_body.rb b/app/models/public_body.rb
index 03ec270ee..b22482541 100644
--- a/app/models/public_body.rb
+++ b/app/models/public_body.rb
@@ -93,7 +93,7 @@ class PublicBody < ActiveRecord::Base
self.translations.find_by_locale(locale)
end
- # XXX - Don't like repeating this!
+ # TODO: - Don't like repeating this!
def calculate_cached_fields(t)
PublicBody.set_first_letter(t)
short_long_name = t.name
@@ -329,7 +329,7 @@ class PublicBody < ActiveRecord::Base
first = false
end
if html
- # XXX this should call proper route helpers, but is in model sigh
+ # TODO: this should call proper route helpers, but is in model sigh
desc = '<a href="/body/list/' + tag.name + '">' + desc + '</a>'
end
types.push(desc)
@@ -399,6 +399,9 @@ class PublicBody < ActiveRecord::Base
end
end
+ def site_administration?
+ has_tag?('site_administration')
+ end
class ImportCSVDryRun < StandardError
end
@@ -569,45 +572,6 @@ class PublicBody < ActiveRecord::Base
return [errors, notes]
end
- # Returns all public bodies (except for the internal admin authority) as csv
- def self.export_csv(output_filename)
- CSV.open(output_filename, "w") do |csv|
- csv << [
- 'Name',
- 'Short name',
- # deliberately not including 'Request email'
- 'URL name',
- 'Tags',
- 'Home page',
- 'Publication scheme',
- 'Disclosure log',
- 'Notes',
- 'Created at',
- 'Updated at',
- 'Version',
- ]
- PublicBody.visible.find_each(:include => [:translations, :tags]) do |public_body|
- # Skip bodies we use only for site admin
- next if public_body.has_tag?('site_administration')
- csv << [
- public_body.name,
- public_body.short_name,
- # DO NOT include request_email (we don't want to make it
- # easy to spam all authorities with requests)
- public_body.url_name,
- public_body.tag_string,
- public_body.calculated_home_page,
- public_body.publication_scheme,
- public_body.disclosure_log,
- public_body.notes,
- public_body.created_at,
- public_body.updated_at,
- public_body.version,
- ]
- end
- end
- end
-
# Does this user have the power of FOI officer for this body?
def is_foi_officer?(user)
user_domain = user.email_domain
diff --git a/app/models/track_thing.rb b/app/models/track_thing.rb
index 13b6f78dd..10ba28f4a 100644
--- a/app/models/track_thing.rb
+++ b/app/models/track_thing.rb
@@ -149,7 +149,7 @@ class TrackThing < ActiveRecord::Base
end
end
track_thing.track_query = query
- # XXX should extract requested_by:, request:, requested_from:
+ # TODO: should extract requested_by:, request:, requested_from:
# and stick their values into the respective relations.
# Should also update "params" to make the list_description
# nicer and more generic. It will need to do some clever
@@ -271,7 +271,7 @@ class TrackThing < ActiveRecord::Base
:web => _("To follow requests and responses matching your search"),
:email => _("Then you will be notified whenever a new request or response matches your search."),
:email_subject => _("Confirm you want to follow new requests or responses matching your search"),
- # RSS sorting - XXX hmmm, we don't really know which to use
+ # RSS sorting - TODO: hmmm, we don't really know which to use
# here for sorting. Might be a query term (e.g. 'cctv'), in
# which case newest is good, or might be something like
# all refused requests in which case want to sort by
diff --git a/app/models/user.rb b/app/models/user.rb
index d75622b37..4b83d8572 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -99,7 +99,7 @@ class User < ActiveRecord::Base
end
# Don't display any leading/trailing spaces
- # XXX we have strip_attributes! now, so perhaps this can be removed (might
+ # TODO: we have strip_attributes! now, so perhaps this can be removed (might
# be still needed for existing cases)
def name
name = read_attribute(:name)
@@ -222,7 +222,7 @@ class User < ActiveRecord::Base
# Can the user make new requests, without having to describe state of (most) existing ones?
def can_leave_requests_undescribed?
- # XXX should be flag in database really
+ # TODO: should be flag in database really
if self.url_name == "heather_brooke" || self.url_name == "heather_brooke_2"
return true
end
@@ -425,7 +425,7 @@ class User < ActiveRecord::Base
## Class methods
def User.encrypted_password(password, salt)
- string_to_hash = password + salt # XXX need to add a secret here too?
+ string_to_hash = password + salt # TODO: need to add a secret here too?
Digest::SHA1.hexdigest(string_to_hash)
end
diff --git a/app/views/general/_locale_switcher.html.erb b/app/views/general/_locale_switcher.html.erb
index 7d64c9069..7b6377665 100644
--- a/app/views/general/_locale_switcher.html.erb
+++ b/app/views/general/_locale_switcher.html.erb
@@ -1,4 +1,4 @@
- <% if FastGettext.default_available_locales.any? && !params.empty? %>
+ <% if FastGettext.default_available_locales.length > 1 && !params.empty? %>
<div id="user_locale_switcher">
<div class="btn-group">
<% FastGettext.default_available_locales.each do |possible_locale| %>
diff --git a/app/views/track_mailer/event_digest.text.erb b/app/views/track_mailer/event_digest.text.erb
index b83c184f0..f6e699e41 100644
--- a/app/views/track_mailer/event_digest.text.erb
+++ b/app/views/track_mailer/event_digest.text.erb
@@ -4,7 +4,7 @@
for track_thing, alert_results, xapian_object in @email_about_things
main_text += track_thing.params[:title_in_email] + "\n"
main_text += ("=" * track_thing.params[:title_in_email].size) + "\n\n"
- @highlight_words = xapian_object.words_to_highlight
+ @highlight_words = xapian_object.words_to_highlight(:regex => true)
for result in alert_results.reverse
if result[:model].class.to_s == "InfoRequestEvent"
event = result[:model]
@@ -17,14 +17,14 @@
# e.g. Julian Burgess sent a request to Royal Mail Group (15 May 2008)
if event.event_type == 'response'
- url = incoming_message_url(event.incoming_message)
+ url = incoming_message_url(event.incoming_message, :cachebust => true)
main_text += _("{{public_body}} sent a response to {{user_name}}", :public_body => event.info_request.public_body.name, :user_name => event.info_request.user_name)
elsif event.event_type == 'followup_sent'
- url = outgoing_message_url(event.outgoing_message)
+ url = outgoing_message_url(event.outgoing_message, :cachebust => true)
main_text += _("{{user_name}} sent a follow up message to {{public_body}}", :user_name => event.info_request.user_name, :public_body => event.info_request.public_body.name)
elsif event.event_type == 'sent'
# this is unlikely to happen in real life, but happens in the test code
- url = outgoing_message_url(event.outgoing_message)
+ url = outgoing_message_url(event.outgoing_message, :cachebust => true)
main_text += _("{{user_name}} sent a request to {{public_body}}", :user_name => event.info_request.user_name, :public_body => event.info_request.public_body.name)
elsif event.event_type == 'comment'
url = comment_url(event.comment)
diff --git a/app/views/user/_user_listing_single.html.erb b/app/views/user/_user_listing_single.html.erb
index ed1b95718..3cb0d283f 100644
--- a/app/views/user/_user_listing_single.html.erb
+++ b/app/views/user/_user_listing_single.html.erb
@@ -18,7 +18,7 @@ end %>
<span class="bottomline">
<%= pluralize(display_user.info_requests.size, "request") %> <%= _('made.')%>
<%= pluralize(display_user.visible_comments.size, "annotation") %> <%= _('made.')%>
- <%= _('Joined in')%> <%= year_from_date(display_user.created_at) %>.
+ <%= _('Joined in')%> <%= display_user.created_at.year %>.
</span>
</div>
diff --git a/app/views/user/show.html.erb b/app/views/user/show.html.erb
index ce328b46f..7ae577565 100644
--- a/app/views/user/show.html.erb
+++ b/app/views/user/show.html.erb
@@ -64,7 +64,7 @@
<h1> <%= h(@display_user.name) + (@is_you ? _(" (you)") : "") %></h1>
<p class="subtitle">
- <%= _('Joined {{site_name}} in', :site_name=>site_name) %> <%= year_from_date(@display_user.created_at) %>
+ <%= _('Joined {{site_name}} in', :site_name=>site_name) %> <%= @display_user.created_at.year %>
<% if !@user.nil? && @user.admin_page_links? %>
(<%= link_to "admin", admin_user_show_path(@display_user) %>)
<% end %>
diff --git a/config/crontab-example b/config/crontab-example
index 8fe13151b..669102149 100644
--- a/config/crontab-example
+++ b/config/crontab-example
@@ -5,32 +5,32 @@
# Email: hello@mysociety.org. WWW: http://www.mysociety.org/
PATH=/usr/local/bin:/usr/bin:/bin
-MAILTO=cron-!!(*= $site *)!!@mysociety.org
+MAILTO=!!(*= $mailto *)!!
# Every 5 minutes
-*/5 * * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/change-xapian-database.lock "!!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/update-xapian-index verbose=true" >> !!(*= $vhost_dir *)!!/logs/update-xapian-index.log || echo "stalled?"
+*/5 * * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/change-xapian-database.lock "!!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/update-xapian-index verbose=true" >> !!(*= $vhost_dir *)!!/logs/update-xapian-index.log || echo "stalled?"
# Every 10 minutes
5,15,25,35,45,55 * * * * !!(*= $user *)!! /etc/init.d/foi-alert-tracks check
5,15,25,35,45,55 * * * * !!(*= $user *)!! /etc/init.d/foi-purge-varnish check
-0,10,20,30,40,50 * * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/send-batch-requests.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/send-batch-requests || echo "stalled?"
+0,10,20,30,40,50 * * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/send-batch-requests.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/send-batch-requests || echo "stalled?"
# Once an hour
-09 * * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/alert-comment-on-request.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-comment-on-request || echo "stalled?"
+09 * * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/alert-comment-on-request.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-comment-on-request || echo "stalled?"
# Only root can read the log files
-31 * * * * root run-with-lockfile -n !!(*= $vhost_dir *)!!/load-mail-server-logs.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/load-mail-server-logs || echo "stalled?"
+31 * * * * root !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/load-mail-server-logs.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/load-mail-server-logs || echo "stalled?"
# Once a day, early morning
-23 4 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/delete-old-things.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/delete-old-things || echo "stalled?"
-0 6 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/alert-overdue-requests.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-overdue-requests || echo "stalled?"
-0 7 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/alert-new-response-reminders.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-new-response-reminders || echo "stalled?"
-0 8 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/alert-not-clarified-request.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-not-clarified-request || echo "stalled?"
-2 4 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/check-recent-requests-sent.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/check-recent-requests-sent || echo "stalled?"
-45 3 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/stop-new-responses-on-old-requests.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/stop-new-responses-on-old-requests || echo "stalled?"
-55 4 * * * !!(*= $user *)!! run-with-lockfile -n !!(*= $vhost_dir *)!!/update-public-body-stats.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/update-public-body-stats || echo "stalled?"
+23 4 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/delete-old-things.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/delete-old-things || echo "stalled?"
+0 6 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/alert-overdue-requests.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-overdue-requests || echo "stalled?"
+0 7 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/alert-new-response-reminders.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-new-response-reminders || echo "stalled?"
+0 8 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/alert-not-clarified-request.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/alert-not-clarified-request || echo "stalled?"
+2 4 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/check-recent-requests-sent.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/check-recent-requests-sent || echo "stalled?"
+45 3 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/stop-new-responses-on-old-requests.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/stop-new-responses-on-old-requests || echo "stalled?"
+55 4 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/update-public-body-stats.lock !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/update-public-body-stats || echo "stalled?"
# Only root can restart apache
-31 1 * * * root run-with-lockfile -n !!(*= $vhost_dir *)!!/change-xapian-database.lock "!!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/compact-xapian-database production" || echo "stalled?"
+31 1 * * * root !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/commonlib/bin/run-with-lockfile.sh -n !!(*= $vhost_dir *)!!/change-xapian-database.lock "!!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/compact-xapian-database production" || echo "stalled?"
# Once a day on all servers
@@ -38,7 +38,7 @@ MAILTO=cron-!!(*= $site *)!!@mysociety.org
48 2 * * * !!(*= $user *)!! !!(*= $vhost_dir *)!!/!!(*= $vcspath *)!!/script/user-use-graph
# Once a year :)
-0 0 1 11 * !!(*= $user *)!! /bin/echo "A year has passed, please update the bank holidays for the Freedom of Information site, thank you."
+0 0 1 11 * !!(*= $user *)!! /bin/echo "A year has passed, please update the public holidays for the Freedom of Information site, thank you."
diff --git a/config/database.yml-example b/config/database.yml-example
index e48577f23..126e5a264 100644
--- a/config/database.yml-example
+++ b/config/database.yml-example
@@ -3,7 +3,8 @@
development:
adapter: postgresql
- database: foi_development
+ template: template_utf8
+ database: alaveteli_development
username: <username>
password: <password>
host: localhost
@@ -14,7 +15,8 @@ development:
# Do not set this db to the same as development or production.
test:
adapter: postgresql
- database: foi_test
+ template: template_utf8
+ database: alaveteli_test
username: <username>
password: <password>
host: localhost
@@ -24,9 +26,9 @@ test:
production:
adapter: postgresql
- database: foi_production
+ template: template_utf8
+ database: alaveteli_production
username: <username>
password: <password>
host: localhost
port: 5432
-
diff --git a/config/database.yml-test b/config/database.yml-test
index ff6e2013a..64eafd82d 100644
--- a/config/database.yml-test
+++ b/config/database.yml-test
@@ -1,4 +1,5 @@
test:
adapter: postgresql
+ template: template_utf8
database: foi_test
username: postgres
diff --git a/config/httpd.conf-example b/config/httpd.conf-example
index dc2e4966e..8d549d363 100644
--- a/config/httpd.conf-example
+++ b/config/httpd.conf-example
@@ -16,7 +16,7 @@ RewriteEngine On
#RewriteLog /var/log/apache2/rewrite.log
#RewriteLogLevel 9
-# XXX do we need this now we use Passenger?
+# TODO: do we need this now we use Passenger?
# Pass through the HTTP basic authentication to mongrel. See also
# admin_http_auth_user in app/controllers/application.rb
# Note: Apache 2 only. Doesn't work in Apache 1.3, you'll need to live without
diff --git a/config/initializers/alaveteli.rb b/config/initializers/alaveteli.rb
index 6fb6b1420..d9879b5d1 100644
--- a/config/initializers/alaveteli.rb
+++ b/config/initializers/alaveteli.rb
@@ -53,6 +53,7 @@ require 'message_prominence'
require 'theme'
require 'xapian_queries'
require 'date_quarter'
+require 'public_body_csv'
AlaveteliLocalization.set_locales(AlaveteliConfiguration::available_locales,
AlaveteliConfiguration::default_locale)
diff --git a/config/routes.rb b/config/routes.rb
index d9d21f0bd..7cc85c974 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -16,7 +16,7 @@ Alaveteli::Application.routes.draw do
match '/blog' => 'general#blog', :as => :blog
match '/search' => 'general#search_redirect', :as => :search_redirect
match '/search/all' => 'general#search_redirect', :as => :search_redirect
- # XXX combined is the search query, and then if sorted a "/newest" at the end.
+ # `combined` is the search query, and then if sorted a "/newest" at the end.
# Couldn't find a way to do this in routes which also picked up multiple other slashes
# and dots and other characters that can appear in search query. So we sort it all
# out in the controller.
@@ -130,7 +130,7 @@ Alaveteli::Application.routes.draw do
match '/:feed/list/:view' => 'track#track_list', :as => :track_list, :view => nil, :feed => /(track|feed)/
match '/:feed/body/:url_name' => 'track#track_public_body', :as => :track_public_body, :feed => /(track|feed)/
match '/:feed/user/:url_name' => 'track#track_user', :as => :track_user, :feed => /(track|feed)/
- # XXX :format doesn't work. See hacky code in the controller that makes up for this.
+ # TODO: :format doesn't work. See hacky code in the controller that makes up for this.
match '/:feed/search/:query_array' => 'track#track_search_query',
:as => :track_search,
:feed => /(track|feed)/,
diff --git a/config/varnish-alaveteli.vcl b/config/varnish-alaveteli.vcl
index 5dd0ac83c..d3726682c 100644
--- a/config/varnish-alaveteli.vcl
+++ b/config/varnish-alaveteli.vcl
@@ -92,7 +92,7 @@ sub vcl_recv {
# ban lists, see
# http://kristianlyng.wordpress.com/2010/07/28/smart-bans-with-varnish/
- # XXX in Varnish 2.x, the following would be
+ # TODO: in Varnish 2.x, the following would be
# purge("obj.http.x-url ~ " req.url);
ban("obj.http.x-url ~ " + req.url);
error 200 "Banned";
diff --git a/db/migrate/028_give_incoming_messages_events.rb b/db/migrate/028_give_incoming_messages_events.rb
index 831068562..46acd831e 100644
--- a/db/migrate/028_give_incoming_messages_events.rb
+++ b/db/migrate/028_give_incoming_messages_events.rb
@@ -1,4 +1,4 @@
-# XXX If this one fails with errors about described_state on save, then you need
+# TODO: If this one fails with errors about described_state on save, then you need
# to temporarily modify the model for InfoRequestEvents to remove this part:
# validates_inclusion_of :described_state, :in => [
# Or do some nice hack in here to make it happen permanently :)
diff --git a/db/migrate/036_add_public_body_tags.rb b/db/migrate/036_add_public_body_tags.rb
index 99a507f13..f7fefdf48 100644
--- a/db/migrate/036_add_public_body_tags.rb
+++ b/db/migrate/036_add_public_body_tags.rb
@@ -11,7 +11,7 @@ class AddPublicBodyTags < ActiveRecord::Migration
end
# MySQL cannot index text blobs like this
- # XXX perhaps should change :name to be a :string
+ # TODO: perhaps should change :name to be a :string
if ActiveRecord::Base.connection.adapter_name != "MySQL"
add_index :public_body_tags, [:public_body_id, :name], :unique => true
end
diff --git a/db/migrate/061_include_responses_in_tracks.rb b/db/migrate/061_include_responses_in_tracks.rb
index f357e57c2..c7a3b26cf 100644
--- a/db/migrate/061_include_responses_in_tracks.rb
+++ b/db/migrate/061_include_responses_in_tracks.rb
@@ -4,6 +4,6 @@ class IncludeResponsesInTracks < ActiveRecord::Migration
end
def self.down
- # XXX forget it
+ # TODO: forget it
end
end
diff --git a/db/migrate/065_add_comments_to_user_track.rb b/db/migrate/065_add_comments_to_user_track.rb
index 9c4ff2936..50d1f9d5d 100644
--- a/db/migrate/065_add_comments_to_user_track.rb
+++ b/db/migrate/065_add_comments_to_user_track.rb
@@ -9,6 +9,6 @@ class AddCommentsToUserTrack < ActiveRecord::Migration
end
def self.down
- # XXX forget it
+ # TODO: forget it
end
end
diff --git a/db/migrate/088_public_body_machine_tags.rb b/db/migrate/088_public_body_machine_tags.rb
index 0089607c6..6a0815568 100644
--- a/db/migrate/088_public_body_machine_tags.rb
+++ b/db/migrate/088_public_body_machine_tags.rb
@@ -3,7 +3,7 @@ class PublicBodyMachineTags < ActiveRecord::Migration
add_column :public_body_tags, :value, :text
# MySQL cannot index text blobs like this
- # XXX perhaps should change :name/:value to be a :string
+ # TODO: perhaps should change :name/:value to be a :string
if ActiveRecord::Base.connection.adapter_name != "MySQL"
add_index :public_body_tags, :name
end
diff --git a/db/migrate/090_remove_tag_uniqueness.rb b/db/migrate/090_remove_tag_uniqueness.rb
index 1c06de439..d1affade3 100644
--- a/db/migrate/090_remove_tag_uniqueness.rb
+++ b/db/migrate/090_remove_tag_uniqueness.rb
@@ -1,7 +1,7 @@
class RemoveTagUniqueness < ActiveRecord::Migration
def self.up
# MySQL cannot index text blobs like this
- # XXX perhaps should change :name/:value to be a :string
+ # TODO: perhaps should change :name/:value to be a :string
if ActiveRecord::Base.connection.adapter_name != "MySQL"
remove_index :public_body_tags, [:public_body_id, :name]
# allow the key to repeat, but not the value also
diff --git a/doc/CHANGES.md b/doc/CHANGES.md
index 583960d41..777501ca5 100644
--- a/doc/CHANGES.md
+++ b/doc/CHANGES.md
@@ -48,7 +48,14 @@ Example:
* There are some new strings in this release for translation, so if your
site isn't in English, make sure your translations are up to date
before deploying to production
-
+* If your theme overrides the help/contact template, you should
+ add elements to the form to match those added to the main template:
+
+ <p style="display:none;">
+ <%= f.label :comment, 'Do not fill in this field' %>
+ <%= f.text_field :comment %>
+ </p>
+ This is the anti-spam honeypot.
# Version 0.17
diff --git a/doc/DEPLOY.md b/doc/DEPLOY.md
deleted file mode 100644
index f2e643ec5..000000000
--- a/doc/DEPLOY.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# Deployment
-
-mySociety uses a custom deployment and buildout system however Capistrano is included as part of Alaveteli as a standard deployment system.
-
-## Capistrano
-
-### Set up
-
-First you need to customise your deployment settings, e.g. the name of the server you're deploying to. This is done by copying the example file `config/deploy.yml.example` to `config/deploy.yml` and editing the settings to suit you.
-
-TODO: The following instructions could be greatly improved
-
-These are the general steps required to get your staging server up and running:
-
-* Install packages from `config/packages`
-* Install Postgres and configure a user
-* Create a directory to deploy to and make sure your deployment user can write to it
-* Run `cap deploy:setup` to create directories, etc.
-* Run `cap deploy:update_code` so that we've got a copy of the example config on the server. This process will take a long time installing gems, etc. it will also fail on `rake:themes:install` but that's OK
-* SSH to the server, change to the `deploy_to` directory
-* `cp releases/[SOME_DATE]/config/general.yml-example shared/general.yml`
-* `cp releases/[SOME_DATE]/config/database.yml-example shared/database.yml`
-* Edit those files to match your required settings
-* Back on your machine run `cap deploy` and it should successfully deploy
-* Run the DB migrations `cap deploy:migrate`
-* Build the Xapian DB `cap xapian:rebuild_index`
-* Configure Apache/Passenger with a DocumentRoot of `your_deploy_to/current/public`
-* Phew. Time to admire your work by browsing to the server!
-
-### Usage
-
-Ensure you've got a `config/deploy.yml` file with the correct settings for your site. You'll need to share this with everyone in your team that deploys so it might be a good idea to keep the latest version in a [Gist](http://gist.github.com/).
-
-To deploy to staging just run `cap deploy` but if you want to deploy to production you need to run `cap -S stage=production deploy`.
-
-For additional usage instructions, see the [Capistrano wiki](https://github.com/capistrano/capistrano/wiki/).
-
-### TODO
-
-* Get `cap deploy:setup` to do most of the work described above in the *Set up* section
-* Use [Whenever](https://github.com/javan/whenever) to set up cronjobs
diff --git a/doc/INSTALL-exim4.md b/doc/INSTALL-exim4.md
deleted file mode 100644
index 796fb295c..000000000
--- a/doc/INSTALL-exim4.md
+++ /dev/null
@@ -1,99 +0,0 @@
-As an example of how to set up your MTA, in exim on Ubuntu, you might
-add the following to its configuration.
-
-In `/etc/exim4/conf.d/main/04_alaveteli_options`:
-
- ALAVETELI_HOME=/path/to/alaveteli/software
- ALAVETELI_USER=www-data
- log_file_path=/var/log/exim4/exim-%slog-%D
- MAIN_LOG_SELECTOR==+all -retry_defer
- extract_addresses_remove_arguments=false
-
-(The user ALAVETELI_USER should have write permissions on ALAVETELI_HOME).
-
-Note that the name and location of the log files created by Exim must match
-what the `load-mail-server-logs` script expects, hence the need for the extra
-`log_file_path` setting. And the `check-recent-requests-sent` scripts expects
-the logs to contain the `from=<...>` envelope information, so we make the
-logs more verbose with `log_selector`. The ALAVETELI_USER may need to also
-need to be added to the `trusted_users` list in your Exim config in order to
-set the return path on outgoing mail, depending on your setup.
-
-In `/etc/exim4/conf.d/router/04_alaveteli`:
-
- alaveteli_request:
- debug_print = "R: alaveteli for $local_part@$domain"
- driver = redirect
- data = ${lookup{$local_part}wildlsearch{ALAVETELI_HOME/config/aliases}}
- pipe_transport = alaveteli_mailin_transport
-
-In `/etc/exim4/conf.d/transport/04_alaveteli`:
-
- alaveteli_mailin_transport:
- driver = pipe
- command = $address_pipe ${lc:$local_part}
- current_directory = ALAVETELI_HOME
- home_directory = ALAVETELI_HOME
- user = ALAVETELI_USER
- group = ALAVETELI_USER
-
-And, assuming you set `INCOMING_EMAIL_PREFIX` in your config at
-`config/general` to "foi+", create `config/aliases` with the following
-content:
-
- ^foi\\+.*: |/path/to/alaveteli/software/script/mailin
-
-You should also configure exim to discard any messages sent to the
-`BLACKHOLE_PREFIX` address, whose default value is
-'do-not-reply-to-this-address'. For example, add the following to
-config/aliases:
-
- # We use this for envelope from for some messages where we don't care about delivery
- do-not-reply-to-this-address: :blackhole:
-
-If you want to make use of the automatic bounce-message handling, then
-set the `TRACK_SENDER_EMAIL` address to be filtered through
-`script/handle-mail-replies`. Messages that are not bounces or
-out-of-office autoreplies will be forwarded to
-`FORWARD_NONBOUNCE_RESPONSES_TO`. For example, in WhatDoTheyKnow the
-configuration looks like this:
-
- raw_team: [a list of people on the team]
- team: |/path/to/alaveteli/software/script/handle-mail-replies
-
-with `FORWARD_NONBOUNCE_RESPONSES_TO: 'raw_team@whatdotheyknow.com'`
-
-Finally, make sure you have `dc_use_split_config='true'` in
-`/etc/exim4/update-exim4.conf.conf`, and execute the command
-`update-exim4.conf`.
-
-NB: if the file `/etc/exim4/exim4.conf` exists then `update-exim4.conf`
-will silently do nothing. Some distributions include this file. If
-yours does, you will need to rename it before running `update-exim4.conf`.
-
-(You may also want to set `dc_eximconfig_configtype='internet'`,
-`dc_local_interfaces='0.0.0.0 ; ::1'`, and
-`dc_other_hostnames='<your-host-name>'`)
-
-# Troubleshooting
-
-To test mail delivery, run:
-
- exim -bt foi+request-1234@localhost
-
-This should tell you which routers are being processed. You should
-see something like:
-
- $ exim -bt foi+request-1234@localhost
- R: alaveteli pipe for snafflerequest-234@localhost
- snafflerequest-234@localhost -> |/home/alaveteli/alaveteli/script/mailin
- transport = alaveteli_mailin_transport
-
-This tells you that the routing part (making emails to
-`foi\+.*@localhost` be forwarded to Alaveteli's `mailin` script) is
-working.
-
-There is a great
-[Exim Cheatsheet](http://bradthemad.org/tech/notes/exim_cheatsheet.php)
-online that you may find useful.
-
diff --git a/doc/INSTALL-postfix.md b/doc/INSTALL-postfix.md
deleted file mode 100644
index a73d67ce1..000000000
--- a/doc/INSTALL-postfix.md
+++ /dev/null
@@ -1,68 +0,0 @@
-As an example of how to set up your MTA, in postfix on Ubuntu, you might
-add the following to its configuration.
-
-In /etc/postfix/master.cf:
-
- alaveteli unix - n n - 50 pipe
- flags=R user=ALAVETELI_USER argv=ALAVETELI_HOME/script/mailin
-
-In /etc/postfix/main.cf
-
- virtual_alias_maps = regexp:/etc/postfix/regexp
-
-For example
-
-ALAVETELI_HOME=/path/to/alaveteli/software
-ALAVETELI_USER=www-data
-
-The user ALAVETELI_USER should have write permissions on ALAVETELI_HOME.
-
-And, assuming you set `OPTION_INCOMING_EMAIL_PREFIX` in your config at
-`config/general` to "foi+", create `/etc/postfix/regexp` with the following
-content:
-
- /^foi.*/ alaveteli
-
-
-You should also configure postfix to discard any messages sent to the `BLACKHOLE_PREFIX`
-address, whose default value is 'do-not-reply-to-this-address'. For example, add the
-following to /etc/aliases:
-
- # We use this for envelope from for some messages where we don't care about delivery
- do-not-reply-to-this-address: :blackhole:
-
-# Logging
-
-For the postfix logs to be read by the script 'load-mail-server-logs' succesfully they need to be log rotated with a date in the filename. Since that will create a lot of rotated log files (one for each day), it's good to have them in their own directory. For example (on Ubuntu) /etc/rsyslog.d/50-default.conf
-
- mail.* -/var/log/mail/mail.log
-
-And also edit /etc/logrotate.d/rsyslog:
-
- /var/log/mail/mail.log
- {
- rotate 30
- daily
- dateext
- missingok
- notifempty
- compress
- delaycompress
- sharedscripts
- postrotate
- reload rsyslog >/dev/null 2>&1 || true
- endscript
- }
-
-You'll also need to tell Alaveteli where the log files are stored and that they're in postfix format. Update config/general.yml with:
-
- MTA_LOG_PATH: '/var/log/mail/mail.log-*'
- MTA_LOG_TYPE: "postfix"
-
-# Troubleshooting
-
-To test mail delivery, run:
-
- $ /usr/sbin/sendmail -bv foi+requrest-1234@localhost
-
-This tells you if sending the emails to 'foi\+.*localhost' is working.
diff --git a/doc/INSTALL.md b/doc/INSTALL.md
deleted file mode 100644
index f6563be99..000000000
--- a/doc/INSTALL.md
+++ /dev/null
@@ -1,651 +0,0 @@
-# Installation Script and AMI
-
-The easiest options for installating Alaveteli for evaluation
-are to use our install script or to use the AMI (Amazon Machine
-Image) to create an instance on Amazon EC2. These options are
-described below. If you would prefer to install the site
-manually, please go to the Manual Installation section below.
-
-## Installing from an AMI (Amazon Machine Image)
-
-To help people try out Alaveteli, we have created an AMI (Amazon
-Machine Image) with a basic installation of Alaveteli, which you
-can use to create a running server on an Amazon EC2 instance.
-This creates an instance that runs in development mode, so we
-wouldn't recommend you use it for a production system without
-changing the configuration.
-
-Unfortunately, Alaveteli will not run properly on a free Micro
-instance due to the low amount of memory available on those
-instances; you will need to use at least a Small instance, which
-Amazon will charge for.
-
-The AMI can be found in the EU West (Ireland) region, with the
-ID ami-8603f4f1 and name “Basic Alaveteli installation
-2014-01-29”. You can launch an instance based on that AMI with
-[this link](https://console.aws.amazon.com/ec2/home?region=eu-west-1#launchAmi=ami-8603f4f1).
-
-When you create an EC2 instance based on that AMI, make sure
-that you choose Security Groups that allows at least inbound
-HTTP, HTTPS, SSH and, if you want to test incoming mail as well,
-SMTP.
-
-When your EC2 instance is launched, you will be able to log in
-as the `ubuntu` user. This user can `sudo` freely to run
-commands as root. However, the code is actually owned by (and
-runs as) the `alaveteli` user. After creating the instance, you
-may want to edit a configuration file to customize the site's
-configuration. That configuration file is
-`/var/www/alaveteli/alaveteli/config/general.yml`, which can be
-edited with:
-
- ubuntu@ip-10-58-191-98:~$ sudo su - alaveteli
- alaveteli@ip-10-58-191-98:~$ cd alaveteli
- alaveteli@ip-10-58-191-98:~/alaveteli$ nano config/general.yml
-
-Then you should restart the Thin webserver with:
-
- alaveteli@ip-10-58-191-98:~/alaveteli$ logout
- ubuntu@ip-10-58-191-98:~$ sudo /etc/init.d/alaveteli restart
-
-If you find the hostname of your EC2 instance from the AWS
-console, you should then be able to see the site at
-`http://your-ec2-hostname.eu-west-1.compute.amazonaws.com`
-
-If you have any problems or questions, please ask on the
-[Alaveteli Google Group](https://groups.google.com/forum/#!forum/alaveteli-dev)
-or [report an issue](https://github.com/mysociety/alaveteli/issues?state=open).
-
-## Installing with the Installation Script
-
-If you have a clean installation of Debian squeeze or Ubuntu
-precise, you can use an install script in our commonlib
-repository to set up a working instance of Alaveteli. This is
-not suitable for production (it runs in development mode, for
-example) but should set up a functional installation of the
-site.
-
-**Warning: only use this script on a newly installed server – it
-will make significant changes to your server’s setup, including
-modifying your nginx setup, creating a user account, creating a
-database, installing new packages etc.**
-
-To download the script, run the following command:
-
- curl -O https://raw.github.com/mysociety/commonlib/master/bin/install-site.sh
-
-If you run this script with `sh install-site.sh`, you'll see its
-usage message:
-
- Usage: ./install-site.sh [--default] <SITE-NAME> <UNIX-USER> [HOST]
- HOST is only optional if you are running this on an EC2 instance.
- --default means to install as the default site for this server,
- rather than a virtualhost for HOST.
-
-In this case `<SITE-NAME>` should be `alaveteli`. `<UNIX-USER>`
-is the name of the Unix user that you want to own and run the
-code. (This user will be created by the script.)
-
-The `HOST` parameter is a hostname for the server that will be
-usable externally – a virtualhost for this name will be created
-by the script, unless you specified the `--default` option. This
-parameter is optional if you are on an EC2 instance, in which
-case the hostname of that instance will be used.
-
-For example, if you wish to use a new user called `alaveteli`
-and the hostname `alaveteli.127.0.0.1.xip.io`, creating a
-virtualhost just for that hostname, you could download and run
-the script with:
-
- sudo sh install-site.sh alaveteli alaveteli alaveteli.127.0.0.1.xip.io
-
-([xip.io](http://xip.io/) is a helpful domain for development.)
-
-Or, if you want to set this up as the default site on an EC2
-instance, you could download the script, make it executable and
-then invoke it with:
-
- sudo ./install-site.sh --default alaveteli alaveteli
-
-When the script has finished, you should have a working copy of
-the website, accessible via the hostname you supplied to the
-script.
-
-If you have any problems or questions, please ask on the
-[Alaveteli Google Group](https://groups.google.com/forum/#!forum/alaveteli-dev)
-or [report an issue](https://github.com/mysociety/alaveteli/issues?state=open).
-
-# Manual Installation
-
-These instructions assume Debian Squeeze (64-bit) or Ubuntu 12.04 LTS (precise).
-[Install instructions for OS X](https://github.com/mysociety/alaveteli/wiki/OS-X-Quickstart)
-are under development. Debian Squeeze is the best supported
-deployment platform.
-
-Commands are intended to be run via the terminal or over ssh.
-
-As an aid to evaluation, there is an
-[Amazon AMI](https://github.com/mysociety/alaveteli/wiki/Alaveteli-ec2-ami)
-with all these steps configured. It is *not* production-ready.
-
-## Get Alaveteli
-
-To start with, you may need to install git, e.g. with `sudo apt-get
-install git-core`
-
-Next, get hold of the Alaveteli source code from github:
-
- git clone https://github.com/mysociety/alaveteli.git
- cd alaveteli
-
-This will get the development branch, which has the latest (possibly
-buggy) code. If you don't want to add or try new features, swap to the
-master branch (which always contains the latest stable release):
-
- git checkout master
-
-## Package pinning
-
-You need to configure [apt-pinning](http://wiki.debian.org/AptPreferences#Pinning-1) preferences in order to prevent packages being pulled from the debian wheezy distribution in preference to the stable distribution once you have added the wheezy repository as described below.
-
-In order to configure apt-pinning and to keep most packages coming from the Debian stable repository while installing the ones required from wheezy and the mySociety repository you need to run the following commands:
-
- echo "Package: *" >> /tmp/preferences
- echo "Pin: release a=squeeze-backports">> /tmp/preferences
- echo "Pin-Priority: 200" >> /tmp/preferences
- echo "" >> /tmp/preferences
- echo "Package: *" >> /tmp/preferences
- echo "Pin: release a=wheezy">> /tmp/preferences
- echo "Pin-Priority: 50" >> /tmp/preferences
- sudo cp /tmp/preferences /etc/apt/
- rm /tmp/preferences
-
-## Install system dependencies
-
-These are packages that the software depends on: third-party software
-used to parse documents, host the site, etc. There are also packages
-that contain headers necessary to compile some of the gem dependencies
-in the next step.
-
-If you are running Debian, add the following repositories to
-`/etc/apt/sources.list` and run `apt-get update`:
-
- deb http://debian.mysociety.org squeeze main
- deb http://ftp.debian.org/debian/ wheezy main non-free contrib
- deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
-
-The repositories above allow us to install the packages
-`wkhtmltopdf-static` and `bundler` using `apt`; so if you're running
-Ubuntu, you won't be able to use the above repositories, and you will
-need to comment out those two lines in `config/packages` before
-following the next step (and install bundler manually).
-
-Now install the packages that are listed in config/packages using apt-get
-e.g.:
-
- sudo apt-get install `cut -d " " -f 1 config/packages | grep -v "^#"`
-
-Some of the files also have a version number listed in config/packages
-- check that you have appropriate versions installed. Some also list
-"|" and offer a choice of packages.
-
-## Install Ruby dependencies
-
-To install Alaveteli's Ruby dependencies, we need to install
-bundler. In Debian, this is provided as a package (installed as part
-of the package install process above). You could also install it as a
-gem:
-
- sudo gem1.8 install bundler
-
-## Install mySociety libraries
-
-You will also want to install mySociety's common ruby libraries and the Rails
-code. Run:
-
- git submodule update --init
-
-to fetch the contents of the submodules.
-
-### Packages customised by mySociety
-
-Debian users should add the mySociety debian archive to their
-`/etc/apt/sources.list` as described above. Doing this and following
-the above instructions should install a couple of custom
-dependencies. Users of other platforms can optionally install these
-dependencies manually, as follows:
-
-1. If you would like users to be able to download pretty PDFs as part of
-the downloadable zipfile of their request history, you should install
-[wkhtmltopdf](http://code.google.com/p/wkhtmltopdf/downloads/list).
-We recommend downloading the latest, statically compiled version from
-the project website, as this allows running headless (i.e. without a
-graphical interface running) on Linux. If you do install
-`wkhtmltopdf`, you need to edit a setting in the config file to point
-to it (see below). If you don't install it, everything will still
-work, but users will get ugly, plain text versions of their requests
-when they download them.
-
-2. Version 1.44 of `pdftk` contains a bug which makes it to loop forever
-in certain edge conditions. Until it's incorporated into an official
-release, you can either hope you don't encounter the bug (it ties up a
-rails process until you kill it) you'll need to patch it yourself or
-use the Debian package compiled by mySociety (see link in
-[issue 305](https://github.com/mysociety/alaveteli/issues/305))
-
-
-## Configure Database
-
-There has been a little work done in trying to make the code work with
-other databases (e.g. SQLite), but the currently supported database is
-PostgreSQL.
-
-If you don't have it installed:
-
- apt-get install postgresql postgresql-client
-
-Now we need to set up the database config file to contain the name,
-username and password of your postgres database.
-
-* copy `database.yml-example` to `database.yml` in `alaveteli/config`
-* edit it to point to your local postgresql database in the development
- and test sections and create the databases:
-
-Make sure that the user specified in database.yml exists, and has full
-permissions on these databases. As they need the ability to turn off
-constraints whilst running the tests they also need to be a superuser.
-If you don't want your database user to be a superuser, you can add a line
-`constraint_disabling: false` to the test config in database.yml, as seen in database.yml-example
-
-You can create a `foi` user from the command line, thus:
-
- # su - postgres
- $ createuser -s -P foi
-
-And you can create a database thus:
-
- $ createdb -T template0 -E SQL_ASCII -O foi foi_production
- $ createdb -T template0 -E SQL_ASCII -O foi foi_test
- $ createdb -T template0 -E SQL_ASCII -O foi foi_development
-
-We create using the ``SQL_ASCII`` encoding, because in postgres this
-is means "no encoding"; and because we handle and store all kinds of
-data that may not be valid UTF (for example, data originating from
-various broken email clients that's not 8-bit clean), it's safer to be
-able to store *anything*, than reject data at runtime.
-
-## Configure email
-
-You will need to set up an email server (MTA) to send and receive
-emails. Full configuration for an MTA is beyond the scope of this
-document, though we describe an example configuration for Exim in
-`INSTALL-exim4.md`.
-
-Note that in development mode, mail is handled by default by mailcatcher
-so that you can see the mails in a browser - see http://mailcatcher.me/
-for more details. Start mailcatcher by running `bundle exec mailcatcher`
-in your application directory.
-
-### Minimal
-
-If you just want to get the tests to pass, you will at a minimum need
-to allow sending emails via a `sendmail` command (a requirement met,
-for example, with `sudo apt-get install exim4`).
-
-### Detailed
-
-When an authority receives an email, the email's `reply-to` field is a
-magic address which is parsed and consumed by the Rails app.
-
-To receive such email in a production setup, you will need to
-configure your MTA to pipe incoming emails to the Alaveteli script
-`script/mailin`. Therefore, you will need to configure your MTA to
-accept emails to magic addresses, and to pipe such emails to this
-script.
-
-Magic email addresses are of the form:
-
- <foi+request-3-691c8388@example.com>
-
-The respective parts of this address are controlled with options in
-config/general.yml, thus:
-
- INCOMING_EMAIL_PREFIX = 'foi+'
- INCOMING_EMAIL_DOMAIN = 'example.com'
-
-When you set up your MTA, note that if there is some error inside
-Rails, the email is returned with an exit code 75, which for Exim at
-least means the MTA will try again later. Additionally, a stacktrace
-is emailed to `CONTACT_EMAIL`.
-
-`INSTALL-exim4.md` describes one possible configuration for Exim (>=
-1.9).
-
-A well-configured installation of this code will separately have had
-Exim make a backup copy of the email in a separate mailbox, just in
-case.
-
-## Set up configs
-
-Copy `config/general.yml-example` to `config/general.yml` and edit to
-your taste.
-
-Note that the default settings for frontpage examples are designed to
-work with the dummy data shipped with Alaveteli; once you have real
-data, you should certainly edit these.
-
-The default theme is the "Alaveteli" theme. When you run
-`rails-post-deploy` (see below), that theme gets installed
-automatically.
-
-Finally, copy `config/newrelic.yml-example` to `config/newrelic.yml`.
-This file contains configuration information for the New Relic
-performance management system. By default, monitoring is switched off
-by the `agent_enabled: false` setting. See https://github.com/newrelic/rpm
-for instructions on switching on local and remote performance analysis.
-
-## Deployment
-
-In the 'alaveteli' directory, run:
-
- script/rails-post-deploy
-
-(This will need execute privs so `chmod 755` if necessary.) This sets
-up directory structures, creates logs, installs/updates themes, runs
-database migrations, etc. You should run it after each new software
-update.
-
-One of the things the script does is install dependencies (using
-`bundle install`). Note that the first time you run it, part of the
-`bundle install` that compiles `xapian-full` takes a *long* time!
-
-If you want some dummy data to play with, you can try loading the
-fixtures that the test suite uses into your development database. You
-can do this with:
-
- script/load-sample-data
-
-Next we need to create the index for the search engine (Xapian):
-
- script/rebuild-xapian-index
-
-If this fails, the site should still mostly run, but it's a core
-component so you should really try to get this working.
-
-## Run the Tests
-
-Make sure everything looks OK:
-
- bundle exec rake spec
-
-If there are failures here, something has gone wrong with the
-preceding steps (see the next section for a common problem and
-workaround). You might be able to move on to the next step, depending
-on how serious they are, but ideally you should try to find out what's
-gone wrong.
-
-### glibc bug workaround
-
-There's a
-[bug in glibc](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637239)
-which causes Xapian to segfault when running the tests. Although the
-bug report linked to claims it's fixed in the current Debian stable,
-it's not as of version `2.11.3-2`.
-
-Until it's fixed (e.g. `libc6 2.13-26` does work), you can get the
-tests to pass by setting `export LD_PRELOAD=/lib/libuuid.so.1`.
-
-## Run the Server
-
-Run the following to get the server running:
-
- bundle exec rails server --environment=development
-
-By default the server listens on all interfaces. You can restrict it to the
-localhost interface by adding ` --binding=127.0.0.1`
-
-The server should have told you the URL to access in your browser to see
-the site in action.
-
-## Administrator privileges
-
-The administrative interface is at the URL `/admin`.
-
-Only users with the `super` admin level can access the admin
-interface. Users create their own accounts in the usual way, and then
-administrators can give them `super` privileges.
-
-There is an emergency user account which can be accessed via
-`/admin?emergency=1`, using the credentials `ADMIN_USERNAME` and
-`ADMIN_PASSWORD`, which are set in `general.yml`. To bootstrap the
-first `super` level accounts, you will need to log in as the emergency
-user. You can disable the emergency user account by setting `DISABLE_EMERGENCY_USER` to `true` in `general.yml`.
-
-Users with the superuser role also have extra privileges in the
-website frontend, such as being able to categorise any request, being
-able to view items that have been hidden from the search, and being
-presented with "admin" links next to individual requests and comments
-in the front end.
-
-It is possible completely to override the administrator authentication
-by setting `SKIP_ADMIN_AUTH` to `true` in `general.yml`.
-
-## Cron jobs and init scripts
-
-`config/crontab-example` contains the cronjobs run on WhatDoTheyKnow.
-It's in a strange templating format they use in mySociety. mySociety
-render the example file to reference absolute paths, and then drop it
-in `/etc/cron.d/` on the server.
-
-The `ugly` format uses simple variable substitution. A variable looks
-like `!!(*= $this *)!!`. The variables are:
-
-* `vhost`: part of the path to the directory where the software is
- served from. In the mySociety files, it usually comes as
- `/data/vhost/!!(*= $vhost *)!!` -- you should replace that whole
- port with a path to the directory where your Alaveteli software
- installation lives, e.g. `/var/www/`
-* `vhost_dir`: the entire path to the directory where the software is
- served from. -- you should replace this with a path to the
- directory where your Alaveteli software installation lives,
- e.g. `/var/www/`
-* `vcspath`: the name of the alaveteli checkout, e.g. `alaveteli`.
- Thus, `/data/vhost/!!(*= $vhost *)!!/!!(*= $vcspath *)!!` might be
- replaced with `/var/www/alaveteli` in your cron tab
-* `user`: the user that the software runs as
-* `site`: a string to identify your alaveteli instance
-
-There is a rake task that will help to rewrite this file into
-one that is useful to you, which can be invoked with:
-
- bundle exec rake config_files:convert_crontab \
- DEPLOY_USER=deploy \
- VHOST_DIR=/dir/above/alaveteli \
- VCSPATH=alaveteli \
- SITE=alaveteli \
- CRONTAB=config/crontab-example > crontab
-
-You should change the `DEPLOY_USER`, `VHOST_DIR`, `VCSPATH` and
-`SITE` environment variables to match your server and
-installation. You should also edit the resulting `crontab` file
-to customize the `MAILTO` variable.
-
-One of the cron jobs refers to a script at
-`/etc/init.d/foi-alert-tracks`. This is an init script, a copy of
-which lives in `config/alert-tracks-debian.ugly`. As with the cron
-jobs above, replace the variables (and/or bits near the variables)
-with paths to your software. You can use the rake task `rake
-config_files:convert_init_script` to do this.
-`config/purge-varnish-debian.ugly` is a
-similar init script, which is optional and not required if you choose
-not to run your site behind Varnish (see below). Either tweak the file
-permissions to make the scripts executable by your deploy user, or add the
-following line to your sudoers file to allow these to be run by your deploy
-user (named `deploy` in this case):
-
- deploy ALL = NOPASSWD: /etc/init.d/foi-alert-tracks, /etc/init.d/foi-purge-varnish
-
-The cron jobs refer to a program `run-with-lockfile`. See
-[this issue](https://github.com/mysociety/alaveteli/issues/112) for a
-discussion of where to find this program, and how you might replace
-it. This [one line script](https://gist.github.com/3741194) can install
-this program system-wide.
-
-## Set up production web server
-
-It is not recommended to run the website using the default Rails web
-server. There are various recommendations here:
-http://rubyonrails.org/deploy
-
-We usually use Passenger / mod_rails. The file at `conf/httpd.conf-example`
-gives you an example config file for WhatDoTheyKnow. At a minimum, you should
-include the following in an Apache configuration file:
-
- PassengerResolveSymlinksInDocumentRoot on
- PassengerMaxPoolSize 6 # Recommend setting this to 3 or less on servers with 512MB RAM
-
-Under all but light loads, it is strongly recommended to run the
-server behind an http accelerator like Varnish. A sample varnish VCL
-is supplied in `../conf/varnish-alaveteli.vcl`.
-
-It's strongly recommended that you run the site over SSL. (Set FORCE_SSL to true in
-config/general.yml). For this you will need an SSL certificate for your domain and you will
-need to configure an SSL terminator to sit in front of Varnish. If you're already using Apache
-as a web server you could simply use Apache as the SSL terminator. A minimal configuration
-would look something like this:
-
-<VirtualHost *:443>
- ServerName www.yourdomain
-
- ProxyRequests Off
- ProxyPreserveHost On
- ProxyPass / http://localhost:80/
- ProxyPassReverse / http://localhost:80/
- RequestHeader set X-Forwarded-Proto 'https'
-
- SSLEngine on
- SSLProtocol all -SSLv2
- SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
-
- SSLCertificateFile /etc/apache2/ssl/ssl.crt
- SSLCertificateKeyFile /etc/apache2/ssl/ssl.key
- SSLCertificateChainFile /etc/apache2/ssl/sub.class2.server.ca.pem
- SSLCACertificateFile /etc/apache2/ssl/ca.pem
- SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
-</VirtualHost>
-
-Notice the line "RequestHeader" that sets the X-Forwarded-Proto header. This is important. This ultimately tells Rails that it's serving a page over https and so it knows to include that in any absolute urls it serves.
-
-Some
-[production server best practice notes](https://github.com/mysociety/alaveteli/wiki/Production-Server-Best-Practices)
-are evolving on the wiki.
-
-## Upgrading Alaveteli
-
-The developer team policy is that the master branch in git should
-always contain the latest stable release. Therefore, in production,
-you should usually have your software deployed from the master branch,
-and an upgrade can be simply `git pull`.
-
-Patch version increases (e.g. 1.2.3 -> 1.2.4) should not require any
-further action on your part.
-
-Minor version increases (e.g. 1.2.4 -> 1.3.0) will usually require
-further action. You should read the `CHANGES.md` document to see
-what's changed since your last deployment, paying special attention to
-anything in the "Updgrading" sections.
-
-Any upgrade may include new translations strings, i.e. new or altered
-messages to the user that need translating to your locale. You should
-visit Transifex and try to get your translation up to 100% on each new
-release. Failure to do so means that any new words added to the
-Alaveteli source code will appear in your website in English by
-default. If your translations didn't make it to the latest release,
-you will need to download the updated `app.po` for your locale from
-Transifex and save it in the `locale/` folder.
-
-You should always run the script `scripts/rails-post-deploy` after
-each deployment. This runs any database migrations for you, plus
-various other things that can be automated for deployment.
-
-## Troubleshooting
-
-* **Incoming emails aren't appearing in my Alaveteli install**
-
- First, you need to check that your MTA is delivering relevant
- incoming emails to the `script/mailin` command. There are various
- ways of setting your MTA up to do this; we have documented one way
- of doing it in Exim at `doc/INSTALL-exim4.conf`, including a
- command you can use to check that the email routing is set up
- correctly.
-
- Second, you need to test that the mailin script itself is working
- correctly, by running it from the command line, First, find a
- valid "To" address for a request in your system. You can do this
- through your site's admin interface, or from the command line,
- like so:
-
- $ ./script/console
- Loading development environment (Rails 2.3.14)
- >> InfoRequest.find_by_url_title("why_do_you_have_such_a_fancy_dog").incoming_email
- => "request-101-50929748@localhost"
-
- Now take the source of a valid email (there are some sample emails in
- `spec/fixtures/files/`); edit the `To:` header to match this address;
- and then pipe it through the mailin script. A non-zero exit code
- means there was a problem. For example:
-
- $ cp spec/fixtures/files/incoming-request-plain.email /tmp/
- $ perl -pi -e 's/^To:.*/To: <request-101-50929748@localhost>/' /tmp/incoming-request-plain.email
- $ ./script/mailin < /tmp/incoming-request-plain.email
- $ echo $?
- 75
-
- The `mailin` script emails the details of any errors to
- `CONTACT_EMAIL` (from your `general.yml` file). A common problem is
- for the user that the MTA runs as not to have write access to
- `files/raw_emails/`.
-
-* **Various tests fail with "*Your PostgreSQL connection does not support
- unescape_bytea. Try upgrading to pg 0.9.0 or later.*"**
-
- You have an old version of `pg`, the ruby postgres driver. In
- Ubuntu, for example, this is provided by the package `libdbd-pg-ruby`.
-
- Try upgrading your system's `pg` installation, or installing the pg
- gem with `gem install pg`
-
-* **Some of the tests relating to mail are failing, with messages like
- "*when using TMail should load an email with funny MIME settings'
- FAILED*"**
-
- This sounds like the tests are running using the `production`
- environment, rather than the `test` environment, for some reason.
-
-* **Non-ASCII characters are being displayed as asterisks in my incoming messages**
-
- We rely on `elinks` to convert HTML email to plain text.
- Normally, the encoding should just work, but under some
- circumstances it appears that `elinks` ignores the parameters
- passed to it from Alaveteli.
-
- To force `elinks` always to treat input as UTF8, add the following
- to `/etc/elinks/elinks.conf`:
-
- set document.codepage.assume = "utf-8"
- set document.codepage.force_assumed = 1
-
- You should also check that your locale is set up correctly. See
- [https://github.com/mysociety/alaveteli/issues/128#issuecomment-1814845](this issue followup)
- for further discussion.
-
-* **I'm seeing `rake: command not found` when running the post install script
-
- The script uses `rake`.
-
- It may be that the binaries installed by bundler are not put in the
- system `PATH`; therefore, in order to run `rake` (needed for
- deployments), you may need to do something like:
-
- ln -s /usr/lib/ruby/gems/1.8/bin/rake /usr/local/bin/
-
diff --git a/doc/README.md b/doc/README.md
new file mode 100644
index 000000000..181076f2c
--- /dev/null
+++ b/doc/README.md
@@ -0,0 +1,9 @@
+The main Alaveteli documentation now lives on the [Alaveteli site](http://alaveteli.org/docs/)
+
+Specifically:
+
+* [Installation](http://alaveteli.org/docs/installing/)
+* [Themes](http://alaveteli.org/docs/customising/themes/)
+* [Translation](http://alaveteli.org/docs/customising/translation/)
+* [Email](http://alaveteli.org/docs/installing/email/)
+* [Deployment](http://alaveteli.org/docs/installing/deploy/)
diff --git a/doc/THEMES.md b/doc/THEMES.md
deleted file mode 100644
index 8a4828a99..000000000
--- a/doc/THEMES.md
+++ /dev/null
@@ -1,165 +0,0 @@
-When installing an Alaveteli site, there are a few things that you
-might want to do to customise it, beyond the available settings in the
-`config/general` file.
-
-The most common requirement is to brand the site: at a minimum,
-inserting your own logo and colour scheme. You may also want to tweak
-the different states that a request can go through. You'll also want
-to edit the categories that public bodies can appear in (i.e. the
-groupings on the left hand side of the
-"[View authorities](https://www.whatdotheyknow.com/body/list/all)" page
-on WhatDoTheyKnow.
-
-There may also be other things you want to customise; drop a line on
-the developer's mailing list to discuss, if so. We're still working
-out the best way of doing these kinds of customisations!
-
-In any case, the important principle to bear in mind is that the less
-you override and customise the code, the easier your site will be to
-maintain in the long term. Any customisation is possible, but for
-each customisation beyond the simple cases documented here, ask
-yourself or your client, "can we possibly live without this?" If the
-answer is "no", then consider starting a discussion about a pluggable
-way of achieving your goals, rather than overriding any of the core
-code.
-
-# General principles
-
-We try to encapsulate all site-specific functionality in one of these
-places:
-
-* Site configuration (e.g. the name of your site, the available
- languages etc -- all in `config/general`)
-* Data (e.g. the public bodies to whom requests should be addressed)
-* A rails "plugin", installed in `vendor/plugins/`. We call these
- "themes".
-
-This document is about what you can do in a theme.
-
-By default, the sample theme ("alavetelitheme") has already been
-installed. See the setting `THEME_URLS` in `general.yml` for an
-explanation.
-
-You can also install the sample theme by hand, by running:
-
- bundle exec rails plugin install git://github.com/mysociety/alavetelitheme.git
-
-The sample theme contains examples for nearly everything you might
-want to customise. You should probably make a copy, rename it, and
-use that as the basis for your own theme.
-
-# Make sure your theme is as lightweight as possible
-
-The more you put in your theme, the harder it will be to upgrade to
-future versions of Alaveteli. Everything you place in your theme
-overrides things in the core theme, so if you make a new "main
-template", then new widgets that appear in the core theme won't appear
-on your website.
-
-Therefore, you should consider how you can brand your website without
-changing much in the core theme. The ideal would be if you are able
-to rebrand the site by only changing the CSS. You will also need to
-add custom help pages, as described below.
-
-# Branding the site
-
-The core templates that comprise the layout and user interface of an
-Alaveteli site live in `app/views/`. They use Rails' ERB syntax.
-For example, the template for the home page lives at
-`app/views/general/frontpage.html.erb`, and the template for the "about
-us" page is at `app/views/help/about.html.erb`.
-
-Obviously, you *could* edit those core files directly, but this would
-be a Bad Idea, because you would find it increasingly hard to do
-upgrades. Having said that, sometimes you may want to change the core
-templates in a way that would benefit everyone, in which case, discuss
-the changes on the mailing list, make them in a fork of Alaveteli, and
-then issue a pull request.
-
-Normally, however, you should override these pages **in your own
-theme**, by placing them at a corresponding location within your
-theme's `lib/` directory. These means that a file at
-`vendor/plugins/alavetelitheme/lib/help/about.rhml` will appear
-instead of the core "about us" file.
-
-Rails expects all its stylesheets to live at `<railshome>/public`,
-which presents a problem for plugins. Here's how we solve it: the
-stylesheet and associated resources for your theme live (by
-convention) in `alavetelitheme/public/`. This is symlinked from
-the main Rails app -- see `alavetelitheme/install.rb` to see how this
-happens.
-
-The partial at
-`alavetelitheme/lib/views/general/_before_head_end.html.erb` includes the
-custom CSS in your theme's stylesheet folder (by convention, in
-`alavetelitheme/public/stylesheets/`), with:
-
- <%= stylesheet_link_tag "/alavetelitheme/stylesheets/custom" %>
-
-...which will, usually, need changing for your theme.
-
-# Adding your own categories for public bodies
-
-Categories are implemented in Alaveteli using tags. Specific tags can
-be designated to group authorities together as a category.
-
-There's a file in the sample theme,
-`alavetelitheme/lib/public_body_categories_en.rb`, which contains a
-nested structure that defines categories. It contains a comment
-describing its structure. You should make a copy of this file for each
-locale you support.
-
-# Customising the request states
-
-As mentioned above, if you can possibly live with the
-[default Alaveteli request statuses](https://github.com/mysociety/alaveteli/wiki/Alaveteli's-request-statuses),
-it would be good to do so. Note that you can set how many days counts
-as "overdue" in the main site config file.
-
-If you can't live with the states as they are, there's a very basic
-way to add to them (which will get improved over time). There's not
-currently a way to remove any easily. There is an example of how to
-do this in the `alavetelitheme`.
-
-To do add states, create two modules in your theme,
-`InfoRequestCustomStates` and `RequestControllerCustomStates`. The
-former must have these methods:
-
-* `theme_calculate_status`: return a tag to identify the current state of the request
-* `theme_extra_states`: return a list of tags which identify the extra states you'd like to support
-* `theme_display_status`: return human-readable strings corresponding with these tags
-
-The latter must have one method:
-
-* `theme_describe_state`: Return a notice for the user suitable for
- displaying after they've categorised a request; and redirect them to
- a suitable next page
-
-When you've added your extra states, you also need to create the following files in your theme:
-
-* `lib/views/general/_custom_state_descriptions.html.erb`: Descriptions
- of your new states, suitable for displaying to end users
-* `lib/views/general/_custom_state_transitions_complete.html.erb`:
- Descriptions for any new states that you might characterise as
- 'completion' states, for displaying on the categorisation form that
- we ask requestors to fill out
-* `lib/views/general/_custom_state_transitions_pending.html.erb`: As
- above, but for new states you might characterise as 'pending'
- states.
-
-You can see examples of these customisations in
-[this commit](https://github.com/sebbacon/informatazyrtare-theme/commit/2b240491237bd72415990399904361ce9bfa431d)
-for the Kosovan version of Alaveteli, Informata Zyrtare (ignore the
-file `lib/views/general/_custom_state_transitions.html.erb`, which is
-unused).
-
-# Adding new pages in the navigation
-
-`alavetelitheme/lib/config/custom-routes.rb` allows you to extend the base routes in
-Alaveteli. The example in `alavetelitheme` adds an extra help page.
-You can also use this to override the behaviour of specific pages if
-necessary.
-
-# Adding or overriding models and controllers
-
-If you need to extend the behaviour of Alaveteli at the controller or model level, see `alavetelitheme/lib/controller_patches.rb` and `alavetelitheme/lib/model_patches.rb` for examples.
diff --git a/doc/TRANSLATE.md b/doc/TRANSLATE.md
deleted file mode 100644
index aef2cfdc9..000000000
--- a/doc/TRANSLATE.md
+++ /dev/null
@@ -1,106 +0,0 @@
-The software translations are implemented using GNU gettext, and the
-resource files are managed in Transifex.
-
-The Transifex project is at
-https://www.transifex.net/projects/p/alaveteli/; you'll probably want
-an account there (ask on the mailing list). It has a fairly easy to
-use interface for contributing translations.
-
-# Translation process: translator's view
-
-When a developer adds a new feature to the user interface in
-Alaveteli, they use some code to mark sentences or words ("strings")
-that they think will need to be translated.
-
-When the Alaveteli release manager is planning a release, they upload
-a template containing all the strings to be translated (called a POT)
-to Transifex. This causes your own translations in Transifex to be
-updated with the latest strings.
-
-When you visit Transifex, it will prompt you to fill out values for
-all new strings, and all strings that have been modified. In the case
-where a string has only been slightly modified, such as with
-punctuation ("Hello" has become "Hello!"), Transifex will suggest a
-suitable translation for you (look for the "suggestions" tab under the
-source string).
-
-In order for this feature to work properly, the release manager has to
-download your translations, run a program that inserts the
-suggestions, and then upload them again. Therefore, when a release
-candidate is announced, make sure you have uploaded any outstanding
-translations, or you will lose them.
-
-When a release candidate has been annouced, there is a **translation
-freeze**: during this period, developers must not add any new strings
-to the software, so you can be confident that you're translating
-everything that will be in the final release.
-
-The release manager will also give you a **translation deadline**. After
-this date, you can continue to contribute new translations, but they
-won't make it into the release.
-
-## General notes on translation in Transifex
-
-Some bits of text will have comments attached to them from the Alaveteli
-application developers about the context in which the text appears in the
-application - these comments will appear under the 'Details' tab for the
-text in Transifex.
-
-Some texts will have placeholders in them to indicate that another bit of text generated by Alaveteli will be inserted into them when they're displayed. They will look like `some text with a {{placeholder}}`. For these texts, don't translate the placeholder. It needs to stay exactly the same for the text to be inserted properly.
-
-Similarly, some texts will have some code in angle brackets in them to turn bits of the text into links, and other small bits of HTML formatting. e.g. `please <a href=\"{{url}}\">send it to us</a>`. Again, don't edit the bits in angle brackets, preserve them in your translation, just edit the text around them.
-
-Some bits of text are in the form of two bits of text separated by a `|`
-character e.g. `IncomingMessage|Subject`. These represent attribute names, so
-`IncomingMessage|Subject` is the subject attribute of an incoming message on
-the site. You should not prioritise these types of text when translating -
-they do not appear on the site anywhere at the moment, and when they do,
-they will only be used in the admin interface. If you do translate them, only
-translate the text after the `|`.
-
-# Translation process: release manager's view
-
-Before the Alaveteli release manager cuts a new release branch, they
-must:
-
-* pick a date for the release branch to be cut ("release candidate date")
-* make an announcement to the translators (using the "announcements"
- feature in Transifex) that they should ensure they have any pending
- translations saved in Transifex before the release candidate date
-* make an announcement to the developers that all new strings should
- be committed before the release candidate date
-* on the release candidate date:
- * download (`tx pull -a -f`) and commit all the current translations (important:
- there's no revision history in Transifex!)
- * you should also commit these translations to a hotfix for the
- previous version, so they are preserved against the last known
- good msgids
- * regenerate the POT file and individual PO files for each
- language, using `bundle exec rake
- gettext:store_model_attributes`, followed by `bundle exec rake
- gettext:find`
- * careful of including msgids from themes in `lib/themes`;
- you might want to move them out of the way before running
- the above commands
- * this updates the PO template, but also merges it with the
- individual PO files, marking strings that have only changed
- slightly as "fuzzy"
- * reupload (`tx push -s -t`) the POT and PO files to Transifex from the
- current release branch
- * The point of uploading the PO files is that Transifex
- converts the "fuzzy" suggestions from Transifex into
- "suggestions" under each source string
- * Note that Transifex *does not* preserve fuzzy strings in the
- PO files it makes available for download, on the grounds
- that Transifex supports multiple suggestions, whereas
- gettext only allows one fuzzy suggestion per msgid.
- * remove the fuzzy strings from the local PO files (because they
- make Rails very noisy), and then commit the result. You can do
- this by re-pulling from Transifex.
-* on the release date:
- * download and commit all the current translations to the current
- release branch
-
-# Translations: developers' view
-
-See the [I18n guide](https://github.com/mysociety/alaveteli/wiki/I18n-guide) on the wiki.
diff --git a/lib/acts_as_xapian/acts_as_xapian.rb b/lib/acts_as_xapian/acts_as_xapian.rb
index b30bb4d10..6520a20a4 100644
--- a/lib/acts_as_xapian/acts_as_xapian.rb
+++ b/lib/acts_as_xapian/acts_as_xapian.rb
@@ -21,10 +21,24 @@ rescue LoadError
$acts_as_xapian_bindings_available = false
end
+module Xapian
+ class QueryParser
+ def unstem(term)
+ words = []
+
+ Xapian._safelyIterate(unstem_begin(term), unstem_end(term)) do |item|
+ words << item.term
+ end
+
+ words
+ end
+ end
+end
+
module ActsAsXapian
######################################################################
# Module level variables
- # XXX must be some kind of cattr_accessor that can do this better
+ # TODO: must be some kind of cattr_accessor that can do this better
def ActsAsXapian.bindings_available
$acts_as_xapian_bindings_available
end
@@ -109,12 +123,12 @@ module ActsAsXapian
@@db_path = File.join(db_parent_path, environment)
# make some things that don't depend on the db
- # XXX this gets made once for each acts_as_xapian. Oh well.
+ # TODO: this gets made once for each acts_as_xapian. Oh well.
@@stemmer = Xapian::Stem.new('english')
end
# Opens / reopens the db for reading
- # XXX we perhaps don't need to rebuild database and enquire and queryparser -
+ # TODO: we perhaps don't need to rebuild database and enquire and queryparser -
# but db.reopen wasn't enough by itself, so just do everything it's easier.
def ActsAsXapian.readable_init
raise NoXapianRubyBindingsError.new("Xapian Ruby bindings not installed") unless ActsAsXapian.bindings_available
@@ -188,7 +202,7 @@ module ActsAsXapian
raise "Z is reserved for stemming terms" if term[1] == "Z"
raise "Already have code '" + term[1] + "' in another model but with different prefix '" + @@terms_by_capital[term[1]] + "'" if @@terms_by_capital.include?(term[1]) && @@terms_by_capital[term[1]] != term[2]
@@terms_by_capital[term[1]] = term[2]
- # XXX use boolean here so doesn't stem our URL names in WhatDoTheyKnow
+ # TODO: use boolean here so doesn't stem our URL names in WhatDoTheyKnow
# If making acts_as_xapian generic, would really need to make the :terms have
# another option that lets people choose non-boolean for terms that need it
# (i.e. searching explicitly within a free text field)
@@ -231,7 +245,7 @@ module ActsAsXapian
raise "acts_as_xapian hasn't been called in any models" if @@init_values.empty?
# if DB is not nil, then we're already initialised, so don't do it
- # again XXX reopen it each time, xapian_spec.rb needs this so database
+ # again TODO: reopen it each time, xapian_spec.rb needs this so database
# gets written twice correctly.
# return unless @@writable_db.nil?
@@ -472,16 +486,42 @@ module ActsAsXapian
# Return just normal words in the query i.e. Not operators, ones in
# date ranges or similar. Use this for cheap highlighting with
# TextHelper::highlight, and excerpt.
- def words_to_highlight
- # TODO: In Ruby 1.9 we can do matching of any unicode letter with \p{L}
- # But we still need to support ruby 1.8 for the time being so...
- query_nopunc = self.query_string.gsub(/[^ёЁа-яА-Яa-zA-Zà-üÀ-Ü0-9:\.\/_]/iu, " ")
- query_nopunc = query_nopunc.gsub(/\s+/, " ")
- words = query_nopunc.split(" ")
- # Remove anything with a :, . or / in it
- words = words.find_all {|o| !o.match(/(:|\.|\/)/) }
- words = words.find_all {|o| !o.match(/^(AND|NOT|OR|XOR)$/) }
- return words
+ def words_to_highlight(opts = {})
+ default_opts = { :include_original => false, :regex => false }
+ opts = default_opts.merge(opts)
+
+ # Reject all prefixes other than Z, which we know is reserved for stems
+ terms = query.terms.reject { |t| t.term.first.match(/^[A-Y]$/) }
+ # Collect the stems including the Z prefix
+ raw_stems = terms.map { |t| t.term if t.term.start_with?('Z') }.compact.uniq.sort
+ # Collect stems, chopping the Z prefix off
+ stems = raw_stems.map { |t| t[1..-1] }.compact.sort
+ # Collect the non-stem terms
+ words = terms.map { |t| t.term unless t.term.start_with?('Z') }.compact.sort
+
+ # Add the unstemmed words from the original query
+ # Sometimes stems can be unhelpful with the :regex option, for example
+ # stemming 'boring' results in us trying to highlight 'bore'.
+ if opts[:include_original]
+ raw_stems.each do |raw_stem|
+ words << ActsAsXapian.query_parser.unstem(raw_stem).uniq
+ end
+
+ words = words.any? ? words.flatten.uniq : []
+ end
+
+ if opts[:regex]
+ stems.map! { |w| /\b(#{ w })\w*\b/iu }
+ words.map! { |w| /\b(#{ w })\b/iu }
+ end
+
+ if RUBY_VERSION.to_f >= 1.9
+ (stems + words).map! do |term|
+ term.is_a?(String) ? term.force_encoding('UTF-8') : term
+ end
+ else
+ stems + words
+ end
end
# Text for lines in log file
@@ -510,7 +550,7 @@ module ActsAsXapian
# Find the documents by their unique term
input_models_query = Xapian::Query.new(Xapian::Query::OP_OR, query_models.map{|m| "I" + m.xapian_document_term})
ActsAsXapian.enquire.query = input_models_query
- matches = ActsAsXapian.enquire.mset(0, 100, 100) # XXX so this whole method will only work with 100 docs
+ matches = ActsAsXapian.enquire.mset(0, 100, 100) # TODO: so this whole method will only work with 100 docs
# Get set of relevant terms for those documents
selection = Xapian::RSet.new()
@@ -601,7 +641,7 @@ module ActsAsXapian
begin
if job.action == 'update'
- # XXX Index functions may reference other models, so we could eager load here too?
+ # TODO: Index functions may reference other models, so we could eager load here too?
model = job.model.constantize.find(job.model_id) # :include => cls.constantize.xapian_options[:include]
model.xapian_index
elsif job.action == 'destroy'
@@ -717,7 +757,7 @@ module ActsAsXapian
ActiveRecord::Base.connection.disconnect!
- pid = Process.fork # XXX this will only work on Unix, tough
+ pid = Process.fork # TODO: this will only work on Unix, tough
if pid
Process.waitpid(pid)
if not $?.success?
@@ -898,7 +938,7 @@ module ActsAsXapian
ActsAsXapian.term_generator.document = doc
for text in texts_to_index
ActsAsXapian.term_generator.increase_termpos # stop phrases spanning different text fields
- # XXX the "1" here is a weight that could be varied for a boost function
+ # TODO: the "1" here is a weight that could be varied for a boost function
ActsAsXapian.term_generator.index_text(xapian_value(text, nil, true), 1)
end
end
@@ -975,5 +1015,3 @@ end
# Reopen ActiveRecord and include the acts_as_xapian method
ActiveRecord::Base.extend ActsAsXapian::ActsMethods
-
-
diff --git a/lib/alaveteli_file_types.rb b/lib/alaveteli_file_types.rb
index e89bc0c78..617048c05 100644
--- a/lib/alaveteli_file_types.rb
+++ b/lib/alaveteli_file_types.rb
@@ -16,15 +16,15 @@ class AlaveteliFileTypes
"tnef" => 'application/ms-tnef',
"tif" => 'image/tiff',
"gif" => 'image/gif',
- "jpg" => 'image/jpeg', # XXX add jpeg
+ "jpg" => 'image/jpeg', # TODO: add jpeg
"png" => 'image/png',
"bmp" => 'image/bmp',
- "html" => 'text/html', # XXX add htm
+ "html" => 'text/html', # TODO: add htm
"vcf" => 'text/x-vcard',
"zip" => 'application/zip',
"delivery-status" => 'message/delivery-status'
}
- # XXX doesn't have way of choosing default for inverse map - might want to add
+ # TODO: doesn't have way of choosing default for inverse map - might want to add
# one when you need it
FileExtensionToMimeTypeRev = FileExtensionToMimeType.invert
@@ -46,7 +46,7 @@ class AlaveteliFileTypes
m = Mahoro.new(Mahoro::MIME)
mahoro_type = m.buffer(content)
mahoro_type.strip!
- # XXX we shouldn't have to check empty? here, but Mahoro sometimes returns a blank line :(
+ # TODO: we shouldn't have to check empty? here, but Mahoro sometimes returns a blank line :(
# e.g. for InfoRequestEvent 17930
if mahoro_type.nil? || mahoro_type.empty?
return nil
diff --git a/lib/has_tag_string/has_tag_string.rb b/lib/has_tag_string/has_tag_string.rb
index 4022faaac..c28720f04 100644
--- a/lib/has_tag_string/has_tag_string.rb
+++ b/lib/has_tag_string/has_tag_string.rb
@@ -10,7 +10,7 @@ module HasTagString
# Represents one tag of one model.
# The migration to make this is currently only in WDTK code.
class HasTagStringTag < ActiveRecord::Base
- # XXX strip_attributes!
+ # TODO: strip_attributes!
validates_presence_of :name
@@ -46,7 +46,7 @@ module HasTagString
# Methods which are added to the model instances being tagged
module InstanceMethods
# Given an input string of tags, sets all tags to that string.
- # XXX This immediately saves the new tags.
+ # TODO: This immediately saves the new tags.
def tag_string=(tag_string)
if tag_string.nil?
tag_string = ""
diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb
index e019eba97..190e79e97 100644
--- a/lib/mail_handler/backends/mail_backend.rb
+++ b/lib/mail_handler/backends/mail_backend.rb
@@ -323,7 +323,7 @@ module MailHandler
end
end
end
- # XXX call _convert_part_body_to_text here, but need to get charset somehow
+ # TODO: call _convert_part_body_to_text here, but need to get charset somehow
# e.g. http://www.whatdotheyknow.com/request/1593/response/3088/attach/4/Freedom%20of%20Information%20request%20-%20car%20oval%20sticker:%20Article%2020,%20Convention%20on%20Road%20Traffic%201949.txt
body = headers + "\n" + body
end
diff --git a/lib/mail_handler/mail_handler.rb b/lib/mail_handler/mail_handler.rb
index 53033d440..47015f207 100644
--- a/lib/mail_handler/mail_handler.rb
+++ b/lib/mail_handler/mail_handler.rb
@@ -70,7 +70,7 @@ module MailHandler
# note re. charset: TMail always tries to convert email bodies
# to UTF8 by default, so normally it should already be that.
text = ''
- # XXX - tell all these command line tools to return utf-8
+ # TODO: - tell all these command line tools to return utf-8
if content_type == 'text/plain'
text += body + "\n\n"
else
@@ -151,7 +151,7 @@ module MailHandler
body = entry.get_input_stream.read
rescue
# move to next attachment silently if there were problems
- # XXX really should reduce this to specific exceptions?
+ # TODO: really should reduce this to specific exceptions?
# e.g. password protected
next
end
diff --git a/lib/public_body_csv.rb b/lib/public_body_csv.rb
new file mode 100644
index 000000000..afb5d9043
--- /dev/null
+++ b/lib/public_body_csv.rb
@@ -0,0 +1,95 @@
+require 'csv'
+
+# Public: Generate a CSV representation of PublicBody instances
+#
+# Examples
+#
+# bodies = PublicBody.search('useless')
+#
+# csv = PublicBodyCSV.new(:fields => [:name, :calculated_home_page],
+# :headers => ['Name', 'Home Page'])
+#
+# bodies.each { |body| csv << body }
+#
+# csv.generate
+# # => Name,Home Page
+# Department for Humpadinking,http://localhost
+# Ministry of Silly Walks,http://www.localhost
+# Department of Loneliness,http://localhost
+class PublicBodyCSV
+
+ def self.default_fields
+ [:name,
+ :short_name,
+ :url_name,
+ :tag_string,
+ :calculated_home_page,
+ :publication_scheme,
+ :disclosure_log,
+ :notes,
+ :created_at,
+ :updated_at,
+ :version]
+ end
+
+ # TODO: Generate headers from fields
+ def self.default_headers
+ ['Name',
+ 'Short name',
+ 'URL name',
+ 'Tags',
+ 'Home page',
+ 'Publication scheme',
+ 'Disclosure log',
+ 'Notes',
+ 'Created at',
+ 'Updated at',
+ 'Version']
+ end
+
+ attr_reader :fields, :headers, :rows
+
+ def initialize(args = {})
+ @fields = args.fetch(:fields, self.class.default_fields)
+ @headers = args.fetch(:headers, self.class.default_headers)
+ @rows = []
+ end
+
+ def <<(public_body)
+ # Allow join_rows to handle newlines because of differences between
+ # CSV.generate_line in 1.8 / 1.9+
+ if RUBY_VERSION.to_f >= 1.9
+ rows << CSV.generate_line(collect_public_body_attributes(public_body), :row_sep => '')
+ else
+ rows << CSV.generate_line(collect_public_body_attributes(public_body))
+ end
+ end
+
+ # TODO: Just use CSV.generate when Ruby 1.8.7 support is dropped
+ def generate
+ csv = generate_header_row
+ csv << join_rows
+ csv << "\n"
+ end
+
+ private
+
+ def join_rows
+ rows.join("\n")
+ end
+
+ def generate_header_row
+ # Add a newline because of differences between
+ # CSV.generate_line in 1.8 / 1.9+
+ row = CSV.generate_line(headers)
+ row += "\n" unless RUBY_VERSION.to_f >= 1.9
+ row
+ end
+
+ def collect_public_body_attributes(public_body)
+ fields.map do |field|
+ public_body.respond_to?(field) ? public_body.send(field) : ''
+ end
+ end
+
+end
diff --git a/lib/strip_attributes/strip_attributes.rb b/lib/strip_attributes/strip_attributes.rb
index 130d10185..12350277d 100644
--- a/lib/strip_attributes/strip_attributes.rb
+++ b/lib/strip_attributes/strip_attributes.rb
@@ -1,6 +1,6 @@
module StripAttributes
# Strips whitespace from model fields and leaves nil values as nil.
- # XXX this differs from official StripAttributes, as it doesn't make blank cells null.
+ # TODO: this differs from official StripAttributes, as it doesn't make blank cells null.
def strip_attributes!(options = nil)
before_validation do |record|
attribute_names = StripAttributes.narrow(record.attribute_names, options)
diff --git a/lib/tasks/config_files.rake b/lib/tasks/config_files.rake
index d0e4001f0..60814cb27 100644
--- a/lib/tasks/config_files.rake
+++ b/lib/tasks/config_files.rake
@@ -50,7 +50,7 @@ namespace :config_files do
desc 'Convert Debian .ugly crontab file in config to a form suitable for installing in /etc/cron.d'
task :convert_crontab => :environment do
- example = 'rake config_files:convert_crontab DEPLOY_USER=deploy VHOST_DIR=/dir/above/alaveteli VCSPATH=alaveteli SITE=alaveteli CRONTAB=config/crontab-example'
+ example = 'rake config_files:convert_crontab DEPLOY_USER=deploy VHOST_DIR=/dir/above/alaveteli VCSPATH=alaveteli SITE=alaveteli CRONTAB=config/crontab-example MAILTO=cron-alaveteli@example.org'
check_for_env_vars(['DEPLOY_USER',
'VHOST_DIR',
'VCSPATH',
@@ -60,7 +60,8 @@ namespace :config_files do
:user => ENV['DEPLOY_USER'],
:vhost_dir => ENV['VHOST_DIR'],
:vcspath => ENV['VCSPATH'],
- :site => ENV['SITE']
+ :site => ENV['SITE'],
+ :mailto => ENV.fetch('MAILTO') { "cron-#{ ENV['SITE'] }@mysociety.org" }
}
convert_ugly(ENV['CRONTAB'], replacements).each do |line|
puts line
diff --git a/locale/ar/app.po b/locale/ar/app.po
index ee32d64fe..28fa4ecc5 100644
--- a/locale/ar/app.po
+++ b/locale/ar/app.po
@@ -3,11 +3,11 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# aelharaty <aelharaty@gmail.com>, 2012
-# aelharaty <aelharaty@gmail.com>, 2012
-# radproject <radhouanef@gmail.com>, 2013-2014
-# radproject <radhouanef@gmail.com>, 2013
-# radproject <radhouanef@gmail.com>, 2013
+# Aladdin El-Haraty <aelharaty@gmail.com>, 2012
+# Aladdin El-Haraty <aelharaty@gmail.com>, 2012
+# radhouane fazai <radhouanef@gmail.com>, 2013-2014
+# radhouane fazai <radhouanef@gmail.com>, 2013
+# radhouane fazai <radhouanef@gmail.com>, 2013
# <rwiwina@live.fr>, 2013
# <sana_bj@live.fr>, 2013
msgid ""
diff --git a/locale/bg/app.po b/locale/bg/app.po
index d162d0022..17a1898b8 100644
--- a/locale/bg/app.po
+++ b/locale/bg/app.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# antitoxic <antitoxic@gmail.com>, 2013
-# antitoxic <antitoxic@gmail.com>, 2013
+# Anton Stoychev <antitoxic@gmail.com>, 2013
+# Anton Stoychev <antitoxic@gmail.com>, 2013
# louisecrow <louise@mysociety.org>, 2014
# louisecrow <louise@mysociety.org>, 2014
# Valentin Laskov <laskov@festa.bg>, 2013-2014
@@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-15 12:46+0100\n"
-"PO-Revision-Date: 2014-05-15 11:56+0000\n"
-"Last-Translator: louisecrow <louise@mysociety.org>\n"
+"PO-Revision-Date: 2014-05-19 10:59+0000\n"
+"Last-Translator: Valentin Laskov <laskov@festa.bg>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/alaveteli/language/bg/)\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
@@ -2480,7 +2480,7 @@ msgid "The request has been <strong>refused</strong>"
msgstr "Заявлението беше <strong>отхвърлено</strong>"
msgid "The request has been updated since you originally loaded this page. Please check for any new incoming messages below, and try again."
-msgstr "Заявлението беше обновено от както заредихте тази страница. Моля, проверете за нови съобщения по-долу, и опитайте отново."
+msgstr "Заявлението беше обновено откакто заредихте тази страница. Моля, проверете за нови съобщения по-долу, и опитайте отново."
msgid "The request is <strong>waiting for clarification</strong>."
msgstr "Заявлението <strong>очаква пояснение</strong>."
@@ -2582,7 +2582,7 @@ msgid "Then you will be notified whenever someone requests something or gets a r
msgstr "След това ще бъдете уведомявани, когато някой отправи заявление или получи отговор от '{{public_body_name}}'."
msgid "Then you will be updated whenever the request '{{request_title}}' is updated."
-msgstr ""
+msgstr "След това ще бъдете уведомявани при всяко актуализиране на заявлението '{{request_title}}'."
msgid "Then you'll be allowed to send FOI requests."
msgstr "След това Вие ще можете да изпращате заявления за ДдИ."
diff --git a/locale/cs/app.po b/locale/cs/app.po
index 4bbd8c846..ea9329754 100644
--- a/locale/cs/app.po
+++ b/locale/cs/app.po
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# jui <appukonrad@gmail.com>, 2012
+# Jiří Vírava <appukonrad@gmail.com>, 2012
# Hana Huntova <>, 2012-2014
# Jana Kneschke <>, 2012-2013
# janakneschke <jana.kneschke@gmail.com>, 2013
@@ -11,7 +11,7 @@
# janakneschke <jana.kneschke@gmail.com>, 2013
# josefpospisil <josef.pospisil@laststar.eu>, 2012
# josefpospisil <josef.pospisil@laststar.eu>, 2012
-# jui <appukonrad@gmail.com>, 2012
+# Jiří Vírava <appukonrad@gmail.com>, 2012
# louisecrow <louise@mysociety.org>, 2012-2013
# louisecrow <louise@mysociety.org>, 2013
# louisecrow <louise@mysociety.org>, 2012
@@ -20,8 +20,8 @@ msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-15 12:46+0100\n"
-"PO-Revision-Date: 2014-05-15 11:56+0000\n"
-"Last-Translator: louisecrow <louise@mysociety.org>\n"
+"PO-Revision-Date: 2014-06-12 13:59+0000\n"
+"Last-Translator: Hana Huntova <>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/alaveteli/language/cs/)\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
@@ -48,10 +48,10 @@ msgid " - wall"
msgstr "- nástěnka"
msgid " < "
-msgstr ""
+msgstr "<"
msgid " << "
-msgstr ""
+msgstr "<<"
msgid " <strong>Note:</strong>\\n We will send you an email. Follow the instructions in it to change\\n your password."
msgstr ""
@@ -65,10 +65,10 @@ msgid " <strong>Summarise</strong> the content of any information returned. "
msgstr " <strong>Shrňte</strong> obsah odpovědi na váš dotaz. "
msgid " > "
-msgstr ""
+msgstr ">"
msgid " >> "
-msgstr ""
+msgstr "> >"
msgid " Advise on how to <strong>best clarify</strong> the request."
msgstr " Poraďte, <strong>jak co nejlépe upřesnit</strong> tento dotaz."
@@ -127,13 +127,13 @@ msgid "'{{link_to_user}}', a person"
msgstr "od uživatele '{{link_to_user}}'."
msgid "(hide)"
-msgstr ""
+msgstr "(skrýt)"
msgid "(or <a href=\"{{url}}\">sign in</a>)"
-msgstr ""
+msgstr "(nebo <a href=\"{{url}}\">přihlašte se</a>)"
msgid "(show)"
-msgstr ""
+msgstr "(ukázat)"
msgid "*unknown*"
msgstr "*neznámá data*"
@@ -155,7 +155,7 @@ msgid "1. Select an authority"
msgstr "1. Vyberte instituci"
msgid "1. Select authorities"
-msgstr ""
+msgstr "1. Vyberte instituce"
msgid "2. Ask for Information"
msgstr "2. Vzneste dotaz"
@@ -234,7 +234,7 @@ msgstr ""
"<p><strong>Pošleme vám e-mail </strong> až vám instituce odpoví nebo po {{late_number_of_days}} dní po vypršení lhůty na odpověď.</p>\\n <p>Pokud o svém dotazu budete dále psát (například na nějakém fóru či blogu), přiložte odkaz na stránky IPV a k dotazu přidejte komentář.</p>"
msgid "<p>Your {{law_used_full}} requests will be <strong>sent</strong> shortly!</p>\\n <p><strong>We will email you</strong> when they have been sent.\\n We will also email you when there is a response to any of them, or after {{late_number_of_days}} working days if the authorities still haven't\\n replied by then.</p>\\n <p>If you write about these requests (for example in a forum or a blog) please link to this page.</p>"
-msgstr ""
+msgstr "<p>Vaše {{law_used_full}} žádosti budou <strong>brzy </strong> odeslány!</p>\\n <p><strong>Obdržíte e-mail, </strong> až v pořádku odejdou.\\n E-mail vám také přijde pokaždé, když na některou z nich instituce odpoví , nebo po uplynutí {{late_number_of_days}} dní, které má instituce na odpověď.</p>\\n <p> Přidejte odkaz na stránky IPV pokaždé, když se o svém projetku zmíníte (na fóru, blogu či při výměně informací s novináři).</p>"
msgid "<p>{{site_name}} is currently in maintenance. You can only view existing requests. You cannot make new ones, add followups or annotations, or otherwise change the database.</p> <p>{{read_only}}</p>"
msgstr "<p>Stránky {{site_name}} jsou právě v údržbě. Můžete si pouze prohlížet již vznesené dotazy. Nelze vznášet nové dotazy, přidávat poznámky či odpovědi, nebo jiným způsobem upravovat databázi</p> <p>{{read_only}}</p>"
@@ -389,10 +389,10 @@ msgstr ""
" <strong>shrnutím odpovědi</strong>."
msgid "Add authority - {{public_body_name}}"
-msgstr ""
+msgstr "Přidejte instituci- {{public_body_name}}"
msgid "Add the authority:"
-msgstr ""
+msgstr "Přidejte instituci:"
msgid "Added on {{date}}"
msgstr "Vloženo {{date}}"
@@ -483,13 +483,13 @@ msgid "Ask for <strong>specific</strong> documents or information, this site is
msgstr "Požádejte o <strong>konkrétní</strong> dokumenty nebo informace, tyto stránky nejsou určeny pro obecné dotazy."
msgid "Ask us to add an authority"
-msgstr ""
+msgstr "Požádejte o přidání instituce"
msgid "Ask us to update FOI email"
-msgstr ""
+msgstr "Požádejte nás o změnu e-mailové adresy podatelny"
msgid "Ask us to update the email address for {{public_body_name}}"
-msgstr ""
+msgstr "Požádejte nás o změnu e-mailové adresy pro {{public_body_name}}"
msgid "At the bottom of this page, write a reply to them trying to persuade them to scan it in\\n (<a href=\"{{url}}\">more details</a>)."
msgstr ""
@@ -503,10 +503,10 @@ msgid "Attachment:"
msgstr "Příloha:"
msgid "Authority email:"
-msgstr ""
+msgstr "E-mailová adresa instituce"
msgid "Authority:"
-msgstr ""
+msgstr "Instituce:"
msgid "Awaiting classification."
msgstr "Čeká se zařazení."
@@ -518,7 +518,7 @@ msgid "Awaiting response."
msgstr "Čeká se na odpověď."
msgid "Batch created by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Dávka vytvořena {{info_request_user}} dne {{date}}."
msgid "Beginning with"
msgstr "Začínající na"
@@ -608,7 +608,7 @@ msgid "Check you haven't included any <strong>personal information</strong>."
msgstr "Zkontrolujte, zda jste neuvedli nějakou <strong>osobní informaci</strong>."
msgid "Choose a reason"
-msgstr ""
+msgstr "Vyberte důvod"
msgid "Choose your profile photo"
msgstr "Vyberte své profilové foto:"
@@ -617,7 +617,7 @@ msgid "Clarification"
msgstr "Vysvětlení"
msgid "Clarification sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Upřesnění bylo odesláno {{public_body_name}} od uživatele {{info_request_user}} dne {{date}}."
msgid "Clarify your FOI request - "
msgstr "Upřesněte svůj dotaz – "
@@ -638,7 +638,7 @@ msgid "Close"
msgstr "Zavřít"
msgid "Close the request and respond:"
-msgstr ""
+msgstr "Uzavřete žádost a odpovězte:"
msgid "Comment"
msgstr "Komentář"
@@ -674,7 +674,7 @@ msgid "Confirm you want to follow the request '{{request_title}}'"
msgstr "Potvrďte, že chcete sledovat vznesený dotaz '{{request_title}}'"
msgid "Confirm your FOI request to {{public_body_name}}"
-msgstr ""
+msgstr "Potvrďte svou žádost pro {{public_body_name}}"
msgid "Confirm your account on {{site_name}}"
msgstr "Potvďte svou registraci na stránkách {{site_name}}"
@@ -701,10 +701,10 @@ msgid "Contact {{site_name}}"
msgstr "Kontaktujte stránky {{site_name}}"
msgid "Contains defamatory material"
-msgstr ""
+msgstr "Obsahuje (deformatory) materiál"
msgid "Contains personal information"
-msgstr ""
+msgstr "Obsahuje osobní informace"
msgid "Could not identify the request from the email address"
msgstr "Dotaz z této e-mailové adresy nemohl být identifikován"
@@ -713,7 +713,7 @@ msgid "Couldn't understand the image file that you uploaded. PNG, JPEG, GIF and
msgstr "Nahraný soubor nebyl rozeznán. Jsou podporovány soubory s koncovkou PNG, JPEG, GIF a další. "
msgid "Created by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Vytvořeno {{info_request_user}} dne {{date}}."
msgid "Crop your profile photo"
msgstr "Upravte své profilové foto"
@@ -731,6 +731,9 @@ msgstr "Datum:"
msgid "Dear [Authority name],"
msgstr ""
+"[Authority name]\n"
+"\n"
+"Vážená paní, vážený pane, "
msgid "Dear {{name}},"
msgstr "Vážený/á {{name}},"
@@ -744,13 +747,13 @@ msgstr ""
"Vážená paní, vážený pane,"
msgid "Dear {{user_name}},"
-msgstr ""
+msgstr "Milý {{user_name}},"
msgid "Default locale"
msgstr "Původní nastavení"
msgid "Defunct."
-msgstr ""
+msgstr "Nefunkční."
msgid "Delayed response to your FOI request - "
msgstr "Zpožděná odpověď na váš dotaz –"
@@ -780,7 +783,7 @@ msgid "Disclosure log URL"
msgstr "Disclosure log URL"
msgid "Don't have a superuser account yet?"
-msgstr ""
+msgstr "Nemáte ještě vytvořen \"superuser\" přístup?"
msgid "Don't want to address your message to {{person_or_body}}? You can also write to:"
msgstr "Nechcete svou zprávu adresovat na {{person_or_body}}? Můžete také napsat:"
@@ -827,7 +830,7 @@ msgid "Email me future updates to this request"
msgstr "Pošlete mi budoucí aktualizace tohoto dotazu. "
msgid "Email:"
-msgstr ""
+msgstr "E-mail:"
msgid "Enter words that you want to find separated by spaces, e.g. <strong>climbing lane</strong>"
msgstr "Slova, která chcete najít, musí být oddělena mezerou, například <strong>přechod pro chodce</strong>"
@@ -951,7 +954,7 @@ msgid "Follow this link to see the request:"
msgstr "Pro úpravu statusu dotazu přejděte na tento odkaz:"
msgid "Follow this link to see the requests:"
-msgstr ""
+msgstr "Prohlédněte si žádost na tomto odkazu:"
msgid "Follow this person"
msgstr "Sledovat tohoto uživatele"
@@ -975,7 +978,7 @@ msgid "Follow up messages to existing requests are sent to "
msgstr "Zasílat aktualizace zpráv u tohoto dotazu na"
msgid "Follow up sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Uživatel {{info_request_user}} odeslal odpověď {{public_body_name}} dne {{date}}."
#. "Follow ups" in this context means further
#. messages sent by the requester to the authority after
@@ -1064,7 +1067,7 @@ msgid "Hello! We have an <a href=\"{{url}}\">important message</a> for visitors
msgstr "Hello! We have an <a href=\"{{url}}\">important message</a> for visitors outside {{country_name}}"
msgid "Hello! We have an <a href=\"{{url}}\">important message</a> for visitors in other countries"
-msgstr ""
+msgstr "Hello! We have an <a href=\"{{url}}\">important message</a> for visitors in other countries"
msgid "Hello! You can make Freedom of Information requests within {{country_name}} at {{link_to_website}}"
msgstr "Dobrý den, můžete vznést dotaz v zemi {{country_name}} na stránkách {{link_to_website}}"
@@ -1263,10 +1266,10 @@ msgid "IncomingMessage|Mail from domain"
msgstr "IncomingMessage| Mail z domény"
msgid "IncomingMessage|Prominence"
-msgstr ""
+msgstr "PříchozíZpráva|Důležitost"
msgid "IncomingMessage|Prominence reason"
-msgstr ""
+msgstr "PříchozíZpráva|Důležitost důvod"
msgid "IncomingMessage|Sent at"
msgstr "IncomingMessage | Odeslána v"
@@ -1284,19 +1287,19 @@ msgid "Info request"
msgstr "Dotaz na informaci"
msgid "Info request batch"
-msgstr ""
+msgstr "Hromadná žádost"
msgid "Info request event"
msgstr "Dotaz na informaci – akce ??"
msgid "InfoRequestBatch|Body"
-msgstr ""
+msgstr "HromadnáŽádost|Obsah"
msgid "InfoRequestBatch|Sent at"
-msgstr ""
+msgstr "HromadnáŽádost|Odeslána pro"
msgid "InfoRequestBatch|Title"
-msgstr ""
+msgstr "HromadnáŽádost|Předmět"
msgid "InfoRequestEvent|Calculated state"
msgstr "InfoRequestEvent| V procesu"
@@ -1362,7 +1365,7 @@ msgid "Internal review request"
msgstr "Doplnění dotazu"
msgid "Internal review request sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Uživatel {{info_request_user}} odeslal {{public_body_name}} žádost o přehodnocení dotazu dne {{public_body_name}}."
msgid "Is {{email_address}} the wrong address for {{type_of_request}} requests to {{public_body_name}}? If so, please contact us using this form:"
msgstr "Je {{email_address}} chybná adresa pro {{type_of_request}} dotazy vznesené na instituci {{public_body_name}}? Pokud ano, prosíme kontaktujte nás vyplněním tohoto formuláře:"
@@ -1457,13 +1460,13 @@ msgid "MailServerLog|Order"
msgstr "MailServerLog|Příkaz"
msgid "Make a batch request"
-msgstr ""
+msgstr "Vzneste hromadný dotaz"
msgid "Make a new EIR request"
-msgstr ""
+msgstr "Podejte novou EIR žádost"
msgid "Make a new FOI request"
-msgstr ""
+msgstr "Vzneste novou žádost"
msgid "Make a new<br/>\\n <strong>Freedom <span>of</span><br/>\\n Information<br/>\\n request</strong>"
msgstr ""
@@ -1476,13 +1479,13 @@ msgid "Make a request"
msgstr "Vzneste dotaz"
msgid "Make a request to these authorities"
-msgstr ""
+msgstr "Vzneste dotaz na tyto instituce"
msgid "Make a request to this authority"
msgstr "Vzneste žádost na tuto instituci"
msgid "Make an {{law_used_short}} request"
-msgstr ""
+msgstr "Vzneste {{law_used_short}} "
msgid "Make an {{law_used_short}} request to '{{public_body_name}}'"
msgstr "Vzneste {{law_used_short}} dotaz na '{{public_body_name}}'"
@@ -1605,13 +1608,13 @@ msgid "Not a valid FOI request"
msgstr "Neplatné vznesení dotazu"
msgid "Not a valid request"
-msgstr ""
+msgstr "Toto není možné"
msgid "Note that the requester will not be notified about your annotation, because the request was published by {{public_body_name}} on their behalf."
msgstr "Rádi bychom vás upozornili, že tazatel nebude o vašem komentáři informován, jelikož tento dotaz byl zveřejněn na žádost instituce {{public_body_name}}."
msgid "Notes:"
-msgstr ""
+msgstr "Poznámky:"
msgid "Now check your email!"
msgstr "Nyní zkontrolujte svou e-mailovou schránku!"
@@ -1671,7 +1674,7 @@ msgid "Only the authority can reply to this request, but there is no \"From\" ad
msgstr "Pouze instituce může odpovědět na váš dotaz, ale v políčku \"Od\" není žádná adresa "
msgid "Or make a <a href=\"{{url}}\">batch request</a> to <strong>multiple authorities</strong> at once."
-msgstr ""
+msgstr "Nebo vzneste <a href=\"{{url}}\">batch request</a> to <strong>na více institucí</strong> najednou."
msgid "Or search in their website for this information."
msgstr "Nebo prohledejte tuto informaci na jejich internetových stránkách."
@@ -1680,7 +1683,7 @@ msgid "Original request sent"
msgstr "Původní dotaz odeslán"
msgid "Other"
-msgstr ""
+msgstr "Jiné"
msgid "Other:"
msgstr "Jiné:"
@@ -1823,7 +1826,7 @@ msgid "Please enter the message you want to send"
msgstr "Tady napište zprávu, kterou chcete poslat. "
msgid "Please enter the name of the authority"
-msgstr ""
+msgstr "Prosím vložte název instituce"
msgid "Please enter the same password twice"
msgstr "Vložte dvakrát heslo. "
@@ -1885,7 +1888,7 @@ msgid "Please sign in or make a new account."
msgstr "Prosíme přihlašte se nebo se zaregistrujte."
msgid "Please tell us more:"
-msgstr ""
+msgstr "Prosím sdělte nám více"
msgid "Please type a message and/or choose a file containing your response."
msgstr "Napište zprávu a/nebo vyberte soubor, který obsahuje vaši odpověď."
@@ -1945,7 +1948,7 @@ msgid "Powered by <a href=\"http://www.alaveteli.org/\">Alaveteli</a>"
msgstr "Powered by <a href=\"http://www.alaveteli.org/\">Alaveteli</a>"
msgid "Prefer not to receive emails?"
-msgstr ""
+msgstr "Nechcete dostávat e-maily?"
msgid "Prev"
msgstr "Předešlý"
@@ -1957,10 +1960,10 @@ msgid "Preview new annotation on '{{info_request_title}}'"
msgstr "Náhled nové anotace týkající se '{{info_request_title}}'"
msgid "Preview new {{law_used_short}} request"
-msgstr ""
+msgstr "Náhled nové {{law_used_short}} "
msgid "Preview new {{law_used_short}} request to '{{public_body_name}}"
-msgstr ""
+msgstr "Náhled nové {{law_used_short}} žádosti na '{{public_body_name}}"
msgid "Preview your annotation"
msgstr "Náhled poznámky"
@@ -2017,7 +2020,7 @@ msgid "Public body"
msgstr "Instituce"
msgid "Public body change request"
-msgstr ""
+msgstr "Žádost o změnu instituce"
msgid "Public notes"
msgstr "Poznámka (viditelná pro všechny)"
@@ -2029,25 +2032,25 @@ msgid "Public page not available"
msgstr "Stránku nelze načíst"
msgid "PublicBodyChangeRequest|Is open"
-msgstr ""
+msgstr "ŽádostOZměnuInstituce otevřena"
msgid "PublicBodyChangeRequest|Notes"
-msgstr ""
+msgstr "ŽádostOZměnuInstitucePoznámky"
msgid "PublicBodyChangeRequest|Public body email"
-msgstr ""
+msgstr "ŽádostOZměnuInstituce e-mail"
msgid "PublicBodyChangeRequest|Public body name"
-msgstr ""
+msgstr "ŽádostOZměnuInstituce název"
msgid "PublicBodyChangeRequest|Source url"
-msgstr ""
+msgstr "ŽádostOZměnuInstituce|Zdroj url"
msgid "PublicBodyChangeRequest|User email"
-msgstr ""
+msgstr "ŽádostOZměnuInstituce|Uživatelský e-mail"
msgid "PublicBodyChangeRequest|User name"
-msgstr ""
+msgstr "ŽádostOZměnuInstituce|Uživatelské jméno"
msgid "PublicBody|Api key"
msgstr "PublicBody | Název ??"
@@ -2074,7 +2077,7 @@ msgid "PublicBody|Info requests successful count"
msgstr "Veřejná instituce|Počet úspěšných žádostí"
msgid "PublicBody|Info requests visible classified count"
-msgstr ""
+msgstr "Instituce|Počet žádostí viditelných klasifikovaný počet"
msgid "PublicBody|Last edit comment"
msgstr "PublicBody | Naposled aktualizovaný komentář"
@@ -2166,7 +2169,7 @@ msgid "Reported for administrator attention."
msgstr "Administrátor byl již upozorněn."
msgid "Reporting a request notifies the site administrators. They will respond as soon as possible."
-msgstr ""
+msgstr "Nahlášení žádosti obdrží administrátor. Odpoví, jakmile to bude možné. "
msgid "Request an internal review"
msgstr "Požádat o doplnění dotazu"
@@ -2178,7 +2181,7 @@ msgid "Request email"
msgstr "E-mailová adresa dotazu"
msgid "Request for personal information"
-msgstr ""
+msgstr "Žádost o osobní informace"
msgid "Request has been removed"
msgstr "Dotaz byl odstraněn"
@@ -2214,7 +2217,7 @@ msgid "Requests similar to '{{request_title}}' (page {{page}})"
msgstr "Podobné žádosti '{{request_title}}' (page {{page}})"
msgid "Requests will be sent to the following bodies:"
-msgstr ""
+msgstr "Žádost bude odeslána následujícím institucím:"
msgid "Respond by email"
msgstr "Odpovězte e-mailem"
@@ -2232,7 +2235,7 @@ msgid "Response"
msgstr "Odpověď "
msgid "Response by {{public_body_name}} to {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Odpověď od {{public_body_name}} pro {{info_request_user}} dne {{date}}."
msgid "Response from a public authority"
msgstr "Odpověď od instituce "
@@ -2271,7 +2274,7 @@ msgid "Search contributions by this person"
msgstr "Prohledávejte příspěvky od tohoto uživatele"
msgid "Search for the authorities you'd like information from:"
-msgstr ""
+msgstr "Vyhledejte instituce, od kterých potřebujete informace:"
msgid "Search for words in:"
msgstr "Vyhledat slova v "
@@ -2310,7 +2313,7 @@ msgid "Select one to see more information about the authority."
msgstr "Vyberte jednu instituci pro zobrazení podrobnějších informací"
msgid "Select the authorities to write to"
-msgstr ""
+msgstr "Vyberte instituce, kterým chcete napsat"
msgid "Select the authority to write to"
msgstr "Vyberte instituci, které chcete napsat"
@@ -2341,9 +2344,9 @@ msgstr "Vznést dotaz"
msgid "Sent to one authority by {{info_request_user}} on {{date}}."
msgid_plural "Sent to {{authority_count}} authorities by {{info_request_user}} on {{date}}."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Odešlete {{authority_count}} instituci od {{info_request_user}} dne {{date}}."
+msgstr[1] "Odešlete {{authority_count}} institucím od {{info_request_user}} dne {{date}}."
+msgstr[2] "Odešlete {{authority_count}} institucím od {{info_request_user}} dne {{date}}."
msgid "Set your profile photo"
msgstr "Nastavte své profilové foto"
@@ -2367,7 +2370,7 @@ msgid "Sign in"
msgstr "Přihlásit"
msgid "Sign in as the emergency user"
-msgstr ""
+msgstr "Přihlašte se jako \"emergency\" uživatel"
msgid "Sign in or make a new account"
msgstr "Přihlašte se nebo vytvořte nový účet"
@@ -2423,16 +2426,16 @@ msgid "Sorry, we couldn't find that page"
msgstr "Pardon, tuto stránku se nepodařilo najít."
msgid "Source URL:"
-msgstr ""
+msgstr "Zdroj URL:"
msgid "Source:"
-msgstr ""
+msgstr "Zdroj:"
msgid "Spam address"
-msgstr ""
+msgstr "Adresa je spam"
msgid "SpamAddress|Email"
-msgstr ""
+msgstr "SpamAdresa|Email"
msgid "Special note for this authority!"
msgstr "Speciální poznámka k této instituci!"
@@ -2459,7 +2462,7 @@ msgid "Submit"
msgstr "Odeslat"
msgid "Submit request"
-msgstr ""
+msgstr "Vzneste dotaz"
msgid "Submit status"
msgstr "Odešlete status"
@@ -2527,10 +2530,10 @@ msgstr ""
"odpovědích a snad nám umožní vypracovat i žebříček úspěšnosti..."
msgid "Thanks for your suggestion to add {{public_body_name}}. It's been added to the site here:"
-msgstr ""
+msgstr "Děkujeme za návrh přidání {{public_body_name}}. Najdete jej zde:"
msgid "Thanks for your suggestion to update the email address for {{public_body_name}} to {{public_body_email}}. This has now been done and any new requests will be sent to the new address."
-msgstr ""
+msgstr "Děkujeme za návrh změny e-mailové adresy pro {{public_body_name}} na {{public_body_email}}. Změny byly provedeny a další e-maily budou odeslány na tuto novou adresu. "
msgid "Thanks very much - this will help others find useful stuff. We'll\\n also, if you need it, give advice on what to do next about your\\n requests."
msgstr ""
@@ -2556,7 +2559,7 @@ msgid "The Freedom of Information Act <strong>does not apply</strong> to"
msgstr "Zákon 106/1999 Sb. o svobodném přístupu informací <strong>se nedá aplikovat</strong> na"
msgid "The URL where you found the email address. This field is optional, but it would help us a lot if you can provide a link to a specific page on the authority's website that gives this address, as it will make it much easier for us to check."
-msgstr ""
+msgstr "Odkaz (URL), kde jste novou e-mailovou adresu našli. Toto pole je nepovinné, ale pokud nám dáte konkrétní odkaz na internetové stránky dané instituce, kde se příslušná adresa zobrazuje, bude ověřování pro nás mnohem jednodušší. "
msgid "The accounts have been left as they previously were."
msgstr "Ůčty zůstaly v původním stavu. "
@@ -2565,7 +2568,7 @@ msgid "The authority do <strong>not have</strong> the information <small>(maybe
msgstr "Instituce <strong>nedisponuje</strong> požadovanými informacemi<small>(možná vám sdělili, kdo je může poskytnout)"
msgid "The authority email doesn't look like a valid address"
-msgstr ""
+msgstr "E-mailová adresa této instituce asi není platná"
msgid "The authority only has a <strong>paper copy</strong> of the information."
msgstr "Tyto informace existují pouze v <strong>papírové podobě</strong>."
@@ -2580,7 +2583,7 @@ msgid "The classification of requests (e.g. to say whether they were successful
msgstr "Zařazení žádostí (např. zda byla žádost úspěšně zodpovězena nebo ne) provádí sami uživatelé, popřípadě adminsitrátor stránek. To znamená, že zde mohou být nepřesnosti. "
msgid "The contact email address for FOI requests to the authority."
-msgstr ""
+msgstr "Kontaktní e-mailová adresa instituce pro žádosti o informace "
msgid "The email that you, on behalf of {{public_body}}, sent to\\n{{user}} to reply to an {{law_used_short}}\\nrequest has not been delivered."
msgstr ""
@@ -2588,13 +2591,13 @@ msgstr ""
"{{user}} jako odpověď na dotaz o poskytnutí informací podle zákona 106/1999 Sb. {{law_used_short}} nebyl doručen."
msgid "The error bars shown are 95% confidence intervals for the hypothesized underlying proportion (i.e. that which you would obtain by making an infinite number of requests through this site to that authority). In other words, the population being sampled is all the current and future requests to the authority through this site, rather than, say, all requests that have been made to the public body by any means."
-msgstr ""
+msgstr "Vymezení chyby ukazuje 95% interval spolehlivosti pro hypotetický podkladový poměr (tj. ten, který byste získali tím, že položíte nekonečný počet žádostí prostřednictvím těchto stránek této instituci). Jinými slovy, výběr vzorku předpokládá všechny současné i budoucí dotazy vznášené prostřednictvím této stránky, spíše než, řekněme, všechny žádosti, které byly provedeny na veřejný subjekt jakýmkoliv dalším způsobem."
msgid "The page doesn't exist. Things you can try now:"
msgstr "Stránka neexistuje. Zkuste toto:"
msgid "The percentages are calculated with respect to the total number of requests, which includes invalid requests; this is a known problem that will be fixed in a later release."
-msgstr ""
+msgstr "Procenta jsou vypočtena s ohledem na celkový počet dotazů, zahrnuje tedy neplatné dotazy; tento problém je nám znám a bude v další verzi opraven. "
msgid "The public authority does not have the information requested"
msgstr "Instituce nemá požadované informace k dispozici"
@@ -2676,7 +2679,7 @@ msgid "Then you can log into the administrative interface"
msgstr "Poté se můžete přihlásit do administrátorské sekce."
msgid "Then you can make a batch request"
-msgstr ""
+msgstr "Pak můžete vznést hromadný dotaz"
msgid "Then you can play the request categorisation game."
msgstr "Poté si můžete zahrát hru na kategorizaci dotazů. "
@@ -2739,7 +2742,7 @@ msgid "There is a limit on the number of requests you can make in a day, because
msgstr "Počet dotazů za jeden den je limitován. Nechceme, aby byly instituce bombardovány velkým množstvím nerelevantních dotazů. Pokud máte dobrý důvod, proč by měl být váš limit navýšen, prosíme<a href='{{help_contact_path}}'>kontaktujte nás</a>."
msgid "There is nothing to display yet."
-msgstr ""
+msgstr "Zatím tu nic není"
msgid "There is {{count}} person following this request"
msgid_plural "There are {{count}} people following this request"
@@ -2754,7 +2757,7 @@ msgid "There was an error with the words you entered, please try again."
msgstr "Nastala chyba, prosíme zkuste to znovu."
msgid "There was no data calculated for this graph yet."
-msgstr ""
+msgstr "Pro tento graf ještě neexistují žádná data. "
msgid "There were no requests matching your query."
msgstr "Nejsou tu žádné dotazy shodné s vaším vyhledáváním."
@@ -2763,7 +2766,7 @@ msgid "There were no results matching your query."
msgstr "Nemáme žádné výsledky pro vaše kritéria vyhledávání."
msgid "These graphs were partly inspired by <a href=\"http://mark.goodge.co.uk/2011/08/number-crunching-whatdotheyknow/\">some statistics that Mark Goodge produced for WhatDoTheyKnow</a>, so thanks are due to him."
-msgstr ""
+msgstr "Tyto grafy vycházejí částečně z <a href=\"http://mark.goodge.co.uk/2011/08/number-crunching-whatdotheyknow/\"> statistických údajů, které Mark Goodge vytvořil pro WhatDoTheyKnow</a>, tímto mu děkujeme. "
msgid "They are going to reply <strong>by post</strong>"
msgstr "Odpověď bude doručena <strong>poštou</strong>"
@@ -2800,7 +2803,7 @@ msgid "This external request has been hidden"
msgstr "Tento dotaz byl skryt."
msgid "This is <a href=\"{{profile_url}}\">{{user_name}}'s</a> wall"
-msgstr ""
+msgstr "Toto je <a href=\"{{profile_url}}\">{{user_name}}'s</a> stěna"
msgid "This is a plain-text version of the Freedom of Information request \"{{request_title}}\". The latest, full version is available online at {{full_url}}"
msgstr "Toto je neformátovaná textová verze dotazu \"{{request_title}}\". Poslední, formátovaná verze je k dispozici v elektronické formě na {{full_url}}"
@@ -2818,25 +2821,25 @@ msgid "This is your own request, so you will be automatically emailed when new r
msgstr "Toto je váš vlastní dotaz, proto budete odpovědi dostávat e-mailem automaticky."
msgid "This message has been hidden."
-msgstr ""
+msgstr "Tato zpráva byla skryta."
msgid "This message has been hidden. There are various reasons why we might have done this, sorry we can't be more specific here."
-msgstr ""
+msgstr "Tato zpráva byla skryta. Jsou různé důvody, proč se tak mohlo stát, omlouváme se, že nemůžeme poskytnout bližší informace. "
msgid "This message has prominence 'hidden'. You can only see it because you are logged in as a super user."
-msgstr ""
+msgstr "Tato správa byla skryta. Můžete ji vidět pouze proto, že jste registrování jako \"super user\". "
msgid "This message has prominence 'hidden'. {{reason}} You can only see it because you are logged in as a super user."
-msgstr ""
+msgstr "Tato zpráva byla skryta protože {{reason}} .Můžete ji vidět pouze proto, že jste registrování jako \"super user\". "
msgid "This message is hidden, so that only you, the requester, can see it. Please <a href=\"{{url}}\">contact us</a> if you are not sure why."
msgstr "Tato zpráva je skryta, proto jen vy, žadatel, ji můžete vidět. Prosím <a href=\"{{url}}\">contact us</a> pokud si nejste jisti proč. "
msgid "This message is hidden, so that only you, the requester, can see it. {{reason}}"
-msgstr ""
+msgstr "Tato správa byla skryta, pouze vy, jako žadatel, ji můžete vidět. {{reason}}"
msgid "This page of public body statistics is currently experimental, so there are some caveats that should be borne in mind:"
-msgstr ""
+msgstr "Tato stránka se statistickými údaji o institucích je v současnosti experimentální, proto berte prosím na vědomí následující:"
msgid "This particular request is finished:"
msgstr "Tento dotaz je ukončen:"
@@ -2976,7 +2979,7 @@ msgid "To log into the administrative interface"
msgstr "Přihlásit se do administrace"
msgid "To make a batch request"
-msgstr ""
+msgstr "Vznést hromadný dotaz"
msgid "To play the request categorisation game"
msgstr "Zahrát si hru na kategorizaci dotazů"
@@ -3060,7 +3063,7 @@ msgid "URL name can't be blank"
msgstr "Název URL nemůže zůstat prázdný"
msgid "URL name is already taken"
-msgstr ""
+msgstr "Toto URL/adresa je již užívána"
msgid "Unable to change email address on {{site_name}}"
msgstr "Nelze změnit e-mailovou adresu na stránkách {{site_name}}"
@@ -3081,7 +3084,7 @@ msgstr ""
"Prosíme <a href=\"{{url}}\">kontaktujte nás</a> abychom to vyřešili."
msgid "Unfortunately, we do not have a working address for {{public_body_names}}."
-msgstr ""
+msgstr "Bohužel nemáme správnou e-mailovou adresu pro {{public_body_names}}."
msgid "Unfortunately, we do not have a working {{info_request_law_used_full}}\\naddress for"
msgstr "Bohužel nemáme funkční adresu pro zaslání {{info_request_law_used_full}}"
@@ -3096,10 +3099,10 @@ msgid "Unusual response."
msgstr "Neobvyklá odpověď."
msgid "Update email address - {{public_body_name}}"
-msgstr ""
+msgstr "Aktualizujte e-mailovou adresu - {{public_body_name}}"
msgid "Update the address:"
-msgstr ""
+msgstr "Aktualizujte adresu:"
msgid "Update the status of this request"
msgstr "Aktualizovat stav tohoto dotazu"
@@ -3129,13 +3132,13 @@ msgid "UserInfoRequestSentAlert|Alert type"
msgstr "UserInfoRequestSentAlert| Typ upozornění"
msgid "Users cannot usually make batch requests to multiple authorities at once because we don’t want public authorities to be bombarded with large numbers of inappropriate requests. Please <a href=\"{{url}}\">contact us</a> if you think you have good reason to send the same request to multiple authorities at once."
-msgstr ""
+msgstr "Uživatelé nemohou obvykle vznášet hromadné dotazy na více institucí najednou. Nechceme, aby byly instituce bombardovány obrovským množstvím nevhodných žádostí. Prosím <a href=\"{{url}}\">contact us</a> pokud si myslíte, že máte dobrý důvod vznést stejný dotaz na více institucí najednou. "
msgid "User|About me"
msgstr "User | O mně"
msgid "User|Address"
-msgstr ""
+msgstr "Uživatel|Adresa"
msgid "User|Admin level"
msgstr "User | Úroveň admin"
@@ -3144,10 +3147,10 @@ msgid "User|Ban text"
msgstr "User | Zakázat text"
msgid "User|Can make batch requests"
-msgstr ""
+msgstr "Uživatel|Může vznášet hromadné dotazy"
msgid "User|Dob"
-msgstr ""
+msgstr "Uživatel|Dob"
msgid "User|Email"
msgstr "User | E-mail"
@@ -3189,7 +3192,7 @@ msgid "Version {{version}}"
msgstr "Version {{version}}"
msgid "Vexatious"
-msgstr ""
+msgstr "Nevhodný"
msgid "View FOI email address"
msgstr "Zobrazit e-mailovou adresu Informace pro všechny (????)"
@@ -3312,7 +3315,7 @@ msgid "Who can I request information from?"
msgstr "Od koho mohu tyto informace získat?"
msgid "Why specifically do you consider this request unsuitable?"
-msgstr ""
+msgstr "Z jakých konkrétních důvodů považujete tuto žádost za nevhodnou?"
msgid "Withdrawn by the requester."
msgstr "Dotaz stažen tazatelem."
@@ -3342,7 +3345,7 @@ msgid "You"
msgstr "Vy"
msgid "You already created the same batch of requests on {{date}}. You can either view the <a href=\"{{existing_batch}}\">existing batch</a>, or edit the details below to make a new but similar batch of requests."
-msgstr ""
+msgstr "Stejný hromadný dotaz byl již vytvořen {{date}}. Můžete si jej buď prohlédnout <a href=\"{{existing_batch}}\">existing batch</a>, nebo provést úpravy a pro podobný hromadný dotaz."
msgid "You are already following new requests"
msgstr "Nově vznesené dotazy již sledujete."
@@ -3360,22 +3363,22 @@ msgid "You are already following this request"
msgstr "Tento dotaz již sledujete."
msgid "You are already subscribed to '{{link_to_authority}}', a public authority."
-msgstr ""
+msgstr "Informace o '{{link_to_authority}}' jste si již předplatili."
msgid "You are already subscribed to '{{link_to_request}}', a request."
-msgstr ""
+msgstr "Informace o žádosti '{{link_to_request}}' jste si již předplatili."
msgid "You are already subscribed to '{{link_to_user}}', a person."
-msgstr ""
+msgstr "Informace uživatele '{{link_to_user}}' jste si již předplatili."
msgid "You are already subscribed to <a href=\"{{search_url}}\">this search</a>."
-msgstr ""
+msgstr "K tomuto vyhledávání <a href=\"{{search_url}}\">jste se již přihlásili</a> ."
msgid "You are already subscribed to any <a href=\"{{new_requests_url}}\">new requests</a>."
-msgstr ""
+msgstr "K této nové žádosti <a href=\"{{new_requests_url}}\">jste se již přihlásili</a>."
msgid "You are already subscribed to any <a href=\"{{successful_requests_url}}\">successful requests</a>."
-msgstr ""
+msgstr "Již jste si předplatili všechny <a href=\"{{successful_requests_url}}\">úspěšné žádosti</a>."
msgid "You are currently receiving notification of new activity on your wall by email."
msgstr "Pokud se cokoliv změní na vaší nástěnce, budete upozorněni e-mailem."
@@ -3384,40 +3387,40 @@ msgid "You are following all new successful responses"
msgstr "Budete upozorněni na všechny úspěšně zodpovězené dotazy."
msgid "You are no longer following '{{link_to_authority}}', a public authority."
-msgstr ""
+msgstr "Odhlásili jste se z odebírání aktualit od '{{link_to_authority}}', veřejné instituce."
msgid "You are no longer following '{{link_to_request}}', a request."
-msgstr ""
+msgstr "Odhlásili jste se z odebírání aktualit od '{{link_to_request}}'."
msgid "You are no longer following '{{link_to_user}}', a person."
-msgstr ""
+msgstr "Odhlásili jste se z odebírání aktualit od uživatele '{{link_to_user}}'"
msgid "You are no longer following <a href=\"{{new_requests_url}}\">new requests</a>."
-msgstr ""
+msgstr "Odhlásili jste se z odebírání aktualit <a href=\"{{new_requests_url}}\">nové žádosti</a>."
msgid "You are no longer following <a href=\"{{search_url}}\">this search</a>."
-msgstr ""
+msgstr "Odhlásili jste se z odebírání aktualit <a href=\"{{search_url}}\">tohoto vyhledávání</a>."
msgid "You are no longer following <a href=\"{{successful_requests_url}}\">successful requests</a>."
-msgstr ""
+msgstr "Odhlásili jste se z odebírání aktualit <a href=\"{{successful_requests_url}}\">úspěšné žádosti</a>."
msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about '{{link_to_authority}}', a public authority."
-msgstr ""
+msgstr "Přihlásili jste se <a href=\"{{wall_url_user}}\">following</a> k odebírání aktuality '{{link_to_authority}}', veřejné instituce. "
msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about '{{link_to_request}}', a request."
-msgstr ""
+msgstr "Nyní <a href=\"{{wall_url_user}}\">odebíráte</a> aktuality o '{{link_to_request}}'. "
msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about '{{link_to_user}}', a person."
-msgstr ""
+msgstr "Nyní <a href=\"{{wall_url_user}}\">odebíráte</a> aktuality od uživatele '{{link_to_user}}'."
msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about <a href=\"{{new_requests_url}}\">new requests</a>."
-msgstr ""
+msgstr "Nyní <a href=\"{{wall_url_user}}\">odebíráte/a> aktuality o nové žádosti <a href=\"{{new_requests_url}}\"></a>."
msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about <a href=\"{{search_url}}\">this search</a>."
-msgstr ""
+msgstr "Nyní <a href=\"{{wall_url_user}}\">odebíráte</a> aktuality týkající se <a href=\"{{search_url}}\"></a>."
msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about <a href=\"{{successful_requests_url}}\">successful requests</a>."
-msgstr ""
+msgstr "Nyní <a href=\"{{wall_url_user}}\">odebíráte</a> aktuality o úspěšných žádostech <a href=\"{{successful_requests_url}}\"></a>."
msgid "You can <strong>complain</strong> by"
msgstr "Můžete si <strong>stěžovat</strong> "
@@ -3464,7 +3467,7 @@ msgid "You may <strong>include attachments</strong>. If you would like to attach
msgstr "Můžete <strong>přiložit dokumenty</strong>. POkud je vaše příloha⏎ příliš velká pro poslání e-mailem, použíjte formulář níže."
msgid "You may be able to find one on their website, or by phoning them up and asking. If you manage to find one, then please send it to us:"
-msgstr ""
+msgstr "Můžete se podívat na stránky instituce, nebo jim zavolat a zeptat se. Pokud adresu získáte, prosím pošlete nám ji:"
msgid "You may be able to find\\n one on their website, or by phoning them up and asking. If you manage\\n to find one, then please <a href=\"{{url}}\">send it to us</a>."
msgstr ""
@@ -3512,22 +3515,22 @@ msgid "You will no longer be emailed updates for those alerts"
msgstr "E-mailová upozornění o těchto aktualizacích vám přestanou chodit "
msgid "You will now be emailed updates about '{{link_to_authority}}', a public authority."
-msgstr ""
+msgstr "Nyní budete dostávat e-mailem aktuality týkající se '{{link_to_authority}}'."
msgid "You will now be emailed updates about '{{link_to_request}}', a request."
-msgstr ""
+msgstr "Nyní odebíráte aktuality týkající se žádosti '{{link_to_request}}'."
msgid "You will now be emailed updates about '{{link_to_user}}', a person."
-msgstr ""
+msgstr "Nyní budete dostávat e-mailem aktuality od uživatele '{{link_to_user}}'."
msgid "You will now be emailed updates about <a href=\"{{search_url}}\">this search</a>."
-msgstr ""
+msgstr "Nyní budete dostávat e-mailem aktuality o těchto informacích <a href=\"{{search_url}}\"></a>."
msgid "You will now be emailed updates about <a href=\"{{successful_requests_url}}\">successful requests</a>."
-msgstr ""
+msgstr "Nyní budete dostávat e-mailem aktuality <a href=\"{{successful_requests_url}}\">úspěšné žádosti</a>."
msgid "You will now be emailed updates about any <a href=\"{{new_requests_url}}\">new requests</a>."
-msgstr ""
+msgstr "Nyní budete dostávat aktuality o každé <a href=\"{{new_requests_url}}\">nové žádosti</a>."
msgid "You will only get an answer to your request if you follow up\\nwith the clarification."
msgstr ""
@@ -3561,7 +3564,7 @@ msgid "Your annotations"
msgstr "Vaše poznámky"
msgid "Your batch request \"{{title}}\" has been sent"
-msgstr ""
+msgstr "Váš hromadný dotaz \"{{title}}\" byl odeslán"
msgid "Your details, including your email address, have not been given to anyone."
msgstr "Nikomu jsme nepředali vaše osobní údaje, včetně vaší emailové adresy. "
@@ -3570,7 +3573,7 @@ msgid "Your e-mail:"
msgstr "Váš e-mail:"
msgid "Your email doesn't look like a valid address"
-msgstr ""
+msgstr "Vaše e-malová adresa asi není platná"
msgid "Your follow up has not been sent because this request has been stopped to prevent spam. Please <a href=\"{{url}}\">contact us</a> if you really want to send a follow up message."
msgstr "Vaše odpověď nebyla odeslána, protože tento dotaz byl identifikován jako nevyžádaná zpráva. Prosíme <a href=\"{{url}}\">kontaktujte nás</a> pokud svou zprávu chcete odeslat. "
@@ -3623,16 +3626,16 @@ msgid "Your request on {{site_name}} hidden"
msgstr "Vaše žádost na stránkách {{site_name}} je skryta"
msgid "Your request to add an authority has been sent. Thank you for getting in touch! We'll get back to you soon."
-msgstr ""
+msgstr "Vaše žádost o přidání instituce byla odeslána. Děkujeme vám! Ozveme se. "
msgid "Your request to add {{public_body_name}} to {{site_name}}"
-msgstr ""
+msgstr "Žádost o přidání {{public_body_name}} na {{site_name}}"
msgid "Your request to update the address for {{public_body_name}} has been sent. Thank you for getting in touch! We'll get back to you soon."
-msgstr ""
+msgstr "Vaše žádost o změnu adresy {{public_body_name}} byla odeslána. Děkujeme! Ozveme se brzy. "
msgid "Your request to update {{public_body_name}} on {{site_name}}"
-msgstr ""
+msgstr "Vaše žádost o úpravu {{public_body_name}} na {{site_name}}"
msgid "Your request was called {{info_request}}. Letting everyone know whether you got the information will help us keep tabs on"
msgstr "Informace se týká vašeho dotazu {{info_request}}. Můžete všechny informovat, zda jste požadovanou informaci obdrželi a bude tak přehled o odpovědích této instituce"
@@ -3647,7 +3650,7 @@ msgid "Your response will <strong>appear on the Internet</strong>, <a href=\"{{u
msgstr "Vaše odpověď <strong>bude uveřejněna na internetu</strong>, <a href=\"{{url}}\">čtěte proč</a> spolu s historií konverzace."
msgid "Your selected authorities"
-msgstr ""
+msgstr "Vaše vybrané instituce"
msgid "Your thoughts on what the {{site_name}} <strong>administrators</strong> should do about the request."
msgstr "Vaše doporučení co by <strong>administrátor</strong> stránek {{site_name}} měl udělat s tímto dotazem."
@@ -3666,9 +3669,9 @@ msgstr[2] "Vašich {{count}} poznámek"
msgid "Your {{count}} batch requests"
msgid_plural "Your {{count}} batch requests"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Vaše {{count}} hromadná žádost"
+msgstr[1] "Vaše {{count}} hromadné žádosti"
+msgstr[2] "Vaše {{count}} hromadné žádosti"
msgid "Your {{site_name}} email alert"
msgstr "Upozornění ze stránek {{site_name}}"
@@ -3683,7 +3686,7 @@ msgid "Yours,"
msgstr "S pozdravem,"
msgid "[Authority URL will be inserted here]"
-msgstr ""
+msgstr "[zde bude vložena adresa internetových stránek instituce]"
msgid "[FOI #{{request}} email]"
msgstr "[FOI #{{request}} e-mail] ??"
@@ -3712,10 +3715,10 @@ msgid "all requests"
msgstr "všechny dotazy"
msgid "all requests or comments"
-msgstr ""
+msgstr "všechny žádosti nebo komentáře"
msgid "all requests or comments matching text '{{query}}'"
-msgstr ""
+msgstr "všechny žádosti či komentáře odpovídající '{{query}}'"
msgid "also called {{public_body_short_name}}"
msgstr "také se nazývá {{public_body_short_name}}"
@@ -3736,7 +3739,7 @@ msgid "and we'll suggest <strong>what to do next</strong>"
msgstr "a my vám doporučíme <strong>další postup</strong>"
msgid "anything matching text '{{query}}'"
-msgstr ""
+msgstr "shody s '{{query}}'"
msgid "are long overdue."
msgstr "– tato instituce výrazně překročila zákonem daný termín."
@@ -3837,7 +3840,7 @@ msgid "move..."
msgstr "přesunout..."
msgid "new requests"
-msgstr ""
+msgstr "nové žádosti"
msgid "no later than"
msgstr "nejpozději do"
@@ -3863,10 +3866,10 @@ msgid "requests"
msgstr "dotazy"
msgid "requests which are successful"
-msgstr ""
+msgstr "úspěšné žádosti"
msgid "requests which are successful matching text '{{query}}'"
-msgstr ""
+msgstr "žádosti, které se shodují s '{{query}}'"
msgid "response as needing administrator attention. Take a look, and reply to this\\nemail to let them know what you are going to do about it."
msgstr "administrátorovi. Podívejte se prosím na vznesený dotaz i odpověď. Až uděláte nezbytné kroky, odpovězte na tento e-mail a stručně je popište."
@@ -3976,7 +3979,7 @@ msgid "{{existing_request_user}} already\\n created the same request on {{d
msgstr "{{existing_request_user}} již vznesl stejný dotaz dne {{date}}. Můžete si <a href=\"{{existing_request}}\">tento dotaz</a> přečíst, nebo vzneste podobný, ale podle svých potřeb upravený dotaz."
msgid "{{foi_law}} requests to '{{public_body_name}}'"
-msgstr ""
+msgstr "{{foi_law}} žádost '{{public_body_name}}'"
msgid "{{info_request_user_name}} only:"
msgstr "Pouze {{info_request_user_name}}:"
@@ -4033,7 +4036,7 @@ msgid "{{title}} - a Freedom of Information request to {{public_body}}"
msgstr "{{title}} - dotaz vznesený podle zákona 106/1999 Sb., o svobodném přístupu k informacím na instituci {{public_body}}"
msgid "{{title}} - a batch request"
-msgstr ""
+msgstr "{{title}} - hromadný dotaz"
msgid "{{user_name}} (Account suspended)"
msgstr "Uživatel {{user_name}} (Účet pozastaven)"
@@ -4062,10 +4065,10 @@ msgid "{{user_name}} sent a request to {{public_body}}"
msgstr "Uživatel {{user_name}} vznesl dotaz na instituci {{public_body}}"
msgid "{{user_name}} would like a new authority added to {{site_name}}"
-msgstr ""
+msgstr "{{user_name}} by chtěl/a přidat novou instituci na {{site_name}}"
msgid "{{user_name}} would like the email address for {{public_body_name}} to be updated"
-msgstr ""
+msgstr "{{user_name}} by chtěl změnit adresu {{public_body_name}} "
msgid "{{username}} left an annotation:"
msgstr "{{username}} zanechal poznámku:"
diff --git a/locale/cy/app.po b/locale/cy/app.po
index 838a98e39..4bdf663de 100644
--- a/locale/cy/app.po
+++ b/locale/cy/app.po
@@ -8,10 +8,10 @@
# baragouiner <graham.craig@gmail.com>, 2013
# baragouiner <graham.craig@gmail.com>, 2013
# baragouiner <graham.craig@gmail.com>, 2013
-# huwwaters <huwwaters@gmail.com>, 2013
-# huwwaters <huwwaters@gmail.com>, 2013
-# Hywel <hywelm.jones@talk21.com>, 2013
-# Hywel <hywelm.jones@talk21.com>, 2013
+# Huw Waters <huwwaters@gmail.com>, 2013
+# Huw Waters <huwwaters@gmail.com>, 2013
+# hywelm <hywelm.jones@talk21.com>, 2013
+# hywelm <hywelm.jones@talk21.com>, 2013
# louisecrow <louise@mysociety.org>, 2013
# louisecrow <louise@mysociety.org>, 2013-2014
# PerryX <wyeboy@gmail.com>, 2013
@@ -21,7 +21,7 @@ msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-15 12:46+0100\n"
-"PO-Revision-Date: 2014-05-15 11:56+0000\n"
+"PO-Revision-Date: 2014-06-03 13:06+0000\n"
"Last-Translator: louisecrow <louise@mysociety.org>\n"
"Language-Team: Welsh (http://www.transifex.com/projects/p/alaveteli/language/cy/)\n"
"Language: cy\n"
@@ -3805,7 +3805,7 @@ msgid "{{foi_law}} requests to '{{public_body_name}}'"
msgstr ""
msgid "{{info_request_user_name}} only:"
-msgstr "{info_request_user_name}} yn unig:"
+msgstr "{{info_request_user_name}} yn unig:"
msgid "{{law_used_full}} request - {{title}}"
msgstr "Cais {{law_used_full}} - {{title}}"
diff --git a/locale/de/app.po b/locale/de/app.po
index 1de8317a6..6ef110223 100644
--- a/locale/de/app.po
+++ b/locale/de/app.po
@@ -7,13 +7,14 @@
# FOI Monkey <>, 2012
# KerstiRu <kersti@access-info.org>, 2011
# KerstiRu <kersti@access-info.org>, 2011
+# louisecrow <louise@mysociety.org>, 2014
# stefanw <stefanwehrmeyer@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-15 12:46+0100\n"
-"PO-Revision-Date: 2014-05-15 11:56+0000\n"
+"PO-Revision-Date: 2014-05-28 15:17+0000\n"
"Last-Translator: louisecrow <louise@mysociety.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/alaveteli/language/de/)\n"
"Language: de\n"
@@ -2570,7 +2571,7 @@ msgid "The response to your request has been <strong>delayed</strong>. You can
msgstr "Die Beantwortung auf Ihre Anfrage ist verspätet. Nach gesetzlicher Vorschrift sollte die Behörde unverzüglich geantwortet haben und"
msgid "The response to your request is <strong>long overdue</strong>. You can say that, by\\n law, under all circumstances, the authority should have responded\\n by now"
-msgstr "The response to your request is <strong>long overdue</strong>. Nach gesetzlicher Vorschrift sollte {{public_body_link}} Ihnen inzwischen unter allen Umständen geantwortet haben. "
+msgstr "Nach gesetzlicher Vorschrift sollte Dieser Behörde Ihnen inzwischen unter allen Umständen geantwortet haben. "
msgid "The search index is currently offline, so we can't show the Freedom of Information requests that have been made to this authority."
msgstr "Da die Suchanzeige momentan offline ist, können wir die an diese Behörde gestellten Informationsfreiheitsanfragen gerade leider nicht anzeigen. "
diff --git a/locale/en_IE/app.po b/locale/en_IE/app.po
index 2c8e59f75..dabeffd92 100644
--- a/locale/en_IE/app.po
+++ b/locale/en_IE/app.po
@@ -3,10 +3,10 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# confirmordeny <mrjohncross@googlemail.com>, 2012
+# John Cross <mrjohncross@googlemail.com>, 2012
# handelaar <john@handelaar.org>, 2011
# handelaar <john@handelaar.org>, 2011
-# confirmordeny <mrjohncross@googlemail.com>, 2012
+# John Cross <mrjohncross@googlemail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/fi/app.po b/locale/fi/app.po
index ca451aba7..ab7d3cd88 100644
--- a/locale/fi/app.po
+++ b/locale/fi/app.po
@@ -5,8 +5,8 @@
# Translators:
# apoikola <antti.poikola@gmail.com>, 2013
# apoikola <antti.poikola@gmail.com>, 2013
-# Hamatti <juhamattisantala@gmail.com>, 2013
-# Hamatti <juhamattisantala@gmail.com>, 2013
+# Juha-Matti Santala <juhamattisantala@gmail.com>, 2013
+# Juha-Matti Santala <juhamattisantala@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/fr/app.po b/locale/fr/app.po
index 5bb775c93..6ca4056ee 100644
--- a/locale/fr/app.po
+++ b/locale/fr/app.po
@@ -8,22 +8,22 @@
# andreas.pavlou <andreas@access-info.org>, 2013
# andreas.pavlou <andreas@access-info.org>, 2013
# Bbear <borisjf@post.harvard.edu>, 2011
-# sim51 <contact@bsimard.com>, 2013
+# Benoît Simard <contact@bsimard.com>, 2013
# Bbear <borisjf@post.harvard.edu>, 2011
# cegall, 2013
-# cegall, 2013
+# Claire, 2013
# David Cabo <david.cabo@gmail.com>, 2013
# louisecrow <louise@mysociety.org>, 2013
# louisecrow <louise@mysociety.org>, 2013
-# pchrzanowski <pierre.chrzanowski@gmail.com>, 2013
-# pchrzanowski <pierre.chrzanowski@gmail.com>, 2013
-# radproject <radhouanef@gmail.com>, 2013
-# radproject <radhouanef@gmail.com>, 2013
+# pierre chrzanowski <pierre.chrzanowski@gmail.com>, 2013
+# pierre chrzanowski <pierre.chrzanowski@gmail.com>, 2013
+# radhouane fazai <radhouanef@gmail.com>, 2013
+# radhouane fazai <radhouanef@gmail.com>, 2013
# rrobert <rrobertpolson@gmail.com>, 2013
# rrobert <rrobertpolson@gmail.com>, 2013
# sebbacon <seb.bacon@gmail.com>, 2012
# sebbacon <seb.bacon@gmail.com>, 2012
-# sim51 <contact@bsimard.com>, 2013
+# Benoît Simard <contact@bsimard.com>, 2013
# skenaja <alex@alexskene.com>, 2011
# teymour <tanguim@gmail.com>, 2011
# teymour <tanguim@gmail.com>, 2011
diff --git a/locale/fr_CA/app.po b/locale/fr_CA/app.po
index 55a89926d..0f071ed8c 100644
--- a/locale/fr_CA/app.po
+++ b/locale/fr_CA/app.po
@@ -6,11 +6,11 @@
# andreas.pavlou <andreas@access-info.org>, 2013
# Bbear <borisjf@post.harvard.edu>, 2011
# David Cabo <david.cabo@gmail.com>, 2013
-# pchrzanowski <pierre.chrzanowski@gmail.com>, 2013
-# radproject <radhouanef@gmail.com>, 2013
+# pierre chrzanowski <pierre.chrzanowski@gmail.com>, 2013
+# radhouane fazai <radhouanef@gmail.com>, 2013
# rrobert <rrobertpolson@gmail.com>, 2013
# sebbacon <seb.bacon@gmail.com>, 2012
-# sim51 <contact@bsimard.com>, 2013
+# Benoît Simard <contact@bsimard.com>, 2013
# skenaja <alex@alexskene.com>, 2011
# teymour <tanguim@gmail.com>, 2011
# vickyanderica <victoria@access-info.org>, 2011
diff --git a/locale/he_IL/app.po b/locale/he_IL/app.po
index fc2608fc5..f5c54583c 100644
--- a/locale/he_IL/app.po
+++ b/locale/he_IL/app.po
@@ -3,17 +3,17 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# nirshman <nirshman99@gmail.com>, 2013
-# nirshman <nirshman99@gmail.com>, 2013
+# Nir Hirshman <nirshman99@gmail.com>, 2013
+# Nir Hirshman <nirshman99@gmail.com>, 2013
# Ram Ezrach <ram.ezrach@gmail.com>, 2013
# rshlo <r@roishlomi.com>, 2013
# rshlo <r@roishlomi.com>, 2013
-# yauzi <yair.uziel@gmail.com>, 2013-2014
-# yauzi <yair.uziel@gmail.com>, 2013
+# Yair Uziel <yair.uziel@gmail.com>, 2013-2014
+# Yair Uziel <yair.uziel@gmail.com>, 2013
# yehuda <yehudab@gmail.com>, 2013-2014
# yehuda <yehudab@gmail.com>, 2013
-# Yoni Yalovitsky <yoni@yalovitsky.com>, 2013
-# Yoni Yalovitsky <yoni@yalovitsky.com>, 2013
+# yoniYalovitsky <yoni@yalovitsky.com>, 2013
+# yoniYalovitsky <yoni@yalovitsky.com>, 2013
# Z.D <zdevir@gmail.com>, 2013
# Z.D <zdevir@gmail.com>, 2013
msgid ""
diff --git a/locale/hr/app.po b/locale/hr/app.po
index 08f331d88..06e6f01c0 100644
--- a/locale/hr/app.po
+++ b/locale/hr/app.po
@@ -3,10 +3,10 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# BojanOpacak <bojan@rationalinternational.net>, 2013
-# BojanOpacak <bojan@rationalinternational.net>, 2013
-# vanjas <vanja@gong.hr>, 2013
-# vanjas <vanja@gong.hr>, 2013
+# Bojan Opacak <bojan@rationalinternational.net>, 2013
+# Bojan Opacak <bojan@rationalinternational.net>, 2013
+# vanja <vanja@gong.hr>, 2013
+# vanja <vanja@gong.hr>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/hr_HR/app.po b/locale/hr_HR/app.po
index 7fb831525..ec7200c50 100644
--- a/locale/hr_HR/app.po
+++ b/locale/hr_HR/app.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# BojanOpacak <bojan@rationalinternational.net>, 2013
-# BojanOpacak <bojan@rationalinternational.net>, 2013
+# Bojan Opacak <bojan@rationalinternational.net>, 2013
+# Bojan Opacak <bojan@rationalinternational.net>, 2013
# louisecrow <louise@mysociety.org>, 2013
# louisecrow <louise@mysociety.org>, 2013
msgid ""
diff --git a/locale/hu_HU/app.po b/locale/hu_HU/app.po
index 507f1bdb1..765de6706 100644
--- a/locale/hu_HU/app.po
+++ b/locale/hu_HU/app.po
@@ -5,8 +5,8 @@
# Translators:
# alaveteli_hu <alaveteli@atlatszo.hu>, 2012
# alaveteli_hu <alaveteli@atlatszo.hu>, 2012
-# Ebatta <orsibatta@gmail.com>, 2013
-# Ebatta <orsibatta@gmail.com>, 2013
+# Orsolya Batta <orsibatta@gmail.com>, 2013
+# Orsolya Batta <orsibatta@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/id/app.po b/locale/id/app.po
index 5f35f4b25..99600da24 100644
--- a/locale/id/app.po
+++ b/locale/id/app.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# njung <agung@airputih.or.id>, 2013
-# Agus Triwanto <agus.triwanto@gmail.com>, 2012
-# Agus Triwanto <agus.triwanto@gmail.com>, 2012
+# Agung Riyadi <ariadi01@gmail.com>, 2013
+# agustriwanto <agus.triwanto@gmail.com>, 2012
+# agustriwanto <agus.triwanto@gmail.com>, 2012
# <ariadi01@gmail.com>, 2012
# bobo7e836b32124642a5 <bobo@airputih.org>, 2012
# bobo7e836b32124642a5 <bobo@airputih.org>, 2012
-# njung <agung@airputih.or.id>, 2013
+# Agung Riyadi <ariadi01@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/it/app.po b/locale/it/app.po
index df0b5eb40..bebfe1b75 100644
--- a/locale/it/app.po
+++ b/locale/it/app.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# marcogiustini <info@marcogiustini.info>, 2013
-# marcogiustini <info@marcogiustini.info>, 2013
+# Marco Giustini <info@marcogiustini.info>, 2013
+# Marco Giustini <info@marcogiustini.info>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/nb_NO/app.po b/locale/nb_NO/app.po
index ca1db509c..79041f21f 100644
--- a/locale/nb_NO/app.po
+++ b/locale/nb_NO/app.po
@@ -5,10 +5,10 @@
# Translators:
# andreli <andre@lindhjem.net>, 2013
# andreli <andre@lindhjem.net>, 2013
-# Hans-Petter Fjeld <atluxity@1kb.no>, 2014
+# atluxity <atluxity@1kb.no>, 2014
# gorm <gormer@gmail.com>, 2013-2014
# gorm <gormer@gmail.com>, 2013
-# Hans-Petter Fjeld <atluxity@1kb.no>, 2014
+# atluxity <atluxity@1kb.no>, 2014
# oeyrvin <oeyrvin@hagan.no>, 2014
# oeyrvin <oeyrvin@hagan.no>, 2014
# pere <pere-transifex@hungry.com>, 2013
@@ -18,8 +18,8 @@ msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-15 12:46+0100\n"
-"PO-Revision-Date: 2014-05-15 11:56+0000\n"
-"Last-Translator: louisecrow <louise@mysociety.org>\n"
+"PO-Revision-Date: 2014-06-13 21:03+0000\n"
+"Last-Translator: pere <pere-transifex@hungry.com>\n"
"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/alaveteli/language/nb_NO/)\n"
"Language: nb_NO\n"
"MIME-Version: 1.0\n"
@@ -144,7 +144,7 @@ msgid "1. Select an authority"
msgstr "1. Velg en myndighet"
msgid "1. Select authorities"
-msgstr ""
+msgstr "1. Velg autoriteter"
msgid "2. Ask for Information"
msgstr "2. Spør om dokumentene"
@@ -198,7 +198,7 @@ msgid "<p>We're glad you got some of the information that you wanted. If you fou
msgstr "<p>Vi er glad for at du fikk noe av informasjonen du var ute etter. Dersom du synes at {{site_name}} er nyttig, så kan du <a href=\"{{donation_url}}\">gi et bidrag</a> til organisasjonen som drifter denne siden.</p><p>Hvis du vil forsøke å få tak i resten av informasjonen, så forklarer vi hva du bør gjøre videre.</p>"
msgid "<p>We're glad you got some of the information that you wanted.</p><p>If you want to try and get the rest of the information, here's what to do now.</p>"
-msgstr ""
+msgstr "<p>Vi er glade for at du fikk noe av informasjonen du ønsket.</p><p>Hvis du ønsker å forsøke å få tak i resten av informasjonen, så kan du gjøre følgende.</p>"
msgid "<p>You do not need to include your email in the request in order to get a reply (<a href=\"{{url}}\">details</a>).</p>"
msgstr "<p>Du trenger ikke ta med e-postadressen i forespørselen for å få et svar (<a href=\"{{url}}\">detaljer</a>).</p>"
@@ -447,7 +447,7 @@ msgid "Ask us to update FOI email"
msgstr ""
msgid "Ask us to update the email address for {{public_body_name}}"
-msgstr ""
+msgstr "Spør oss om å oppdatere epostadressen til {{public_body_name}}"
msgid "At the bottom of this page, write a reply to them trying to persuade them to scan it in\\n (<a href=\"{{url}}\">more details</a>)."
msgstr ""
@@ -669,7 +669,7 @@ msgid "Couldn't understand the image file that you uploaded. PNG, JPEG, GIF and
msgstr "Klarer ikke å lese inn bilde-filen du lastet opp. Vi støtter PNG, JPEG, GIF og mange andre vanlige bilde-formater."
msgid "Created by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Opprettet av {{info_request_user}} den {{date}}."
msgid "Crop your profile photo"
msgstr "Beskjær ditt profilbilde"
@@ -891,7 +891,7 @@ msgid "Follow this link to see the request:"
msgstr "Følg denne lenken for å se forespørselen:"
msgid "Follow this link to see the requests:"
-msgstr ""
+msgstr "Følg denne lenken for å se forespørselen:"
msgid "Follow this person"
msgstr "Følg denne personen"
@@ -1112,7 +1112,7 @@ msgid "If you are still having trouble, please <a href=\"{{url}}\">contact us</a
msgstr "Hvis du fortsatt ar problemer, vær så snill å <a href=\"{{url}}\">kontakt oss</a>."
msgid "If you are the requester, then you may <a href=\"{{url}}\">sign in</a> to view the message."
-msgstr ""
+msgstr "Hvis du er innsenderen, så kan du <a href=\"{{url}}\">logge inn</a> for å se på meldingen."
msgid "If you are the requester, then you may <a href=\"{{url}}\">sign in</a> to view the request."
msgstr ""
@@ -1394,7 +1394,7 @@ msgid "Make a request to this authority"
msgstr "Lag en henvendelse til denne myndigheten"
msgid "Make an {{law_used_short}} request"
-msgstr ""
+msgstr "Lag en {{law_used_short}}-forespørsel"
msgid "Make an {{law_used_short}} request to '{{public_body_name}}'"
msgstr "Lag en {{law_used_short}} henvendelse til '{{public_body_name}}'"
@@ -1517,13 +1517,13 @@ msgid "Not a valid FOI request"
msgstr "Ikke en gyldig innsynsbegjæring"
msgid "Not a valid request"
-msgstr ""
+msgstr "Ikke en gyldig forespørsel"
msgid "Note that the requester will not be notified about your annotation, because the request was published by {{public_body_name}} on their behalf."
msgstr "Merk at personen som står bak begjæringen ikke vil få beskjed om din annotering, fordi begjæringen var publisert av {{public_body_name}} på deres vegne."
msgid "Notes:"
-msgstr ""
+msgstr "Merknader:"
msgid "Now check your email!"
msgstr "Sjekk e-posten din nå!"
@@ -1730,7 +1730,7 @@ msgid "Please enter the message you want to send"
msgstr "Skriv inn meldingen du ønsker å sende"
msgid "Please enter the name of the authority"
-msgstr ""
+msgstr "Skriv inn navnet til autoriteten"
msgid "Please enter the same password twice"
msgstr "Skriv inn det samme passordet to ganger"
@@ -1850,7 +1850,7 @@ msgid "Powered by <a href=\"http://www.alaveteli.org/\">Alaveteli</a>"
msgstr "Motoren er <a href=\"http://www.alaveteli.org/\">Alaveteli</a>"
msgid "Prefer not to receive emails?"
-msgstr ""
+msgstr "Foretrekker å ikke motta epost?"
msgid "Prev"
msgstr "Forrige"
@@ -2111,10 +2111,10 @@ msgid "Requests or responses matching your saved search"
msgstr "Henvendelser eller svar som treffer ditt lagrede søk"
msgid "Requests similar to '{{request_title}}'"
-msgstr ""
+msgstr "Forespørsler som ligner '{{request_title}}'"
msgid "Requests similar to '{{request_title}}' (page {{page}})"
-msgstr ""
+msgstr "Forespørsler som ligner '{{request_title}}' (side {{page}})"
msgid "Requests will be sent to the following bodies:"
msgstr ""
@@ -2322,7 +2322,7 @@ msgid "Source:"
msgstr "Kilde:"
msgid "Spam address"
-msgstr ""
+msgstr "Spam-adresse"
msgid "SpamAddress|Email"
msgstr ""
@@ -2439,7 +2439,7 @@ msgid "The Freedom of Information Act <strong>does not apply</strong> to"
msgstr "Offentlighetsloven <strong>er ikke gjeldende</strong> for"
msgid "The URL where you found the email address. This field is optional, but it would help us a lot if you can provide a link to a specific page on the authority's website that gives this address, as it will make it much easier for us to check."
-msgstr ""
+msgstr "URL-en der du fant epostadressen. Dette feltet er valgfritt, men det vil hjelpe oss veldig hvis du kan tilby en lenke til en spesifikk side på autoritetens nettside som oppgir denne adressen, da det vil gjøre det mye enklere for oss å sjekke den."
msgid "The accounts have been left as they previously were."
msgstr "Kontoene er etterlatt slik de tidligere var."
@@ -2448,7 +2448,7 @@ msgid "The authority do <strong>not have</strong> the information <small>(maybe
msgstr "Myndigheten <strong>har ikke</strong> denne informasjonen <small>(kanskje de sier hvem som har)"
msgid "The authority email doesn't look like a valid address"
-msgstr ""
+msgstr "Autoritetens epostadresse ser ikke ut som en gyldig adresse"
msgid "The authority only has a <strong>paper copy</strong> of the information."
msgstr "Myndigheten har kun <strong>papireksemplar</strong> av informasjonen."
@@ -2669,7 +2669,7 @@ msgid "This external request has been hidden"
msgstr "Den eksterne begjæringen har blitt skjult"
msgid "This is <a href=\"{{profile_url}}\">{{user_name}}'s</a> wall"
-msgstr ""
+msgstr "Dette er veggen til <a href=\"{{profile_url}}\">{{user_name}}</a>"
msgid "This is a plain-text version of the Freedom of Information request \"{{request_title}}\". The latest, full version is available online at {{full_url}}"
msgstr "Det er en tekst-versjon av innsynsbegjæringen \"{{request_title}}\". Den siste, komplette versjonen er tilgjengelig på nett {{full_url}}"
@@ -2919,7 +2919,7 @@ msgid "URL name can't be blank"
msgstr "URL navn kan ikke være blank"
msgid "URL name is already taken"
-msgstr ""
+msgstr "URL-navnet er allerede brukt"
msgid "Unable to change email address on {{site_name}}"
msgstr "Klarte ikke endre e-post adresse på {{site_name}}"
@@ -2937,7 +2937,7 @@ msgid "Unfortunately we don't know the FOI\\nemail address for that authority, s
msgstr ""
msgid "Unfortunately, we do not have a working address for {{public_body_names}}."
-msgstr ""
+msgstr "Desverre har vi ikke en fungerende adresse for "
msgid "Unfortunately, we do not have a working {{info_request_law_used_full}}\\naddress for"
msgstr "Beklageligvis har vi ikke en fungerende {{info_request_law_used_full}}-adresse for"
@@ -3300,7 +3300,7 @@ msgid "You may <strong>include attachments</strong>. If you would like to attach
msgstr "Du kan velge å <strong>legge med vedlegg</strong>. Om du vil legge med en\\nfil som er for stor for epost, kan du bruke skjema under."
msgid "You may be able to find one on their website, or by phoning them up and asking. If you manage to find one, then please send it to us:"
-msgstr ""
+msgstr "Det kan hende du finner en på deres nettsted, eller ved å ringe dem og spørre. Hvis du klarer å finne en, vær så snill og send den til oss:"
msgid "You may be able to find\\n one on their website, or by phoning them up and asking. If you manage\\n to find one, then please <a href=\"{{url}}\">send it to us</a>."
msgstr ""
@@ -3321,7 +3321,7 @@ msgid "You need to be logged in to edit your profile."
msgstr "Du må være innlogget for å endre profil-bildet."
msgid "You need to be logged in to report a request for administrator attention"
-msgstr ""
+msgstr "Du må være logget inn for å be om at en forespørsel ses på av adminstrasjonen"
msgid "You previously submitted that exact follow up message for this request."
msgstr "Du har tidligere sendt inn en eksakt lik oppfølgingsbeskjed for denne begjæringen."
@@ -3438,10 +3438,10 @@ msgid "Your request '{{request}}' at {{url}} has been reviewed by moderators."
msgstr ""
msgid "Your request on {{site_name}} hidden"
-msgstr ""
+msgstr "Din forespørsel på {{site_name}} er skjult"
msgid "Your request to add an authority has been sent. Thank you for getting in touch! We'll get back to you soon."
-msgstr ""
+msgstr "Din forespørsel om å legge til en autoritet er sendt. Takk for at du tok kontakt! Vi svarer deg snart tilbake."
msgid "Your request to add {{public_body_name}} to {{site_name}}"
msgstr ""
@@ -3525,10 +3525,10 @@ msgid "all requests"
msgstr "alle henvendelser"
msgid "all requests or comments"
-msgstr ""
+msgstr "alle forespørsler eller kommentarer"
msgid "all requests or comments matching text '{{query}}'"
-msgstr ""
+msgstr "alle forespørsler eller kommentarer som stemmer med teksten "
msgid "also called {{public_body_short_name}}"
msgstr "også kalt {{public_body_short_name}}"
@@ -3648,7 +3648,7 @@ msgid "move..."
msgstr "flytt..."
msgid "new requests"
-msgstr ""
+msgstr "nye forespørsler"
msgid "no later than"
msgstr "ikke senere enn"
@@ -3672,7 +3672,7 @@ msgid "requests"
msgstr "henvendelser"
msgid "requests which are successful"
-msgstr ""
+msgstr "vellykkede forespørsler"
msgid "requests which are successful matching text '{{query}}'"
msgstr ""
diff --git a/locale/pl/app.po b/locale/pl/app.po
index 7fb4a6ded..c4acd40e2 100644
--- a/locale/pl/app.po
+++ b/locale/pl/app.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# EwaModrzejewska <ewa.modrzejewska@art61.pl>, 2013
-# EwaModrzejewska <ewa.modrzejewska@art61.pl>, 2013
+# Ewa Modrzejewska <ewa.modrzejewska@art61.pl>, 2013
+# Ewa Modrzejewska <ewa.modrzejewska@art61.pl>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/pt_BR/app.po b/locale/pt_BR/app.po
index c544b3f90..bd4a159d1 100644
--- a/locale/pt_BR/app.po
+++ b/locale/pt_BR/app.po
@@ -3,16 +3,16 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# Daniela Mattern <3laste2000@gmail.com>, 2012
+# elaste <3laste2000@gmail.com>, 2012
# serramassuda <a.serramassuda@gmail.com>, 2012
# Bruno <bgx@bol.com.br>, 2012
# Bruno <bgx@bol.com.br>, 2012
-# brunomelnic <brunomelnic@gmail.com>, 2012-2013
+# Bruno Melnic Incao <brunomelnic@gmail.com>, 2012-2013
# Carlos Vieira <edu.carlos.vieira@gmail.com>, 2011
# danielabsilva <danielabsilva@gmail.com>, 2011
# danielabsilva <danielabsilva@gmail.com>, 2011
-# Daniela Mattern <3laste2000@gmail.com>, 2012
-# Daniela Mattern <3laste2000@gmail.com>, 2012
+# elaste <3laste2000@gmail.com>, 2012
+# elaste <3laste2000@gmail.com>, 2012
# <everton137@gmail.com>, 2011
# gabinardy <gabileitao@gmail.com>, 2012
# gabinardy <gabileitao@gmail.com>, 2012
@@ -36,9 +36,9 @@
# Rafael H L Moretti <rafael.moretti@gmail.com>, 2012
# Rafael H L Moretti <rafael.moretti@gmail.com>, 2012
# serramassuda <a.serramassuda@gmail.com>, 2012
-# vitorbaptista <vitor@vitorbaptista.com>, 2013
-# vitorbaptista <vitor@vitorbaptista.com>, 2013
-# vitorbaptista <vitor@vitorbaptista.com>, 2013
+# Vítor Márcio Paiva de Sousa Baptista <vitor@vitorbaptista.com>, 2013
+# Vítor Márcio Paiva de Sousa Baptista <vitor@vitorbaptista.com>, 2013
+# Vítor Márcio Paiva de Sousa Baptista <vitor@vitorbaptista.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/pt_PT/app.po b/locale/pt_PT/app.po
index 4d41bd25c..be6269a1b 100644
--- a/locale/pt_PT/app.po
+++ b/locale/pt_PT/app.po
@@ -3,16 +3,32 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# helenaromao <helenaromao@gmail.com>, 2013
-# helenaromao <helenaromao@gmail.com>, 2013
-# luispaisbernardo <luispaisbernardo@gmail.com>, 2013
-# luispaisbernardo <luispaisbernardo@gmail.com>, 2013
+# Bruno <bgx@bol.com.br>, 2012
+# Carlos Vieira <edu.carlos.vieira@gmail.com>, 2011
+# danielabsilva <danielabsilva@gmail.com>, 2011
+# elaste <3laste2000@gmail.com>, 2012
+# <everton137@gmail.com>, 2011
+# gabinardy <gabileitao@gmail.com>, 2012
+# Helena Romão <helenaromao@gmail.com>, 2013
+# Helena Romão <helenaromao@gmail.com>, 2013
+# jcmarkun <jcmarkun@gmail.com>, 2011
+# Kerick <kerick.quimica@gmail.com>, 2012
+# leandrosalvador <leandrosalvador@gmail.com>, 2013
+# lianelira <lianelira@gmail.com>, 2011
+# Luís Bernardo <luispaisbernardo@gmail.com>, 2013
+# luisleao <luis.leao@gmail.com>, 2011
+# Luís Bernardo <luispaisbernardo@gmail.com>, 2013
+# Nitai <Nitaibezerra@gmail.com>, 2012
+# patriciacornils <patriciacornils@gmail.com>, 2011
+# Rafael H L Moretti <rafael.moretti@gmail.com>, 2012
+# serramassuda <a.serramassuda@gmail.com>, 2012
+# Vítor Márcio Paiva de Sousa Baptista <vitor@vitorbaptista.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-15 12:46+0100\n"
-"PO-Revision-Date: 2014-05-15 11:56+0000\n"
+"PO-Revision-Date: 2014-06-27 14:00+0000\n"
"Last-Translator: louisecrow <louise@mysociety.org>\n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/alaveteli/language/pt_PT/)\n"
"Language: pt_PT\n"
@@ -22,22 +38,22 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid " This will appear on your {{site_name}} profile, to make it\\n easier for others to get involved with what you're doing."
-msgstr ""
+msgstr "Isso aparecerá no seu perfil no {{site_name}}, para que outras pessoas envolvam-se mais facilmente com o que você está fazendo."
msgid " (<strong>no ranty</strong> politics, read our <a href=\"{{url}}\">moderation policy</a>)"
-msgstr ""
+msgstr "(<strong>sem ataques</strong> políticos, leia nossa <a href=\"{{url}}\">política de moderação</a>)"
msgid " (<strong>patience</strong>, especially for large files, it may take a while!)"
-msgstr ""
+msgstr "(<strong>paciência,</strong> especialmente para arquivos grandes, pode demorar um pouco!)"
msgid " (you)"
msgstr "(você)"
msgid " - view and make Freedom of Information requests"
-msgstr "- veja e faça pedidos de acesso à informação"
+msgstr "- veja e envie Pedidos de Acesso à Informação"
msgid " - wall"
-msgstr ""
+msgstr "- muro"
msgid " < "
msgstr ""
@@ -46,13 +62,13 @@ msgid " << "
msgstr ""
msgid " <strong>Note:</strong>\\n We will send you an email. Follow the instructions in it to change\\n your password."
-msgstr ""
+msgstr "<strong>Atenção:</strong> Enviaremos um e-mail para você. Siga as instruções para alterar sua senha."
msgid " <strong>Privacy note:</strong> Your email address will be given to"
-msgstr ""
+msgstr "<strong>Nota de privacidade:</strong> Seu endereço de email será fornecido para"
msgid " <strong>Summarise</strong> the content of any information returned. "
-msgstr ""
+msgstr "<strong>Resuma</strong> o conteúdo de qualquer informação recebida."
msgid " > "
msgstr ""
@@ -61,58 +77,58 @@ msgid " >> "
msgstr ""
msgid " Advise on how to <strong>best clarify</strong> the request."
-msgstr ""
+msgstr "Recomendações sobre como <strong>tornar mais claro</strong> o pedido."
msgid " Ideas on what <strong>other documents to request</strong> which the authority may hold. "
-msgstr ""
+msgstr "Ideias de <strong>outras informações</strong> a serem solicitadas para esse órgão público."
msgid " If you know the address to use, then please <a href=\"{{url}}\">send it to us</a>.\\n You may be able to find the address on their website, or by phoning them up and asking."
-msgstr ""
+msgstr "Se você souber o endereço de e-mail do órgão público que deve receber esse pedido, <a href=\"{{url}}\">envie-o para nós</a>. Você pode encontrar o endereço de e-mail no site do órgão ou pelo telefone."
msgid " Include relevant links, such as to a campaign page, your blog or a\\n twitter account. They will be made clickable. \\n e.g."
-msgstr ""
+msgstr "Inclua links relevantes, como para um site de mobilização, seu blog ou uma conta no Twitter. Eles serão clicáveis, por exemplo."
msgid " Link to the information requested, if it is <strong>already available</strong> on the Internet. "
-msgstr ""
+msgstr "Coloque um link para a informação pedida, se ela <strong>já estiver disponível</strong> na Internet."
msgid " Offer better ways of <strong>wording the request</strong> to get the information. "
-msgstr ""
+msgstr "Ofereça melhores maneiras de <strong>formular o pedido</strong> para obter as informações desejadas."
msgid " Say how you've <strong>used the information</strong>, with links if possible."
-msgstr ""
+msgstr "Diga como você <strong>usou as informações</strong> - com links se possível."
msgid " Suggest <strong>where else</strong> the requester might find the information. "
-msgstr ""
+msgstr "Sugira <strong>outros órgãos públicos</strong> onde o solicitante talvez possa encontrar a informação."
msgid " What are you investigating using Freedom of Information? "
-msgstr ""
+msgstr "O que você está pesquisando por meio de um Pedido de Acesso à Informação?"
msgid " You are already being emailed updates about the request."
-msgstr "Já está a receber actualizações acerca deste email."
+msgstr " Você já está recebendo e-mails de atualização sobre o pedido."
msgid " You will also be emailed updates about the request."
-msgstr "Ser-lhe-ão enviadas actualizações acerca deste pedido via email."
+msgstr "Você também receberá atualizações por e-mail sobre esse pedido."
msgid " made by "
-msgstr "criado por"
+msgstr "feito por"
msgid " when you send this message."
-msgstr "quando enviar esta mensagem."
+msgstr "quando você enviar esta mensagem."
msgid "'Crime statistics by ward level for Wales'"
-msgstr ""
+msgstr "'Estatísticas de crimes por bairro na cidade de São Paulo'"
msgid "'Pollution levels over time for the River Tyne'"
-msgstr ""
+msgstr "'Níveis de poluição ao longo do tempo no Rio Tietê'"
msgid "'{{link_to_authority}}', a public authority"
-msgstr "'{{link_to_authority}}', uma autoridade pública"
+msgstr "'{{link_to_authority}}', um orgão público"
msgid "'{{link_to_request}}', a request"
-msgstr ""
+msgstr "'{{link_to_request}}', um pedido"
msgid "'{{link_to_user}}', a person"
-msgstr ""
+msgstr "'{{link_to_user}}', uma pessoa"
msgid "(hide)"
msgstr ""
@@ -128,201 +144,219 @@ msgstr ""
msgid ",\\n\\n\\n\\nYours,\\n\\n{{user_name}}"
msgstr ""
+",\n"
+"\n"
+"\n"
+"\n"
+"Atenciosamente,\n"
+"\n"
+"{{user_name}}"
msgid "- or -"
msgstr "- ou -"
msgid "1. Select an authority"
-msgstr "1. Seleccione uma entidade"
+msgstr "1. Selecione um<br />órgão público"
msgid "1. Select authorities"
msgstr ""
msgid "2. Ask for Information"
-msgstr "2. Peça informação"
+msgstr "2. Solicite uma informação"
msgid "3. Now check your request"
-msgstr "3. Agora, verifique o seu pedido"
+msgstr "3. Verifique seu pedido de informação"
msgid "<a href=\"{{browse_url}}\">Browse all</a> or <a href=\"{{add_url}}\">ask us to add one</a>."
-msgstr ""
+msgstr "<a href=\"{{browse_url}}\">Veja todos</a> ou <a href=\"{{add_url}}\">peça-nos para adicionar um</a>."
msgid "<a href=\"{{url}}\">Add an annotation</a> (to help the requester or others)"
-msgstr ""
+msgstr "<a href=\"{{url}}\">Adicione um comentário</a> (para ajudar o solicitante ou outros)"
msgid "<a href=\"{{url}}\">Sign in</a> to change password, subscriptions and more ({{user_name}} only)"
-msgstr ""
+msgstr "<a href=\"{{url}}\">Acesse aqui</a> para alterar sua senha, acompanhamento de pedidos e mais (apenas para {{user_name}})"
msgid "<p>All done! Thank you very much for your help.</p><p>There are <a href=\"{{helpus_url}}\">more things you can do</a> to help {{site_name}}.</p>"
-msgstr ""
+msgstr "<p>Tudo certo! Muito obrigado por sua ajuda.</p><p>Existem <a href=\"{{helpus_url}}\">mais coisas que você pode fazer</a> para ajudar o {{site_name}}.</p>"
msgid "<p>Thank you! Here are some ideas on what to do next:</p>\\n <ul>\\n <li>To send your request to another authority, first copy the text of your request below, then <a href=\"{{find_authority_url}}\">find the other authority</a>.</li>\\n <li>If you would like to contest the authority's claim that they do not hold the information, here is\\n <a href=\"{{complain_url}}\">how to complain</a>.\\n </li>\\n <li>We have <a href=\"{{other_means_url}}\">suggestions</a>\\n on other means to answer your question.\\n </li>\\n </ul>"
-msgstr ""
+msgstr "<p>Obrigado! Estas são algumas ideias de próximos passos:</p>\\n <ul>\\n <li>Para enviar seu pedido de informação a outro órgão público, primeiro copie o texto de seu pedido abaixo, em seguida <a href=\"{{find_authority_url}}\">localize outra autoridade</a>.</li>\\n <li>Se você deseja recorrer à resposta do órgão público, veja aqui\\n <a href=\"{{complain_url}}\">como proceder</a>.\\n </li>\\n <li>Nós temos<a href=\"{{other_means_url}}\">sugestões</a>\\n sobre outras maneiras para conseguir uma resposta satisfatória ao seu pedido de informação.\\n </li>\\n </ul>"
msgid "<p>Thank you! Hope you don't have to wait much longer.</p> <p>By law, you should have got a response promptly, and normally before the end of <strong>{{date_response_required_by}}</strong>.</p>"
-msgstr ""
+msgstr "<p>Obrigado! Esperamos que você não tenha que esperar muito.</p><p> Conforme a Lei de Acesso à Informação, você deverá receber uma resposta em no máximo 20 dias, ou seja, antes de <strong>{{date_response_required_by}}</strong>.</p>"
msgid "<p>Thank you! Hopefully your wait isn't too long.</p> <p>By law, you should get a response promptly, and normally before the end of <strong>\\n{{date_response_required_by}}</strong>.</p>"
-msgstr ""
+msgstr "<p>Obrigado! Esperamos que você não tenha que esperar muito.</p><p> Conforme a Lei de Acesso à Informação, você deverá receber uma resposta em no máximo 20 dias, ou seja, antes de <strong>{{date_response_required_by}}</strong>.</p>"
msgid "<p>Thank you! Hopefully your wait isn't too long.</p><p>You should get a response within {{late_number_of_days}} days, or be told if it will take longer (<a href=\"{{review_url}}\">details</a>).</p>"
-msgstr ""
+msgstr "<p>Obrigado! Esperamos que você não tenha que esperar muito.</p><p> Conforme a Lei de Acesso à Informação, você deverá receber uma resposta em no máximo <strong>{{date_response_required_by}}</strong> dias, ou ser informado dentro desse período de que serão necessários no máximo mais 10 dias em (<a href=\"{{review_url}}\">detalhes</a>).</p>"
msgid "<p>Thank you! Your request is long overdue, by more than {{very_late_number_of_days}} working days. Most requests should be answered within {{late_number_of_days}} working days. You might like to complain about this, see below.</p>"
-msgstr "<p>Thank you! Your request is long overdue, by more than {{very_late_number_of_days}} working days. Most requests should be answered within {{late_number_of_days}} working days. You might like to complain about this, see below.</p>"
+msgstr "<p>Obrigado! Sua resposta está bastante atrasada, por mais de {{very_late_number_of_days}} dias. A maioria dos pedidos deve ser respondido dentro de {{late_number_of_days}} dias. Você pode reclamar disso, veja abaixo.</p>"
msgid "<p>Thanks for changing the text about you on your profile.</p>\\n <p><strong>Next...</strong> You can upload a profile photograph too.</p>"
msgstr ""
+"<p>Obrigado por mudar o texto sobre você em seu perfil.</p>\n"
+" <p><strong>Próximo...</strong> Você também pode enviar uma imagem de perfil.</p>"
msgid "<p>Thanks for updating your profile photo.</p>\\n <p><strong>Next...</strong> You can put some text about you and your research on your profile.</p>"
msgstr ""
+"<p>Obrigado por atualizar a foto do seu perfil.</p>\n"
+"<p>Agora você pode escrever no seu perfil um breve texto sobre você e o que você faz.</p>"
msgid "<p>We recommend that you edit your request and remove the email address.\\n If you leave it, the email address will be sent to the authority, but will not be displayed on the site.</p>"
msgstr ""
+"<p>Recomendamos que você edite seu pedido e remova o endereço de e-mail\n"
+" Se deixá-lo, o endereço de e-mail será enviado à autoridade, mas não será publicado no site.</p>"
msgid "<p>We're glad you got all the information that you wanted. If you write about or make use of the information, please come back and add an annotation below saying what you did.</p>"
msgstr ""
msgid "<p>We're glad you got all the information that you wanted. If you write about or make use of the information, please come back and add an annotation below saying what you did.</p><p>If you found {{site_name}} useful, <a href=\"{{donation_url}}\">make a donation</a> to the charity which runs it.</p>"
-msgstr ""
+msgstr "<p>Nós estamos felizes que você tenha conseguido toda a informação que procurava. Se você for escrever sobre ou fazer uso dessa informação, por favor, volte depois e deixe um comentário contando o que você fez.</p><p>Se você achou o {{site_name}} útil, divulgue para seus contatos, exerça a cidadania!</p>"
msgid "<p>We're glad you got some of the information that you wanted. If you found {{site_name}} useful, <a href=\"{{donation_url}}\">make a donation</a> to the charity which runs it.</p><p>If you want to try and get the rest of the information, here's what to do now.</p>"
-msgstr ""
+msgstr "<p>Nós estamos felizes que você tenha conseguido toda a informação que procurava. Se você for escrever sobre ou fazer uso dessa informação, por favor, volte depois e deixe um comentário contando o que você fez.</p><p>Se você achou o {{site_name}} útil, divulgue para seus contatos, exerça a cidadania!</p>"
msgid "<p>We're glad you got some of the information that you wanted.</p><p>If you want to try and get the rest of the information, here's what to do now.</p>"
msgstr ""
msgid "<p>You do not need to include your email in the request in order to get a reply (<a href=\"{{url}}\">details</a>).</p>"
-msgstr ""
+msgstr "<p>Você não precisa incluir seu e-mail no pedido de informação para receber uma resposta (<a href=\"{{url}}\">detalhes</a>).</p>"
msgid "<p>You do not need to include your email in the request in order to get a reply, as we will ask for it on the next screen (<a href=\"{{url}}\">details</a>).</p>"
-msgstr ""
+msgstr "<p>Você não precisa incluir seu e-mail no pedido de informação para receber uma resposta, já que vamos requisitá-lo na próxima tela (<a href=\"{{url}}\">detalhes</a>).</p>"
msgid "<p>Your request contains a <strong>postcode</strong>. Unless it directly relates to the subject of your request, please remove any address as it will <strong>appear publicly on the Internet</strong>.</p>"
-msgstr ""
+msgstr "<p>Seu pedido contém um <strong>endereço físico</strong>. A menos que isso seja diretamente relacionado ao assunto da sua requisição, por favor, remova qualquer endereço, uma vez que eles serão <strong>publicados na Internet</strong>.</p>"
msgid "<p>Your {{law_used_full}} request has been <strong>sent on its way</strong>!</p>\\n <p><strong>We will email you</strong> when there is a response, or after {{late_number_of_days}} working days if the authority still hasn't\\n replied by then.</p>\\n <p>If you write about this request (for example in a forum or a blog) please link to this page, and add an\\n annotation below telling people about your writing.</p>"
-msgstr ""
+msgstr "<p>Seu Pedido de Acesso à Informação foi <strong>enviado</strong>!</p>\\n <p><strong>Vamos enviar-lhe um email</strong> quando houver uma resposta, ou depois de {{late_number_of_days}} dias úteis se o órgão público ainda não tiver \\n respondido.</p>\\n <p>Se você escrever sobre este pedido (em um fórum ou blog, por exemplo), por favor, crie um link para esta página e adicione \\n comentários avisando as pessoas sobre seu pedido.</p>"
msgid "<p>Your {{law_used_full}} requests will be <strong>sent</strong> shortly!</p>\\n <p><strong>We will email you</strong> when they have been sent.\\n We will also email you when there is a response to any of them, or after {{late_number_of_days}} working days if the authorities still haven't\\n replied by then.</p>\\n <p>If you write about these requests (for example in a forum or a blog) please link to this page.</p>"
msgstr ""
msgid "<p>{{site_name}} is currently in maintenance. You can only view existing requests. You cannot make new ones, add followups or annotations, or otherwise change the database.</p> <p>{{read_only}}</p>"
-msgstr ""
+msgstr "<p>{{site_name}} está em manutenção. Você pode apenas visualizar pedidos de informação existentes. Você não pode criar novos, adicionar acompanhamentos ou comentários, ou ainda fazer mudanças na base de dados.</p> <p>{{read_only}}</p>"
msgid "<small>If you use web-based email or have \"junk mail\" filters, also check your\\nbulk/spam mail folders. Sometimes, our messages are marked that way.</small>\\n</p>"
-msgstr ""
+msgstr "<small>Se você acessa seu e-mail por algum site da web, ou se tiver filtros para conteúdo indesejado, verifique também suas caixas de spam. Às vezes, nossas mensagens podem ser marcadas dessa forma pelo seu provedor.</small> </p>"
msgid "<strong> Can I request information about myself?</strong>\\n\t\t\t<a href=\"{{url}}\">No! (Click here for details)</a>"
-msgstr ""
+msgstr "<strong>Posso pedir informações sobre mim?</strong> <span class=\"whitespace other\" title=\"Aba\">»» »</span> <a href=\"{{url}}\">Não! (Clique aqui para mais detalhes)</a>"
msgid "<strong><code>commented_by:tony_bowden</code></strong> to search annotations made by Tony Bowden, typing the name as in the URL."
-msgstr ""
+msgstr "<strong><code>commented_by:joao_silva</code></strong> para procurar comentários feitos por João Silva, digitando o nome como aparece na URL."
msgid "<strong><code>filetype:pdf</code></strong> to find all responses with PDF attachments. Or try these: <code>{{list_of_file_extensions}}</code>"
-msgstr ""
+msgstr "<strong><code>filetype:pdf</code></strong> para encontrar todas as respostas que têm arquivos PDF anexados. Ou tente essas:<code>{{list_of_file_extensions}}</code>"
msgid "<strong><code>request:</code></strong> to restrict to a specific request, typing the title as in the URL."
-msgstr ""
+msgstr "<strong><code>pedido:</code></strong> para restringir a busca a um pedido específico, digitando o nome como aparece na URL."
msgid "<strong><code>requested_by:julian_todd</code></strong> to search requests made by Julian Todd, typing the name as in the URL."
-msgstr ""
+msgstr "<strong><code>requested_by:joao_silva</code></strong> para buscar pedidos feito por João Silva, digitando o nome como aparece na URL."
msgid "<strong><code>requested_from:home_office</code></strong> to search requests from the Home Office, typing the name as in the URL."
-msgstr ""
+msgstr "<strong><code>requested_from:presidencia_da_republica</code></strong> para buscar pedidos feitos à Presidência da República, digitando o nome como aparece na URL."
msgid "<strong><code>status:</code></strong> to select based on the status or historical status of the request, see the <a href=\"{{statuses_url}}\">table of statuses</a> below."
-msgstr ""
+msgstr "<strong><code>situação:</code></strong> para selecionar com base na situação ou no histórico de situações do pedido, veja a <a href=\"{{statuses_url}}\">tabela de situações</a> abaixo."
msgid "<strong><code>tag:charity</code></strong> to find all public authorities or requests with a given tag. You can include multiple tags, \\n and tag values, e.g. <code>tag:openlylocal AND tag:financial_transaction:335633</code>. Note that by default any of the tags\\n can be present, you have to put <code>AND</code> explicitly if you only want results them all present."
msgstr ""
+"<strong><code>tag:saude</code></strong> para encontrar órgãos públicos ou pedidos com uma tag específica. Você pode incluir múltiplas tags ?\n"
+" e valores, por exemplo <code>tag:saude E tag:transacao_financeira:335633</code>. Perceba que, por padrão, qualquer uma das tags?\n"
+" pode estar presente em um resultado, e você deve colocar <code>E</code> para explicitar que deseja resultados com todas as tags presentes."
msgid "<strong><code>variety:</code></strong> to select type of thing to search for, see the <a href=\"{{varieties_url}}\">table of varieties</a> below."
-msgstr ""
+msgstr "<strong><code>variedade:</code></strong> para selecionar o tipo daquilo que você procura, confira a <a href=\"{{varieties_url}}\">tabela de variedades</a> abaixo."
msgid "<strong>Advice</strong> on how to get a response that will satisfy the requester. </li>"
-msgstr ""
+msgstr "<strong>Conselho</strong> sobre como dar uma resposta que satisfaça o requerente. </li>"
msgid "<strong>All the information</strong> has been sent"
-msgstr ""
+msgstr "<strong>Toda a informação</strong> foi enviada"
msgid "<strong>Anything else</strong>, such as clarifying, prompting, thanking"
-msgstr ""
+msgstr "<strong>Qualquer outra coisa,</strong> como pedidos de esclarecimento ou agradecimentos"
msgid "<strong>Caveat emptor!</strong> To use this data in an honourable way, you will need \\na good internal knowledge of user behaviour on {{site_name}}. How, \\nwhy and by whom requests are categorised is not straightforward, and there will\\nbe user error and ambiguity. You will also need to understand FOI law, and the\\nway authorities use it. Plus you'll need to be an elite statistician. Please\\n<a href=\"{{contact_path}}\">contact us</a> with questions."
-msgstr ""
+msgstr "<strong>Por sua conta e risco!</strong> Para usar esses dados de forma honrosa, você precisa de um bom conhecimento interno do comportamento do usuário no {{site_name}}. Não é fácil de compreender como, por que e por quem os pedidos foram categorizados, e haverá erros e ambiguidades de usuário. Por favor <a href=\"{{contact_path}}\">entre em contato conosco</a> para perguntas."
msgid "<strong>Clarification</strong> has been requested"
-msgstr ""
+msgstr "<strong>Esclarecimento</strong> foi solicitado"
msgid "<strong>No response</strong> has been received\\n <small>(maybe there's just an acknowledgement)</small>"
msgstr ""
+"<strong>Nenhuma resposta</strong> foi recebida\n"
+" <small>(talvez haja apenas uma notificação)</small>"
msgid "<strong>Note:</strong> Because we're testing, requests are being sent to {{email}} rather than to the actual authority."
-msgstr ""
+msgstr "<strong>Nota:</strong> Como estamos testando, requisições estão sendo enviadas para {{email}} ao invés do órgão público."
msgid "<strong>Note:</strong> You're sending a message to yourself, presumably\\n to try out how it works."
-msgstr ""
+msgstr "<strong>Nota:</strong> Você está enviando mensagem para si mesmo, provavelmente\\n para testar como o sistema funciona."
msgid "<strong>Note:</strong>\\n We will send an email to your new email address. Follow the\\n instructions in it to confirm changing your email."
-msgstr ""
+msgstr "<strong>Atenção:</strong> Vamos enviar um email para você. Siga as instruções para confirmar a alteração o seu e-mail."
msgid "<strong>Privacy note:</strong> If you want to request private information about\\n yourself then <a href=\"{{url}}\">click here</a>."
-msgstr ""
+msgstr "<strong>Observação sobre privacidade:</strong> Se você deseja solicitar informações privadas sobre si mesmo, <a href=\"{{url}}\">clique aqui</a> ."
msgid "<strong>Privacy note:</strong> Your photo will be shown in public on the Internet,\\n wherever you do something on {{site_name}}."
-msgstr ""
+msgstr "<strong>Nota de privacidade:</strong> Sua foto sera exibida publicamente na internet,\\n onde quer que você atue no {{site_name}}."
msgid "<strong>Privacy warning:</strong> Your message, and any response\\n to it, will be displayed publicly on this website."
-msgstr ""
+msgstr "<strong>Aviso de privacidade:</strong> A sua mensagem, e qualquer resposta enviada para ela, será exibida publicamente neste site."
msgid "<strong>Some of the information</strong> has been sent "
-msgstr ""
+msgstr "<strong>Parte da informação</strong> foi enviada "
msgid "<strong>Thank</strong> the public authority or "
-msgstr ""
+msgstr "<strong>Agradeça</strong> o órgão público ou"
msgid "<strong>did not have</strong> the information requested."
-msgstr ""
+msgstr "<strong>não tem</strong> as informações solicitadas."
msgid "A <a href=\"{{request_url}}\">follow up</a> to <em>{{request_title}}</em> was sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "A <a href=\"{{request_url}}\">follow up</a> to <em>{{request_title}}</em> was sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
msgid "A <a href=\"{{request_url}}\">response</a> to <em>{{request_title}}</em> was sent by {{public_body_name}} to {{info_request_user}} on {{date}}. The request status is: {{request_status}}"
-msgstr ""
+msgstr "A <a href=\"{{request_url}}\">follow up</a> to <em>{{request_title}}</em> was sent to {{public_body_name}} by {{info_request_user}} on {{date}}. O estado do pedido é: {{request_status}}"
msgid "A <strong>summary</strong> of the response if you have received it by post. "
-msgstr ""
+msgstr "Um <strong>resumo</strong> da resposta se tiver recebido por correio."
msgid "A Freedom of Information request"
-msgstr ""
+msgstr "Um pedido de informação"
msgid "A full history of my FOI request and all correspondence is available on the Internet at this address: {{url}}"
msgstr ""
msgid "A new request, <em><a href=\"{{request_url}}\">{{request_title}}</a></em>, was sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Um novo pedido, <em><a href=\"{{request_url}}\">{{request_title}}</a></em>, foi enviado para {{public_body_name}} por {{info_request_user}} em {{date}}."
msgid "A public authority"
-msgstr "uma entidade pública"
+msgstr "Um órgão público"
msgid "A response will be sent <strong>by post</strong>"
-msgstr ""
+msgstr "Uma resposta será enviada <strong>por correio</strong>"
msgid "A strange reponse, required attention by the {{site_name}} team"
-msgstr ""
+msgstr "Resposta estranha, é necessária atenção da equipe do {{site_name}}"
msgid "A vexatious request"
msgstr ""
msgid "A {{site_name}} user"
-msgstr ""
+msgstr "Um usuário do {{site_name}}"
msgid "About you:"
-msgstr ""
+msgstr "Sobre você:"
msgid "Act on what you've learnt"
-msgstr ""
+msgstr "Faça algo com o que você aprendeu"
msgid "Acts as xapian/acts as xapian job"
msgstr ""
@@ -334,10 +368,10 @@ msgid "ActsAsXapian::ActsAsXapianJob|Model"
msgstr ""
msgid "Add an annotation"
-msgstr "Adicione uma nota"
+msgstr "Adicionar um comentário"
msgid "Add an annotation to your request with choice quotes, or\\n a <strong>summary of the response</strong>."
-msgstr ""
+msgstr "Adicionar um comentário à sua solicitação com citações à sua escolha, ou com um <strong>resumo da resposta</strong>."
msgid "Add authority - {{public_body_name}}"
msgstr ""
@@ -346,88 +380,88 @@ msgid "Add the authority:"
msgstr ""
msgid "Added on {{date}}"
-msgstr ""
+msgstr "Adicionado em {{date}}"
msgid "Admin level is not included in list"
-msgstr ""
+msgstr "O nível de administrador não está incluído na lista"
msgid "Administration URL:"
-msgstr ""
+msgstr "Endereço administrativo:"
msgid "Advanced search"
-msgstr "Pesquisa avançada"
+msgstr "Busca avançada"
msgid "Advanced search tips"
-msgstr "Dicas sobre pesquisa avançada"
+msgstr "Dicas para busca avançadas"
msgid "Advise on whether the <strong>refusal is legal</strong>, and how to complain about it if not."
-msgstr ""
+msgstr "Orientação sobre a <strong>a legalidade da negativa</strong> e como reclamar caso não seja."
msgid "Air, water, soil, land, flora and fauna (including how these effect\\n human beings)"
-msgstr ""
+msgstr "Ar, água, solo, terra, flora e fauna (inclusive como esses afetam seres humanos)"
msgid "All of the information requested has been received"
-msgstr "Toda a informação pedida foi recebida"
+msgstr "Toda informação requisitada foi recebida"
msgid "All the options below can use <strong>status</strong> or <strong>latest_status</strong> before the colon. For example, <strong>status:not_held</strong> will match requests which have <em>ever</em> been marked as not held; <strong>latest_status:not_held</strong> will match only requests that are <em>currently</em> marked as not held."
-msgstr ""
+msgstr "Todas as opções abaixo podem usar <strong>status</strong> ou <strong>latest_status</strong> antes dos dois pontos. Por exemplo, <strong>status: not_held</strong> irá corresponder a solicitações que <em>já</em> foram marcados como não realizadas; <strong>latest_status: not_held</strong> irá corresponder apenas a solicitações que estão <em>atualmente</em> marcados como não realizadas."
msgid "All the options below can use <strong>variety</strong> or <strong>latest_variety</strong> before the colon. For example, <strong>variety:sent</strong> will match requests which have <em>ever</em> been sent; <strong>latest_variety:sent</strong> will match only requests that are <em>currently</em> marked as sent."
-msgstr ""
+msgstr "Todas as opções abaixo podem usar <strong>variedade</strong> ou <strong>latest_variety</strong> antes dos dois pontos. Por exemplo, a <strong>variedade: enviado</strong> irá corresponder a solicitações que <em>já</em> foram enviadas; <strong>latest_variety: enviado</strong> irá corresponder a solicitações apenas que estão <em>atualmente</em> marcados como enviados."
msgid "Also called {{other_name}}."
-msgstr ""
+msgstr "Também conhecido como {{other_name}}."
msgid "Also send me alerts by email"
-msgstr ""
+msgstr "Inclusive me envie alertas por email"
msgid "Alter your subscription"
-msgstr "Modifique a sua subscrição"
+msgstr "Altere sua inscrição"
msgid "Although all responses are automatically published, we depend on\\nyou, the original requester, to evaluate them."
-msgstr ""
+msgstr "Apesar de todas as respostas serem automaticamente publicadas, nós dependemos de você, o solicitante original, para avaliar elas."
msgid "An <a href=\"{{request_url}}\">annotation</a> to <em>{{request_title}}</em> was made by {{event_comment_user}} on {{date}}"
-msgstr ""
+msgstr "Um <a href=\"{{request_url}}\">comentário</a> sobre <em>{{request_title}}</em> foi feito por {{event_comment_user}} em {{date}}"
msgid "An <strong>error message</strong> has been received"
-msgstr ""
+msgstr "Uma <strong>mensagem de erro</strong> foi recebida"
msgid "An Environmental Information Regulations request"
-msgstr "Um pedido de acesso a Regulamentos de Informação Ambiental"
+msgstr "Um pedido de informação com base na Lei de Acesso à Informação Ambiental"
msgid "An anonymous user"
-msgstr ""
+msgstr "Usuário anônimo"
msgid "Annotation added to request"
-msgstr "Nota adicionada ao pedido"
+msgstr "Comentário adicionado ao pedido"
msgid "Annotations"
-msgstr "Notas"
+msgstr "Comentários"
msgid "Annotations are so anyone, including you, can help the requester with their request. For example:"
-msgstr "As notas servem para que qualquer pessoa, incluindo você, possa apoiar o requerente com o seu pedido. Por exemplo:"
+msgstr "Os comentários sevem para que qualquer pessoa, inclusive você, possa ajudar alguém a fazer um pedido de informação bem sucedido. Por exemplo:"
msgid "Annotations will be posted publicly here, and are\\n <strong>not</strong> sent to {{public_body_name}}."
-msgstr ""
+msgstr "Comentários vão ser apenas publicados aqui, e não serão enviadas para o {{public_body_name}}."
msgid "Anonymous user"
-msgstr "Utilizador anónimo"
+msgstr "Usuário anônimo"
msgid "Anyone:"
-msgstr "Qualquer pessoa:"
+msgstr "Qualquer um:"
msgid "Applies to"
msgstr ""
msgid "Are we missing a public authority?"
-msgstr ""
+msgstr "Estamos esquecendo de um órgão público?"
msgid "Are you the owner of any commercial copyright on this page?"
-msgstr ""
+msgstr "Você é o dono dos direitos autorais dessa página?"
msgid "Ask for <strong>specific</strong> documents or information, this site is not suitable for general enquiries."
-msgstr ""
+msgstr "Solicite apenas documentos ou informações <strong>específicas,</strong>, este site não é adequado para requisições gerais ao governo."
msgid "Ask us to add an authority"
msgstr ""
@@ -439,13 +473,13 @@ msgid "Ask us to update the email address for {{public_body_name}}"
msgstr ""
msgid "At the bottom of this page, write a reply to them trying to persuade them to scan it in\\n (<a href=\"{{url}}\">more details</a>)."
-msgstr ""
+msgstr "Na parte inferior da página, escrever uma resposta, tentando persuadir o órgão a escanear o documento ( <a href=\"{{url}}\">mais detalhes</a> )."
msgid "Attachment (optional):"
-msgstr "Anexo (opcional)"
+msgstr "Anexo (opcional):"
msgid "Attachment:"
-msgstr "Anexo"
+msgstr "Anexo:"
msgid "Authority email:"
msgstr ""
@@ -454,130 +488,130 @@ msgid "Authority:"
msgstr ""
msgid "Awaiting classification."
-msgstr "Classificação pendente"
+msgstr "Aguardando classificação."
msgid "Awaiting internal review."
-msgstr "Revisão interna pendente"
+msgstr "Aguardando revisão."
msgid "Awaiting response."
-msgstr "Resposta pendente"
+msgstr "Aguardando resposta."
msgid "Batch created by {{info_request_user}} on {{date}}."
msgstr ""
msgid "Beginning with"
-msgstr ""
+msgstr "Começar com"
msgid "Browse <a href='{{url}}'>other requests</a> for examples of how to word your request."
-msgstr ""
+msgstr "Veja <a href=\"{{url}}\">outros pedidos</a> para exemplos de como escrever o seu."
msgid "Browse <a href='{{url}}'>other requests</a> to '{{public_body_name}}' for examples of how to word your request."
-msgstr ""
+msgstr "Busque <a href='{{url}}'>outros pedidos</a> para '{{public_body_name}}' para exemplos de como escrever seu pedido."
msgid "Browse all authorities..."
-msgstr "Pesquise todas as autoridades..."
+msgstr "Listar todos os órgãos..."
msgid "By law, under all circumstances, {{public_body_link}} should have responded by now"
-msgstr ""
+msgstr "De acordo com a lei, em qualquer circunstância, {{public_body_link}} já deveria ter respondido seu pedido."
msgid "By law, {{public_body_link}} should normally have responded <strong>promptly</strong> and"
-msgstr ""
+msgstr "De acordo com a lei, {{public_body_link}} deveria ter respondido <strong>prontamente</strong> seu pedido e"
msgid "Calculated home page"
msgstr ""
msgid "Can't find the one you want?"
-msgstr "Não encontra o que pretende?"
+msgstr "Não conseguiu encontrar o que procurava?"
msgid "Cancel a {{site_name}} alert"
-msgstr ""
+msgstr "Cancele um alerta do {{site_name}}"
msgid "Cancel some {{site_name}} alerts"
-msgstr ""
+msgstr "Cancele vários alertas do {{site_name}}"
msgid "Cancel, return to your profile page"
-msgstr "Cancelar, regresse à sua página de perfil"
+msgstr "Cancelar, retornar para seu perfil"
msgid "Censor rule"
-msgstr ""
+msgstr "Regra de censura"
msgid "CensorRule|Last edit comment"
-msgstr ""
+msgstr "CensorRule | Último comentário editado"
msgid "CensorRule|Last edit editor"
-msgstr ""
+msgstr "CensorRule | Autor da última edição"
msgid "CensorRule|Regexp"
msgstr ""
msgid "CensorRule|Replacement"
-msgstr ""
+msgstr "CensorRule | Substituição"
msgid "CensorRule|Text"
-msgstr ""
+msgstr "CensorRule | Texto"
msgid "Change email on {{site_name}}"
-msgstr ""
+msgstr "Alterar e-mail em {{site_name}}"
msgid "Change password on {{site_name}}"
-msgstr ""
+msgstr "Alterar a sua senha em {{site_name}}"
msgid "Change profile photo"
-msgstr ""
+msgstr "Trocar a sua foto do perfil"
msgid "Change the text about you on your profile at {{site_name}}"
-msgstr ""
+msgstr "Mude a descrição em seu perfil em {{site_name}}"
msgid "Change your email"
-msgstr ""
+msgstr "Trocar o seu endereço de e-mail"
msgid "Change your email address used on {{site_name}}"
-msgstr ""
+msgstr "Alterar o seu endereço de e-mail utilizado em {{site_name}}"
msgid "Change your password"
-msgstr ""
+msgstr "Alterar a sua senha"
msgid "Change your password on {{site_name}}"
-msgstr ""
+msgstr "Alterar a sua senha em {{site_name}}"
msgid "Change your password {{site_name}}"
-msgstr ""
+msgstr "Mude sua senha do {{site_name}}"
msgid "Charity registration"
-msgstr ""
+msgstr "Registro de ONG"
msgid "Check for mistakes if you typed or copied the address."
-msgstr ""
+msgstr "Verifique se há erros se você digitou ou copiou o endereço."
msgid "Check you haven't included any <strong>personal information</strong>."
-msgstr ""
+msgstr "Verifique se você não incluiu alguma <strong>informação pessoal.</strong>"
msgid "Choose a reason"
msgstr ""
msgid "Choose your profile photo"
-msgstr ""
+msgstr "Escolha sua foto do perfil"
msgid "Clarification"
-msgstr ""
+msgstr "Esclarecimento"
msgid "Clarification sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
msgstr ""
msgid "Clarify your FOI request - "
-msgstr ""
+msgstr "Esclareça seu pedido de Acesso à Informação -"
msgid "Classify an FOI response from "
-msgstr ""
+msgstr "Classifique uma resposta de "
msgid "Clear photo"
-msgstr ""
+msgstr "Apagar foto"
msgid "Click on the link below to send a message to {{public_body_name}} telling them to reply to your request. You might like to ask for an internal\\nreview, asking them to find out why response to the request has been so slow."
-msgstr ""
+msgstr "Clique no link abaixo para enviar uma mensagem para {{public_body_name}} pedindo para eles responderem seu pedido. Você também pode recorrer à autoridade superior, pedindo que eles descubram porque a resposta ao seu pedido está demorando tanto."
msgid "Click on the link below to send a message to {{public_body}} reminding them to reply to your request."
-msgstr ""
+msgstr "Clique no link abaixo para lembrar o {{public_body}} desses prazos."
msgid "Close"
msgstr "Fechar"
@@ -589,61 +623,61 @@ msgid "Comment"
msgstr "Comentário"
msgid "Comment|Body"
-msgstr ""
+msgstr "Comentário | Corpo"
msgid "Comment|Comment type"
-msgstr ""
+msgstr "Comentário | Tipo de Comentário"
msgid "Comment|Locale"
-msgstr ""
+msgstr "Comentário | Local"
msgid "Comment|Visible"
-msgstr ""
+msgstr "Comentário | Visível"
msgid "Confirm you want to follow all successful FOI requests"
-msgstr ""
+msgstr "Confirme que você deseja acompanhar todos os pedidos de Acesso à Informação bem sucedidos"
msgid "Confirm you want to follow new requests"
-msgstr ""
+msgstr "Confirme que você deseja acompanhar novos pedidos"
msgid "Confirm you want to follow new requests or responses matching your search"
-msgstr ""
+msgstr "Confirme que você deseja acompanhar novos pedidos ou respostas que correspondem à sua pesquisa"
msgid "Confirm you want to follow requests by '{{user_name}}'"
-msgstr ""
+msgstr "Confirme que você deseja acompanhar os pedidos por '{{user_name}}'"
msgid "Confirm you want to follow requests to '{{public_body_name}}'"
-msgstr ""
+msgstr "Confirme que você deseja acompanhar pedidos para '{{public_body_name}}'"
msgid "Confirm you want to follow the request '{{request_title}}'"
-msgstr ""
+msgstr "Confirme que você deseja acompanhar o pedido '{{request_title}}'"
msgid "Confirm your FOI request to {{public_body_name}}"
msgstr ""
msgid "Confirm your account on {{site_name}}"
-msgstr ""
+msgstr "Confirme sua conta no {{site_name}}"
msgid "Confirm your annotation to {{info_request_title}}"
-msgstr ""
+msgstr "Confirme seu comentário em {{info_request_title}}"
msgid "Confirm your email address"
-msgstr ""
+msgstr "Confirme seu endereço de e-mail"
msgid "Confirm your new email address on {{site_name}}"
-msgstr ""
+msgstr "Confirme seu novo endereço de e-mail no {{site_name}}"
msgid "Considered by administrators as not an FOI request and hidden from site."
-msgstr ""
+msgstr "Considerado pelos administradores como não sendo uma solicitação de informação e ocultado do site"
msgid "Considered by administrators as vexatious and hidden from site."
-msgstr ""
+msgstr "Considerado constrangedora pelos administradores ou oculto do site."
msgid "Contact {{recipient}}"
-msgstr ""
+msgstr "Contato {{recipient}}"
msgid "Contact {{site_name}}"
-msgstr ""
+msgstr "Contato {{site_name}}"
msgid "Contains defamatory material"
msgstr ""
@@ -652,22 +686,22 @@ msgid "Contains personal information"
msgstr ""
msgid "Could not identify the request from the email address"
-msgstr ""
+msgstr "Não foi possível identificar o pedido a partir do endereço de e-mail"
msgid "Couldn't understand the image file that you uploaded. PNG, JPEG, GIF and many other common image file formats are supported."
-msgstr ""
+msgstr "Não podemos entender o arquivo da imagem que você enviou. PNG, JPEG, GIF e muitos outros formatos comuns de imagem são compatíveis com este site."
msgid "Created by {{info_request_user}} on {{date}}."
msgstr ""
msgid "Crop your profile photo"
-msgstr ""
+msgstr "Cortar sua imagem do perfil"
msgid "Cultural sites and built structures (as they may be affected by the\\n environmental factors listed above)"
-msgstr ""
+msgstr "Lugares culturais e estruturas construídas (como estes podem ser afetados pelos \\n fatores ambientais listados acima)"
msgid "Currently <strong>waiting for a response</strong> from {{public_body_link}}, they must respond promptly and"
-msgstr ""
+msgstr "Atualmente <strong>aguardando uma resposta</strong> de {{public_body_link}}, eles devem responder"
msgid "Date:"
msgstr "Data:"
@@ -679,7 +713,7 @@ msgid "Dear {{name}},"
msgstr ""
msgid "Dear {{public_body_name}},"
-msgstr ""
+msgstr "Prezado(a) {{public_body_name}},"
msgid "Dear {{user_name}},"
msgstr ""
@@ -691,25 +725,25 @@ msgid "Defunct."
msgstr ""
msgid "Delayed response to your FOI request - "
-msgstr ""
+msgstr "A resposta ao seu pedido de informação está atrasada."
msgid "Delayed."
-msgstr ""
+msgstr "Atrasado."
msgid "Delivery error"
-msgstr ""
+msgstr "Erro de entrega"
msgid "Destroy {{name}}"
msgstr ""
msgid "Details of request '"
-msgstr ""
+msgstr "Detalhes do pedido"
msgid "Did you mean: {{correction}}"
-msgstr ""
+msgstr "Você quis dizer: {{correction}}"
msgid "Disclaimer: This message and any reply that you make will be published on the internet. Our privacy and copyright policies:"
-msgstr ""
+msgstr "Aviso: Esta mensagem e todas as respostas enviadas serão publicadas na Internet, por meio da plataforma Queremos Saber http://queremossaber.org.br/. Leia algumas questões sobre acesso a informação para agentes públicos http://queremossaber.org.br/help/officers/."
msgid "Disclosure log"
msgstr ""
@@ -721,187 +755,189 @@ msgid "Don't have a superuser account yet?"
msgstr ""
msgid "Don't want to address your message to {{person_or_body}}? You can also write to:"
-msgstr ""
+msgstr "Você não quer enviar sua mensagem para {{person_or_body}}? Você também pode escrever para:"
msgid "Done"
-msgstr "Terminado."
+msgstr "Feito"
msgid "Done &gt;&gt;"
-msgstr ""
+msgstr "Feito &gt;&gt;"
msgid "Download a zip file of all correspondence"
-msgstr ""
+msgstr "Baixar um arquivo compactado com todas as mensagens"
msgid "Download original attachment"
-msgstr ""
+msgstr "Fazer download anexo original"
msgid "EIR"
-msgstr ""
+msgstr "RIMA"
msgid "Edit"
msgstr ""
msgid "Edit and add <strong>more details</strong> to the message above,\\n explaining why you are dissatisfied with their response."
-msgstr ""
+msgstr "Editar e adicionar <strong>mais detalhes</strong> à mensagem acima, explicando por que você está insatisfeito com a resposta que recebeu."
msgid "Edit text about you"
-msgstr ""
+msgstr "Alterar o texto sobre você"
msgid "Edit this request"
-msgstr ""
+msgstr "Alterar esta solicitação"
msgid "Either the email or password was not recognised, please try again."
-msgstr ""
+msgstr "O e-mail ou a senha não foram reconhecidos, por favor tente novamente."
msgid "Either the email or password was not recognised, please try again. Or create a new account using the form on the right."
-msgstr ""
+msgstr "O e-mail ou a senha não foram reconhecidos, por favor tente novamente. Ou crie uma nova conta usando o formulário à direita."
msgid "Email doesn't look like a valid address"
-msgstr ""
+msgstr "O e-mail informado não parece um endereço válido"
msgid "Email me future updates to this request"
-msgstr ""
+msgstr "Envie-me atualizações deste pedido por e-mail"
msgid "Email:"
msgstr ""
msgid "Enter words that you want to find separated by spaces, e.g. <strong>climbing lane</strong>"
-msgstr ""
+msgstr "Informe palavras que você deseja procurar separadas por espaços, por exemplo <strong>gastos educação</strong>"
msgid "Enter your response below. You may attach one file (use email, or\\n <a href=\"{{url}}\">contact us</a> if you need more)."
-msgstr ""
+msgstr "Digite sua resposta abaixo. Você pode anexar um arquivo (utilize email ou\\n <a href=\"{{url}}\">fale conosco</a> se precisar de mais informações)."
msgid "Environmental Information Regulations"
-msgstr ""
+msgstr "Lei de Acesso à Informação Ambiental"
msgid "Environmental Information Regulations requests made"
-msgstr ""
+msgstr "Pedidos de informação com base na Lei de Acesso à Informação Ambiental realizados"
msgid "Environmental Information Regulations requests made using this site"
-msgstr ""
+msgstr "Pedidos de informação com base na Lei de Acesso à Informação Ambiental realizados por este site"
msgid "Event history"
-msgstr ""
+msgstr "Histórico de eventos"
msgid "Event history details"
-msgstr ""
+msgstr "Detalhe do histórico de eventos"
msgid "Event {{id}}"
msgstr ""
msgid "Everything that you enter on this page, including <strong>your name</strong>,\\n will be <strong>displayed publicly</strong> on\\n this website forever (<a href=\"{{url}}\">why?</a>)."
-msgstr ""
+msgstr "Tudo o que você publicar nesta página, incluindo <strong>seu nome</strong>, será <strong>exibido publicamente</strong> neste site para sempre ( <a href=\"{{url}}\">por quê?</a> )."
msgid "Everything that you enter on this page\\n will be <strong>displayed publicly</strong> on\\n this website forever (<a href=\"{{url}}\">why?</a>)."
-msgstr ""
+msgstr "Tudo o que você publicar nesta página será <strong>exibido publicamente</strong> neste site para sempre ( <a href=\"{{url}}\">por quê?</a> )."
msgid "FOI"
-msgstr ""
+msgstr "acesso à informação"
msgid "FOI email address for {{public_body}}"
-msgstr ""
+msgstr "Email de contato para {{public_body}}"
msgid "FOI request – {{title}}"
msgstr ""
msgid "FOI requests"
-msgstr ""
+msgstr "Pedidos de acesso à informação"
msgid "FOI requests by '{{user_name}}'"
-msgstr ""
+msgstr "Pedidos de acesso à informação de '{{user_name}}'"
msgid "FOI requests {{start_count}} to {{end_count}} of {{total_count}}"
-msgstr ""
+msgstr "Pedidos de informação: de {{start_count}} a {{end_count}} de {{total_count}}"
msgid "FOI response requires admin ({{reason}}) - {{title}}"
-msgstr ""
+msgstr "Respostas ao PAI requer acesso de administrador ({{reason}}) - {{title}}"
msgid "Failed to convert image to a PNG"
-msgstr ""
+msgstr "Erro ao converter a imagem para PNG"
msgid "Failed to convert image to the correct size: at {{cols}}x{{rows}}, need {{width}}x{{height}}"
-msgstr ""
+msgstr "Erro ao tentar converter a imagem para o tamanho correto: no {{cols}}x{{rows}, precisa de um {{width}x{{height}}"
msgid "Filter"
-msgstr ""
+msgstr "Filtro"
msgid "First, did your other requests succeed?"
msgstr ""
msgid "First, type in the <strong>name of the UK public authority</strong> you'd\\n like information from. <strong>By law, they have to respond</strong>\\n (<a href=\"{{url}}\">why?</a>)."
msgstr ""
+"Primeiro, insira o <strong>nome da autoridade pública brasileira</strong> da qual você gostaria de receber informação. <strong>Por lei, eles são obrigados a responder</strong>\n"
+" (<a href=\"{{url}}\">por quê?</a>)."
msgid "Foi attachment"
-msgstr ""
+msgstr "Anexo do pedido"
msgid "FoiAttachment|Charset"
-msgstr ""
+msgstr "FoiAttachment|Charset"
msgid "FoiAttachment|Content type"
-msgstr ""
+msgstr "FoiAttachment|Content type"
msgid "FoiAttachment|Display size"
-msgstr ""
+msgstr "FoiAttachment|Display size"
msgid "FoiAttachment|Filename"
-msgstr ""
+msgstr "FoiAttachment|Nome de arquivo"
msgid "FoiAttachment|Hexdigest"
-msgstr ""
+msgstr "FoiAttachment|Hexdigest"
msgid "FoiAttachment|Url part number"
-msgstr ""
+msgstr "FoiAttachment|Url part number"
msgid "FoiAttachment|Within rfc822 subject"
-msgstr ""
+msgstr "FoiAttachment|Within rfc822 subject"
msgid "Follow"
-msgstr ""
+msgstr "Acompanhar"
msgid "Follow all new requests"
-msgstr ""
+msgstr "Acompanhar todos os novos pedidos"
msgid "Follow new successful responses"
-msgstr ""
+msgstr "Acompanhar novas respostas bem sucedidas"
msgid "Follow requests to {{public_body_name}}"
-msgstr ""
+msgstr "Acompanhar pedidos para {{public_body_name}}"
msgid "Follow these requests"
-msgstr ""
+msgstr "Acompanhar estes pedidos"
msgid "Follow things matching this search"
-msgstr ""
+msgstr "Acompanhar coisas correspondentes à esta pesquisa"
msgid "Follow this authority"
-msgstr ""
+msgstr "Acompanhar este órgão de govern"
msgid "Follow this link to see the request:"
-msgstr ""
+msgstr "Clique neste link para ver o pedido:"
msgid "Follow this link to see the requests:"
msgstr ""
msgid "Follow this person"
-msgstr ""
+msgstr "Seguir esta pessoa"
msgid "Follow this request"
-msgstr ""
+msgstr "Acompanhar este pedido"
#. "Follow up" in this context means a further
#. message sent by the requester to the authority after
#. the initial request
msgid "Follow up"
-msgstr ""
+msgstr "Acompanhar"
#. "Follow up message" in this context means a
#. further message sent by the requester to the authority after
#. the initial request
msgid "Follow up message sent by requester"
-msgstr ""
+msgstr "Mensagem de acompanhamento enviada pelo solicitante"
msgid "Follow up messages to existing requests are sent to "
-msgstr ""
+msgstr "Mensagens de acompanhamento para solicitações existentes são enviadas para"
msgid "Follow up sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
msgstr ""
@@ -910,69 +946,69 @@ msgstr ""
#. messages sent by the requester to the authority after
#. the initial request
msgid "Follow ups and new responses to this request have been stopped to prevent spam. Please <a href=\"{{url}}\">contact us</a> if you are {{user_link}} and need to send a follow up."
-msgstr ""
+msgstr "Acompanhamento e novas respostas ao pedido foram interrompidos para evitar spam. Por favor, <a href=\"{{url}}\">nos contate</a> se você for {{user_link}} e precisar enviar um acompanhamento."
msgid "Follow us on twitter"
-msgstr ""
+msgstr "Siga-nos no Twitter"
msgid "Followups cannot be sent for this request, as it was made externally, and published here by {{public_body_name}} on the requester's behalf."
-msgstr ""
+msgstr "Respostas não podem ser enviadas para esse pedido, pois ele foi enviado externamente, e publicado aqui por {{public_body_name}} em nome do solicitante."
msgid "For an unknown reason, it is not possible to make a request to this authority."
-msgstr ""
+msgstr "Devido a um erro desconhecido, não foi possível realizar seu pedido para esta entidade."
msgid "Forgotten your password?"
-msgstr ""
+msgstr "Esqueceu a sua senha?"
msgid "Found {{count}} public authority {{description}}"
msgid_plural "Found {{count}} public authorities {{description}}"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} órgão público encontrado {{description}}"
+msgstr[1] "{{count}} órgãos públicos encontrados {{description}}"
msgid "Freedom of Information"
-msgstr ""
+msgstr "Acesso à Informação Pública"
msgid "Freedom of Information Act"
-msgstr ""
+msgstr "Lei de Acesso à Informação Pública"
msgid "Freedom of Information law does not apply to this authority, so you cannot make\\n a request to it."
-msgstr ""
+msgstr "A Lei de Acesso à Informação não se aplica a essa autoridade, portanto não é possível enviar um pedido a ela."
msgid "Freedom of Information law no longer applies to"
-msgstr ""
+msgstr "A lei de acesso a informação não mais se aplica a"
msgid "Freedom of Information law no longer applies to this authority.Follow up messages to existing requests are sent to "
-msgstr ""
+msgstr "A Lei de Acesso à Informação não mais se aplica mais a essa autoridade. Mensagens de acompanhamento de pedidos existentes são enviados para "
msgid "Freedom of Information requests made"
-msgstr ""
+msgstr "Pedidos de acesso à informação feitos"
msgid "Freedom of Information requests made by this person"
-msgstr ""
+msgstr "Pedidos de acesso a informação feitos por esta pessoa"
msgid "Freedom of Information requests made by you"
-msgstr ""
+msgstr "Pedidos de acesso a informação feitos por você"
msgid "Freedom of Information requests made using this site"
-msgstr ""
+msgstr "Pedidos de acesso à informação feitos através deste site"
msgid "Freedom of information requests to"
-msgstr ""
+msgstr "Pedidos de acesso a informação para "
msgid "From"
msgstr "De"
msgid "From the request page, try replying to a particular message, rather than sending\\n a general followup. If you need to make a general followup, and know\\n an email which will go to the right place, please <a href=\"{{url}}\">send it to us</a>."
-msgstr ""
+msgstr "A partir da página de solicitação, tente responder a uma mensagem específica, em vez de enviar um pedido de acompanhamento geral. Se você precisa fazer um acompanhamento geral, e sabe um endereço de e-mail para que ele chegue ao lugar certo, por favor, <a href=\"{{url}}\">envie para nós</a> ."
msgid "From:"
-msgstr ""
+msgstr "De:"
msgid "GIVE DETAILS ABOUT YOUR COMPLAINT HERE"
-msgstr ""
+msgstr "DÊ DETALHES SOBRE SUA QUEIXA AQUI"
msgid "Handled by post."
-msgstr ""
+msgstr "Encaminhado por correio."
msgid "Has tag string/has tag string tag"
msgstr ""
@@ -987,97 +1023,103 @@ msgid "HasTagString::HasTagStringTag|Value"
msgstr ""
msgid "Hello! We have an <a href=\"{{url}}\">important message</a> for visitors outside {{country_name}}"
-msgstr ""
+msgstr "Olá! Temos uma <a href=\"{{url}}\">mensagem importante</a> para visitantes de fora do {{country_name}}"
msgid "Hello! We have an <a href=\"{{url}}\">important message</a> for visitors in other countries"
msgstr ""
msgid "Hello! You can make Freedom of Information requests within {{country_name}} at {{link_to_website}}"
-msgstr ""
+msgstr "Olá! Você pode fazer pedidos de informação no {{country_name}} em {{link_to_website}}"
msgid "Hello, {{username}}!"
-msgstr ""
+msgstr "Olá, {{username}}!"
msgid "Help"
msgstr "Ajuda"
msgid "Here <strong>described</strong> means when a user selected a status for the request, and\\nthe most recent event had its status updated to that value. <strong>calculated</strong> is then inferred by\\n{{site_name}} for intermediate events, which weren't given an explicit\\ndescription by a user. See the <a href=\"{{search_path}}\">search tips</a> for description of the states."
msgstr ""
+"Aqui <strong>descrito</strong> se refere aos casos em que um usuário selecionou uma situação para o pedido, e o evento mais recente teve sua situação atualizado para aquele valor. <strong>calculado</strong> é então indicado pelo\n"
+"{{site_name}} para eventos intermediários, que não receberam uma descrição explícita do usuário. Confira as <a href=\"{{search_path}}\">dicas de pesquisa</a> para a descrição dos estados."
msgid "Here is the message you wrote, in case you would like to copy the text and save it for later."
-msgstr ""
+msgstr "Aqui você encontra a mensagem que redigiu, no caso de você querer copiar o texto e salvá-lo para mais tarde."
msgid "Hi! We need your help. The person who made the following request\\n hasn't told us whether or not it was successful. Would you mind taking\\n a moment to read it and help us keep the place tidy for everyone?\\n Thanks."
msgstr ""
+"Olá! Precisamos de sua ajuda. A pessoa que fez o seguinte pedido\n"
+" não nos contou se ele foi ou não bem-sucedido. Você poderia dedicar\n"
+" um momento para lê-lo e contribuir para manter o local organizado para todos?\n"
+" Obrigado."
msgid "Hide request"
msgstr ""
msgid "Holiday"
-msgstr ""
+msgstr "Feriado"
msgid "Holiday|Day"
-msgstr ""
+msgstr "Férias | Dia"
msgid "Holiday|Description"
-msgstr ""
+msgstr "Férias | Descrição"
msgid "Home"
-msgstr ""
+msgstr "Início"
msgid "Home page"
msgstr ""
msgid "Home page of authority"
-msgstr ""
+msgstr "Site do órgão público"
msgid "However, you have the right to request environmental\\n information under a different law"
-msgstr ""
+msgstr "Entretanto, você tem o direito de requisitar informação ambiental por meio de uma lei diferente."
msgid "Human health and safety"
-msgstr ""
+msgstr "Saúde e segurança"
msgid "I am asking for <strong>new information</strong>"
-msgstr ""
+msgstr "Estou pedindo <strong>novas informações</strong>"
msgid "I am requesting an <strong>internal review</strong>"
-msgstr ""
+msgstr "Eu estou apresentando um <strong>recurso</strong>"
msgid "I am writing to request an internal review of {{public_body_name}}'s handling of my FOI request '{{info_request_title}}'."
msgstr ""
msgid "I don't like these ones &mdash; give me some more!"
-msgstr ""
+msgstr "Eu não gosto desses, deixe-me ver mais!"
msgid "I don't want to do any more tidying now!"
-msgstr ""
+msgstr "Eu não quero fazer mais nenhum ajuste agora!"
msgid "I like this request"
-msgstr ""
+msgstr "Eu curti este pedido"
msgid "I would like to <strong>withdraw this request</strong>"
-msgstr ""
+msgstr "Gostaria de <strong>retirar este pedido de informação</strong>"
msgid "I'm still <strong>waiting</strong> for my information\\n <small>(maybe you got an acknowledgement)</small>"
-msgstr ""
+msgstr "Eu ainda estou <strong>esperando</strong> pelas informações que pedi <small>(das quais talvez você tenha conhecimento)</small>"
msgid "I'm still <strong>waiting</strong> for the internal review"
-msgstr ""
+msgstr "Eu ainda estou <strong>esperando</strong> por uma revisão interna"
msgid "I'm waiting for an <strong>internal review</strong> response"
-msgstr ""
+msgstr "Eu estou esperando por uma resposta quanto à <strong>revisão interna</strong>"
msgid "I've been asked to <strong>clarify</strong> my request"
-msgstr ""
+msgstr "Eu tenho que <strong>fazer esclarecimentos</strong> sobre o meu pedido"
msgid "I've received <strong>all the information"
-msgstr ""
+msgstr "Recebi <strong>todas as informações solicitadas</strong>"
msgid "I've received <strong>some of the information</strong>"
-msgstr ""
+msgstr "Recebi <strong>algumas das informações solicitadas</strong>"
msgid "I've received an <strong>error message</strong>"
-msgstr ""
+msgstr "Recebi uma <strong>mensagem de erro</strong>"
msgid "I've received an error message"
msgstr ""
@@ -1086,91 +1128,91 @@ msgid "Id"
msgstr ""
msgid "If the address is wrong, or you know a better address, please <a href=\"{{url}}\">contact us</a>."
-msgstr ""
+msgstr "Se o endereço de email estiver errado, ou se você sabe de um outro melhor, <a href=\"{{url}}\">entre em contato conosco</a> ."
msgid "If the error was a delivery failure, and you can find an up to date FOI email address for the authority, please tell us using the form below."
msgstr ""
msgid "If this is incorrect, or you would like to send a late response to the request\\nor an email on another subject to {{user}}, then please\\nemail {{contact_email}} for help."
-msgstr ""
+msgstr "Se isso estiver errado, ou se você gostaria de enviar uma resposta final para o pedido, ou um e-mail sobre algum outro assunto para {{user}}, então escreva para {{contact_email}} para obter ajuda."
msgid "If you are dissatisfied by the response you got from\\n the public authority, you have the right to\\n complain (<a href=\"{{url}}\">details</a>)."
-msgstr ""
+msgstr "Se você estiver insatisfeito com a resposta que recebeu do órgão público, você tem o direito de reclamar ( <a href=\"{{url}}\">detalhes</a> )."
msgid "If you are still having trouble, please <a href=\"{{url}}\">contact us</a>."
-msgstr ""
+msgstr "Se você continua com problemas, <a href=\"{{url}}\">entre em contato conosco</a>."
msgid "If you are the requester, then you may <a href=\"{{url}}\">sign in</a> to view the message."
msgstr ""
msgid "If you are the requester, then you may <a href=\"{{url}}\">sign in</a> to view the request."
-msgstr ""
+msgstr "Se você for o solicitante, então pode <a href=\"{{url}}\">entrar</a> para visualizar o pedido."
msgid "If you are thinking of using a pseudonym,\\n please <a href=\"{{url}}\">read this first</a>."
-msgstr ""
+msgstr "Se você está pensando em usar um pseudônimo, por favor, <a href=\"{{url}}\">leia isso primeiro</a> ."
msgid "If you are {{user_link}}, please"
-msgstr ""
+msgstr "Se você é {{user_link}}, por favor"
msgid "If you believe this request is not suitable, you can report it for attention by the site administrators"
-msgstr ""
+msgstr "Se você achar que este pedido de informação não está adequado, você pode relatá-lo para revisão pelos administradores do site."
msgid "If you can't click on it in the email, you'll have to <strong>select and copy\\nit</strong> from the email. Then <strong>paste it into your browser</strong>, into the place\\nyou would type the address of any other webpage."
-msgstr ""
+msgstr "Se você não conseguir clicar no endereço, você pode <strong>selecioná-lo e copiá-lo</strong> do e-mail. Depois, <strong>cole em seu navegador,</strong> no lugar em que você digita o endereço de qualquer outra página da web."
msgid "If you can, scan in or photograph the response, and <strong>send us\\n a copy to upload</strong>."
-msgstr ""
+msgstr "Se você puder, digitalizar ou fotografe a resposta, e <strong>envie-nos uma cópia para publicação no site</strong>."
msgid "If you find this service useful as an FOI officer, please ask your web manager to link to us from your organisation's FOI page."
-msgstr ""
+msgstr "Conheça a Lei de Acesso à Informação Pública: http://www.planalto.gov.br/ccivil_03/_ato2011-2014/2011/lei/l12527.htm"
msgid "If you got the email <strong>more than six months ago</strong>, then this login link won't work any\\nmore. Please try doing what you were doing from the beginning."
-msgstr ""
+msgstr "Se você recebeu o e-mail de confirmação <strong>há mais de seis meses,</strong> então este link não funciona mais. Tente começar novamente."
msgid "If you have not done so already, please write a message below telling the authority that you have withdrawn your request. Otherwise they will not know it has been withdrawn."
-msgstr ""
+msgstr "Se você ainda não fez, por favor escreva uma mensagem explicando para o orgão que você esta removendo seu pedido. Do contrario eles não vão saber que o pedido foi removido."
msgid "If you reply to this message it will go directly to {{user_name}}, who will\\nlearn your email address. Only reply if that is okay."
-msgstr ""
+msgstr "Se você responder a esta mensagem, ela irá diretamente para {{user_name}}, que ficará conhecendo seu email. Somente responda se concordar."
msgid "If you use web-based email or have \"junk mail\" filters, also check your\\nbulk/spam mail folders. Sometimes, our messages are marked that way."
-msgstr ""
+msgstr "Se você usar seu e-mail por algum site da web ou se tiver filtros para mensagens indesejadas, verifique também suas pastas de spam. Às vezes, nossas mensagens podem ser marcadas dessa forma pelo seu provedor."
msgid "If you would like us to lift this ban, then you may politely\\n<a href=\"/help/contact\">contact us</a> giving reasons.\\n"
-msgstr ""
+msgstr "Se você gostaria de nos levantar esta proibição, você pode <a href=\"/help/contact\">entrar em contato conosco</a>, dando as razões.\\n"
msgid "If you're new to {{site_name}}"
-msgstr ""
+msgstr "Se você for novo no {{site_name}}"
msgid "If you've used {{site_name}} before"
-msgstr ""
+msgstr "Se você já utilizou o {{site_name}} antes"
msgid "If your browser is set to accept cookies and you are seeing this message,\\nthen there is probably a fault with our server."
-msgstr ""
+msgstr "Se seu navegador está configurado para aceitar \"cookies\" e você está vendo esta mensagem, então provavelmente é culpa do nosso servidor."
msgid "Incoming email address"
msgstr ""
msgid "Incoming message"
-msgstr ""
+msgstr "Caixa de entrada"
msgid "IncomingMessage|Cached attachment text clipped"
-msgstr ""
+msgstr "IncomingMessage | texto anexo cortado"
msgid "IncomingMessage|Cached main body text folded"
-msgstr ""
+msgstr "IncomingMessage | corpo do texto principal dobrado"
msgid "IncomingMessage|Cached main body text unfolded"
-msgstr ""
+msgstr "IncomingMessage | Exibindo corpo do texto principal em cache"
msgid "IncomingMessage|Last parsed"
-msgstr ""
+msgstr "IncomingMessage|Last parsed"
msgid "IncomingMessage|Mail from"
-msgstr ""
+msgstr "MensagemRecebida|Remetente"
msgid "IncomingMessage|Mail from domain"
-msgstr ""
+msgstr "IncomingMessage | Mensagem do site"
msgid "IncomingMessage|Prominence"
msgstr ""
@@ -1179,25 +1221,25 @@ msgid "IncomingMessage|Prominence reason"
msgstr ""
msgid "IncomingMessage|Sent at"
-msgstr ""
+msgstr "IncomingMessage | Enviado em"
msgid "IncomingMessage|Subject"
-msgstr ""
+msgstr "IncomingMessage | Assunto"
msgid "IncomingMessage|Valid to reply to"
-msgstr ""
+msgstr "IncomingMessage | Vale a pena responder para"
msgid "Individual requests"
-msgstr ""
+msgstr "Pedidos individuais"
msgid "Info request"
-msgstr ""
+msgstr "Pedido de informação"
msgid "Info request batch"
msgstr ""
msgid "Info request event"
-msgstr ""
+msgstr "Evento de pedido de acesso"
msgid "InfoRequestBatch|Body"
msgstr ""
@@ -1209,34 +1251,34 @@ msgid "InfoRequestBatch|Title"
msgstr ""
msgid "InfoRequestEvent|Calculated state"
-msgstr ""
+msgstr "InfoRequestEvent | estado Calculado"
msgid "InfoRequestEvent|Described state"
-msgstr ""
+msgstr "InfoRequestEvent | estado descrito"
msgid "InfoRequestEvent|Event type"
-msgstr ""
+msgstr "InfoRequestEvent | Tipo de Evento"
msgid "InfoRequestEvent|Last described at"
-msgstr ""
+msgstr "InfoRequestEvent | Última descrição em"
msgid "InfoRequestEvent|Params yaml"
-msgstr ""
+msgstr "InfoRequestEvent | Params yaml"
msgid "InfoRequest|Allow new responses from"
-msgstr ""
+msgstr "InfoRequest | Permitir novas respostas de"
msgid "InfoRequest|Attention requested"
-msgstr ""
+msgstr "InfoRequest|Attention requested"
msgid "InfoRequest|Awaiting description"
-msgstr ""
+msgstr "InfoRequest | Aguardando descrição"
msgid "InfoRequest|Comments allowed"
msgstr ""
msgid "InfoRequest|Described state"
-msgstr ""
+msgstr "InfoRequest | estado descrito"
msgid "InfoRequest|External url"
msgstr ""
@@ -1245,76 +1287,76 @@ msgid "InfoRequest|External user name"
msgstr ""
msgid "InfoRequest|Handle rejected responses"
-msgstr ""
+msgstr "InfoRequest | Administrar respostas rejeitadas"
msgid "InfoRequest|Idhash"
-msgstr ""
+msgstr "InfoRequest|Idhash"
msgid "InfoRequest|Law used"
-msgstr ""
+msgstr "InfoRequest | Lei utilizada"
msgid "InfoRequest|Prominence"
-msgstr ""
+msgstr "InfoRequest | Destaque"
msgid "InfoRequest|Title"
-msgstr ""
+msgstr "InfoRequest | Título"
msgid "InfoRequest|Url title"
-msgstr ""
+msgstr "InfoRequest | Url"
msgid "Information not held."
-msgstr ""
+msgstr "Não possui as informações."
msgid "Information on emissions and discharges (e.g. noise, energy,\\n radiation, waste materials)"
-msgstr ""
+msgstr "Informações sobre emissões e descargas (ex. ruído, energia, radiação, rejeitos)"
msgid "Internal review request"
-msgstr ""
+msgstr "Pedido de revisão"
msgid "Internal review request sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
msgstr ""
msgid "Is {{email_address}} the wrong address for {{type_of_request}} requests to {{public_body_name}}? If so, please contact us using this form:"
-msgstr ""
+msgstr "Caso este email - {{email_address}} - seja o endereço errado para fazer {{type_of_request}} por favor nos contate e aponte o endereço correto através desse formulário:"
msgid "It may be that your browser is not set to accept a thing called \"cookies\",\\nor cannot do so. If you can, please enable cookies, or try using a different\\nbrowser. Then press refresh to have another go."
-msgstr ""
+msgstr "Pode ser que seu navegador não possa aceitar ou não esteja configurado para aceitar \"cookies\". Se você puder, por favor, habilite os cookies, ou tente usar um navegador de internet diferente. Em seguida, atualize a página para tentar novamente."
msgid "Items matching the following conditions are currently displayed on your wall."
-msgstr ""
+msgstr "Itens correspondentes aos seguintes critérios estão sendo mostradas na sua página."
msgid "Items sent in last month"
msgstr ""
msgid "Joined in"
-msgstr ""
+msgstr "No site desde "
msgid "Joined {{site_name}} in"
-msgstr ""
+msgstr "Entrou no {{site_name}} em"
msgid "Just one more thing"
msgstr ""
msgid "Keep it <strong>focused</strong>, you'll be more likely to get what you want (<a href=\"{{url}}\">why?</a>)."
-msgstr ""
+msgstr "Mantenha seu pedido <strong>focado,</strong> você terá mais chances de conseguir o que quer ( <a href=\"{{url}}\">por quê?</a> )."
msgid "Keywords"
-msgstr ""
+msgstr "Palavras-chave"
msgid "Last authority viewed: "
-msgstr ""
+msgstr "Último órgão público visualizado:"
msgid "Last request viewed: "
-msgstr ""
+msgstr "Último pedido visualizado:"
msgid "Let us know what you were doing when this message\\nappeared and your browser and operating system type and version."
-msgstr ""
+msgstr "Conte para nós o que você estava fazendo quando apareceu esta mensagem e nos informe qual é o seu navegador e seu sistema operacional, inclusive a versão. "
msgid "Link to this"
-msgstr ""
+msgstr "Link para cá"
msgid "List of all authorities (CSV)"
-msgstr ""
+msgstr "Lista de todos os órgãos públicos (formato CSV)"
msgid "Listing FOI requests"
msgstr ""
@@ -1332,22 +1374,22 @@ msgid "Listing users"
msgstr ""
msgid "Log in to download a zip file of {{info_request_title}}"
-msgstr ""
+msgstr "Faça o login para baixar o arquivo compactado de {{info_request_title}}"
msgid "Log into the admin interface"
-msgstr ""
+msgstr "Entre na interface administrativa"
msgid "Long overdue."
-msgstr ""
+msgstr "Muito atrasado."
msgid "Made between"
-msgstr ""
+msgstr "Feitos entre"
msgid "Mail server log"
-msgstr ""
+msgstr "Registro de servidor de email"
msgid "Mail server log done"
-msgstr ""
+msgstr "Registro de servidor de email concluído"
msgid "MailServerLogDone|Filename"
msgstr ""
@@ -1372,9 +1414,12 @@ msgstr ""
msgid "Make a new<br/>\\n <strong>Freedom <span>of</span><br/>\\n Information<br/>\\n request</strong>"
msgstr ""
+"Faça um novo<br/>\n"
+" Pedido de<br/>\n"
+" <strong>Informação</strong>"
msgid "Make a request"
-msgstr ""
+msgstr "Criar uma solicitação"
msgid "Make a request to these authorities"
msgstr ""
@@ -1386,16 +1431,16 @@ msgid "Make an {{law_used_short}} request"
msgstr ""
msgid "Make an {{law_used_short}} request to '{{public_body_name}}'"
-msgstr ""
+msgstr "Faça um pedido de informação pela {{law_used_short}} para '{{public_body_name}}'"
msgid "Make and browse Freedom of Information (FOI) requests"
-msgstr ""
+msgstr "Faça e busque pedidos de acesso à informação"
msgid "Make your own request"
-msgstr ""
+msgstr "Faça seu próprio pedido"
msgid "Many requests"
-msgstr ""
+msgstr "Vários pedidos"
msgid "Message"
msgstr "Mensagem"
@@ -1404,103 +1449,103 @@ msgid "Message has been removed"
msgstr ""
msgid "Message sent using {{site_name}} contact form, "
-msgstr ""
+msgstr "Mensagem enviada por meio do formulário de contato do {{site_name}},"
msgid "Missing contact details for '"
-msgstr ""
+msgstr "Faltam dados de contato para '"
msgid "More about this authority"
-msgstr ""
+msgstr "Mais informações sobre este órgão público"
msgid "More requests..."
-msgstr "Mais pedidos…"
+msgstr "Mais pedidos..."
msgid "More similar requests"
-msgstr ""
+msgstr "Outros pedidos semelhantes"
msgid "More successful requests..."
-msgstr ""
+msgstr "Mais pedidos bem-sucedidos..."
msgid "My profile"
-msgstr ""
+msgstr "Meu perfil"
msgid "My request has been <strong>refused</strong>"
-msgstr ""
+msgstr "Meu pedido foi <strong>recusado</strong>"
msgid "My requests"
-msgstr ""
+msgstr "Meus pedidos de informação"
msgid "My wall"
-msgstr ""
+msgstr "Meu mural"
msgid "Name can't be blank"
-msgstr ""
+msgstr "Nome não pode estar em branco"
msgid "Name is already taken"
-msgstr ""
+msgstr "Nome já foi utilizado"
msgid "New Freedom of Information requests"
-msgstr ""
+msgstr "Novos pedidos de informação"
msgid "New censor rule"
msgstr ""
msgid "New e-mail:"
-msgstr ""
+msgstr "Novo e-mail:"
msgid "New email doesn't look like a valid address"
-msgstr ""
+msgstr "O novo e-mail não parece um endereço válido"
msgid "New password:"
-msgstr ""
+msgstr "Nova senha:"
msgid "New password: (again)"
-msgstr ""
+msgstr "Nova senha: (de novo)"
msgid "New response to '{{title}}'"
-msgstr ""
+msgstr "Nova resposta para '{{title}}'"
msgid "New response to your FOI request - "
-msgstr ""
+msgstr "Nova resposta para seu pedido de acesso à informação -"
msgid "New response to your request"
-msgstr ""
+msgstr "Nova resposta para o seu pedido"
msgid "New response to {{law_used_short}} request"
-msgstr ""
+msgstr "Nova resposta a um pedido de informação via {{law_used_short}}"
msgid "New updates for the request '{{request_title}}'"
-msgstr ""
+msgstr "Novas atualizações para a solicitação '{{request_title}}'"
msgid "Newest results first"
-msgstr ""
+msgstr "Resultados mais novos primeiro"
msgid "Next"
-msgstr ""
+msgstr "Próximo"
msgid "Next, crop your photo &gt;&gt;"
-msgstr ""
+msgstr "Agora, corte a sua foto &gt;&gt;"
msgid "No requests of this sort yet."
-msgstr ""
+msgstr "Nenhum pedido desse tipo foi feito."
msgid "No results found."
-msgstr ""
+msgstr "Nenhum resultado encontrado."
msgid "No similar requests found."
-msgstr ""
+msgstr "Nenhum pedido semelhante encontrado."
msgid "No tracked things found."
msgstr ""
msgid "Nobody has made any Freedom of Information requests to {{public_body_name}} using this site yet."
-msgstr ""
+msgstr "Ninguém realizou nenhum pedido de acesso a informação para {{public_body_name}} através deste site."
msgid "None found."
-msgstr ""
+msgstr "Nenhum encontrado."
msgid "None made."
-msgstr ""
+msgstr "Nenhum."
msgid "Not a valid FOI request"
msgstr ""
@@ -1509,94 +1554,94 @@ msgid "Not a valid request"
msgstr ""
msgid "Note that the requester will not be notified about your annotation, because the request was published by {{public_body_name}} on their behalf."
-msgstr ""
+msgstr "Repare que o requerente não sera notificado sobre suas anotações porque a requisição foi publicada por {{public_body_name}} em outro nome."
msgid "Notes:"
msgstr ""
msgid "Now check your email!"
-msgstr ""
+msgstr "Agora, cheque seu email!"
msgid "Now preview your annotation"
-msgstr ""
+msgstr "Visualize o seu comentário"
msgid "Now preview your follow up"
-msgstr ""
+msgstr "Agora, visualize seu acompanhamento"
msgid "Now preview your message asking for an internal review"
-msgstr ""
+msgstr "Agora, visualize sua mensagem pedindo por uma revisão interna"
msgid "Number of requests"
msgstr ""
msgid "OR remove the existing photo"
-msgstr ""
+msgstr "OU remova a foto atual"
msgid "Offensive? Unsuitable?"
-msgstr ""
+msgstr "Ofensivo? Inapropriado?"
msgid "Oh no! Sorry to hear that your request was refused. Here is what to do now."
-msgstr ""
+msgstr "Ah, não! Lamentamos saber que seu pedido foi recusado. Aqui você encontra o que fazer agora."
msgid "Old e-mail:"
-msgstr ""
+msgstr "E-mail antigo:"
msgid "Old email address isn't the same as the address of the account you are logged in with"
-msgstr ""
+msgstr "O endereço de e-mail antigo não é o mesmo do endereço da conta pela qual você está logado"
msgid "Old email doesn't look like a valid address"
-msgstr ""
+msgstr "O email antigo não parece ser um endereço válido"
msgid "On this page"
-msgstr ""
+msgstr "Nesta página"
msgid "One FOI request found"
-msgstr ""
+msgstr "Encontramos um pedido"
msgid "One person found"
-msgstr ""
+msgstr "Encontramos uma pessoa"
msgid "One public authority found"
-msgstr ""
+msgstr "Encontramos um órgão de governo"
msgid "Only put in abbreviations which are really used, otherwise leave blank. Short or long name is used in the URL – don't worry about breaking URLs through renaming, as the history is used to redirect"
msgstr ""
msgid "Only requests made using {{site_name}} are shown."
-msgstr ""
+msgstr "Apenas os pedidos feitos por meio do {{site_name}} são mostrados aqui."
msgid "Only the authority can reply to this request, and I don't recognise the address this reply was sent from"
-msgstr ""
+msgstr "Apenas a autoridade pública pode responder a esse pedido, e eu não reconheço o endereço do qual essa resposta foi enviada"
msgid "Only the authority can reply to this request, but there is no \"From\" address to check against"
-msgstr ""
+msgstr "Apenas a autoridade pública pode responder a esse pedido, mas não há endereço na área \"De\" para confirmação"
msgid "Or make a <a href=\"{{url}}\">batch request</a> to <strong>multiple authorities</strong> at once."
msgstr ""
msgid "Or search in their website for this information."
-msgstr ""
+msgstr "Ou faça uma busca no site do órgão para obter essa informação."
msgid "Original request sent"
-msgstr ""
+msgstr "Pedido original enviado"
msgid "Other"
msgstr ""
msgid "Other:"
-msgstr ""
+msgstr "Outro:"
msgid "Outgoing message"
-msgstr ""
+msgstr "Caixa de saída"
msgid "OutgoingMessage|Body"
-msgstr ""
+msgstr "OutgoingMessage | Corpo"
msgid "OutgoingMessage|Last sent at"
-msgstr ""
+msgstr "OutgoingMessage | Última enviada em"
msgid "OutgoingMessage|Message type"
-msgstr ""
+msgstr "OutgoingMessage | Tipo de mensagem"
msgid "OutgoingMessage|Prominence"
msgstr ""
@@ -1605,31 +1650,31 @@ msgid "OutgoingMessage|Prominence reason"
msgstr ""
msgid "OutgoingMessage|Status"
-msgstr ""
+msgstr "OutgoingMessage | Situação"
msgid "OutgoingMessage|What doing"
-msgstr ""
+msgstr "OutgoingMessage | O que fazer"
msgid "Partially successful."
-msgstr ""
+msgstr "Concluída parcialmente."
msgid "Password is not correct"
-msgstr ""
+msgstr "senha incorreta"
msgid "Password:"
-msgstr ""
+msgstr "Senha:"
msgid "Password: (again)"
-msgstr ""
+msgstr "Senha: (de novo)"
msgid "Paste this link into emails, tweets, and anywhere else:"
-msgstr ""
+msgstr "Utilize este link para divulgar seu pedido por meio de e-mails, tweets etc:"
msgid "People"
-msgstr ""
+msgstr "Pessoas"
msgid "People {{start_count}} to {{end_count}} of {{total_count}}"
-msgstr ""
+msgstr "Pessoas {{start_count}} para {{end_count}} de {{total_count}}"
msgid "Percentage of requests that are overdue"
msgstr ""
@@ -1638,16 +1683,16 @@ msgid "Percentage of total requests"
msgstr ""
msgid "Photo of you:"
-msgstr ""
+msgstr "Sua foto:"
msgid "Plans and administrative measures that affect these matters"
-msgstr ""
+msgstr "Planos e medidas administrativas podem afetar esses assuntos"
msgid "Play the request categorisation game"
-msgstr ""
+msgstr "Play the request categorisation game"
msgid "Play the request categorisation game!"
-msgstr ""
+msgstr "Adicione categorias ao seu pedido!"
msgid "Please"
msgstr "Por favor"
@@ -1656,199 +1701,199 @@ msgid "Please <a href=\"{{url}}\">contact us</a> if you have any questions."
msgstr ""
msgid "Please <a href=\"{{url}}\">get in touch</a> with us so we can fix it."
-msgstr ""
+msgstr "Por favor <a href=\"{{url}}\">entre em contato</a> conosco para consertarmos isso."
msgid "Please <strong>answer the question above</strong> so we know whether the "
-msgstr ""
+msgstr "Por favor, <strong>responda a pergunta acima</strong> para sabermos se o"
msgid "Please <strong>go to the following requests</strong>, and let us\\n know if there was information in the recent responses to them."
-msgstr ""
+msgstr "Por favor, <strong>acesse os seguintes pedidos,</strong> e nos avise se há informações nas respostas enviadas para eles recentemente."
msgid "Please <strong>only</strong> write messages directly relating to your request {{request_link}}. If you would like to ask for information that was not in your original request, then <a href=\"{{new_request_link}}\">file a new request</a>."
-msgstr ""
+msgstr "Por favor envie <strong>apenas</strong> mensagens diretamente relacionadas ao seu pedido {{request_link}}. Se você quiser pedir informações que não estavam no seu pedido original, por favor envie um <a href=\"{{new_request_link}}\">novo pedido</a>."
msgid "Please ask for environmental information only"
-msgstr ""
+msgstr "Por favor, solicite apenas informação ambientais"
msgid "Please check the URL (i.e. the long code of letters and numbers) is copied\\ncorrectly from your email."
-msgstr ""
+msgstr "Por favor, cheque se a URL (ou seja, o longo endereço da página, com letras e números) foi copiado corretamente de seu e-mail."
msgid "Please choose a file containing your photo."
-msgstr ""
+msgstr "Selecione um arquivo com sua foto"
msgid "Please choose a reason"
msgstr "Por favor, escolha uma razão"
msgid "Please choose what sort of reply you are making."
-msgstr ""
+msgstr "Por favor, escolha que tipo de resposta você vai usar."
msgid "Please choose whether or not you got some of the information that you wanted."
-msgstr ""
+msgstr "Por favor, indique se você conseguiu ou não parte da informação que desejava"
msgid "Please click on the link below to cancel or alter these emails."
-msgstr ""
+msgstr "Por favor clique no link abaixo para cancelar ou alterar esses e-mails."
msgid "Please click on the link below to confirm that you want to \\nchange the email address that you use for {{site_name}}\\nfrom {{old_email}} to {{new_email}}"
-msgstr ""
+msgstr "Por favor, clique no link abaixo para confirmar a mudança do endereço de e-mail que você usa no {{site_name}} de {{old_email}} para {{new_email}}"
msgid "Please click on the link below to confirm your email address."
-msgstr ""
+msgstr "Clique no link a seguir para confirmar seu endereço de e-mail."
msgid "Please describe more what the request is about in the subject. There is no need to say it is an FOI request, we add that on anyway."
-msgstr ""
+msgstr "Por favor, descreva sobre o que é seu pedido de informação no Assunto. Não é necessário explicar que se trata de um Pedido de Acesso à Informação, porque nós já vamos adicionar esta informação no seu pedido. "
msgid "Please don't upload offensive pictures. We will take down images\\n that we consider inappropriate."
-msgstr ""
+msgstr "Por favor, não publicar imagens ofensivas. Vamos retirar do site imagens que consideramos inadequadas."
msgid "Please enable \"cookies\" to carry on"
-msgstr ""
+msgstr "Você precisa habilitar \"cookies\" no seu navegador para continuar"
msgid "Please enter a password"
-msgstr ""
+msgstr "Informe sua senha"
msgid "Please enter a subject"
-msgstr ""
+msgstr "Informe um assunto"
msgid "Please enter a summary of your request"
-msgstr ""
+msgstr "Preencha um resumo do seu pedido"
msgid "Please enter a valid email address"
-msgstr ""
+msgstr "Informe um e-mail válido"
msgid "Please enter the message you want to send"
-msgstr ""
+msgstr "Digite a mensagem que deseja enviar"
msgid "Please enter the name of the authority"
msgstr ""
msgid "Please enter the same password twice"
-msgstr ""
+msgstr "Informe sua senha novamente"
msgid "Please enter your annotation"
-msgstr ""
+msgstr "Digite seu comentário"
msgid "Please enter your email address"
-msgstr ""
+msgstr "Informe seu e-mail"
msgid "Please enter your follow up message"
-msgstr ""
+msgstr "Informe sua mensagem de acompanhamento"
msgid "Please enter your letter requesting information"
-msgstr ""
+msgstr "Preencha sua carta solicitando a informação"
msgid "Please enter your name"
-msgstr "Introduza o seu nome"
+msgstr "Informe seu nome"
msgid "Please enter your name, not your email address, in the name field."
-msgstr ""
+msgstr "Você informou seu e-mail no campo nome. Corrija, por favor."
msgid "Please enter your new email address"
-msgstr "Introduza o seu novo e-mail"
+msgstr "Informe seu novo e-mail"
msgid "Please enter your old email address"
-msgstr "Introduza o seu antigo e-mail"
+msgstr "Informe seu e-mail antigo"
msgid "Please enter your password"
-msgstr "Introduza a sua palavra-chave"
+msgstr "Informe sua senha"
msgid "Please give details explaining why you want a review"
-msgstr ""
+msgstr "Informe detalhes explicando porque você quer uma revisão"
msgid "Please keep it shorter than 500 characters"
-msgstr ""
+msgstr "O texto deve conter menos de 500 caracteres."
msgid "Please keep the summary short, like in the subject of an email. You can use a phrase, rather than a full sentence."
-msgstr ""
+msgstr "Simplifique seu resumo, por favor. Utilize, por exemplo, uma única frase em vez de um parágrafo completo."
msgid "Please only request information that comes under those categories, <strong>do not waste your\\n time</strong> or the time of the public authority by requesting unrelated information."
-msgstr ""
+msgstr "Por favor, solicitar somente informações referentes às categorias do site, <strong>não perca seu tempo</strong> ou o tempo da autoridade pública, solicitando informações não relacionadas."
msgid "Please pass this on to the person who conducts Freedom of Information reviews."
msgstr ""
msgid "Please select each of these requests in turn, and <strong>let everyone know</strong>\\nif they are successful yet or not."
-msgstr ""
+msgstr "Por favor, selecione uma solicitação por vez e <strong>deixe todo mundo saber</strong> se elas já são bem sucedidas ou não."
msgid "Please sign at the bottom with your name, or alter the \"{{signoff}}\" signature"
-msgstr ""
+msgstr "Por favor, assine com seu nome ao fim da mensagem, ou altere a sua \"{{signoff}}\" assinatura"
msgid "Please sign in as "
-msgstr ""
+msgstr "Faça o login como "
msgid "Please sign in or make a new account."
-msgstr ""
+msgstr "Por favor entre ou crie uma nova conta."
msgid "Please tell us more:"
msgstr ""
msgid "Please type a message and/or choose a file containing your response."
-msgstr ""
+msgstr "Escreva por favor uma mensagem e/ou selecione um arquivo contendo sua resposta."
msgid "Please use this email address for all replies to this request:"
-msgstr ""
+msgstr "Por favor use esse endereço de email em todas as repostas para este pedido:"
msgid "Please write a summary with some text in it"
-msgstr ""
+msgstr "Você precisa escrever um resumo"
msgid "Please write the summary using a mixture of capital and lower case letters. This makes it easier for others to read."
-msgstr ""
+msgstr "Ao escrever um resumo, utilize letras maiúsculas no início da frase para facilitar a leitura. Evite textos em caixa-alta."
msgid "Please write your annotation using a mixture of capital and lower case letters. This makes it easier for others to read."
-msgstr ""
+msgstr "Ao escrever um comentário, utilize letras maiúsculas no início da frase para facilitar a leitura. Evite textos em caixa-alta."
msgid "Please write your follow up message containing the necessary clarifications below."
-msgstr ""
+msgstr "Por favor escreva sua mensagem contendo as explicações necessárias."
msgid "Please write your message using a mixture of capital and lower case letters. This makes it easier for others to read."
-msgstr ""
+msgstr "Ao escrever uma mensagem, utilize letras maiúsculas no início da frase para facilitar a leitura. Evite textos em caixa-alta."
msgid "Point to <strong>related information</strong>, campaigns or forums which may be useful."
-msgstr ""
+msgstr "Indique <strong>informações relacionadas,</strong> campanhas, ou fóruns que podem ser úteis."
msgid "Possibly related requests:"
-msgstr ""
+msgstr "Possíveis pedidos relacionados ao seu:"
msgid "Post annotation"
-msgstr ""
+msgstr "Enviar comentário"
msgid "Post redirect"
-msgstr ""
+msgstr "Redirecionamento de postagem"
msgid "PostRedirect|Circumstance"
-msgstr ""
+msgstr "PostRedirect | Circunstância"
msgid "PostRedirect|Email token"
-msgstr ""
+msgstr "PostRedirect | Enviar token"
msgid "PostRedirect|Post params yaml"
-msgstr ""
+msgstr "PostRedirect | Post params yaml"
msgid "PostRedirect|Reason params yaml"
-msgstr ""
+msgstr "PostRedirect | Reason params yaml"
msgid "PostRedirect|Token"
-msgstr ""
+msgstr "PostRedirect | token"
msgid "PostRedirect|Uri"
-msgstr ""
+msgstr "PostRedirect | Url"
msgid "Posted on {{date}} by {{author}}"
-msgstr ""
+msgstr "Publicado em {{date}} por {{author}}"
msgid "Powered by <a href=\"http://www.alaveteli.org/\">Alaveteli</a>"
-msgstr ""
+msgstr "Instalação do <a href=\"http://www.alaveteli.org/\">Alaveteli</a>"
msgid "Prefer not to receive emails?"
msgstr ""
msgid "Prev"
-msgstr ""
+msgstr "Anterior"
msgid "Preview follow up to '"
-msgstr ""
+msgstr "Visualizar acompanhamento \""
msgid "Preview new annotation on '{{info_request_title}}'"
-msgstr ""
+msgstr "Pré-visualizar nova anotação em '{{info_request_title}}'"
msgid "Preview new {{law_used_short}} request"
msgstr ""
@@ -1857,22 +1902,22 @@ msgid "Preview new {{law_used_short}} request to '{{public_body_name}}"
msgstr ""
msgid "Preview your annotation"
-msgstr ""
+msgstr "Visualize seu comentário"
msgid "Preview your message"
-msgstr ""
+msgstr "Visualize sua mensagem"
msgid "Preview your public request"
-msgstr ""
+msgstr "Visualize seu pedido de acesso à informação"
msgid "Profile photo"
-msgstr ""
+msgstr "Foto do perfil"
msgid "ProfilePhoto|Data"
-msgstr ""
+msgstr "ProfilePhoto | Dados"
msgid "ProfilePhoto|Draft"
-msgstr ""
+msgstr "ProfilePhoto | Rascunho"
msgid "Public Bodies"
msgstr ""
@@ -1881,13 +1926,13 @@ msgid "Public Body Statistics"
msgstr ""
msgid "Public authorities"
-msgstr ""
+msgstr "Órgãos públicos"
msgid "Public authorities - {{description}}"
-msgstr ""
+msgstr "Orgãos públicos - {{description}}"
msgid "Public authorities {{start_count}} to {{end_count}} of {{total_count}}"
-msgstr ""
+msgstr "Órgão público {{start_count}} para {{end_count}} de {{total_count}}"
msgid "Public authority – {{name}}"
msgstr ""
@@ -1908,7 +1953,7 @@ msgid "Public bodies with the most successful requests"
msgstr ""
msgid "Public body"
-msgstr ""
+msgstr "Órgão público"
msgid "Public body change request"
msgstr ""
@@ -1950,10 +1995,10 @@ msgid "PublicBody|Disclosure log"
msgstr ""
msgid "PublicBody|First letter"
-msgstr ""
+msgstr "PublicBody | Primeira letra"
msgid "PublicBody|Home page"
-msgstr ""
+msgstr "PublicBody | Home page"
msgid "PublicBody|Info requests count"
msgstr ""
@@ -1971,100 +2016,100 @@ msgid "PublicBody|Info requests visible classified count"
msgstr ""
msgid "PublicBody|Last edit comment"
-msgstr ""
+msgstr "PublicBody | Última edição"
msgid "PublicBody|Last edit editor"
-msgstr ""
+msgstr "PublicBody | Editor da última alteração"
msgid "PublicBody|Name"
-msgstr ""
+msgstr "PublicBody | Nome"
msgid "PublicBody|Notes"
-msgstr ""
+msgstr "PublicBody | Observações"
msgid "PublicBody|Publication scheme"
-msgstr ""
+msgstr "PublicBody | esquema de publicação"
msgid "PublicBody|Request email"
-msgstr ""
+msgstr "PublicBody | Pedir email"
msgid "PublicBody|Short name"
-msgstr ""
+msgstr "PublicBody | Nome curto"
msgid "PublicBody|Url name"
-msgstr ""
+msgstr "PublicBody | URL"
msgid "PublicBody|Version"
-msgstr ""
+msgstr "PublicBody | Versão"
msgid "Publication scheme"
-msgstr ""
+msgstr "Esquema de publicação"
msgid "Publication scheme URL"
msgstr ""
msgid "Purge request"
-msgstr ""
+msgstr "Remover pedido"
msgid "PurgeRequest|Model"
-msgstr ""
+msgstr "PurgeRequest|Modelo"
msgid "PurgeRequest|Url"
msgstr ""
msgid "RSS feed"
-msgstr ""
+msgstr "RSS feed"
msgid "RSS feed of updates"
-msgstr ""
+msgstr "Atualizações do RSS "
msgid "Re-edit this annotation"
-msgstr ""
+msgstr "Alterar este comentário"
msgid "Re-edit this message"
-msgstr ""
+msgstr "Alterar esta mensagem"
msgid "Read about <a href=\"{{advanced_search_url}}\">advanced search operators</a>, such as proximity and wildcards."
-msgstr ""
+msgstr "Saiba mais sobre <a href=\"{{advanced_search_url}}\">operadores de busca avançada</a>, como por aproximação e curingas."
msgid "Read blog"
-msgstr ""
+msgstr "Ler blog"
msgid "Received an error message, such as delivery failure."
-msgstr ""
+msgstr "Recebi uma mensagem de erro, como 'erro de envio'."
msgid "Recently described results first"
-msgstr ""
+msgstr "Resultados descritos recentemente primeiro"
msgid "Refused."
-msgstr ""
+msgstr "Recusado."
msgid "Remember me</label> (keeps you signed in longer;\\n do not use on a public computer) "
-msgstr ""
+msgstr "Lembre-se de mim (mantém o login, não usar em um computador público)"
msgid "Report abuse"
-msgstr ""
+msgstr "Denunciar abuso"
msgid "Report an offensive or unsuitable request"
-msgstr ""
+msgstr "Denunciar um pedido ofensivo ou impróprio"
msgid "Report request"
msgstr ""
msgid "Report this request"
-msgstr ""
+msgstr "Denunciar este pedido"
msgid "Reported for administrator attention."
-msgstr ""
+msgstr "Denunciado aos administradores."
msgid "Reporting a request notifies the site administrators. They will respond as soon as possible."
msgstr ""
msgid "Request an internal review"
-msgstr ""
+msgstr "Apresentar recurso"
msgid "Request an internal review from {{person_or_body}}"
-msgstr ""
+msgstr "Enviar um recurso para {{person_or_body}}"
msgid "Request email"
msgstr ""
@@ -2073,19 +2118,19 @@ msgid "Request for personal information"
msgstr ""
msgid "Request has been removed"
-msgstr ""
+msgstr "Pedido removido com sucesso"
msgid "Request sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
+msgstr "Solicitação enviada para {{public_body_name}} por {{info_request_user}} em {{date}}."
msgid "Request to {{public_body_name}} by {{info_request_user}}. Annotated by {{event_comment_user}} on {{date}}."
-msgstr ""
+msgstr "Pedido a {{public_body_name}} por {{info_request_user}}. Comentado por {{event_comment_user}} em {{date}}."
msgid "Requested from {{public_body_name}} by {{info_request_user}} on {{date}}"
-msgstr ""
+msgstr "Solicitadas {{public_body_name}} por {{info_request_user}} em {{data}}"
msgid "Requested on {{date}}"
-msgstr ""
+msgstr "Solicitado em {{date}}"
msgid "Requests are considered overdue if they are in the 'Overdue' or 'Very Overdue' states."
msgstr ""
@@ -2094,10 +2139,10 @@ msgid "Requests are considered successful if they were classified as either 'Suc
msgstr ""
msgid "Requests for personal information and vexatious requests are not considered valid for FOI purposes (<a href=\"/help/about\">read more</a>)."
-msgstr ""
+msgstr "Pedidos de informação pessoal ou constrangedora não são considerados válidos para os propósitos da Lei de Acesso à Informação (<a href=\"/help/about\">saiba mais</a>)."
msgid "Requests or responses matching your saved search"
-msgstr ""
+msgstr "Pedidos ou respostas que correspondem a sua pesquisa"
msgid "Requests similar to '{{request_title}}'"
msgstr ""
@@ -2109,123 +2154,123 @@ msgid "Requests will be sent to the following bodies:"
msgstr ""
msgid "Respond by email"
-msgstr ""
+msgstr "Resposta por e-mail"
msgid "Respond to request"
-msgstr ""
+msgstr "Responder a este pedido"
msgid "Respond to the FOI request"
-msgstr ""
+msgstr "Responder ao pedido de acesso à informação"
msgid "Respond using the web"
-msgstr ""
+msgstr "Responder através do site"
msgid "Response"
-msgstr ""
+msgstr "Resposta"
msgid "Response by {{public_body_name}} to {{info_request_user}} on {{date}}."
msgstr ""
msgid "Response from a public authority"
-msgstr ""
+msgstr "Resposta de uma autoridade pública"
msgid "Response to '{{title}}'"
-msgstr ""
+msgstr "Resposta para '{{title}}'"
msgid "Response to this request is <strong>delayed</strong>."
-msgstr ""
+msgstr "A resposta a este pedido está <strong>atrasada</strong>."
msgid "Response to this request is <strong>long overdue</strong>."
-msgstr ""
+msgstr "A resposta deste pedido está <strong>muito atrasada</strong>."
msgid "Response to your request"
-msgstr ""
+msgstr "Resposta para seu pedido"
msgid "Response:"
-msgstr ""
+msgstr "Resposta:"
msgid "Restrict to"
-msgstr ""
+msgstr "Restringir a"
msgid "Results page {{page_number}}"
-msgstr ""
+msgstr "Página de resultados {{page_number}}"
msgid "Save"
-msgstr "Guardar"
+msgstr "Salvar"
msgid "Search"
-msgstr ""
+msgstr "Buscar"
msgid "Search Freedom of Information requests, public authorities and users"
-msgstr ""
+msgstr "Procurar pedidos de acesso à informação, órgãos públicos e usuários"
msgid "Search contributions by this person"
-msgstr ""
+msgstr "Busque contribuições feitas por esta pessoa"
msgid "Search for the authorities you'd like information from:"
msgstr ""
msgid "Search for words in:"
-msgstr ""
+msgstr "Busca por palavras em:"
msgid "Search in"
-msgstr ""
+msgstr "Procurar em"
msgid "Search over<br/>\\n <strong>{{number_of_requests}} requests</strong> <span>and</span><br/>\\n <strong>{{number_of_authorities}} authorities</strong>"
-msgstr ""
+msgstr "Pesquisar <br/> <strong>{{number_of_requests}} pedidos</strong> <span>e</span> <br/> <strong>{{number_of_authorities}} órgãos públicos </strong>"
msgid "Search queries"
msgstr ""
msgid "Search results"
-msgstr ""
+msgstr "Resultados da busca"
msgid "Search the site to find what you were looking for."
-msgstr ""
+msgstr "Pesquise no site para encontrar o que você está procurando."
msgid "Search within the {{count}} Freedom of Information requests to {{public_body_name}}"
msgid_plural "Search within the {{count}} Freedom of Information requests made to {{public_body_name}}"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Pesquisar {{count}} Pedidos de Acesso à Informação para {{public_body_name}}"
+msgstr[1] "Pesquisar {{count}} Pedidos de Acesso à Informação feitos a {{public_body_name}}"
msgid "Search your contributions"
-msgstr ""
+msgstr "Buscar suas contribuições"
msgid "See bounce message"
msgstr ""
msgid "Select one to see more information about the authority."
-msgstr ""
+msgstr "Selecionar para ver mais informações sobre este órgão público."
msgid "Select the authorities to write to"
msgstr ""
msgid "Select the authority to write to"
-msgstr ""
+msgstr "Selecione o órgão ao qual você quer escrever"
msgid "Send a followup"
-msgstr ""
+msgstr "Enviar um mensagem de acompanhamento"
msgid "Send a message to "
-msgstr ""
+msgstr "Enviar uma mensagem para "
msgid "Send a public follow up message to {{person_or_body}}"
-msgstr ""
+msgstr "Enviar uma mensagem de acompanhamento de seu pedido para {{person_or_body}}"
msgid "Send a public reply to {{person_or_body}}"
-msgstr ""
+msgstr "Enviar uma resposta pública para {{person_or_body}}"
msgid "Send follow up to '{{title}}'"
-msgstr ""
+msgstr "Envie comentários para '{{title}}'"
msgid "Send message"
-msgstr ""
+msgstr "Enviar mensagem"
msgid "Send message to "
-msgstr ""
+msgstr "Enviar mensagem para "
msgid "Send request"
-msgstr ""
+msgstr "Enviar pedido"
msgid "Sent to one authority by {{info_request_user}} on {{date}}."
msgid_plural "Sent to {{authority_count}} authorities by {{info_request_user}} on {{date}}."
@@ -2233,76 +2278,76 @@ msgstr[0] ""
msgstr[1] ""
msgid "Set your profile photo"
-msgstr ""
+msgstr "Definir sua foto do perfil"
msgid "Short name"
msgstr ""
msgid "Short name is already taken"
-msgstr ""
+msgstr "Nome de usuário já cadastrado"
msgid "Show most relevant results first"
-msgstr ""
+msgstr "Mostrar resultados relevantes primeiro"
msgid "Show only..."
-msgstr ""
+msgstr "Exibir apenas..."
msgid "Showing"
-msgstr ""
+msgstr "Exibindo"
msgid "Sign in"
-msgstr ""
+msgstr "Entrar"
msgid "Sign in as the emergency user"
msgstr ""
msgid "Sign in or make a new account"
-msgstr ""
+msgstr "Entrar ou criar uma nova conta"
msgid "Sign in or sign up"
-msgstr ""
+msgstr "Entrar ou se cadastrar"
msgid "Sign out"
-msgstr ""
+msgstr "Sair"
msgid "Sign up"
-msgstr ""
+msgstr "Cadastrar"
msgid "Similar requests"
-msgstr ""
+msgstr "Pedidos similares"
msgid "Simple search"
-msgstr "Pesquisa simples"
+msgstr "Busca simples"
msgid "Some notes have been added to your FOI request - "
-msgstr ""
+msgstr "Algumas notas foram adicionadas ao seu pedido de acesso à informação"
msgid "Some of the information requested has been received"
-msgstr ""
+msgstr "Parte da informação solicitada foi recebida."
msgid "Some people who've made requests haven't let us know whether they were\\nsuccessful or not. We need <strong>your</strong> help &ndash;\\nchoose one of these requests, read it, and let everyone know whether or not the\\ninformation has been provided. Everyone'll be exceedingly grateful."
-msgstr ""
+msgstr "Algumas pessoas que fizeram pedidos não comunicaram se eles foram bem sucedidos ou não. Precisamos da <strong>sua</strong> ajuda - escolha um destes pedidos, leia e deixe que todos saibam se a informação foi fornecida ou não. Seremos extremamente gratos."
msgid "Somebody added a note to your FOI request - "
-msgstr ""
+msgstr "Alguém adicionou uma nota ao seu pedido de acesso à informação -"
msgid "Someone has updated the status of your request"
-msgstr ""
+msgstr "Alguém atualizou o estado do seu pedido"
msgid "Someone, perhaps you, just tried to change their email address on\\n{{site_name}} from {{old_email}} to {{new_email}}."
-msgstr ""
+msgstr "Alguém, talvez você, acabou de tentar mudar o endereço de e-mail no {{site_name}} de {{old_email}} para {{new_email}}."
msgid "Sorry - you cannot respond to this request via {{site_name}}, because this is a copy of the request originally at {{link_to_original_request}}."
-msgstr ""
+msgstr "Desculpe - você não pode responder este pedido através do {{site_name}} pois esta é uma cópia do pedido original em {{link_to_original_request}}."
msgid "Sorry, but only {{user_name}} is allowed to do that."
-msgstr ""
+msgstr "Desculpe, mas apenas {{user_name}} está habilitado para fazer isso."
msgid "Sorry, there was a problem processing this page"
-msgstr ""
+msgstr "Desculpe, houve um problema de processamento desta página"
msgid "Sorry, we couldn't find that page"
-msgstr ""
+msgstr "Desculpe, não foi possível encontrar essa página"
msgid "Source URL:"
msgstr ""
@@ -2317,19 +2362,19 @@ msgid "SpamAddress|Email"
msgstr ""
msgid "Special note for this authority!"
-msgstr ""
+msgstr "Recado especial para esta autoridade!"
msgid "Start now &raquo;"
-msgstr ""
+msgstr "Começar agora &raquo;"
msgid "Start your own blog"
-msgstr ""
+msgstr "Fazer seu próprio blog"
msgid "Stay up to date"
-msgstr ""
+msgstr "Mantenha-se atualizado"
msgid "Still awaiting an <strong>internal review</strong>"
-msgstr ""
+msgstr "Ainda aguardando o <strong>pedido de revisão</strong>"
msgid "Subject"
msgstr "Assunto"
@@ -2338,73 +2383,73 @@ msgid "Subject:"
msgstr "Assunto:"
msgid "Submit"
-msgstr ""
+msgstr "Enviar"
msgid "Submit request"
msgstr ""
msgid "Submit status"
-msgstr ""
+msgstr "Enviar situação"
msgid "Submit status and send message"
msgstr ""
msgid "Subscribe to blog"
-msgstr ""
+msgstr "Assine o blog"
msgid "Successful Freedom of Information requests"
-msgstr ""
+msgstr "Solicitações de acesso a informação concluídas"
msgid "Successful."
-msgstr ""
+msgstr "Concluída."
msgid "Suggest how the requester can find the <strong>rest of the information</strong>."
-msgstr ""
+msgstr "Sugerir como o solicitante pode encontrar o <strong>resto das informações.</strong>"
msgid "Summary:"
-msgstr ""
+msgstr "Resumo:"
msgid "Table of statuses"
-msgstr ""
+msgstr "Tabela de situações"
msgid "Table of varieties"
-msgstr ""
+msgstr "Tabela de variedades"
msgid "Tags"
msgstr ""
msgid "Tags (separated by a space):"
-msgstr ""
+msgstr "Tags (separadas por um espaço):"
msgid "Tags:"
-msgstr ""
+msgstr "Tags:"
msgid "Technical details"
-msgstr ""
+msgstr "Detalhes técnicos"
msgid "Thank you for helping us keep the site tidy!"
-msgstr ""
+msgstr "Obrigado por nos ajudar a manter o site organizado!"
msgid "Thank you for making an annotation!"
-msgstr ""
+msgstr "Obrigado por enviar seu comentário!"
msgid "Thank you for responding to this FOI request! Your response has been published below, and a link to your response has been emailed to "
-msgstr ""
+msgstr "Obrigado por responder a esse pedido de informação! Sua resposta foi publicada abaixo e um link para a resposta foi enviado por e-mail para "
msgid "Thank you for updating the status of the request '<a href=\"{{url}}\">{{info_request_title}}</a>'. There are some more requests below for you to classify."
-msgstr ""
+msgstr "Obrigado por atualizar a situação do pedido '<a href=\"{{url}}\">{{info_request_title}}</a>'. Abaixo existem outros pedidos para você classificar."
msgid "Thank you for updating this request!"
-msgstr ""
+msgstr "Obrigado por atualizar esta solicitação!"
msgid "Thank you for updating your profile photo"
-msgstr ""
+msgstr "Obrigado por atualizar sua foto do perfil"
msgid "Thank you! We'll look into what happened and try and fix it up."
msgstr ""
msgid "Thanks for helping - your work will make it easier for everyone to find successful\\nresponses, and maybe even let us make league tables..."
-msgstr ""
+msgstr "Obrigado por ajudar, seu trabalho tornará mais fácil para todo mundo achar respostas com sucesso, e talvez até mesmo permitir que nos façamos tabelas classificativas..."
msgid "Thanks for your suggestion to add {{public_body_name}}. It's been added to the site here:"
msgstr ""
@@ -2413,40 +2458,42 @@ msgid "Thanks for your suggestion to update the email address for {{public_body_
msgstr ""
msgid "Thanks very much - this will help others find useful stuff. We'll\\n also, if you need it, give advice on what to do next about your\\n requests."
-msgstr ""
+msgstr "Muito obrigado - isto ajudará outros a achar coisas úteis. Se você precisar, nós também recomendaremos sobre o que fazer em seguida com suas requisições."
msgid "Thanks very much for helping keep everything <strong>neat and organised</strong>.\\n We'll also, if you need it, give you advice on what to do next about each of your\\n requests."
msgstr ""
+"Muito obrigado por manter tudo <strong>arrumado e organizado</strong>.\n"
+"Se você precisar, nós também recomendaremos o que fazer em seguida com cada uma de suas requisições."
msgid "That doesn't look like a valid email address. Please check you have typed it correctly."
-msgstr ""
+msgstr "Isso não parece ser um endereço de e-mail válido. Por favor, cheque se você digitou corretamente."
msgid "The <strong>review has finished</strong> and overall:"
-msgstr ""
+msgstr "A <strong>revisão terminou</strong> e em geral:"
msgid "The Freedom of Information Act <strong>does not apply</strong> to"
-msgstr ""
+msgstr "A lei de acesso à informação <strong>não se aplica</strong> a"
msgid "The URL where you found the email address. This field is optional, but it would help us a lot if you can provide a link to a specific page on the authority's website that gives this address, as it will make it much easier for us to check."
msgstr ""
msgid "The accounts have been left as they previously were."
-msgstr ""
+msgstr "As contas foram deixadas como estavam anteriormente."
msgid "The authority do <strong>not have</strong> the information <small>(maybe they say who does)"
-msgstr ""
+msgstr "A autoridade <strong>não possui</strong> a informação <small>(talvez tenham dito quem a tenha)"
msgid "The authority email doesn't look like a valid address"
msgstr ""
msgid "The authority only has a <strong>paper copy</strong> of the information."
-msgstr ""
+msgstr "Esse orgão tem apenas uma <strong>cópia impressa</strong> desta informação."
msgid "The authority say that they <strong>need a postal\\n address</strong>, not just an email, for it to be a valid FOI request"
-msgstr ""
+msgstr "A autoridade diz que eles <strong>precisam de um endereço postal</strong>, não apenas um email, para ser uma requisição válida de acordo com a lei de acesso à informação"
msgid "The authority would like to / has <strong>responded by post</strong> to this request."
-msgstr ""
+msgstr "A autoridade gostaria de responder/respondeu </strong>por correio</strong> esta requisição."
msgid "The classification of requests (e.g. to say whether they were successful or not) is done manually by users and administrators of the site, which means that they are subject to error."
msgstr ""
@@ -2455,225 +2502,229 @@ msgid "The contact email address for FOI requests to the authority."
msgstr ""
msgid "The email that you, on behalf of {{public_body}}, sent to\\n{{user}} to reply to an {{law_used_short}}\\nrequest has not been delivered."
-msgstr ""
+msgstr "O email que você, em nome de {{public_body}}, enviou para {{user}} para responder a um Pedido de Informação não foi entregue."
msgid "The error bars shown are 95% confidence intervals for the hypothesized underlying proportion (i.e. that which you would obtain by making an infinite number of requests through this site to that authority). In other words, the population being sampled is all the current and future requests to the authority through this site, rather than, say, all requests that have been made to the public body by any means."
msgstr ""
msgid "The page doesn't exist. Things you can try now:"
-msgstr ""
+msgstr "Esta página não existe. O que você pode tentar agora:"
msgid "The percentages are calculated with respect to the total number of requests, which includes invalid requests; this is a known problem that will be fixed in a later release."
msgstr ""
msgid "The public authority does not have the information requested"
-msgstr ""
+msgstr "A autoridade pública não tem a informação solicitada"
msgid "The public authority would like part of the request explained"
-msgstr ""
+msgstr "A autoridade pública gostaria de explicações sobre parte do pedido"
msgid "The public authority would like to / has responded by post"
-msgstr ""
+msgstr "A autoridade pública gostaria de responder ou respondeu por correio"
msgid "The request has been <strong>refused</strong>"
-msgstr ""
+msgstr "Esta solicitação foi <strong>recusada</strong>"
msgid "The request has been updated since you originally loaded this page. Please check for any new incoming messages below, and try again."
-msgstr ""
+msgstr "O pedido foi atualizado desde o carregamento original desta página. Por favor, cheque se há alguma mensagem nova abaixo e tente novamente."
msgid "The request is <strong>waiting for clarification</strong>."
-msgstr ""
+msgstr "Esse pedido esta <strong>aguardando explicações adicionais</strong>."
msgid "The request was <strong>partially successful</strong>."
-msgstr ""
+msgstr "Esse pedido foi <strong>parcialmente atendido</strong>."
msgid "The request was <strong>refused</strong> by"
-msgstr ""
+msgstr "Esse pedido foi <strong>recusado</strong> por"
msgid "The request was <strong>successful</strong>."
-msgstr ""
+msgstr "Esse pedido foi <strong>atendido</strong>."
msgid "The request was refused by the public authority"
-msgstr ""
+msgstr "O pedido foi recusado pela autoridade pública"
msgid "The request you have tried to view has been removed. There are\\nvarious reasons why we might have done this, sorry we can't be more specific here. Please <a\\n href=\"{{url}}\">contact us</a> if you have any questions."
msgstr ""
+"O pedido . Please <a\n"
+" href=\"{{url}}\">contact us</a> if you have any questions."
msgid "The requester has abandoned this request for some reason"
-msgstr ""
+msgstr "O solicitante abandonou esse pedido por alguma razão"
msgid "The response to your request has been <strong>delayed</strong>. You can say that,\\n by law, the authority should normally have responded\\n <strong>promptly</strong> and"
-msgstr ""
+msgstr "A resposta para esse pedido <strong>atrasou</strong>. Você pode afirmar que, por lei, o orgão deveria ter respondido e"
msgid "The response to your request is <strong>long overdue</strong>. You can say that, by\\n law, under all circumstances, the authority should have responded\\n by now"
-msgstr ""
+msgstr "A resposta para seu pedido está <strong>super atrasada</strong>. Voc~e pode afirmar que, por \\n lei, sob qualquer circunstância, o poder público já deveria\\n ter respondido"
msgid "The search index is currently offline, so we can't show the Freedom of Information requests that have been made to this authority."
-msgstr ""
+msgstr "O index de busca está temporariamente offline, então não podemos exibir o pedido de acesso à informação que foi feito para essa entidade."
msgid "The search index is currently offline, so we can't show the Freedom of Information requests this person has made."
-msgstr ""
+msgstr "A busca não esta funcionando, então nós não podemos mostrar os pedidos de acesso a informação que essa pessoa fez."
msgid "The {{site_name}} team."
msgstr ""
msgid "Then you can cancel the alert."
-msgstr ""
+msgstr "Então você pode cancelar o alerta."
msgid "Then you can cancel the alerts."
-msgstr ""
+msgstr "Então você pode cancelar os alertas."
msgid "Then you can change your email address used on {{site_name}}"
-msgstr ""
+msgstr "Então você pode alterar seu endereço de email utilizado no {{site_name}}"
msgid "Then you can change your password on {{site_name}}"
-msgstr ""
+msgstr "Então você pode alterar sua senha no {{site_name}}"
msgid "Then you can classify the FOI response you have got from "
-msgstr ""
+msgstr "Então você pode classificar a resposta do pedido de Acesso à Informação que você recebeu de"
msgid "Then you can download a zip file of {{info_request_title}}."
-msgstr ""
+msgstr "Você pode baixar um arquivo compactado de {{info_request_title}}"
msgid "Then you can log into the administrative interface"
-msgstr ""
+msgstr "Então você pode entrar na interface administrativa"
msgid "Then you can make a batch request"
msgstr ""
msgid "Then you can play the request categorisation game."
-msgstr ""
+msgstr "Então você pode jogar o jogo de categorização do pedido."
msgid "Then you can report the request '{{title}}'"
-msgstr ""
+msgstr "Então você pode relatar a requisição '{{title}}'"
msgid "Then you can send a message to "
-msgstr ""
+msgstr "Então você pode enviar uma mensagem para"
msgid "Then you can sign in to {{site_name}}"
-msgstr ""
+msgstr "Então você poderá autenticar-se no {{site_name}}"
msgid "Then you can update the status of your request to "
-msgstr ""
+msgstr "Então você pode atualizar a situação do seu pedido para"
msgid "Then you can upload an FOI response. "
-msgstr ""
+msgstr "Então você pode subir uma resposta ao pedido de Acesso à Informação."
msgid "Then you can write follow up message to "
-msgstr ""
+msgstr "Então você pode escrever uma mensagem de acompanhamento para"
msgid "Then you can write your reply to "
-msgstr ""
+msgstr "Então você pode escrever sua resposta para"
msgid "Then you will be following all new FOI requests."
-msgstr ""
+msgstr "Então você estará seguindo todos novos pedidos de acesso a informação."
msgid "Then you will be notified whenever '{{user_name}}' requests something or gets a response."
-msgstr ""
+msgstr "Então você será notificado quando '{{user_name}}' requisitar algo ou receber uma resposta."
msgid "Then you will be notified whenever a new request or response matches your search."
-msgstr ""
+msgstr "Então você será notificado sempre que um novo pedido de informação ou resposta corresponder a sua busca"
msgid "Then you will be notified whenever an FOI request succeeds."
-msgstr ""
+msgstr "Então você será notificado quando um pedido de acesso à informação tiver sucesso."
msgid "Then you will be notified whenever someone requests something or gets a response from '{{public_body_name}}'."
-msgstr ""
+msgstr "Então você será notificado quando alguém requisitar algo ou receber uma resposta de '{{public_body_name}}'"
msgid "Then you will be updated whenever the request '{{request_title}}' is updated."
-msgstr ""
+msgstr "Então você será notificado quando o pedido '{{request_title}}' for atualizado."
msgid "Then you'll be allowed to send FOI requests."
-msgstr ""
+msgstr "Então você poderá enviar pedidos de acesso à informação pública."
msgid "Then your FOI request to {{public_body_name}} will be sent."
-msgstr ""
+msgstr "Então seu pedido de acesso para {{public_body_name}} sera enviado."
msgid "Then your annotation to {{info_request_title}} will be posted."
-msgstr ""
+msgstr "Então seu comentário sobre {{info_request_title}} será publicado."
msgid "There are {{count}} new annotations on your {{info_request}} request. Follow this link to see what they wrote."
-msgstr ""
+msgstr "Existem {{count}} novas anotações no seu {{info_request}} pedido de informação. Clique no link para saber o que escrito sobre o seu pedido."
msgid "There is <strong>more than one person</strong> who uses this site and has this name.\\n One of them is shown below, you may mean a different one:"
-msgstr ""
+msgstr "Há <strong>mais de uma pessoa</strong> que utiliza este site e possui este nome.\\n Um deles é exibido abaixo, você deve definir um diferente:"
msgid "There is a limit on the number of requests you can make in a day, because we don’t want public authorities to be bombarded with large numbers of inappropriate requests. If you feel you have a good reason to ask for the limit to be lifted in your case, please <a href='{{help_contact_path}}'>get in touch</a>."
-msgstr ""
+msgstr "Há um limite de pedidos de informação que você pode fazer em um dia, porque não queremos que as autoridades públicas sejam bombardeadas por um número grande de pedidos inapropriados. Se você considera ter uma boa razão para seu limite ser ampliado, por favor <a href='{{help_contact_path}}'>nos contate</a>."
msgid "There is nothing to display yet."
msgstr ""
msgid "There is {{count}} person following this request"
msgid_plural "There are {{count}} people following this request"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Há {{count}} pessoa acompanhando este pedido"
+msgstr[1] "Há {{count}} pessoas acompanhando este pedido"
msgid "There was a <strong>delivery error</strong> or similar, which needs fixing by the {{site_name}} team."
-msgstr ""
+msgstr "Ocorreu um <strong>erro no envio</strong> ou algo parecido, que precisa ser consertado pela equipe do {{site_name}}."
msgid "There was an error with the words you entered, please try again."
-msgstr ""
+msgstr "Houve um erro nas palavras que você inseriu, por favor tente novamente."
msgid "There was no data calculated for this graph yet."
msgstr ""
msgid "There were no requests matching your query."
-msgstr ""
+msgstr "Não há pedidos correspondentes à sua consulta."
msgid "There were no results matching your query."
-msgstr ""
+msgstr "Não houve resultados para sua busca."
msgid "These graphs were partly inspired by <a href=\"http://mark.goodge.co.uk/2011/08/number-crunching-whatdotheyknow/\">some statistics that Mark Goodge produced for WhatDoTheyKnow</a>, so thanks are due to him."
msgstr ""
msgid "They are going to reply <strong>by post</strong>"
-msgstr ""
+msgstr "Eles vão responder através de um <strong>post</strong>"
msgid "They do <strong>not have</strong> the information <small>(maybe they say who does)</small>"
-msgstr ""
+msgstr "Eles não tem a informação (mas podem ter dito quem tem)"
msgid "They have been given the following explanation:"
-msgstr ""
+msgstr "Eles deram a seguinte explicação:"
msgid "They have not replied to your {{law_used_short}} request {{title}} promptly, as normally required by law"
msgstr ""
+"O prazo para a resposta a seu pedido de informação: {{title}} se encerra hoje.\n"
+"Pela lei, o órgão público tem até 20 dias para lhe enviar uma resposta. E pode pedir uma prorrogação deste prazo por mais 10 dias."
msgid "They have not replied to your {{law_used_short}} request {{title}}, \\nas required by law"
-msgstr ""
+msgstr "Não houver resposta para seu Pedido de Informação: {{title}}, \\ncomo refinido por lei"
msgid "Things to do with this request"
-msgstr ""
+msgstr "Coisas para fazer com esse pedido."
msgid "Things you're following"
-msgstr ""
+msgstr "O que você está seguindo"
msgid "This authority no longer exists, so you cannot make a request to it."
-msgstr ""
+msgstr "Este órgão de governo não existe, portanto você não pode criar um pedido de informação para ele."
msgid "This covers a very wide spectrum of information about the state of\\n the <strong>natural and built environment</strong>, such as:"
-msgstr ""
+msgstr "Este pedido abrange um espectro muito amplo de informações sobre o estado do <strong>meio-ambiente, </strong> tais como:"
msgid "This external request has been hidden"
-msgstr ""
+msgstr "Esse pedido externo foi escondido"
msgid "This is <a href=\"{{profile_url}}\">{{user_name}}'s</a> wall"
msgstr ""
msgid "This is a plain-text version of the Freedom of Information request \"{{request_title}}\". The latest, full version is available online at {{full_url}}"
-msgstr ""
+msgstr "Esta é uma versão somente de texto de seu Pedido de Acesso à Informação \"{{request_title}}\". A versão completa mais recente está disponível online em {{full_url}} "
msgid "This is an HTML version of an attachment to the Freedom of Information request"
-msgstr ""
+msgstr "Esta é a versão HTML de um anexo ao pedido de informação"
msgid "This is because {{title}} is an old request that has been\\nmarked to no longer receive responses."
-msgstr ""
+msgstr "Isso porque {{title}} é um pedido antigo que foi marcado para não receber mais respostas."
msgid "This is the first version."
msgstr ""
msgid "This is your own request, so you will be automatically emailed when new responses arrive."
-msgstr ""
+msgstr "Esse é o seu próprio pedido, então você vai receber um email automaticamente quando uma nova resposta chegar."
msgid "This message has been hidden."
msgstr ""
@@ -2697,173 +2748,175 @@ msgid "This page of public body statistics is currently experimental, so there a
msgstr ""
msgid "This particular request is finished:"
-msgstr ""
+msgstr "Esse pedido foi finalizado:"
msgid "This person has made no Freedom of Information requests using this site."
-msgstr ""
+msgstr "Essa pessoa não fez nenhum pedido de acesso a informação usando este site."
msgid "This person's annotations"
-msgstr ""
+msgstr "Comentários dessa pessoa."
msgid "This person's {{count}} Freedom of Information request"
msgid_plural "This person's {{count}} Freedom of Information requests"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} pedidos dessa pessoa."
+msgstr[1] "{{count}} pedidos dessa pessoa."
msgid "This person's {{count}} annotation"
msgid_plural "This person's {{count}} annotations"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} comentário dessa pessoa."
+msgstr[1] "{{count}} comentários dessa pessoa."
msgid "This request <strong>requires administrator attention</strong>"
-msgstr ""
+msgstr "Esse pedido <strong>precisa de atenção dos administradores</strong>"
msgid "This request has already been reported for administrator attention"
-msgstr ""
+msgstr "Já chamaram a atenção do administrador para esse pedido"
msgid "This request has an <strong>unknown status</strong>."
-msgstr ""
+msgstr "Esta requisição possui uma <strong>situação desconhecida</strong>"
msgid "This request has been <strong>hidden</strong> from the site, because an administrator considers it not to be an FOI request"
-msgstr ""
+msgstr "Esse pedido foi <strong>escondido</strong> do site, pois um administrador não considera que ele seja um pedido de acesso à informação."
msgid "This request has been <strong>hidden</strong> from the site, because an administrator considers it vexatious"
-msgstr ""
+msgstr "Esta requisição foi <strong>ocultada</strong> do site porque o administrador a considerou constrangedora"
msgid "This request has been <strong>reported</strong> as needing administrator attention (perhaps because it is vexatious, or a request for personal information)"
-msgstr ""
+msgstr "Este requirimento foi <strong>indicado</strong> pendente de revisão pelo administrator (talvez porque seja constrangedor ou solicitou informações pessoais)"
msgid "This request has been <strong>withdrawn</strong> by the person who made it.\\n There may be an explanation in the correspondence below."
-msgstr ""
+msgstr "Este pedido foi <strong>removido</strong> pela pessoa que o fez. Pode ser que exista uma explicação na troca de emails abaixo."
msgid "This request has been marked for review by the site administrators, who have not hidden it at this time. If you believe it should be hidden, please <a href=\"{{url}}\">contact us</a>."
-msgstr ""
+msgstr "Esse pedido foi marcado para revisão pelos administradores, que ainda não esconderam-no. Se você acha que ele deveria ser escondido, por favor <a href=\"{{url}}\">entre em contato</a>."
msgid "This request has been reported for administrator attention"
-msgstr ""
+msgstr "Esse pedido foi encaminhado para avaliação do administrador"
msgid "This request has been set by an administrator to \"allow new responses from nobody\""
-msgstr ""
+msgstr "Esta requisição foi configurada por um administrador para \"permitir novas respostas do órgão\""
msgid "This request has had an unusual response, and <strong>requires attention</strong> from the {{site_name}} team."
-msgstr ""
+msgstr "Esta requisição teve uma resposta atípica, e <strong>requer atenção<strong> do tipo do {{site_name}}."
msgid "This request has prominence 'hidden'. You can only see it because you are logged\\n in as a super user."
-msgstr ""
+msgstr "Esse pedido esta marcado como 'escondido'. Você só pode vê-lo porque esta conectado como um administrador."
msgid "This request is hidden, so that only you the requester can see it. Please\\n <a href=\"{{url}}\">contact us</a> if you are not sure why."
-msgstr ""
+msgstr "Esse pedido esta escondido, apenas quem pediu pode ver. Por favor <a href=\"{{url}}\">contate-nos</a> se você não tem certeza de porque."
msgid "This request is still in progress:"
-msgstr ""
+msgstr "Esse pedido ainda não acabou:"
msgid "This request requires administrator attention"
msgstr ""
msgid "This request was not made via {{site_name}}"
-msgstr ""
+msgstr "Este pedido não foi feito através de {{site_name}}"
msgid "This table shows the technical details of the internal events that happened\\nto this request on {{site_name}}. This could be used to generate information about\\nthe speed with which authorities respond to requests, the number of requests\\nwhich require a postal response and much more."
msgstr ""
+"Esta tabela mostra detalhes técnicos dos eventos internos que\n"
+"aconteceram para esta requisição no {{site_name}}. Isto pode ser usado para gerar informação sobre a velocidade com a qual autoridades respondem às requisições, o número de requisições que requerem uma resposta por correio e muito mais."
msgid "This user has been banned from {{site_name}} "
-msgstr ""
+msgstr "Este usuário foi banido do {{site_name}}"
msgid "This was not possible because there is already an account using \\nthe email address {{email}}."
-msgstr ""
+msgstr "Isto não foi possível porque já existe uma conta usando o email {{email}}"
msgid "To cancel these alerts"
-msgstr ""
+msgstr "Cancelar estes alertas"
msgid "To cancel this alert"
-msgstr ""
+msgstr "Cancelar este alerta"
msgid "To carry on, you need to sign in or make an account. Unfortunately, there\\nwas a technical problem trying to do this."
-msgstr ""
+msgstr "Para continuar, você precisa estar autenticado ou criar uma conta, mas infelizmente estamos com problemas técnicos."
msgid "To change your email address used on {{site_name}}"
-msgstr ""
+msgstr "Para mudar seu endereço de e-mail usado no {{site_name}}"
msgid "To classify the response to this FOI request"
-msgstr ""
+msgstr "Para classificar a resposta a esse pedido de informação"
msgid "To do that please send a private email to "
-msgstr ""
+msgstr "Para fazer isso, por favor, envie um email privado para "
msgid "To do this, first click on the link below."
-msgstr ""
+msgstr "Para fazer isso, clique no link a seguir."
msgid "To download the zip file"
-msgstr ""
+msgstr "Baixe o arquivo compactado"
msgid "To follow all successful requests"
-msgstr ""
+msgstr "Seguir todas as requisições respondidas"
msgid "To follow new requests"
-msgstr ""
+msgstr "Para seguir novos pedidos"
msgid "To follow requests and responses matching your search"
-msgstr ""
+msgstr "Para acompanhar os pedidos e respostas que correspondem à sua pesquisa"
msgid "To follow requests by '{{user_name}}'"
-msgstr ""
+msgstr "Seguir requisições de '{{user_name}}'"
msgid "To follow requests made using {{site_name}} to the public authority '{{public_body_name}}'"
-msgstr ""
+msgstr "Seguir requisições feitas pelo {{site_name}} a(o) '{{public_body_name}}'"
msgid "To follow the request '{{request_title}}'"
-msgstr ""
+msgstr "Seguir a requisição '{{request_title}}'"
msgid "To help us keep the site tidy, someone else has updated the status of the \\n{{law_used_full}} request {{title}} that you made to {{public_body}}, to \"{{display_status}}\" If you disagree with their categorisation, please update the status again yourself to what you believe to be more accurate."
-msgstr ""
+msgstr "Nos ajude a manter o site redondinho, outra pessoa acabou de alterar o status do {{law_used_full}} pedido {{title}} que você fez a(o) {{public_body}}, para \"{{display_status}}\". Se você discorda da categorização, por favor, altere novamente o status para o que considera mais adequado."
msgid "To let everyone know, follow this link and then select the appropriate box."
-msgstr ""
+msgstr "Para permitir que todos saibam, siga este link e selecione a opção apropriada."
msgid "To log into the administrative interface"
-msgstr ""
+msgstr "Logar na interface administrativa"
msgid "To make a batch request"
msgstr ""
msgid "To play the request categorisation game"
-msgstr ""
+msgstr "Para jogar o jogo de categorização do pedido"
msgid "To post your annotation"
-msgstr ""
+msgstr "Enviar seu comentário"
msgid "To reply to "
-msgstr ""
+msgstr "Responder para "
msgid "To report this request"
msgstr ""
msgid "To send a follow up message to "
-msgstr ""
+msgstr "Enviar uma mensagem de acompanhamento para "
msgid "To send a message to "
-msgstr ""
+msgstr "Enviar uma mensagem para "
msgid "To send your FOI request"
-msgstr ""
+msgstr "Enviar seu pedido de acesso a informação"
msgid "To update the status of this FOI request"
-msgstr ""
+msgstr "Para atualizar a situação desse pedido de informação"
msgid "To upload a response, you must be logged in using an email address from "
-msgstr ""
+msgstr "Para enviar uma resposta, você deve estar logado usando um email de "
msgid "To use the advanced search, combine phrases and labels as described in the search tips below."
-msgstr ""
+msgstr "Para usar a pesquisa avançada, combinar frases e etiquetas, conforme descrito nas dicas de pesquisa abaixo."
msgid "To view the email address that we use to send FOI requests to {{public_body_name}}, please enter these words."
-msgstr ""
+msgstr "Para ver o endereço de email que utilizamos para enviar pedidos para {{public_body_name}}, por favor digite essas palavras."
msgid "To view the response, click on the link below."
-msgstr ""
+msgstr "Para ver a resposta, clique no link a seguir."
msgid "To {{public_body_link_absolute}}"
-msgstr ""
+msgstr "Para {{public_body_link_absolute}}"
msgid "To:"
msgstr "Para:"
@@ -2872,73 +2925,75 @@ msgid "Today"
msgstr "Hoje"
msgid "Too many requests"
-msgstr ""
+msgstr "Excessivas requisições"
msgid "Top search results:"
-msgstr ""
+msgstr "Resultados das buscas mais populares:"
msgid "Track thing"
-msgstr ""
+msgstr "Acompanhar isto"
msgid "Track this person"
-msgstr ""
+msgstr "Acompanhar este usuário"
msgid "Track this search"
-msgstr ""
+msgstr "Acompanhe esta pesquisa"
msgid "TrackThing|Track medium"
-msgstr ""
+msgstr "TrackThing | Seguir mídia"
msgid "TrackThing|Track query"
-msgstr ""
+msgstr "TrackThing | Seguir pergunta"
msgid "TrackThing|Track type"
-msgstr ""
+msgstr "TrackThing | Seguir tipo"
msgid "Turn off email alerts"
-msgstr ""
+msgstr "Desativar alertas por email"
msgid "Tweet this request"
-msgstr ""
+msgstr "Enviar um tweet deste pedido"
msgid "Type <strong><code>01/01/2008..14/01/2008</code></strong> to only show things that happened in the first two weeks of January."
-msgstr ""
+msgstr "Digite <strong><code>01/01/2008..14/01/2008</code></strong> para mostrar apenas coisas que aconteceram nas duas primeiras semanas de Janeiro."
msgid "URL name can't be blank"
-msgstr ""
+msgstr "A URL não pode estar em branco"
msgid "URL name is already taken"
msgstr ""
msgid "Unable to change email address on {{site_name}}"
-msgstr ""
+msgstr "Não foi possível mudar o endereço de email no {{site_name}}"
msgid "Unable to send a reply to {{username}}"
-msgstr ""
+msgstr "Não foi possível enviar uma mensagem para {{username}}"
msgid "Unable to send follow up message to {{username}}"
-msgstr ""
+msgstr "Não foi possível mandar uma mensagem de acompanhamento para {{username}}"
msgid "Unexpected search result type "
-msgstr ""
+msgstr "Tipo inesperado de resultado da busca "
msgid "Unfortunately we don't know the FOI\\nemail address for that authority, so we can't validate this.\\nPlease <a href=\"{{url}}\">contact us</a> to sort it out."
msgstr ""
+"Infelizmente nós não sabemos o email de contato para esse orgão, então não podemos validar isso.\n"
+"Por favor <a href=\"{{url}}\">entre em contato</a> para corrigirmos isso."
msgid "Unfortunately, we do not have a working address for {{public_body_names}}."
msgstr ""
msgid "Unfortunately, we do not have a working {{info_request_law_used_full}}\\naddress for"
-msgstr ""
+msgstr "Infelizmente, nós não temos um email válido de "
msgid "Unknown"
msgstr "Desconhecido"
msgid "Unsubscribe"
-msgstr ""
+msgstr "Desinscrever-se"
msgid "Unusual response."
-msgstr ""
+msgstr "Outra resposta."
msgid "Update email address - {{public_body_name}}"
msgstr ""
@@ -2947,46 +3002,46 @@ msgid "Update the address:"
msgstr ""
msgid "Update the status of this request"
-msgstr ""
+msgstr "Alterar a situação deste pedido"
msgid "Update the status of your request to "
-msgstr ""
+msgstr "Atualize a situação de seu pedido para "
msgid "Upload FOI response"
msgstr ""
msgid "Use OR (in capital letters) where you don't mind which word, e.g. <strong><code>commons OR lords</code></strong>"
-msgstr ""
+msgstr "Use OU (em letras maiúsculas) para buscar a ocorrência de qualquer uma das palavras, por exemplo <code><strong>câmara OU senado</strong></code>"
msgid "Use quotes when you want to find an exact phrase, e.g. <strong><code>\"Liverpool City Council\"</code></strong>"
-msgstr ""
+msgstr "Use aspas duplas quando quiser encontrar uma frase exata, por exemplo <code><strong>\"Câmara Municipal\"</strong></code>"
msgid "User"
-msgstr ""
+msgstr "Usuário"
msgid "User info request sent alert"
-msgstr ""
+msgstr "Requisição de informação de usuário mandou alerta"
msgid "User – {{name}}"
msgstr ""
msgid "UserInfoRequestSentAlert|Alert type"
-msgstr ""
+msgstr "UserInfoRequestSentAlert | Tipo de alerta"
msgid "Users cannot usually make batch requests to multiple authorities at once because we don’t want public authorities to be bombarded with large numbers of inappropriate requests. Please <a href=\"{{url}}\">contact us</a> if you think you have good reason to send the same request to multiple authorities at once."
msgstr ""
msgid "User|About me"
-msgstr ""
+msgstr "Usuário | Sobre mim"
msgid "User|Address"
msgstr ""
msgid "User|Admin level"
-msgstr ""
+msgstr "Usuário | Nível de administrador"
msgid "User|Ban text"
-msgstr ""
+msgstr "Usuário | Banir texto"
msgid "User|Can make batch requests"
msgstr ""
@@ -2995,40 +3050,40 @@ msgid "User|Dob"
msgstr ""
msgid "User|Email"
-msgstr ""
+msgstr "Usuário | E-mail"
msgid "User|Email bounce message"
-msgstr ""
+msgstr "User|Email bounce message"
msgid "User|Email bounced at"
-msgstr ""
+msgstr "User|Email bounced at"
msgid "User|Email confirmed"
-msgstr ""
+msgstr "Usuário | Email confirmado"
msgid "User|Hashed password"
-msgstr ""
+msgstr "Usuário | senha Hashed"
msgid "User|Last daily track email"
-msgstr ""
+msgstr "Usuário | Último e-mail"
msgid "User|Locale"
-msgstr ""
+msgstr "User|Locale"
msgid "User|Name"
-msgstr ""
+msgstr "Usuário | Nome"
msgid "User|No limit"
-msgstr ""
+msgstr "User|Sem limites"
msgid "User|Receive email alerts"
msgstr ""
msgid "User|Salt"
-msgstr ""
+msgstr "Usuário | Salt"
msgid "User|Url name"
-msgstr ""
+msgstr "Usuário | Url"
msgid "Version {{version}}"
msgstr ""
@@ -3037,43 +3092,43 @@ msgid "Vexatious"
msgstr ""
msgid "View FOI email address"
-msgstr ""
+msgstr "Ver o endereço de email do pedido de informação"
msgid "View FOI email address for '{{public_body_name}}'"
-msgstr ""
+msgstr "Veja o endereço de contato para '{{public_body_name}}'"
msgid "View FOI email address for {{public_body_name}}"
-msgstr ""
+msgstr "Veja o e-mail de {{public_body_name}}"
msgid "View Freedom of Information requests made by {{user_name}}:"
-msgstr ""
+msgstr "Ver os pedidos de acesso a informação feitos por {{user_name}}:"
msgid "View and search requests"
-msgstr ""
+msgstr "Visualizar ou buscar pedidos"
msgid "View authorities"
-msgstr ""
+msgstr "Ver órgãos públicos"
msgid "View email"
-msgstr ""
+msgstr "Ver e-mail"
msgid "View requests"
-msgstr ""
+msgstr "Ver pedidos"
msgid "Waiting clarification."
-msgstr ""
+msgstr "Esperando esclarecimento."
msgid "Waiting for an <strong>internal review</strong> by {{public_body_link}} of their handling of this request."
-msgstr ""
+msgstr "Aguardando por decisão sobre <strong>recurso</strong> de {{public_body_link}} da sua resposta a esse pedido."
msgid "Waiting for the public authority to complete an internal review of their handling of the request"
-msgstr ""
+msgstr "Esperando para a autoridade pública completar uma revisão interna"
msgid "Waiting for the public authority to reply"
-msgstr ""
+msgstr "Aguardando resposta do órgão público"
msgid "Was the response you got to your FOI request any good?"
-msgstr ""
+msgstr "A resposta ao seu pedido de acesso à informação foi satisfatória?"
msgid "We consider it is not a valid FOI request, and have therefore hidden it from other users."
msgstr ""
@@ -3082,109 +3137,109 @@ msgid "We consider it to be vexatious, and have therefore hidden it from other u
msgstr ""
msgid "We do not have a working request email address for this authority."
-msgstr ""
+msgstr "Nós não temos um email válido desse orgão."
msgid "We do not have a working {{law_used_full}} address for {{public_body_name}}."
-msgstr ""
+msgstr "Nós não temos um email do {{public_body_name}} para fazer pedidos de acesso à informação."
msgid "We don't know whether the most recent response to this request contains\\n information or not\\n &ndash;\\n\tif you are {{user_link}} please <a href=\"{{url}}\">sign in</a> and let everyone know."
-msgstr ""
+msgstr "Nós ainda não sabemos se esta última resposta contém ou não a informação que foi pedida. Se você for {{user_link}} por favor <a href=\"{{url}}\">acesse</a> e deixe todos saberem."
msgid "We will not reveal your email address to anybody unless you or\\n the law tell us to (<a href=\"{{url}}\">details</a>). "
-msgstr ""
+msgstr "Nós não vamos revelar o seu endereço de e-mail para ninguém, a menos que você ou a Justiça nos mandem fazer isso ( <a href=\"{{url}}\">detalhes</a> )."
msgid "We will not reveal your email address to anybody unless you\\nor the law tell us to."
-msgstr ""
+msgstr "Nós não iremos revelar o seu endereço de email para ninguém a menos que você ou a lei nos solicite."
msgid "We will not reveal your email addresses to anybody unless you\\nor the law tell us to."
-msgstr ""
+msgstr "Nós não iremos revelar o seu endereço de email para ninguém a menos que a lei nos obrigue."
msgid "We're waiting for"
-msgstr ""
+msgstr "Estamos aguardando por"
msgid "We're waiting for someone to read"
-msgstr ""
+msgstr "Estamos esperando alguém ler"
msgid "We've sent an email to your new email address. You'll need to click the link in\\nit before your email address will be changed."
-msgstr ""
+msgstr "Enviamos um email para o seu novo endereço de email. Você vai precisar clicar no link nele antes da alteração ser efetuada."
msgid "We've sent you an email, and you'll need to click the link in it before you can\\ncontinue."
-msgstr ""
+msgstr "Enviamos um email para você, e você vai precisar clicar no link dele antes de continuar."
msgid "We've sent you an email, click the link in it, then you can change your password."
-msgstr ""
+msgstr "Enviamos um e-mail para você. Clique no link enviado para trocar sua senha."
msgid "What are you doing?"
-msgstr ""
+msgstr "O que você está fazendo?"
msgid "What best describes the status of this request now?"
-msgstr ""
+msgstr "Qual a situação do seu pedido agora?"
msgid "What information has been released?"
-msgstr ""
+msgstr "Últimas respostas"
msgid "What information has been requested?"
-msgstr ""
+msgstr "Qual informação foi requerida?"
msgid "When you get there, please update the status to say if the response \\ncontains any useful information."
-msgstr ""
+msgstr "Quando você chegar lá, favor atualizar a situação se a resposta tiver alguma informação útil."
msgid "When you receive the paper response, please help\\n others find out what it says:"
-msgstr ""
+msgstr "Quando receber a resposta em papel, por favor contribua para que outros saibam o que ela diz:"
msgid "When you're done, <strong>come back here</strong>, <a href=\"{{url}}\">reload this page</a> and file your new request."
-msgstr ""
+msgstr "Quando tiver concluído, <strong>retorne aqui</strong>, <a href=\"{{url}}\">recarregue esta página</a> e registre sua nova requisição."
msgid "Which of these is happening?"
-msgstr ""
+msgstr "Qual desses está ocorrendo?"
msgid "Who can I request information from?"
-msgstr ""
+msgstr "De que órgãos públicos posso solicitar informações?"
msgid "Why specifically do you consider this request unsuitable?"
msgstr ""
msgid "Withdrawn by the requester."
-msgstr ""
+msgstr "Removida pelo solicitante."
msgid "Wk"
-msgstr ""
+msgstr "Wk"
msgid "Would you like to see a website like this in your country?"
-msgstr ""
+msgstr "Você gostaria de um site como este no seu país?"
msgid "Write a reply"
-msgstr ""
+msgstr "Escreva uma resposta"
msgid "Write a reply to "
-msgstr ""
+msgstr "Escreva uma resposta para "
msgid "Write your FOI follow up message to "
-msgstr ""
+msgstr "Escreva sua mensagem de acompanhamento do pedido para "
msgid "Write your request in <strong>simple, precise language</strong>."
-msgstr ""
+msgstr "Escreva seu pedido de <strong>forma simples</strong>."
msgid "You"
-msgstr ""
+msgstr "Você"
msgid "You already created the same batch of requests on {{date}}. You can either view the <a href=\"{{existing_batch}}\">existing batch</a>, or edit the details below to make a new but similar batch of requests."
msgstr ""
msgid "You are already following new requests"
-msgstr ""
+msgstr "Você já acompanha novas solicitações"
msgid "You are already following requests to {{public_body_name}}"
-msgstr ""
+msgstr "Você já está acompanhando os pedidos feitos a {{public_body_name}}"
msgid "You are already following things matching this search"
-msgstr ""
+msgstr "Você já está acompanhando coisas correspondentes à esta pesquisa"
msgid "You are already following this person"
-msgstr ""
+msgstr "Você já está seguindo esta pessoa"
msgid "You are already following this request"
-msgstr ""
+msgstr "Você já está acompanhando este pedido"
msgid "You are already subscribed to '{{link_to_authority}}', a public authority."
msgstr ""
@@ -3205,10 +3260,10 @@ msgid "You are already subscribed to any <a href=\"{{successful_requests_url}}\"
msgstr ""
msgid "You are currently receiving notification of new activity on your wall by email."
-msgstr ""
+msgstr "Atualmente você está recebendo notificações sobre novas atividades no seu mural por email."
msgid "You are following all new successful responses"
-msgstr ""
+msgstr "Você está acompanhando todas as novas respostas bem sucedidas"
msgid "You are no longer following '{{link_to_authority}}', a public authority."
msgstr ""
@@ -3247,82 +3302,85 @@ msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about <a
msgstr ""
msgid "You can <strong>complain</strong> by"
-msgstr ""
+msgstr "Você pode <strong>reclamar</strong> por"
msgid "You can change the requests and users you are following on <a href=\"{{profile_url}}\">your profile page</a>."
-msgstr ""
+msgstr "Você pode modificar os pedidos e usuários que está seguindo no <a href=\"{{profile_url}}\">seu perfil</a>."
msgid "You can get this page in computer-readable format as part of the main JSON\\npage for the request. See the <a href=\"{{api_path}}\">API documentation</a>."
-msgstr ""
+msgstr "Você pode obter esta página em um formato mais amigável para computadores como parte da\\n página JSON para o pedido. Veja a <a href=\"{{api_path}}\">documentação API</a>."
msgid "You can only request information about the environment from this authority."
-msgstr ""
+msgstr "Você pode apenas ver pedidos de informação sobre o meio-ambiente feitos para essa entidade."
msgid "You have a new response to the {{law_used_full}} request "
-msgstr ""
+msgstr "Você tem uma nova resposta para o seu pedido de {{law_used_full}}"
msgid "You have found a bug. Please <a href=\"{{contact_url}}\">contact us</a> to tell us about the problem"
-msgstr ""
+msgstr "Você encontrou um bug. Por favor, <a href=\"{{contact_url}}\">entre em contato conosco</a> para nos informar sobre o problema."
msgid "You have hit the rate limit on new requests. Users are ordinarily limited to {{max_requests_per_user_per_day}} requests in any rolling 24-hour period. You will be able to make another request in {{can_make_another_request}}."
-msgstr ""
+msgstr "Você atingiu o raro limite de pedidos novos. Usuários estão normalmente limitados a {{max_requests_per_user_per_day}} pedidos em um período de 24 horas. Você poderá fazer outro pedido em {{can_make_another_request}}."
msgid "You have made no Freedom of Information requests using this site."
-msgstr ""
+msgstr "Você não fez nenhum pedido de acesso a informação usando este site."
msgid "You have now changed the text about you on your profile."
-msgstr ""
+msgstr "Você alterou o texto sobre você no seu perfil."
msgid "You have now changed your email address used on {{site_name}}"
-msgstr ""
+msgstr "Você agora mudou o endereço de e-mail usado no {{site_name}}"
msgid "You just tried to sign up to {{site_name}}, when you\\nalready have an account. Your name and password have been\\nleft as they previously were.\\n\\nPlease click on the link below."
msgstr ""
+"Você acabou de tentar se registrar no {{site_name}}, mas você já tem uma conta. Seu nome e senha continuam os mesmos.\n"
+"\n"
+"Por favor, clique no link abaixo."
msgid "You know what caused the error, and can <strong>suggest a solution</strong>, such as a working email address."
-msgstr ""
+msgstr "Você sabe o que causou o erro e pode <strong>sugerir uma solução</strong>, como um endereço de e-mail que funcione."
msgid "You may <strong>include attachments</strong>. If you would like to attach a\\n file too large for email, use the form below."
-msgstr ""
+msgstr "Você pode<strong>incluir anexos</strong>. Se preferir adicionar um arquivo \\nmuito grande para emails, use o formulário abaixo."
msgid "You may be able to find one on their website, or by phoning them up and asking. If you manage to find one, then please send it to us:"
msgstr ""
msgid "You may be able to find\\n one on their website, or by phoning them up and asking. If you manage\\n to find one, then please <a href=\"{{url}}\">send it to us</a>."
-msgstr ""
+msgstr "Talvez você consiga achar um email no site deles ou telefonando e perguntando. Se você conseguir encontrar, por favor <a href=\"{{url}}\">envie para nós</a>."
msgid "You may be able to find\\none on their website, or by phoning them up and asking. If you manage\\nto find one, then please <a href=\"{{help_url}}\">send it to us</a>."
-msgstr ""
+msgstr "Você pode encontrar no \\nsite deles ou telefonando e perguntando. Se conseguir, por favor\\n <a href=\"{{help_url}}\">envie para nós</a>."
msgid "You need to be logged in to change the text about you on your profile."
-msgstr ""
+msgstr "Você precisa estar logado para alterar o texto sobre você no seu perfil."
msgid "You need to be logged in to change your profile photo."
-msgstr ""
+msgstr "Você precisa estar logado para alterar sua foto do perfil."
msgid "You need to be logged in to clear your profile photo."
-msgstr ""
+msgstr "Você precisa estar logado para apagar sua foto do perfil."
msgid "You need to be logged in to edit your profile."
-msgstr ""
+msgstr "Você precisa estar logado para editar seu perfil."
msgid "You need to be logged in to report a request for administrator attention"
msgstr ""
msgid "You previously submitted that exact follow up message for this request."
-msgstr ""
+msgstr "Você já submeteu uma resposta igual para este pedido."
msgid "You should have received a copy of the request by email, and you can respond\\n by <strong>simply replying</strong> to that email. For your convenience, here is the address:"
-msgstr ""
+msgstr "Você deve receber uma cópia do pedido pro email. Você pode responder \\n simplesmente <strong>respondendo</strong> ao email. para sua conveniência, aqui está o endereço:"
msgid "You want to <strong>give your postal address</strong> to the authority in private."
-msgstr ""
+msgstr "Você precisa <strong>fornecer seu CEP</strong> para o órgão de governo. Esta informação não será pública."
msgid "You will be unable to make new requests, send follow ups, add annotations or\\nsend messages to other users. You may continue to view other requests, and set\\nup\\nemail alerts."
-msgstr ""
+msgstr "Você estará impossibilitado de fazer novas requisições, envie retornos, acrescente anotações ou \\nenvie mensagens para outros usuários. Você pode continuar vendo outros pedidos e configurar alertas\\npor\\nemail"
msgid "You will no longer be emailed updates for those alerts"
-msgstr ""
+msgstr "Você não receberá mais atualizações por e-mail sobre esses alertas"
msgid "You will now be emailed updates about '{{link_to_authority}}', a public authority."
msgstr ""
@@ -3343,82 +3401,89 @@ msgid "You will now be emailed updates about any <a href=\"{{new_requests_url}}\
msgstr ""
msgid "You will only get an answer to your request if you follow up\\nwith the clarification."
-msgstr ""
+msgstr "Você só vai receber uma resposta para o seu pedido se enviar uma mensagem com as explicações adicionais."
msgid "You will still be able to view it while logged in to the site. Please reply to this email if you would like to discuss this decision further."
msgstr ""
msgid "You're in. <a href=\"#\" id=\"send-request\">Continue sending your request</a>"
-msgstr ""
+msgstr "Você está dentro. <a href=\"#\" id=\"send-request\">Continue enviando seu pedido</a>"
msgid "You're long overdue a response to your FOI request - "
-msgstr ""
+msgstr "A resposta à sua solicitação está muito atrasada."
msgid "You're not following anything."
-msgstr ""
+msgstr "Você não está acompanhando nada."
msgid "You've now cleared your profile photo"
-msgstr ""
+msgstr "Você apagou sua foto do perfil"
msgid "Your <strong>name will appear publicly</strong>\\n (<a href=\"{{why_url}}\">why?</a>)\\n on this website and in search engines. If you\\n are thinking of using a pseudonym, please\\n <a href=\"{{help_url}}\">read this first</a>."
msgstr ""
+"Seu <strong>nome vai aparecer publicamente</strong> \n"
+" (<a href=\"{{why_url}}\">porque?</a>)\n"
+" neste website e em mecanismos de busca. Se você\n"
+" estiver pensando em usar um pseudônimo, por favor \n"
+" <a href=\"{{help_url}}\">leia isso antes</a>."
msgid "Your annotations"
-msgstr ""
+msgstr "Seus comentários"
msgid "Your batch request \"{{title}}\" has been sent"
msgstr ""
msgid "Your details, including your email address, have not been given to anyone."
-msgstr ""
+msgstr "Seus dados, incluindo endereço de email (não foram fornecidos a ninguém)"
msgid "Your e-mail:"
-msgstr "E-mail:"
+msgstr "Seu e-mail:"
msgid "Your email doesn't look like a valid address"
msgstr ""
msgid "Your follow up has not been sent because this request has been stopped to prevent spam. Please <a href=\"{{url}}\">contact us</a> if you really want to send a follow up message."
-msgstr ""
+msgstr "Sua mensagem não foi enviada por que esse pedido foi interrompido para impedir spam. Por favor <a href=\"{{url}}\">entre em contato</a> se você realmente quer enviar essa mensagem."
msgid "Your follow up message has been sent on its way."
-msgstr ""
+msgstr "Sua mensagem foi encaminhada."
msgid "Your internal review request has been sent on its way."
-msgstr ""
+msgstr "Seu pedido de revisão foi enviado."
msgid "Your message has been sent. Thank you for getting in touch! We'll get back to you soon."
-msgstr ""
+msgstr "Sua mensagem foi enviada. Obrigado por entrar em contato conosco! Entraremos em contato em breve."
msgid "Your message to {{recipient_user_name}} has been sent"
-msgstr ""
+msgstr "Sua mensagem para {{recipient_user_name}} foi enviada"
msgid "Your message to {{recipient_user_name}} has been sent!"
-msgstr ""
+msgstr "Sua mensagem para {{recipient_user_name}} foi enviada!"
msgid "Your message will appear in <strong>search engines</strong>"
-msgstr ""
+msgstr "Suas mensagens aparecerão em <strong>mecanismos de busca</strong>"
msgid "Your name and annotation will appear in <strong>search engines</strong>."
-msgstr ""
+msgstr "Seu nome e anotações aparecerão em <strong>mecanismos de busca</strong>."
msgid "Your name, request and any responses will appear in <strong>search engines</strong>\\n (<a href=\"{{url}}\">details</a>)."
-msgstr ""
+msgstr "Seu <strong>nome, pedido e quaisquer respostas vão aparecer publicamente</strong> (<a href=\"{{url}}\">porque?</a>) neste website e em mecanismos de busca."
msgid "Your name:"
-msgstr "Nome:"
+msgstr "Seu nome:"
msgid "Your original message is attached."
-msgstr ""
+msgstr "Sua mensagem original está anexada."
msgid "Your password has been changed."
-msgstr "A sua palavra-chave foi alterada."
+msgstr "Sua senha foi alterada."
msgid "Your password:"
-msgstr "Palavra-chave:"
+msgstr "Sua senha:"
msgid "Your photo will be shown in public <strong>on the Internet</strong>,\\n wherever you do something on {{site_name}}."
msgstr ""
+"Sua foto será exibida em público <strong>na internet</strong>,\\n \n"
+"em qualquer ação que fizer no {{site_name}}."
msgid "Your request '{{request}}' at {{url}} has been reviewed by moderators."
msgstr ""
@@ -3439,32 +3504,32 @@ msgid "Your request to update {{public_body_name}} on {{site_name}}"
msgstr ""
msgid "Your request was called {{info_request}}. Letting everyone know whether you got the information will help us keep tabs on"
-msgstr ""
+msgstr "Sua requisição foi nomeada {{info_request}}. Permitir que todos saibam onde você obteve a informação irá nos ajudar a manter as abas"
msgid "Your request:"
-msgstr "Pedido:"
+msgstr "Seu pedido:"
msgid "Your response to an FOI request was not delivered"
-msgstr ""
+msgstr "Sua resposta a um PAI não foi enviada"
msgid "Your response will <strong>appear on the Internet</strong>, <a href=\"{{url}}\">read why</a> and answers to other questions."
-msgstr ""
+msgstr "Sua resposta irá <strong>aparecer na Internet</strong>, <a href=\"{{url}}\">leia por que</a> e respostas para outras perguntas."
msgid "Your selected authorities"
msgstr ""
msgid "Your thoughts on what the {{site_name}} <strong>administrators</strong> should do about the request."
-msgstr ""
+msgstr "Sua opnião sobre o que os <strong>administradores</strong> do {{site_name}} deveriam fazer com o pedido."
msgid "Your {{count}} Freedom of Information request"
msgid_plural "Your {{count}} Freedom of Information requests"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Seu {{count}} pedido"
+msgstr[1] "Seus {{count}} pedidos"
msgid "Your {{count}} annotation"
msgid_plural "Your {{count}} annotations"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Seu {{count}} comentário"
+msgstr[1] "Seus {{count}} comentários"
msgid "Your {{count}} batch requests"
msgid_plural "Your {{count}} batch requests"
@@ -3472,13 +3537,13 @@ msgstr[0] ""
msgstr[1] ""
msgid "Your {{site_name}} email alert"
-msgstr ""
+msgstr "Seu alerta de mensagem do {{site_name}}"
msgid "Yours faithfully,"
-msgstr "Com os melhores cumprimentos,"
+msgstr "Atenciosamente,"
msgid "Yours sincerely,"
-msgstr "Com os melhores cumprimentos,"
+msgstr "Grato(a),"
msgid "Yours,"
msgstr ""
@@ -3493,22 +3558,22 @@ msgid "[{{public_body}} request email]"
msgstr ""
msgid "[{{site_name}} contact email]"
-msgstr ""
+msgstr "[{{site_name}} email de contato]"
msgid "\\n\\n[ {{site_name}} note: The above text was badly encoded, and has had strange characters removed. ]"
-msgstr ""
+msgstr "\\n\\n[ {{site_name}} nota: O texto acima estava mal codificado e teve caracteres estranhos removidos. ]"
msgid "a one line summary of the information you are requesting, \\n\t\t\te.g."
-msgstr ""
+msgstr "um resumo de uma linha sobre a informação que você esta pedindo, e.x."
msgid "admin"
-msgstr ""
+msgstr "administrador"
msgid "alaveteli_foi:The software that runs {{site_name}}"
msgstr ""
msgid "all requests"
-msgstr ""
+msgstr "todos os pedidos"
msgid "all requests or comments"
msgstr ""
@@ -3517,118 +3582,118 @@ msgid "all requests or comments matching text '{{query}}'"
msgstr ""
msgid "also called {{public_body_short_name}}"
-msgstr ""
+msgstr "também conhecido como {{public_body_short_name}}"
msgid "an anonymous user"
-msgstr "utilizador anónimo"
+msgstr "um usuário anônimo"
msgid "and"
-msgstr ""
+msgstr "e"
msgid "and update the status accordingly. Perhaps <strong>you</strong> might like to help out by doing that?"
-msgstr ""
+msgstr "e atualizar o status corretamente. <strong>Você</strong> gostaria de ajudar?"
msgid "and update the status."
-msgstr ""
+msgstr "e atualize a situação."
msgid "and we'll suggest <strong>what to do next</strong>"
-msgstr ""
+msgstr "e nós vamos sugerir <strong>o que fazer</strong>"
msgid "anything matching text '{{query}}'"
msgstr ""
msgid "are long overdue."
-msgstr ""
+msgstr "estouraram bastante o prazo."
msgid "at"
msgstr ""
msgid "authorities"
-msgstr ""
+msgstr "órgãos de governo"
msgid "beginning with ‘{{first_letter}}’"
-msgstr ""
+msgstr "começando com ‘{{first_letter}}’"
msgid "but followupable"
msgstr ""
msgid "by"
-msgstr ""
+msgstr "por"
msgid "by <strong>{{date}}</strong>"
-msgstr ""
+msgstr "até <strong>{{date}}</strong>"
msgid "by {{user_link_absolute}}"
-msgstr ""
+msgstr "por {{user_link_absolute}}"
msgid "comments"
-msgstr ""
+msgstr "comentários"
msgid "containing your postal address, and asking them to reply to this request.\\n Or you could phone them."
-msgstr ""
+msgstr "contendo seu endereço postal, e pedindo para que respondam a esse pedido.\\nOu você pode ligar para eles."
msgid "details"
msgstr "detalhes"
msgid "display_status only works for incoming and outgoing messages right now"
-msgstr ""
+msgstr "display_status somente funciona para mensagem recebidas e enviadas neste exato momento"
msgid "during term time"
-msgstr ""
+msgstr "durante o período letivo"
msgid "edit text about you"
-msgstr ""
+msgstr "altere o texto sobre você"
msgid "even during holidays"
-msgstr ""
+msgstr "mesmo durante feriados"
msgid "everything"
-msgstr ""
+msgstr "tudo"
msgid "external"
-msgstr ""
+msgstr "externo"
msgid "has reported an"
-msgstr ""
+msgstr "reportou um"
msgid "have delayed."
-msgstr ""
+msgstr "atrasou."
msgid "hide quoted sections"
-msgstr ""
+msgstr "esconder citações"
msgid "in term time"
-msgstr ""
+msgstr "durante o período escolar"
msgid "in the category ‘{{category_name}}’"
-msgstr ""
+msgstr "na categoria ‘{{category_name}}’"
msgid "internal error"
-msgstr ""
+msgstr "erro interno"
msgid "internal reviews"
-msgstr ""
+msgstr "avaliações internas"
msgid "is <strong>waiting for your clarification</strong>."
-msgstr ""
+msgstr "está </strong>esperando por sua classificação</strong>."
msgid "just to see how it works"
-msgstr ""
+msgstr "veja como isso funciona"
msgid "left an annotation"
-msgstr ""
+msgstr "deixou um comentário"
msgid "made."
-msgstr ""
+msgstr "feito."
msgid "matching the tag ‘{{tag_name}}’"
-msgstr ""
+msgstr "Casando com a tag ‘{{tag_name}}’"
msgid "messages from authorities"
-msgstr ""
+msgstr "mensagens de órgãos publicos"
msgid "messages from users"
-msgstr ""
+msgstr "mensagens de usuários"
msgid "move..."
msgstr ""
@@ -3637,25 +3702,25 @@ msgid "new requests"
msgstr ""
msgid "no later than"
-msgstr ""
+msgstr "até o dia"
msgid "no longer exists. If you are trying to make\\n From the request page, try replying to a particular message, rather than sending\\n a general followup. If you need to make a general followup, and know\\n an email which will go to the right place, please <a href=\"{{url}}\">send it to us</a>."
-msgstr ""
+msgstr "não existe mais. Se você está tentanto fazer\\n a partir da página de solicitação, tente responder a uma mensagem em específico em vez de enviar\\n uma resposta geral. Se você precisa fazer um resposta geral, e sabe\\n qual o email correto, por favor <a href=\"{{url}}\">send it to us</a>."
msgid "normally"
-msgstr ""
+msgstr " "
msgid "not requestable due to: {{reason}}"
msgstr ""
msgid "please sign in as "
-msgstr ""
+msgstr "faça o login como"
msgid "requesting an internal review"
-msgstr ""
+msgstr "apresentando recurso"
msgid "requests"
-msgstr ""
+msgstr "pedidos"
msgid "requests which are successful"
msgstr ""
@@ -3664,31 +3729,31 @@ msgid "requests which are successful matching text '{{query}}'"
msgstr ""
msgid "response as needing administrator attention. Take a look, and reply to this\\nemail to let them know what you are going to do about it."
-msgstr ""
+msgstr "esta resposta necessita de atenção do administrador. Responda este e-mail para que eles saibam o que você fará sobre isso."
msgid "send a follow up message"
-msgstr ""
+msgstr "enviar uma mensagem de acompanhamento"
msgid "set to <strong>blank</strong> (empty string) if can't find an address; these emails are <strong>public</strong> as anyone can view with a CAPTCHA"
msgstr ""
msgid "show quoted sections"
-msgstr ""
+msgstr "mostrar citações"
msgid "sign in"
-msgstr ""
+msgstr "entrar"
msgid "simple_date_format"
msgstr ""
msgid "successful requests"
-msgstr ""
+msgstr "pedidos atendidos"
msgid "that you made to"
-msgstr ""
+msgstr "que você fez para"
msgid "the main FOI contact address for {{public_body}}"
-msgstr ""
+msgstr "contato do {{public_body}}"
#. This phrase completes the following sentences:
#. Request an internal review from...
@@ -3696,159 +3761,159 @@ msgstr ""
#. Send a public reply to...
#. Don't want to address your message to... ?
msgid "the main FOI contact at {{public_body}}"
-msgstr ""
+msgstr "{{public_body}}"
msgid "the requester"
-msgstr ""
+msgstr "o solicitante"
msgid "the {{site_name}} team"
-msgstr ""
+msgstr "a equipe do {{site_name}}"
msgid "to read"
-msgstr ""
+msgstr "ler"
msgid "to send a follow up message."
-msgstr ""
+msgstr "enviar uma mensagem de acompanhamento."
msgid "to {{public_body}}"
-msgstr ""
+msgstr "para {{public_body}}"
msgid "unknown reason "
-msgstr ""
+msgstr "razão desconhecida"
msgid "unknown status "
-msgstr ""
+msgstr "situação desconhecida"
msgid "unresolved requests"
-msgstr ""
+msgstr "pedidos pendentes"
msgid "unsubscribe"
-msgstr ""
+msgstr "cancelar inscrição"
msgid "unsubscribe all"
-msgstr ""
+msgstr "desincrever todos"
msgid "unsuccessful requests"
-msgstr ""
+msgstr "pedidos mal sucedidos"
msgid "useful information."
-msgstr ""
+msgstr "informações úteis."
msgid "users"
-msgstr ""
+msgstr "usuários"
msgid "what's that?"
-msgstr ""
+msgstr "o que é isso?"
msgid "{{count}} FOI requests found"
-msgstr ""
+msgstr "{{count}} pedidos de acesso a informação encontrados"
msgid "{{count}} Freedom of Information request to {{public_body_name}}"
msgid_plural "{{count}} Freedom of Information requests to {{public_body_name}}"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} Pedido de Acesso à Informação solicitado para {{public_body_name}}"
+msgstr[1] "{{count}} Pedidos de Acesso à Informação solicitados para {{public_body_name}}"
msgid "{{count}} person is following this authority"
msgid_plural "{{count}} people are following this authority"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} pessoa está acompanhando esta autoridade"
+msgstr[1] "{{count}} pessoas estão acompanhando esta autoridade"
msgid "{{count}} request"
msgid_plural "{{count}} requests"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} pedido"
+msgstr[1] "{{count}} pedidos"
msgid "{{count}} request made."
msgid_plural "{{count}} requests made."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{{count}} pedido realizado."
+msgstr[1] "{{count}} pedidos realizados."
msgid "{{existing_request_user}} already\\n created the same request on {{date}}. You can either view the <a href=\"{{existing_request}}\">existing request</a>,\\n or edit the details below to make a new but similar request."
-msgstr ""
+msgstr "{{existing_request_user}} já fez um pedido parecido com o seu em {{date}}. Você pode ver o <a href=\"{{existing_request}}\">pedido existente</a> , ou editar os detalhes abaixo para fazer um pedido semelhante."
msgid "{{foi_law}} requests to '{{public_body_name}}'"
msgstr ""
msgid "{{info_request_user_name}} only:"
-msgstr ""
+msgstr "{{info_request_user_name}} apenas:"
msgid "{{law_used_full}} request - {{title}}"
-msgstr ""
+msgstr "Pedido de {{law_used_full}} - {{title}}"
msgid "{{law_used}} requests at {{public_body}}"
-msgstr ""
+msgstr "Pedidos de Informação a(o) {{public_body}}"
msgid "{{length_of_time}} ago"
-msgstr ""
+msgstr "Há {{length_of_time}}"
msgid "{{number_of_comments}} comments"
-msgstr ""
+msgstr "{{number_of_comments}} comentários"
msgid "{{public_body_link}} answered a request about"
-msgstr ""
+msgstr "{{public_body_link}} respondeu um pedido sobre "
msgid "{{public_body_link}} was sent a request about"
-msgstr ""
+msgstr "{{public_body_link}} enviou um pedido sobre"
msgid "{{public_body_name}} only:"
-msgstr ""
+msgstr "{{public_body_name}} apenas:"
msgid "{{public_body}} has asked you to explain part of your {{law_used}} request."
-msgstr ""
+msgstr "{{public_body}} pediu que você explicasse parte do seu pedido de informação"
msgid "{{public_body}} sent a response to {{user_name}}"
-msgstr ""
+msgstr "{{public_body}} enviou uma resposta para {{user_name}}"
msgid "{{reason}}, please sign in or make a new account."
-msgstr ""
+msgstr "{{reason}}, por favor entre ou crie uma nova conta."
msgid "{{search_results}} matching '{{query}}'"
-msgstr ""
+msgstr "{{search_results}} contendo '{{query}}'"
msgid "{{site_name}} blog and tweets"
-msgstr ""
+msgstr "{{site_name}} blog e tweets"
msgid "{{site_name}} covers requests to {{number_of_authorities}} authorities, including:"
-msgstr ""
+msgstr "{{site_name}} pode fazer pedidos para {{number_of_authorities}} órgãos públicos, incluindo:"
msgid "{{site_name}} sends new requests to <strong>{{request_email}}</strong> for this authority."
-msgstr ""
+msgstr "{{site_name}} envia novos pedidos para <strong>{{request_email}}</strong> para esse órgão."
msgid "{{site_name}} users have made {{number_of_requests}} requests, including:"
-msgstr ""
+msgstr "Os usuários do {{site_name}} fizeram {{number_of_requests}} pedidos, incluindo:"
msgid "{{thing_changed}} was changed from <code>{{from_value}}</code> to <code>{{to_value}}</code>"
msgstr ""
msgid "{{title}} - a Freedom of Information request to {{public_body}}"
-msgstr ""
+msgstr "{{title}} - um pedido de acesso à informação para {{public_body}}"
msgid "{{title}} - a batch request"
msgstr ""
msgid "{{user_name}} (Account suspended)"
-msgstr ""
+msgstr "{{user_name}} (Conta suspensa)"
msgid "{{user_name}} - Freedom of Information requests"
-msgstr ""
+msgstr "{{user_name}} - Pedidos de informação"
msgid "{{user_name}} - user profile"
-msgstr ""
+msgstr "{{user_name}} - perfil"
msgid "{{user_name}} added an annotation"
-msgstr ""
+msgstr "{{user_name}} adicionou um comentário"
msgid "{{user_name}} has annotated your {{law_used_short}} \\nrequest. Follow this link to see what they wrote."
-msgstr ""
+msgstr "{{user_name}} fez anotações em seu pedido de\\n{{law_used_short}}. Siga este link para saber o que foi escrito."
msgid "{{user_name}} has used {{site_name}} to send you the message below."
-msgstr ""
+msgstr "{{user_name}} usou o {{site_name}} para enviar-lhe a mensagem abaixo."
msgid "{{user_name}} sent a follow up message to {{public_body}}"
-msgstr ""
+msgstr "{{user_name}} enviou uma mensagem de acompanhamento para {{public_body}}"
msgid "{{user_name}} sent a request to {{public_body}}"
-msgstr ""
+msgstr "{{user_name}} enviou um pedido para {{public_body}}"
msgid "{{user_name}} would like a new authority added to {{site_name}}"
msgstr ""
@@ -3857,10 +3922,10 @@ msgid "{{user_name}} would like the email address for {{public_body_name}} to be
msgstr ""
msgid "{{username}} left an annotation:"
-msgstr ""
+msgstr "{{username}} escreveu um comentário:"
msgid "{{user}} ({{user_admin_link}}) made this {{law_used_full}} request (<a href=\"{{request_admin_url}}\">admin</a>) to {{public_body_link}} (<a href=\"{{public_body_admin_url}}\">admin</a>)"
-msgstr ""
+msgstr "{{user}} ({{user_admin_link}}) fez esse pedido (<a href=\"{{request_admin_url}}\">admin</a>) para {{public_body_link}} (<a href=\"{{public_body_admin_url}}\">admin</a>)"
msgid "{{user}} made this {{law_used_full}} request"
-msgstr ""
+msgstr "{{user}} fez esse pedido de {{law_used_full}}"
diff --git a/locale/ro_RO/app.po b/locale/ro_RO/app.po
index 158ee607e..d8fa1e641 100644
--- a/locale/ro_RO/app.po
+++ b/locale/ro_RO/app.po
@@ -3,20 +3,20 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# andreicristianpetcu <andreicristianpetcu@gmail.com>, 2012-2013
-# andreicristianpetcu <andreicristianpetcu@gmail.com>, 2013
-# andreicristianpetcu <andreicristianpetcu@gmail.com>, 2012
-# CoPyratul <copyratul@gmail.com>, 2012
-# CoPyratul <copyratul@gmail.com>, 2012
-# yozness <cosmin@funkycitizens.org>, 2013
-# elena.calistru <calistru.elena@gmail.com>, 2013
-# elena.calistru <calistru.elena@gmail.com>, 2013
-# Paul Chioveanu <paul_kimmy@yahoo.com>, 2013
-# Paul Chioveanu <paul_kimmy@yahoo.com>, 2013
-# rodicaa <rodxy@yahoo.com>, 2013
-# rodicaa <rodxy@yahoo.com>, 2013
-# rodicaa <rodxy@yahoo.com>, 2013
-# yozness <cosmin@funkycitizens.org>, 2013
+# Andrei Cristian Petcu <andreicristianpetcu@gmail.com>, 2012-2013
+# Andrei Cristian Petcu <andreicristianpetcu@gmail.com>, 2013
+# Andrei Cristian Petcu <andreicristianpetcu@gmail.com>, 2012
+# Claudiu Marginean <copyratul@gmail.com>, 2012
+# Claudiu Marginean <copyratul@gmail.com>, 2012
+# Cosmin Pojoranu <cosmin@funkycitizens.org>, 2013
+# Elena Calistru <calistru.elena@gmail.com>, 2013
+# Elena Calistru <calistru.elena@gmail.com>, 2013
+# paul.chioveanu <paul_kimmy@yahoo.com>, 2013
+# paul.chioveanu <paul_kimmy@yahoo.com>, 2013
+# Rodica Ardelean <rodxy@yahoo.com>, 2013
+# Rodica Ardelean <rodxy@yahoo.com>, 2013
+# Rodica Ardelean <rodxy@yahoo.com>, 2013
+# Cosmin Pojoranu <cosmin@funkycitizens.org>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/sr@latin/app.po b/locale/sr@latin/app.po
index 655f803fd..f773248ba 100644
--- a/locale/sr@latin/app.po
+++ b/locale/sr@latin/app.po
@@ -4,13 +4,13 @@
#
# Translators:
# Goran Rakic <grakic@devbase.net>, 2013
-# vucko <vucko@acm.org>, 2013
-# krledmno1 <krledmno1@gmail.com>, 2013
-# krledmno1 <krledmno1@gmail.com>, 2013
+# Goran Vučković <vucko@acm.org>, 2013
+# Srdjan Krstic <krledmno1@gmail.com>, 2013
+# Srdjan Krstic <krledmno1@gmail.com>, 2013
# Valon <vbrestovci@gmail.com>, 2011-2012
# Valon <vbrestovci@gmail.com>, 2012
# Valon <vbrestovci@gmail.com>, 2011
-# vucko <vucko@acm.org>, 2013
+# Goran Vučković <vucko@acm.org>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/tr/app.po b/locale/tr/app.po
index 3f84fd2ab..c7470b1d4 100644
--- a/locale/tr/app.po
+++ b/locale/tr/app.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# baranozgul <baran@ozgul.net>, 2012
-# baranozgul <baran@ozgul.net>, 2012
+# Baran Ozgul <baran@ozgul.net>, 2012
+# Baran Ozgul <baran@ozgul.net>, 2012
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/locale/uk/app.po b/locale/uk/app.po
index 74ad3ab41..31def22fc 100644
--- a/locale/uk/app.po
+++ b/locale/uk/app.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# ferencbaki89 <ferencbaki89@gmail.com>, 2013
-# ferencbaki89 <ferencbaki89@gmail.com>, 2013
+# Ferents <ferencbaki89@gmail.com>, 2013
+# Ferents <ferencbaki89@gmail.com>, 2013
# hiiri <murahoid@gmail.com>, 2012,2014
# louisecrow <louise@mysociety.org>, 2013
# louisecrow <louise@mysociety.org>, 2013
diff --git a/locale/vi/app.po b/locale/vi/app.po
index 4a071a623..24b2e0d46 100644
--- a/locale/vi/app.po
+++ b/locale/vi/app.po
@@ -4,9 +4,9 @@
#
# Translators:
# Anh Phan <ppanhh@gmail.com>, 2013
-# ppanhh <vietnamesel10n@gmail.com>, 2013
+# Anh Phan <vietnamesel10n@gmail.com>, 2013
# ppanhh <ppanhh@gmail.com>, 2013
-# ppanhh <vietnamesel10n@gmail.com>, 2013
+# Anh Phan <vietnamesel10n@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: alaveteli\n"
diff --git a/script/request-creation-graph b/script/request-creation-graph
index ef1d2cf73..7d347a7d2 100755
--- a/script/request-creation-graph
+++ b/script/request-creation-graph
@@ -17,7 +17,7 @@ cd `dirname $0`
cd ../
source commonlib/shlib/deployfns
-# XXX this is nasty :)
+# TODO: this is nasty :)
OPTION_FOI_DB_HOST=`grep "host:" config/database.yml | head --lines=1 | cut -d ":" -f 2`
OPTION_FOI_DB_PORT=`grep "port:" config/database.yml | head --lines=1 | cut -d ":" -f 2`
OPTION_FOI_DB_NAME=`grep "database:" config/database.yml | head --lines=1 | cut -d ":" -f 2`
diff --git a/script/site-specific-install.sh b/script/site-specific-install.sh
index 7d47a5990..fce230822 100755
--- a/script/site-specific-install.sh
+++ b/script/site-specific-install.sh
@@ -148,7 +148,6 @@ echo -n "Creating /etc/cron.d/alaveteli... "
sed -r \
-e "/foi-purge-varnish/d" \
-e "s,^(MAILTO=).*,\1root@$HOST," \
- -e "s,run-with-lockfile,$REPOSITORY/commonlib/bin/run-with-lockfile.sh,g" \
-i /etc/cron.d/alaveteli
echo $DONE_MSG
diff --git a/script/user-use-graph b/script/user-use-graph
index f508c9cb6..00eeb36f8 100755
--- a/script/user-use-graph
+++ b/script/user-use-graph
@@ -16,7 +16,7 @@ cd `dirname $0`
cd ../
source commonlib/shlib/deployfns
-# XXX this is nasty :)
+# TODO: this is nasty :)
OPTION_FOI_DB_HOST=`grep "host:" config/database.yml | head --lines=1 | cut -d ":" -f 2`
OPTION_FOI_DB_PORT=`grep "port:" config/database.yml | head --lines=1 | cut -d ":" -f 2`
OPTION_FOI_DB_NAME=`grep "database:" config/database.yml | head --lines=1 | cut -d ":" -f 2`
diff --git a/spec/controllers/comment_controller_spec.rb b/spec/controllers/comment_controller_spec.rb
index 5e250f689..480c85ad7 100644
--- a/spec/controllers/comment_controller_spec.rb
+++ b/spec/controllers/comment_controller_spec.rb
@@ -26,7 +26,7 @@ describe CommentController, "when commenting on a request" do
post :new, params
post_redirect = PostRedirect.get_last_post_redirect
response.should redirect_to(:controller => 'user', :action => 'signin', :token => post_redirect.token)
- # post_redirect.post_params.should == params # XXX get this working. there's a : vs '' problem amongst others
+ # post_redirect.post_params.should == params # TODO: get this working. there's a : vs '' problem amongst others
end
it "should create the comment, and redirect to request page when input is good and somebody is logged in" do
diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb
index 7590a5b42..c0a9d57d3 100644
--- a/spec/controllers/general_controller_spec.rb
+++ b/spec/controllers/general_controller_spec.rb
@@ -188,7 +188,7 @@ describe GeneralController, 'when using xapian search' do
it 'should highlight words for a user-only request' do
get :search, :combined => "bob/users"
- assigns[:highlight_words].should == ['bob']
+ assigns[:highlight_words].should == [/\b(bob)\w*\b/iu, /\b(bob)\b/iu]
end
it 'should show spelling corrections for a user-only request' do
diff --git a/spec/controllers/public_body_controller_spec.rb b/spec/controllers/public_body_controller_spec.rb
index 6afbf24d1..f64975580 100644
--- a/spec/controllers/public_body_controller_spec.rb
+++ b/spec/controllers/public_body_controller_spec.rb
@@ -292,6 +292,23 @@ describe PublicBodyController, "when asked to export public bodies as CSV" do
all_data[1].length.should == 11
end
+ it "only includes visible bodies" do
+ get :list_all_csv
+ all_data = CSV.parse(response.body)
+ all_data.any?{ |row| row.include?('Internal admin authority') }.should be_false
+ end
+
+ it "does not include site_administration bodies" do
+ FactoryGirl.create(:public_body,
+ :name => 'Site Admin Body',
+ :tag_string => 'site_administration')
+
+ get :list_all_csv
+
+ all_data = CSV.parse(response.body)
+ all_data.any?{ |row| row.include?('Site Admin Body') }.should be_false
+ end
+
end
describe PublicBodyController, "when showing public body statistics" do
diff --git a/spec/controllers/request_controller_spec.rb b/spec/controllers/request_controller_spec.rb
index 070511fb0..f7c935af3 100644
--- a/spec/controllers/request_controller_spec.rb
+++ b/spec/controllers/request_controller_spec.rb
@@ -77,7 +77,7 @@ describe RequestController, "when changing things that appear on the request pag
PurgeRequest.all().count.should == 0
end
it "should purge the downstream cache when censor rules have changed" do
- # XXX really, CensorRules should execute expiry logic as part
+ # TODO: really, CensorRules should execute expiry logic as part
# of the after_save of the model. Currently this is part of
# the AdminCensorRuleController logic, so must be tested from
# there. Leaving this stub test in place as a reminder
@@ -643,7 +643,7 @@ describe RequestController, "when showing one request" do
ir = info_requests(:fancy_dog_request)
receive_incoming_mail('incoming-request-two-same-name.email', ir.incoming_email)
- # XXX this is horrid, but don't know a better way. If we
+ # TODO: this is horrid, but don't know a better way. If we
# don't do this, the info_request_event to which the
# info_request is attached still uses the unmodified
# version from the fixture.
@@ -900,7 +900,7 @@ describe RequestController, "when handling prominence" do
end
-# XXX do this for invalid ids
+# TODO: do this for invalid ids
# it "should render 404 file" do
# response.should render_template("#{Rails.root}/public/404.html")
# response.headers["Status"].should == "404 Not Found"
@@ -923,7 +923,6 @@ describe RequestController, "when searching for an authority" do
end
it "should return matching bodies" do
-
session[:user_id] = @user.id
get :select_authority, :query => "Quango"
@@ -1004,7 +1003,7 @@ describe RequestController, "when creating a new request" do
post :new, params
post_redirect = PostRedirect.get_last_post_redirect
response.should redirect_to(:controller => 'user', :action => 'signin', :token => post_redirect.token)
- # post_redirect.post_params.should == params # XXX get this working. there's a : vs '' problem amongst others
+ # post_redirect.post_params.should == params # TODO: get this working. there's a : vs '' problem amongst others
end
it 'redirects to the frontpage if the action is sent the invalid
@@ -1804,7 +1803,7 @@ describe RequestController, "when sending a followup message" do
session[:user_id] = users(:bob_smith_user).id
post :show_response, :outgoing_message => { :body => "", :what_doing => 'normal_sort'}, :id => info_requests(:fancy_dog_request).id, :incoming_message_id => incoming_messages(:useless_incoming_message), :submitted_followup => 1
- # XXX how do I check the error message here?
+ # TODO: how do I check the error message here?
response.should render_template('show_response')
end
@@ -1854,13 +1853,13 @@ describe RequestController, "when sending a followup message" do
# second time should give an error
post :show_response, :outgoing_message => { :body => "Stop repeating yourself!", :what_doing => 'normal_sort' }, :id => info_requests(:fancy_dog_request).id, :incoming_message_id => incoming_messages(:useless_incoming_message), :submitted_followup => 1
- # XXX how do I check the error message here?
+ # TODO: how do I check the error message here?
response.should render_template('show_response')
end
end
-# XXX Stuff after here should probably be in request_mailer_spec.rb - but then
+# TODO: Stuff after here should probably be in request_mailer_spec.rb - but then
# it can't check the URLs in the emails I don't think, ugh.
describe RequestController, "sending overdue request alerts" do
@@ -1889,7 +1888,7 @@ describe RequestController, "sending overdue request alerts" do
mail_token = $2
session[:user_id].should be_nil
- controller.test_code_redirect_by_email_token(mail_token, self) # XXX hack to avoid having to call User controller for email link
+ controller.test_code_redirect_by_email_token(mail_token, self) # TODO: hack to avoid having to call User controller for email link
session[:user_id].should == info_requests(:naughty_chicken_request).user.id
response.should render_template('show_response')
@@ -1946,7 +1945,7 @@ describe RequestController, "sending overdue request alerts" do
mail_token = $2
session[:user_id].should be_nil
- controller.test_code_redirect_by_email_token(mail_token, self) # XXX hack to avoid having to call User controller for email link
+ controller.test_code_redirect_by_email_token(mail_token, self) # TODO: hack to avoid having to call User controller for email link
session[:user_id].should == info_requests(:naughty_chicken_request).user.id
response.should render_template('show_response')
@@ -2028,12 +2027,12 @@ describe RequestController, "sending unclassified new response reminder alerts"
mail_token = $2
session[:user_id].should be_nil
- controller.test_code_redirect_by_email_token(mail_token, self) # XXX hack to avoid having to call User controller for email link
+ controller.test_code_redirect_by_email_token(mail_token, self) # TODO: hack to avoid having to call User controller for email link
session[:user_id].should == info_requests(:fancy_dog_request).user.id
response.should render_template('show')
assigns[:info_request].should == info_requests(:fancy_dog_request)
- # XXX should check anchor tag here :) that it goes to last new response
+ # TODO: should check anchor tag here :) that it goes to last new response
end
end
@@ -2064,7 +2063,7 @@ describe RequestController, "clarification required alerts" do
mail_token = $2
session[:user_id].should be_nil
- controller.test_code_redirect_by_email_token(mail_token, self) # XXX hack to avoid having to call User controller for email link
+ controller.test_code_redirect_by_email_token(mail_token, self) # TODO: hack to avoid having to call User controller for email link
session[:user_id].should == info_requests(:fancy_dog_request).user.id
response.should render_template('show_response')
diff --git a/spec/controllers/track_controller_spec.rb b/spec/controllers/track_controller_spec.rb
index d2b45b6bf..29f5c7fe1 100644
--- a/spec/controllers/track_controller_spec.rb
+++ b/spec/controllers/track_controller_spec.rb
@@ -122,11 +122,11 @@ describe TrackController, "when sending alerts for a track" do
mail.body.should =~ /This a the daftest comment the world has ever seen/ # comment text included
# Check subscription managing link
-# XXX We can't do this, as it is redirecting to another controller. I'm
+# TODO: We can't do this, as it is redirecting to another controller. I'm
# apparently meant to be writing controller unit tests here, not functional
# tests. Bah, I so don't care, bit of an obsessive constraint.
# session[:user_id].should be_nil
-# controller.test_code_redirect_by_email_token(mail_token, self) # XXX hack to avoid having to call User controller for email link
+# controller.test_code_redirect_by_email_token(mail_token, self) # TODO: hack to avoid having to call User controller for email link
# session[:user_id].should == users(:silly_name_user).id
#
# response.should render_template('users/show')
@@ -173,7 +173,7 @@ describe TrackController, "when viewing RSS feed for a track" do
get :track_request, :feed => 'feed', :url_title => track_thing.info_request.url_title
response.should render_template('track/atom_feed')
response.content_type.should == 'application/atom+xml'
- # XXX should check it is an atom.builder type being rendered, not sure how to
+ # TODO: should check it is an atom.builder type being rendered, not sure how to
assigns[:xapian_object].matches_estimated.should == 3
assigns[:xapian_object].results.size.should == 3
diff --git a/spec/controllers/user_controller_spec.rb b/spec/controllers/user_controller_spec.rb
index cf361d898..6ecdf1ad4 100644
--- a/spec/controllers/user_controller_spec.rb
+++ b/spec/controllers/user_controller_spec.rb
@@ -1,7 +1,7 @@
# coding: utf-8
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-# XXX Use route_for or params_from to check /c/ links better
+# TODO: Use route_for or params_from to check /c/ links better
# http://rspec.rubyforge.org/rspec-rails/1.1.12/classes/Spec/Rails/Example/ControllerExampleGroup.html
describe UserController, "when redirecting a show request to a canonical url" do
@@ -327,7 +327,7 @@ describe UserController, "when signing up" do
deliveries[0].body.should match(/when\s+you\s+already\s+have\s+an/)
end
- # XXX need to do bob@localhost signup and check that sends different email
+ # TODO: need to do bob@localhost signup and check that sends different email
end
describe UserController, "when signing out" do
@@ -380,7 +380,7 @@ describe UserController, "when sending another user a message" do
mail = deliveries[0]
mail.body.should include("Bob Smith has used #{AlaveteliConfiguration::site_name} to send you the message below")
mail.body.should include("Just a test!")
- #mail.to_addrs.first.to_s.should == users(:silly_name_user).name_and_email # XXX fix some nastiness with quoting name_and_email
+ #mail.to_addrs.first.to_s.should == users(:silly_name_user).name_and_email # TODO: fix some nastiness with quoting name_and_email
mail.from_addrs.first.to_s.should == users(:bob_smith_user).email
end
@@ -651,7 +651,7 @@ describe UserController, "when using profile photos" do
@user.profile_photo.should_not be_nil
end
- # XXX todo check the two stage javascript cropping (above only tests one stage non-javascript one)
+ # TODO: todo check the two stage javascript cropping (above only tests one stage non-javascript one)
end
describe UserController, "when showing JSON version for API" do
diff --git a/spec/helpers/date_time_helper_spec.rb b/spec/helpers/date_time_helper_spec.rb
new file mode 100644
index 000000000..c4fdee1d1
--- /dev/null
+++ b/spec/helpers/date_time_helper_spec.rb
@@ -0,0 +1,71 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+describe DateTimeHelper do
+
+ include DateTimeHelper
+
+ describe :simple_date do
+
+ it 'formats a date in html by default' do
+ time = Time.utc(2012, 11, 07, 21, 30, 26)
+ self.should_receive(:simple_date_html).with(time)
+ simple_date(time)
+ end
+
+ it 'formats a date in the specified format' do
+ time = Time.utc(2012, 11, 07, 21, 30, 26)
+ self.should_receive(:simple_date_text).with(time)
+ simple_date(time, :format => :text)
+ end
+
+ it 'raises an argument error if given an unrecognized format' do
+ time = Time.utc(2012, 11, 07, 21, 30, 26)
+ expect { simple_date(time, :format => :unknown) }.to raise_error(ArgumentError)
+ end
+
+ end
+
+ describe :simple_date_html do
+
+ it 'formats a date in a time tag' do
+ Time.use_zone('London') do
+ time = Time.utc(2012, 11, 07, 21, 30, 26)
+ expected = %Q(<time datetime="2012-11-07T21:30:26+00:00" title="2012-11-07 21:30:26 +0000">November 07, 2012</time>)
+ simple_date_html(time).should == expected
+ end
+ end
+
+ end
+
+ describe :simple_date_text do
+
+ it 'should respect time zones' do
+ Time.use_zone('Australia/Sydney') do
+ simple_date_text(Time.utc(2012, 11, 07, 21, 30, 26)).should == 'November 08, 2012'
+ end
+ end
+
+ it 'should handle Date objects' do
+ simple_date_text(Date.new(2012, 11, 21)).should == 'November 21, 2012'
+ end
+
+ end
+
+ describe :simple_time do
+
+ it 'returns 00:00:00 for a date' do
+ simple_time(Date.new(2012, 11, 21)).should == '00:00:00'
+ end
+
+ it 'returns the time component of a datetime' do
+ date = DateTime.new(2012, 11, 21, 10, 34, 56)
+ simple_time(date).should == '10:34:56'
+ end
+
+ it 'returns the time component of a time' do
+ time = Time.utc(2000, 'jan', 1, 20, 15, 1)
+ simple_time(time).should == '20:15:01'
+ end
+
+ end
+end
diff --git a/spec/helpers/highlight_helper_spec.rb b/spec/helpers/highlight_helper_spec.rb
new file mode 100644
index 000000000..e1be7e153
--- /dev/null
+++ b/spec/helpers/highlight_helper_spec.rb
@@ -0,0 +1,247 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+describe HighlightHelper do
+ include HighlightHelper
+
+ describe :highlight_and_excerpt do
+
+ it 'excerpts text and highlights phrases' do
+ text = "Quentin Nobble-Boston, Permanent Under-Secretary, Department for Humpadinking"
+ phrases = ['humpadinking']
+ expected = '...Department for <span class="highlight">Humpadinking</span>'
+ highlight_and_excerpt(text, phrases, 15).should == expected
+ end
+
+ it 'excerpts text and highlights matches' do
+ text = "Quentin Nobble-Boston, Permanent Under-Secretary, Department for Humpadinking"
+ matches = [/\bhumpadink\w*\b/iu]
+ expected = '...Department for <span class="highlight">Humpadinking</span>'
+ highlight_and_excerpt(text, matches, 15).should == expected
+ end
+
+ context 'multiple matches' do
+
+ it 'highlights multiple matches' do
+ text = <<-EOF
+Quentin Nobble-Boston, Permanent Under-Secretary, Department for Humpadinking
+decided to visit Humpadink so that he could be with the Humpadinks
+EOF
+
+ expected = <<-EOF
+Quentin Nobble-Boston, Permanent Under-Secretary, Department for <span class="highlight">Humpadinking</span>
+decided to visit <span class="highlight">Humpadink</span> so that he could be with the <span class="highlight">Humpadinks</span>
+EOF
+ text.chomp!
+ expected.chomp!
+ matches = [/\b(humpadink\w*)\b/iu]
+ highlight_and_excerpt(text, matches, 1000).should == expected
+ end
+
+ it 'bases the split on the first match' do
+ text = "Quentin Nobble-Boston, Permanent Under-Secretary," \
+ "Department for Humpadinking decided to visit Humpadink" \
+ "so that he could be with the Humpadinks"
+
+ expected = "...Department for <span class=\"highlight\">" \
+ "Humpadinking</span> decided to vis..."
+
+ matches = [/\b(humpadink\w*)\b/iu]
+ highlight_and_excerpt(text, matches, 15).should == expected
+ end
+
+ end
+
+ end
+
+ describe :highlight_matches do
+
+ it 'highlights' do
+ assert_equal(
+ "This is a <mark>beautiful</mark> morning",
+ highlight_matches("This is a beautiful morning", "beautiful")
+ )
+
+ assert_equal(
+ "This is a <mark>beautiful</mark> morning, but also a <mark>beautiful</mark> day",
+ highlight_matches("This is a beautiful morning, but also a beautiful day", "beautiful")
+ )
+
+ assert_equal(
+ "This is a <b>beautiful</b> morning, but also a <b>beautiful</b> day",
+ highlight_matches("This is a beautiful morning, but also a beautiful day", "beautiful", :highlighter => '<b>\1</b>')
+ )
+
+ assert_equal(
+ "This text is not changed because we supplied an empty phrase",
+ highlight_matches("This text is not changed because we supplied an empty phrase", nil)
+ )
+
+ assert_equal ' ', highlight_matches(' ', 'blank text is returned verbatim')
+ end
+
+ it 'sanitizes input' do
+ assert_equal(
+ "This is a <mark>beautiful</mark> morning",
+ highlight_matches("This is a beautiful morning<script>code!</script>", "beautiful")
+ )
+ end
+
+ it 'doesnt sanitize when the sanitize option is false' do
+ assert_equal(
+ "This is a <mark>beautiful</mark> morning<script>code!</script>",
+ highlight_matches("This is a beautiful morning<script>code!</script>", "beautiful", :sanitize => false)
+ )
+ end
+
+ it 'highlights using regexp' do
+ assert_equal(
+ "This is a <mark>beautiful!</mark> morning",
+ highlight_matches("This is a beautiful! morning", "beautiful!")
+ )
+
+ assert_equal(
+ "This is a <mark>beautiful! morning</mark>",
+ highlight_matches("This is a beautiful! morning", "beautiful! morning")
+ )
+
+ assert_equal(
+ "This is a <mark>beautiful? morning</mark>",
+ highlight_matches("This is a beautiful? morning", "beautiful? morning")
+ )
+ end
+
+ it 'accepts regex' do
+ assert_equal("This day was challenging for judge <mark>Allen</mark> and his colleagues.",
+ highlight_matches("This day was challenging for judge Allen and his colleagues.", /\ballen\b/i))
+ end
+
+ it 'highlights multiple phrases in one pass' do
+ assert_equal %(<em>wow</em> <em>em</em>), highlight_matches('wow em', %w(wow em), :highlighter => '<em>\1</em>')
+ end
+
+ it 'highlights with html' do
+ assert_equal(
+ "<p>This is a <mark>beautiful</mark> morning, but also a <mark>beautiful</mark> day</p>",
+ highlight_matches("<p>This is a beautiful morning, but also a beautiful day</p>", "beautiful")
+ )
+ assert_equal(
+ "<p>This is a <em><mark>beautiful</mark></em> morning, but also a <mark>beautiful</mark> day</p>",
+ highlight_matches("<p>This is a <em>beautiful</em> morning, but also a beautiful day</p>", "beautiful")
+ )
+ assert_equal(
+ "<p>This is a <em class=\"error\"><mark>beautiful</mark></em> morning, but also a <mark>beautiful</mark> <span class=\"last\">day</span></p>",
+ highlight_matches("<p>This is a <em class=\"error\">beautiful</em> morning, but also a beautiful <span class=\"last\">day</span></p>", "beautiful")
+ )
+ assert_equal(
+ "<p class=\"beautiful\">This is a <mark>beautiful</mark> morning, but also a <mark>beautiful</mark> day</p>",
+ highlight_matches("<p class=\"beautiful\">This is a beautiful morning, but also a beautiful day</p>", "beautiful")
+ )
+ assert_equal(
+ "<p>This is a <mark>beautiful</mark> <a href=\"http://example.com/beautiful#top?what=beautiful%20morning&amp;when=now+then\">morning</a>, but also a <mark>beautiful</mark> day</p>",
+ highlight_matches("<p>This is a beautiful <a href=\"http://example.com/beautiful\#top?what=beautiful%20morning&when=now+then\">morning</a>, but also a beautiful day</p>", "beautiful")
+ )
+ assert_equal(
+ "<div>abc <b>div</b></div>",
+ highlight_matches("<div>abc div</div>", "div", :highlighter => '<b>\1</b>')
+ )
+ end
+
+ it 'doesnt modify the options hash' do
+ options = { :highlighter => '<b>\1</b>', :sanitize => false }
+ passed_options = options.dup
+ highlight_matches("<div>abc div</div>", "div", passed_options)
+ assert_equal options, passed_options
+ end
+
+ it 'highlights with a block' do
+ assert_equal(
+ "<b>one</b> <b>two</b> <b>three</b>",
+ highlight_matches("one two three", ["one", "two", "three"]) { |word| "<b>#{word}</b>" }
+ )
+ end
+
+ end
+
+ describe :excerpt do
+
+ it 'excerpts' do
+ assert_equal("...is a beautiful morn...", excerpt("This is a beautiful morning", "beautiful", :radius => 5))
+ assert_equal("This is a...", excerpt("This is a beautiful morning", "this", :radius => 5))
+ assert_equal("...iful morning", excerpt("This is a beautiful morning", "morning", :radius => 5))
+ assert_nil excerpt("This is a beautiful morning", "day")
+ end
+
+ it 'is not html safe' do
+ assert !excerpt('This is a beautiful! morning', 'beautiful', :radius => 5).html_safe?
+ end
+
+ it 'excerpts borderline cases' do
+ assert_equal("", excerpt("", "", :radius => 0))
+ assert_equal("a", excerpt("a", "a", :radius => 0))
+ assert_equal("...b...", excerpt("abc", "b", :radius => 0))
+ assert_equal("abc", excerpt("abc", "b", :radius => 1))
+ assert_equal("abc...", excerpt("abcd", "b", :radius => 1))
+ assert_equal("...abc", excerpt("zabc", "b", :radius => 1))
+ assert_equal("...abc...", excerpt("zabcd", "b", :radius => 1))
+ assert_equal("zabcd", excerpt("zabcd", "b", :radius => 2))
+
+ # excerpt strips the resulting string before ap-/prepending excerpt_string.
+ # whether this behavior is meaningful when excerpt_string is not to be
+ # appended is questionable.
+ assert_equal("zabcd", excerpt(" zabcd ", "b", :radius => 4))
+ assert_equal("...abc...", excerpt("z abc d", "b", :radius => 1))
+ end
+
+ it 'excerpts with regex' do
+ assert_equal('...is a beautiful! mor...', excerpt('This is a beautiful! morning', 'beautiful', :radius => 5))
+ assert_equal('...is a beautiful? mor...', excerpt('This is a beautiful? morning', 'beautiful', :radius => 5))
+ assert_equal('...is a beautiful? mor...', excerpt('This is a beautiful? morning', /\bbeau\w*\b/i, :radius => 5))
+ assert_equal('...is a beautiful? mor...', excerpt('This is a beautiful? morning', /\b(beau\w*)\b/i, :radius => 5))
+ assert_equal("...udge Allen and...", excerpt("This day was challenging for judge Allen and his colleagues.", /\ballen\b/i, :radius => 5))
+ assert_equal("...judge Allen and...", excerpt("This day was challenging for judge Allen and his colleagues.", /\ballen\b/i, :radius => 1, :separator => ' '))
+ assert_equal("...was challenging for...", excerpt("This day was challenging for judge Allen and his colleagues.", /\b(\w*allen\w*)\b/i, :radius => 5))
+ end
+
+ it 'excerpts with omission' do
+ assert_equal("[...]is a beautiful morn[...]", excerpt("This is a beautiful morning", "beautiful", :omission => "[...]",:radius => 5))
+ assert_equal(
+ "This is the ultimate supercalifragilisticexpialidoceous very looooooooooooooooooong looooooooooooong beautiful morning with amazing sunshine and awesome tempera[...]",
+ excerpt("This is the ultimate supercalifragilisticexpialidoceous very looooooooooooooooooong looooooooooooong beautiful morning with amazing sunshine and awesome temperatures. So what are you gonna do about it?", "very",
+ :omission => "[...]")
+ )
+ end
+
+ it 'excerpts with utf8' do
+ if RUBY_VERSION.to_f >= 1.9
+ assert_equal("...\357\254\203ciency could not be...".force_encoding(Encoding::UTF_8), excerpt("That's why e\357\254\203ciency could not be helped".force_encoding(Encoding::UTF_8), 'could', :radius => 8))
+ else
+ assert_equal("...\357\254\203ciency could not be...", excerpt("That's why e\357\254\203ciency could not be helped", 'could', :radius => 8))
+ end
+ end
+
+ it 'doesnt modify the options hash' do
+ options = { :omission => "[...]",:radius => 5 }
+ passed_options = options.dup
+ excerpt("This is a beautiful morning", "beautiful", passed_options)
+ assert_equal options, passed_options
+ end
+
+ it 'excerpts with separator' do
+ options = { :separator => ' ', :radius => 1 }
+ assert_equal('...a very beautiful...', excerpt('This is a very beautiful morning', 'very', options))
+ assert_equal('This is...', excerpt('This is a very beautiful morning', 'this', options))
+ assert_equal('...beautiful morning', excerpt('This is a very beautiful morning', 'morning', options))
+
+ options = { :separator => "\n", :radius => 0 }
+ assert_equal("...very long...", excerpt("my very\nvery\nvery long\nstring", 'long', options))
+
+ options = { :separator => "\n", :radius => 1 }
+ assert_equal("...very\nvery long\nstring", excerpt("my very\nvery\nvery long\nstring", 'long', options))
+
+ assert_equal excerpt('This is a beautiful morning', 'a'),
+ excerpt('This is a beautiful morning', 'a', :separator => nil)
+ end
+
+ end
+
+end
diff --git a/spec/helpers/link_to_helper_spec.rb b/spec/helpers/link_to_helper_spec.rb
index 4a01ec683..261e1ef3e 100644
--- a/spec/helpers/link_to_helper_spec.rb
+++ b/spec/helpers/link_to_helper_spec.rb
@@ -20,6 +20,82 @@ describe LinkToHelper do
end
+ describe 'when linking to new incoming messages' do
+
+ before do
+ @info_request = mock_model(InfoRequest, :id => 123, :url_title => 'test_title')
+ @incoming_message = mock_model(IncomingMessage, :id => 32, :info_request => @info_request)
+ end
+
+ context 'for external links' do
+
+ it 'generates the url to the info request of the message' do
+ incoming_message_url(@incoming_message).should include('http://test.host/request/test_title')
+ end
+
+ it 'includes an anchor to the new message' do
+ incoming_message_url(@incoming_message).should include('#incoming-32')
+ end
+
+ it 'does not cache by default' do
+ incoming_message_url(@incoming_message).should_not include('nocache=incoming-32')
+ end
+
+ it 'includes a cache busting parameter if set' do
+ incoming_message_url(@incoming_message, :cachebust => true).should include('nocache=incoming-32')
+ end
+
+ end
+
+ context 'for internal links' do
+
+ it 'generates the incoming_message_url with the path only' do
+ expected = '/request/test_title#incoming-32'
+ incoming_message_path(@incoming_message).should == expected
+ end
+
+ end
+
+ end
+
+ describe 'when linking to new outgoing messages' do
+
+ before do
+ @info_request = mock_model(InfoRequest, :id => 123, :url_title => 'test_title')
+ @outgoing_message = mock_model(OutgoingMessage, :id => 32, :info_request => @info_request)
+ end
+
+ context 'for external links' do
+
+ it 'generates the url to the info request of the message' do
+ outgoing_message_url(@outgoing_message).should include('http://test.host/request/test_title')
+ end
+
+ it 'includes an anchor to the new message' do
+ outgoing_message_url(@outgoing_message).should include('#outgoing-32')
+ end
+
+ it 'does not cache by default' do
+ outgoing_message_url(@outgoing_message).should_not include('nocache=outgoing-32')
+ end
+
+ it 'includes a cache busting parameter if set' do
+ outgoing_message_url(@outgoing_message, :cachebust => true).should include('nocache=outgoing-32')
+ end
+
+ end
+
+ context 'for internal links' do
+
+ it 'generates the outgoing_message_url with the path only' do
+ expected = '/request/test_title#outgoing-32'
+ outgoing_message_path(@outgoing_message).should == expected
+ end
+
+ end
+
+ end
+
describe 'when displaying a user link for a request' do
context "for external requests" do
@@ -69,51 +145,4 @@ describe LinkToHelper do
end
- describe 'simple_date' do
-
- it 'formats a date in html by default' do
- time = Time.utc(2012, 11, 07, 21, 30, 26)
- self.should_receive(:simple_date_html).with(time)
- simple_date(time)
- end
-
- it 'formats a date in the specified format' do
- time = Time.utc(2012, 11, 07, 21, 30, 26)
- self.should_receive(:simple_date_text).with(time)
- simple_date(time, :format => :text)
- end
-
- it 'raises an argument error if given an unrecognized format' do
- time = Time.utc(2012, 11, 07, 21, 30, 26)
- expect { simple_date(time, :format => :unknown) }.to raise_error(ArgumentError)
- end
-
- end
-
- describe 'simple_date_html' do
-
- it 'formats a date in a time tag' do
- Time.use_zone('London') do
- time = Time.utc(2012, 11, 07, 21, 30, 26)
- expected = "<time datetime=\"2012-11-07T21:30:26+00:00\" title=\"2012-11-07 21:30:26 +0000\">November 07, 2012</time>"
- simple_date_html(time).should == expected
- end
- end
-
- end
-
- describe 'simple_date_text' do
-
- it 'should respect time zones' do
- Time.use_zone('Australia/Sydney') do
- simple_date_text(Time.utc(2012, 11, 07, 21, 30, 26)).should == 'November 08, 2012'
- end
- end
-
- it 'should handle Date objects' do
- simple_date_text(Date.new(2012, 11, 21)).should == 'November 21, 2012'
- end
-
- end
-
end
diff --git a/spec/integration/xapian_search_highlighting_spec.rb b/spec/integration/xapian_search_highlighting_spec.rb
new file mode 100644
index 000000000..65a34cf91
--- /dev/null
+++ b/spec/integration/xapian_search_highlighting_spec.rb
@@ -0,0 +1,39 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+describe 'highlighting search results' do
+ include HighlightHelper
+
+ it 'ignores stopwords' do
+ phrase = 'department of humpadinking'
+ search = ActsAsXapian::Search.new([PublicBody], phrase, :limit => 1)
+ matches = search.words_to_highlight(:regex => true)
+ highlight_matches(phrase, matches).should == '<mark>department</mark> of <mark>humpadinking</mark>'
+ end
+
+ it 'ignores case' do
+ search_phrase = 'department of humpadinking'
+ search = ActsAsXapian::Search.new([PublicBody], search_phrase, :limit => 1)
+ matches = search.words_to_highlight(:regex => true)
+ highlight_matches('Department of Humpadinking', matches).should == '<mark>Department</mark> of <mark>Humpadinking</mark>'
+ end
+
+ it 'highlights stemmed words' do
+ phrase = 'department'
+ search = ActsAsXapian::Search.new([PublicBody], phrase, :limit => 1)
+ matches = search.words_to_highlight(:regex => true)
+
+ search.words_to_highlight(:regex => false).should == ['depart']
+ highlight_matches(phrase, matches).should == '<mark>department</mark>'
+ end
+
+ it 'highlights stemmed words even if the stem is unhelpful' do
+ # Stemming returns 'bore' as the word to highlight which can't be
+ # matched in the original phrase.
+ phrase = 'boring'
+ search = ActsAsXapian::Search.new([PublicBody], phrase, :limit => 1)
+ matches = search.words_to_highlight(:regex => true, :include_original => true)
+
+ highlight_matches(phrase, matches).should == '<mark>boring</mark>'
+ end
+
+end
diff --git a/spec/lib/public_body_csv_spec.rb b/spec/lib/public_body_csv_spec.rb
new file mode 100644
index 000000000..e3cc4be6e
--- /dev/null
+++ b/spec/lib/public_body_csv_spec.rb
@@ -0,0 +1,114 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+describe PublicBodyCSV do
+
+ describe '.default_fields' do
+ defaults = [:name,
+ :short_name,
+ :url_name,
+ :tag_string,
+ :calculated_home_page,
+ :publication_scheme,
+ :disclosure_log,
+ :notes,
+ :created_at,
+ :updated_at,
+ :version]
+ PublicBodyCSV.default_fields.should == defaults
+ end
+
+ describe '.default_headers' do
+ defaults = ['Name',
+ 'Short name',
+ 'URL name',
+ 'Tags',
+ 'Home page',
+ 'Publication scheme',
+ 'Disclosure log',
+ 'Notes',
+ 'Created at',
+ 'Updated at',
+ 'Version']
+ PublicBodyCSV.default_headers.should == defaults
+ end
+
+ describe :fields do
+
+ it 'has a default set of fields' do
+ csv = PublicBodyCSV.new
+ csv.fields.should == PublicBodyCSV.default_fields
+ end
+
+ # DO NOT include request_email (we don't want to make it
+ # easy to spam all authorities with requests)
+ it 'does not include the request_email attribute' do
+ csv = PublicBodyCSV.new
+ csv.fields.should_not include(:request_email)
+ end
+
+ it 'allows custom fields to be set on instantiation' do
+ custom_fields = [:name, :short_name]
+ csv = PublicBodyCSV.new(:fields => custom_fields)
+ csv.fields.should == custom_fields
+ end
+
+ end
+
+ describe :headers do
+
+ it 'has a default set of headers' do
+ csv = PublicBodyCSV.new
+ csv.headers.should == PublicBodyCSV.default_headers
+ end
+
+ it 'allows custom headers to be set on instantiation' do
+ custom_headers = ['Name', 'Short Name']
+ csv = PublicBodyCSV.new(:headers => custom_headers)
+ csv.headers.should == custom_headers
+ end
+
+ end
+
+ describe :rows do
+
+ it 'is empty on instantiation' do
+ csv = PublicBodyCSV.new
+ csv.rows.should be_empty
+ end
+
+ end
+
+ describe :<< do
+
+ it 'adds an elements attributes to the rows collection' do
+ csv = PublicBodyCSV.new
+ expected = ["Ministry of Silly Walks,MSW,msw,useless_agency,http://www.localhost,\"\",\"\",You know the one.,2007-10-25 10:51:01 UTC,2007-10-25 10:51:01 UTC,1"]
+ csv << PublicBody.find(5)
+ csv.rows.should == expected
+ end
+
+ end
+
+ describe :generate do
+
+ it 'generates the csv' do
+ expected = <<-CSV
+Name,Short name,URL name,Home page,Publication scheme,Disclosure log,Notes,Created at,Updated at,Version
+Department for Humpadinking,DfH,dfh,http://www.localhost,"","",An albatross told me!!!,2007-10-25 10:51:01 UTC,2007-10-25 10:51:01 UTC,2
+Department of Loneliness,DoL,lonely,http://www.localhost,"","",A very lonely public body that no one has corresponded with,2011-01-26 14:11:02 UTC,2011-01-26 14:11:02 UTC,1
+CSV
+
+ # Miss out the tags field because the specs keep changing the order
+ # that the tags are returned in
+ fields = [:name, :short_name, :url_name, :calculated_home_page, :publication_scheme, :disclosure_log, :notes, :created_at, :updated_at, :version]
+ headers = ['Name', 'Short name', 'URL name', 'Home page', 'Publication scheme', 'Disclosure log', 'Notes', 'Created at', 'Updated at', 'Version']
+
+ csv = PublicBodyCSV.new(:fields => fields, :headers => headers)
+ csv << PublicBody.where(:name => 'Department for Humpadinking').first
+ csv << PublicBody.where(:name => 'Department of Loneliness').first
+ csv.generate.should == expected
+ end
+
+ end
+
+end
diff --git a/spec/models/customstates.rb b/spec/models/customstates.rb
index bffbe86fb..942e1fcde 100644
--- a/spec/models/customstates.rb
+++ b/spec/models/customstates.rb
@@ -24,7 +24,7 @@ module InfoRequestCustomStates
end
def date_deadline_extended
- # XXX shouldn't this be 15 days after the date the status was
+ # TODO: shouldn't this be 15 days after the date the status was
# changed to "deadline extended"? Or perhaps 15 days ater the
# initial request due date?
return Holiday.due_date_from_working_days(self.date_response_required_by, 15)
diff --git a/spec/models/public_body_spec.rb b/spec/models/public_body_spec.rb
index 38e31783d..a7544c218 100644
--- a/spec/models/public_body_spec.rb
+++ b/spec/models/public_body_spec.rb
@@ -493,7 +493,7 @@ describe PublicBody, " when loading CSV files" do
PublicBody.count.should == original_count + 3
- # XXX Not sure why trying to do a I18n.with_locale fails here. Seems related to
+ # TODO: Not sure why trying to do a I18n.with_locale fails here. Seems related to
# the way categories are loaded every time from the PublicBody class. For now we just
# test some translation was done.
body = PublicBody.find_by_name('North West Fake Authority')
@@ -594,6 +594,20 @@ describe PublicBody do
end
+ describe :site_administration? do
+
+ it 'is true when the body has the site_administration tag' do
+ p = FactoryGirl.build(:public_body, :tag_string => 'site_administration')
+ p.site_administration?.should be_true
+ end
+
+ it 'is false when the body does not have the site_administration tag' do
+ p = FactoryGirl.build(:public_body)
+ p.site_administration?.should be_false
+ end
+
+ end
+
end
describe PublicBody, " when override all public body request emails set" do
diff --git a/spec/models/raw_email_spec.rb b/spec/models/raw_email_spec.rb
index f86b35e99..aa82b0bc3 100644
--- a/spec/models/raw_email_spec.rb
+++ b/spec/models/raw_email_spec.rb
@@ -23,7 +23,7 @@ describe User, "manipulating a raw email" do
@raw_email.data.should == "Hello, world!"
end
- # XXX this test fails, hopefully will be fixed in later Rails.
+ # TODO: this test fails, hopefully will be fixed in later Rails.
# Doesn't matter too much for us for storing raw_emails, it would seem,
# but keep an eye out.
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index c54043092..7dcd3ab8a 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -284,7 +284,7 @@ describe User, " when making name and email address" do
end
end
-# XXX not finished
+# TODO: not finished
describe User, "when setting a profile photo" do
before do
@user = User.new
diff --git a/spec/models/xapian_spec.rb b/spec/models/xapian_spec.rb
index a1e060d8e..678e3a2dc 100644
--- a/spec/models/xapian_spec.rb
+++ b/spec/models/xapian_spec.rb
@@ -380,23 +380,63 @@ describe ActsAsXapian::Search, "#words_to_highlight" do
it "should return a list of words used in the search" do
s = ActsAsXapian::Search.new([PublicBody], "albatross words", :limit => 100)
- s.words_to_highlight.should == ["albatross", "words"]
+ s.words_to_highlight.should == ["albatross", "word"]
end
it "should remove any operators" do
s = ActsAsXapian::Search.new([PublicBody], "albatross words tag:mice", :limit => 100)
- s.words_to_highlight.should == ["albatross", "words"]
+ s.words_to_highlight.should == ["albatross", "word"]
end
- # This is the current behaviour but it seems a little simplistic to me
it "should separate punctuation" do
s = ActsAsXapian::Search.new([PublicBody], "The doctor's patient", :limit => 100)
- s.words_to_highlight.should == ["The", "doctor", "s", "patient"]
+ s.words_to_highlight.should == ["the", "doctor", "patient"].sort
end
it "should handle non-ascii characters" do
s = ActsAsXapian::Search.new([PublicBody], "adatigénylés words tag:mice", :limit => 100)
- s.words_to_highlight.should == ["adatigénylés", "words"]
+ s.words_to_highlight.should == ["adatigénylé", "word"]
+ end
+
+ it "should ignore stopwords" do
+ s = ActsAsXapian::Search.new([PublicBody], "department of humpadinking", :limit => 100)
+ s.words_to_highlight.should_not include('of')
+ end
+
+ it "uses stemming" do
+ s = ActsAsXapian::Search.new([PublicBody], 'department of humpadinking', :limit => 100)
+ s.words_to_highlight.should == ["depart", "humpadink"]
+ end
+
+ it "doesn't stem proper nouns" do
+ s = ActsAsXapian::Search.new([PublicBody], 'department of Humpadinking', :limit => 1)
+ s.words_to_highlight.should == ["depart", "humpadinking"]
+ end
+
+ it "includes the original search terms if requested" do
+ s = ActsAsXapian::Search.new([PublicBody], 'boring', :limit => 1)
+ s.words_to_highlight(:include_original => true).should == ['bore', 'boring']
+ end
+
+ it "does not return duplicate terms" do
+ s = ActsAsXapian::Search.new([PublicBody], 'boring boring', :limit => 1)
+ s.words_to_highlight.should == ['bore']
+ end
+
+ context 'the :regex option' do
+
+ it 'wraps each words in a regex that matches the full word' do
+ expected = [/\b(albatross)\b/iu]
+ s = ActsAsXapian::Search.new([PublicBody], 'Albatross', :limit => 1)
+ s.words_to_highlight(:regex => true).should == expected
+ end
+
+ it 'wraps each stem in a regex' do
+ expected = [/\b(depart)\w*\b/iu]
+ s = ActsAsXapian::Search.new([PublicBody], 'department', :limit => 1)
+ s.words_to_highlight(:regex => true).should == expected
+ end
+
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index e391c97d3..0e3fe35c7 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -123,7 +123,7 @@ Spork.prefork do
end
end
- # XXX No idea what namespace/class/module to put this in
+ # TODO: No idea what namespace/class/module to put this in
# Create a clean xapian index based on the fixture files and the raw_email data.
def create_fixtures_xapian_index
load_raw_emails_data