wovnrb 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +1 -0
  5. data/.rubocop_todo.yml +308 -0
  6. data/Rakefile +13 -14
  7. data/lib/wovnrb.rb +43 -98
  8. data/lib/wovnrb/api_translator.rb +143 -0
  9. data/lib/wovnrb/headers.rb +78 -92
  10. data/lib/wovnrb/helpers/nokogumbo_helper.rb +1 -1
  11. data/lib/wovnrb/lang.rb +93 -125
  12. data/lib/wovnrb/railtie.rb +5 -7
  13. data/lib/wovnrb/services/glob.rb +3 -3
  14. data/lib/wovnrb/services/html_converter.rb +192 -0
  15. data/lib/wovnrb/services/html_replace_marker.rb +38 -0
  16. data/lib/wovnrb/services/wovn_logger.rb +8 -4
  17. data/lib/wovnrb/settings.rb +5 -3
  18. data/lib/wovnrb/store.rb +35 -26
  19. data/lib/wovnrb/text_caches/cache_base.rb +3 -2
  20. data/lib/wovnrb/text_caches/memory_cache.rb +2 -2
  21. data/lib/wovnrb/version.rb +1 -1
  22. data/test/fixtures/html/test.html +8 -0
  23. data/test/fixtures/html/test_translated.html +8 -0
  24. data/test/lib/api_translator_test.rb +109 -0
  25. data/test/lib/headers_test.rb +84 -55
  26. data/test/lib/lang_test.rb +157 -357
  27. data/test/lib/services/glob_test.rb +1 -1
  28. data/test/lib/services/html_converter_test.rb +166 -0
  29. data/test/lib/services/html_replace_marker_test.rb +75 -0
  30. data/test/lib/services/wovn_logger_test.rb +6 -6
  31. data/test/lib/store_test.rb +25 -69
  32. data/test/lib/text_caches/cache_base_test.rb +1 -1
  33. data/test/lib/text_caches/memory_cache_test.rb +10 -11
  34. data/test/lib/wovnrb_test.rb +77 -310
  35. data/test/test_helper.rb +22 -32
  36. data/wovnrb.gemspec +35 -44
  37. metadata +86 -205
  38. data/ext/dom/Makefile +0 -239
  39. data/lib/wovnrb/api_data.rb +0 -59
  40. data/lib/wovnrb/html_replacers/image_replacer.rb +0 -69
  41. data/lib/wovnrb/html_replacers/input_replacer.rb +0 -38
  42. data/lib/wovnrb/html_replacers/link_replacer.rb +0 -78
  43. data/lib/wovnrb/html_replacers/meta_replacer.rb +0 -28
  44. data/lib/wovnrb/html_replacers/replacer_base.rb +0 -49
  45. data/lib/wovnrb/html_replacers/script_replacer.rb +0 -39
  46. data/lib/wovnrb/html_replacers/text_replacer.rb +0 -21
  47. data/lib/wovnrb/html_replacers/unified_values/dst_swapping_targets_creator.rb +0 -76
  48. data/lib/wovnrb/html_replacers/unified_values/element_category.rb +0 -242
  49. data/lib/wovnrb/html_replacers/unified_values/node_swapping_targets_creator.rb +0 -134
  50. data/lib/wovnrb/html_replacers/unified_values/text_replacer.rb +0 -35
  51. data/lib/wovnrb/html_replacers/unified_values/text_scraper.rb +0 -152
  52. data/lib/wovnrb/html_replacers/unified_values/values_stack.rb +0 -65
  53. data/lib/wovnrb/services/url.rb +0 -12
  54. data/lib/wovnrb/services/value_agent.rb +0 -9
  55. data/test/fixtures/unified_values/site_html/simple_actual.html +0 -96
  56. data/test/fixtures/unified_values/site_html/simple_expected.json +0 -251
  57. data/test/fixtures/unified_values/site_html/wovn.io_actual.html +0 -686
  58. data/test/fixtures/unified_values/site_html/wovn.io_expected.json +0 -543
  59. data/test/fixtures/unified_values/site_html/www.yahoo.co.jp_actual.html +0 -1024
  60. data/test/fixtures/unified_values/site_html/www.yahoo.co.jp_expected.json +0 -3345
  61. data/test/fixtures/unified_values/small_html/block_inside_inline_actual.html +0 -12
  62. data/test/fixtures/unified_values/small_html/block_inside_inline_expected.json +0 -22
  63. data/test/fixtures/unified_values/small_html/br_tag_actual.html +0 -10
  64. data/test/fixtures/unified_values/small_html/br_tag_expected.json +0 -12
  65. data/test/fixtures/unified_values/small_html/comment_tag_actual.html +0 -12
  66. data/test/fixtures/unified_values/small_html/comment_tag_expected.json +0 -10
  67. data/test/fixtures/unified_values/small_html/complex_text_with_html_entity_actual.html +0 -7
  68. data/test/fixtures/unified_values/small_html/complex_text_with_html_entity_expected.json +0 -11
  69. data/test/fixtures/unified_values/small_html/deep_nested_block_actual.html +0 -14
  70. data/test/fixtures/unified_values/small_html/deep_nested_block_expected.json +0 -8
  71. data/test/fixtures/unified_values/small_html/deep_nested_inline_actual.html +0 -20
  72. data/test/fixtures/unified_values/small_html/deep_nested_inline_expected.json +0 -20
  73. data/test/fixtures/unified_values/small_html/empty_tag_actual.html +0 -10
  74. data/test/fixtures/unified_values/small_html/empty_tag_expected.json +0 -12
  75. data/test/fixtures/unified_values/small_html/empty_text_actual.html +0 -12
  76. data/test/fixtures/unified_values/small_html/empty_text_expected.json +0 -1
  77. data/test/fixtures/unified_values/small_html/ignore_tag_actual.html +0 -12
  78. data/test/fixtures/unified_values/small_html/ignore_tag_expected.json +0 -16
  79. data/test/fixtures/unified_values/small_html/ignored_class_actual.html +0 -10
  80. data/test/fixtures/unified_values/small_html/ignored_class_expected.json +0 -13
  81. data/test/fixtures/unified_values/small_html/img_actual.html +0 -12
  82. data/test/fixtures/unified_values/small_html/img_expected.json +0 -23
  83. data/test/fixtures/unified_values/small_html/nested_and_complex_wovn_ignore_actual.html +0 -10
  84. data/test/fixtures/unified_values/small_html/nested_and_complex_wovn_ignore_expected.json +0 -16
  85. data/test/fixtures/unified_values/small_html/nested_text_value_actual.html +0 -10
  86. data/test/fixtures/unified_values/small_html/nested_text_value_expected.json +0 -12
  87. data/test/fixtures/unified_values/small_html/nested_text_value_mixed_plan_text_actual.html +0 -10
  88. data/test/fixtures/unified_values/small_html/nested_text_value_mixed_plan_text_expected.json +0 -14
  89. data/test/fixtures/unified_values/small_html/option_tag_actual.html +0 -9
  90. data/test/fixtures/unified_values/small_html/option_tag_expected.json +0 -13
  91. data/test/fixtures/unified_values/small_html/text_different_inline_each_other_actual.html +0 -10
  92. data/test/fixtures/unified_values/small_html/text_different_inline_each_other_expected.json +0 -22
  93. data/test/fixtures/unified_values/small_html/text_in_svg_actual.html +0 -9
  94. data/test/fixtures/unified_values/small_html/text_in_svg_expected.json +0 -8
  95. data/test/fixtures/unified_values/small_html/text_with_html_entity_actual.html +0 -6
  96. data/test/fixtures/unified_values/small_html/text_with_html_entity_expected.json +0 -8
  97. data/test/fixtures/unified_values/small_html/unknown_or_custom_tag_actual.html +0 -12
  98. data/test/fixtures/unified_values/small_html/unknown_or_custom_tag_expected.json +0 -24
  99. data/test/fixtures/unified_values/small_html/unnecessay_top_end_tag_actual.html +0 -12
  100. data/test/fixtures/unified_values/small_html/unnecessay_top_end_tag_expected.json +0 -14
  101. data/test/fixtures/unified_values/small_html/wovn_ignore_actual.html +0 -10
  102. data/test/fixtures/unified_values/small_html/wovn_ignore_expected.json +0 -13
  103. data/test/lib/api_data_test.rb +0 -83
  104. data/test/lib/html_replacers/image_replacer_test.rb +0 -165
  105. data/test/lib/html_replacers/input_replacer_test.rb +0 -140
  106. data/test/lib/html_replacers/link_replacer_test.rb +0 -328
  107. data/test/lib/html_replacers/meta_replacer_test.rb +0 -157
  108. data/test/lib/html_replacers/replacer_base_test.rb +0 -128
  109. data/test/lib/html_replacers/script_replacer_test.rb +0 -139
  110. data/test/lib/html_replacers/text_replacer_test.rb +0 -99
  111. data/test/lib/html_replacers/unified_values/dst_swapping_targets_creator_test.rb +0 -137
  112. data/test/lib/html_replacers/unified_values/element_category_test.rb +0 -49
  113. data/test/lib/html_replacers/unified_values/node_swapping_targets_creator_test.rb +0 -137
  114. data/test/lib/html_replacers/unified_values/text_replacer_test.rb +0 -270
  115. data/test/lib/html_replacers/unified_values/text_scraper_test.rb +0 -121
  116. data/test/lib/html_replacers/unified_values/values_stack_test.rb +0 -122
  117. data/test/lib/services/url_test.rb +0 -9
  118. data/test/lib/services/value_agent_test.rb +0 -32
  119. data/test/services/url_test.rb +0 -163
  120. data/values/values +0 -1
