wovnrb 2.2.3 → 2.2.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7142c7b987c9c606c3e49258ed9e0aff9948da0fb72b20f0cc830e3c0c65de1
4
- data.tar.gz: 70868e06450c6e67a01c277403993c75432793f2a985bfdd76dac92731cc6e4a
3
+ metadata.gz: 6cda8576fa90acfe5742dfdb5b96b7a6a7e5cb5905a208faa41fcf97d4ca32a6
4
+ data.tar.gz: 5468906a83cfe9b2cb7b08025e644264e02f51c7727296aa88f1fe766774de1a
5
5
  SHA512:
6
- metadata.gz: 7b3667f117278b2646b38b80488aa74f18af0bec771d3ba09bd3232a83d6175fbed349ab2ff6912f2e3201000be11590a4a83a9cb015c8cebbc2a388f66cbac3
7
- data.tar.gz: c162e510d61ab75be43cb0e1ee8fa1e6ffd3b986b200d90b65cb1744128e87f6bc433fa4a231c69ef825a07de500c58ed3ce2c20d962fb3c2a84ae4b8157f9c6
6
+ metadata.gz: 87e18f2650e806066452abdd5397ac02b4443e4c6550a61d07835dd9b9eda1682f465b35618eabb22d6eba4f12fa4cf95ecaad394a66a971616b4a8de05a2ff5
7
+ data.tar.gz: 3700452cb17292a0ff7f6bd8989c192d6b7901dee3e5643c98d702f6b9127698059efc1fef463734eed3e54b804d63abf462d806a27033c4a073d3de2c9dd29f
@@ -98,27 +98,7 @@ module Wovnrb
98
98
  @path_lang
99
99
  end
100
100
 
101
- def browser_lang
102
- if @browser_lang.nil?
103
- match = (@env['HTTP_COOKIE'] || '').match(/wovn_selected_lang\s*=\s*(?<lang>[^;\s]+)/)
104
- if match && match[:lang] && Lang.get_lang(match[:lang])
105
- @browser_lang = match[:lang]
106
- else
107
- # IS THIS RIGHT?
108
- @browser_lang = ''
109
- accept_langs = (@env['HTTP_ACCEPT_LANGUAGE'] || '').split(/[,;]/)
110
- accept_langs.each do |l|
111
- if Lang.get_lang(l)
112
- @browser_lang = l
113
- break
114
- end
115
- end
116
- end
117
- end
118
- @browser_lang
119
- end
120
-
121
- def redirect(lang = browser_lang)
101
+ def redirect(lang)
122
102
  redirect_headers = {}
123
103
  redirect_headers['location'] = redirect_location(lang)
124
104
  redirect_headers['content-length'] = '0'
@@ -3,46 +3,80 @@ require 'addressable'
3
3
  module Wovnrb
4
4
  class Lang
