wovnrb 2.2.3 → 2.2.4

Sign up to get free protection for your applications and to get access to all the features.
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