aboutsummaryrefslogtreecommitdiffstats
path: root/spec/models/public_body_spec.rb
blob: 38e31783d97adf95612362d9e7d618d00a37583d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
# encoding: UTF-8
# == Schema Information
#
# Table name: public_bodies
#
#  id                                     :integer          not null, primary key
#  name                                   :text             not null
#  short_name                             :text             default(""), not null
#  request_email                          :text             not null
#  version                                :integer          not null
#  last_edit_editor                       :string(255)      not null
#  last_edit_comment                      :text             not null
#  created_at                             :datetime         not null
#  updated_at                             :datetime         not null
#  url_name                               :text             not null
#  home_page                              :text             default(""), not null
#  notes                                  :text             default(""), not null
#  first_letter                           :string(255)      not null
#  publication_scheme                     :text             default(""), not null
#  api_key                                :string(255)      not null
#  info_requests_count                    :integer          default(0), not null
#  disclosure_log                         :text             default(""), not null
#  info_requests_successful_count         :integer
#  info_requests_not_held_count           :integer
#  info_requests_overdue_count            :integer
#  info_requests_visible_classified_count :integer
#

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe PublicBody, " using tags" do
    before do
        @public_body = PublicBody.new(:name => 'Aardvark Monitoring Service',
                                    :short_name => 'AMS',
                                    :request_email => 'foo@flourish.org',
                                    :last_edit_editor => 'test',
                                    :last_edit_comment => '')
    end

    it 'should correctly convert a tag string into tags' do
        @public_body.tag_string = 'stilton emmental'
        @public_body.tag_string.should == 'stilton emmental'

        @public_body.has_tag?('stilton').should be_true
        @public_body.has_tag?('emmental').should be_true
        @public_body.has_tag?('jarlsberg').should be_false
    end

    it 'should strip spaces from tag strings' do
        @public_body.tag_string = ' chesire  lancashire'
        @public_body.tag_string.should == 'chesire lancashire'
    end

    it 'should work with other white space, such as tabs and new lines' do
        @public_body.tag_string = "chesire\n\tlancashire"
        @public_body.tag_string.should == 'chesire lancashire'
    end

    it 'changing tags should remove presence of the old ones' do
        @public_body.tag_string = 'stilton'
        @public_body.tag_string.should == 'stilton'

        @public_body.has_tag?('stilton').should be_true
        @public_body.has_tag?('jarlsberg').should be_false

        @public_body.tag_string = 'jarlsberg'
        @public_body.tag_string.should == 'jarlsberg'

        @public_body.has_tag?('stilton').should be_false
        @public_body.has_tag?('jarlsberg').should be_true
    end

    it 'should be able to append tags' do
        @public_body.tag_string.should == ''
        @public_body.add_tag_if_not_already_present('cheddar')

        @public_body.tag_string.should == 'cheddar'
        @public_body.has_tag?('cheddar').should be_true
    end

    it 'should ignore repeat tags' do
        @public_body.tag_string = 'stilton stilton'
        @public_body.tag_string.should == 'stilton'
    end
end

describe PublicBody, " using machine tags" do
    before do
        @public_body = PublicBody.new(:name => 'Aardvark Monitoring Service',
                                    :short_name => 'AMS',
                                    :request_email => 'foo@flourish.org',
                                    :last_edit_editor => 'test',
                                    :last_edit_comment => '')
    end

    it 'should parse machine tags' do
        @public_body.tag_string = 'wondrous cheese:green'
        @public_body.tag_string.should == 'wondrous cheese:green'

        @public_body.has_tag?('cheese:green').should be_false
        @public_body.has_tag?('cheese').should be_true
        @public_body.get_tag_values('cheese').should == ['green']

        @public_body.get_tag_values('wondrous').should == []
        lambda {
            @public_body.get_tag_values('notthere').should raise_error(PublicBody::TagNotFound)
        }
    end

    it 'should cope with colons in value' do
        @public_body.tag_string = 'url:http://www.flourish.org'
        @public_body.tag_string.should == 'url:http://www.flourish.org'

        @public_body.has_tag?('url').should be_true
        @public_body.get_tag_values('url').should == ['http://www.flourish.org']
    end

    it 'should allow multiple tags of the same sort' do
        @public_body.tag_string = 'url:http://www.theyworkforyou.com/ url:http://www.fixmystreet.com/'
        @public_body.has_tag?('url').should be_true
        @public_body.get_tag_values('url').should == ['http://www.theyworkforyou.com/', 'http://www.fixmystreet.com/']
    end
end

describe PublicBody, "when finding_by_tags" do

    before do
         @geraldine = public_bodies(:geraldine_public_body)
         @geraldine.tag_string = 'rabbit'
         @humpadink = public_bodies(:humpadink_public_body)
         @humpadink.tag_string = 'coney:5678 coney:1234'
    end

    it 'should be able to find bodies by string' do
        found = PublicBody.find_by_tag('rabbit')
        found.should == [ @geraldine ]
    end

    it 'should be able to find when there are multiple tags in one body, without returning duplicates' do
        found = PublicBody.find_by_tag('coney')
        found.should == [ @humpadink ]
    end
end

describe PublicBody, " when making up the URL name" do
    before do
        @public_body = PublicBody.new
    end

    it 'should remove spaces, and make lower case' do
        @public_body.name = 'Some Authority'
        @public_body.url_name.should == 'some_authority'
    end

    it 'should not allow a numeric name' do
        @public_body.name = '1234'
        @public_body.url_name.should == 'body'
    end
end

describe PublicBody, " when saving" do
    before do
        @public_body = PublicBody.new
    end

    def set_default_attributes(public_body)
        public_body.name = "Testing Public Body"
        public_body.short_name = "TPB"
        public_body.request_email = "request@localhost"
        public_body.last_edit_editor = "*test*"
        public_body.last_edit_comment = "This is a test"
    end

    it "should not be valid without setting some parameters" do
        @public_body.should_not be_valid
    end

    it "should not be valid with misformatted request email" do
        set_default_attributes(@public_body)
        @public_body.request_email = "requestBOOlocalhost"
        @public_body.should_not be_valid
        @public_body.should have(1).errors_on(:request_email)
    end

    it "should save" do
        set_default_attributes(@public_body)
        @public_body.save!
    end

    it "should update first_letter" do
        set_default_attributes(@public_body)
        @public_body.first_letter.should be_nil
        @public_body.save!
        @public_body.first_letter.should == 'T'
    end

    it "should update first letter, even if it's a multibyte character" do
        pb = PublicBody.new(:name => 'åccents, lower-case',
                            :short_name => 'ALC',
                            :request_email => 'foo@localhost',
                            :last_edit_editor => 'test',
                            :last_edit_comment => '')
        pb.first_letter.should be_nil
        pb.save!
        pb.first_letter.should == 'Å'
    end

    it "should not save if the url_name is already taken" do
        existing = FactoryGirl.create(:public_body)
        pb = PublicBody.new(existing.attributes)
        pb.should have(1).errors_on(:url_name)
    end

    it "should save the name when renaming an existing public body" do
        public_body = public_bodies(:geraldine_public_body)
        public_body.name = "Mark's Public Body"
        public_body.save!

        public_body.name.should == "Mark's Public Body"
    end

    it 'should update the right translation when in a locale with an underscore' do
        AlaveteliLocalization.set_locales('he_IL', 'he_IL')
        public_body = public_bodies(:humpadink_public_body)
        translation_count = public_body.translations.size
        public_body.name = 'Renamed'
        public_body.save!
        public_body.translations.size.should == translation_count
    end

    it 'should not create a new version when nothing has changed' do
        @public_body.versions.size.should == 0
        set_default_attributes(@public_body)
        @public_body.save!
        @public_body.versions.size.should == 1
        @public_body.save!
        @public_body.versions.size.should == 1
    end

    it 'should create a new version if something has changed' do
        @public_body.versions.size.should == 0
        set_default_attributes(@public_body)
        @public_body.save!
        @public_body.versions.size.should == 1
        @public_body.name = 'Test'
        @public_body.save!
        @public_body.versions.size.should == 2
    end

end

describe PublicBody, "when searching" do

    it "should find by existing url name" do
        body = PublicBody.find_by_url_name_with_historic('dfh')
        body.id.should == 3
    end

    it "should find by historic url name" do
        body = PublicBody.find_by_url_name_with_historic('hdink')
        body.id.should == 3
        body.class.to_s.should == 'PublicBody'
    end

    it "should cope with not finding any" do
        body = PublicBody.find_by_url_name_with_historic('idontexist')
        body.should be_nil
    end

    it "should cope with duplicate historic names" do
        body = PublicBody.find_by_url_name_with_historic('dfh')

        # create history with short name "mouse" twice in it
        body.short_name = 'Mouse'
        body.url_name.should == 'mouse'
        body.save!
        body.request_email = 'dummy@localhost'
        body.save!
        # but a different name now
        body.short_name = 'Stilton'
        body.url_name.should == 'stilton'
        body.save!

        # try and find by it
        body = PublicBody.find_by_url_name_with_historic('mouse')
        body.id.should == 3
        body.class.to_s.should == 'PublicBody'
    end

    it "should cope with same url_name across multiple locales" do
        I18n.with_locale(:es) do
            # use the unique spanish name to retrieve and edit
            body = PublicBody.find_by_url_name_with_historic('etgq')
            body.short_name = 'tgq' # Same as english version
            body.save!

            # now try to retrieve it
            body = PublicBody.find_by_url_name_with_historic('tgq')
            body.id.should == public_bodies(:geraldine_public_body).id
            body.name.should == "El A Geraldine Quango"
        end
    end

    it 'should not raise an error on a name with a single quote in it' do
        body = PublicBody.find_by_url_name_with_historic("belfast city council'")
    end
end