5
5
  LANG = {
6
- # http://msdn.microsoft.com/en-us/library/hh456380.aspx
7
- 'ar' => { name: 'العربية', code: 'ar', en: 'Arabic' },
8
- 'eu' => { name: 'Euskara', code: 'eu', en: 'Basque' },
9
- 'bn' => { name: 'বাংলা ভাষা', code: 'bn', en: 'Bengali' },
10
- 'bg' => { name: 'Български', code: 'bg', en: 'Bulgarian' },
11
- 'ca' => { name: 'Català', code: 'ca', en: 'Catalan' },
12
- 'zh-CHS' => { name: '简体中文', code: 'zh-CHS', en: 'Simp Chinese' },
13
- 'zh-CHT' => { name: '繁體中文', code: 'zh-CHT', en: 'Trad Chinese' },
14
- 'da' => { name: 'Dansk', code: 'da', en: 'Danish' },
15
- 'nl' => { name: 'Nederlands', code: 'nl', en: 'Dutch' },
16
- 'en' => { name: 'English', code: 'en', en: 'English' },
17
- 'fi' => { name: 'Suomi', code: 'fi', en: 'Finnish' },
18
- 'fr' => { name: 'Français', code: 'fr', en: 'French' },
19
- 'gl' => { name: 'Galego', code: 'gl', en: 'Galician' },
20
- 'de' => { name: 'Deutsch', code: 'de', en: 'German' },
21
- 'el' => { name: 'Ελληνικά', code: 'el', en: 'Greek' },
22
- 'he' => { name: 'עברית', code: 'he', en: 'Hebrew' },
23
- 'hu' => { name: 'Magyar', code: 'hu', en: 'Hungarian' },
24
- 'id' => { name: 'Bahasa Indonesia', code: 'id', en: 'Indonesian' },
25
- 'it' => { name: 'Italiano', code: 'it', en: 'Italian' },
26
- 'ja' => { name: '日本語', code: 'ja', en: 'Japanese' },
27
- 'ko' => { name: '한국어', code: 'ko', en: 'Korean' },
28
- 'lv' => { name: 'Latviešu', code: 'lv', en: 'Latvian' },
29
- 'ms' => { name: 'Bahasa Melayu', code: 'ms', en: 'Malay' },
30
- 'my' => { name: 'ဗမာစာ', code: 'my', en: 'Burmese' },
31
- 'ne' => { name: 'नेपाली भाषा', code: 'ne', en: 'Nepali' },
32
- 'fa' => { name: 'زبان_فارسی', code: 'fa', en: 'Persian' },
33
- 'no' => { name: 'Norsk', code: 'no', en: 'Norwegian' },
34
- 'pl' => { name: 'Polski', code: 'pl', en: 'Polish' },
35
- 'pt' => { name: 'Português', code: 'pt', en: 'Portuguese' },
36
- 'ru' => { name: 'Русский', code: 'ru', en: 'Russian' },
37
- 'es' => { name: 'Español', code: 'es', en: 'Spanish' },
38
- 'sw' => { name: 'Kiswahili', code: 'sw', en: 'Swahili' },
39
- 'sv' => { name: 'Svensk', code: 'sv', en: 'Swedish' },
40
- 'th' => { name: 'ภาษาไทย', code: 'th', en: 'Thai' },
41
- 'hi' => { name: 'हिन्दी', code: 'hi', en: 'Hindi' },
42
- 'tr' => { name: 'Türkçe', code: 'tr', en: 'Turkish' },
43
- 'uk' => { name: 'Українська', code: 'uk', en: 'Ukrainian' },
44
- 'ur' => { name: 'اردو', code: 'ur', en: 'Urdu' },
45
- 'vi' => { name: 'Tiếng Việt', code: 'vi', en: 'Vietnamese' }
6
+ 'ar' => { name: 'العربية', code: 'ar', en: 'Arabic' },
7
+ 'eu' => { name: 'Euskara', code: 'eu', en: 'Basque' },
8
+ 'bn' => { name: 'বাংলা ভাষা', code: 'bn', en: 'Bengali' },
9
+ 'bg' => { name: 'Български', code: 'bg', en: 'Bulgarian' },
10
+ 'ca' => { name: 'Català', code: 'ca', en: 'Catalan' },
11
+ 'zh-CN' => { name: '简体中文(中国)', code: 'zh-CN', en: 'Simp Chinese (China)' },
12
+ 'zh-CHS' => { name: '简体中文', code: 'zh-CHS', en: 'Simp Chinese' },
13
+ 'zh-Hant-HK' => { name: '繁體中文(香港)', code: 'zh-Hant-HK', en: 'Trad Chinese (Hong Kong)' },
14
+ 'zh-Hant-TW' => { name: '繁體中文(台湾)', code: 'zh-Hant-TW', en: 'Trad Chinese (Taiwan)' },
15
+ 'zh-CHT' => { name: '繁體中文', code: 'zh-CHT', en: 'Trad Chinese' },
16
+ 'da' => { name: 'Dansk', code: 'da', en: 'Danish' },
17
+ 'nl' => { name: 'Nederlands', code: 'nl', en: 'Dutch' },
18
+ 'en' => { name: 'English', code: 'en', en: 'English' },
19
+ 'en-AU' => { name: 'English (Australia)', code: 'en-AU', en: 'English (Australia)' },
20
+ 'en-CA' => { name: 'English (Canada)', code: 'en-CA', en: 'English (Canada)' },
21
+ 'en-IN' => { name: 'English (India)', code: 'en-IN', en: 'English (India)' },
22
+ 'en-NZ' => { name: 'English (New Zealand)', code: 'en-NZ', en: 'English (New Zealand)' },
23
+ 'en-ZA' => { name: 'English (South Africa)', code: 'en-ZA', en: 'English (South Africa)' },
24
+ 'en-GB' => { name: 'English (United Kingdom)', code: 'en-GB', en: 'English (United Kingdom)' },
25
+ 'en-SG' => { name: 'English (Singapore)', code: 'en-SG', en: 'English (Singapore)' },
26
+ 'en-US' => { name: 'English (United States)', code: 'en-US', en: 'English (United States)' },
27
+ 'fi' => { name: 'Suomi', code: 'fi', en: 'Finnish' },
28
+ 'fr' => { name: 'Français', code: 'fr', en: 'French' },
29
+ 'fr-CA' => { name: 'Français (Canada)', code: 'fr-CA', en: 'French (Canada)' },
30
+ 'fr-FR' => { name: 'Français (France)', code: 'fr-FR', en: 'French (France)' },
31
+ 'fr-CH' => { name: 'Français (Suisse)', code: 'fr-CH', en: 'French (Switzerland)' },
32
+ 'gl' => { name: 'Galego', code: 'gl', en: 'Galician' },
33
+ 'de' => { name: 'Deutsch', code: 'de', en: 'German' },
34
+ 'de-AT' => { name: 'Deutsch (Österreich)', code: 'de-AT', en: 'German (Austria)' },
35
+ 'de-DE' => { name: 'Deutsch (Deutschland)', code: 'de-DE', en: 'German (Germany)' },
36
+ 'de-LI' => { name: 'Deutsch (Liechtenstien)', code: 'de-LI', en: 'German (Liechtenstien)' },
37
+ 'de-CH' => { name: 'Deutsch (Schweiz)', code: 'de-CH', en: 'German (Switzerland)' },
38
+ 'el' => { name: 'Ελληνικά', code: 'el', en: 'Greek' },
39
+ 'he' => { name: 'עברית', code: 'he', en: 'Hebrew' },
40
+ 'hu' => { name: 'Magyar', code: 'hu', en: 'Hungarian' },
41
+ 'id' => { name: 'Bahasa Indonesia', code: 'id', en: 'Indonesian' },
42
+ 'it' => { name: 'Italiano', code: 'it', en: 'Italian' },
43
+ 'it-IT' => { name: 'Italiano (Italia)', code: 'it-IT', en: 'Italian (Italy)' },
44
+ 'it-CH' => { name: 'Italiano (Svizzera)', code: 'it-CH', en: 'Italian (Switzerland)' },
45
+ 'ja' => { name: '日本語', code: 'ja', en: 'Japanese' },
46
+ 'ko' => { name: '한국어', code: 'ko', en: 'Korean' },
47
+ 'lv' => { name: 'Latviešu', code: 'lv', en: 'Latvian' },
48
+ 'ms' => { name: 'Bahasa Melayu', code: 'ms', en: 'Malay' },
49
+ 'my' => { name: 'ဗမာစာ', code: 'my', en: 'Burmese' },
50
+ 'ne' => { name: 'नेपाली भाषा', code: 'ne', en: 'Nepali' },
51
+ 'no' => { name: 'Norsk', code: 'no', en: 'Norwegian' },
52
+ 'fa' => { name: 'زبان_فارسی', code: 'fa', en: 'Persian' },
53
+ 'pl' => { name: 'Polski', code: 'pl', en: 'Polish' },
54
+ 'pt' => { name: 'Português', code: 'pt', en: 'Portuguese' },
55
+ 'pt-BR' => { name: 'Português (Brasil)', code: 'pt-BR', en: 'Portuguese (Brazil)' },
56
+ 'pt-PT' => { name: 'Português (Portugal)', code: 'pt-PT', en: 'Portuguese (Portugal)' },
57
+ 'ru' => { name: 'Русский', code: 'ru', en: 'Russian' },
58
+ 'es' => { name: 'Español', code: 'es', en: 'Spanish' },
59
+ 'es-RA' => { name: 'Español (Argentina)', code: 'es-RA', en: 'Spanish (Argentina)' },
60
+ 'es-CL' => { name: 'Español (Chile)', code: 'es-CL', en: 'Spanish (Chile)' },
61
+ 'es-CO' => { name: 'Español (Colombia)', code: 'es-CO', en: 'Spanish (Colombia)' },
62
+ 'es-CR' => { name: 'Español (Costa Rica)', code: 'es-CR', en: 'Spanish (Costa Rica)' },
63
+ 'es-HN' => { name: 'Español (Honduras)', code: 'es-HN', en: 'Spanish (Honduras)' },
64
+ 'es-419' => { name: 'Español (Latinoamérica)', code: 'es-419', en: 'Spanish (Latin America)' },
65
+ 'es-MX' => { name: 'Español (México)', code: 'es-MX', en: 'Spanish (Mexico)' },
66
+ 'es-PE' => { name: 'Español (Perú)', code: 'es-PE', en: 'Spanish (Peru)' },
67
+ 'es-ES' => { name: 'Español (España)', code: 'es-ES', en: 'Spanish (Spain)' },
68
+ 'es-US' => { name: 'Español (Estados Unidos)', code: 'es-US', en: 'Spanish (United States)' },
69
+ 'es-UY' => { name: 'Español (Uruguay)', code: 'es-UY', en: 'Spanish (Uruguay)' },
70
+ 'es-VE' => { name: 'Español (Venezuela)', code: 'es-VE', en: 'Spanish (Venezuela)' },
71
+ 'sw' => { name: 'Kiswahili', code: 'sw', en: 'Swahili' },
72
+ 'sv' => { name: 'Svensk', code: 'sv', en: 'Swedish' },
73
+ 'tl' => { name: 'Tagalog', code: 'tl', en: 'Tagalog' },
74
+ 'th' => { name: 'ภาษาไทย', code: 'th', en: 'Thai' },
75
+ 'hi' => { name: 'हिन्दी', code: 'hi', en: 'Hindi' },
76
+ 'tr' => { name: 'Türkçe', code: 'tr', en: 'Turkish' },
77
+ 'uk' => { name: 'Українська', code: 'uk', en: 'Ukrainian' },
78
+ 'ur' => { name: 'اردو', code: 'ur', en: 'Urdu' },
79
+ 'vi' => { name: 'Tiếng Việt', code: 'vi', en: 'Vietnamese' }
46
80
  }.freeze
