summernote-rails 0.6.2.1 → 0.6.5.0

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -0
  3. data/lib/summernote-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/summernote/locales/ar-AR.js +3 -1
  5. data/vendor/assets/javascripts/summernote/locales/ca-ES.js +3 -1
  6. data/vendor/assets/javascripts/summernote/locales/cs-CZ.js +3 -1
  7. data/vendor/assets/javascripts/summernote/locales/da-DK.js +5 -1
  8. data/vendor/assets/javascripts/summernote/locales/de-DE.js +3 -1
  9. data/vendor/assets/javascripts/summernote/locales/es-ES.js +5 -1
  10. data/vendor/assets/javascripts/summernote/locales/es-EU.js +3 -1
  11. data/vendor/assets/javascripts/summernote/locales/fa-IR.js +3 -1
  12. data/vendor/assets/javascripts/summernote/locales/fi-FI.js +3 -1
  13. data/vendor/assets/javascripts/summernote/locales/fr-FR.js +5 -1
  14. data/vendor/assets/javascripts/summernote/locales/he-IL.js +5 -1
  15. data/vendor/assets/javascripts/summernote/locales/hu-HU.js +3 -1
  16. data/vendor/assets/javascripts/summernote/locales/id-ID.js +3 -1
  17. data/vendor/assets/javascripts/summernote/locales/it-IT.js +3 -1
  18. data/vendor/assets/javascripts/summernote/locales/ja-JP.js +3 -1
  19. data/vendor/assets/javascripts/summernote/locales/ko-KR.js +6 -1
  20. data/vendor/assets/javascripts/summernote/locales/nb-NO.js +3 -1
  21. data/vendor/assets/javascripts/summernote/locales/nl-NL.js +3 -1
  22. data/vendor/assets/javascripts/summernote/locales/pl-PL.js +17 -7
  23. data/vendor/assets/javascripts/summernote/locales/pt-BR.js +3 -1
  24. data/vendor/assets/javascripts/summernote/locales/ro-RO.js +3 -1
  25. data/vendor/assets/javascripts/summernote/locales/ru-RU.js +5 -1
  26. data/vendor/assets/javascripts/summernote/locales/sk-SK.js +3 -1
  27. data/vendor/assets/javascripts/summernote/locales/sl-SI.js +5 -1
  28. data/vendor/assets/javascripts/summernote/locales/sr-RS-Latin.js +3 -1
  29. data/vendor/assets/javascripts/summernote/locales/sr-RS.js +3 -1
  30. data/vendor/assets/javascripts/summernote/locales/sv-SE.js +3 -1
  31. data/vendor/assets/javascripts/summernote/locales/th-TH.js +5 -1
  32. data/vendor/assets/javascripts/summernote/locales/tr-TR.js +5 -1
  33. data/vendor/assets/javascripts/summernote/locales/uk-UA.js +5 -1
  34. data/vendor/assets/javascripts/summernote/locales/vi-VN.js +3 -1
  35. data/vendor/assets/javascripts/summernote/locales/zh-CN.js +3 -1
  36. data/vendor/assets/javascripts/summernote/locales/zh-TW.js +3 -1
  37. data/vendor/assets/javascripts/summernote/plugin/summernote-ext-hello.js +89 -0
  38. data/vendor/assets/javascripts/summernote/plugin/summernote-ext-video.js +573 -0
  39. data/vendor/assets/javascripts/summernote/summernote.js +1648 -1099
  40. metadata +4 -2
@@ -7,7 +7,11 @@
7
7
  underline: 'ขีดเส้นใต้',
8
8
  clear: 'ล้างรูปแบบตัวอักษร',
9
9
  height: 'ความสูงบรรทัด',
10
- name: 'แบบตัวอักษร'
10
+ name: 'แบบตัวอักษร',
11
+ strikethrough: 'ขีดฆ่า',
12
+ subscript: 'ตัวห้อย',
13
+ superscript: 'ตัวยก',
14
+ size: 'ขนาดตัวอักษร'
11
15
  },