describe PublicBody, "when asked for the internal_admin_body" do
    before(:each) do
        # Make sure that there's no internal_admin_body before each of
        # these tests:
        PublicBody.connection.delete("DELETE FROM public_bodies WHERE url_name = 'internal_admin_body'")
        PublicBody.connection.delete("DELETE FROM public_body_translations WHERE url_name = 'internal_admin_body'")
    end

    it "should create the internal_admin_body if it didn't exist" do
        iab = PublicBody.internal_admin_body
        iab.should_not be_nil
    end

    it "should find the internal_admin_body even if the default locale has changed since it was created" do
        with_default_locale("en") do
            I18n.with_locale(:en) do
                iab = PublicBody.internal_admin_body
                iab.should_not be_nil
            end
        end
        with_default_locale("es") do
            I18n.with_locale(:es) do
                iab = PublicBody.internal_admin_body
                iab.should_not be_nil
            end
        end
    end

end


describe PublicBody, " when dealing public body locales" do
    it "shouldn't fail if it internal_admin_body was created in a locale other than the default" do
        # first time, do it with the non-default locale
        I18n.with_locale(:es) do
            PublicBody.internal_admin_body
        end

        # second time
        lambda {PublicBody.internal_admin_body }.should_not raise_error(ActiveRecord::RecordInvalid)
    end
end

describe PublicBody, " when loading CSV files" do
    before(:each) do
        # InternalBody is created the first time it's accessed, which happens sometimes during imports,
        # depending on the tag used. By accessing it here before every test, it doesn't disturb our checks later on
        PublicBody.internal_admin_body
    end

    it "should import even if no email is provided" do
        errors, notes = PublicBody.import_csv("1,aBody", '', 'replace', true, 'someadmin') # true means dry run
        errors.should == []
        notes.size.should == 2
        notes[0].should == "line 1: creating new authority 'aBody' (locale: en):\n\t{\"name\":\"aBody\"}"
        notes[1].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/
    end

    it "should do a dry run successfully" do
        original_count = PublicBody.count

        csv_contents = normalize_string_to_utf8(load_file_fixture("fake-authority-type.csv"))
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', true, 'someadmin') # true means dry run
        errors.should == []
        notes.size.should == 6
        notes[0..4].should == [
            "line 1: creating new authority 'North West Fake Authority' (locale: en):\n\t\{\"name\":\"North West Fake Authority\",\"request_email\":\"north_west_foi@localhost\"\}",
            "line 2: creating new authority 'Scottish Fake Authority' (locale: en):\n\t\{\"name\":\"Scottish Fake Authority\",\"request_email\":\"scottish_foi@localhost\"\}",
            "line 3: creating new authority 'Fake Authority of Northern Ireland' (locale: en):\n\t\{\"name\":\"Fake Authority of Northern Ireland\",\"request_email\":\"ni_foi@localhost\"\}",
            "line 4: creating new authority 'Gobierno de Aragón' (locale: en):\n\t\{\"name\":\"Gobierno de Arag\\u00f3n\",\"request_email\":\"spain_foi@localhost\"}",
            "line 5: creating new authority 'Nordic æøå' (locale: en):\n\t{\"name\":\"Nordic \\u00e6\\u00f8\\u00e5\",\"request_email\":\"no_foi@localhost\"}"
        ]
        notes[5].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/

        PublicBody.count.should == original_count
    end

    it "should do full run successfully" do
        original_count = PublicBody.count

        csv_contents = normalize_string_to_utf8(load_file_fixture("fake-authority-type.csv"))
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', false, 'someadmin') # false means real run
        errors.should == []
        notes.size.should == 6
        notes[0..4].should == [
            "line 1: creating new authority 'North West Fake Authority' (locale: en):\n\t\{\"name\":\"North West Fake Authority\",\"request_email\":\"north_west_foi@localhost\"\}",
            "line 2: creating new authority 'Scottish Fake Authority' (locale: en):\n\t\{\"name\":\"Scottish Fake Authority\",\"request_email\":\"scottish_foi@localhost\"\}",
            "line 3: creating new authority 'Fake Authority of Northern Ireland' (locale: en):\n\t\{\"name\":\"Fake Authority of Northern Ireland\",\"request_email\":\"ni_foi@localhost\"\}",
            "line 4: creating new authority 'Gobierno de Aragón' (locale: en):\n\t\{\"name\":\"Gobierno de Arag\\u00f3n\",\"request_email\":\"spain_foi@localhost\"}",
            "line 5: creating new authority 'Nordic æøå' (locale: en):\n\t{\"name\":\"Nordic \\u00e6\\u00f8\\u00e5\",\"request_email\":\"no_foi@localhost\"}"
        ]
        notes[5].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/

        PublicBody.count.should == original_count + 5
    end

    it "should do imports without a tag successfully" do
        original_count = PublicBody.count

        csv_contents = normalize_string_to_utf8(load_file_fixture("fake-authority-type.csv"))
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', false, 'someadmin') # false means real run
        errors.should == []
        notes.size.should == 6
        notes[0..4].should == [
            "line 1: creating new authority 'North West Fake Authority' (locale: en):\n\t\{\"name\":\"North West Fake Authority\",\"request_email\":\"north_west_foi@localhost\"\}",
            "line 2: creating new authority 'Scottish Fake Authority' (locale: en):\n\t\{\"name\":\"Scottish Fake Authority\",\"request_email\":\"scottish_foi@localhost\"\}",
            "line 3: creating new authority 'Fake Authority of Northern Ireland' (locale: en):\n\t\{\"name\":\"Fake Authority of Northern Ireland\",\"request_email\":\"ni_foi@localhost\"\}",
            "line 4: creating new authority 'Gobierno de Aragón' (locale: en):\n\t\{\"name\":\"Gobierno de Arag\\u00f3n\",\"request_email\":\"spain_foi@localhost\"}",
            "line 5: creating new authority 'Nordic æøå' (locale: en):\n\t{\"name\":\"Nordic \\u00e6\\u00f8\\u00e5\",\"request_email\":\"no_foi@localhost\"}"
        ]
        notes[5].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/
        PublicBody.count.should == original_count + 5
    end

    it "should handle a field list and fields out of order" do
        original_count = PublicBody.count

        csv_contents = load_file_fixture("fake-authority-type-with-field-names.csv")
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', true, 'someadmin') # true means dry run
        errors.should == []
        notes.size.should == 4
        notes[0..2].should == [
            "line 2: creating new authority 'North West Fake Authority' (locale: en):\n\t\{\"name\":\"North West Fake Authority\",\"request_email\":\"north_west_foi@localhost\",\"home_page\":\"http://northwest.org\"\}",
            "line 3: creating new authority 'Scottish Fake Authority' (locale: en):\n\t\{\"name\":\"Scottish Fake Authority\",\"request_email\":\"scottish_foi@localhost\",\"home_page\":\"http://scottish.org\",\"tag_string\":\"scottish\"\}",
            "line 4: creating new authority 'Fake Authority of Northern Ireland' (locale: en):\n\t\{\"name\":\"Fake Authority of Northern Ireland\",\"request_email\":\"ni_foi@localhost\",\"tag_string\":\"fake aTag\"\}",
        ]
        notes[3].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/

        PublicBody.count.should == original_count
    end

    it "should import tags successfully when the import tag is not set" do
        csv_contents = load_file_fixture("fake-authority-type-with-field-names.csv")
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', false, 'someadmin') # false means real run

        PublicBody.find_by_name('North West Fake Authority').tag_array_for_search.should == []
        PublicBody.find_by_name('Scottish Fake Authority').tag_array_for_search.should == ['scottish']
        PublicBody.find_by_name('Fake Authority of Northern Ireland').tag_array_for_search.should == ['aTag', 'fake']

        # Import again to check the 'add' tag functionality works
        new_tags_file = load_file_fixture('fake-authority-add-tags.rb')
        errors, notes = PublicBody.import_csv(new_tags_file, '', 'add', false, 'someadmin') # false means real run

        # Check tags were added successfully
        PublicBody.find_by_name('North West Fake Authority').tag_array_for_search.should == ['aTag']
        PublicBody.find_by_name('Scottish Fake Authority').tag_array_for_search.should == ['aTag', 'scottish']
        PublicBody.find_by_name('Fake Authority of Northern Ireland').tag_array_for_search.should == ['aTag', 'fake']
    end

    it "should import tags successfully when the import tag is set" do
        csv_contents = load_file_fixture("fake-authority-type-with-field-names.csv")
        errors, notes = PublicBody.import_csv(csv_contents, 'fake', 'add', false, 'someadmin') # false means real run

        # Check new bodies were imported successfully
        PublicBody.find_by_name('North West Fake Authority').tag_array_for_search.should == ['fake']
        PublicBody.find_by_name('Scottish Fake Authority').tag_array_for_search.should == ['fake', 'scottish']
        PublicBody.find_by_name('Fake Authority of Northern Ireland').tag_array_for_search.should == ['aTag', 'fake']

        # Import again to check the 'replace' tag functionality works
        new_tags_file = load_file_fixture('fake-authority-add-tags.rb')
        errors, notes = PublicBody.import_csv(new_tags_file, 'fake', 'replace', false, 'someadmin') # false means real run

        # Check tags were added successfully
        PublicBody.find_by_name('North West Fake Authority').tag_array_for_search.should == ['aTag']
        PublicBody.find_by_name('Scottish Fake Authority').tag_array_for_search.should == ['aTag']
        PublicBody.find_by_name('Fake Authority of Northern Ireland').tag_array_for_search.should == ['aTag', 'fake']
    end

    it "should create bodies with names in multiple locales" do
        original_count = PublicBody.count

        csv_contents = load_file_fixture("fake-authority-type-with-field-names.csv")
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', false, 'someadmin', [:en, :es])
        errors.should == []
        notes.size.should == 7
        notes[0..5].should == [
            "line 2: creating new authority 'North West Fake Authority' (locale: en):\n\t{\"name\":\"North West Fake Authority\",\"request_email\":\"north_west_foi@localhost\",\"home_page\":\"http://northwest.org\"}",
            "line 2: creating new authority 'North West Fake Authority' (locale: es):\n\t{\"name\":\"Autoridad del Nordeste\"}",
            "line 3: creating new authority 'Scottish Fake Authority' (locale: en):\n\t{\"name\":\"Scottish Fake Authority\",\"request_email\":\"scottish_foi@localhost\",\"home_page\":\"http://scottish.org\",\"tag_string\":\"scottish\"}",
            "line 3: creating new authority 'Scottish Fake Authority' (locale: es):\n\t{\"name\":\"Autoridad Escocesa\"}",
            "line 4: creating new authority 'Fake Authority of Northern Ireland' (locale: en):\n\t{\"name\":\"Fake Authority of Northern Ireland\",\"request_email\":\"ni_foi@localhost\",\"tag_string\":\"fake aTag\"}",
            "line 4: creating new authority 'Fake Authority of Northern Ireland' (locale: es):\n\t{\"name\":\"Autoridad Irlandesa\"}",
        ]
        notes[6].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/

        PublicBody.count.should == original_count + 3

        # XXX 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')
        body.translated_locales.map{|l|l.to_s}.sort.should == ["en", "es"]
    end

    it "should not fail if a locale is not found in the input file" do
        original_count = PublicBody.count

        csv_contents = load_file_fixture("fake-authority-type-with-field-names.csv")
        # Depending on the runtime environment (Ruby version? OS?) the list of available locales
        # is made of strings or symbols, so we use 'en' here as a string to test both scenarios.
        # See https://github.com/mysociety/alaveteli/issues/193
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', true, 'someadmin', ['en', :xx]) # true means dry run
        errors.should == []
        notes.size.should == 4
        notes[0..2].should == [
            "line 2: creating new authority 'North West Fake Authority' (locale: en):\n\t{\"name\":\"North West Fake Authority\",\"request_email\":\"north_west_foi@localhost\",\"home_page\":\"http://northwest.org\"}",
            "line 3: creating new authority 'Scottish Fake Authority' (locale: en):\n\t{\"name\":\"Scottish Fake Authority\",\"request_email\":\"scottish_foi@localhost\",\"home_page\":\"http://scottish.org\",\"tag_string\":\"scottish\"}",
            "line 4: creating new authority 'Fake Authority of Northern Ireland' (locale: en):\n\t{\"name\":\"Fake Authority of Northern Ireland\",\"request_email\":\"ni_foi@localhost\",\"tag_string\":\"fake aTag\"}",
        ]
        notes[3].should =~ /Notes: Some  bodies are in database, but not in CSV file:\n(    .+\n)*You may want to delete them manually.\n/

        PublicBody.count.should == original_count
    end

    it "should be able to load CSV from a file as well as a string" do
        # Essentially the same code is used for import_csv_from_file
        # as import_csv, so this is just a basic check that
        # import_csv_from_file can load from a file at all. (It would
        # be easy to introduce a regression that broke this, because
        # of the confusing change in behaviour of CSV.parse between
        # Ruby 1.8 and 1.9.)
        original_count = PublicBody.count
        filename = file_fixture_name('fake-authority-type-with-field-names.csv')
        PublicBody.import_csv_from_file(filename, '', 'replace', false, 'someadmin')
        PublicBody.count.should == original_count + 3
    end

    it "should handle active record validation errors" do
        csv = <<-CSV
#name,request_email,short_name
Foobar,a@example.com,foobar
Foobar Test,b@example.com,foobar
CSV

        csv_contents = normalize_string_to_utf8(csv)
        errors, notes = PublicBody.import_csv(csv_contents, '', 'replace', true, 'someadmin') # true means dry run

        errors.should include("error: line 3: Url name URL name is already taken for authority 'Foobar Test'")
    end

end

describe PublicBody do

  describe "calculated home page" do
    it "should return the home page verbatim if it's present" do
      public_body = PublicBody.new
      public_body.home_page = "http://www.example.com"
      public_body.calculated_home_page.should == "http://www.example.com"
    end

    it "should return the home page based on the request email domain if it has one" do
      public_body = PublicBody.new
      public_body.stub!(:request_email_domain).and_return "public-authority.com"
      public_body.calculated_home_page.should == "http://www.public-authority.com"
    end

    it "should return nil if there's no home page and the email domain can't be worked out" do
      public_body = PublicBody.new
      public_body.stub!(:request_email_domain).and_return nil
      public_body.calculated_home_page.should be_nil
    end

    it "should ensure home page URLs start with http://" do
      public_body = PublicBody.new
      public_body.home_page = "example.com"
      public_body.calculated_home_page.should == "http://example.com"
    end

    it "should not add http when https is present" do
      public_body = PublicBody.new
      public_body.home_page = "https://example.com"
      public_body.calculated_home_page.should == "https://example.com"
    end
  end

    describe 'when asked for notes without html' do

        before do
            @public_body = PublicBody.new(:notes => 'some <a href="/notes">notes</a>')
        end

        it 'should remove simple tags from notes' do
            @public_body.notes_without_html.should == 'some notes'
        end

    end

end

describe PublicBody, " when override all public body request emails set" do
    it "should return the overridden request email" do
        AlaveteliConfiguration.should_receive(:override_all_public_body_request_emails).twice.and_return("catch_all_test_email@foo.com")
        @geraldine = public_bodies(:geraldine_public_body)
        @geraldine.request_email.should == "catch_all_test_email@foo.com"
    end
end

describe PublicBody, "when calculating statistics" do

    it "should not include unclassified or hidden requests in percentages" do
        with_hidden_and_successful_requests do
            totals_data = PublicBody.get_request_totals(n=3,
                                                        highest=true,
                                                        minimum_requests=1)
            # For the total number of requests, we still include
            # hidden or unclassified requests:
            totals_data['public_bodies'][-1].name.should == "Geraldine Quango"
            totals_data['totals'][-1].should == 4

            # However, for percentages, don't include the hidden or
            # unclassified requests.  So, for the Geraldine Quango
            # we've made sure that there are only two visible and
            # classified requests, one of which is successful, so the
            # percentage should be 50%:

            percentages_data = PublicBody.get_request_percentages(column='info_requests_successful_count',
                                                                  n=3,
                                                                  highest=false,
                                                                  minimum_requests=1)
            geraldine_index = percentages_data['public_bodies'].index do |pb|
                pb.name == "Geraldine Quango"
            end

            percentages_data['y_values'][geraldine_index].should == 50
        end
    end

    it "should only return totals for those with at least a minimum number of requests" do
        minimum_requests = 1
        with_enough_info_requests = PublicBody.where(["info_requests_count >= ?",
                                                      minimum_requests]).length
        all_data = PublicBody.get_request_totals 4, true, minimum_requests
        all_data['public_bodies'].length.should == with_enough_info_requests
    end

    it "should only return percentages for those with at least a minimum number of requests" do
        with_hidden_and_successful_requests do
            # With minimum requests at 3, this should return nil
            # (corresponding to zero public bodies) since the only
            # public body with just more than 3 info requests (The
            # Geraldine Quango) has a hidden and an unclassified
            # request within this block:
            minimum_requests = 3
            with_enough_info_requests = PublicBody.where(["info_requests_visible_classified_count >= ?",
                                                          minimum_requests]).length
            all_data = PublicBody.get_request_percentages(column='info_requests_successful_count',
                                                          n=10,
                                                          true,
                                                          minimum_requests)
            all_data.should be_nil
        end
    end

    it "should only return those with at least a minimum number of requests, but not tagged 'test'" do
        hpb = PublicBody.find_by_name 'Department for Humpadinking'

        original_tag_string = hpb.tag_string
        hpb.add_tag_if_not_already_present 'test'

        begin
            minimum_requests = 1
            with_enough_info_requests = PublicBody.where(["info_requests_count >= ?", minimum_requests])
            all_data = PublicBody.get_request_totals 4, true, minimum_requests
            all_data['public_bodies'].length.should == 3
        ensure
            hpb.tag_string = original_tag_string
        end
    end

end

describe PublicBody, 'when asked for popular bodies' do

    it 'should return bodies correctly when passed the hyphenated version of the locale' do
        AlaveteliConfiguration.stub!(:frontpage_publicbody_examples).and_return('')
        PublicBody.popular_bodies('he-IL').should == [public_bodies(:humpadink_public_body)]
    end