47
81
 
48
82
  # Provides the ISO639-1 code for a given lang code.
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = '2.2.3'.freeze
2
+ VERSION = '2.2.4'.freeze
3
3
  end
@@ -6232,7 +6232,7 @@ module Wovnrb
6232
6232
  h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
6233
6233
 
6234
6234
  keys = Wovnrb::Lang::LANG.keys
6235
- assert_equal(39, keys.size)
6235
+ assert_equal(74, keys.size)
6236
6236
 
6237
6237
  for key in keys
6238
6238
  uri_without_scheme = h.remove_lang("wovn.io/#{key}", key)
@@ -6246,7 +6246,7 @@ module Wovnrb
6246
6246
  def test_remove_lang_path_with_nil_lang
6247
6247
  h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
6248
6248
  keys = Wovnrb::Lang::LANG.keys
6249
- assert_equal(39, keys.size)
6249
+ assert_equal(74, keys.size)
6250
6250
 
6251
6251
  uri_without_scheme = h.remove_lang('wovn.io', nil)
6252
6252
  assert_equal('wovn.io', uri_without_scheme)
@@ -6269,7 +6269,7 @@ module Wovnrb
6269
6269
  h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
6270
6270
 
6271
6271
  keys = Wovnrb::Lang::LANG.keys
