summernote-rails 0.6.2.1 → 0.6.5.0

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