summon 1.1.9 → 1.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,6 +15,7 @@ module Summon::Transport
15
15
  @session_id = @options[:session_id] || "SUMMON-SESSION-#{Socket.gethostname}-#{$$}-#{sidalloc}"
16
16
  @url = @options[:url]
17
17
  @log = Summon::Log.new(options[:log])
18
+ @benchmark = @options[:benchmark] || Summon::Service::Pass.new
18
19
  end
19
20
 
20
21
  def get(path, params = {})
@@ -24,40 +25,50 @@ module Summon::Transport
24
25
  end
25
26
 
26
27
  def urlget(url, params = nil, session_id = nil)
27
- uri = URI.parse url
28
- params ||= from_query_string(uri.query)
29
- session_id ||= @session_id
30
- headers = Headers.new(
31
- :url => url,
32
- :params => params,
33
- :access_id => @access_id,
34
- :secret_key => @secret_key,
35
- :client_key => @client_key,
36
- :session_id => session_id,
37
- :log => @log
38
- )
39
-
40
- @log.info("ruby-summon:transport") {
41
- "GET: #{url}"
42
- }
43
- http = Net::HTTP.new(uri.host, uri.port)
44
- http.start do
45
- get = Net::HTTP::Get.new("#{uri.path}#{'?' + uri.query if uri.query && uri.query != ''}")
46
- get.merge! headers
47
- http.request(get) do |response|
48
- case response
49
- when Net::HTTPSuccess
50
- return parse(response)
51
- when Net::HTTPUnauthorized
52
- raise AuthorizationError, status(response)
53
- when Net::HTTPClientError
54
- raise RequestError, error(response)
55
- when Net::HTTPServerError
56
- raise ServiceError, error(response)
57
- else
58
- raise UnknownResponseError, "Unknown response: #{response}"
59
- end
28
+ @benchmark.report("total:") do
29
+ uri = URI.parse url
30
+ params ||= from_query_string(uri.query)
31
+ session_id ||= @session_id
32
+ headers = @benchmark.report("calculate headers") do
33
+ Headers.new(
34
+ :url => url,
35
+ :params => params,
36
+ :access_id => @access_id,
37
+ :secret_key => @secret_key,
38
+ :client_key => @client_key,
39
+ :session_id => session_id,
40
+ :log => @log
41
+ )
60
42
  end
43
+ @log.info("ruby-summon:transport") {
44
+ "GET: #{url}"
45
+ }
46
+ result = nil
47
+ http = Net::HTTP.new(uri.host, uri.port)
48
+ http.start do
49
+ get = Net::HTTP::Get.new("#{uri.path}#{'?' + uri.query if uri.query && uri.query != ''}")
50
+ get.merge! headers
51
+ response = @benchmark.report("http request") do
52
+ http.request(get)
53
+ end
54
+ case response
55
+ when Net::HTTPSuccess
56
+ @benchmark.report("parse response") do
57
+ result = parse(response)
58
+ end
59
+ when Net::HTTPUnauthorized
60
+ raise AuthorizationError, status(response)
61
+ when Net::HTTPClientError
62
+ raise RequestError, error(response)
63
+ when Net::HTTPServerError
64
+ raise ServiceError, error(response)
65
+ else
66
+ raise UnknownResponseError, "Unknown response: #{response}"
67
+ end
68
+ end
69
+
70
+ ###
71
+ result
61
72
  end
62
73
  end
63
74
 
@@ -227,6 +227,8 @@ content_type: Audio Recording
227
227
  corporate_authors:
228
228
  - Hunter, Rick
229
229
  - Crusher, Beverly
230
+ dbid:
231
+ - GXQ
230
232
  dissertation_advisor: Claudio Friedmann
231
233
  dissertation_category: Education
232
234
  dissertation_degree: M.S.J.
@@ -236,6 +238,7 @@ dissertation_degree_date_decade: "2000"
236
238
  dissertation_degree_date_year: "2001"
237
239
  dissertation_school: West Virginia University
238
240
  doi: 10.1109\/CBMS.2008.1