12
16
  image: {
13
17
  image: 'รูปภาพ',
@@ -7,7 +7,11 @@
7
7
  underline: 'Altı çizili',
8
8
  clear: 'Temizle',
9
9
  height: 'Satır yüksekliği',
10
- name: 'Yazı Tipi'
10
+ name: 'Yazı Tipi',
11
+ strikethrough: 'Üstü çizili',
12
+ subscript: 'Subscript',
13
+ superscript: 'Superscript',
14
+ size: 'Yazı tipi boyutu'
11
15
  },
12
16
  image: {
13
17
  image: 'Resim',
@@ -7,7 +7,11 @@
7
7
  underline: 'Підкреслений',
8
8
  clear: 'Прибрати стилі шрифту',
9
9
  height: 'Висота лінії',
10
- name: 'Шрифт'
10
+ name: 'Шрифт',
11
+ strikethrough: 'Закреслений',
12
+ subscript: 'Нижній індекс',
13
+ superscript: 'Верхній індекс',
14
+ size: 'Розмір шрифту'
11
15
  },
12
16
  image: {
13
17
  image: 'Картинка',
@@ -7,7 +7,9 @@
7
7
  underline: 'Gạch Dưới',
8
8
  clear: 'Bỏ Định Dạng',
9
9
  height: 'Khoảng Cách Hàng',
10
- name: 'Phông Chữ'
10
+ name: 'Phông Chữ',
11
+ strikethrough: 'Gạch Ngang',
12
+ size: 'Cỡ Chữ'
11
13
  },
12
14
  image: {
13
15
  image: 'Hình Ảnh',
@@ -7,7 +7,9 @@
7
7
  underline: '下划线',
8
8
  clear: '清除格式',
9
9
  height: '行高',
10
- name: '字体'
10
+ name: '字体',
11
+ strikethrough: '删除线',
12
+ size: '字号'
11
13
  },
12
14
  image: {
13
15
  image: '图片',
@@ -6,7 +6,9 @@
6
6
  italic: '斜體',
7
7
  underline: '底線',
8
8
  clear: '清除格式',
9
- height: '行高'
9
+ height: '行高',
10
+ strikethrough: '刪除線',
11
+ size: '字體大小'
10
12
  },
