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 +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
|