@@ -1,251 +0,0 @@
1
- [
2
- {
3
- "xpath": "/html/head/title",
4
- "srcs": [
5
- "SIMPLE TITLE"
6
- ]
7
- },
8
- {
9
- "xpath": "/html/body/div/form/div/text()",
10
- "srcs": [
11
- "<input>",
12
- "<button>",
13
- "Search",
14
- "</button>"
15
- ]
16
- },
17
- {
18
- "xpath": "/html/body/div/form[2]/text()",
19
- "srcs": [
20
- "<label>",
21
- "<span>",
22
- "Search for:",
23
- "</span>",
24
- "<input>",
25
- "</label>"
26
- ]
27
- },
28
- {
29
- "xpath": "/html/body/div[2]/span/p/text()",
30
- "srcs": [
31
- "Well"
32
- ]
33
- },
34
- {
35
- "xpath": "/html/body/a/span/h1/text()",
36
- "srcs": [
37
- "scrap"
38
- ]
39
- },
40
- {
41
- "xpath": "/html/body/text()[4]",
42
- "srcs": [
43
- "only"
44
- ]
45
- },
46
- {
47
- "xpath": "/html/body/text()[5]",
48
- "srcs": [
49
- "this too",
50
- "</span>",
51
- "</a>",
52
- "<br>",
53
- "<span>",
54
- "<a>"
55
- ]
56
- },
57
- {
58
- "xpath": "/html/body/text()[6]",
59
- "srcs": [
60
- "<a>",
61
- "&quot;Storm hunters&quot; it is to see.",
62
- "</a>",
63
- "<a>",
64
- "BLABLA5",
65
- "</a>",
66
- "</span>"
67
- ]
68
- },
69
- {
70
- "xpath": "/html/body/h1/div/text()",
71
- "srcs": [
72
- "Welcome to my Website!"
73
- ]
74
- },
75
- {
76
- "xpath": "/html/body/div[4]/div/div/text()",
77
- "srcs": [
78
- "LOST AF?"
79
- ]
80
- },
81
- {
82
- "xpath": "/html/body/div[4]/div/div[2]/p/text()",
83
- "srcs": [
84
- "WE&#39;LL TAKE THE BLAME."
85
- ]
86
- },
87
- {
88
- "xpath": "/html/body/div[4]/div/div[2]/p[2]/text()",
89
- "srcs": [
90
- "LET US MAKE IT UP TO YOU WITH SOME LINKS."
91
- ]
92
- },
93
- {
94
- "xpath": "/html/body/div[4]/div/div[3]/nav/ul/li/text()",
95
- "srcs": [
96
- "<a>",
97
- "SHOP MENS",
98
- "</a>"
99
- ]
100
- },
101
- {
102
- "xpath": "/html/body/div[4]/div/div[3]/nav/ul/li[2]/text()",
103
- "srcs": [
104
- "<a>",
105
- "SHOP WOMENS",
106
- "</a>"
107
- ]
108
- },
109
- {
110
- "xpath": "/html/body/div[4]/div/div[3]/nav/ul/li[3]/text()",
111
- "srcs": [
112
- "<a>",
113
- "shop boys",
114
- "</a>"
115
- ]
116
- },
117
- {
118
- "xpath": "/html/body/div[4]/div/div[3]/nav/ul/li[4]/text()",
119
- "srcs": [
120
- "<a>",
121
- "shop girls",
122
- "</a>"
123
- ]
124
- },
125
- {
126
- "xpath": "/html/body/div[4]/div[2]/text()",
127
- "srcs": [
128
- "&quot;"
129
- ]
130
- },
131
- {
132
- "xpath": "/html/body/div[4]/div[2]/div/text()",
133
- "srcs": [
134
- "LOST AF?"
135
- ]
136
- },
137
- {
138
- "xpath": "/html/body/div[4]/div[2]/div[2]/p/text()",
139
- "srcs": [
140
- "WE&#39;LL TAKE THE BLAME."
141
- ]
142
- },
143
- {
144
- "xpath": "/html/body/div[4]/div[2]/div[2]/p[2]/text()",
145
- "srcs": [
146
- "LET US MAKE IT UP TO YOU WITH SOME LINKS."
147
- ]
148
- },
149
- {
150
- "xpath": "/html/body/div[4]/div[2]/div[3]/nav/ul/li/text()",
151
- "srcs": [
152
- "<a>",
153
- "SHOP MENS",
154
- "</a>"
155
- ]
156
- },
157
- {
158
- "xpath": "/html/body/div[4]/div[2]/div[3]/nav/ul/li[2]/text()",
159
- "srcs": [
160
- "<a>",
161
- "SHOP WOMENS",
162
- "</a>"
163
- ]
164
- },
165
- {
166
- "xpath": "/html/body/div[4]/div[2]/div[3]/nav/ul/li[3]/text()",
167
- "srcs": [
168
- "<a>",
169
- "shop boys",
170
- "</a>"
171
- ]
172
- },
173
- {
174
- "xpath": "/html/body/div[4]/div[2]/div[3]/nav/ul/li[4]/text()",
175
- "srcs": [
176
- "<a>",
177
- "shop girls",
178
- "</a>"
179
- ]
180
- },
181
- {
182
- "xpath": "/html/body/div[4]/text()[3]",
183
- "srcs": [
184
- "&quot;"
185
- ]
186
- },
187
- {
188
- "xpath": "/html/body/p/text()",
189
- "srcs": [
190
- "This is a paragraph! Here&#39;s how you make a link:",
191
- "<a>",
192
- "Neocities",
193
- "</a>",
194
- "."
195
- ]
196
- },
197
- {
198
- "xpath": "/html/body/p[2]/text()",
199
- "srcs": [
200
- "Here&#39;s how you can make",
201
- "<strong>",
202
- "bold",
203
- "</strong>",
204
- "and",
205
- "<em>",
206
- "italic",
207
- "</em>",
208
- "text."
209
- ]
210
- },
211
- {
212
- "xpath": "/html/body/p[3]/text()",
213
- "srcs": [
214
- "Here&#39;s how you can add an image:"
215
- ]
216
- },
217
- {
218
- "xpath": "/html/body/p[4]/text()",
219
- "srcs": [
220
- "Here&#39;s how to make a list:"
221
- ]
222
- },
223
- {
224
- "xpath": "/html/body/ul/li/text()",
225
- "srcs": [
226
- "First thing"
227
- ]
228
- },
229
- {
230
- "xpath": "/html/body/ul/li[2]/text()",
231
- "srcs": [
232
- "Second thing"
233
- ]
234
- },
235
- {
236
- "xpath": "/html/body/ul/li[3]/text()",
237
- "srcs": [
238
- "Third thing"
239
- ]
240
- },
241
- {
242
- "xpath": "/html/body/p[5]/text()",
243
- "srcs": [
244
- "To learn more HTML/CSS, check out these",
245
- "<a>",
246
- "tutorials",
247
- "</a>",
248
- "!"
249
- ]
250
- }
251
- ]
@@ -1,686 +0,0 @@
1
- <!DOCTYPE html>
2
- <html id="ng-app" ng-app="Eq" lang="en">
3
- <head>
4
- <script src="http://j.dev-wovn.io:3000/1" async="true" data-wovnio="key=bAOEi_&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;version=0.2.22"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width">
7
- <title>Website Localization | Translate web pages in 5 minutes | WOVN.io</title>
8
- <meta name="description" content="WOVN.io is a website localization service that allows you to translate your site’s web pages and content into 30 different languages in only 5 minutes.">
9
- <meta property="og:image" content="/assets/wovn_ogp.png">
10
-
11
- <link href="assets/public_application-9dbfa11cb689b7904f943b0c7dc1e98b.css" media="all" rel="stylesheet">
12
- <script src="assets/public_application-fbddbcf51c45c21ce219ecb07cf01329.js"></script>
13
- <script src="assets/top/front-b6f9a54579eae14972b3a91d27563709.js"></script>
14
- <script src="assets/mixpanel/base-16e90e426ece6d2e4bae211ef6f7af92.js"></script>
15
- <script>
16
- //<![CDATA[
17
- AUTH_TOKEN = "piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=";
18
- //]]>
19
- </script>
20
- <script>
21
- //<![CDATA[
22
- LANGS = [{"name":"العربية","code":"ar","en":"Arabic"},{"name":"Български","code":"bg","en":"Bulgarian"},{"name":"简体中文","code":"zh-CHS","en":"Simp Chinese"},{"name":"繁體中文","code":"zh-CHT","en":"Trad Chinese"},{"name":"Dansk","code":"da","en":"Danish"},{"name":"Nederlands","code":"nl","en":"Dutch"},{"name":"English","code":"en","en":"English"},{"name":"Suomi","code":"fi","en":"Finnish"},{"name":"Français","code":"fr","en":"French"},{"name":"Deutsch","code":"de","en":"German"},{"name":"Ελληνικά","code":"el","en":"Greek"},{"name":"עברית","code":"he","en":"Hebrew"},{"name":"Bahasa Indonesia","code":"id","en":"Indonesian"},{"name":"Italiano","code":"it","en":"Italian"},{"name":"日本語","code":"ja","en":"Japanese"},{"name":"한국어","code":"ko","en":"Korean"},{"name":"Bahasa Melayu","code":"ms","en":"Malay"},{"name":"ဗမာစာ","code":"my","en":"Burmese"},{"name":"नेपाली भाषा","code":"ne","en":"Nepali"},{"name":"Norsk","code":"no","en":"Norwegian"},{"name":"Polski","code":"pl","en":"Polish"},{"name":"Português","code":"pt","en":"Portuguese"},{"name":"Русский","code":"ru","en":"Russian"},{"name":"Español","code":"es","en":"Spanish"},{"name":"Svensk","code":"sv","en":"Swedish"},{"name":"ภาษาไทย","code":"th","en":"Thai"},{"name":"हिन्दी","code":"hi","en":"Hindi"},{"name":"Türkçe","code":"tr","en":"Turkish"},{"name":"Українська","code":"uk","en":"Ukrainian"},{"name":"Tiếng Việt","code":"vi","en":"Vietnamese"}];
23
- //]]>
24
- </script>
25
- <meta content="authenticity_token" name="csrf-param">
26
- <meta content="piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=" name="csrf-token">
27
- <link rel="shortcut icon" href="favicon.ico">
28
- <link rel="apple-touch-icon" sizes="57x57" href="https://wovn.io/apple-touch-icon-57x57.png">
29
- <link rel="apple-touch-icon" sizes="114x114" href="https://wovn.io/apple-touch-icon-114x114.png">
30
- <link rel="apple-touch-icon" sizes="72x72" href="https://wovn.io/apple-touch-icon-72x72.png">
31
- <link rel="apple-touch-icon" sizes="144x144" href="https://wovn.io/apple-touch-icon-144x144.png">
32
- <link rel="apple-touch-icon" sizes="60x60" href="https://wovn.io/apple-touch-icon-60x60.png">
33
- <link rel="apple-touch-icon" sizes="120x120" href="https://wovn.io/apple-touch-icon-120x120.png">
34
- <link rel="apple-touch-icon" sizes="76x76" href="https://wovn.io/apple-touch-icon-76x76.png">
35
- <link rel="apple-touch-icon" sizes="152x152" href="https://wovn.io/apple-touch-icon-152x152.png">
36
- <link rel="icon" type="image/png" href="https://wovn.io/favicon-196x196.png" sizes="196x196">
37
- <link rel="icon" type="image/png" href="https://wovn.io/favicon-160x160.png" sizes="160x160">
38
- <link rel="icon" type="image/png" href="https://wovn.io/favicon-96x96.png" sizes="96x96">
39
- <link rel="icon" type="image/png" href="https://wovn.io/favicon-16x16.png" sizes="16x16">
40
- <link rel="icon" type="image/png" href="https://wovn.io/favicon-32x32.png" sizes="32x32">
41
- <meta name="msapplication-TileColor" content="#40b97d">
42
- <meta name="msapplication-TileImage" content="/mstile-144x144.png">
43
- <meta name="msapplication-config" content="/browserconfig.xml">
44
- <!--[if lt IE 9]>
45
- <script src="//cdnjs.cloudflare.com/ajax/libs/es5-shim/2.2.0/es5-shim.min.js"></script>
46
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.min.js"></script>
47
- <![endif]-->
48
- <!--[if lt IE 10]>
49
- <script src="//cdnjs.cloudflare.com/ajax/libs/placeholders/4.0.1/placeholders.min.js"></script>
50
- <![endif]-->
51
-
52
- <link rel="alternate" hreflang="zh-Hant" href="https://wovn.io/zh-CHT/">
53
- <link rel="alternate" hreflang="fr" href="https://wovn.io/fr/">
54
- <link rel="alternate" hreflang="zh-Hans" href="https://wovn.io/zh-CHS/">
55
- <link rel="alternate" hreflang="ja" href="https://wovn.io/ja/">
56
- <link rel="alternate" hreflang="de" href="https://wovn.io/de/">
57
- <link rel="alternate" hreflang="ko" href="https://wovn.io/ko/">
58
- </head>
59
- <body ng-controller="FrontCtrl" :class="[{'scrolled': scrolled}, globalMenuCss]" v-on:scroll="handleScroll">
60
- <header class="header">
61
- <div class="header__grid">
62
- <a href="index.html" class="header__logo"><img src="assets/header-logo.svg" alt="WOVN.io | Localize your website in 5 mintues"></a>
63
-
64
- <div class="header__menu" id="menu">
65
- <nav class="header__menu__navigation">
66
- <ul>
67
- <li class="active"><a href="index.html" ng-click="clickMenu('top', 'header')">Top</a></li>
68
- <li class=""><a href="https://wovn.io/pricing" ng-click="clickMenu('pricing', 'header')">Pricing</a></li>
69
- <li class=""><a href="https://wovn.io/developer" ng-click="clickMenu('developers', 'header')">Developers</a></li>
70
- <li class=""><a href="https://wovn.io/partners" ng-click="clickMenu('partners', 'header')">Partners</a></li>
71
- <li class=""><a href="https://wovn.io/support" ng-click="clickMenu('support', 'header')">Support</a></li>
72
- <li class=""><a href="https://wovn.io/contact" ng-click="clickMenu('contact', 'header')">Contact</a></li>
73
- </ul>
74
- </nav>
75
- <div class="header__menu__secondary">
76
- <ul class="header__sign">
77
- <li><a href="https://wovn.io/sign_in_form/">Sign in</a></li>
78
- <li><a href="https://wovn.io/sign_up_form/" ng-click="clickSignUp('header')">Sign up <span>free</span></a></li>
79
- </ul>
80
-
81
- <a class="header__contact header__contact--desktop" v-show="showPhoneNumber">
82
- <!--?xml version="1.0" ?-->
83
- <svg height="18px" version="1.1" viewBox="0 0 18 18" width="18px" xmlns="http://www.w3.org/2000/svg"
84
- ><title></title>
85
- <desc></desc><defs></defs><g fill="none" fill-rule="evenodd" id="Page-1" stroke="none" stroke-width="1"><g fill="#40b87c" id="Icons-Communication" transform="translate(-85.000000, -126.000000)"><g id="phone" transform="translate(85.000000, 126.000000)"><path d="M3.6,7.8 C5,10.6 7.4,12.9 10.2,14.4 L12.4,12.2 C12.7,11.9 13.1,11.8 13.4,12 C14.5,12.4 15.7,12.6 17,12.6 C17.6,12.6 18,13 18,13.6 L18,17 C18,17.6 17.6,18 17,18 C7.6,18 0,10.4 0,1 C0,0.4 0.4,0 1,0 L4.5,0 C5.1,0 5.5,0.4 5.5,1 C5.5,2.2 5.7,3.4 6.1,4.6 C6.2,4.9 6.1,5.3 5.9,5.6 L3.6,7.8 L3.6,7.8 Z" id="Shape"></path></g></g></g></svg>
86
- <span class="header__contact__tooltip"></span>
87
- </a>
88
- <p class="header__contact header__contact--mobile">TEL <a href="tel:080344059509">(+81) 3-4405-9509</a></p>
89
- </div>
90
- </div>
91
- <a class="header__burger" id="burger" @click="openMobileMenu = !openMobileMenu">
92
- <span></span>
93
- <span></span>
94
- <span></span>
95
- </a>
96
- </div>
97
- </header>
98
-
99
- <div bs-modal="" data-template="user-sign-in-template" id="user-sign-in-button"></div>
100
- <script type="text/ng-template" id="user-sign-in-template">
101
- <div id="user-sign-in-dialog" class="modal" tabindex="-1" role="dialog" ng-controller="ModalCtrl">
102
- <div class="modal-dialog">
103
- <div class="modal-content">
104
-
105
- <div class="modal-header">
106
- <a class="close" href="index.html#" ng-click="$hide()">&times;</a>
107
- <h4 class="modal-title">Sign in</h4>
108
- </div>
109
-
110
- <form accept-charset="UTF-8" action="index.html" method="post" ng-submit="signinDirect()"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=" /></div>
111
- <div class="modal-body">
112
- <div class="error-message" ng-show="errors._request || errors.sign_in_failure">
113
- <h2 ng-show="errors._request">Error contacting server, please try again.</h2>
114
- <h2 ng-show="errors.sign_in_failure">Invalid email or password.</h2>
115
- </div>
116
- <div>
117
- <label class="input" for="user_email">
118
- <h6>Email</h6>
119
- <span>jon@email.com</span>
120
- <input autofocus="autofocus" id="user_email" name="user[email]" ng-class="{error: errors.email}" ng-disabled="processingForm" ng-model="formData.email" type="email" value="" />
121
- </label> <div class="error-message email-error" ng-show="errors.email">
122
- <ul>
123
- <li ng-show="errors.email && errors.email.empty">Please specify an email address.</li>
124
- </ul>
125
- </div>
126
- </div>
127
-
128
- <div>
129
- <label class="input" for="user_password">
130
- <h6>Password</h6>
131
- <input id="user_password" name="user[password]" ng-class="{error: errors.password}" ng-disabled="processingForm" ng-model="formData.password" type="password" />
132
- </label> <div class="error-message password-error" ng-show="errors.password">
133
- <ul>
134
- <li ng-show="errors.password && errors.password.empty">Please enter your password.</li>
135
- </ul>
136
- </div>
137
- </div>
138
-
139
- <div id="remember-me">
140
- <label class="checkbox" for="user_remember_me">
141
- <input name="user[remember_me]" type="hidden" value="0" /><input bs-checkbox="" id="user_remember_me" name="user[remember_me]" ng-disabled="processingForm" ng-model="formData.remember_me" type="checkbox" value="1" />
142
- <span>Remember me</span>
143
- </label> </div>
144
- </div>
145
-
146
- <div class="modal-footer">
147
- <input class="button green-button" id="sign-in-submit" name="commit" ng-disabled="processingForm" type="submit" value="Sign in" />
148
- <a class="button gray-button right-button" href="index.html#" ng-click="$hide()">Cancel</a>
149
- <div class="modal-notes">
150
- <a class="modal-note error-text" href="index.html#" ng-show="errors.sign_in_failure" ng-click="swapForgotPassword()">Forgot your password? Click here!</a>
151
- <a class="modal-note" href="https://wovn.io/sign_up_form">No account? Sign up here!</a>
152
- </div>
153
- </div>
154
- </form>
155
- </div>
156
- </div>
157
- </div>
158
-
159
- </script>
160
-
161
- <div bs-modal="" data-template="forgot-password-template" id="forgot-password-button"></div>
162
- <script type="text/ng-template" id="forgot-password-template">
163
- <div id="user-sign-in-dialog" class="modal" tabindex="-1" role="dialog" ng-controller="ModalCtrl">
164
- <div class="modal-dialog">
165
- <div class="modal-content">
166
-
167
- <div class="modal-header">
168
- <a class="close" href="index.html#" ng-click="$hide()">&times;</a>
169
- <h4 class="modal-title">Forgot your password?</h4>
170
- </div>
171
-
172
- <form accept-charset="UTF-8" action="https://wovn.io/users/password" class="new_user" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=" /></div>
173
- <div class="modal-body">
174
- <div class="error-message" ng-show="errors._request">
175
- <h2>Error contacting server, please try again.</h2>
176
- </div>
177
- <label class="input" for="user_email">
178
- <h6>Email</h6>
179
- <span>jon@email.com</span>
180
- <input autofocus="autofocus" id="user_email" name="user[email]" ng-disabled="processingForm" type="email" value="" />
181
- </label> </div>
182
-
183
- <div class="modal-footer">
184
- <input class="button green-button" name="commit" ng-disabled="processingForm" type="submit" value="Send password reset email" />
185
- </div>
186
- </form>
187
- </div>
188
- </div>
189
- </div>
190
-
191
- </script>
192
-
193
-
194
- <div class="page-wrapper">
195
- <main class="content">
196
- <div class="index-page">
197
- <div class="index-wellcome">
198
- <div class="desc">
199
- <h1>
200
- <strong>Localize your website,</strong> <br>translate web pages in minutes</h1>
201
- <p>30 languages supported</p>
202
- <a class="user-sign-up" href="https://wovn.io/sign_up_form" ng-click="clickSignUp('firstView')">SIGN UP FREE</a>
203
- <p class="tel" v-show="showPhoneNumber">TEL <span class="phone-text"><a href="tel:080344059509" ng-click="clickPhone('firstView')">(+81) 3-4405-9509</a></span></p>
204
- </div>
205
- </div>
206
-
207
- <div class="index-business">
208
- <h2>Over 9,000 businesses around the world have chosen WOVN.io</h2>
209
- <div class="logos">
210
- <ul>
211
- <li><img alt="東急電鉄" src="assets/index/company_tokyu.png"></li>
212
- <li><img alt="Persol" src="assets/index/client_persol.png"></li>
213
- <li><img alt="PARCO" src="assets/index/company_parco.png"></li>
214
- <li><img alt="Qwnd" src="assets/index/company_ownd.png"></li>
215
- <li><img alt="Avex" src="assets/index/company_avex.png"></li>
216
- <li><img alt="HIS" src="assets/index/company_his.png"></li>
217
- <li><img alt="DeNA" src="assets/index/company_dena.png"></li>
218
- </ul>
219
- </div>
220
- <br class="clear">
221
- </div>
222
-
223
- <div class="index-easy">
224
- <h2>Localize your website in as few as 5 minutes without a developer</h2>
225
- <div class="steps">
226
- <div class="inner">
227
- <ul>
228
- <li>
229
- <div>STEP <span>1</span>
230
- </div>
231
- <img src="assets/index/wovn_step1.png" alt="WOVN.io | Step 1 | Add your site's URL"><p>Add your site's URL</p>
232
- </li>
233
- <li>
234
- <div>STEP <span>2</span>
235
- </div>
236
- <img src="assets/index/wovn_step2.png" alt="WOVN.io | Step 2 | Translate website content"><p>Translate by hand, machine, or use pro translators and publish your site</p>
237
- </li>
238
- <li>
239
- <div>STEP <span>3</span>
240
- </div>
241
- <img src="assets/index/wovn_step3.png" alt="WOVN.io | Step 3 | Insert Code Snippet"><p>Add WOVN.io to your website with our <br>JavaScript snippet or server library</p>
242
- </li>
243
- </ul>
244
- <br class="clear">
245
- </div>
246
- </div>
247
- </div>
248
-
249
- <div class="index-intuitive">
250
- <h2>Edit your website directly</h2>
251
- <div class="functions-select-1" id="functions">
252
- <div class="function selected1" id="function1">
253
- <h3>Edit text, tags, and images in one place</h3>
254
- <p>Your website's text, meta information (title, meta, alt, etc.), and images will all be added to our translation editor. You can manage and translate everything from the editor.</p>
255
- </div>
256
- <div class="function" id="function2">
257
- <h3>Make instant edits with our live editor</h3>
258
- <p>See the translations on your website as you write them. Be sure it will look exactly the way you want it before publishing.</p>
259
- </div>
260
- <div class="function" id="function3">
261
- <h3>Freely customize the WOVN.io widget</h3>
262
- <p>Use our road-tested default widget or customize it. All paid plans offer maximum customization, create your own widget that fits your website's needs.</p>
263
- <span class="starter-plan">Starter Plan</span>
264
- <span class="business-plan">Business Plan</span>
265
- </div>
266
- <div class="function" id="function4">
267
- <h3>Automatic content and page addition</h3>
268
- <p>Advanced page and content management on business plans and above. Let WOVN.io add new pages and content, translate into multiple languages and publish to your site automatically.</p>
269
- <span class="business-plan">Business Plan</span>
270
- </div>
271
- </div>
272
- </div>
273
-
274
- <div class="index-available">
275
- <h2>Designed for any website</h2>
276
- <ul>
277
- <li>
278
- <div><img src="assets/index/scale_personal.png" alt="WOVN.io | Localize personal websites"></div>Personal</li>
279
- <li>
280
- <div><img src="assets/index/scale_corporate.png" alt="WOVN.io | Localize corporate websites"></div>Corporate</li>
281
- <li>
282
- <div><img src="assets/index/scale_store.png" alt="WOVN.io | Localize store websites"></div>Store</li>
283
- <li>
284
- <div><img src="assets/index/scale_media.png" alt="WOVN.io | Localize media websites"></div>Media</li>
285
- <li>
286
- <div><img src="assets/index/scale_ec.png" alt="WOVN.io | Localize ecommerce websites"></div>EC</li>
287
- <li>
288
- <div><img src="assets/index/scale_large.png" alt="WOVN.io | Localize large websites"></div>Large</li>
289
- <li>
290
- <div><img src="assets/index/scale_cloud.png" alt="WOVN.io | Localize cloud-based websites"></div>Cloud</li>
291
- </ul>
292
- <br class="clear">
293
-
294
- <div class="detail">
295
- <div class="inner">
296
- <div class="unit">
297
- <h3>
298
- <div><img src="assets/index/feature_seo.png" alt="WOVN.io Features | Compatible with dynamic page content"></div>
299
- Dynamic page content
300
- </h3>
301
- <p>
302
- Using our business plan and above features localize pages containing dynamic content such as login, search, reviews etc.
303
- </p>
304
- </div>
305
- <div class="unit">
306
- <h3>
307
- <div><img src="assets/index/feature_index.png" alt="WOVN.io Features | Multilingual international SEO"></div>
308
- International SEO
309
- </h3>
310
- <p>
311
- With our server library, WOVN.io will make sure your pages show up in searches across languages. Plus, easily organize your localized languages by path, subdomain, or query for improved SEO.
312
- </p>
313
- </div>
314
- <div class="unit">
315
- <h3>
316
- <div><img src="assets/index/feature_cost.png" alt="WOVN.io Features | No initial cost"></div>
317
- No initial cost
318
- </h3>
319
- <p>
320
- No starting fees and no lock-in rates. Simple monthly plans that fit your needs. Support is included for free so you can get started without the need for developers or dedicated content managers.
321
- </p>
322
- </div>
323
- </div>
324
- <br class="clear">
325
- </div>
326
- </div>
327
-
328
- <div class="index-effect">
329
- <h2>Why WOVN.io?</h2>
330
- <div class="unit-group">
331
- <div class="unit operational-cost">
332
- <h3>Reduce maintenance costs</h3>
333
- <p>Manage and create your translations without the need for a developer. Or have WOVN.io manage your content automatically. You can also order professional translations through WOVN.io at competitive prices.</p>
334
- </div>
335
- <div class="unit production-cost">
336
- <h3>Reduce development costs</h3>
337
- <p>Localizing costs can increase for every language added, using WOVN.io, this cost is greatly reduced and managing multiple languages does not require the need for more development. Reach a global audience at a fraction of the cost.</p>
338
- </div>
339
- <div class="unit overseas">
340
- <h3>Multilingual marketing</h3>
341
- <p>Draw more users through localized SEO, increasing leads to your site. Localizing your content will lead to more visitors and more conversions.</p>
342
- </div>
343
- <div class="unit minimum">
344
- <h3>Maintenance light</h3>
345
- <p>Using WOVN.io does not increase the number of files on your servers or the amount of languages it must host. Leave the heavy lifting to us and keep server costs low.</p>
346
- </div>
347
- <br class="clear">
348
- </div>
349
- </div>
350
-
351
- <div class="index-customers">
352
- <h2>WOVN.io user feedback</h2>
353
- <div class="list">
354
- <div class="left-arrow"><div class="arrow"></div></div>
355
- <div class="scroll">
356
- <div class="scroll-inner">
357
- <div class="message">
358
- <p class="comment">Thanks to dynamic page support and flexible communication, we were able to easily achieve multilingualization for a single page AngularJS application at low cost.</p>
359
- <div class="message-fae">
360
- <img src="index.html" width="48" height="48">
361
- </div>
362
- <div class="message-company">
363
- <img src="assets/index/customer_ownd.png">
364
- </div>
365
- <br class="clear">
366
- </div>
367
- <div class="message">
368
- <p class="comment">All we had to do was insert a single line of script to get started. Compared with typical multilingualization, we realized a significant reduction in man-hours.</p>
369
- <div class="message-fae">
370
- <img src="index.html" width="48" height="48">
371
- </div>
372
- <div class="message-company">
373
- <img src="assets/index/customer_scubism.png">
374
- </div>
375
- <br class="clear">
376
- </div>
377
- <div class="message">
378
- <p class="comment">Even companies without translation or system development capabilities can reach international markets at a low cost.</p>
379
- <div class="message-fae">
380
- <img src="index.html" width="48" height="48">
381
- </div>
382
- <div class="message-user">
383
- <p>Hisayuki Uemori<br><span>Minimal tech CEO</span></p>
384
- </div>
385
- <div class="message-company">
386
- <img src="assets/index/customer_techinasia.png">
387
- </div>
388
- <br class="clear">
389
- </div>
390
- </div>
391
- </div>
392
- <div class="right-arrow"><div class="arrow"></div></div>
393
- <br class="clear">
394
- </div>
395
- </div>
396
-
397
- <script>
398
- document.addEventListener('DOMContentLoaded', function() {
399
- var docs = []
400
- var i = 0
401
- var functions = document.getElementById('functions')
402
- while(true) {
403
- var doc = document.getElementById('function' + (i + 1))
404
- if (!doc) {
405
- break;
406
- }
407
- docs[i] = doc
408
- doc.onclick = (function(i, doc) {
409
- return function() {
410
- var len = docs.length;
411
- for (var j=0; j<len; ++j) {
412
- docs[j].className = docs[j].className.replace(/ ?selected\d+/, '')
413
- }
414
- doc.className += ' selected' + (i + 1)
415
- functions.className = ''
416
- setTimeout(function () {
417
- functions.className = 'functions-select-' + (i + 1)
418
- }, 0)
419
- }
420
- })(i, doc)
421
- i++
422
- }
423
- function preload(src) {
424
- var img = new Image();
425
- img.src = src;
426
- }
427
- preload('/assets/index/editingtool_img2.png');
428
- preload('/assets/index/editingtool_img3.png');
429
- preload('/assets/index/editingtool_img4.png');
430
- })
431
- </script>
432
-
433
- <script type="text/ng-template" id="user-sign-up-template">
434
- <div id="user-sign-up-dialog" class="modal" tabindex="-1" role="dialog" ng-controller="ModalCtrl">
435
- <div class="modal-dialog">
436
- <div class="modal-content">
437
-
438
- <div class="modal-header">
439
- <a class="close" href="index.html#" ng-click="$hide()">&times;</a>
440
- <h4 class="modal-title">Sign up</h4>
441
- </div>
442
-
443
- <form accept-charset="UTF-8" action="index.html" method="post" ng-submit="signupDirect()"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=" /></div>
444
- <div class="modal-body">
445
- <div class="error-message" ng-show="errors._request">
446
- <h2>Error contacting server, please try again.</h2>
447
- </div>
448
- <div>
449
- <label class="input" for="user_email">
450
- <h6>Email</h6>
451
- <span>jon@email.com</span>
452
- <input autofocus="autofocus" id="user_email" name="user[email]" ng-class="{error: errors.email}" ng-disabled="processingForm" ng-model="formData.email" type="email" value="" />
453
- </label> <div class="error-message email-errors" ng-show="errors.email">
454
- <ul>
455
- <li ng-show="errors.email && errors.email.empty">Please specify an email address.</li>
456
- <li ng-show="errors.email && errors.email.invalid">Invalid email.</li>
457
- <li ng-show="errors.email.exists">Email is already taken.</li>
458
- <li ng-show="errors.email.message">{{errors.email.message}}</li>
459
- </ul>
460
- </div>
461
- </div>
462
-
463
- <div>
464
- <label class="input" for="user_password">
465
- <h6>Password</h6>
466
- <input id="user_password" name="user[password]" ng-class="{error: errors.password}" ng-disabled="processingForm" ng-model="formData.password" type="password" />
467
- </label> <div class="error-message password-errors" ng-show="errors.password">
468
- <ul>
469
- <li ng-show="errors.password && errors.password.empty">Password is required.</li>
470
- <li ng-show="errors.password && errors.password.short">Your password must be at least 8 characters long.</li>
471
- </ul>
472
- </div>
473
- </div>
474
-
475
- <div>
476
- <label class="input" for="user_password_confirmation">
477
- <h6>Password confirmation</h6>
478
- <input id="user_password_confirmation" name="user[password_confirmation]" ng-class="{error: errors.password_confirmation}" ng-disabled="processingForm" ng-model="formData.password_confirmation" type="password" />
479
- </label> <div class="error-message password-confirmation-errors" ng-show="errors.password_confirmation">
480
- <ul>
481
- <li ng-show="errors.password_confirmation && errors.password_confirmation.empty">Please confirm your password.</li>
482
- <li ng-show="errors.password_confirmation && errors.password_confirmation.noMatch">Passwords don't match, please try again.</li>
483
- </ul>
484
- </div>
485
- </div>
486
- </div>
487
-
488
- <div class="modal-footer">
489
- <input class="button green-button" name="commit" ng-click="clickSignUpButton()" ng-disabled="processingForm" type="submit" value="Sign up" />
490
- <a class="button gray-button right-button" href="index.html#" ng-click="$hide()">Cancel</a>
491
- <div class="modal-notes">
492
- </div>
493
- </div>
494
- </form>
495
- </div>
496
- </div>
497
- </div>
498
-
499
- </script>
500
-
501
- <script type="text/ng-template" id="user-sign-in-template">
502
- <div id="user-sign-in-dialog" class="modal" tabindex="-1" role="dialog" ng-controller="ModalCtrl">
503
- <div class="modal-dialog">
504
- <div class="modal-content">
505
-
506
- <div class="modal-header">
507
- <a class="close" href="index.html#" ng-click="$hide()">&times;</a>
508
- <h4 class="modal-title">Sign in</h4>
509
- </div>
510
-
511
- <form accept-charset="UTF-8" action="index.html" method="post" ng-submit="signinDirect()"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=" /></div>
512
- <div class="modal-body">
513
- <div class="error-message" ng-show="errors._request || errors.sign_in_failure">
514
- <h2 ng-show="errors._request">Error contacting server, please try again.</h2>
515
- <h2 ng-show="errors.sign_in_failure">Invalid email or password.</h2>
516
- </div>
517
- <div>
518
- <label class="input" for="user_email">
519
- <h6>Email</h6>
520
- <span>jon@email.com</span>
521
- <input autofocus="autofocus" id="user_email" name="user[email]" ng-class="{error: errors.email}" ng-disabled="processingForm" ng-model="formData.email" type="email" value="" />
522
- </label> <div class="error-message email-error" ng-show="errors.email">
523
- <ul>
524
- <li ng-show="errors.email && errors.email.empty">Please specify an email address.</li>
525
- </ul>
526
- </div>
527
- </div>
528
-
529
- <div>
530
- <label class="input" for="user_password">
531
- <h6>Password</h6>
532
- <input id="user_password" name="user[password]" ng-class="{error: errors.password}" ng-disabled="processingForm" ng-model="formData.password" type="password" />
533
- </label> <div class="error-message password-error" ng-show="errors.password">
534
- <ul>
535
- <li ng-show="errors.password && errors.password.empty">Please enter your password.</li>
536
- </ul>
537
- </div>
538
- </div>
539
-
540
- <div id="remember-me">
541
- <label class="checkbox" for="user_remember_me">
542
- <input name="user[remember_me]" type="hidden" value="0" /><input bs-checkbox="" id="user_remember_me" name="user[remember_me]" ng-disabled="processingForm" ng-model="formData.remember_me" type="checkbox" value="1" />
543
- <span>Remember me</span>
544
- </label> </div>
545
- </div>
546
-
547
- <div class="modal-footer">
548
- <input class="button green-button" id="sign-in-submit" name="commit" ng-disabled="processingForm" type="submit" value="Sign in" />
549
- <a class="button gray-button right-button" href="index.html#" ng-click="$hide()">Cancel</a>
550
- <div class="modal-notes">
551
- <a class="modal-note error-text" href="index.html#" ng-show="errors.sign_in_failure" ng-click="swapForgotPassword()">Forgot your password? Click here!</a>
552
- <a class="modal-note" href="https://wovn.io/sign_up_form">No account? Sign up here!</a>
553
- </div>
554
- </div>
555
- </form>
556
- </div>
557
- </div>
558
- </div>
559
-
560
- </script>
561
-
562
- <script type="text/ng-template" id="forgot-password-template">
563
- <div id="user-sign-in-dialog" class="modal" tabindex="-1" role="dialog" ng-controller="ModalCtrl">
564
- <div class="modal-dialog">
565
- <div class="modal-content">
566
-
567
- <div class="modal-header">
568
- <a class="close" href="index.html#" ng-click="$hide()">&times;</a>
569
- <h4 class="modal-title">Forgot your password?</h4>
570
- </div>
571
-
572
- <form accept-charset="UTF-8" action="https://wovn.io/users/password" class="new_user" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="piZa6YpmDOhCQQSsmFPF2/y3Y0Bu15HLti17Fov/qHY=" /></div>
573
- <div class="modal-body">
574
- <div class="error-message" ng-show="errors._request">
575
- <h2>Error contacting server, please try again.</h2>
576
- </div>
577
- <label class="input" for="user_email">
578
- <h6>Email</h6>
579
- <span>jon@email.com</span>
580
- <input autofocus="autofocus" id="user_email" name="user[email]" ng-disabled="processingForm" type="email" value="" />
581
- </label> </div>
582
-
583
- <div class="modal-footer">
584
- <input class="button green-button" name="commit" ng-disabled="processingForm" type="submit" value="Send password reset email" />
585
- </div>
586
- </form>
587
- </div>
588
- </div>
589
- </div>
590
-
591
- </script>
592
-
593
- <script type="text/ng-template" id="translator-sign-in-template">
594
- <div class="modal" tabindex="-1" role="dialog">
595
- <div class="modal-dialog">
596
- <div class="modal-content">
597
-
598
- <div class="modal-header">
599
- <a class="close" ng-click="$hide()">&times;</a>
600
- <h4 class="modal-title">Translator Sign in</h4>
601
- </div>
602
-
603
- <div class="modal-body">
604
- <p>You're only one click away from singing in as a translator! Choose your Facebook or Twitter account to sign in and share with the world!</p>
605
- </div>
606
-
607
- <div class="modal-footer">
608
- <a class="navbar-link button twitter-button" href="https://wovn.io/translators/auth/twitter">Sign in with Twitter</a>
609
- <a class="navbar-link button facebook-button" href="https://wovn.io/translators/auth/facebook">Sign in with Facebook</a>
610
- </div>
611
- </div>
612
- </div>
613
- </div>
614
-
615
-
616
- </script>
617
-
618
- <script data-turbolinks-track="true" src="assets/jquery.sticky-c8bc6765f5095e4492c18c0981f8e2f8.js"></script>
619
-
620
-
621
-
622
- <div class="common-trial">
623
- <div class="inner">
624
- <h2>You can try our business plan free for 30 days!</h2>
625
- <p>All business plan features are available during the trial</p>
626
- <a href="https://wovn.io/sign_up_form" class="signup" ng-click="clickSignUp('footer')">SIGN UP FREE</a>
627
- <div v-show="showPhoneNumber">TEL  <a href="tel:0344059509" ng-click="clickPhone('lastView')">(+81) 3-4405-9509</a>
628
- </div>
629
- </div>
630
- </div>
631
- <footer class="footer">
632
- <div class="footer__grid">
633
- <section class="footer__primary">
634
- <a href="index.html" class="footer__primary__logo"><img src="assets/footer-logo.svg" alt=""></a>
635
- <div class="footer__primary__content">
636
- <nav class="footer__primary__navigation">
637
- <ul>
638
- <li class=""><a href="https://wovn.io/pricing" ng-click="clickMenu('pricing', 'footer')">Pricing</a></li>
639
- <li class=""><a href="https://wovn.io/developer" ng-click="clickMenu('developers', 'footer')">Developers</a></li>
640
- <li class=""><a href="https://wovn.io/partners" ng-click="clickMenu('partners', 'footer')">Partners</a></li>
641
- <li class=""><a href="https://wovn.io/support" ng-click="clickMenu('support', 'footer')">Support</a></li>
642
- <li class=""><a href="https://wovn.io/contact" ng-click="clickMenu('contact', 'footer')">Contact</a></li>
643
- <li class=""><a href="http://minimaltech.co/" target="_blank" ng-click="clickMenu('contact', 'footer')">Corporate</a></li>
644
- </ul>
645
- </nav>
646
-
647
- <p><a class="support-mail" href="mailto:support@wovn.io">support@wovn.io</a><a href="tel:0344059509" class="tel-text" ng-click="clickPhone('lastView')" v-show="showPhoneNumber">(+81) 3-4405-9509</a></p>
648
-
649
- <ul class="footer__primary__sns">
650
- <li>
651
- <a href="https://www.facebook.com/{{socialPath}}">
652
- <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><title>WOVN.io | Facebook</title>
653
- <path d="M10.683 20h-9.58C.495 20 0 19.506 0 18.896V1.104C0 .494.494 0 1.104 0h17.792C19.506 0 20 .494 20 1.104v17.792c0 .61-.494 1.104-1.104 1.104H13.8v-7.745h2.6l.389-3.019h-2.99V7.31c0-.873.243-1.469 1.497-1.469h1.598v-2.7a21.368 21.368 0 0 0-2.33-.12c-2.304 0-3.881 1.407-3.881 3.99v2.226H8.076v3.019h2.607V20z" fill="#FFF" fill-rule="evenodd"></path></svg>
654
- </a>
655
- </li>
656
- <li>
657
- <a href="https://twitter.com/{{socialPath}}">
658
- <svg width="20" height="17" viewBox="0 0 20 17" xmlns="http://www.w3.org/2000/svg"><title>WOVN.io | Twitter</title>
659
- <path d="M20 2.013a7.894 7.894 0 0 1-2.356.675A4.271 4.271 0 0 0 19.448.314a7.989 7.989 0 0 1-2.607 1.04A4.012 4.012 0 0 0 13.846 0c-2.264 0-4.101 1.922-4.101 4.291 0 .337.035.664.105.978-3.41-.18-6.433-1.886-8.458-4.486a4.438 4.438 0 0 0-.555 2.16c0 1.488.724 2.802 1.825 3.572A3.97 3.97 0 0 1 .803 5.98v.053c0 2.08 1.415 3.815 3.293 4.208a3.84 3.84 0 0 1-1.081.15 3.91 3.91 0 0 1-.773-.076c.523 1.705 2.037 2.946 3.833 2.98A8.004 8.004 0 0 1 0 15.072 11.265 11.265 0 0 0 6.29 17c7.548 0 11.674-6.538 11.674-12.21 0-.187-.003-.373-.01-.556A8.523 8.523 0 0 0 20 2.013" fill="#FFF" fill-rule="evenodd"></path></svg>
660
- </a>
661
- </li>
662
- </ul>
663
- </div>
664
- </section>
665
-
666
- <section class="footer__secondary">
667
- <p>©2017 Minimal Technologies</p>
668
-
669
- <div class="footer__secondary__links">
670
- <a href="https://wovn.io/policy">Privacy policy</a>
671
- <span>  |  </span>
672
- <a href="https://wovn.io/terms">Terms</a>
673
- </div>
674
- </section>
675
- </div>
676
- </footer>
677
-
678
- </div>
679
-
680
- <script data-turbolinks-track="true" src="assets/webpack/developer-b6770d4ec33c3b6a67910827319ca0bc.js"></script>
681
-
682
-
683
- </main>
684
- </div>
685
- </body>
686
- </html>