11
13
  image: {
12
14
  image: '圖片',
@@ -0,0 +1,89 @@
1
+ (function (factory) {
2
+ /* global define */
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery'], factory);
6
+ } else {
7
+ // Browser globals: jQuery
8
+ factory(window.jQuery);
9
+ }
10
+ }(function ($) {
11
+ // template
12
+ var tmpl = $.summernote.renderer.getTemplate();
13
+
14
+ /**
15
+ * @class plugin.hello
16
+ *
17
+ * Hello Plugin
18
+ */
19
+ $.summernote.addPlugin({
20
+ /** @property {String} name name of plugin */
21
+ name: 'hello',
22
+ /**
23
+ * @property {Object} buttons
24
+ * @property {Function} buttons.hello function to make button
25
+ * @property {Function} buttons.helloDropdown function to make button
26
+ * @property {Function} buttons.helloImage function to make button
27
+ */
28
+ buttons: { // buttons
29
+ hello: function () {
30
+
31
+ return tmpl.iconButton('fa fa-header', {
32
+ event : 'hello',
33
+ title: 'hello',
34
+ hide: true
35
+ });
36
+ },
37
+ helloDropdown: function () {
38
+
39
+
40
+ var list = '<li><a data-event="helloDropdown" href="#" data-value="summernote">summernote</a></li>';
41
+ list += '<li><a data-event="helloDropdown" href="#" data-value="codemirror">Code Mirror</a></li>';
42
+ var dropdown = '<ul class="dropdown-menu">' + list + '</ul>';
43
+
44
+ return tmpl.iconButton('fa fa-header', {
45
+ title: 'hello',
46
+ hide: true,
47
+ dropdown : dropdown
48
+ });
49
+ },
50
+ helloImage : function () {
51
+ return tmpl.iconButton('fa fa-file-image-o', {
52
+ event : 'helloImage',
53
+ title: 'helloImage',
54
+ hide: true
55
+ });
56
+ }
57
+
58
+ },
59
+
60
+ /**
61
+ * @property {Object} events
62
+ * @property {Function} events.hello run function when button that has a 'hello' event name fires click
63
+ * @property {Function} events.helloDropdown run function when button that has a 'helloDropdown' event name fires click
64
+ * @property {Function} events.helloImage run function when button that has a 'helloImage' event name fires click
65
+ */
66
+ events: { // events
67
+ hello: function (event, editor, layoutInfo) {
68
+ // Get current editable node
69
+ var $editable = layoutInfo.editable();
70
+
71
+ // Call insertText with 'hello'
72
+ editor.insertText($editable, 'hello ');
73
+ },
74
+ helloDropdown: function (event, editor, layoutInfo, value) {
75
+ // Get current editable node
76
+ var $editable = layoutInfo.editable();
77
+
78
+ // Call insertText with 'hello'
79
+ editor.insertText($editable, 'hello ' + value + '!!!!');
80
+ },
81
+ helloImage : function (event, editor, layoutInfo) {
82
+ var $editable = layoutInfo.editable();
83
+
84
+ var img = $('<img src="http://upload.wikimedia.org/wikipedia/commons/b/b0/NewTux.svg" />');
85
+ editor.insertNode($editable, img[0]);
86
+ }
87
+ }
88
+ });
89
+ }));
@@ -0,0 +1,573 @@
1
+ (function (factory) {
2
+ /* global define */
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery'], factory);
6
+ } else {
7
+ // Browser globals: jQuery
8
+ factory(window.jQuery);
9
+ }
10
+ }(function ($) {
11
+ // template
12
+ var tmpl = $.summernote.renderer.getTemplate();
13
+
14
+ // core functions: range, dom
15
+ var range = $.summernote.core.range;
16
+ var dom = $.summernote.core.dom;
17
+
18
+ /**
19
+ * createVideoNode
20
+ *
21
+ * @member plugin.video
22
+ * @private
23
+ * @param {String} url
24
+ * @return {Node}
25
+ */
26
+ var createVideoNode = function (url) {
27
+ // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)
28
+ var ytRegExp = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
29
+ var ytMatch = url.match(ytRegExp);
30
+
31
+ var igRegExp = /\/\/instagram.com\/p\/(.[a-zA-Z0-9]*)/;
32
+ var igMatch = url.match(igRegExp);
33
+
34
+ var vRegExp = /\/\/vine.co\/v\/(.[a-zA-Z0-9]*)/;
35
+ var vMatch = url.match(vRegExp);
36
+
37
+ var vimRegExp = /\/\/(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/;
38
+ var vimMatch = url.match(vimRegExp);
39
+
40
+ var dmRegExp = /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/;
41
+ var dmMatch = url.match(dmRegExp);
42
+
43
+ var youkuRegExp = /\/\/v\.youku\.com\/v_show\/id_(\w+)\.html/;
44
+ var youkuMatch = url.match(youkuRegExp);
45
+
46
+ var mp4RegExp = /^.+.(mp4|m4v)$/;
47
+ var mp4Match = url.match(mp4RegExp);
48
+
49
+ var oggRegExp = /^.+.(ogg|ogv)$/;
50
+ var oggMatch = url.match(oggRegExp);
51
+
52
+ var webmRegExp = /^.+.(webm)$/;
53
+ var webmMatch = url.match(webmRegExp);
54
+
55
+ var $video;
56
+ if (ytMatch && ytMatch[1].length === 11) {
57
+ var youtubeId = ytMatch[1];
58
+ $video = $('<iframe>')
59
+ .attr('frameborder', 0)
60
+ .attr('src', '//www.youtube.com/embed/' + youtubeId)
61
+ .attr('width', '640').attr('height', '360');
62
+ } else if (igMatch && igMatch[0].length) {
63
+ $video = $('<iframe>')
64
+ .attr('frameborder', 0)
65
+ .attr('src', igMatch[0] + '/embed/')
66
+ .attr('width', '612').attr('height', '710')
67
+ .attr('scrolling', 'no')
68
+ .attr('allowtransparency', 'true');
69
+ } else if (vMatch && vMatch[0].length) {
70
+ $video = $('<iframe>')
71
+ .attr('frameborder', 0)
72
+ .attr('src', vMatch[0] + '/embed/simple')
73
+ .attr('width', '600').attr('height', '600')
74
+ .attr('class', 'vine-embed');
75
+ } else if (vimMatch && vimMatch[3].length) {
76
+ $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')
77
+ .attr('frameborder', 0)
78
+ .attr('src', '//player.vimeo.com/video/' + vimMatch[3])
79
+ .attr('width', '640').attr('height', '360');
80
+ } else if (dmMatch && dmMatch[2].length) {
81
+ $video = $('<iframe>')
82
+ .attr('frameborder', 0)
83
+ .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])
84
+ .attr('width', '640').attr('height', '360');
85
+ } else if (youkuMatch && youkuMatch[1].length) {
86
+ $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')
87
+ .attr('frameborder', 0)
88
+ .attr('height', '498')
89
+ .attr('width', '510')
90
+ .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);
91
+ } else if (mp4Match || oggMatch || webmMatch) {
92
+ $video = $('<video controls>')
93
+ .attr('src', url)
94
+ .attr('width', '640').attr('height', '360');
95
+ } else {
96
+ // this is not a known video link. Now what, Cat? Now what?
97
+ return false;
98
+ }
99
+
100
+ return $video[0];
101
+ };
102
+
103
+ /**
104
+ * @member plugin.video
105
+ * @private
106
+ * @param {jQuery} $editable
107
+ * @return {String}
108
+ */
109
+ var getTextOnRange = function ($editable) {
110
+ $editable.focus();
111
+
112
+ var rng = range.create();
113
+
114
+ // if range on anchor, expand range with anchor
115
+ if (rng.isOnAnchor()) {
116
+ var anchor = dom.ancestor(rng.sc, dom.isAnchor);
117
+ rng = range.createFromNode(anchor);
118
+ }
119
+
120
+ return rng.toString();
121
+ };
122
+
123
+ /**
124
+ * toggle button status
125
+ *
126
+ * @member plugin.video
127
+ * @private
128
+ * @param {jQuery} $btn
129
+ * @param {Boolean} isEnable
130
+ */
131
+ var toggleBtn = function ($btn, isEnable) {
132
+ $btn.toggleClass('disabled', !isEnable);
133
+ $btn.attr('disabled', !isEnable);
134
+ };
135
+
136
+ /**
137
+ * Show video dialog and set event handlers on dialog controls.
138
+ *
139
+ * @member plugin.video
140
+ * @private
141
+ * @param {jQuery} $dialog
142
+ * @param {jQuery} $dialog
143
+ * @param {Object} text
144
+ * @return {Promise}
145
+ */
146
+ var showVideoDialog = function ($editable, $dialog, text) {
147
+ return $.Deferred(function (deferred) {
148
+ var $videoDialog = $dialog.find('.note-video-dialog');
149
+
150
+ var $videoUrl = $videoDialog.find('.note-video-url'),
151
+ $videoBtn = $videoDialog.find('.note-video-btn');
152
+
153
+ $videoDialog.one('shown.bs.modal', function () {
154
+ $videoUrl.val(text).on('input', function () {
155
+ toggleBtn($videoBtn, $videoUrl.val());
156
+ }).trigger('focus');
157
+
158
+ $videoBtn.click(function (event) {
159
+ event.preventDefault();
160
+
161
+ deferred.resolve($videoUrl.val());
162
+ $videoDialog.modal('hide');
163
+ });
164
+ }).one('hidden.bs.modal', function () {
165
+ $videoUrl.off('input');
166
+ $videoBtn.off('click');
167
+
168
+ if (deferred.state() === 'pending') {
169
+ deferred.reject();
170
+ }
171
+ }).modal('show');
172
+ });
173
+ };
174
+
175
+ /**
176
+ * @class plugin.video
177
+ *
178
+ * Video Plugin
179
+ *
180
+ * video plugin is to make embeded video tag.
181
+ *
182
+ * ### load script
183
+ *
184
+ * ```
185
+ * < script src="plugin/summernote-ext-video.js"></script >
186
+ * ```
187
+ *
188
+ * ### use a plugin in toolbar
189
+ * ```
190
+ * $("#editor").summernote({
191
+ * ...
192
+ * toolbar : [
193
+ * ['group', [ 'video' ]]
194
+ * ]
195
+ * ...
196
+ * });
197
+ * ```
198
+ */
199
+ $.summernote.addPlugin({
200
+ /** @property {String} name name of plugin */
201
+ name: 'video',
202
+ /**
203
+ * @property {Object} buttons
204
+ * @property {function(object): string} buttons.video
205
+ */
206
+ buttons: {
207
+ video: function (lang) {
208
+ return tmpl.iconButton('fa fa-youtube-play', {
209
+ event: 'showVideoDialog',
210
+ title: lang.video.video,
211
+ hide: true
212
+ });
213
+ }
214
+ },
215
+
216
+ /**
217
+ * @property {Object} dialogs
218
+ * @property {function(object, object): string} dialogs.video
219
+ */
220
+ dialogs: {
221
+ video: function (lang) {
222
+ var body = '<div class="form-group row-fluid">' +
223
+ '<label>' + lang.video.url + ' <small class="text-muted">' + lang.video.providers + '</small></label>' +
224
+ '<input class="note-video-url form-control span12" type="text" />' +
225
+ '</div>';
226
+ var footer = '<button href="#" class="btn btn-primary note-video-btn disabled" disabled>' + lang.video.insert + '</button>';
227
+ return tmpl.dialog('note-video-dialog', lang.video.insert, body, footer);
228
+ }
229
+ },
230
+ /**
231
+ * @property {Object} events
232
+ * @property {Function} events.showVideoDialog
233
+ */
234
+ events: {
235
+ showVideoDialog: function (event, editor, layoutInfo) {
236
+ var $dialog = layoutInfo.dialog(),
237
+ $editable = layoutInfo.editable(),
238
+ text = getTextOnRange($editable);
239
+
240
+ // save current range
241
+ editor.saveRange($editable);
242
+
243
+ showVideoDialog($editable, $dialog, text).then(function (url) {
244
+ // when ok button clicked
245
+
246
+ // restore range
247
+ editor.restoreRange($editable);
248
+
249
+ // build node
250
+ var $node = createVideoNode(url);
251
+
252
+ if ($node) {
253
+ // insert video node
254
+ editor.insertNode($editable, $node);
255
+ }
256
+ }).fail(function () {
257
+ // when cancel button clicked
258
+ editor.restoreRange($editable);
259
+ });
260
+ }
261
+ },
262
+
263
+ // define language
264
+ langs: {
265
+ 'en-US': {
266
+ video: {
267
+ video: 'Video',
268
+ videoLink: 'Video Link',
269
+ insert: 'Insert Video',
270
+ url: 'Video URL?',
271
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)'
272
+ }
273
+ },
274
+ 'ar-AR': {
275
+ video: {
276
+ video: 'فيديو',
277
+ videoLink: 'رابط الفيديو',
278
+ insert: 'إدراج الفيديو',
279
+ url: 'رابط الفيديو',
280
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)'
281
+ }
282
+ },
283
+ 'ca-ES': {
284
+ video: {
285
+ video: 'Video',
286
+ videoLink: 'Enllaç del video',
287
+ insert: 'Inserir video',
288
+ url: 'URL del video?',
289
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)'
290
+ }
291
+ },
292
+ 'cs-CZ': {
293
+ video: {
294
+ video: 'Video',
295
+ videoLink: 'Odkaz videa',
296
+ insert: 'Vložit video',
297
+ url: 'URL videa?',
298
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)'
299
+ }
300
+ },
301
+ 'da-DK': {
302
+ video: {
303
+ video: 'Video',
304
+ videoLink: 'Video Link',
305
+ insert: 'Indsæt Video',
306
+ url: 'Video URL?',
307
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)'
308
+ }
309
+ },
310
+ 'de-DE': {
311
+ video: {
312
+ video: 'Video',
313
+ videoLink: 'Video Link',
314
+ insert: 'Video einfügen',
315
+ url: 'Video URL?',
316
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, oder Youku)'
317
+ }
318
+ },
319
+ 'es-ES': {
320
+ video: {
321
+ video: 'Video',
322
+ videoLink: 'Link del video',
323
+ insert: 'Insertar video',
324
+ url: '¿URL del video?',
325
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)'
326
+ }
327
+ },
328
+ 'es-EU': {
329
+ video: {
330
+ video: 'Bideoa',
331
+ videoLink: 'Bideorako esteka',
332
+ insert: 'Bideo berri bat txertatu',
333
+ url: 'Bideoaren URL helbidea',
334
+ providers: '(YouTube, Vimeo, Vine, Instagram, edo DailyMotion)'
335
+ }
336
+ },
337
+ 'fa-IR': {
338
+ video: {
339
+ video: 'ویدیو',
340
+ videoLink: 'لینک ویدیو',
341
+ insert: 'افزودن ویدیو',
342
+ url: 'آدرس ویدیو ؟',
343
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, یا Youku)'
344
+ }
345
+ },
346
+ 'fi-FI': {
347
+ video: {
348
+ video: 'Video',
349
+ videoLink: 'Linkki videoon',
350
+ insert: 'Lisää video',
351
+ url: 'Videon URL-osoite?',
352
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)'
353
+ }
354
+ },
355
+ 'fr-FR': {
356
+ video: {
357
+ video: 'Vidéo',
358
+ videoLink: 'Lien vidéo',
359
+ insert: 'Insérer une vidéo',
360
+ url: 'URL de la vidéo',
361
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)'
362
+ }
363
+ },
364
+ 'he-IL': {
365
+ video: {
366
+ video: 'סרטון',
367
+ videoLink: 'קישור לסרטון',
368
+ insert: 'הוסף סרטון',
369
+ url: 'קישור לסרטון',
370
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)'
371
+ }
372
+ },
373
+ 'hu-HU': {
374
+ video: {
375
+ video: 'Videó',
376
+ videoLink: 'Videó hivatkozás',
377
+ insert: 'Videó beszúrása',
378
+ url: 'Videó URL címe',
379
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, vagy Youku)'
380
+ }
381
+ },
382
+ 'id-ID': {
383
+ video: {
384
+ video: 'Video',
385
+ videoLink: 'Link video',
386
+ insert: 'Sisipkan video',
387
+ url: 'Tautan video',
388
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, atau Youku)'
389
+ }
390
+ },
391
+ 'it-IT': {
392
+ video: {
393
+ video: 'Video',
394
+ videoLink: 'Collegamento ad un Video',
395
+ insert: 'Inserisci Video',
396
+ url: 'URL del Video',
397
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)'
398
+ }
399
+ },
400
+ 'ja-JP': {
401
+ video: {
402
+ video: '動画',
403
+ videoLink: '動画リンク',
404
+ insert: '動画挿入',
405
+ url: '動画のURL',
406
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)'
407
+ }
408
+ },
409
+ 'ko-KR': {
410
+ video: {
411
+ video: '동영상',
412
+ videoLink: '동영상 링크',
413
+ insert: '동영상 추가',
414
+ url: '동영상 URL',
415
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)'
416
+ }
417
+ },
418
+ 'nb-NO': {
419
+ video: {
420
+ video: 'Video',
421
+ videoLink: 'Videolenke',
422
+ insert: 'Sett inn video',
423
+ url: 'Video-URL',
424
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)'
425
+ }
426
+ },
427
+ 'nl-NL': {
428
+ video: {
429
+ video: 'Video',
430
+ videoLink: 'Video link',
431
+ insert: 'Video invoegen',
432
+ url: 'URL van de video',
433
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)'
434
+ }
435
+ },
436
+ 'pl-PL': {
437
+ video: {
438
+ video: 'Wideo',
439
+ videoLink: 'Adres wideo',
440
+ insert: 'Wstaw wideo',
441
+ url: 'Adres wideo',
442
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, lub Youku)'
443
+ }
444
+ },
445
+ 'pt-BR': {
446
+ video: {
447
+ video: 'Vídeo',
448
+ videoLink: 'Link para vídeo',
449
+ insert: 'Inserir vídeo',
450
+ url: 'URL do vídeo?',
451
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, ou Youku)'
452
+ }
453
+ },
454
+ 'ro-RO': {
455
+ video: {
456
+ video: 'Video',
457
+ videoLink: 'Link video',
458
+ insert: 'Inserează video',
459
+ url: 'URL video?',
460
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, sau Youku)'
461
+ }
462
+ },
463
+ 'ru-RU': {
464
+ video: {
465
+ video: 'Видео',
466
+ videoLink: 'Ссылка на видео',
467
+ insert: 'Вставить видео',
468
+ url: 'URL видео',
469
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)'
470
+ }
471
+ },
472
+ 'sk-SK': {
473
+ video: {
474
+ video: 'Video',
475
+ videoLink: 'Odkaz videa',
476
+ insert: 'Vložiť video',
477
+ url: 'URL videa?',
478
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)'
479
+ }
480
+ },
481
+ 'sl-SI': {
482
+ video: {
483
+ video: 'Video',
484
+ videoLink: 'Video povezava',
485
+ insert: 'Vstavi video',
486
+ url: 'Povezava do videa',
487
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)'
488
+ }
489
+ },
490
+ 'sr-RS': {
491
+ video: {
492
+ video: 'Видео',
493
+ videoLink: 'Веза ка видеу',
494
+ insert: 'Уметни видео',
495
+ url: 'URL видео',
496
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)'
497
+ }
498
+ },
499
+ 'sr-RS-Latin': {
500
+ video: {
501
+ video: 'Video',
502
+ videoLink: 'Veza ka videu',
503
+ insert: 'Umetni video',
504
+ url: 'URL video',
505
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)'
506
+ }
507
+ },
508
+ 'sv-SE': {
509
+ video: {
510
+ video: 'Filmklipp',
511
+ videoLink: 'Länk till filmklipp',
512
+ insert: 'Infoga filmklipp',
513
+ url: 'Länk till filmklipp',
514
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)'
515
+ }
516
+ },
517
+ 'th-TH': {
518
+ video: {
519
+ video: 'วีดีโอ',
520
+ videoLink: 'ลิงก์ของวีดีโอ',
521
+ insert: 'แทรกวีดีโอ',
522
+ url: 'ที่อยู่ URL ของวีดีโอ?',
523
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)'
524
+ }
525
+ },
526
+ 'tr-TR': {
527
+ video: {
528
+ video: 'Video',
529
+ videoLink: 'Video bağlantısı',
530
+ insert: 'Video ekle',
531
+ url: 'Video bağlantısı?',
532
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)'
533
+ }
534
+ },
535
+ 'uk-UA': {
536
+ video: {
537
+ video: 'Відео',
538
+ videoLink: 'Посилання на відео',
539
+ insert: 'Вставити відео',
540
+ url: 'URL відео',
541
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)'
542
+ }
543
+ },
544
+ 'vi-VN': {
545
+ video: {
546
+ video: 'Video',
547
+ videoLink: 'Đường Dẫn đến Video',
548
+ insert: 'Chèn Video',
549
+ url: 'URL',
550
+ providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)'
551
+ }
552
+ },
553
+ 'zh-CN': {
554
+ video: {
555
+ video: '视频',
556
+ videoLink: '视频链接',
557
+ insert: '插入视频',
558
+ url: '视频地址',
559
+ providers: '(优酷, Instagram, DailyMotion, Youtube等)'
560
+ }
561
+ },
562
+ 'zh-TW': {
563
+ video: {
564
+ video: '影片',
565
+ videoLink: '影片連結',
566
+ insert: '插入影片',
567
+ url: '影片網址',
568
+ providers: '(優酷, Instagram, DailyMotion, Youtube等)'
569
+ }
570
+ }
571
+ }
572
+ });
573
+ }));