6272
- assert_equal(39, keys.size)
6272
+ assert_equal(74, keys.size)
6273
6273
 
6274
6274
  for key in keys
6275
6275
  uri_without_scheme = h.remove_lang("wovn.io/?wovn=#{key}", key)
@@ -6284,7 +6284,7 @@ module Wovnrb
6284
6284
  sut = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query', 'lang_param_name' => 'lang'))
6285
6285
 
6286
6286
  keys = Wovnrb::Lang::LANG.keys
6287
- assert_equal(39, keys.size)
6287
+ assert_equal(74, keys.size)
6288
6288
 
6289
6289
  for key in keys
6290
6290
  uri_without_custom_lang_param = "wovn.io/?wovn=#{key}"
@@ -6302,7 +6302,7 @@ module Wovnrb
6302
6302
  def test_remove_lang_query_with_nil_lang
6303
6303
  h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
6304
6304
  keys = Wovnrb::Lang::LANG.keys
6305
- assert_equal(39, keys.size)
6305
+ assert_equal(74, keys.size)
6306
6306
 
6307
6307
  uri_without_scheme = h.remove_lang('wovn.io', nil)
6308
6308
  assert_equal('wovn.io', uri_without_scheme)
@@ -6325,7 +6325,7 @@ module Wovnrb
6325
6325
  h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
6326
6326
 
6327
6327
  keys = Wovnrb::Lang::LANG.keys
6328
- assert_equal(39, keys.size)
6328
+ assert_equal(74, keys.size)
6329
6329
 
6330
6330
  for key in keys
6331
6331
  uri_without_scheme = h.remove_lang("#{key.downcase}.wovn.io/", key)
@@ -6339,7 +6339,7 @@ module Wovnrb
6339
6339
  def test_remove_lang_subdomain_with_nil_lang
6340
6340
  h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
6341
6341
  keys = Wovnrb::Lang::LANG.keys