end
the address." msgstr "" msgid "Check you haven't included any <strong>personal information</strong>." msgstr "" msgid "Choose your profile photo" msgstr "" msgid "Clarification" msgstr "" msgid "Clarify your FOI request - " msgstr "" msgid "Classify an FOI response from " msgstr "" msgid "Clear photo" msgstr "" 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 "" msgid "Click on the link below to send a message to {{public_body}} reminding them to reply to your request." msgstr "" msgid "Close" msgstr "" msgid "Comment" msgstr "" msgid "Comment|Body" msgstr "" msgid "Comment|Comment type" msgstr "" msgid "Comment|Locale" msgstr "" msgid "Comment|Visible" msgstr "" msgid "Confirm you want to follow all successful FOI requests" msgstr "" msgid "Confirm you want to follow new requests" msgstr "" msgid "Confirm you want to follow new requests or responses matching your search" msgstr "" msgid "Confirm you want to follow requests by '{{user_name}}'" msgstr "" msgid "Confirm you want to follow requests to '{{public_body_name}}'" msgstr "" msgid "Confirm you want to follow the request '{{request_title}}'" msgstr "" msgid "Confirm your FOI request to " msgstr "" msgid "Confirm your account on {{site_name}}" msgstr "" msgid "Confirm your annotation to {{info_request_title}}" msgstr "" msgid "Confirm your email address" msgstr "" msgid "Confirm your new email address on {{site_name}}" msgstr "" msgid "Considered by administrators as not an FOI request and hidden from site." msgstr "" msgid "Considered by administrators as vexatious and hidden from site." msgstr "" msgid "Contact {{recipient}}" msgstr "" msgid "Contact {{site_name}}" msgstr "" msgid "Could not identify the request from the email address" msgstr "" msgid "Couldn't understand the image file that you uploaded. PNG, JPEG, GIF and many other common image file formats are supported." msgstr "" msgid "Crop your profile photo" msgstr "" msgid "Cultural sites and built structures (as they may be affected by the\\n environmental factors listed above)" msgstr "" msgid "Currently <strong>waiting for a response</strong> from {{public_body_link}}, they must respond promptly and" msgstr "" msgid "Date:" msgstr "" msgid "Dear {{name}}," msgstr "" msgid "Dear {{public_body_name}}," msgstr "" msgid "Default locale" msgstr "" msgid "Defunct." msgstr "" msgid "Delayed response to your FOI request - " msgstr "" msgid "Delayed." msgstr "" msgid "Delivery error" msgstr "" msgid "Destroy {{name}}" msgstr "" msgid "Details of request '" msgstr "" msgid "Did you mean: {{correction}}" msgstr "" msgid "Disclaimer: This message and any reply that you make will be published on the internet. Our privacy and copyright policies:" msgstr "" msgid "Disclosure log" msgstr "" msgid "Disclosure log URL" msgstr "" msgid "Don't want to address your message to {{person_or_body}}? You can also write to:" msgstr "" msgid "Done" msgstr "" msgid "Done &gt;&gt;" msgstr "" msgid "Download a zip file of all correspondence" msgstr "" msgid "Download original attachment" msgstr "" msgid "EIR" msgstr "" 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 "" msgid "Edit text about you" msgstr "" msgid "Edit this request" msgstr "" msgid "Either the email or password was not recognised, please try again." msgstr "" msgid "Either the email or password was not recognised, please try again. Or create a new account using the form on the right." msgstr "" msgid "Email doesn't look like a valid address" msgstr "" msgid "Email me future updates to this request" msgstr "" msgid "Enter words that you want to find separated by spaces, e.g. <strong>climbing lane</strong>" msgstr "" 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 "" msgid "Environmental Information Regulations" msgstr "" msgid "Environmental Information Regulations requests made" msgstr "" msgid "Environmental Information Regulations requests made using this site" msgstr "" msgid "Event history" msgstr "" msgid "Event history details" msgstr "" 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 "" 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 "" msgid "FOI" msgstr "" msgid "FOI email address for {{public_body}}" msgstr "" msgid "FOI request – {{title}}" msgstr "" msgid "FOI requests" msgstr "" msgid "FOI requests by '{{user_name}}'" msgstr "" msgid "FOI requests {{start_count}} to {{end_count}} of {{total_count}}" msgstr "" msgid "FOI response requires admin ({{reason}}) - {{title}}" msgstr "" msgid "Failed to convert image to a PNG" msgstr "" msgid "Failed to convert image to the correct size: at {{cols}}x{{rows}}, need {{width}}x{{height}}" msgstr "" msgid "Filter" msgstr "" 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 "" msgid "Foi attachment" msgstr "" msgid "FoiAttachment|Charset" msgstr "" msgid "FoiAttachment|Content type" msgstr "" msgid "FoiAttachment|Display size" msgstr "" msgid "FoiAttachment|Filename" msgstr "" msgid "FoiAttachment|Hexdigest" msgstr "" msgid "FoiAttachment|Url part number" msgstr "" msgid "FoiAttachment|Within rfc822 subject" msgstr "" msgid "Follow" msgstr "" msgid "Follow all new requests" msgstr "" msgid "Follow new successful responses" msgstr "" msgid "Follow requests to {{public_body_name}}" msgstr "" msgid "Follow these requests" msgstr "" msgid "Follow things matching this search" msgstr "" msgid "Follow this authority" msgstr "" msgid "Follow this link to see the request:" msgstr "" msgid "Follow this person" msgstr "" msgid "Follow this request" msgstr "" msgid "Follow up" msgstr "" msgid "Follow up message sent by requester" msgstr "" msgid "Follow up messages to existing requests are sent to " msgstr "" 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 "" msgid "Follow us on twitter" msgstr "" 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 "" msgid "For an unknown reason, it is not possible to make a request to this authority." msgstr "" msgid "Forgotten your password?" msgstr "" msgid "Found {{count}} public authority {{description}}" msgid_plural "Found {{count}} public authorities {{description}}" msgstr[0] "" msgid "Freedom of Information" msgstr "" msgid "Freedom of Information Act" msgstr "" msgid "Freedom of Information law does not apply to this authority, so you cannot make\\n a request to it." msgstr "" msgid "Freedom of Information law no longer applies to" msgstr "" msgid "Freedom of Information law no longer applies to this authority.Follow up messages to existing requests are sent to " msgstr "" msgid "Freedom of Information requests made" msgstr "" msgid "Freedom of Information requests made by this person" msgstr "" msgid "Freedom of Information requests made by you" msgstr "" msgid "Freedom of Information requests made using this site" msgstr "" msgid "Freedom of information requests to" msgstr "" msgid "From" msgstr "" 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 "" msgid "From:" msgstr "" msgid "GIVE DETAILS ABOUT YOUR COMPLAINT HERE" msgstr "" msgid "Handled by post." msgstr "" msgid "Has tag string/has tag string tag" msgstr "" msgid "HasTagString::HasTagStringTag|Model" msgstr "" msgid "HasTagString::HasTagStringTag|Name" msgstr "" msgid "HasTagString::HasTagStringTag|Value" msgstr "" msgid "Hello! You can make Freedom of Information requests within {{country_name}} at {{link_to_website}}" msgstr "" msgid "Hello, {{username}}!" msgstr "" msgid "Help" msgstr "" 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 "" msgid "Here is the message you wrote, in case you would like to copy the text and save it for later." msgstr "" 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 "" msgid "Hide request" msgstr "" msgid "Holiday" msgstr "" msgid "Holiday|Day" msgstr "" msgid "Holiday|Description" msgstr "" msgid "Home" msgstr "" msgid "Home page" msgstr "" msgid "Home page of authority" msgstr "" msgid "However, you have the right to request environmental\\n information under a different law" msgstr "" msgid "Human health and safety" msgstr "" msgid "I am asking for <strong>new information</strong>" msgstr "" msgid "I am requesting an <strong>internal review</strong>" msgstr "" 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 "" msgid "I don't want to do any more tidying now!" msgstr "" msgid "I like this request" msgstr "" msgid "I would like to <strong>withdraw this request</strong>" msgstr "" msgid "I'm still <strong>waiting</strong> for my information\\n <small>(maybe you got an acknowledgement)</small>" msgstr "" msgid "I'm still <strong>waiting</strong> for the internal review" msgstr "" msgid "I'm waiting for an <strong>internal review</strong> response" msgstr "" msgid "I've been asked to <strong>clarify</strong> my request" msgstr "" msgid "I've received <strong>all the information" msgstr "" msgid "I've received <strong>some of the information</strong>" msgstr "" msgid "I've received an <strong>error message</strong>" msgstr "" msgid "I've received an error message" msgstr "" msgid "Id" msgstr "" msgid "If the address is wrong, or you know a better address, please <a href=\"{{url}}\">contact us</a>." msgstr "" 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 "" 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 "" msgid "If you are still having trouble, please <a href=\"{{url}}\">contact us</a>." msgstr "" 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 "" msgid "If you are thinking of using a pseudonym,\\n please <a href=\"{{url}}\">read this first</a>." msgstr "" msgid "If you are {{user_link}}, please" msgstr "" msgid "If you believe this request is not suitable, you can report it for attention by the site administrators" msgstr "" 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 "" msgid "If you can, scan in or photograph the response, and <strong>send us\\n a copy to upload</strong>." msgstr "" 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 "" 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 "" 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 "" 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 "" 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 "" 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 "" msgid "If you're new to {{site_name}}" msgstr "" msgid "If you've used {{site_name}} before" msgstr "" 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 "" msgid "Incoming email address" msgstr "" msgid "Incoming message" msgstr "" msgid "IncomingMessage|Cached attachment text clipped" msgstr "" msgid "IncomingMessage|Cached main body text folded" msgstr "" msgid "IncomingMessage|Cached main body text unfolded" msgstr "" msgid "IncomingMessage|Last parsed" msgstr "" msgid "IncomingMessage|Mail from" msgstr "" msgid "IncomingMessage|Mail from domain" msgstr "" msgid "IncomingMessage|Prominence" msgstr "" msgid "IncomingMessage|Prominence reason" msgstr "" msgid "IncomingMessage|Sent at" msgstr "" msgid "IncomingMessage|Subject" msgstr "" msgid "IncomingMessage|Valid to reply to" msgstr "" msgid "Individual requests" msgstr "" msgid "Info request" msgstr "" msgid "Info request event" msgstr "" msgid "InfoRequestEvent|Calculated state" msgstr "" msgid "InfoRequestEvent|Described state" msgstr "" msgid "InfoRequestEvent|Event type" msgstr "" msgid "InfoRequestEvent|Last described at" msgstr "" msgid "InfoRequestEvent|Params yaml" msgstr "" msgid "InfoRequest|Allow new responses from" msgstr "" msgid "InfoRequest|Attention requested" msgstr "" msgid "InfoRequest|Awaiting description" msgstr "" msgid "InfoRequest|Comments allowed" msgstr "" msgid "InfoRequest|Described state" msgstr "" msgid "InfoRequest|External url" msgstr "" msgid "InfoRequest|External user name" msgstr "" msgid "InfoRequest|Handle rejected responses" msgstr "" msgid "InfoRequest|Idhash" msgstr "" msgid "InfoRequest|Law used" msgstr "" msgid "InfoRequest|Prominence" msgstr "" msgid "InfoRequest|Title" msgstr "" msgid "InfoRequest|Url title" msgstr "" msgid "Information not held." msgstr "" msgid "Information on emissions and discharges (e.g. noise, energy,\\n radiation, waste materials)" msgstr "" msgid "Internal review request" 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 "" 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 "" msgid "Items matching the following conditions are currently displayed on your wall." msgstr "" msgid "Items sent in last month" msgstr "" msgid "Joined in" msgstr "" msgid "Joined {{site_name}} in" msgstr "" 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 "" msgid "Keywords" msgstr "" msgid "Last authority viewed: " msgstr "" msgid "Last request viewed: " msgstr "" msgid "Let us know what you were doing when this message\\nappeared and your browser and operating system type and version." msgstr "" msgid "Link to this" msgstr "" msgid "List all" msgstr "" msgid "List of all authorities (CSV)" msgstr "" msgid "Listing FOI requests" msgstr "" msgid "Listing public authorities" msgstr "" msgid "Listing public authorities matching '{{query}}'" msgstr "" msgid "Listing tracks" msgstr "" msgid "Listing users" msgstr "" msgid "Log in to download a zip file of {{info_request_title}}" msgstr "" msgid "Log into the admin interface" msgstr "" msgid "Long overdue." msgstr "" msgid "Made between" msgstr "" msgid "Mail server log" msgstr "" msgid "Mail server log done" msgstr "" msgid "MailServerLogDone|Filename" msgstr "" msgid "MailServerLogDone|Last stat" msgstr "" msgid "MailServerLog|Line" msgstr "" msgid "MailServerLog|Order" msgstr "" msgid "Make a new<br/>\\n <strong>Freedom <span>of</span><br/>\\n Information<br/>\\n request</strong>" msgstr "" msgid "Make a request" msgstr "" msgid "Make a request to this authority" msgstr "" msgid "Make an {{law_used_short}} request to '{{public_body_name}}'" msgstr "" msgid "Make and browse Freedom of Information (FOI) requests" msgstr "" msgid "Make your own request" msgstr "" msgid "Many requests" msgstr "" msgid "Message" msgstr "" msgid "Message has been removed" msgstr "" msgid "Message sent using {{site_name}} contact form, " msgstr "" msgid "Missing contact details for '" msgstr "" msgid "More about this authority" msgstr "" msgid "More requests..." msgstr "" msgid "More similar requests" msgstr "" msgid "More successful requests..." msgstr "" msgid "My profile" msgstr "" msgid "My request has been <strong>refused</strong>" msgstr "" msgid "My requests" msgstr "" msgid "My wall" msgstr "" msgid "Name can't be blank" msgstr "" msgid "Name is already taken" msgstr "" msgid "New Freedom of Information requests" msgstr "" msgid "New censor rule" msgstr "" msgid "New e-mail:" msgstr "" msgid "New email doesn't look like a valid address" msgstr "" msgid "New password:" msgstr "" msgid "New password: (again)" msgstr "" msgid "New response to '{{title}}'" msgstr "" msgid "New response to your FOI request - " msgstr "" msgid "New response to your request" msgstr "" msgid "New response to {{law_used_short}} request" msgstr "" msgid "New updates for the request '{{request_title}}'" msgstr "" msgid "Newest results first" msgstr "" msgid "Next" msgstr "" msgid "Next, crop your photo &gt;&gt;" msgstr "" msgid "No requests of this sort yet." msgstr "" msgid "No results found." msgstr "" msgid "No similar requests found." msgstr "" msgid "No tracked things found." msgstr "" msgid "Nobody has made any Freedom of Information requests to {{public_body_name}} using this site yet." msgstr "" msgid "None found." msgstr "" msgid "None made." msgstr "" msgid "Not a valid FOI 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 "" msgid "Now check your email!" msgstr "" msgid "Now preview your annotation" msgstr "" msgid "Now preview your follow up" msgstr "" msgid "Now preview your message asking for an internal review" msgstr "" msgid "Number of requests" msgstr "" msgid "OR remove the existing photo" msgstr "" msgid "Offensive? Unsuitable?" msgstr "" msgid "Oh no! Sorry to hear that your request was refused. Here is what to do now." msgstr "" msgid "Old e-mail:" msgstr "" msgid "Old email address isn't the same as the address of the account you are logged in with" msgstr "" msgid "Old email doesn't look like a valid address" msgstr "" msgid "On this page" msgstr "" msgid "One FOI request found" msgstr "" msgid "One person found" msgstr "" msgid "One public authority found" msgstr "" 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 "" msgid "Only the authority can reply to this request, and I don't recognise the address this reply was sent from" msgstr "" msgid "Only the authority can reply to this request, but there is no \"From\" address to check against" msgstr "" msgid "Or search in their website for this information." msgstr "" msgid "Original request sent" msgstr "" msgid "Other:" msgstr "" msgid "Outgoing message" msgstr "" msgid "OutgoingMessage|Body" msgstr "" msgid "OutgoingMessage|Last sent at" msgstr "" msgid "OutgoingMessage|Message type" msgstr "" msgid "OutgoingMessage|Prominence" msgstr "" msgid "OutgoingMessage|Prominence reason" msgstr "" msgid "OutgoingMessage|Status" msgstr "" msgid "OutgoingMessage|What doing" msgstr "" msgid "Partially successful." msgstr "" msgid "Password is not correct" msgstr "" msgid "Password:" msgstr "" msgid "Password: (again)" msgstr "" msgid "Paste this link into emails, tweets, and anywhere else:" msgstr "" msgid "People" msgstr "" msgid "People {{start_count}} to {{end_count}} of {{total_count}}" msgstr "" msgid "Percentage of requests that are overdue" msgstr "" msgid "Percentage of total requests" msgstr "" msgid "Photo of you:" msgstr "" msgid "Plans and administrative measures that affect these matters" msgstr "" msgid "Play the request categorisation game" msgstr "" msgid "Play the request categorisation game!" msgstr "" msgid "Please" msgstr "" 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 "" msgid "Please <strong>answer the question above</strong> so we know whether the " msgstr "" 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 "" 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 "" msgid "Please ask for environmental information only" msgstr "" msgid "Please check the URL (i.e. the long code of letters and numbers) is copied\\ncorrectly from your email." msgstr "" msgid "Please choose a file containing your photo." msgstr "" msgid "Please choose a reason" msgstr "" msgid "Please choose what sort of reply you are making." msgstr "" msgid "Please choose whether or not you got some of the information that you wanted." msgstr "" msgid "Please click on the link below to cancel or alter these emails." msgstr "" 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 "" msgid "Please click on the link below to confirm your email address." msgstr "" 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 "" msgid "Please don't upload offensive pictures. We will take down images\\n that we consider inappropriate." msgstr "" msgid "Please enable \"cookies\" to carry on" msgstr "" msgid "Please enter a password" msgstr "" msgid "Please enter a subject" msgstr "" msgid "Please enter a summary of your request" msgstr "" msgid "Please enter a valid email address" msgstr "" msgid "Please enter the message you want to send" msgstr "" msgid "Please enter the same password twice" msgstr "" msgid "Please enter your annotation" msgstr "" msgid "Please enter your email address" msgstr "" msgid "Please enter your follow up message" msgstr "" msgid "Please enter your letter requesting information" msgstr "" msgid "Please enter your name" msgstr "" msgid "Please enter your name, not your email address, in the name field." msgstr "" msgid "Please enter your new email address" msgstr "" msgid "Please enter your old email address" msgstr "" msgid "Please enter your password" msgstr "" msgid "Please give details explaining why you want a review" msgstr "" msgid "Please keep it shorter than 500 characters" msgstr "" msgid "Please keep the summary short, like in the subject of an email. You can use a phrase, rather than a full sentence." msgstr "" 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 "" 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 "" msgid "Please sign at the bottom with your name, or alter the \"{{signoff}}\" signature" msgstr "" msgid "Please sign in as " msgstr "" msgid "Please sign in or make a new account." msgstr "" msgid "Please type a message and/or choose a file containing your response." msgstr "" msgid "Please use this email address for all replies to this request:" msgstr "" msgid "Please write a summary with some text in it" msgstr "" msgid "Please write the summary using a mixture of capital and lower case letters. This makes it easier for others to read." msgstr "" msgid "Please write your annotation using a mixture of capital and lower case letters. This makes it easier for others to read." msgstr "" msgid "Please write your follow up message containing the necessary clarifications below." msgstr "" msgid "Please write your message using a mixture of capital and lower case letters. This makes it easier for others to read." msgstr "" msgid "Point to <strong>related information</strong>, campaigns or forums which may be useful." msgstr "" msgid "Possibly related requests:" msgstr "" msgid "Post annotation" msgstr "" msgid "Post redirect" msgstr "" msgid "PostRedirect|Circumstance" msgstr "" msgid "PostRedirect|Email token" msgstr "" msgid "PostRedirect|Post params yaml" msgstr "" msgid "PostRedirect|Reason params yaml" msgstr "" msgid "PostRedirect|Token" msgstr "" msgid "PostRedirect|Uri" msgstr "" msgid "Posted on {{date}} by {{author}}" msgstr "" msgid "Powered by <a href=\"http://www.alaveteli.org/\">Alaveteli</a>" msgstr "" msgid "Prev" msgstr "" msgid "Preview follow up to '" msgstr "" msgid "Preview new annotation on '{{info_request_title}}'" msgstr "" msgid "Preview your annotation" msgstr "" msgid "Preview your message" msgstr "" msgid "Preview your public request" msgstr "" msgid "Profile photo" msgstr "" msgid "ProfilePhoto|Data" msgstr "" msgid "ProfilePhoto|Draft" msgstr "" msgid "Public Bodies" msgstr "" msgid "Public Body Statistics" msgstr "" msgid "Public authorities" msgstr "" msgid "Public authorities - {{description}}" msgstr "" msgid "Public authorities {{start_count}} to {{end_count}} of {{total_count}}" msgstr "" msgid "Public authority – {{name}}" msgstr "" msgid "Public bodies that most frequently replied with \"Not Held\"" msgstr "" msgid "Public bodies with most overdue requests" msgstr "" msgid "Public bodies with the fewest successful requests" msgstr "" msgid "Public bodies with the most requests" msgstr "" msgid "Public bodies with the most successful requests" msgstr "" msgid "Public body" msgstr "" msgid "Public notes" msgstr "" msgid "Public page" msgstr "" msgid "Public page not available" msgstr "" msgid "PublicBody|Api key" msgstr "" msgid "PublicBody|Disclosure log" msgstr "" msgid "PublicBody|First letter" msgstr "" msgid "PublicBody|Home page" msgstr "" msgid "PublicBody|Info requests count" msgstr "" msgid "PublicBody|Info requests not held count" msgstr "" msgid "PublicBody|Info requests overdue count" msgstr "" msgid "PublicBody|Info requests successful count" msgstr "" msgid "PublicBody|Last edit comment" msgstr "" msgid "PublicBody|Last edit editor" msgstr "" msgid "PublicBody|Name" msgstr "" msgid "PublicBody|Notes" msgstr "" msgid "PublicBody|Publication scheme" msgstr "" msgid "PublicBody|Request email" msgstr "" msgid "PublicBody|Short name" msgstr "" msgid "PublicBody|Url name" msgstr "" msgid "PublicBody|Version" msgstr "" msgid "Publication scheme" msgstr "" msgid "Publication scheme URL" msgstr "" msgid "Purge request" msgstr "" msgid "PurgeRequest|Model" msgstr "" msgid "PurgeRequest|Url" msgstr "" msgid "RSS feed" msgstr "" msgid "RSS feed of updates" msgstr "" msgid "Re-edit this annotation" msgstr "" msgid "Re-edit this message" msgstr "" msgid "Read about <a href=\"{{advanced_search_url}}\">advanced search operators</a>, such as proximity and wildcards." msgstr "" msgid "Read blog" msgstr "" msgid "Received an error message, such as delivery failure." msgstr "" msgid "Recently described results first" msgstr "" msgid "Refused." msgstr "" msgid "Remember me</label> (keeps you signed in longer;\\n do not use on a public computer) " msgstr "" msgid "Report abuse" msgstr "" msgid "Report an offensive or unsuitable request" msgstr "" msgid "Report request" msgstr "" msgid "Report this request" msgstr "" msgid "Reported for administrator attention." msgstr "" msgid "Request an internal review" msgstr "" msgid "Request an internal review from {{person_or_body}}" msgstr "" msgid "Request email" msgstr "" msgid "Request has been removed" msgstr "" msgid "Request sent to {{public_body_name}} by {{info_request_user}} on {{date}}." msgstr "" msgid "Request to {{public_body_name}} by {{info_request_user}}. Annotated by {{event_comment_user}} on {{date}}." msgstr "" msgid "Requested from {{public_body_name}} by {{info_request_user}} on {{date}}" msgstr "" msgid "Requested on {{date}}" msgstr "" msgid "Requests are considered overdue if they are in the 'Overdue' or 'Very Overdue' states." msgstr "" msgid "Requests are considered successful if they were classified as either 'Successful' or 'Partially Successful'." msgstr "" msgid "Requests for personal information and vexatious requests are not considered valid for FOI purposes (<a href=\"/help/about\">read more</a>)." msgstr "" msgid "Requests or responses matching your saved search" msgstr "" msgid "Requests similar to '{{request_title}}'" msgstr "" msgid "Requests similar to '{{request_title}}' (page {{page}})" msgstr "" msgid "Respond by email" msgstr "" msgid "Respond to request" msgstr "" msgid "Respond to the FOI request" msgstr "" msgid "Respond using the web" msgstr "" msgid "Response" msgstr "" msgid "Response from a public authority" msgstr "" msgid "Response to '{{title}}'" msgstr "" msgid "Response to this request is <strong>delayed</strong>." msgstr "" msgid "Response to this request is <strong>long overdue</strong>." msgstr "" msgid "Response to your request" msgstr "" msgid "Response:" msgstr "" msgid "Restrict to" msgstr "" msgid "Results page {{page_number}}" msgstr "" msgid "Save" msgstr "" msgid "Search" msgstr "" msgid "Search Freedom of Information requests, public authorities and users" msgstr "" msgid "Search contributions by this person" msgstr "" msgid "Search for words in:" msgstr "" msgid "Search in" msgstr "" msgid "Search over<br/>\\n <strong>{{number_of_requests}} requests</strong> <span>and</span><br/>\\n <strong>{{number_of_authorities}} authorities</strong>" msgstr "" msgid "Search queries" msgstr "" msgid "Search results" msgstr "" msgid "Search the site to find what you were looking for." msgstr "" 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] "" msgid "Search your contributions" msgstr "" msgid "See bounce message" msgstr "" msgid "Select one to see more information about the authority." msgstr "" msgid "Select the authority to write to" msgstr "" msgid "Send a followup" msgstr "" msgid "Send a message to " msgstr "" msgid "Send a public follow up message to {{person_or_body}}" msgstr "" msgid "Send a public reply to {{person_or_body}}" msgstr "" msgid "Send follow up to '{{title}}'" msgstr "" msgid "Send message" msgstr "" msgid "Send message to " msgstr "" msgid "Send request" msgstr "" msgid "Set your profile photo" msgstr "" msgid "Short name" msgstr "" msgid "Short name is already taken" msgstr "" msgid "Show most relevant results first" msgstr "" msgid "Show only..." msgstr "" msgid "Showing" msgstr "" msgid "Sign in" msgstr "" msgid "Sign in or make a new account" msgstr "" msgid "Sign in or sign up" msgstr "" msgid "Sign out" msgstr "" msgid "Sign up" msgstr "" msgid "Similar requests" msgstr "" msgid "Simple search" msgstr "" msgid "Some notes have been added to your FOI request - " msgstr "" msgid "Some of the information requested has been received" msgstr "" 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 "" msgid "Somebody added a note to your FOI request - " msgstr "" msgid "Someone has updated the status of your request" msgstr "" msgid "Someone, perhaps you, just tried to change their email address on\\n{{site_name}} from {{old_email}} to {{new_email}}." msgstr "" 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 "" msgid "Sorry, but only {{user_name}} is allowed to do that." msgstr "" msgid "Sorry, there was a problem processing this page" msgstr "" msgid "Sorry, we couldn't find that page" msgstr "" msgid "Special note for this authority!" msgstr "" msgid "Start now &raquo;" msgstr "" msgid "Start your own blog" msgstr "" msgid "Stay up to date" msgstr "" msgid "Still awaiting an <strong>internal review</strong>" msgstr "" msgid "Subject" msgstr "" msgid "Subject:" msgstr "" msgid "Submit" msgstr "" msgid "Submit status" msgstr "" msgid "Submit status and send message" msgstr "" msgid "Subscribe to blog" msgstr "" msgid "Successful Freedom of Information requests" msgstr "" msgid "Successful." msgstr "" msgid "Suggest how the requester can find the <strong>rest of the information</strong>." msgstr "" msgid "Summary:" msgstr "" msgid "Table of statuses" msgstr "" msgid "Table of varieties" msgstr "" msgid "Tags" msgstr "" msgid "Tags (separated by a space):" msgstr "" msgid "Tags:" msgstr "" msgid "Technical details" msgstr "" msgid "Thank you for helping us keep the site tidy!" msgstr "" msgid "Thank you for making an annotation!" msgstr "" 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 "" 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 "" msgid "Thank you for updating this request!" msgstr "" msgid "Thank you for updating your profile photo" msgstr "" 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 "" 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 "" 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 "" msgid "That doesn't look like a valid email address. Please check you have typed it correctly." msgstr "" msgid "The <strong>review has finished</strong> and overall:" msgstr "" msgid "The Freedom of Information Act <strong>does not apply</strong> to" msgstr "" msgid "The accounts have been left as they previously were." msgstr "" msgid "The authority do <strong>not have</strong> the information <small>(maybe they say who does)" msgstr "" msgid "The authority only has a <strong>paper copy</strong> of the information." msgstr "" 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 "" msgid "The authority would like to / has <strong>responded by post</strong> to this request." msgstr "" 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 "" 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 "" 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 "" 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 "" msgid "The public authority would like part of the request explained" msgstr "" msgid "The public authority would like to / has responded by post" msgstr "" msgid "The request has been <strong>refused</strong>" msgstr "" msgid "The request has been updated since you originally loaded this page. Please check for any new incoming messages below, and try again." msgstr "" msgid "The request is <strong>waiting for clarification</strong>." msgstr "" msgid "The request was <strong>partially successful</strong>." msgstr "" msgid "The request was <strong>refused</strong> by" msgstr "" msgid "The request was <strong>successful</strong>." msgstr "" msgid "The request was refused by the public authority" msgstr "" 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 "" msgid "The requester has abandoned this request for some reason" msgstr "" 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 "" 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 "" 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 "" msgid "The search index is currently offline, so we can't show the Freedom of Information requests this person has made." msgstr "" msgid "The {{site_name}} team." msgstr "" msgid "Then you can cancel the alert." msgstr "" msgid "Then you can cancel the alerts." msgstr "" msgid "Then you can change your email address used on {{site_name}}" msgstr "" msgid "Then you can change your password on {{site_name}}" msgstr "" msgid "Then you can classify the FOI response you have got from " msgstr "" msgid "Then you can download a zip file of {{info_request_title}}." msgstr "" msgid "Then you can log into the administrative interface" msgstr "" msgid "Then you can play the request categorisation game." msgstr "" msgid "Then you can report the request '{{title}}'" msgstr "" msgid "Then you can send a message to " msgstr "" msgid "Then you can sign in to {{site_name}}" msgstr "" msgid "Then you can update the status of your request to " msgstr "" msgid "Then you can upload an FOI response. " msgstr "" msgid "Then you can write follow up message to " msgstr "" msgid "Then you can write your reply to " msgstr "" msgid "Then you will be following all new FOI requests." msgstr "" msgid "Then you will be notified whenever '{{user_name}}' requests something or gets a response." msgstr "" msgid "Then you will be notified whenever a new request or response matches your search." msgstr "" msgid "Then you will be notified whenever an FOI request succeeds." msgstr "" msgid "Then you will be notified whenever someone requests something or gets a response from '{{public_body_name}}'." msgstr "" msgid "Then you will be updated whenever the request '{{request_title}}' is updated." msgstr "" msgid "Then you'll be allowed to send FOI requests." msgstr "" msgid "Then your FOI request to {{public_body_name}} will be sent." msgstr "" msgid "Then your annotation to {{info_request_title}} will be posted." msgstr "" msgid "There are {{count}} new annotations on your {{info_request}} request. Follow this link to see what they wrote." msgstr "" 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 "" 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 "" msgid "There is {{count}} person following this request" msgid_plural "There are {{count}} people following this request" msgstr[0] "" msgid "There was a <strong>delivery error</strong> or similar, which needs fixing by the {{site_name}} team." msgstr "" msgid "There was an error with the words you entered, please try again." msgstr "" msgid "There was no data calculated for this graph yet." msgstr "" msgid "There were no requests matching your query." msgstr "" msgid "There were no results matching your query." msgstr "" 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 "" msgid "They do <strong>not have</strong> the information <small>(maybe they say who does)</small>" msgstr "" msgid "They have been given the following explanation:" msgstr "" msgid "They have not replied to your {{law_used_short}} request {{title}} promptly, as normally required by law" msgstr "" msgid "They have not replied to your {{law_used_short}} request {{title}}, \\nas required by law" msgstr "" msgid "Things to do with this request" msgstr "" msgid "Things you're following" msgstr "" msgid "This authority no longer exists, so you cannot make a request to it." msgstr "" msgid "This covers a very wide spectrum of information about the state of\\n the <strong>natural and built environment</strong>, such as:" msgstr "" msgid "This external request has been hidden" 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 "" msgid "This is an HTML version of an attachment to the Freedom of Information request" msgstr "" msgid "This is because {{title}} is an old request that has been\\nmarked to no longer receive responses." msgstr "" msgid "This is the first version." msgstr "" msgid "This is your own request, so you will be automatically emailed when new responses arrive." msgstr "" msgid "This message has been hidden." msgstr "" 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 "" msgid "This message has prominence 'hidden'. You can only see it because you are logged in as a super user." msgstr "" msgid "This message has prominence 'hidden'. {{reason}} You can only see it because you are logged in as a super user." msgstr "" 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 "" msgid "This message is hidden, so that only you, the requester, can see it. {{reason}}" msgstr "" msgid "This page of public body statistics is currently experimental, so there are some caveats that should be borne in mind:" msgstr "" msgid "This particular request is finished:" msgstr "" msgid "This person has made no Freedom of Information requests using this site." msgstr "" msgid "This person's annotations" msgstr "" msgid "This person's {{count}} Freedom of Information request" msgid_plural "This person's {{count}} Freedom of Information requests" msgstr[0] "" msgid "This person's {{count}} annotation" msgid_plural "This person's {{count}} annotations" msgstr[0] "" msgid "This request <strong>requires administrator attention</strong>" msgstr "" msgid "This request has already been reported for administrator attention" msgstr "" msgid "This request has an <strong>unknown status</strong>." msgstr "" msgid "This request has been <strong>hidden</strong> from the site, because an administrator considers it not to be an FOI request" msgstr "" msgid "This request has been <strong>hidden</strong> from the site, because an administrator considers it vexatious" msgstr "" msgid "This request has been <strong>reported</strong> as needing administrator attention (perhaps because it is vexatious, or a request for personal information)" msgstr "" 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 "" 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 "" msgid "This request has been reported for administrator attention" msgstr "" msgid "This request has been set by an administrator to \"allow new responses from nobody\"" msgstr "" msgid "This request has had an unusual response, and <strong>requires attention</strong> from the {{site_name}} team." msgstr "" msgid "This request has prominence 'hidden'. You can only see it because you are logged\\n in as a super user." msgstr "" 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 "" msgid "This request is still in progress:" msgstr "" msgid "This request requires administrator attention" msgstr "" msgid "This request was not made via {{site_name}}" msgstr "" 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 "" msgid "This user has been banned from {{site_name}} " msgstr "" msgid "This was not possible because there is already an account using \\nthe email address {{email}}." msgstr "" msgid "To cancel these alerts" msgstr "" msgid "To cancel this alert" msgstr "" msgid "To carry on, you need to sign in or make an account. Unfortunately, there\\nwas a technical problem trying to do this." msgstr "" msgid "To change your email address used on {{site_name}}" msgstr "" msgid "To classify the response to this FOI request" msgstr "" msgid "To do that please send a private email to " msgstr "" msgid "To do this, first click on the link below." msgstr "" msgid "To download the zip file" msgstr "" msgid "To follow all successful requests" msgstr "" msgid "To follow new requests" msgstr "" msgid "To follow requests and responses matching your search" msgstr "" msgid "To follow requests by '{{user_name}}'" msgstr "" msgid "To follow requests made using {{site_name}} to the public authority '{{public_body_name}}'" msgstr "" msgid "To follow the request '{{request_title}}'" msgstr "" 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 "" msgid "To let everyone know, follow this link and then select the appropriate box." msgstr "" msgid "To log into the administrative interface" msgstr "" msgid "To play the request categorisation game" msgstr "" msgid "To post your annotation" msgstr "" msgid "To reply to " msgstr "" msgid "To report this request" msgstr "" msgid "To send a follow up message to " msgstr "" msgid "To send a message to " msgstr "" msgid "To send your FOI request" msgstr "" msgid "To update the status of this FOI request" msgstr "" msgid "To upload a response, you must be logged in using an email address from " msgstr "" msgid "To use the advanced search, combine phrases and labels as described in the search tips below." msgstr "" msgid "To view the email address that we use to send FOI requests to {{public_body_name}}, please enter these words." msgstr "" msgid "To view the response, click on the link below." msgstr "" msgid "To {{public_body_link_absolute}}" msgstr "" msgid "To:" msgstr "" msgid "Today" msgstr "" msgid "Too many requests" msgstr "" msgid "Top search results:" msgstr "" msgid "Track thing" msgstr "" msgid "Track this person" msgstr "" msgid "Track this search" msgstr "" msgid "TrackThing|Track medium" msgstr "" msgid "TrackThing|Track query" msgstr "" msgid "TrackThing|Track type" msgstr "" msgid "Turn off email alerts" msgstr "" msgid "Tweet this request" msgstr "" 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 "" msgid "URL name can't be blank" msgstr "" msgid "Unable to change email address on {{site_name}}" msgstr "" msgid "Unable to send a reply to {{username}}" msgstr "" msgid "Unable to send follow up message to {{username}}" msgstr "" msgid "Unexpected search result type" msgstr "" msgid "Unexpected search result type " msgstr "" 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 "" msgid "Unfortunately, we do not have a working {{info_request_law_used_full}}\\naddress for" msgstr "" msgid "Unknown" msgstr "" msgid "Unsubscribe" msgstr "" msgid "Unusual response." msgstr "" msgid "Update the status of this request" msgstr "" msgid "Update the status of your request to " msgstr "" 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 "" msgid "Use quotes when you want to find an exact phrase, e.g. <strong><code>\"Liverpool City Council\"</code></strong>" msgstr "" msgid "User" msgstr "" msgid "User info request sent alert" msgstr "" msgid "User – {{name}}" msgstr "" msgid "UserInfoRequestSentAlert|Alert type" msgstr "" msgid "User|About me" msgstr "" msgid "User|Address" msgstr "" msgid "User|Admin level" msgstr "" msgid "User|Ban text" msgstr "" msgid "User|Dob" msgstr "" msgid "User|Email" msgstr "" msgid "User|Email bounce message" msgstr "" msgid "User|Email bounced at" msgstr "" msgid "User|Email confirmed" msgstr "" msgid "User|Hashed password" msgstr "" msgid "User|Last daily track email" msgstr "" msgid "User|Locale" msgstr "" msgid "User|Name" msgstr "" msgid "User|No limit" msgstr "" msgid "User|Receive email alerts" msgstr "" msgid "User|Salt" msgstr "" msgid "User|Url name" msgstr "" msgid "Version {{version}}" msgstr "" msgid "View FOI email address" msgstr "" msgid "View FOI email address for '{{public_body_name}}'" msgstr "" msgid "View FOI email address for {{public_body_name}}" msgstr "" msgid "View Freedom of Information requests made by {{user_name}}:" msgstr "" msgid "View and search requests" msgstr "" msgid "View authorities" msgstr "" msgid "View email" msgstr "" msgid "View requests" msgstr "" msgid "Waiting clarification." msgstr "" msgid "Waiting for an <strong>internal review</strong> by {{public_body_link}} of their handling of this request." msgstr "" msgid "Waiting for the public authority to complete an internal review of their handling of the request" msgstr "" msgid "Waiting for the public authority to reply" msgstr "" msgid "Was the response you got to your FOI request any good?" msgstr "" msgid "We consider it is not a valid FOI request, and have therefore hidden it from other users." msgstr "" msgid "We consider it to be vexatious, and have therefore hidden it from other users." msgstr "" msgid "We do not have a working request email address for this authority." msgstr "" msgid "We do not have a working {{law_used_full}} address for {{public_body_name}}." msgstr "" 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 "" 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 "" msgid "We will not reveal your email address to anybody unless you\\nor the law tell us to." msgstr "" msgid "We will not reveal your email addresses to anybody unless you\\nor the law tell us to." msgstr "" msgid "We're waiting for" msgstr "" msgid "We're waiting for someone to read" msgstr "" 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 "" msgid "We've sent you an email, and you'll need to click the link in it before you can\\ncontinue." msgstr "" msgid "We've sent you an email, click the link in it, then you can change your password." msgstr "" msgid "What are you doing?" msgstr "" msgid "What best describes the status of this request now?" msgstr "" msgid "What information has been released?" msgstr "" msgid "What information has been requested?" msgstr "" msgid "When you get there, please update the status to say if the response \\ncontains any useful information." msgstr "" msgid "When you receive the paper response, please help\\n others find out what it says:" msgstr "" msgid "When you're done, <strong>come back here</strong>, <a href=\"{{url}}\">reload this page</a> and file your new request." msgstr "" msgid "Which of these is happening?" msgstr "" msgid "Who can I request information from?" msgstr "" msgid "Withdrawn by the requester." msgstr "" msgid "Wk" msgstr "" msgid "Would you like to see a website like this in your country?" msgstr "" msgid "Write a reply" msgstr "" msgid "Write a reply to " msgstr "" msgid "Write your FOI follow up message to " msgstr "" msgid "Write your request in <strong>simple, precise language</strong>." msgstr "" msgid "You" msgstr "" msgid "You are already following new requests" msgstr "" msgid "You are already following requests to {{public_body_name}}" msgstr "" msgid "You are already following things matching this search" msgstr "" msgid "You are already following this person" msgstr "" msgid "You are already following this request" msgstr "" msgid "You are already following updates about {{track_description}}" msgstr "" msgid "You are currently receiving notification of new activity on your wall by email." msgstr "" msgid "You are following all new successful responses" msgstr "" msgid "You are no longer following {{track_description}}." msgstr "" msgid "You are now <a href=\"{{wall_url_user}}\">following</a> updates about {{track_description}}" msgstr "" msgid "You can <strong>complain</strong> by" msgstr "" msgid "You can change the requests and users you are following on <a href=\"{{profile_url}}\">your profile page</a>." msgstr "" 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 "" msgid "You can only request information about the environment from this authority." msgstr "" msgid "You have a new response to the {{law_used_full}} request " msgstr "" msgid "You have found a bug. Please <a href=\"{{contact_url}}\">contact us</a> to tell us about the problem" msgstr "" 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 "" msgid "You have made no Freedom of Information requests using this site." msgstr "" msgid "You have now changed the text about you on your profile." msgstr "" msgid "You have now changed your email address used on {{site_name}}" msgstr "" 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 "" msgid "You know what caused the error, and can <strong>suggest a solution</strong>, such as a working email address." msgstr "" 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 "" 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 "" 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 "" msgid "You need to be logged in to change the text about you on your profile." msgstr "" msgid "You need to be logged in to change your profile photo." msgstr "" msgid "You need to be logged in to clear your profile photo." msgstr "" msgid "You need to be logged in to edit your profile." msgstr "" 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 "" 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 "" msgid "You want to <strong>give your postal address</strong> to the authority in private." msgstr "" 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 "" msgid "You will no longer be emailed updates for those alerts" msgstr "" msgid "You will now be emailed updates about {{track_description}}. <a href=\"{{change_email_alerts_url}}\">Prefer not to receive emails?</a>" msgstr "" msgid "You will only get an answer to your request if you follow up\\nwith the clarification." msgstr "" 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 "" msgid "You're long overdue a response to your FOI request - " msgstr "" msgid "You're not following anything." msgstr "" msgid "You've now cleared your profile photo" msgstr "" 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 "" msgid "Your annotations" msgstr "" msgid "Your details, including your email address, have not been given to anyone." msgstr "" msgid "Your e-mail:" 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 "" msgid "Your follow up message has been sent on its way." msgstr "" msgid "Your internal review request has been sent on its way." msgstr "" msgid "Your message has been sent. Thank you for getting in touch! We'll get back to you soon." msgstr "" msgid "Your message to {{recipient_user_name}} has been sent" msgstr "" msgid "Your message to {{recipient_user_name}} has been sent!" msgstr "" msgid "Your message will appear in <strong>search engines</strong>" msgstr "" msgid "Your name and annotation will appear in <strong>search engines</strong>." msgstr "" msgid "Your name, request and any responses will appear in <strong>search engines</strong>\\n (<a href=\"{{url}}\">details</a>)." msgstr "" msgid "Your name:" msgstr "" msgid "Your original message is attached." msgstr "" msgid "Your password has been changed." msgstr "" msgid "Your password:" msgstr "" msgid "Your photo will be shown in public <strong>on the Internet</strong>,\\n wherever you do something on {{site_name}}." msgstr "" msgid "Your request '{{request}}' at {{url}} has been reviewed by moderators." msgstr "" msgid "Your request on {{site_name}} hidden" msgstr "" msgid "Your request was called {{info_request}}. Letting everyone know whether you got the information will help us keep tabs on" msgstr "" msgid "Your request:" msgstr "" msgid "Your response to an FOI request was not delivered" msgstr "" msgid "Your response will <strong>appear on the Internet</strong>, <a href=\"{{url}}\">read why</a> and answers to other questions." msgstr "" msgid "Your thoughts on what the {{site_name}} <strong>administrators</strong> should do about the request." msgstr "" msgid "Your {{count}} Freedom of Information request" msgid_plural "Your {{count}} Freedom of Information requests" msgstr[0] "" msgid "Your {{count}} annotation" msgid_plural "Your {{count}} annotations" msgstr[0] "" msgid "Your {{site_name}} email alert" msgstr "" msgid "Yours faithfully," msgstr "" msgid "Yours sincerely," msgstr "" msgid "Yours," msgstr "" msgid "[FOI #{{request}} email]" msgstr "" msgid "[{{public_body}} request email]" msgstr "" msgid "[{{site_name}} contact email]" msgstr "" msgid "\\n\\n[ {{site_name}} note: The above text was badly encoded, and has had strange characters removed. ]" msgstr "" msgid "a one line summary of the information you are requesting, \\n\t\t\te.g." msgstr "" msgid "admin" msgstr "" msgid "alaveteli_foi:The software that runs {{site_name}}" msgstr "" msgid "all requests" msgstr "" msgid "also called {{public_body_short_name}}" msgstr "" msgid "an anonymous user" msgstr "" msgid "and" msgstr "" msgid "and update the status accordingly. Perhaps <strong>you</strong> might like to help out by doing that?" msgstr "" msgid "and update the status." msgstr "" msgid "and we'll suggest <strong>what to do next</strong>" msgstr "" msgid "any <a href=\"/list\">new requests</a>" msgstr "" msgid "any <a href=\"/list/successful\">successful requests</a>" msgstr "" msgid "anything" msgstr "" msgid "are long overdue." msgstr "" msgid "at" msgstr "" msgid "authorities" msgstr "" msgid "awaiting a response" msgstr "" msgid "beginning with ‘{{first_letter}}’" msgstr "" msgid "between two dates" msgstr "" msgid "but followupable" msgstr "" msgid "by" msgstr "" msgid "by <strong>{{date}}</strong>" msgstr "" msgid "by {{public_body_name}} to {{info_request_user}} on {{date}}." msgstr "" msgid "by {{user_link_absolute}}" msgstr "" msgid "comments" msgstr "" msgid "containing your postal address, and asking them to reply to this request.\\n Or you could phone them." msgstr "" msgid "details" msgstr "" msgid "display_status only works for incoming and outgoing messages right now" msgstr "" msgid "during term time" msgstr "" msgid "edit text about you" msgstr "" msgid "even during holidays" msgstr "" msgid "everything" msgstr "" msgid "external" msgstr "" msgid "has reported an" msgstr "" msgid "have delayed." msgstr "" msgid "hide quoted sections" msgstr "" msgid "in term time" msgstr "" msgid "in the category ‘{{category_name}}’" msgstr "" msgid "internal error" msgstr "" msgid "internal reviews" msgstr "" msgid "is <strong>waiting for your clarification</strong>." msgstr "" msgid "just to see how it works" msgstr "" msgid "left an annotation" msgstr "" msgid "made." msgstr "" msgid "matching the tag ‘{{tag_name}}’" msgstr "" msgid "messages from authorities" msgstr "" msgid "messages from users" msgstr "" msgid "move..." msgstr "" msgid "no later than" msgstr "" 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 "" msgid "normally" msgstr "" msgid "not requestable due to: {{reason}}" msgstr "" msgid "please sign in as " msgstr "" msgid "requesting an internal review" msgstr "" msgid "requests" msgstr "" msgid "requests which are {{list_of_statuses}}" 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 "" msgid "send a follow up message" msgstr "" msgid "sent to {{public_body_name}} by {{info_request_user}} on {{date}}." msgstr "" 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 "" msgid "sign in" msgstr "" msgid "simple_date_format" msgstr "" msgid "successful" msgstr "" msgid "successful requests" msgstr "" msgid "that you made to" msgstr "" msgid "the main FOI contact address for {{public_body}}" msgstr "" #. This phrase completes the following sentences: #. Request an internal review from... #. Send a public follow up message to... #. Send a public reply to... #. Don't want to address your message to... ? msgid "the main FOI contact at {{public_body}}" msgstr "" msgid "the requester" msgstr "" msgid "the {{site_name}} team" msgstr "" msgid "to read" msgstr "" msgid "to send a follow up message." msgstr "" msgid "to {{public_body}}" msgstr "" msgid "unknown reason " msgstr "" msgid "unknown status " msgstr "" msgid "unresolved requests" msgstr "" msgid "unsubscribe" msgstr "" msgid "unsubscribe all" msgstr "" msgid "unsuccessful" msgstr "" msgid "unsuccessful requests" msgstr "" msgid "useful information." msgstr "" msgid "users" msgstr "" msgid "what's that?" msgstr "" msgid "{{count}} FOI requests found" msgstr "" msgid "{{count}} Freedom of Information request to {{public_body_name}}" msgid_plural "{{count}} Freedom of Information requests to {{public_body_name}}" msgstr[0] "" msgid "{{count}} person is following this authority" msgid_plural "{{count}} people are following this authority" msgstr[0] "" msgid "{{count}} request" msgid_plural "{{count}} requests" msgstr[0] "" msgid "{{count}} request made." msgid_plural "{{count}} requests made." msgstr[0] "" 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 "" msgid "{{info_request_user_name}} only:" msgstr "" msgid "{{law_used_full}} request - {{title}}" msgstr "" msgid "{{law_used_full}} request GQ - {{title}}" msgstr "" msgid "{{law_used}} requests at {{public_body}}" msgstr "" msgid "{{length_of_time}} ago" msgstr "" msgid "{{list_of_things}} matching text '{{search_query}}'" msgstr "" msgid "{{number_of_comments}} comments" msgstr "" msgid "{{public_body_link}} answered a request about" msgstr "" msgid "{{public_body_link}} was sent a request about" msgstr "" msgid "{{public_body_name}} only:" msgstr "" msgid "{{public_body}} has asked you to explain part of your {{law_used}} request." msgstr "" msgid "{{public_body}} sent a response to {{user_name}}" msgstr "" msgid "{{reason}}, please sign in or make a new account." msgstr "" msgid "{{search_results}} matching '{{query}}'" msgstr "" msgid "{{site_name}} blog and tweets" msgstr "" msgid "{{site_name}} covers requests to {{number_of_authorities}} authorities, including:" msgstr "" msgid "{{site_name}} sends new requests to <strong>{{request_email}}</strong> for this authority." msgstr "" msgid "{{site_name}} users have made {{number_of_requests}} requests, including:" msgstr "" 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 "" msgid "{{user_name}} (Account suspended)" msgstr "" msgid "{{user_name}} - Freedom of Information requests" msgstr "" msgid "{{user_name}} - user profile" msgstr "" msgid "{{user_name}} added an annotation" msgstr "" msgid "{{user_name}} has annotated your {{law_used_short}} \\nrequest. Follow this link to see what they wrote." msgstr "" msgid "{{user_name}} has used {{site_name}} to send you the message below." msgstr "" msgid "{{user_name}} sent a follow up message to {{public_body}}" msgstr "" msgid "{{user_name}} sent a request to {{public_body}}" msgstr "" msgid "{{username}} left an annotation:" msgstr "" 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 "" msgid "{{user}} made this {{law_used_full}} request" msgstr ""