241
+ edition:
239
242
  end_page: i
240
243
  fulltext: false
241
244
  genres:
@@ -256,6 +259,8 @@ issns:
256
259
  issue: "7"
257
260
  languages:
258
261
  - English
262
+ lib_guide_tab: []
263
+
259
264
  library: Women's Center Library
260
265
  open_url: ctx_ver=Z39.88-2004&rfr_id=info:sid/summon.serialssolutions.com&rft_val_fmt=info:ofi/fmt:kev:mtx:dc&rft.title=Lisa+Hunter+--+alive&rft.creator=Hunter%2C+Lisa&rft.date=c200-0.&rft.pub=Spirulina+Records&rft.externalDBID=n%2Fa&rft.externalDocID=b16644323
261
266
  page_count: xxviii, 140 p.
@@ -17,7 +17,8 @@ describe Summon::Facet do
17
17
  it "should return the default value" do
18
18
  mock(:service, :locale => 'en').tap do |service|
19
19
  @facet = Summon::Facet.new(service, JSON.parse(EXAMPLE_FACET_JSON))
20
- @facet.local_name.should == @facet.display_name
20
+ @facet.display_name.should == "ContentType"
21
+ @facet.local_name.should == "Content Type"
21
22
  end
22
23
  end
23
24
 
@@ -33,7 +33,7 @@ describe Summon::Schema do
33
33
  Class.new(Summon::Schema).new(service).tap do |o|
34
34
  o.translate("ContentType").should == 'Type de la Contente'
35
35
  service.stub!(:locale).and_return('en')
36
- o.translate("ContentType").should == 'ContentType'
36
+ o.translate("ContentType").should == 'Content Type'
37
37
  end
38
38
  end
39
39
  end
@@ -48,7 +48,7 @@ describe Summon::Schema do
48
48
  it "should default to english if it does not recognize the locale" do
49
49
  mock(:service, :locale => 'xx').tap do |service|
50
50
  Class.new(Summon::Schema).new(service).tap do |o|
51
- o.translate("ContentType").should == 'ContentType'
51
+ o.translate("ContentType").should == 'Content Type'
52
52
  end
53
53
  end
54
54
  end
@@ -110,6 +110,33 @@ describe Summon::Schema do
110
110
  o.steaming.should_not be_nil
111
111
  o.steaming.type.should == "swirled"
112
112
  end
113
+
114
+ it "should accept a class as transformer" do
115
+ class Summon::DogHouse < Summon::Schema
116
+ attr :type
117
+ end
118
+ class_eval do
119
+ attr :place, :transform => Summon::DogHouse
120
+ end
121
+
122
+ o = init('place' => {:type => 'fancy'})
123
+ o.place.should_not be_nil
124
+ o.place.type.should == 'fancy'
125
+ end
126
+
127
+ it "should accept an array of symbols as transformer" do
128
+ module Summon::Pets; end
129
+ class Summon::Pets::PitBull < Summon::Schema
130
+ attr :name
131
+ end
132
+ class_eval do
133
+ attr :dog, :transform => [:pets, :pit_bull]
134
+ end
135
+
136
+ o = init('dog' => {:name => 'Fido'})
137
+ o.dog.should_not be_nil
138
+ o.dog.name.should == "Fido"
139
+ end
113
140
 
114
141
  it "will apply a transform across an array if the field is an array" do
115
142
  class Summon::DogPatch < Summon::Schema
data/summon.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{summon}
5
- s.version = "1.1.7"
5
+ s.version = "1.1.12"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Charles Lowell"]
9
- s.date = %q{2010-03-08}
9
+ s.date = %q{2010-10-19}
10
10
  s.description = %q{Ruby language bindings for Serials Solutions Summon Unified Discovery Service}
11
11
  s.email = ["cowboyd@thefrontside.net"]
12
12
  s.executables = ["summon", "summonh"]