6342
- assert_equal(39, keys.size)
6342
+ assert_equal(74, keys.size)
6343
6343
 
6344
6344
  uri_without_scheme = h.remove_lang('wovn.io', nil)
6345
6345
  assert_equal('wovn.io', uri_without_scheme)
@@ -7,7 +7,7 @@ module Wovnrb
7
7
  end
8
8
 
9
9
  def test_langs_length
10
- assert_equal(39, Wovnrb::Lang::LANG.length)
10
+ assert_equal(74, Wovnrb::Lang::LANG.length)
11
11
  end
12
12
 
13
13
  def test_keys_exist
@@ -20,45 +20,15 @@ module Wovnrb
20
20
  end
21
21
 
22
22
  def test_iso_639_1_normalization
23
- assert_equal('ar', Lang.iso_639_1_normalization('ar'))
24
- assert_equal('eu', Lang.iso_639_1_normalization('eu'))
25
- assert_equal('bn', Lang.iso_639_1_normalization('bn'))
26
- assert_equal('bg', Lang.iso_639_1_normalization('bg'))
27
- assert_equal('ca', Lang.iso_639_1_normalization('ca'))
28
- assert_equal('zh-Hans', Lang.iso_639_1_normalization('zh-CHS'))
29
- assert_equal('zh-Hant', Lang.iso_639_1_normalization('zh-CHT'))
30
- assert_equal('da', Lang.iso_639_1_normalization('da'))
31
- assert_equal('nl', Lang.iso_639_1_normalization('nl'))
32
- assert_equal('en', Lang.iso_639_1_normalization('en'))
33
- assert_equal('fi', Lang.iso_639_1_normalization('fi'))
34
- assert_equal('fr', Lang.iso_639_1_normalization('fr'))
35
- assert_equal('gl', Lang.iso_639_1_normalization('gl'))
36
- assert_equal('de', Lang.iso_639_1_normalization('de'))
37
- assert_equal('el', Lang.iso_639_1_normalization('el'))
38
- assert_equal('he', Lang.iso_639_1_normalization('he'))
39
- assert_equal('hu', Lang.iso_639_1_normalization('hu'))
40
- assert_equal('id', Lang.iso_639_1_normalization('id'))
41
- assert_equal('it', Lang.iso_639_1_normalization('it'))
42
- assert_equal('ja', Lang.iso_639_1_normalization('ja'))
43
- assert_equal('ko', Lang.iso_639_1_normalization('ko'))
44
- assert_equal('lv', Lang.iso_639_1_normalization('lv'))
45
- assert_equal('ms', Lang.iso_639_1_normalization('ms'))
46
- assert_equal('my', Lang.iso_639_1_normalization('my'))
47
- assert_equal('ne', Lang.iso_639_1_normalization('ne'))
48
- assert_equal('fa', Lang.iso_639_1_normalization('fa'))
49
- assert_equal('no', Lang.iso_639_1_normalization('no'))
50
- assert_equal('pl', Lang.iso_639_1_normalization('pl'))
51
- assert_equal('pt', Lang.iso_639_1_normalization('pt'))
52
- assert_equal('ru', Lang.iso_639_1_normalization('ru'))
53
- assert_equal('es', Lang.iso_639_1_normalization('es'))
54
- assert_equal('sw', Lang.iso_639_1_normalization('sw'))
55
- assert_equal('sv', Lang.iso_639_1_normalization('sv'))
56
- assert_equal('th', Lang.iso_639_1_normalization('th'))
57
- assert_equal('hi', Lang.iso_639_1_normalization('hi'))
58
- assert_equal('tr', Lang.iso_639_1_normalization('tr'))
59
- assert_equal('uk', Lang.iso_639_1_normalization('uk'))
60
- assert_equal('ur', Lang.iso_639_1_normalization('ur'))
61
- assert_equal('vi', Lang.iso_639_1_normalization('vi'))
23
+ Wovnrb::Lang::LANG.each do |_, l|
24
+ if l[:code] == 'zh-CHS'
25
+ assert_equal('zh-Hans', Lang.iso_639_1_normalization('zh-CHS'))
26
+ elsif l[:code] == 'zh-CHT'
27
+ assert_equal('zh-Hant', Lang.iso_639_1_normalization('zh-CHT'))
28
+ else
29
+ assert_equal(l[:code], Lang.iso_639_1_normalization(l[:code]))
30
+ end
31
+ end
62
32
  end
63
33
 
64
34
  def test_get_code_with_valid_code
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wovnrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Sandford
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-25 00:00:00.000000000 Z
12
+ date: 2020-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport