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 +4 -4
- data/lib/wovnrb/headers.rb +1 -21
- data/lib/wovnrb/lang.rb +74 -40
- data/lib/wovnrb/version.rb +1 -1
- data/test/lib/headers_test.rb +7 -7
- data/test/lib/lang_test.rb +10 -40
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6cda8576fa90acfe5742dfdb5b96b7a6a7e5cb5905a208faa41fcf97d4ca32a6
|
|
4
|
+
data.tar.gz: 5468906a83cfe9b2cb7b08025e644264e02f51c7727296aa88f1fe766774de1a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 87e18f2650e806066452abdd5397ac02b4443e4c6550a61d07835dd9b9eda1682f465b35618eabb22d6eba4f12fa4cf95ecaad394a66a971616b4a8de05a2ff5
|
|
7
|
+
data.tar.gz: 3700452cb17292a0ff7f6bd8989c192d6b7901dee3e5643c98d702f6b9127698059efc1fef463734eed3e54b804d63abf462d806a27033c4a073d3de2c9dd29f
|
data/lib/wovnrb/headers.rb
CHANGED
|
@@ -98,27 +98,7 @@ module Wovnrb
|
|
|
98
98
|
@path_lang
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
def
|
|
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'
|
data/lib/wovnrb/lang.rb
CHANGED
|
@@ -3,46 +3,80 @@ require 'addressable'
|
|
|
3
3
|
module Wovnrb
|
|
4
4
|
class Lang
|
|
5
5
|
LANG = {
|
|
6
|
-
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
'
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'zh-CHS' => { name: '简体中文',
|
|
13
|
-
'zh-
|
|
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
|
-
'
|
|
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.
|
data/lib/wovnrb/version.rb
CHANGED
data/test/lib/headers_test.rb
CHANGED
|
@@ -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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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)
|
data/test/lib/lang_test.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Wovnrb
|
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def test_langs_length
|
|
10
|
-
assert_equal(
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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.
|
|
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-
|
|
12
|
+
date: 2020-04-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|