13
13
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt"]
14
- s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "bin/summon", "bin/summonh", "ispec/integration_spec.rb", "lib/summon.rb", "lib/summon/cli.rb", "lib/summon/locales/en.rb", "lib/summon/locales/fr.rb", "lib/summon/locales/jp.rb", "lib/summon/locales/xx.rb", "lib/summon/log.rb", "lib/summon/schema.rb", "lib/summon/schema/availability.rb", "lib/summon/schema/citation.rb", "lib/summon/schema/date.rb", "lib/summon/schema/document.rb", "lib/summon/schema/error.rb", "lib/summon/schema/facet.rb", "lib/summon/schema/query.rb", "lib/summon/schema/range.rb", "lib/summon/schema/recommendation_list.rb", "lib/summon/schema/search.rb", "lib/summon/schema/suggestion.rb", "lib/summon/service.rb", "lib/summon/transport.rb", "lib/summon/transport/canned.json", "lib/summon/transport/canned.rb", "lib/summon/transport/errors.rb", "lib/summon/transport/headers.rb", "lib/summon/transport/http.rb", "lib/summon/transport/qstring.rb", "script/console", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/summon/log_spec.rb", "spec/summon/schema/availability_spec.rb", "spec/summon/schema/citation_spec.rb", "spec/summon/schema/date_spec.rb", "spec/summon/schema/document_spec.rb", "spec/summon/schema/facet_spec.rb", "spec/summon/schema/query_spec.rb", "spec/summon/schema/range_spec.rb", "spec/summon/schema/recommendation_list_spec.rb", "spec/summon/schema/search_spec.rb", "spec/summon/schema_spec.rb", "spec/summon/service_spec.rb", "spec/summon/transport/headers_spec.rb", "spec/summon/transport/http_spec.rb", "spec/summon/transport/qstring_spec.rb", "spec/summon_spec.rb", "summon.gemspec"]
14
+ s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "bin/summon", "bin/summonh", "ispec/integration_spec.rb", "lib/summon.rb", "lib/summon/benchmark.rb", "lib/summon/cli.rb", "lib/summon/locales/dadk.rb", "lib/summon/locales/dede.rb", "lib/summon/locales/en.rb", "lib/summon/locales/eses.rb", "lib/summon/locales/fifi.rb", "lib/summon/locales/fr.rb", "lib/summon/locales/frfr.rb", "lib/summon/locales/isis.rb", "lib/summon/locales/itit.rb", "lib/summon/locales/jp.rb", "lib/summon/locales/nlnl.rb", "lib/summon/locales/nono.rb", "lib/summon/locales/ptpt.rb", "lib/summon/locales/svse.rb", "lib/summon/locales/zacn.rb", "lib/summon/locales/zhcn.rb", "lib/summon/log.rb", "lib/summon/schema.rb", "lib/summon/schema/availability.rb", "lib/summon/schema/citation.rb", "lib/summon/schema/date.rb", "lib/summon/schema/document.rb", "lib/summon/schema/error.rb", "lib/summon/schema/facet.rb", "lib/summon/schema/query.rb", "lib/summon/schema/range.rb", "lib/summon/schema/recommendation_list.rb", "lib/summon/schema/search.rb", "lib/summon/schema/suggestion.rb", "lib/summon/service.rb", "lib/summon/transport.rb", "lib/summon/transport/canned.json", "lib/summon/transport/canned.rb", "lib/summon/transport/errors.rb", "lib/summon/transport/headers.rb", "lib/summon/transport/http.rb", "lib/summon/transport/qstring.rb", "script/console", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/summon/log_spec.rb", "spec/summon/schema/availability_spec.rb", "spec/summon/schema/citation_spec.rb", "spec/summon/schema/date_spec.rb", "spec/summon/schema/document_spec.rb", "spec/summon/schema/facet_spec.rb", "spec/summon/schema/query_spec.rb", "spec/summon/schema/range_spec.rb", "spec/summon/schema/recommendation_list_spec.rb", "spec/summon/schema/search_spec.rb", "spec/summon/schema_spec.rb", "spec/summon/service_spec.rb", "spec/summon/transport/headers_spec.rb", "spec/summon/transport/http_spec.rb", "spec/summon/transport/qstring_spec.rb", "spec/summon_spec.rb", "summon.gemspec"]
15
15
  s.homepage = %q{http://summon.rubyforge.org}
16
16
  s.post_install_message = %q{
17
17
  For comprehensive documentation on Summon API options and usage visit:
@@ -22,14 +22,14 @@ http://api.summon.serialssolutions.com
22
22
  s.rdoc_options = ["--main", "README.rdoc"]
23
23
  s.require_paths = ["lib"]
24
24
  s.rubyforge_project = %q{summon}
25
- s.rubygems_version = %q{1.3.5}
25
+ s.rubygems_version = %q{1.3.7}
26
26
  s.summary = %q{Ruby language bindings for Serials Solutions Summon Unified Discovery Service}
27
27
 
28
28
  if s.respond_to? :specification_version then
29
29
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
30
30
  s.specification_version = 3
31
31
 
32
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
32
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
33
33
  s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
34
34
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
35
35
  s.add_development_dependency(%q<hoe>, [">= 2.5.0"])
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: summon
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 11
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
8
  - 1
8
- - 9
9
- version: 1.1.9
9
+ - 12
10
+ version: 1.1.12
10
11
  platform: ruby
11
12
  authors:
12
13
  - Charles Lowell
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-04 00:00:00 -05:00
18
+ date: 2010-10-20 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: json
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 31
27
30
  segments:
28
31
  - 1
29
32
  - 2
@@ -35,9 +38,11 @@ dependencies:
35
38
  name: rspec
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ">="
40
44
  - !ruby/object:Gem::Version
45
+ hash: 13
41
46
  segments:
42
47
  - 1
43
48
  - 2
@@ -49,14 +54,16 @@ dependencies:
49
54
  name: hoe
50
55
  prerelease: false
51
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
52
58
  requirements:
53
59
  - - ">="
54
60
  - !ruby/object:Gem::Version
61
+ hash: 19
55
62
  segments:
56
63
  - 2
57
64
  - 6
58
- - 0
59
- version: 2.6.0
65
+ - 2
66
+ version: 2.6.2
60
67
  type: :development
61
68
  version_requirements: *id003
62
69
  description: Ruby language bindings for Serials Solutions Summon Unified Discovery Service
@@ -81,11 +88,24 @@ files:
81
88
  - bin/summonh
82
89
  - ispec/integration_spec.rb
83
90
  - lib/summon.rb
91
+ - lib/summon/benchmark.rb
84
92
  - lib/summon/cli.rb
93
+ - lib/summon/locales/dadk.rb
94
+ - lib/summon/locales/dede.rb
85
95
  - lib/summon/locales/en.rb
96
+ - lib/summon/locales/eses.rb
97
+ - lib/summon/locales/fifi.rb
86
98
  - lib/summon/locales/fr.rb
99
+ - lib/summon/locales/frfr.rb
100
+ - lib/summon/locales/isis.rb
101
+ - lib/summon/locales/itit.rb
87
102
  - lib/summon/locales/jp.rb
88
- - lib/summon/locales/xx.rb
103
+ - lib/summon/locales/nlnl.rb
104
+ - lib/summon/locales/nono.rb
105
+ - lib/summon/locales/ptpt.rb
106
+ - lib/summon/locales/svse.rb
107
+ - lib/summon/locales/zacn.rb
108
+ - lib/summon/locales/zhcn.rb
89
109
  - lib/summon/log.rb
90
110
  - lib/summon/schema.rb
91
111
  - lib/summon/schema/availability.rb
@@ -145,23 +165,27 @@ rdoc_options:
145
165
  require_paths:
146
166
  - lib
147
167
  required_ruby_version: !ruby/object:Gem::Requirement
168
+ none: false
148
169
  requirements:
149
170
  - - ">="
150
171
  - !ruby/object:Gem::Version
172
+ hash: 3
151
173
  segments:
152
174
  - 0
153
175
  version: "0"
154
176
  required_rubygems_version: !ruby/object:Gem::Requirement
177
+ none: false
155
178
  requirements:
156
179
  - - ">="
157
180
  - !ruby/object:Gem::Version
181
+ hash: 3
158
182
  segments:
159
183
  - 0
160
184
  version: "0"
161
185
  requirements: []
162
186
 
163
187
  rubyforge_project: summon
164
- rubygems_version: 1.3.6
188
+ rubygems_version: 1.3.7
165
189
  signing_key:
166
190
  specification_version: 3
167
191
  summary: Ruby language bindings for Serials Solutions Summon Unified Discovery Service
@@ -1,180 +0,0 @@
1
- module Summon
2
- module Locale
3
- module XX
4
- TRANSLATIONS = {
5
- "ContentType" => "ContentType",
6
- "IsScholarly" => "IsScholarly",
7
- "Language" => "Language",
8
- "Library" => "Library",
9
- "PublicationDate" => "PublicationDate",
10
- "SubjectTerms" => "SubjectTerms",
11
-
12
- "Album" => "Album",
13
- "Architectural Drawing" => "Architectural Drawing",
14
- "Archival Material" => "Archival Material",
15
- "Art" => "Art",
16
- "Artifact" => "Artifact",
17
- "Audio Recording" => "Audio Recording",
18
- "Blueprint" => "Blueprint",
19
- "Blueprints" => "Blueprints",
20
- "Book" => "Book",
21
- "Book Chapter" => "Book Chapter",
22
- "Book Review" => "Book Review",
23
- "Catalog" => "Catalog",
24
- "Ceremonial Object" => "Ceremonial Object",
25
- "Clothing" => "Clothing",
26
- "Computer File" => "Computer File",
27
- "Conference Proceeding" => "Conference Proceeding",
28
- "Dissertation" => "Dissertation",
29
- "Drawing" => "Drawing",
30
- "eBook" => "eBook",
31
- "Equipment" => "Equipment",
32
- "Furnishing" => "Furnishing",
33
- "Government Document" => "Government Document",
34
- "Graphic Arts" => "Graphic Arts",
35
- "Houseware" => "Houseware",
36
- "Image" => "Image",
37
- "Implements" => "Implements",
38
- "Journal" => "Journal",
39
- "Journal Article" => "Journal Article",
40
- "Kit" => "Kit",
41
- "Manuscript" => "Manuscript",
42
- "Map" => "Map",
43
- "Microfilm" => "Microfilm",
44
- "Microform" => "Microform",
45
- "Model" => "Model",
46
- "Music Recording" => "Music Recording",
47
- "Music Score" => "Music Score",
48
- "Musical Instrument" => "Musical Instrument",
49
- "Newsletter" => "Newsletter",
50
- "Newspaper" => "Newspaper",
51
- "Newspaper Article" => "Newspaper Article",
52
- "Painting" => "Painting",
53
- "Pamphlet" => "Pamphlet",
54
- "Paper" => "Paper",
55
- "Patent" => "Patent",
56
- "Personal Article" => "Personal Article",
57
- "Photograph" => "Photograph",
58
- "Play" => "Play",
59
- "Poem" => "Poem",
60
- "Postcard" => "Postcard",
61
- "Poster" => "Poster",
62
- "Presentation" => "Presentation",
63
- "Publication" => "Publication",
64
- "Publication Article" => "Publication Article",
65
- "Realia" => "Realia",
66
- "Report" => "Report",
67
- "Special Collection" => "Special Collection",
68
- "Spoken Word Recording" => "Spoken Word Recording",
69
- "Standard" => "Standard",
70
- "Tool" => "Tool",
71
- "Trade Publication Article" => "Trade Publication Article",
72
- "Transcript" => "Transcript",
73
- "Video Recording" => "Video Recording",
74
- "Web Resource" => "Web Resource",
75
-
76
- "Language" => "Language",
77
- "Afrikaans" => "Afrikaans",
78
- "Albanian" => "Albanian",
79
- "Amharic" => "Amharic",
80
- "Arabic" => "Arabic",
81
- "Aragonese" => "Aragonese",
82
- "Armenian" => "Armenian",
83
- "Aymara" => "Aymara",
84
- "Azerbaijani" => "Azerbaijani",
85
- "Bambara" => "Bambara",
86
- "Basque" => "Basque",
87
- "Belarusian" => "Belarusian",
88
- "Bengali" => "Bengali",
89
- "Bosnian" => "Bosnian",
90
- "Breton" => "Breton",
91
- "Bulgarian" => "Bulgarian",
92
- "Burmese" => "Burmese",
93
- "Catalan" => "Catalan",
94
- "Chechen" => "Chechen",
95
- "Chinese" => "Chinese",
96
- "Church Slavic" => "Church Slavic",
97
- "Cree" => "Cree",
98
- "Croatian" => "Croatian",
99
- "Czech" => "Czech",
100
- "Danish" => "Danish",
101
- "Dutch" => "Dutch",
102
- "English" => "English",
103
- "Esperanto" => "Esperanto",
104
- "Estonian" => "Estonian",
105
- "Fijian" => "Fijian",
106
- "Finnish" => "Finnish",
107
- "French" => "French",
108
- "Fulah" => "Fulah",
109
- "Galician" => "Galician",
110
- "Ganda" => "Ganda",
111
- "Georgian" => "Georgian",
112
- "German" => "German",
113
- "Greek" => "Greek",
114
- "Haitian" => "Haitian",
115
- "Hebrew" => "Hebrew",
116
- "Hindi" => "Hindi",
117
- "Hungarian" => "Hungarian",
118
- "Icelandic" => "Icelandic",
119
- "Indonesian" => "Indonesian",
120
- "Inuktitut" => "Inuktitut",
121
- "inupiaq" => "inupiaq",
122
- "Irish" => "Irish",
123
- "Italian" => "Italian",
124
- "Japanese" => "Japanese",
125
- "Javanese" => "Javanese",
126
- "Korean" => "Korean",
127
- "Kurdish" => "Kurdish",
128
- "Lao" => "Lao",
129
- "Latin" => "Latin",
130
- "Latvian" => "Latvian",
131
- "Lithuanian" => "Lithuanian",
132
- "Macedonian" => "Macedonian",
133
- "Malay" => "Malay",
134
- "Maltese" => "Maltese",
135
- "Maori" => "Maori",
136
- "Marathi" => "Marathi",
137
- "Mongolian" => "Mongolian",
138
- "Navajo" => "Navajo",
139
- "Ndonga" => "Ndonga",
140
- "Nepali" => "Nepali",
141
- "Norwegian" => "Norwegian",
142
- "Norwegian Bokmål" => "Norwegian Bokmål",
143
- "Ojibwa" => "Ojibwa",
144
- "Pali" => "Pali",
145
- "Panjabi" => "Panjabi",
146
- "Persian" => "Persian",
147
- "Polish" => "Polish",
148
- "Portuguese" => "Portuguese",
149
- "Pushto" => "Pushto",
150
- "Quechua" => "Quechua",
151
- "Romanian" => "Romanian",
152
- "Russian" => "Russian",
153
- "Sanskrit" => "Sanskrit",
154
- "Serbian" => "Serbian",
155
- "Slovak" => "Slovak",
156
- "Slovenian" => "Slovenian",
157
- "Spanish" => "Spanish",
158
- "Sundanese" => "Sundanese",
159
- "Swahili" => "Swahili",
160
- "Swedish" => "Swedish",
161
- "Tagalog" => "Tagalog",
162
- "Tamil" => "Tamil",
163
- "Telugu" => "Telugu",
164
- "Thai" => "Thai",
165
- "Tibetan" => "Tibetan",
166
- "Tswana" => "Tswana",
167
- "Turkish" => "Turkish",
168
- "Ukrainian" => "Ukrainian",
169
- "Urdu" => "Urdu",
170
- "Vietnamese" => "Vietnamese",
171
- "Welsh" => "Welsh",
172
- "Western Frisian" => "Western Frisian",
173
- "Wolof" => "Wolof",
174
- "Yiddish" => "Yiddish",
175
- "Yoruba" => "Yoruba",
176
- "Zulu" => "Zulu"
177
- }
178
- end
179
- end
180
- end