Jetpack by WordPress.com - Version 2.0.7

Version Description

Release Date: May 26, 2016

  • Important security update. Please upgrade immediately.
Download this release

Release Info

Developer samhotchkiss
Plugin Icon 128x128 Jetpack by WordPress.com
Version 2.0.7
Comparing to
See all releases

Version 2.0.7

Files changed (143) hide show
  1. _inc/images/a8c.png +0 -0
  2. _inc/images/alertbox-closeicon-2x.png +0 -0
  3. _inc/images/alertbox-closeicon.png +0 -0
  4. _inc/images/alertbox-clouds-2x.png +0 -0
  5. _inc/images/alertbox-clouds.png +0 -0
  6. _inc/images/align-center-2x.png +0 -0
  7. _inc/images/align-left-2x.png +0 -0
  8. _inc/images/align-none-2x.png +0 -0
  9. _inc/images/align-right-2x.png +0 -0
  10. _inc/images/archive-2x.png +0 -0
  11. _inc/images/arrow-2x.png +0 -0
  12. _inc/images/arrow-pointer-blue-2x.png +0 -0
  13. _inc/images/arrow.png +0 -0
  14. _inc/images/arrows-2x.png +0 -0
  15. _inc/images/arrows-dark-2x.png +0 -0
  16. _inc/images/arrows-dark-vs-2x.png +0 -0
  17. _inc/images/arrows-vs-2x.png +0 -0
  18. _inc/images/atdbuttontr-2x.png +0 -0
  19. _inc/images/audio-2x.png +0 -0
  20. _inc/images/automattic-2x.png +0 -0
  21. _inc/images/automattic.png +0 -0
  22. _inc/images/bubble_bg-2x.png +0 -0
  23. _inc/images/buttons-2x.gif +0 -0
  24. _inc/images/code-2x.png +0 -0
  25. _inc/images/comment-grey-bubble-2x.png +0 -0
  26. _inc/images/date-button-2x.gif +0 -0
  27. _inc/images/default-2x.png +0 -0
  28. _inc/images/delete-2x.png +0 -0
  29. _inc/images/document-2x.png +0 -0
  30. _inc/images/down_arrow-2x.gif +0 -0
  31. _inc/images/footer-clouds-2x.png +0 -0
  32. _inc/images/footer-clouds.png +0 -0
  33. _inc/images/generic-2x.png +0 -0
  34. _inc/images/header-clouds-2x.png +0 -0
  35. _inc/images/header-clouds-small-2x.png +0 -0
  36. _inc/images/header-clouds-small.png +0 -0
  37. _inc/images/header-clouds.png +0 -0
  38. _inc/images/icon-comingsoon-2x.png +0 -0
  39. _inc/images/icon-comingsoon.png +0 -0
  40. _inc/images/icon-pointer-flag-2x.png +0 -0
  41. _inc/images/image-2x.png +0 -0
  42. _inc/images/imgedit-icons-2x.png +0 -0
  43. _inc/images/interactive-2x.png +0 -0
  44. _inc/images/jetpack-closebox-icon.png +0 -0
  45. _inc/images/list-2x.png +0 -0
  46. _inc/images/logo-2x.png +0 -0
  47. _inc/images/logo-small-2x.png +0 -0
  48. _inc/images/logo-small.png +0 -0
  49. _inc/images/logo.png +0 -0
  50. _inc/images/marker-2x.png +0 -0
  51. _inc/images/mask-2x.png +0 -0
  52. _inc/images/media-button-2x.png +0 -0
  53. _inc/images/menuicon-sprite-2x.png +0 -0
  54. _inc/images/menuicon-sprite.png +0 -0
  55. _inc/images/module-clouds-2x.png +0 -0
  56. _inc/images/module-clouds.png +0 -0
  57. _inc/images/module-icons-sprite-2x.png +0 -0
  58. _inc/images/module-icons-sprite.png +0 -0
  59. _inc/images/press-this-2x.png +0 -0
  60. _inc/images/publicize.png +0 -0
  61. _inc/images/resize-2x.gif +0 -0
  62. _inc/images/rss/blue-large.png +0 -0
  63. _inc/images/rss/blue-medium.png +0 -0
  64. _inc/images/rss/blue-small.png +0 -0
  65. _inc/images/rss/green-large.png +0 -0
  66. _inc/images/rss/green-medium.png +0 -0
  67. _inc/images/rss/green-small.png +0 -0
  68. _inc/images/rss/orange-large.png +0 -0
  69. _inc/images/rss/orange-medium.png +0 -0
  70. _inc/images/rss/orange-small.png +0 -0
  71. _inc/images/rss/pink-large.png +0 -0
  72. _inc/images/rss/pink-medium.png +0 -0
  73. _inc/images/rss/pink-small.png +0 -0
  74. _inc/images/rss/purple-large.png +0 -0
  75. _inc/images/rss/purple-medium.png +0 -0
  76. _inc/images/rss/purple-small.png +0 -0
  77. _inc/images/rss/red-large.png +0 -0
  78. _inc/images/rss/red-medium.png +0 -0
  79. _inc/images/rss/red-small.png +0 -0
  80. _inc/images/rss/silver-large.png +0 -0
  81. _inc/images/rss/silver-medium.png +0 -0
  82. _inc/images/rss/silver-small.png +0 -0
  83. _inc/images/screen-icon.png +0 -0
  84. _inc/images/screenshots/beautifulmath.png +0 -0
  85. _inc/images/screenshots/comments.png +0 -0
  86. _inc/images/screenshots/contactform.png +0 -0
  87. _inc/images/screenshots/custom-css.png +0 -0
  88. _inc/images/screenshots/hovercards.png +0 -0
  89. _inc/images/screenshots/mobile-push-notifications.jpg +0 -0
  90. _inc/images/screenshots/mobile-theme.png +0 -0
  91. _inc/images/screenshots/notes.png +0 -0
  92. _inc/images/screenshots/post-by-email.png +0 -0
  93. _inc/images/screenshots/publicize.png +0 -0
  94. _inc/images/screenshots/sharing.png +0 -0
  95. _inc/images/screenshots/shortcodes.png +0 -0
  96. _inc/images/screenshots/shortlinks.png +0 -0
  97. _inc/images/screenshots/spelling.png +0 -0
  98. _inc/images/screenshots/stats.png +0 -0
  99. _inc/images/screenshots/subscriptions.png +0 -0
  100. _inc/images/screenshots/vaultpress.png +0 -0
  101. _inc/images/screenshots/widgets.png +0 -0
  102. _inc/images/sort-2x.gif +0 -0
  103. _inc/images/spreadsheet-2x.png +0 -0
  104. _inc/images/stars-2x.png +0 -0
  105. _inc/images/stats-smiley.gif +0 -0
  106. _inc/images/status-light-2x.png +0 -0
  107. _inc/images/status-light.png +0 -0
  108. _inc/images/tb-close-2x.png +0 -0
  109. _inc/images/text-2x.png +0 -0
  110. _inc/images/video-2x.png +0 -0
  111. _inc/images/wheel-2x.png +0 -0
  112. _inc/images/wpicons-2x.png +0 -0
  113. _inc/images/wpspin_light-2x.gif +0 -0
  114. _inc/images/xit-2x.gif +0 -0
  115. _inc/jetpack-retina.css +470 -0
  116. _inc/jetpack-rtl.css +128 -0
  117. _inc/jetpack.css +1063 -0
  118. _inc/jetpack.js +248 -0
  119. _inc/jquery.spin.js +86 -0
  120. _inc/spin.js +301 -0
  121. class.jetpack-ixr-client.php +135 -0
  122. class.jetpack-post-images.php +417 -0
  123. class.jetpack-signature.php +188 -0
  124. class.jetpack-user-agent.php +1331 -0
  125. class.jetpack-xmlrpc-server.php +366 -0
  126. class.json-api-endpoints.php +3915 -0
  127. class.json-api.php +371 -0
  128. functions.compat.php +15 -0
  129. functions.opengraph.php +149 -0
  130. functions.photon.php +152 -0
  131. jetpack.php +4529 -0
  132. languages/jetpack-ar.mo +0 -0
  133. languages/jetpack-ar.po +3514 -0
  134. languages/jetpack-az.mo +0 -0
  135. languages/jetpack-az.po +3474 -0
  136. languages/jetpack-bs_BA.mo +0 -0
  137. languages/jetpack-bs_BA.po +3492 -0
  138. languages/jetpack-ca.mo +0 -0
  139. languages/jetpack-ca.po +3043 -0
  140. languages/jetpack-cs_CZ.mo +0 -0
  141. languages/jetpack-cs_CZ.po +3484 -0
  142. languages/jetpack-da_DK.mo +0 -0
  143. languages/jetpack-da_DK.po +625 -0
_inc/images/a8c.png ADDED
Binary file
_inc/images/alertbox-closeicon-2x.png ADDED
Binary file
_inc/images/alertbox-closeicon.png ADDED
Binary file
_inc/images/alertbox-clouds-2x.png ADDED
Binary file
_inc/images/alertbox-clouds.png ADDED
Binary file
_inc/images/align-center-2x.png ADDED
Binary file
_inc/images/align-left-2x.png ADDED
Binary file
_inc/images/align-none-2x.png ADDED
Binary file
_inc/images/align-right-2x.png ADDED
Binary file
_inc/images/archive-2x.png ADDED
Binary file
_inc/images/arrow-2x.png ADDED
Binary file
_inc/images/arrow-pointer-blue-2x.png ADDED
Binary file
_inc/images/arrow.png ADDED
Binary file
_inc/images/arrows-2x.png ADDED
Binary file
_inc/images/arrows-dark-2x.png ADDED
Binary file
_inc/images/arrows-dark-vs-2x.png ADDED
Binary file
_inc/images/arrows-vs-2x.png ADDED
Binary file
_inc/images/atdbuttontr-2x.png ADDED
Binary file
_inc/images/audio-2x.png ADDED
Binary file
_inc/images/automattic-2x.png ADDED
Binary file
_inc/images/automattic.png ADDED
Binary file
_inc/images/bubble_bg-2x.png ADDED
Binary file
_inc/images/buttons-2x.gif ADDED
Binary file
_inc/images/code-2x.png ADDED
Binary file
_inc/images/comment-grey-bubble-2x.png ADDED
Binary file
_inc/images/date-button-2x.gif ADDED
Binary file
_inc/images/default-2x.png ADDED
Binary file
_inc/images/delete-2x.png ADDED
Binary file
_inc/images/document-2x.png ADDED
Binary file
_inc/images/down_arrow-2x.gif ADDED
Binary file
_inc/images/footer-clouds-2x.png ADDED
Binary file
_inc/images/footer-clouds.png ADDED
Binary file
_inc/images/generic-2x.png ADDED
Binary file
_inc/images/header-clouds-2x.png ADDED
Binary file
_inc/images/header-clouds-small-2x.png ADDED
Binary file
_inc/images/header-clouds-small.png ADDED
Binary file
_inc/images/header-clouds.png ADDED
Binary file
_inc/images/icon-comingsoon-2x.png ADDED
Binary file
_inc/images/icon-comingsoon.png ADDED
Binary file
_inc/images/icon-pointer-flag-2x.png ADDED
Binary file
_inc/images/image-2x.png ADDED
Binary file
_inc/images/imgedit-icons-2x.png ADDED
Binary file
_inc/images/interactive-2x.png ADDED
Binary file
_inc/images/jetpack-closebox-icon.png ADDED
Binary file
_inc/images/list-2x.png ADDED
Binary file
_inc/images/logo-2x.png ADDED
Binary file
_inc/images/logo-small-2x.png ADDED
Binary file
_inc/images/logo-small.png ADDED
Binary file
_inc/images/logo.png ADDED
Binary file
_inc/images/marker-2x.png ADDED
Binary file
_inc/images/mask-2x.png ADDED
Binary file
_inc/images/media-button-2x.png ADDED
Binary file
_inc/images/menuicon-sprite-2x.png ADDED
Binary file
_inc/images/menuicon-sprite.png ADDED
Binary file
_inc/images/module-clouds-2x.png ADDED
Binary file
_inc/images/module-clouds.png ADDED
Binary file
_inc/images/module-icons-sprite-2x.png ADDED
Binary file
_inc/images/module-icons-sprite.png ADDED
Binary file
_inc/images/press-this-2x.png ADDED
Binary file
_inc/images/publicize.png ADDED
Binary file
_inc/images/resize-2x.gif ADDED
Binary file
_inc/images/rss/blue-large.png ADDED
Binary file
_inc/images/rss/blue-medium.png ADDED
Binary file
_inc/images/rss/blue-small.png ADDED
Binary file
_inc/images/rss/green-large.png ADDED
Binary file
_inc/images/rss/green-medium.png ADDED
Binary file
_inc/images/rss/green-small.png ADDED
Binary file
_inc/images/rss/orange-large.png ADDED
Binary file
_inc/images/rss/orange-medium.png ADDED
Binary file
_inc/images/rss/orange-small.png ADDED
Binary file
_inc/images/rss/pink-large.png ADDED
Binary file
_inc/images/rss/pink-medium.png ADDED
Binary file
_inc/images/rss/pink-small.png ADDED
Binary file
_inc/images/rss/purple-large.png ADDED
Binary file
_inc/images/rss/purple-medium.png ADDED
Binary file
_inc/images/rss/purple-small.png ADDED
Binary file
_inc/images/rss/red-large.png ADDED
Binary file
_inc/images/rss/red-medium.png ADDED
Binary file
_inc/images/rss/red-small.png ADDED
Binary file
_inc/images/rss/silver-large.png ADDED
Binary file
_inc/images/rss/silver-medium.png ADDED
Binary file
_inc/images/rss/silver-small.png ADDED
Binary file
_inc/images/screen-icon.png ADDED
Binary file
_inc/images/screenshots/beautifulmath.png ADDED
Binary file
_inc/images/screenshots/comments.png ADDED
Binary file
_inc/images/screenshots/contactform.png ADDED
Binary file
_inc/images/screenshots/custom-css.png ADDED
Binary file
_inc/images/screenshots/hovercards.png ADDED
Binary file
_inc/images/screenshots/mobile-push-notifications.jpg ADDED
Binary file
_inc/images/screenshots/mobile-theme.png ADDED
Binary file
_inc/images/screenshots/notes.png ADDED
Binary file
_inc/images/screenshots/post-by-email.png ADDED
Binary file
_inc/images/screenshots/publicize.png ADDED
Binary file
_inc/images/screenshots/sharing.png ADDED
Binary file
_inc/images/screenshots/shortcodes.png ADDED
Binary file
_inc/images/screenshots/shortlinks.png ADDED
Binary file
_inc/images/screenshots/spelling.png ADDED
Binary file
_inc/images/screenshots/stats.png ADDED
Binary file
_inc/images/screenshots/subscriptions.png ADDED
Binary file
_inc/images/screenshots/vaultpress.png ADDED
Binary file
_inc/images/screenshots/widgets.png ADDED
Binary file
_inc/images/sort-2x.gif ADDED
Binary file
_inc/images/spreadsheet-2x.png ADDED
Binary file
_inc/images/stars-2x.png ADDED
Binary file
_inc/images/stats-smiley.gif ADDED
Binary file
_inc/images/status-light-2x.png ADDED
Binary file
_inc/images/status-light.png ADDED
Binary file
_inc/images/tb-close-2x.png ADDED
Binary file
_inc/images/text-2x.png ADDED
Binary file
_inc/images/video-2x.png ADDED
Binary file
_inc/images/wheel-2x.png ADDED
Binary file
_inc/images/wpicons-2x.png ADDED
Binary file
_inc/images/wpspin_light-2x.gif ADDED
Binary file
_inc/images/xit-2x.gif ADDED
Binary file
_inc/jetpack-retina.css ADDED
@@ -0,0 +1,470 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Retina core icons */
2
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
3
+ /* TinyMCE buttons */
4
+ .wp_themeSkin .mceToolbar span.mce_undo,
5
+ .wp_themeSkin .mceToolbar span.mce_redo,
6
+ .wp_themeSkin .mceToolbar span.mce_bullist,
7
+ .wp_themeSkin .mceToolbar span.mce_numlist,
8
+ .wp_themeSkin .mceToolbar span.mce_blockquote,
9
+ .wp_themeSkin .mceToolbar span.mce_charmap,
10
+ .wp_themeSkin .mceToolbar span.mce_bold,
11
+ .wp_themeSkin .mceToolbar span.mce_italic,
12
+ .wp_themeSkin .mceToolbar span.mce_underline,
13
+ .wp_themeSkin .mceToolbar span.mce_justifyleft,
14
+ .wp_themeSkin .mceToolbar span.mce_justifyright,
15
+ .wp_themeSkin .mceToolbar span.mce_justifycenter,
16
+ .wp_themeSkin .mceToolbar span.mce_justifyfull,
17
+ .wp_themeSkin .mceToolbar span.mce_indent,
18
+ .wp_themeSkin .mceToolbar span.mce_outdent,
19
+ .wp_themeSkin .mceToolbar span.mce_link,
20
+ .wp_themeSkin .mceToolbar span.mce_unlink,
21
+ .wp_themeSkin .mceToolbar span.mce_help,
22
+ .wp_themeSkin .mceToolbar span.mce_removeformat,
23
+ .wp_themeSkin .mceToolbar span.mce_fullscreen,
24
+ .wp_themeSkin .mceToolbar span.mce_wp_fullscreen,
25
+ .wp_themeSkin .mceToolbar span.mce_media,
26
+ .wp_themeSkin .mceToolbar span.mce_pastetext,
27
+ .wp_themeSkin .mceToolbar span.mce_pasteword,
28
+ .wp_themeSkin .mceToolbar span.mce_wp_help,
29
+ .wp_themeSkin .mceToolbar span.mce_wp_adv,
30
+ .wp_themeSkin .mceToolbar span.mce_wp_more,
31
+ .wp_themeSkin .mceToolbar span.mce_strikethrough,
32
+ .wp_themeSkin .mceToolbar span.mce_spellchecker,
33
+ .wp_themeSkin .mceToolbar span.mce_forecolor,
34
+ .wp_themeSkin .mceToolbar .mce_forecolorpicker,
35
+ .wp_themeSkin .mceToolbar .mceSplitButton .mce_spellchecker span.mce_spellchecker,
36
+ .wp_themeSkin .mceToolbar .mceSplitButton .mce_forecolor span.mce_forecolor,
37
+ .wp_themeSkin .mceToolbar .mceSplitButton span.mce_numlist,
38
+ .wp_themeSkin .mceToolbar .mceSplitButton span.mce_bullist {
39
+ background-image: url('images/wpicons-2x.png');
40
+ background-size: 560px 40px;
41
+ }
42
+
43
+ .view-switch #view-switch-list,
44
+ .view-switch .current #view-switch-list,
45
+ .view-switch #view-switch-excerpt,
46
+ .view-switch .current #view-switch-excerpt {
47
+ background-image: url('images/list-2x.png');
48
+ background-size: 80px 20px;
49
+ }
50
+
51
+ .imgedit-crop,
52
+ .imgedit-rleft,
53
+ .imgedit-rright,
54
+ .imgedit-flipv,
55
+ .imgedit-fliph,
56
+ .imgedit-undo,
57
+ .imgedit-redo {
58
+ background-image: url('images/imgedit-icons-2x.png');
59
+ background-size: 260px 64px;
60
+ }
61
+
62
+ /* Welcome screen close button */
63
+ .welcome-panel .welcome-panel-close:before {
64
+ background-image: url('images/xit-2x.gif');
65
+ background-size: 20px 10px;
66
+ }
67
+
68
+ /* Dismiss tag buttons */
69
+ .tagchecklist span a, #bulk-titles div a {
70
+ background-image: url('images/xit-2x.gif') !important;
71
+ background-size: 20px 10px !important;
72
+ }
73
+ .tagchecklist span a:hover, #bulk-titles div a:hover {
74
+ background-image: url('images/xit-2x.gif') !important;
75
+ background-size: 20px 10px !important;
76
+ }
77
+
78
+ /* Pointer dismiss button */
79
+ .wp-pointer-buttons a.close::before {
80
+ background-image: url('images/xit-2x.gif');
81
+ background-size: 20px 10px;
82
+ }
83
+
84
+ /* Pointer icon */
85
+ .wp-pointer-content h3::before {
86
+ background-image: url('images/icon-pointer-flag-2x.png');
87
+ background-size: 36px 37px;
88
+ }
89
+
90
+ /* Pointer arrow */
91
+ .wp-pointer-arrow {
92
+ background-image: url('images/arrow-pointer-blue-2x.png') !important;
93
+ background-size: 30px 60px !important;
94
+ }
95
+
96
+ /* Screen options links */
97
+ #screen-meta-links a.show-settings {
98
+ background-image: url('images/arrows-2x.png') !important;
99
+ background-size: 15px 123px !important;
100
+ }
101
+ body.admin-color-classic #screen-meta-links a.show-settings {
102
+ background-image: url('images/arrows-vs-2x.png') !important;
103
+ }
104
+
105
+ /* Collapse button divs */
106
+ #collapse-button div {
107
+ background-image: url('images/arrows-2x.png') !important;
108
+ background-size: 15px 123px !important;
109
+ }
110
+ body.admin-color-classic #collapse-button div {
111
+ background-image: url('images/arrows-vs-2x.png') !important;
112
+ }
113
+
114
+ /* Metabox handle arrows */
115
+ .meta-box-sortables .postbox:hover .handlediv {
116
+ background-image: url('images/arrows-2x.png') !important;
117
+ background-size: 15px 123px !important;
118
+ }
119
+ body.admin-color-classic .meta-box-sortables .postbox:hover .handlediv {
120
+ background-image: url('images/arrows-vs-2x.png') !important;
121
+ }
122
+
123
+ /* Date button */
124
+ .curtime #timestamp {
125
+ background-image: url('images/date-button-2x.gif') !important;
126
+ background-size: 16px 16px;
127
+ display: inline-block;
128
+ height: 16px;
129
+ }
130
+
131
+ /* Comments column bubble */
132
+ .column-comments .vers img {
133
+ padding-top: 12px;
134
+ height: 0;
135
+ width: 12px;
136
+ background: transparent url('images/comment-grey-bubble-2x.png') no-repeat center center;
137
+ background-size: 12px 12px;
138
+ }
139
+ .post-com-count {
140
+ background-image: url('images/bubble_bg-2x.png') !important;
141
+ background-size: 18px 100px;
142
+ }
143
+
144
+ /* Post sorting indicator */
145
+ .sorting-indicator {
146
+ background-image: url('images/sort-2x.gif');
147
+ background-size: 14px 4px;
148
+ }
149
+
150
+ /* Widget arrows */
151
+ .sidebar-name-arrow {
152
+ background-image: url('images/arrows-2x.png') !important;
153
+ background-size: 15px 123px !important;
154
+ }
155
+ body.admin-color-classic .sidebar-name-arrow {
156
+ background-image: url('images/arrows-vs-2x.png') !important;
157
+ }
158
+ .sidebar-name:hover .sidebar-name-arrow {
159
+ background-image: url('images/arrows-dark-2x.png') !important;
160
+ }
161
+ body.admin-color-classic .sidebar-name:hover .sidebar-name-arrow {
162
+ background-image: url('images/arrows-dark-vs-2x.png') !important;
163
+ }
164
+ .widget-top a.widget-action {
165
+ background-image: url('images/arrows-2x.png') !important;
166
+ background-size: 15px 123px !important;
167
+ }
168
+ body.admin-color-classic .widget-top a.widget-action {
169
+ background-image: url('images/arrows-vs-2x.png') !important;
170
+ }
171
+ .widget-top a.widget-action:hover {
172
+ background-image: url('images/arrows-dark-2x.png') !important;
173
+ }
174
+ body.admin-color-classic .widget-top a.widget-action:hover {
175
+ background-image: url('images/arrows-dark-vs-2x.png') !important;
176
+ }
177
+
178
+ /* Menu editor item arrows */
179
+ .item-edit {
180
+ background-image: url('images/arrows-2x.png') !important;
181
+ background-size: 15px 123px !important;
182
+ }
183
+ body.admin-color-classic .item-edit {
184
+ background-image: url('images/arrows-vs-2x.png') !important;
185
+ }
186
+ .item-edit:hover {
187
+ background-image: url('images/arrows-dark-2x.png') !important;
188
+ background-size: 15px 123px !important;
189
+ }
190
+ body.admin-color-classic .item-edit:hover {
191
+ background-image: url('images/arrows-dark-vs-2x.png') !important;
192
+ }
193
+
194
+ /* Plugin install star ratings */
195
+ div.star-holder {
196
+ background-image: url('images/stars-2x.png');
197
+ background-size: 21px 37px;
198
+ }
199
+ div.star-holder .star-rating {
200
+ background-image: url('images/stars-2x.png');
201
+ background-size: 21px 37px;
202
+ }
203
+
204
+ /* Press This bookmarklet icon */
205
+ .pressthis a span {
206
+ background-image: url('images/press-this-2x.png');
207
+ background-size: 24px 20px;
208
+ }
209
+
210
+ /* Media button */
211
+ #wp-content-media-buttons a.add_media img, #dashboard_quick_press a.add_media img {
212
+ padding-top: 15px;
213
+ width: 15px;
214
+ height: 0;
215
+ background: url('images/media-button-2x.png') no-repeat center center;
216
+ background-size: 15px 15px;
217
+ }
218
+
219
+ /* After the Deadline MCE icon */
220
+ a#content_AtD img {
221
+ padding-top: 20px;
222
+ width: 20px;
223
+ height: 0;
224
+ background: url('images/atdbuttontr-2x.png') no-repeat center center;
225
+ background-size: 20px 20px;
226
+ }
227
+
228
+ /* Resize editor */
229
+ #post-body .wp_themeSkin .mceStatusbar a.mceResize {
230
+ background-image: url('images/resize-2x.gif') !important;
231
+ background-size: 11px 11px !important;
232
+ }
233
+
234
+ /* MCE dropdowns */
235
+ .wp_themeSkin .mceListBox .mceOpen span, .wp_themeSkin .mceSplitButton a.mceOpen {
236
+ background-image: url("images/down_arrow-2x.gif") !important;
237
+ background-size: 10px 20px;
238
+ }
239
+
240
+ /* Img overlay buttons */
241
+ #wp_editimgbtn, #wp_delimgbtn, #wp_editgallery, #wp_delgallery {
242
+ padding-top: 24px !important;
243
+ height: 0;
244
+ width: 24px;
245
+ background: url("images/delete-2x.png") no-repeat center center !important;
246
+ background-size: 24px 24px;
247
+ }
248
+
249
+ #wp_editimgbtn, #wp_delimgbtn, #wp_editgallery, #wp_delgallery {
250
+ padding-top: 24px !important;
251
+ height: 0;
252
+ width: 24px;
253
+ background-size: 24px 24px;
254
+ }
255
+
256
+ #wp_editimgbtn, #wp_editgallery {
257
+ background: #eee url("images/image-2x.png") no-repeat center center !important;
258
+ }
259
+
260
+ #wp_delimgbtn, #wp_delgallery {
261
+ background: #eee url("images/delete-2x.png") no-repeat center center !important;
262
+ }
263
+
264
+ /* AJAX loading spinners */
265
+ img.ajax-loading, img.ajax-feedback {
266
+ width: 16px;
267
+ height: 0;
268
+ padding-top: 19px !important;
269
+ background: url("images/wpspin_light-2x.gif") no-repeat center center !important;
270
+ background-size: 16px 16px;
271
+ }
272
+
273
+ /* Align buttons (in image properties in the media library) */
274
+ .image-align-none-label {
275
+ background: url('images/align-none-2x.png') no-repeat center left;
276
+ background-size: 21px 15px;
277
+ }
278
+
279
+ .image-align-left-label {
280
+ background: url('images/align-left-2x.png') no-repeat center left;
281
+ background-size: 22px 15px;
282
+ }
283
+
284
+ .image-align-center-label {
285
+ background: url('images/align-center-2x.png') no-repeat center left;
286
+ background-size: 21px 15px;
287
+ }
288
+
289
+ .image-align-right-label {
290
+ background: url('images/align-right-2x.png') no-repeat center left;
291
+ background-size: 22px 15px;
292
+ }
293
+
294
+ .button,
295
+ .submit input,
296
+ .button-secondary {
297
+ background-color: #f5f5f5;
298
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#f2f2f2));
299
+ background-image: -webkit-linear-gradient(top, #fff, #f2f2f2);
300
+ background-image: -moz-linear-gradient(top, #fff, #f2f2f2);
301
+ background-image: -o-linear-gradient(top, #fff, #f2f2f2);
302
+ background-image: linear-gradient(to bottom, #fff, #f2f2f2);
303
+ }
304
+
305
+ .button:active,
306
+ .submit input:active,
307
+ .button-secondary:active {
308
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#f2f2f2), to(#fff));
309
+ background-image: -webkit-linear-gradient(top, #f2f2f2, #fff);
310
+ background-image: -moz-linear-gradient(top, #f2f2f2, #fff);
311
+ background-image: -o-linear-gradient(top, #f2f2f2, #fff);
312
+ background-image: linear-gradient(to bottom, #f2f2f2, #fff);
313
+ }
314
+
315
+ input.button-primary,
316
+ button.button-primary,
317
+ a.button-primary {
318
+ background-color: #21759B;
319
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#298bb9), to(#217196));
320
+ background-image: -webkit-linear-gradient(top, #298bb9, #217196);
321
+ background-image: -moz-linear-gradient(top, #298bb9, #217196);
322
+ background-image: -o-linear-gradient(top, #298bb9, #217196);
323
+ background-image: linear-gradient(to bottom, #298bb9, #217196);
324
+ }
325
+
326
+ input.button-primary:active,
327
+ button.button-primary:active,
328
+ a.button-primary:active {
329
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#217196), to(#298bb9));
330
+ background-image: -webkit-linear-gradient(top, #217196, #298bb9);
331
+ background-image: -moz-linear-gradient(top, #217196, #298bb9);
332
+ background-image: -o-linear-gradient(top, #217196, #298bb9);
333
+ background-image: linear-gradient(to bottom, #217196, #298bb9);
334
+ }
335
+
336
+ .admin-color-classic #quicktags,
337
+ .admin-color-classic .wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar {
338
+ background-color: #cfdfe9;
339
+ background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#d3e2eb));
340
+ background-image: -webkit-linear-gradient(top, #eff8ff, #d3e2eb);
341
+ background-image: -moz-linear-gradient(top, #eff8ff, #d3e2eb);
342
+ background-image: -o-linear-gradient(top, #eff8ff, #d3e2eb);
343
+ background-image: linear-gradient(to bottom, #eff8ff, #d3e2eb);
344
+ }
345
+
346
+ /* Uploader close button */
347
+ #TB_closeWindowButton img {
348
+ background: url('images/tb-close-2x.png') no-repeat center center;
349
+ padding-top: 15px;
350
+ width: 15px;
351
+ height: 0;
352
+ background-size: 15px 15px;
353
+ }
354
+
355
+ td.media-icon img[src$='wp-includes/images/crystal/archive.png'],
356
+ td.A1B1 img[src$='wp-includes/images/crystal/archive.png'] {
357
+ background: url('images/archive-2x.png') no-repeat center center;
358
+ padding-top: 60px;
359
+ width: 46px;
360
+ height: 0;
361
+ background-size: 46px 60px;
362
+ }
363
+
364
+ td.media-icon img[src$='wp-includes/images/crystal/audio.png'],
365
+ td.A1B1 img[src$='wp-includes/images/crystal/audio.png'] {
366
+ background: url('images/audio-2x.png') no-repeat center center;
367
+ padding-top: 60px;
368
+ width: 46px;
369
+ height: 0;
370
+ background-size: 46px 60px;
371
+ }
372
+
373
+ td.media-icon img[src$='wp-includes/images/crystal/code.png'],
374
+ td.A1B1 img[src$='wp-includes/images/crystal/code.png'] {
375
+ background: url('images/code-2x.png') no-repeat center center;
376
+ padding-top: 60px;
377
+ width: 46px;
378
+ height: 0;
379
+ background-size: 46px 60px;
380
+ }
381
+
382
+ td.media-icon img[src$='wp-includes/images/crystal/default.png'],
383
+ td.A1B1 img[src$='wp-includes/images/crystal/default.png'] {
384
+ background: url('images/default-2x.png') no-repeat center center;
385
+ padding-top: 60px;
386
+ width: 46px;
387
+ height: 0;
388
+ background-size: 46px 60px;
389
+ }
390
+
391
+ td.media-icon img[src$='wp-includes/images/crystal/document.png'],
392
+ td.A1B1 img[src$='wp-includes/images/crystal/document.png'] {
393
+ background: url('images/document-2x.png') no-repeat center center;
394
+ padding-top: 60px;
395
+ width: 46px;
396
+ height: 0;
397
+ background-size: 46px 60px;
398
+ }
399
+
400
+ td.media-icon img[src$='wp-includes/images/crystal/interactive.png'],
401
+ td.A1B1 img[src$='wp-includes/images/crystal/interactive.png'] {
402
+ background: url('images/interactive-2x.png') no-repeat center center;
403
+ padding-top: 60px;
404
+ width: 46px;
405
+ height: 0;
406
+ background-size: 46px 60px;
407
+ }
408
+
409
+ td.media-icon img[src$='wp-includes/images/crystal/spreadsheet.png'],
410
+ td.A1B1 img[src$='wp-includes/images/crystal/spreadsheet.png'] {
411
+ background: url('images/spreadsheet-2x.png') no-repeat center center;
412
+ padding-top: 60px;
413
+ width: 46px;
414
+ height: 0;
415
+ background-size: 46px 60px;
416
+ }
417
+
418
+ td.media-icon img[src$='wp-includes/images/crystal/text.png'],
419
+ td.A1B1 img[src$='wp-includes/images/crystal/text.png'] {
420
+ background: url('images/text-2x.png') no-repeat center center;
421
+ padding-top: 60px;
422
+ width: 46px;
423
+ height: 0;
424
+ background-size: 46px 60px;
425
+ }
426
+
427
+ td.media-icon img[src$='wp-includes/images/crystal/video.png'],
428
+ td.A1B1 img[src$='wp-includes/images/crystal/video.png'] {
429
+ background: url('images/video-2x.png') no-repeat center center;
430
+ padding-top: 60px;
431
+ width: 46px;
432
+ height: 0;
433
+ background-size: 46px 60px;
434
+ }
435
+
436
+ .farbtastic .marker {
437
+ background-image: url('images/marker-2x.png');
438
+ background-size: 17px 17px;
439
+ }
440
+
441
+ .farbtastic .wheel {
442
+ background-image: url('images/wheel-2x.png');
443
+ background-size: 195px 195px;
444
+ }
445
+
446
+ .farbtastic .overlay {
447
+ background-image: url('images/mask-2x.png');
448
+ background-size: 101px 101px;
449
+ }
450
+
451
+ /* Generic admin menu icon */
452
+ #adminmenu img[src$='wp-admin/images/generic.png'] {
453
+ background: url('images/generic-2x.png') no-repeat center center;
454
+ padding-top: 25px;
455
+ width: 16px;
456
+ height: 0;
457
+ background-size: 16px 16px;
458
+ }
459
+
460
+ /* Editor dialogs close button */
461
+ .clearlooks2 .mceClose,
462
+ .clearlooks2 .mceMin,
463
+ .clearlooks2 .mceMed,
464
+ .clearlooks2 .mceMax,
465
+ .wp-dialog .ui-dialog-titlebar-close {
466
+ background-image: url('images/buttons-2x.gif') !important;
467
+ background-size: 116px 48px !important;
468
+ }
469
+ }
470
+
_inc/jetpack-rtl.css ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #jp-header #jp-clouds {
2
+ background-position: -632px 100%;
3
+ }
4
+ #jp-header.small #jp-clouds {
5
+ background-position: -425px 100%;
6
+ }
7
+
8
+ #jp-header #jp-clouds #jp-disconnect {
9
+ float: left;
10
+ margin: -35px 0 0 25px;
11
+ text-align: left;
12
+ }
13
+
14
+ #jp-header #jp-clouds #jp-disconnect a {
15
+ background-position: 100% 90%;
16
+ padding: 4px 30px 3px 10px;
17
+ }
18
+ #jp-header #jp-clouds #jp-disconnect a:hover {
19
+ background-position: 100% 3%;
20
+ }
21
+
22
+ #jp-header h3 {
23
+ background-position: top right;
24
+ right: 25px;
25
+ left: auto;
26
+ }
27
+
28
+ #jp-header p {
29
+ right: 390px;
30
+ left: auto;
31
+ text-align: right;
32
+ }
33
+
34
+ #jp-info {
35
+ margin: 0 28px 0 12px;
36
+ }
37
+
38
+ #jp-info p {
39
+ float:right;
40
+ }
41
+
42
+ #jp-info a.jp-button {
43
+ float: left;
44
+ margin: 8px 20px 0 0;
45
+ }
46
+
47
+ .jp-connect { padding: 10px 0 5px !important; }
48
+
49
+ #jetpack-settings > .jetpack-message { margin: 10px 15px 10px 13px }
50
+
51
+ .jetpack-message .squeezer {
52
+ text-align: right;
53
+ }
54
+ .jetpack-message h4 {
55
+ margin: 0 0 10px 10px;
56
+ }
57
+
58
+ .more-info {
59
+ margin: 0 15px 5px 12px;
60
+ background: transparent url( images/header-clouds-sm.png ) bottom right repeat-x;
61
+ }
62
+ .more-info .jp-close {
63
+ left: 0;
64
+ right: auto;
65
+ padding: 0 6px 0 4px;
66
+ -moz-border-radius: 3px;
67
+ -webkit-border-radius: 3px;
68
+ border-radius: 3px;
69
+ -moz-border-radius-topright: 0;
70
+ -moz-border-radius-bottomright: 0;
71
+ -webkit-border-top-left-radius: 0;
72
+ -webkit-border-bottom-left-radius: 0;
73
+ border-top-left-radius: 0;
74
+ border-bottom-left-radius: 0;
75
+ }
76
+
77
+ .more-info div.jp-info-img {
78
+ float: left;
79
+ margin: 0 20px 0 30px;
80
+ }
81
+
82
+ .jetpack-module {
83
+ float: right;
84
+ margin: 0 15px 15px 0;
85
+ padding: 15px 15px 35px 0;
86
+ }
87
+ .jetpack-module div.module-image {
88
+ float: left;
89
+ margin: 0 10px 5px 0;
90
+ -webkit-border-radius: 0;
91
+ -moz-border-radius: 0;
92
+ border-radius: 0;
93
+ -webkit-border-top-right-radius: 5px;
94
+ -moz-border-radius-topleft: 5px;
95
+ border-top-right-radius: 5px;
96
+ -webkit-border-bottom-right-radius: 5px;
97
+ -moz-border-radius-bottomleft: 5px;
98
+ border-bottom-right-radius: 5px;
99
+ }
100
+
101
+ .jetpack-module div.module-image p {
102
+ -webkit-border-radius: 0;
103
+ -moz-border-radius: 0;
104
+ border-radius: 0;
105
+ -webkit-border-bottom-right-radius: 5px;
106
+ -moz-border-radius-bottomleft: 5px;
107
+ border-bottom-right-radius: 5px;
108
+ }
109
+
110
+
111
+ .jetpack-module .jetpack-module-actions {
112
+ right: 15px;
113
+ left: auto;
114
+ }
115
+
116
+ .placeholder h3 {
117
+ margin-left: 15px;
118
+ margin-right: auto;
119
+ }
120
+
121
+ #jp-footer .automattic {
122
+ padding-right: 3px;
123
+ padding-left: 0;
124
+ }
125
+
126
+ #jp-footer .automattic span {
127
+ margin: 0 1px 0 5px;
128
+ }
_inc/jetpack.css ADDED
@@ -0,0 +1,1063 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #jp-header {
2
+ min-width: 741px;
3
+ z-index: 0;
4
+ margin: 30px 0 -30px 0;
5
+ }
6
+ #jp-header.small {
7
+ margin-bottom: 50px;
8
+ }
9
+
10
+ #jp-header #jp-clouds {
11
+ position: relative;
12
+ background: transparent url( images/header-clouds.png ) -315px 100% repeat-x;
13
+ padding-top: 110px;
14
+ -webkit-border-radius: 3px;
15
+ -moz-border-radius: 3px;
16
+ border-radius: 3px;
17
+ }
18
+ #jp-header.small #jp-clouds {
19
+ background: transparent url( images/header-clouds-small.png ) -120px 100% repeat-x;
20
+ padding: 50px 0 0 0;
21
+ height: 70px;
22
+ }
23
+
24
+
25
+ #jp-header #jp-clouds #jp-disconnectors {
26
+ font-size: 12px;
27
+ color: #fff;
28
+ float: right;
29
+ margin-top: -35px;
30
+ text-align: left;
31
+ position: relative;
32
+ left: -45px;
33
+ }
34
+
35
+ #jp-header #jp-clouds .jp-disconnect a {
36
+ background: #8caa46 url( images/status-light.png ) 3px 85% no-repeat;
37
+ display: inline-block;
38
+ position: relative;
39
+ width: 100%;
40
+ height: 1.7em;
41
+ overflow: hidden;
42
+ padding: 4px 0 3px 30px;
43
+ margin: 0 -20px 3px 0;
44
+ color: #fff;
45
+ text-decoration: none;
46
+ border: 1px solid #7a943d;
47
+ -moz-border-radius: 5px;
48
+ -webkit-border-radius: 5px;
49
+ border-radius: 5px;
50
+ -moz-box-shadow: inset 0 0 2px rgba( 255, 255, 255, 0.4 );
51
+ -webkit-box-shadow: inset 0 0 2px rgba( 255, 255, 255, 0.4 );
52
+ box-shadow: inset 0 0 2px rgba( 255, 255, 255, 0.4 );
53
+ text-shadow: 0px -1px 0px rgba( 0,0,0,0.3 );
54
+ }
55
+ #jp-header #jp-clouds .jp-disconnect a:hover {
56
+ background: #8caa46 url( images/status-light.png ) 3px -2% no-repeat;
57
+ background-color: #839f40;
58
+ border-color: #6a8037;
59
+ }
60
+
61
+ #jp-header #jp-clouds .jp-disconnect div {
62
+ position: relative;
63
+ line-height: 1.7em;
64
+ height: 1.7em;
65
+ }
66
+
67
+ #jp-header #jp-clouds .jp-disconnect a:hover div,
68
+ #jp-header #jp-clouds .jp-disconnect a.clicked div {
69
+ top: -1.7em;
70
+ }
71
+
72
+ /* Retina Header Clouds & Status Light */
73
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
74
+ #jp-header #jp-clouds {
75
+ background: transparent url( images/header-clouds-2x.png ) -315px 100% repeat-x;
76
+ background-size:1600px 400px;
77
+ }
78
+ #jp-header.small #jp-clouds {
79
+ background: transparent url( images/header-clouds-small-2x.png ) -120px 100% repeat-x;
80
+ background-size:980px 140px;
81
+ }
82
+
83
+ #jp-header #jp-clouds .jp-disconnect a {
84
+ background: #8caa46 url( images/status-light-2x.png ) 3px 85% no-repeat;
85
+ background-size:25px 57px;
86
+ }
87
+ #jp-header #jp-clouds .jp-disconnect a:hover {
88
+ background: #8caa46 url( images/status-light-2x.png ) 3px -2% no-repeat;
89
+ background-size:25px 57px;
90
+ }
91
+ }
92
+
93
+
94
+ #jp-header h3 {
95
+ position: relative;
96
+ background: transparent url( images/logo.png ) top left no-repeat;
97
+ width: 252px;
98
+ height: 200px;
99
+ overflow: hidden;
100
+ text-indent: -999em;
101
+ top: -95px;
102
+ left: 25px;
103
+ margin: 0;
104
+ padding: 0;
105
+ }
106
+ #jp-header.small h3 {
107
+ background: transparent url( images/logo-small.png ) top left no-repeat;
108
+ width: 149px;
109
+ height: 120px;
110
+ top: -35px;
111
+ }
112
+
113
+ /* Retina Logo */
114
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
115
+ #jp-header h3 {
116
+ background: transparent url( images/logo-2x.png ) top left no-repeat;
117
+ background-size:250px 200px;
118
+ }
119
+ #jp-header.small h3 {
120
+ background: transparent url( images/logo-small-2x.png ) top left no-repeat;
121
+ background-size:150px 120px;
122
+ }
123
+ }
124
+
125
+
126
+
127
+ #jp-header p {
128
+ position: absolute;
129
+ left: 390px;
130
+ text-align: left;
131
+ top: 30px;
132
+ width: 48%;
133
+ color: #fff;
134
+ font-size: 25px;
135
+ line-height: 130%;
136
+ text-shadow: 0px 1px 1px rgba(0,0,0,0.5);
137
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
138
+ -webkit-font-smoothing: antialiased;
139
+ }
140
+
141
+ #jp-info {
142
+ position: relative;
143
+ overflow: visible;
144
+ z-index: 50;
145
+ margin: 0 12px 0 28px;
146
+ min-width: 780px;
147
+ }
148
+
149
+ #jp-info p {
150
+ font-size: 17px;
151
+ line-height: 150%;
152
+ text-shadow: 0px 1px 0px #fff;
153
+ font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
154
+ color: #666;
155
+ margin: 0 0 40px;
156
+ float:left;
157
+ width: 58%;
158
+ }
159
+ #jp-info p.small {
160
+ font-size: 14px;
161
+ }
162
+
163
+ #jp-info a.jp-button {
164
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
165
+ float: right;
166
+ margin: 8px 0 0 20px;
167
+ display: inline-block;
168
+ background: #69acce;
169
+ -moz-box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0,0,0,0.3);
170
+ -webkit-box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0,0,0,0.3);
171
+ box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0,0,0,0.3);
172
+ padding: 12px 20px;
173
+ border: 1px solid #2a8cba;
174
+ -moz-border-radius: 5px;
175
+ -webkit-border-radius: 5px;
176
+ border-radius: 5px;
177
+ line-height: 100%;
178
+ color: #fff;
179
+ text-align: center;
180
+ font-size: 20px;
181
+ font-weight: bold;
182
+ text-decoration: none;
183
+ text-shadow: 0px 1px 2px rgba( 0,0,0,0.5);
184
+ -webkit-transition-duration: .3s;
185
+ -moz-transition-duration: .3s;
186
+ cursor: pointer;
187
+ }
188
+ #jp-info a.jp-button:hover, #jp-info a.jp-button:active {
189
+ background-color: #f0a000;
190
+ border-color: #c87800;
191
+ -webkit-transition-duration: .3s;
192
+ outline: none;
193
+ -moz-box-shadow: inset 0 0 2px #fff, 0 1px 7px rgba(240,160,0,0.5);
194
+ -webkit-box-shadow: inset 0 0 2px #fff, 0 1px 7px rgba(240,160,0,0.5);
195
+ box-shadow: inset 0 0 2px #fff, 0 1px 7spx rgba(240,160,0,0.5);
196
+ }
197
+
198
+ .jetpack-message {
199
+ position: relative;
200
+ z-index: 100;
201
+ border: 1px solid #2a8cba !important;
202
+ -moz-border-radius: 3px;
203
+ -webkit-border-radius: 3px;
204
+ border-radius: 3px;
205
+ background: url( images/alertbox-clouds.png ) 100% 100% no-repeat;
206
+ background-color: #6aafcf !important;
207
+ -webkit-box-shadow: inset 0 0 15px rgba( 0,0,0,0.04 );
208
+ -moz-box-shadow: inset 0 0 15px rgba( 0,0,0,0.04 );
209
+ box-shadow: inset 0 0 15px rgba( 0,0,0,0.04 );
210
+ padding: 18px 90px 8px 15px !important;
211
+ overflow: hidden;
212
+ line-height: 180%;
213
+ }
214
+
215
+ /* Retina alertbox clouds */
216
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
217
+ .jetpack-message {
218
+ background: url( images/alertbox-clouds-2x.png ) 100% 100% no-repeat;
219
+ background-size:95px 55px;
220
+ }
221
+ }
222
+
223
+ .jp-connect { padding: 10px 0 5px !important; }
224
+
225
+ #jetpack-settings > .jetpack-message { margin: 10px 13px 10px 15px }
226
+
227
+ .jetpack-message .squeezer {
228
+ max-width: 940px;
229
+ margin: 0 0 2px;
230
+ padding: 0 10px;
231
+ text-align: left;
232
+ overflow: hidden;
233
+ }
234
+ .jetpack-message h4 {
235
+ margin: 0 10px 10px 0;
236
+ font-size: 18px;
237
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
238
+ font-weight: normal;
239
+ color: #fff;
240
+ text-shadow: 0px 1px 1px rgba(0,0,0,0.4);
241
+ -moz-border-radius: 5px;
242
+ -webkit-border-radius: 5px;
243
+ border-radius: 5px;
244
+ display: inline-block;
245
+ }
246
+
247
+ .jetpack-message h5 {
248
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
249
+ margin: 0;
250
+ }
251
+
252
+ .jetpack-message .squeezer a, .jetpack-message .squeezer a:visited {
253
+ color: #fff;
254
+ text-decoration: underline;
255
+ }
256
+
257
+ .jetpack-message .squeezer a:hover {
258
+ color: #f0a000;
259
+ }
260
+
261
+ .jetpack-message code, .jetpack-err p {
262
+ background: rgba( 0,0,0,0.2 );
263
+ font-size: 14px;
264
+ padding: 3px 5px !important;
265
+ text-shadow: 0px 1px 1px rgba(0,0,0,0.4);
266
+ color: #fff;
267
+ }
268
+
269
+ .jetpack-message p {
270
+ margin: -1px 0 0 0 !important;
271
+ padding: 0;
272
+ display: inline-block;
273
+ }
274
+ .jetpack-err p {
275
+ overflow: hidden;
276
+ margin-bottom: 10px !important;
277
+ }
278
+
279
+ .jetpack-message p a.button-primary {
280
+ font-size: 16px !important;
281
+ display: inline-block;
282
+ padding: 8px 15px;
283
+ color: #fff;
284
+ text-align: center;
285
+ font-size: 20px;
286
+ text-decoration: none;
287
+ -moz-border-radius: 5px;
288
+ -webkit-border-radius: 5px;
289
+ border-radius: 5px;
290
+ border: 1px solid #8caa46;
291
+ background: #b4d278;
292
+ -moz-box-shadow: inset 0 0 2px rgba( 255,255,255,1), 0 1px 1px rgba( 0,0,0,0.1 );
293
+ -webkit-box-shadow: inset 0 0 2px rgba( 255,255,255,1), 0 1px 1px rgba( 0,0,0,0.1 );
294
+ box-shadow: inset 0 0 2px rgba( 255,255,255,1), 0 1px 1px rgba( 0,0,0,0.1 );
295
+ text-shadow: 0px -1px 0px rgba( 0,0,0,0.3);
296
+ -webkit-transition-duration: .3s;
297
+ -moz-transition-duration: .3s;
298
+ cursor: pointer;
299
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
300
+ }
301
+ .jetpack-message p a.button-primary:hover, .jetpack-message p a.button-primary:active {
302
+ background-color: #f0a000;
303
+ border-color: #c87800;
304
+ -webkit-transition-duration: .3s;
305
+ outline: none;
306
+ }
307
+
308
+ .inline-message p strong { display: block; }
309
+
310
+ .more-info {
311
+ position: relative;
312
+ top: -5px;
313
+ margin: 0 15px 5px 15px;
314
+ height: 230px; /* Have to set height otherwise slideDown() doesn't work. */
315
+ padding-right: 15px !important;
316
+ padding-bottom: 15px;
317
+ clear: both;
318
+ overflow: visible !important;
319
+ color: #666 !important;
320
+ background: transparent url( images/module-clouds.png ) bottom left repeat-x;
321
+ background-color: #f0f0f0 !important;
322
+ border-color: #dcdcdc !important;
323
+ text-shadow: 0px 1px 0px #fff;
324
+ -webkit-box-shadow: inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 );
325
+ -moz-box-shadow: inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 );
326
+ box-shadow: inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 );
327
+ }
328
+
329
+ /* Retina moreinfo bg clouds */
330
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
331
+ .more-info {
332
+ background: transparent url( images/module-clouds-2x.png ) bottom left repeat-x;
333
+ background-size:980px 140px;
334
+ }
335
+ }
336
+
337
+
338
+ .more-info h4 {
339
+ padding: 0;
340
+ background: none;
341
+ font-weight: normal;
342
+ color: #000;
343
+ font-size: 19px;
344
+ text-shadow: 0px 1px 0px #fff;
345
+ }
346
+
347
+ .more-info h5 {
348
+ margin-left: 0;
349
+ font-size: 12px !important;
350
+ }
351
+ .more-info .arrow {
352
+ position: absolute;
353
+ width: 29px;
354
+ height: 18px;
355
+ top: -16px;
356
+ left: 0;
357
+ background: url( images/arrow.png ) top left no-repeat;
358
+ }
359
+
360
+ /* Retina module more info arrow */
361
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
362
+ .more-info .arrow {
363
+ background: url( images/arrow-2x.png ) top left no-repeat;
364
+ background-size:29px 16px;
365
+ }
366
+ }
367
+
368
+ .more-info p {
369
+ margin: 0 0 10px 0 !important;
370
+ font-size: 14px;
371
+ font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
372
+ line-height: 150%;
373
+ display: block;
374
+ }
375
+
376
+ .more-info ul {
377
+ font-size: 14px;
378
+ font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
379
+ line-height: 150%;
380
+ }
381
+
382
+ .more-info li {
383
+ list-style-type: disc;
384
+ list-style-position: inside;
385
+ }
386
+
387
+ .more-info code {
388
+ background: rgba( 0,0,0,0.05 );
389
+ font-size: 12px;
390
+ padding: 1px;
391
+ text-shadow: none;
392
+ color: #555;
393
+ }
394
+
395
+ .more-info .jp-close {
396
+ position: absolute;
397
+ top: 18px;
398
+ right: 0;
399
+ background: #888;
400
+ background: rgba(0,0,0,0.4);
401
+ color: #fff;
402
+ font-size: 14px !important;
403
+ height: 22px;
404
+ line-height: 20px;
405
+ padding: 0 6px 0 6px;
406
+ font-weight: bold !important;
407
+ -moz-border-radius: 3px;
408
+ -webkit-border-radius: 3px;
409
+ border-radius: 3px;
410
+ -moz-border-radius-topright: 0;
411
+ -moz-border-radius-bottomright: 0;
412
+ -webkit-border-top-right-radius: 0;
413
+ -webkit-border-bottom-right-radius: 0;
414
+ border-top-right-radius: 0;
415
+ border-bottom-right-radius: 0;
416
+ cursor: pointer;
417
+ text-shadow: 0 1px 0 rgba(0,0,0,0.2);
418
+ }
419
+ .more-info .jp-close:hover {
420
+ background: #69acce;
421
+ }
422
+
423
+ .more-info div.jp-info-img {
424
+ float: right;
425
+ width: 320px;
426
+ margin: 0 30px 0 20px;
427
+ }
428
+
429
+ .more-info img.jp-info-img {
430
+ padding: 3px;
431
+ background: rgba( 255, 255, 255, 0.65 );
432
+ border: 5px solid #ddd;
433
+ }
434
+
435
+ .jetpack-activated {
436
+ background: #fffff5 url( images/jp-enabled-bg.jpg ) top left repeat-x !important;
437
+ height: 154px;
438
+ padding: 60px 0 0 200px !important;
439
+ position: relative;
440
+ min-width: 650px;
441
+ top: 15px;
442
+ z-index: 5;
443
+ position: relative;
444
+ }
445
+ .jetpack-activated h3 {
446
+ position: relative;
447
+ z-index: 5;
448
+ color: #444;
449
+ font-size: 42px;
450
+ font-weight: bold;
451
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
452
+ margin: 0;
453
+ padding: 0;
454
+ background: none;
455
+ display: block;
456
+ text-transform: uppercase;
457
+ }
458
+ .jetpack-activated p {
459
+ position: relative;
460
+ z-index: 3;
461
+ top: 3px;
462
+ left: 10px;
463
+ font-size: 16px;
464
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
465
+ font-weight: normal;
466
+ color: #666;
467
+ background: rgba( 255, 255, 255, 0.75 );
468
+ padding: 7px 10px 6px;
469
+ -moz-border-radius: 5px;
470
+ -webkit-border-radius: 5px;
471
+ border-radius: 5px;
472
+ display: inline-block;
473
+ }
474
+ .jetpack-activated .jetpack {
475
+ position: absolute;
476
+ top: 0;
477
+ left: 0;
478
+ width: 238px;
479
+ height: 214px;
480
+ background: url( images/jp-enabled-jetpack.jpg ) top left no-repeat;
481
+ z-index: 2;
482
+ }
483
+ .jetpack-activated .clouds {
484
+ position: absolute;
485
+ right: 0;
486
+ bottom: 0;
487
+ width: 566px;
488
+ height: 214px;
489
+ background: url( images/jp-enabled-clouds.png ) bottom left no-repeat;
490
+ z-index: 0;
491
+ -webkit-border-bottom-right-radius: 5px;
492
+ -moz-border-radius-bottomright: 5px;
493
+ border-bottom-right-radius: 5px;
494
+ -webkit-box-shadow: inset -7px -7px 10px rgba( 0,0,0,0.05 );
495
+ -moz-box-shadow: inset -7px -7px 10px rgba( 0,0,0,0.05 );
496
+ box-shadow: inset -7px -7px 10px rgba( 0,0,0,0.05 );
497
+ }
498
+
499
+ p.jp-help {
500
+ padding: 10px 0 15px;
501
+ }
502
+
503
+ .module-container {
504
+ overflow: hidden;
505
+ min-width: 740px;
506
+ margin: 25px 0;
507
+ width: 100%;
508
+ }
509
+
510
+ .jetpack-module {
511
+ position: relative;
512
+ float: left;
513
+ width: 210px;
514
+ min-height: 160px;
515
+ max-height: 220px;
516
+ margin: 0 0 15px 15px;
517
+ border: 1px solid #dedede;
518
+ -moz-border-radius: 3px;
519
+ -webkit-border-radius: 3px;
520
+ border-radius: 3px;
521
+ background: #fff;
522
+ padding: 15px 0 35px 15px;
523
+ -webkit-box-shadow: inset 0 1px 0 #fff, inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 );
524
+ -moz-box-shadow: inset 0 1px 0 #fff, inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 );
525
+ box-shadow: inset 0 1px 0 #fff, inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 );
526
+ -webkit-transition-duration: .4s;
527
+ -moz-transition-duration: .4s
528
+ }
529
+ /*
530
+ .jetpack-module:hover {
531
+ border-color: #bbb;
532
+ -webkit-box-shadow: 0 1px 2px rgba( 0,0,0,0.2 );
533
+ -moz-box-shadow: 0 1px 2px rgba( 0,0,0,0.2 );
534
+ box-shadow: 0 1px 2px rgba( 0,0,0,0.2 );
535
+ -webkit-transition-duration: .4s;
536
+ -moz-transition-duration: .4s
537
+ }
538
+ */
539
+ .jetpack-module div.module-image {
540
+ float: right;
541
+ margin: 0 0 5px 10px;
542
+ padding: 60px 0 0;
543
+ background: #cbe0a1;
544
+ width: 80px;
545
+ -webkit-border-top-left-radius: 3px;
546
+ -moz-border-radius-topleft: 3px;
547
+ border-top-left-radius: 3px;
548
+ -webkit-border-bottom-left-radius: 3px;
549
+ -moz-border-radius-bottomleft: 3px;
550
+ border-bottom-left-radius: 3px;
551
+ background-repeat: no-repeat;
552
+ background-image: url( images/module-icons-sprite.png );
553
+ background-size: 2500px 50px; /* remember to update this every time a new module is added! */
554
+ }
555
+
556
+
557
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
558
+ .jetpack-module div.module-image {
559
+ background-image: url( images/module-icons-sprite-2x.png );
560
+ }
561
+ }
562
+
563
+ #stats.jetpack-module div.module-image {
564
+ background-position: -510px 5px;
565
+ }
566
+ #comments.jetpack-module div.module-image {
567
+ background-position: -1210px 5px;
568
+ }
569
+ #subscriptions.jetpack-module div.module-image {
570
+ background-position: -1009px 5px;
571
+ }
572
+ #sharedaddy.jetpack-module div.module-image {
573
+ background-position: -710px 5px;
574
+ }
575
+ #after-the-deadline.jetpack-module div.module-image {
576
+ background-position: -308px 5px;
577
+ }
578
+ #vaultpress.jetpack-module div.module-image {
579
+ background-position: -910px 5px;
580
+ }
581
+ #gravatar-hovercards.jetpack-module div.module-image {
582
+ background-position: -410px 5px;
583
+ }
584
+ #contact-form.jetpack-module div.module-image {
585
+ background-position: -1107px 5px;
586
+ }
587
+ #shortlinks.jetpack-module div.module-image {
588
+ background-position: -108px 5px;
589
+ }
590
+ #shortcodes.jetpack-module div.module-image {
591
+ background-position: -608px 5px;
592
+ }
593
+ #latex.jetpack-module div.module-image {
594
+ background-position: -208px 5px;
595
+ }
596
+ #widgets.jetpack-module div.module-image {
597
+ background-position: -5px 5px;
598
+ }
599
+ #enhanced-distribution.jetpack-module div.module-image {
600
+ background-position: -808px 5px;
601
+ }
602
+ #carousel.jetpack-module div.module-image {
603
+ background-position: -1325px 5px;
604
+ }
605
+ #custom-css.jetpack-module div.module-image {
606
+ background-position: -1459px 5px;
607
+ }
608
+ #minileven.jetpack-module div.module-image {
609
+ background-position: -1570px 5px;
610
+ }
611
+ #notes.jetpack-module div.module-image {
612
+ background-position: -1806px 5px;
613
+ }
614
+ #json-api.jetpack-module div.module-image {
615
+ background-position: -1689px 5px;
616
+ }
617
+ #mobile-push.jetpack-module div.module-image {
618
+ background-position: -1925px 5px;
619
+ }
620
+ #publicize.jetpack-module div.module-image {
621
+ background-position: -2136px 5px;
622
+ }
623
+ #post-by-email.jetpack-module div.module-image {
624
+ background-position: -2025px 5px;
625
+ }
626
+ #infinite-scroll.jetpack-module div.module-image {
627
+ background-position: -2230px 5px;
628
+ }
629
+ #photon.jetpack-module div.module-image {
630
+ background-position: -2320px 5px;
631
+ }
632
+
633
+ .jetpack-module div.module-image p {
634
+ background-color: #b4d278;
635
+ color: #fff;
636
+ text-shadow: 1px 1px 0px rgba(0,0,0,0.2);
637
+ text-align: center;
638
+ margin: 0;
639
+ padding: 0;
640
+ clear: both;
641
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
642
+ font-weight: bold;
643
+ -webkit-font-smoothing: antialiased;
644
+ -webkit-border-bottom-left-radius: 2px;
645
+ -moz-border-radius-bottomleft: 2px;
646
+ border-bottom-left-radius: 2px;
647
+ }
648
+
649
+ .jetpack-new-module div.module-image p {
650
+ background-color: #f5bd4d;
651
+ }
652
+
653
+ .jetpack-updated-module div.module-image p {
654
+ background-color: #6aafcf;
655
+ }
656
+
657
+ .jetpack-new-module:hover div.module-image p {
658
+ background-color: #b4d278;
659
+ }
660
+
661
+ .jetpack-updated-module:hover div.module-image p {
662
+ background-color: #b4d278;
663
+ }
664
+
665
+ .jetpack-new-module:hover div.module-image span.module-image-free,
666
+ .jetpack-updated-module:hover div.module-image span.module-image-free {
667
+ display: inline !important;
668
+ }
669
+
670
+ .jetpack-new-module:hover div.module-image span.module-image-badge,
671
+ .jetpack-updated-module:hover div.module-image span.module-image-badge {
672
+ display: none;
673
+ }
674
+
675
+ .jetpack-toggle {
676
+ float: right;
677
+ padding: 2px 4px 4px;
678
+ }
679
+ .jetpack-toggle a {
680
+ text-decoration: none;
681
+ font-weight: bold;
682
+ font-size: 180%;
683
+ color: #bbb;
684
+ }
685
+
686
+ .jetpack-active .jetpack-toggle-button:hover { color: #b90000; }
687
+
688
+ .jetpack-module h3 {
689
+ line-height: 1.1;
690
+ margin: 0;
691
+ padding: 0;
692
+ font-size: 17px;
693
+ font-weight: normal;
694
+ font-style: normal;
695
+ color: #000;
696
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
697
+ }
698
+
699
+ .jetpack-module-description p {
700
+ line-height: 150%;
701
+ font-size: 12px;
702
+ font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
703
+ margin-bottom: 20px;
704
+ color: #666;
705
+ }
706
+
707
+ .jetpack-module .jetpack-module-actions {
708
+ position: absolute;
709
+ bottom: 20px;
710
+ left: 15px;
711
+ background: #fff;
712
+ display: block;
713
+ }
714
+
715
+ .jetpack-module .jetpack-module-actions a {
716
+ position: relative;
717
+ font-weight: bold;
718
+ color: #888;
719
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
720
+ }
721
+
722
+ .jetpack-inactive {
723
+ border-color: #eee;
724
+ cursor: pointer;
725
+ }
726
+ .jetpack-inactive *, jetpack-inactive:hover * { -webkit-transition-duration: .4s; -moz-transition-duration: .4s }
727
+
728
+ .jetpack-inactive h3, .jetpack-inactive p, .jetpack-inactive span {
729
+ color: #ccc;
730
+ }
731
+
732
+ .jetpack-inactive .jetpack-configure-button { display: none; }
733
+ .jetpack-inactive div.module-image {
734
+ opacity: 0.6;
735
+ }
736
+
737
+ .jetpack-inactive .jetpack-module-description p a {
738
+ color: #92b8d0;
739
+ }
740
+ .jetpack-inactive:hover .jetpack-module-description p a {
741
+ color: #5590b7;
742
+ }
743
+
744
+
745
+ .jetpack-inactive:hover {
746
+ border-color: #ddd;
747
+ }
748
+
749
+ .jetpack-inactive:hover h3, .jetpack-inactive:hover p, .jetpack-inactive:hover span {
750
+ color: #aaa;
751
+ }
752
+
753
+ .jetpack-inactive:hover div.module-image {
754
+ opacity: 0.75;
755
+ }
756
+
757
+ .placeholder {
758
+ border-color: #eee !important;
759
+ cursor: default !important;
760
+ }
761
+
762
+ .placeholder h3 {
763
+ color: #dadada;
764
+ margin-top: 55px;
765
+ text-align: center;
766
+ background: transparent url(images/icon-comingsoon.png) top center no-repeat;
767
+ padding: 40px 0 0 0;
768
+ margin-right: 15px;
769
+ box-shadow: none;
770
+ }
771
+
772
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
773
+ .placeholder h3 {
774
+ background: transparent url(images/icon-comingsoon-2x.png) top center no-repeat;
775
+ background-size:32px 32px;
776
+ }
777
+ }
778
+
779
+ #jp-settings-screen {
780
+ margin: 0 25px;
781
+ }
782
+ #jp-settings-screen h3 {
783
+ font-size: 18px;
784
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
785
+ color: #555;
786
+ padding-bottom: 20px;
787
+ border-bottom: 1px solid #eee;
788
+ }
789
+
790
+ p#news-sub {
791
+ text-align: center;
792
+ }
793
+
794
+ #jp-footer {
795
+ background: url( images/footer-clouds.png ) top center no-repeat;
796
+ margin: 30px 0;
797
+ padding-top: 60px;
798
+ text-align: center;
799
+ }
800
+
801
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
802
+ #jp-footer {
803
+ background: url( images/footer-clouds-2x.png ) top center no-repeat;
804
+ background-size:700px 150px;
805
+ }
806
+ }
807
+
808
+
809
+ #jp-footer .automattic {
810
+ color: #999;
811
+ font-size: 10px;
812
+ line-height: 15px;
813
+ text-transform: uppercase;
814
+ letter-spacing: 3px;
815
+ padding-left: 3px;
816
+ }
817
+
818
+ #jp-footer .automattic span {
819
+ text-indent: -999em;
820
+ overflow: hidden;
821
+ background: url( images/automattic.png ) center top no-repeat;
822
+ display: inline-block;
823
+ width: 165px;
824
+ vertical-align: top;
825
+ margin: 0 5px 0 1px;
826
+ line-height: 14px;
827
+ height: 14px;
828
+ filter: alpha(opacity=40);
829
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
830
+ opacity: 0.5;
831
+ }
832
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
833
+ #jp-footer .automattic span {
834
+ background: url( images/automattic-2x.png ) center top no-repeat;
835
+ background-size:165px 14px;
836
+ }
837
+ }
838
+
839
+ #jp-footer p.small {
840
+ font-size: 11px;
841
+ color: #ccc;
842
+ }
843
+
844
+ #jp-footer .small a {
845
+ text-decoration: none;
846
+ }
847
+
848
+ #jp-footer .small a:hover {
849
+ text-decoration: underline;
850
+ }
851
+
852
+ #jetpack-configuration code {
853
+ font-size: 14px;
854
+ }
855
+
856
+ .clear {
857
+ clear: both;
858
+ }
859
+
860
+ .error, .updated { position: relative; z-index: 100; }
861
+
862
+ .toplevel_page_jetpack .wrap {
863
+ max-width: 983px;
864
+ min-width: 741px;
865
+ margin-top: 15px;
866
+ }
867
+
868
+ #jetpack-settings .button-primary {
869
+ color: #fff !important;
870
+ }
871
+
872
+ .jp-survey {
873
+ position: relative;
874
+ z-index: 100;
875
+ border: 1px solid #ccc !important;
876
+ -moz-border-radius: 3px;
877
+ -webkit-border-radius: 3px;
878
+ border-radius: 3px;
879
+ background-color: #efefef !important;
880
+ -webkit-box-shadow: inset 0 0 15px rgba( 0,0,0,0.04 );
881
+ -moz-box-shadow: inset 0 0 15px rgba( 0,0,0,0.04 );
882
+ box-shadow: inset 0 0 15px rgba( 0,0,0,0.04 );
883
+ padding: 18px 90px 8px 15px !important;
884
+ overflow: hidden;
885
+ line-height: 180%;
886
+ }
887
+
888
+ #jetpack-settings > .jp-survey { margin: 10px 13px 40px 15px }
889
+
890
+ .jp-survey h4 {
891
+ margin: 0;
892
+ font-size: 18px;
893
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
894
+ font-weight: normal;
895
+ color: #333;
896
+ text-shadow: 0 1px 0 #fff;
897
+ -moz-border-radius: 5px;
898
+ -webkit-border-radius: 5px;
899
+ border-radius: 5px;
900
+ display: block;
901
+ float: left;
902
+ }
903
+
904
+ .jp-survey p {
905
+ float: right;
906
+ margin: -1px 0 0 0 !important;
907
+ padding: 0;
908
+ display: block;
909
+ }
910
+
911
+ .jp-survey-container {
912
+ overflow: hidden;
913
+ padding: 0 20px 8px 0;
914
+ }
915
+
916
+ .jp-survey-text {
917
+ float: left;
918
+ width: 68.421053%; /* 390px / 570px */
919
+ }
920
+
921
+ .jp-survey-button-container {
922
+ position: absolute;
923
+ top: 28px;
924
+ right: 15px;
925
+ }
926
+
927
+ .jetpack-close-button-container {
928
+ position: absolute;
929
+ top: 0;
930
+ right: 0;
931
+ }
932
+
933
+ .jetpack-close-button {
934
+ display: block;
935
+ width: 16px;
936
+ height: 16px;
937
+ text-indent: -9999px;
938
+ background: transparent url( images/alertbox-closeicon.png ) no-repeat center center;
939
+ border: 0 none;
940
+ -moz-border-radius: 0 0 0 5px;
941
+ -webkit-border-radius: 0 0 0 5px;
942
+ -o-border-radius: 0 0 0 5px;
943
+ -ms-border-radius: 0 0 0 5px;
944
+ border-radius: 0 0 0 5px;
945
+ -moz-box-shadow: none;
946
+ -webkit-box-shadow: none;
947
+ box-shadow: none;
948
+ -webkit-transition-duration: .3s;
949
+ -moz-transition-duration: .3s;
950
+ -o-transition-duration: .3s;
951
+ -ms-transition-duration: .3s;
952
+ transition-duration: .3s;
953
+ cursor: pointer;
954
+ }
955
+
956
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
957
+ .jetpack-close-button {
958
+ background: transparent url( images/alertbox-closeicon-2x.png ) no-repeat center center;
959
+ background-size:16px 16px;
960
+ }
961
+ }
962
+
963
+ .jetpack-close-button:hover {
964
+ background-color: #fff;
965
+ border: 0 none;
966
+ outline: none;
967
+ -webkit-transition-duration: .3s;
968
+ -moz-transition-duration: .3s;
969
+ -o-transition-duration: .3s;
970
+ -ms-transition-duration: .3s;
971
+ transition-duration: .3s;
972
+ }
973
+
974
+ .jetpack-close-button:active {
975
+ background-color: #efefef;
976
+ border: 0 none;
977
+ -webkit-transition-duration: .3s;
978
+ -moz-transition-duration: .3s;
979
+ -o-transition-duration: .3s;
980
+ -ms-transition-duration: .3s;
981
+ transition-duration: .3s;
982
+ }
983
+
984
+ .jetpack-wrap-container {
985
+ overflow: hidden;
986
+ padding: 0 20px 8px 15px;
987
+ }
988
+
989
+ .jetpack-text-container {
990
+ float: left;
991
+ width: 68.421053%; /* 390px / 570px */
992
+ }
993
+
994
+ .jetpack-install-container p a.button-connector {
995
+ position: absolute;
996
+ bottom: 5px;
997
+ right: 15px;
998
+ font-family: "Helvetica Neue",Helvetica,Arial,"Lucida Grande",Verdana,"Bitstream Vera Sans",sans-serif;
999
+ float: right;
1000
+ display: inline-block;
1001
+ background: #b4d278;
1002
+ -moz-box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0,0,0,0.3);
1003
+ -webkit-box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0,0,0,0.3);
1004
+ box-shadow: inset 0 0 2px #fff, 0 1px 5px rgba(0,0,0,0.3);
1005
+ padding: 8px 15px;
1006
+ border: 1px solid #2a8cba;
1007
+ -moz-border-radius: 5px;
1008
+ -webkit-border-radius: 5px;
1009
+ border-radius: 5px;
1010
+ line-height: 1.3;
1011
+ color: #fff;
1012
+ text-align: center;
1013
+ font-size: 16px;
1014
+ font-weight: bold;
1015
+ text-decoration: none;
1016
+ text-shadow: 0px 1px 2px rgba( 0,0,0,0.5);
1017
+ -webkit-transition-duration: .3s;
1018
+ -moz-transition-duration: .3s;
1019
+ cursor: pointer;
1020
+ }
1021
+
1022
+ .jetpack-install-container p a.button-connector:hover, .jetpack-install-container p a.button-connector:active {
1023
+ background-color: #f0a000;
1024
+ border-color: #c87800;
1025
+ -webkit-transition-duration: .3s;
1026
+ outline: none;
1027
+ -moz-box-shadow: inset 0 0 2px #fff, 0 1px 7px rgba(240,160,0,0.5);
1028
+ -webkit-box-shadow: inset 0 0 2px #fff, 0 1px 7px rgba(240,160,0,0.5);
1029
+ box-shadow: inset 0 0 2px #fff, 0 1px 7spx rgba(240,160,0,0.5);
1030
+ }
1031
+
1032
+ .jetpack-inline-error, .jetpack-inline-message {
1033
+ padding: .5em 1em .5em 1em;
1034
+ -moz-border-radius: 3px;
1035
+ -webkit-border-radius: 3px;
1036
+ border-radius: 3px;
1037
+ border-width: 1px;
1038
+ border-style: solid;
1039
+ color: #333;
1040
+ }
1041
+
1042
+ .jetpack-inline-error {
1043
+ background-color: #ffebe8;
1044
+ border-color: #c00;
1045
+ }
1046
+
1047
+ .jetpack-inline-message {
1048
+ background-color: #ffffe0;
1049
+ border-color: #e6db55;
1050
+ }
1051
+
1052
+ .jetpack-targetable {
1053
+ border-top: 28px solid transparent;
1054
+ margin-top: -28px;
1055
+ }
1056
+
1057
+ .jetpack-targetable:target {
1058
+ background-color: #ffffe0;
1059
+ background-clip: padding-box;
1060
+ padding: 0 10px;
1061
+ margin-left: -10px;
1062
+ margin-right: -10px;
1063
+ }
_inc/jetpack.js ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ScrollTo Plugin 1.4.2 | Copyright (c) 2007-2009 Ariel Flesler | GPL/MIT License
2
+ ;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
3
+
4
+ jetpack = {
5
+ numModules: 0,
6
+ container: null,
7
+ arrow: null,
8
+ linkClicked: null,
9
+ resizeTimeout: null,
10
+ resizeTimer: null,
11
+ shadowTimer: null,
12
+ statusText: null,
13
+ isRTL: !( 'undefined' == typeof isRtl || !isRtl ),
14
+ didDebug: false,
15
+
16
+ init: function() {
17
+ jetpack.numModules = jQuery( 'div.jetpack-module' ).not( '.placeholder' ).size();
18
+ jetpack.container = jQuery( 'div.module-container' );
19
+
20
+ jetpack.level_modules();
21
+ jetpack.level_placeholders();
22
+ jetpack.level_placeholders_on_resize();
23
+
24
+ jQuery( 'a.more-info-link', 'div.jetpack-module' ).bind( 'click', function(e) {
25
+ e.preventDefault();
26
+ jetpack.hide_shadows();
27
+
28
+ if ( jetpack.linkClicked && jetpack.linkClicked.parents( 'div.jetpack-module' ).attr( 'id' ) == jQuery(this).parents( 'div.jetpack-module' ).attr( 'id' ) ) {
29
+ jetpack.close_learn_more( function() { jetpack.show_shadows(); } );
30
+ } else {
31
+ jetpack.linkClicked = jQuery(this);
32
+ jetpack.insert_learn_more( jQuery(this).parents( 'div.jetpack-module' ), function() { jetpack.show_shadows(); } );
33
+ jQuery( 'a.jetpack-deactivate-button' ).hide();
34
+ jQuery( 'a.jetpack-configure-button' ).show();
35
+ jetpack.linkClicked.parents( 'div.jetpack-module' ).children( '.jetpack-module-actions' ).children( 'a.jetpack-deactivate-button' ).show();
36
+ jetpack.linkClicked.parents( 'div.jetpack-module' ).children( '.jetpack-module-actions' ).children( 'a.jetpack-configure-button' ).hide();
37
+ }
38
+ } );
39
+
40
+ jQuery( window ).bind( 'resize', function() {
41
+ jetpack.hide_shadows();
42
+
43
+ clearTimeout( jetpack.shadowTimer );
44
+ jetpack.shadowTimer = setTimeout( function() { jetpack.show_shadows(); }, 200 );
45
+ });
46
+
47
+ jQuery( 'a#jp-debug' ).bind( 'click', function(e) {
48
+ e.preventDefault();
49
+ if ( !jetpack.didDebug ) {
50
+ jetpack.didDebug = true;
51
+ jQuery( '#jetpack-configuration' ).load( this.href, function() {
52
+ jQuery.scrollTo( 'max', 'fast' );
53
+ } );
54
+ }
55
+
56
+ jetpack.toggle_debug();
57
+ });
58
+
59
+ var widerWidth = 0;
60
+ jQuery( '#jp-disconnect a' ).click( function() {
61
+ if ( confirm( jetpackL10n.ays_disconnect ) ) {
62
+ jQuery( this ).addClass( 'clicked' ).css( {
63
+ "background-image": 'url( ' + userSettings.url + 'wp-admin/images/wpspin_light.gif )',
64
+ "background-position": '9px 5px',
65
+ "background-size": '16px 16px'
66
+ } ).unbind( 'click' ).click( function() { return false; } );
67
+ } else {
68
+ return false;
69
+ }
70
+ } );
71
+ jQuery( '#jp-unlink a' ).click( function() {
72
+ if ( confirm( jetpackL10n.ays_unlink ) ) {
73
+ jQuery( this ).css( {
74
+ "background-image": 'url( ' + userSettings.url + 'wp-admin/images/wpspin_light.gif )',
75
+ "background-position": '9px 5px',
76
+ "background-size": '16px 16px'
77
+ } ).unbind( 'click' ).click( function() { return false; } );
78
+ } else {
79
+ return false;
80
+ }
81
+ } );
82
+
83
+ },
84
+
85
+ level_modules: function() {
86
+ var max_height = 0;
87
+
88
+ // Get the tallest module card and set them all to be that tall.
89
+ jQuery( 'div.jetpack-module', 'div.module-container' ).each( function() {
90
+ max_height = Math.max( max_height, jQuery(this).height() );
91
+ } ).height( max_height );
92
+ },
93
+
94
+ level_placeholders: function( w ) {
95
+ jQuery( 'div.placeholder' ).show();
96
+
97
+ var containerWidth = jetpack.container.width(),
98
+ needed = 5 * parseInt( containerWidth / 242, 10 ) - jetpack.numModules
99
+
100
+ if ( jetpack.numModules * 242 > containerWidth )
101
+ jQuery( 'div.placeholder' ).slice( needed ).hide();
102
+ else
103
+ jQuery( 'div.placeholder' ).hide();
104
+ },
105
+
106
+ level_placeholders_on_resize: function() {
107
+ jQuery( window ).bind( 'resize', function() {
108
+ if ( jetpack.resizeTimer ) {
109
+ return;
110
+ }
111
+
112
+ jetpack.resizeTimer = setTimeout( function() {
113
+ jetpack.resizeTimer = false;
114
+ jetpack.level_placeholders();
115
+ jetpack.level_placeholders_on_resize();
116
+ }, 100 );
117
+ } );
118
+ },
119
+
120
+ insert_learn_more: function( card, callback ) {
121
+ var perRow = parseInt( jetpack.container.width() / 242, 10 ),
122
+ cardPosition = 0,
123
+ cardRow = 0,
124
+ learnMoreOffset = jetpack.isRTL ? 144 : 28;
125
+
126
+ // Get the position of the card clicked.
127
+ jQuery( 'div.jetpack-module', 'div.module-container' ).each( function( i, el ) {
128
+ if ( jQuery(el).attr('id') == jQuery(card).attr('id') )
129
+ cardPosition = i;
130
+ } );
131
+
132
+ cardRow = 1 + parseInt( cardPosition / perRow, 10 );
133
+
134
+ // Insert the more info box after the last item of the row.
135
+ jQuery( 'div.jetpack-module', 'div.module-container' ).each( function( i, el ) {
136
+ if ( i + 1 == ( perRow * cardRow ) ) {
137
+ // More info box already exists.
138
+ if ( jQuery( 'div.more-info' ).length ) {
139
+ if ( jQuery( el ).next().hasClass( 'more-info' ) ) {
140
+ jQuery( 'div.more-info div.jp-content' ).fadeOut( 100 );
141
+ jetpack.learn_more_content( jQuery(card).attr( 'id' ) );
142
+ jQuery( window ).scrollTo( ( jQuery( 'div.more-info' ).prev().offset().top ) - 70, 600, function() { if ( typeof callback == 'function' ) callback.call( this ); } );
143
+ } else {
144
+ jQuery( 'div.more-info div.jp-content' ).hide();
145
+ jQuery( 'div.more-info' ).css( { height: '230px', minHeight: 0 } ).slideUp( 200, function() {
146
+ var $this = jQuery(this);
147
+ $this.detach().insertAfter( el );
148
+ jQuery( 'div.more-info div.jp-content' ).hide();
149
+ jetpack.learn_more_content( jQuery(card).attr( 'id' ) );
150
+ $this.css( { height: '230px', minHeight: 0 } ).slideDown( 300, function() {
151
+ $this.css( { height: 'auto', minHeight: '230px' } );
152
+ } );
153
+ jQuery( window ).scrollTo( ( $this.prev().offset().top ) - 70, 600, function() { if ( typeof callback == 'function' ) callback.call( this ); } );
154
+ } );
155
+ }
156
+
157
+ // More info box does not exist.
158
+ } else {
159
+ // Insert the box.
160
+ jQuery( el ).after( '<div id="message" class="more-info jetpack-message"><div class="arrow"></div><div class="jp-content"></div><div class="jp-close">&times;</div><div class="clear"></div></div>' );
161
+
162
+ // Show the box
163
+ jQuery( 'div.more-info' ).css( { height: '230px', minHeight: 0 } );
164
+ jQuery( 'div.more-info', 'div.module-container' ).hide().slideDown( 400, function() {
165
+ jQuery( 'div.more-info' ).css( { height: 'auto', minHeight: '230px' } );
166
+ // Load the content and scroll to it
167
+ jetpack.learn_more_content( jQuery(card).attr( 'id' ) );
168
+ jQuery( window ).scrollTo( ( jQuery( 'div.more-info' ).prev().offset().top ) - 70, 600 );
169
+
170
+ if ( typeof callback == 'function' ) callback.call( this );
171
+ } );
172
+
173
+ jQuery( 'div.more-info' ).children( 'div.arrow' ).animate( { left: jQuery(card).offset().left - jetpack.container.offset().left + learnMoreOffset + 'px' }, 300 );
174
+ }
175
+ jQuery( 'div.more-info' ).children( 'div.arrow' ).animate( { left: jQuery(card).offset().left - jetpack.container.offset().left + learnMoreOffset + 'px' }, 300 );
176
+
177
+ return;
178
+ }
179
+ } );
180
+
181
+ // Listen for resize
182
+ jQuery( window ).bind( 'resize', function() {
183
+ jetpack.reposition_learn_more( card );
184
+ jetpack.level_placeholders_on_resize();
185
+ } );
186
+
187
+ // Listen for close.
188
+ jQuery( 'div.more-info div.jp-close' ).unbind( 'click' ).bind( 'click', function() {
189
+ jetpack.close_learn_more();
190
+ } );
191
+ },
192
+
193
+ reposition_learn_more: function( card ) {
194
+ var perRow = parseInt( jetpack.container.width() / 242, 10 );
195
+ var cardPosition = 0;
196
+
197
+ // Get the position of the card clicked.
198
+ jQuery( 'div.jetpack-module', 'div.module-container' ).each( function( i, el ) {
199
+ if ( jQuery(el).attr('id') == jQuery(card).attr('id') )
200
+ cardPosition = i;
201
+ } );
202
+
203
+ var cardRow = 1 + parseInt( cardPosition / perRow, 10 );
204
+
205
+ jQuery( 'div.jetpack-module', 'div.module-container' ).each( function( i, el ) {
206
+ if ( i + 1 == ( perRow * cardRow ) ) {
207
+ jQuery( 'div.more-info' ).detach().insertAfter( el );
208
+ jQuery( 'div.more-info' ).children( 'div.arrow' ).css( { left: jQuery(card).offset().left - jetpack.container.offset().left + 28 + 'px' }, 300 );
209
+ }
210
+ } );
211
+ },
212
+
213
+ learn_more_content: function( module_id ) {
214
+ response = jQuery( '#jp-more-info-' + module_id ).html();
215
+ jQuery( 'div.more-info div.jp-content' ).html( response ).hide().fadeIn( 300 );
216
+ },
217
+
218
+ close_learn_more: function( callback ) {
219
+ jQuery( 'div.more-info div.jp-content' ).hide();
220
+
221
+ jQuery( 'div.more-info' ).css( { height: '230px', minHeight: 0 } ).slideUp( 200, function() {
222
+ jQuery( this ).remove();
223
+ jQuery( 'a.jetpack-deactivate-button' ).hide();
224
+ jetpack.linkClicked.parents( 'div.jetpack-module' ).children( '.jetpack-module-actions' ).children( 'a.jetpack-configure-button' ).show();
225
+ jetpack.linkClicked = null;
226
+
227
+ if ( typeof callback == 'function' ) callback.call( this );
228
+ } );
229
+ },
230
+
231
+ toggle_debug: function() {
232
+ jQuery('div#jetpack-configuration').toggle( 0, function() {
233
+ if ( jQuery( this ).is( ':visible' ) ) {
234
+ jQuery.scrollTo( 'max', 'fast' );
235
+ }
236
+ } );
237
+ },
238
+
239
+ hide_shadows: function() {
240
+ jQuery( 'div.jetpack-module, div.more-info' ).css( { '-webkit-box-shadow': 'none' } );
241
+ },
242
+
243
+ show_shadows: function() {
244
+ jQuery( 'div.jetpack-module' ).css( { '-webkit-box-shadow': 'inset 0 1px 0 #fff, inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 )' } );
245
+ jQuery( 'div.more-info' ).css( { '-webkit-box-shadow': 'inset 0 0 20px rgba(0,0,0,0.05), 0 1px 2px rgba( 0,0,0,0.1 )' } );
246
+ }
247
+ }
248
+ jQuery( function() { jetpack.init(); } );
_inc/jquery.spin.js ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Matt Husby https://github.com/matthusby/spin.js
3
+ * Based on the jquery plugin by Bradley Smith
4
+ * https://gist.github.com/1290439
5
+ */
6
+
7
+ /*
8
+ Add spin to the jQuery object
9
+ If color is not passed the spinner will be black
10
+ You can now create a spinner using any of the variants below:
11
+ $("#el").spin(); // Produces default Spinner
12
+ $("#el").spin("small"); // Produces a 'small' Spinner
13
+ $("#el").spin("large", "white"); // Produces a 'large' Spinner in white (or any valid CSS color).
14
+ $("#el").spin({ ... }); // Produces a Spinner using your custom settings.
15
+ $("#el").spin("small-right"); // Pin the small spinner to the right edge
16
+ $("#el").spin("{small, medium, large}-{left, right, top, bottom}"); // All options for where to pin
17
+ $("#el").spin(false); // Kills the spinner.
18
+ */
19
+
20
+ ( function( $ ) {
21
+ $.fn.spin = function( opts, color ) {
22
+ var presets = {
23
+ "small": { lines: 8, length: 2, width: 2, radius: 3, trail: 60, speed: 1.3 },
24
+ "medium": { lines: 8, length: 4, width: 3, radius: 5, trail: 60, speed: 1.3 },
25
+ "large": { lines: 10, length: 6, width: 4, radius: 7, trail: 60, speed: 1.3 }
26
+ };
27
+ if ( Spinner ) {
28
+ return this.each( function() {
29
+ var $this = $( this ),
30
+ data = $this.data();
31
+
32
+ if ( data.spinner ) {
33
+ data.spinner.stop();
34
+ delete data.spinner;
35
+ }
36
+ if ( opts !== false ) {
37
+ var spinner_options;
38
+ if ( typeof opts === "string" ) {
39
+ var spinner_base = opts.indexOf( '-' );
40
+ if( spinner_base == -1 ) {
41
+ spinner_base = opts;
42
+ } else {
43
+ spinner_base = opts.substring( 0, spinner_base );
44
+ }
45
+ if ( spinner_base in presets ) {
46
+ spinner_options = presets[spinner_base];
47
+ } else {
48
+ spinner_options = {};
49
+ }
50
+ var padding;
51
+ if ( opts.indexOf( "-right" ) != -1 ) {
52
+ padding = jQuery( this ).css( 'padding-left' );
53
+ if( typeof padding === "undefined" ) {
54
+ padding = 0;
55
+ } else {
56
+ padding = padding.replace( 'px', '' );
57
+ }
58
+ spinner_options.left = jQuery( this ).outerWidth() - ( 2 * ( spinner_options.length + spinner_options.width + spinner_options.radius ) ) - padding - 5;
59
+ }
60
+ if ( opts.indexOf( '-left' ) != -1 ) {
61
+ spinner_options.left = 5;
62
+ }
63
+ if ( opts.indexOf( '-top' ) != -1 ) {
64
+ spinner_options.top = 5;
65
+ }
66
+ if ( opts.indexOf( '-bottom' ) != -1 ) {
67
+ padding = jQuery( this ).css( 'padding-top' );
68
+ if( typeof padding === "undefined" ) {
69
+ padding = 0;
70
+ } else {
71
+ padding = padding.replace( 'px', '' );
72
+ }
73
+ spinner_options.top = jQuery( this ).outerHeight() - ( 2 * ( spinner_options.length + spinner_options.width + spinner_options.radius ) ) - padding - 5;
74
+ }
75
+ }
76
+ if( color ){
77
+ spinner_options.color = color;
78
+ }
79
+ data.spinner = new Spinner( spinner_options ).spin( this );
80
+ }
81
+ });
82
+ } else {
83
+ throw "Spinner class not available.";
84
+ }
85
+ };
86
+ })( jQuery );
_inc/spin.js ADDED
@@ -0,0 +1,301 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //fgnass.github.com/spin.js#v1.2.4
2
+ (function(window, document, undefined) {
3
+
4
+ /**
5
+ * Copyright (c) 2011 Felix Gnass [fgnass at neteye dot de]
6
+ * Licensed under the MIT license
7
+ */
8
+
9
+ var prefixes = ['webkit', 'Moz', 'ms', 'O']; /* Vendor prefixes */
10
+ var animations = {}; /* Animation rules keyed by their name */
11
+ var useCssAnimations;
12
+
13
+ /**
14
+ * Utility function to create elements. If no tag name is given,
15
+ * a DIV is created. Optionally properties can be passed.
16
+ */
17
+ function createEl(tag, prop) {
18
+ var el = document.createElement(tag || 'div');
19
+ var n;
20
+
21
+ for(n in prop) {
22
+ el[n] = prop[n];
23
+ }
24
+ return el;
25
+ }
26
+
27
+ /**
28
+ * Appends children and returns the parent.
29
+ */
30
+ function ins(parent /* child1, child2, ...*/) {
31
+ for (var i=1, n=arguments.length; i<n; i++) {
32
+ parent.appendChild(arguments[i]);
33
+ }
34
+ return parent;
35
+ }
36
+
37
+ /**
38
+ * Insert a new stylesheet to hold the @keyframe or VML rules.
39
+ */
40
+ var sheet = function() {
41
+ var el = createEl('style');
42
+ ins(document.getElementsByTagName('head')[0], el);
43
+ return el.sheet || el.styleSheet;
44
+ }();
45
+
46
+ /**
47
+ * Creates an opacity keyframe animation rule and returns its name.
48
+ * Since most mobile Webkits have timing issues with animation-delay,
49
+ * we create separate rules for each line/segment.
50
+ */
51
+ function addAnimation(alpha, trail, i, lines) {
52
+ var name = ['opacity', trail, ~~(alpha*100), i, lines].join('-');
53
+ var start = 0.01 + i/lines*100;
54
+ var z = Math.max(1-(1-alpha)/trail*(100-start) , alpha);
55
+ var prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase();
56
+ var pre = prefix && '-'+prefix+'-' || '';
57
+
58
+ if (!animations[name]) {
59
+ sheet.insertRule(
60
+ '@' + pre + 'keyframes ' + name + '{' +
61
+ '0%{opacity:'+z+'}' +
62
+ start + '%{opacity:'+ alpha + '}' +
63
+ (start+0.01) + '%{opacity:1}' +
64
+ (start+trail)%100 + '%{opacity:'+ alpha + '}' +
65
+ '100%{opacity:'+ z + '}' +
66
+ '}', 0);
67
+ animations[name] = 1;
68
+ }
69
+ return name;
70
+ }
71
+
72
+ /**
73
+ * Tries various vendor prefixes and returns the first supported property.
74
+ **/
75
+ function vendor(el, prop) {
76
+ var s = el.style;
77
+ var pp;
78
+ var i;
79
+
80
+ if(s[prop] !== undefined) return prop;
81
+ prop = prop.charAt(0).toUpperCase() + prop.slice(1);
82
+ for(i=0; i<prefixes.length; i++) {
83
+ pp = prefixes[i]+prop;
84
+ if(s[pp] !== undefined) return pp;
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Sets multiple style properties at once.
90
+ */
91
+ function css(el, prop) {
92
+ for (var n in prop) {
93
+ el.style[vendor(el, n)||n] = prop[n];
94
+ }
95
+ return el;
96
+ }
97
+
98
+ /**
99
+ * Fills in default values.
100
+ */
101
+ function merge(obj) {
102
+ for (var i=1; i < arguments.length; i++) {
103
+ var def = arguments[i];
104
+ for (var n in def) {
105
+ if (obj[n] === undefined) obj[n] = def[n];
106
+ }
107
+ }
108
+ return obj;
109
+ }
110
+
111
+ /**
112
+ * Returns the absolute page-offset of the given element.
113
+ */
114
+ function pos(el) {
115
+ var o = {x:el.offsetLeft, y:el.offsetTop};
116
+ while((el = el.offsetParent)) {
117
+ o.x+=el.offsetLeft;
118
+ o.y+=el.offsetTop;
119
+ }
120
+ return o;
121
+ }
122
+
123
+ var defaults = {
124
+ lines: 12, // The number of lines to draw
125
+ length: 7, // The length of each line
126
+ width: 5, // The line thickness
127
+ radius: 10, // The radius of the inner circle
128
+ color: '#000', // #rgb or #rrggbb
129
+ speed: 1, // Rounds per second
130
+ trail: 100, // Afterglow percentage
131
+ opacity: 1/4, // Opacity of the lines
132
+ fps: 20, // Frames per second when using setTimeout()
133
+ zIndex: 2e9, // Use a high z-index by default
134
+ className: 'spinner', // CSS class to assign to the element
135
+ top: 'auto', // center vertically
136
+ left: 'auto' // center horizontally
137
+ };
138
+
139
+ /** The constructor */
140
+ var Spinner = function Spinner(o) {
141
+ if (!this.spin) return new Spinner(o);
142
+ this.opts = merge(o || {}, Spinner.defaults, defaults);
143
+ };
144
+
145
+ Spinner.defaults = {};
146
+ Spinner.prototype = {
147
+ spin: function(target) {
148
+ this.stop();
149
+ var self = this;
150
+ var o = self.opts;
151
+ var el = self.el = css(createEl(0, {className: o.className}), {position: 'relative', zIndex: o.zIndex});
152
+ var mid = o.radius+o.length+o.width;
153
+ var ep; // element position
154
+ var tp; // target position
155
+
156
+ if (target) {
157
+ target.insertBefore(el, target.firstChild||null);
158
+ tp = pos(target);
159
+ ep = pos(el);
160
+ css(el, {
161
+ left: (o.left == 'auto' ? tp.x-ep.x + (target.offsetWidth >> 1) : o.left+mid) + 'px',
162
+ top: (o.top == 'auto' ? tp.y-ep.y + (target.offsetHeight >> 1) : o.top+mid) + 'px'
163
+ });
164
+ }
165
+
166
+ el.setAttribute('aria-role', 'progressbar');
167
+ self.lines(el, self.opts);
168
+
169
+ if (!useCssAnimations) {
170
+ // No CSS animation support, use setTimeout() instead
171
+ var i = 0;
172
+ var fps = o.fps;
173
+ var f = fps/o.speed;
174
+ var ostep = (1-o.opacity)/(f*o.trail / 100);
175
+ var astep = f/o.lines;
176
+
177
+ !function anim() {
178
+ i++;
179
+ for (var s=o.lines; s; s--) {
180
+ var alpha = Math.max(1-(i+s*astep)%f * ostep, o.opacity);
181
+ self.opacity(el, o.lines-s, alpha, o);
182
+ }
183
+ self.timeout = self.el && setTimeout(anim, ~~(1000/fps));
184
+ }();
185
+ }
186
+ return self;
187
+ },
188
+ stop: function() {
189
+ var el = this.el;
190
+ if (el) {
191
+ clearTimeout(this.timeout);
192
+ if (el.parentNode) el.parentNode.removeChild(el);
193
+ this.el = undefined;
194
+ }
195
+ return this;
196
+ },
197
+ lines: function(el, o) {
198
+ var i = 0;
199
+ var seg;
200
+
201
+ function fill(color, shadow) {
202
+ return css(createEl(), {
203
+ position: 'absolute',
204
+ width: (o.length+o.width) + 'px',
205
+ height: o.width + 'px',
206
+ background: color,
207
+ boxShadow: shadow,
208
+ transformOrigin: 'left',
209
+ transform: 'rotate(' + ~~(360/o.lines*i) + 'deg) translate(' + o.radius+'px' +',0)',
210
+ borderRadius: (o.width>>1) + 'px'
211
+ });
212
+ }
213
+ for (; i < o.lines; i++) {
214
+ seg = css(createEl(), {
215
+ position: 'absolute',
216
+ top: 1+~(o.width/2) + 'px',
217
+ transform: o.hwaccel ? 'translate3d(0,0,0)' : '',
218
+ opacity: o.opacity,
219
+ animation: useCssAnimations && addAnimation(o.opacity, o.trail, i, o.lines) + ' ' + 1/o.speed + 's linear infinite'
220
+ });
221
+ if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'}));
222
+ ins(el, ins(seg, fill(o.color, '0 0 1px rgba(0,0,0,.1)')));
223
+ }
224
+ return el;
225
+ },
226
+ opacity: function(el, i, val) {
227
+ if (i < el.childNodes.length) el.childNodes[i].style.opacity = val;
228
+ }
229
+ };
230
+
231
+ /////////////////////////////////////////////////////////////////////////
232
+ // VML rendering for IE
233
+ /////////////////////////////////////////////////////////////////////////
234
+
235
+ /**
236
+ * Check and init VML support
237
+ */
238
+ !function() {
239
+ var s = css(createEl('group'), {behavior: 'url(#default#VML)'});
240
+ var i;
241
+
242
+ if (!vendor(s, 'transform') && s.adj) {
243
+
244
+ // VML support detected. Insert CSS rules ...
245
+ for (i=4; i--;) sheet.addRule(['group', 'roundrect', 'fill', 'stroke'][i], 'behavior:url(#default#VML)');
246
+
247
+ Spinner.prototype.lines = function(el, o) {
248
+ var r = o.length+o.width;
249
+ var s = 2*r;
250
+
251
+ function grp() {
252
+ return css(createEl('group', {coordsize: s +' '+s, coordorigin: -r +' '+-r}), {width: s, height: s});
253
+ }
254
+
255
+ var margin = -(o.width+o.length)*2+'px';
256
+ var g = css(grp(), {position: 'absolute', top: margin, left: margin});
257
+
258
+ var i;
259
+
260
+ function seg(i, dx, filter) {
261
+ ins(g,
262
+ ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}),
263
+ ins(css(createEl('roundrect', {arcsize: 1}), {
264
+ width: r,
265
+ height: o.width,
266
+ left: o.radius,
267
+ top: -o.width>>1,
268
+ filter: filter
269
+ }),
270
+ createEl('fill', {color: o.color, opacity: o.opacity}),
271
+ createEl('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change
272
+ )
273
+ )
274
+ );
275
+ }
276
+
277
+ if (o.shadow) {
278
+ for (i = 1; i <= o.lines; i++) {
279
+ seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)');
280
+ }
281
+ }
282
+ for (i = 1; i <= o.lines; i++) seg(i);
283
+ return ins(el, g);
284
+ };
285
+ Spinner.prototype.opacity = function(el, i, val, o) {
286
+ var c = el.firstChild;
287
+ o = o.shadow && o.lines || 0;
288
+ if (c && i+o < c.childNodes.length) {
289
+ c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild;
290
+ if (c) c.opacity = val;
291
+ }
292
+ };
293
+ }
294
+ else {
295
+ useCssAnimations = vendor(s, 'animation');
296
+ }
297
+ }();
298
+
299
+ window.Spinner = Spinner;
300
+
301
+ })(window, document);
class.jetpack-ixr-client.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * IXR_Client
5
+ *
6
+ * @package IXR
7
+ * @since 1.5
8
+ *
9
+ */
10
+ class Jetpack_IXR_Client extends IXR_Client {
11
+ var $jetpack_args = null;
12
+
13
+ function Jetpack_IXR_Client( $args = array(), $path = false, $port = 80, $timeout = 15 ) {
14
+ $defaults = array(
15
+ 'url' => Jetpack::xmlrpc_api_url(),
16
+ 'user_id' => 0,
17
+ );
18
+
19
+ $args = wp_parse_args( $args, $defaults );
20
+
21
+ $this->jetpack_args = $args;
22
+
23
+ $this->IXR_Client( $args['url'], $path, $port, $timeout );
24
+ }
25
+
26
+ function query() {
27
+ $args = func_get_args();
28
+ $method = array_shift( $args );
29
+ $request = new IXR_Request( $method, $args );
30
+ $xml = trim( $request->getXml() );
31
+
32
+ $headers = array(
33
+ 'Content-Type' => 'text/xml',
34
+ );
35
+
36
+ $response = Jetpack_Client::remote_request( $this->jetpack_args, $xml );
37
+
38
+ if ( is_wp_error( $response ) ) {
39
+ $this->error = new IXR_Error( -10520, sprintf( 'Jetpack: [%s] %s', $response->get_error_code(), $response->get_error_message() ) );
40
+ return false;
41
+ }
42
+
43
+ if ( !$response ) {
44
+ $this->error = new IXR_Error( -10520, 'Jetpack: Unknown Error' );
45
+ return false;
46
+ }
47
+
48
+ if ( 200 != wp_remote_retrieve_response_code( $response ) ) {
49
+ $this->error = new IXR_Error( -32300, 'transport error - HTTP status code was not 200' );
50
+ return false;
51
+ }
52
+
53
+ $content = wp_remote_retrieve_body( $response );
54
+
55
+ // Now parse what we've got back
56
+ $this->message = new IXR_Message( $content );
57
+ if ( !$this->message->parse() ) {
58
+ // XML error
59
+ $this->error = new IXR_Error( -32700, 'parse error. not well formed' );
60
+ return false;
61
+ }
62
+
63
+ // Is the message a fault?
64
+ if ( $this->message->messageType == 'fault' ) {
65
+ $this->error = new IXR_Error( $this->message->faultCode, $this->message->faultString );
66
+ return false;
67
+ }
68
+
69
+ // Message must be OK
70
+ return true;
71
+ }
72
+
73
+ function get_jetpack_error( $fault_code = null, $fault_string = null ) {
74
+ if ( is_null( $fault_code ) ) {
75
+ $fault_code = $this->error->code;
76
+ }
77
+
78
+ if ( is_null( $fault_string ) ) {
79
+ $fault_string = $this->error->message;
80
+ }
81
+
82
+ if ( preg_match( '#jetpack:\s+\[(\w+)\]\s*(.*)?$#i', $fault_string, $match ) ) {
83
+ $code = $match[1];
84
+ $message = $match[2];
85
+ $status = $fault_code;
86
+ return new Jetpack_Error( $code, $message, $status );
87
+ }
88
+
89
+ return new Jetpack_Error( "IXR_{$fault_code}", $fault_string );
90
+ }
91
+ }
92
+
93
+ /**
94
+ * IXR_ClientMulticall
95
+ *
96
+ * @package IXR
97
+ * @since 1.5
98
+ */
99
+ class Jetpack_IXR_ClientMulticall extends Jetpack_IXR_Client {
100
+ var $calls = array();
101
+
102
+ function Jetpack_IXR_ClientMulticall( $args = array(), $path = false, $port = 80, $timeout = 15 ) {
103
+ parent::Jetpack_IXR_Client( $args, $path, $port, $timeout );
104
+ }
105
+
106
+ function addCall() {
107
+ $args = func_get_args();
108
+ $methodName = array_shift( $args );
109
+ $struct = array(
110
+ 'methodName' => $methodName,
111
+ 'params' => $args
112
+ );
113
+ $this->calls[] = $struct;
114
+ }
115
+
116
+ function query() {
117
+ usort( $this->calls, array( $this, 'sort_calls' ) );
118
+
119
+ // Prepare multicall, then call the parent::query() method
120
+ return parent::query( 'system.multicall', $this->calls );
121
+ }
122
+
123
+ // Make sure syncs are always done first
124
+ function sort_calls( $a, $b ) {
125
+ if ( 'jetpack.syncContent' == $a['methodName'] ) {
126
+ return -1;
127
+ }
128
+
129
+ if ( 'jetpack.syncContent' == $b['methodName'] ) {
130
+ return 1;
131
+ }
132
+
133
+ return 0;
134
+ }
135
+ }
class.jetpack-post-images.php ADDED
@@ -0,0 +1,417 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Useful for finding an image to display alongside/in representation of a specific post.
5
+ *
6
+ * Includes a few different methods, all of which return a similar-format array containing
7
+ * details of any images found. Everything can (should) be called statically, it's just a
8
+ * function-bucket. You can also call Jetpack_PostImages::get_image() to cycle through all of the methods until
9
+ * one of them finds something useful.
10
+ *
11
+ * This file is included verbatim in Jetpack
12
+ */
13
+ class Jetpack_PostImages {
14
+ /**
15
+ * If a slideshow is embedded within a post, then parse out the images involved and return them
16
+ */
17
+ static function from_slideshow( $post_id, $width = 200, $height = 200 ) {
18
+ $post = get_post( $post_id );
19
+
20
+ if ( false === strpos( $post->post_content, '[slideshow' ) )
21
+ return false; // no slideshow - bail
22
+
23
+ $permalink = get_permalink( $post->ID );
24
+
25
+ $images = array();
26
+
27
+ // Mechanic: Somebody set us up the bomb
28
+ $old_post = $GLOBALS['post'];
29
+ $GLOBALS['post'] = $post;
30
+ $old_shortcodes = $GLOBALS['shortcode_tags'];
31
+ $GLOBALS['shortcode_tags'] = array( 'slideshow' => $old_shortcodes['slideshow'] );
32
+
33
+ // Find all the slideshows
34
+ preg_match_all( '/' . get_shortcode_regex() . '/sx', $post->post_content, $slideshow_matches, PREG_SET_ORDER );
35
+
36
+ ob_start(); // The slideshow shortcode handler calls wp_print_scripts and wp_print_styles... not too happy about that
37
+
38
+ foreach ( $slideshow_matches as $slideshow_match ) {
39
+ $slideshow = do_shortcode_tag( $slideshow_match );
40
+ if ( false === $pos = stripos( $slideshow, 'slideShow.images' ) ) // must be something wrong - or we changed the output format in which case none of the following will work
41
+ continue;
42
+ $start = strpos( $slideshow, '[', $pos );
43
+ $end = strpos( $slideshow, ']', $start );
44
+ $post_images = json_decode( str_replace( "'", '"', substr( $slideshow, $start, $end - $start + 1 ) ) ); // parse via JSON
45
+ foreach ( $post_images as $post_image ) {
46
+ if ( !$post_image_id = absint( $post_image->id ) )
47
+ continue;
48
+
49
+ $meta = wp_get_attachment_metadata( $post_image_id );
50
+
51
+ // Must be larger than 200x200 (or user-specified)
52
+ if ( !isset( $meta['width'] ) || $meta['width'] < $width )
53
+ continue;
54
+ if ( !isset( $meta['height'] ) || $meta['height'] < $height )
55
+ continue;
56
+
57
+ $url = wp_get_attachment_url( $post_image_id );
58
+
59
+ $images[] = array(
60
+ 'type' => 'image',
61
+ 'from' => 'slideshow',
62
+ 'src' => $url,
63
+ 'src_width' => $meta['width'],
64
+ 'src_height' => $meta['height'],
65
+ 'href' => $permalink,
66
+ );
67
+ }
68
+ }
69
+ ob_end_clean();
70
+
71
+ // Operator: Main screen turn on
72
+ $GLOBALS['shortcode_tags'] = $old_shortcodes;
73
+ $GLOBALS['post'] = $old_post;
74
+
75
+ return $images;
76
+ }
77
+
78
+ /**
79
+ * If a gallery is detected, then get all the images from it.
80
+ */
81
+ static function from_gallery( $post_id ) {
82
+ $post = get_post( $post_id );
83
+
84
+ if ( false === strpos( $post->post_content, '[gallery' ) )
85
+ return false; // no gallery - bail
86
+
87
+ $permalink = get_permalink( $post->ID );
88
+
89
+ $images = array();
90
+
91
+ // CATS: All your base are belong to us
92
+ $old_post = $GLOBALS['post'];
93
+ $GLOBALS['post'] = $post;
94
+ $old_shortcodes = $GLOBALS['shortcode_tags'];
95
+ $GLOBALS['shortcode_tags'] = array( 'gallery' => $old_shortcodes['gallery'] );
96
+
97
+ // Find all the galleries
98
+ preg_match_all( '/' . get_shortcode_regex() . '/s', $post->post_content, $gallery_matches, PREG_SET_ORDER );
99
+
100
+ foreach ( $gallery_matches as $gallery_match ) {
101
+ $gallery = do_shortcode_tag( $gallery_match );
102
+
103
+ // Um... no images in the gallery - bail
104
+ if ( false === $pos = stripos( $gallery, '<img' ) )
105
+ continue;
106
+
107
+ preg_match_all( '/<img\s+[^>]*src=([\'"])([^\'"]*)\\1/', $gallery, $image_match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE );
108
+
109
+ $a_pos = 0;
110
+ foreach ( $image_match[2] as $src ) {
111
+ list( $raw_src ) = explode( '?', $src[0] ); // pull off any Query string (?w=250)
112
+ $raw_src = wp_specialchars_decode( $raw_src ); // rawify it
113
+ $raw_src = esc_url_raw( $raw_src ); // clean it
114
+
115
+ $a_pos = strrpos( substr( $gallery, 0, $src[1] ), '<a', $a_pos ); // is there surrounding <a>?
116
+
117
+ if ( false !== $a_pos && preg_match( '/<a\s+[^>]*href=([\'"])([^\'"]*)\\1/', $gallery, $href_match, 0, $a_pos ) ) {
118
+ $href = wp_specialchars_decode( $href_match[2] );
119
+ $href = esc_url_raw( $href );
120
+ } else {
121
+ // CATS: You have no chance to survive make your time
122
+ $href = $raw_src;
123
+ }
124
+
125
+ $a_pos = $src[1];
126
+
127
+ $images[] = array(
128
+ 'type' => 'image',
129
+ 'from' => 'gallery',
130
+ 'src' => $raw_src,
131
+ 'href' => $permalink, // $href,
132
+ );
133
+ }
134
+ }
135
+
136
+ // Captain: For great justice
137
+ $GLOBALS['shortcode_tags'] = $old_shortcodes;
138
+ $GLOBALS['post'] = $old_post;
139
+
140
+ return $images;
141
+ }
142
+
143
+ /**
144
+ * Get attachment images for a specified post and return them. Also make sure
145
+ * their dimensions are at or above a required minimum.
146
+ */
147
+ static function from_attachment( $post_id, $width = 200, $height = 200 ) {
148
+
149
+ $post_images = get_posts( array(
150
+ 'post_parent' => $post_id, // Must be children of post
151
+ 'numberposts' => 5, // No more than 5
152
+ 'post_type' => 'attachment', // Must be attachments
153
+ 'post_mime_type' => 'image', // Must be images
154
+ ) );
155
+
156
+ if ( !$post_images )
157
+ return false;
158
+
159
+ $permalink = get_permalink( $post_id );
160
+
161
+ $images = array();
162
+
163
+ foreach ( $post_images as $post_image ) {
164
+ $meta = wp_get_attachment_metadata( $post_image->ID );
165
+ // Must be larger than 200x200
166
+ if ( !isset( $meta['width'] ) || $meta['width'] < $width )
167
+ continue;
168
+ if ( !isset( $meta['height'] ) || $meta['height'] < $height )
169
+ continue;
170
+
171
+ $url = wp_get_attachment_url( $post_image->ID );
172
+
173
+ $images[] = array(
174
+ 'type' => 'image',
175
+ 'from' => 'attachment',
176
+ 'src' => $url,
177
+ 'src_width' => $meta['width'],
178
+ 'src_height' => $meta['height'],
179
+ 'href' => $permalink,
180
+ );
181
+ }
182
+
183
+ /*
184
+ * We only want to pass back attached images that were actually inserted.
185
+ * We can load up all the images found in the HTML source and then
186
+ * compare URLs to see if an image is attached AND inserted.
187
+ */
188
+ $html_images = array();
189
+ $html_images = self::from_html( get_post( $post_id ) );
190
+ $inserted_images = array();
191
+
192
+ foreach( $html_images as $html_image ) {
193
+ $src = parse_url( $html_image['src'] );
194
+ $inserted_images[] = $src['scheme'] . '://' . $src['host'] . $src['path']; // strip off any query strings
195
+ }
196
+ foreach( $images as $i => $image ) {
197
+ if ( !in_array( $image['src'], $inserted_images ) )
198
+ unset( $images[$i] );
199
+ }
200
+
201
+ return $images;
202
+ }
203
+
204
+ /**
205
+ * Check if a Featured Image is set for this post, and return it in a similar
206
+ * format to the other images?_from_*() methods.
207
+ * @param int $post_id The post ID to check
208
+ * @return Array containing details of the Featured Image, or empty array if none.
209
+ */
210
+ static function from_thumbnail( $post_id, $width = 200, $height = 200 ) {
211
+ $images = array();
212
+
213
+ if ( !function_exists( 'get_post_thumbnail_id' ) ) {
214
+ return $images;
215
+ }
216
+
217
+ $thumb = get_post_thumbnail_id( $post_id );
218
+
219
+ if ( $thumb ) {
220
+ $meta = wp_get_attachment_metadata( $thumb );
221
+
222
+ // Must be larger than requested minimums
223
+ if ( !isset( $meta['width'] ) || $meta['width'] < $width )
224
+ return $images;
225
+ if ( !isset( $meta['height'] ) || $meta['height'] < $height )
226
+ return $images;
227
+
228
+ $url = wp_get_attachment_url( $thumb );
229
+ if ( stristr( $url, '?' ) )
230
+ $url = substr( $url, 0, strpos( $url, '?' ) );
231
+
232
+ $images = array( array( // Other methods below all return an array of arrays
233
+ 'type' => 'image',
234
+ 'from' => 'thumbnail',
235
+ 'src' => $url,
236
+ 'src_width' => $meta['width'],
237
+ 'src_height' => $meta['height'],
238
+ 'href' => get_permalink( $thumb ),
239
+ ) );
240
+ }
241
+ return $images;
242
+ }
243
+
244
+ /**
245
+ * Very raw -- just parse the HTML and pull out any/all img tags and return their src
246
+ * @param str $html The HTML string to parse for images, or a post object
247
+ * @return Array containing images
248
+ */
249
+ static function from_html( $html ) {
250
+ $images = array();
251
+
252
+ if ( is_object( $html ) ) {
253
+ if ( property_exists( $html, 'post_content' ) )
254
+ $html = apply_filters( 'the_content', $html->post_content );
255
+ else
256
+ return $images;
257
+ }
258
+
259
+ preg_match_all( '!<img.*src="([^"]+)".*/?>!iUs', $html, $matches );
260
+ if ( !empty( $matches[1] ) ) {
261
+ foreach ( $matches[1] as $match ) {
262
+ if ( stristr( $match, '/smilies/' ) )
263
+ continue;
264
+
265
+ $images[] = array(
266
+ 'type' => 'image',
267
+ 'from' => 'html',
268
+ 'src' => html_entity_decode( $match ),
269
+ 'href' => '', // No link to apply to these. Might potentially parse for that as well, but not for now
270
+ );
271
+ }
272
+ }
273
+
274
+ return $images;
275
+ }
276
+
277
+ /**
278
+ * @param int $post_id The post ID to check
279
+ * @param int $size
280
+ * @return Array containing details of the image, or empty array if none.
281
+ */
282
+ static function from_blavatar( $post_id, $size = 96 ) {
283
+ if ( !function_exists( 'blavatar_domain' ) || !function_exists( 'blavatar_exists' ) || !function_exists( 'blavatar_url' ) ) {
284
+ return array();
285
+ }
286
+
287
+ $permalink = get_permalink( $post_id );
288
+ $domain = blavatar_domain( $permalink );
289
+
290
+ if ( !blavatar_exists( $domain ) ) {
291
+ return array();
292
+ }
293
+
294
+ $url = blavatar_url( $domain, 'img', $size );
295
+
296
+ return array( array(
297
+ 'type' => 'image',
298
+ 'from' => 'blavatar',
299
+ 'src' => $url,
300
+ 'src_width' => $size,
301
+ 'src_height' => $size,
302
+ 'href' => $permalink,
303
+ ) );
304
+ }
305
+
306
+ /**
307
+ * @param int $post_id The post ID to check
308
+ * @param int $size
309
+ * @param string $default The default image to use.
310
+ * @return Array containing details of the image, or empty array if none.
311
+ */
312
+ static function from_gravatar( $post_id, $size = 96, $default = false ) {
313
+ $post = get_post( $post_id );
314
+ $permalink = get_permalink( $post_id );
315
+
316
+ if ( function_exists( 'get_avatar_url' ) ) {
317
+ $url = get_avatar_url( $post->post_author, $size, $default, true );
318
+ if ( $url && is_array( $url ) ) {
319
+ $url = $url[0];
320
+ }
321
+ } else {
322
+ $has_filter = has_filter( 'pre_option_show_avatars', '__return_true' );
323
+ if ( !$has_filter ) {
324
+ add_filter( 'pre_option_show_avatars', '__return_true' );
325
+ }
326
+ $avatar = get_avatar( $post->post_author, $size, $default );
327
+ if ( !$has_filter ) {
328
+ remove_filter( 'pre_option_show_avatars', '__return_true' );
329
+ }
330
+
331
+ if ( !$avatar ) {
332
+ return array();
333
+ }
334
+
335
+ if ( !preg_match( '/src=["\']([^"\']+)["\']/', $avatar, $matches ) ) {
336
+ return array();
337
+ }
338
+
339
+ $url = wp_specialchars_decode( $matches[1], ENT_QUOTES );
340
+ }
341
+
342
+ return array( array(
343
+ 'type' => 'image',
344
+ 'from' => 'gravatar',
345
+ 'src' => $url,
346
+ 'src_width' => $size,
347
+ 'src_height' => $size,
348
+ 'href' => $permalink,
349
+ ) );
350
+ }
351
+
352
+ /**
353
+ * Run through the different methods that we have available to try to find a single good
354
+ * display image for this post.
355
+ * @param int $post_id
356
+ * @param array $args Other arguments (currently width and height required for images where possible to determine)
357
+ * @return Array containing details of the best image to be used
358
+ */
359
+ static function get_image( $post_id, $args = array() ) {
360
+ $image = '';
361
+ $media = self::get_images( $post_id, $args );
362
+
363
+ if ( is_array( $media ) ) {
364
+ foreach ( $media as $item ) {
365
+ if ( 'image' == $item['type'] ) {
366
+ $image = $item;
367
+ break;
368
+ }
369
+ }
370
+ }
371
+
372
+ return $image;
373
+ }
374
+
375
+ /**
376
+ * Get an array containing a collection of possible images for this post, stopping once we hit a method
377
+ * that returns something useful.
378
+ * @param int $post_id
379
+ * @param array $args Optional args, curently only width and height required for images
380
+ * @return Array containing images that would be good for representing this post
381
+ */
382
+ static function get_images( $post_id, $args = array() ) {
383
+ // Figure out which image to attach to this post.
384
+ $media = false;
385
+
386
+ $media = apply_filters( 'jetpack_images_pre_get_images', $media, $post_id, $args );
387
+ if ( $media )
388
+ return $media;
389
+
390
+ $defaults = array(
391
+ 'width' => 200, // Required minimum width (if possible to determine)
392
+ 'height' => 200, // Required minimum height (if possible to determine)
393
+ 'avatar_size' => 96,
394
+ 'fallback_to_avatars' => false,
395
+ 'gravatar_default' => false,
396
+ );
397
+ $args = wp_parse_args( $args, $defaults );
398
+
399
+ $media = self::from_thumbnail( $post_id, $args['width'], $args['height'] );
400
+ if ( !$media )
401
+ $media = self::from_slideshow( $post_id, $args['width'], $args['height'] );
402
+ if ( !$media )
403
+ $media = self::from_gallery( $post_id );
404
+ if ( !$media )
405
+ $media = self::from_attachment( $post_id, $args['width'], $args['height'] );
406
+ if ( !$media )
407
+ $media = self::from_html( get_post( $post_id ) );
408
+
409
+ if ( !$media && $args['fallback_to_avatars'] ) {
410
+ $media = self::from_blavatar( $post_id, $args['avatar_size'] );
411
+ if ( !$media )
412
+ $media = self::from_gravatar( $post_id, $args['avatar_size'], $args['gravatar_default'] );
413
+ }
414
+
415
+ return apply_filters( 'jetpack_images_get_images', $media, $post_id, $args );
416
+ }
417
+ }
class.jetpack-signature.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'JETPACK_SIGNATURE__HTTP_PORT' ) or define( 'JETPACK_SIGNATURE__HTTP_PORT' , 80 );
4
+ defined( 'JETPACK_SIGNATURE__HTTPS_PORT' ) or define( 'JETPACK_SIGNATURE__HTTPS_PORT', 443 );
5
+
6
+ class Jetpack_Signature {
7
+ var $token;
8
+ var $secret;
9
+
10
+ function Jetpack_Signature( $access_token, $time_diff = 0 ) {
11
+ $secret = explode( '.', $access_token );
12
+ if ( 2 != count( $secret ) )
13
+ return;
14
+
15
+ $this->token = $secret[0];
16
+ $this->secret = $secret[1];
17
+ $this->time_diff = $time_diff;
18
+ }
19
+
20
+ function sign_current_request( $override = array() ) {
21
+ if ( isset( $override['scheme'] ) ) {
22
+ $scheme = $override['scheme'];
23
+ if ( !in_array( $scheme, array( 'http', 'https' ) ) ) {
24
+ return new Jetpack_Error( 'invalid_sheme', 'Invalid URL scheme' );
25
+ }
26
+ } else {
27
+ if ( is_ssl() ) {
28
+ $scheme = 'https';
29
+ } else {
30
+ $scheme = 'http';
31
+ }
32
+ }
33
+
34
+ if ( is_ssl() ) {
35
+ $port = JETPACK_SIGNATURE__HTTPS_PORT == $_SERVER['SERVER_PORT'] ? '' : $_SERVER['SERVER_PORT'];
36
+ } else {
37
+ $port = JETPACK_SIGNATURE__HTTP_PORT == $_SERVER['SERVER_PORT'] ? '' : $_SERVER['SERVER_PORT'];
38
+ }
39
+
40
+ $url = "{$scheme}://{$_SERVER['HTTP_HOST']}:{$port}" . stripslashes( $_SERVER['REQUEST_URI'] );
41
+
42
+ if ( array_key_exists( 'body', $override ) && !is_null( $override['body'] ) ) {
43
+ $body = $override['body'];
44
+ } else if ( 'POST' == strtoupper( $_SERVER['REQUEST_METHOD'] ) ) {
45
+ $body = isset( $GLOBALS['HTTP_RAW_POST_DATA'] ) ? $GLOBALS['HTTP_RAW_POST_DATA'] : null;
46
+ } else {
47
+ $body = null;
48
+ }
49
+
50
+ $a = array();
51
+ foreach ( array( 'token', 'timestamp', 'nonce', 'body-hash' ) as $parameter ) {
52
+ if ( isset( $override[$parameter] ) ) {
53
+ $a[$parameter] = $override[$parameter];
54
+ } else {
55
+ $a[$parameter] = isset( $_GET[$parameter] ) ? stripslashes( $_GET[$parameter] ) : '';
56
+ }
57
+ }
58
+
59
+ $method = isset( $override['method'] ) ? $override['method'] : $_SERVER['REQUEST_METHOD'];
60
+ return $this->sign_request( $a['token'], $a['timestamp'], $a['nonce'], $a['body-hash'], $method, $url, $body, true );
61
+ }
62
+
63
+ // body_hash v. body-hash is annoying. Refactor to accept an array?
64
+ function sign_request( $token = '', $timestamp = 0, $nonce = '', $body_hash = '', $method = '', $url = '', $body = null, $verify_body_hash = true ) {
65
+ if ( !$this->secret ) {
66
+ return new Jetpack_Error( 'invalid_secret', 'Invalid secret' );
67
+ }
68
+
69
+ if ( !$this->token ) {
70
+ return new Jetpack_Error( 'invalid_token', 'Invalid token' );
71
+ }
72
+
73
+ list( $token ) = explode( '.', $token );
74
+
75
+ if ( 0 !== strpos( $token, "$this->token:" ) ) {
76
+ return new Jetpack_Error( 'token_mismatch', 'Incorrect token' );
77
+ }
78
+
79
+ $required_parameters = array( 'token', 'timestamp', 'nonce', 'method', 'url' );
80
+ if ( !is_null( $body ) ) {
81
+ $required_parameters[] = 'body_hash';
82
+ if ( !is_string( $body ) ) {
83
+ return new Jetpack_Error( 'invalid_body', 'Body is malformed.' );
84
+ }
85
+ }
86
+
87
+ foreach ( $required_parameters as $required ) {
88
+ if ( !is_scalar( $$required ) ) {
89
+ return new Jetpack_Error( 'invalid_signature', sprintf( 'The required "%s" parameter is malformed.', str_replace( '_', '-', $required ) ) );
90
+ }
91
+
92
+ if ( !strlen( $$required ) ) {
93
+ return new Jetpack_Error( 'invalid_signature', sprintf( 'The required "%s" parameter is missing.', str_replace( '_', '-', $required ) ) );
94
+ }
95
+ }
96
+
97
+ if ( is_null( $body ) ) {
98
+ if ( $body_hash ) {
99
+ return new Jetpack_Error( 'invalid_body_hash', 'The body hash does not match.' );
100
+ }
101
+ } else {
102
+ if ( $verify_body_hash && jetpack_sha1_base64( $body ) != $body_hash ) {
103
+ return new Jetpack_Error( 'invalid_body_hash', 'The body hash does not match.' );
104
+ }
105
+ }
106
+
107
+ $parsed = parse_url( $url );
108
+ if ( !isset( $parsed['host'] ) ) {
109
+ return new Jetpack_Error( 'invalid_signature', sprintf( 'The required "%s" parameter is malformed.', 'url' ) );
110
+ }
111
+
112
+ if ( !empty( $parsed['port'] ) ) {
113
+ $port = $parsed['port'];
114
+ } else {
115
+ if ( 'http' == $parsed['scheme'] ) {
116
+ $port = 80;
117
+ } else if ( 'https' == $parsed['scheme'] ) {
118
+ $port = 443;
119
+ } else {
120
+ return new Jetpack_Error( 'unknown_scheme_port', "The scheme's port is unknown" );
121
+ }
122
+ }
123
+
124
+ if ( !ctype_digit( $timestamp ) || 10 < strlen( $timestamp ) ) { // If Jetpack is around in 275 years, you can blame mdawaffe for the bug.
125
+ return new Jetpack_Error( 'invalid_signature', sprintf( 'The required "%s" parameter is malformed.', 'timestamp' ) );
126
+ }
127
+
128
+ $local_time = $timestamp - $this->time_diff;
129
+ if ( $local_time < time() - 600 || $local_time > time() + 300 ) {
130
+ return new Jetpack_Error( 'invalid_signature', 'The timestamp is too old.' );
131
+ }
132
+
133
+ if ( 12 < strlen( $nonce ) || preg_match( '/[^a-zA-Z0-9]/', $nonce ) ) {
134
+ return new Jetpack_Error( 'invalid_signature', sprintf( 'The required "%s" parameter is malformed.', 'nonce' ) );
135
+ }
136
+
137
+ $normalized_request_pieces = array(
138
+ $token,
139
+ $timestamp,
140
+ $nonce,
141
+ $body_hash,
142
+ strtoupper( $method ),
143
+ strtolower( $parsed['host'] ),
144
+ $port,
145
+ $parsed['path'],
146
+ // Normalized Query String
147
+ );
148
+
149
+ $normalized_request_pieces = array_merge( $normalized_request_pieces, $this->normalized_query_parameters( isset( $parsed['query'] ) ? $parsed['query'] : '' ) );
150
+
151
+ $normalized_request_string = join( "\n", $normalized_request_pieces ) . "\n";
152
+
153
+ return base64_encode( hash_hmac( 'sha1', $normalized_request_string, $this->secret, true ) );
154
+ }
155
+
156
+ function normalized_query_parameters( $query_string ) {
157
+ parse_str( $query_string, $array );
158
+ if ( get_magic_quotes_gpc() )
159
+ $array = stripslashes_deep( $array );
160
+
161
+ unset( $array['signature'] );
162
+
163
+ $names = array_keys( $array );
164
+ $values = array_values( $array );
165
+
166
+ $names = array_map( array( $this, 'encode_3986' ), $names );
167
+ $values = array_map( array( $this, 'encode_3986' ), $values );
168
+
169
+ $pairs = array_map( array( $this, 'join_with_equal_sign' ), $names, $values );
170
+
171
+ sort( $pairs );
172
+
173
+ return $pairs;
174
+ }
175
+
176
+ function encode_3986( $string ) {
177
+ $string = rawurlencode( $string );
178
+ return str_replace( '%7E', '~', $string ); // prior to PHP 5.3, rawurlencode was RFC 1738
179
+ }
180
+
181
+ function join_with_equal_sign( $name, $value ) {
182
+ return "{$name}={$value}";
183
+ }
184
+ }
185
+
186
+ function jetpack_sha1_base64( $text ) {
187
+ return base64_encode( sha1( $text, true ) );
188
+ }
class.jetpack-user-agent.php ADDED
@@ -0,0 +1,1331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ function jetpack_is_mobile( $kind = 'any', $return_matched_agent = false ) {
4
+ static $kinds = array( 'smart' => false, 'dumb' => false, 'any' => false );
5
+ static $first_run = true;
6
+ static $matched_agent = '';
7
+
8
+ $ua_info = new Jetpack_User_Agent_Info();
9
+
10
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) || strpos( strtolower( $_SERVER['HTTP_USER_AGENT'] ), 'ipad' ) )
11
+ return false;
12
+
13
+ if( $ua_info->is_android_tablet() && $ua_info->is_kindle_touch() === false )
14
+ return false;
15
+
16
+ if( $ua_info->is_blackberry_tablet() )
17
+ return false;
18
+
19
+ if ( $first_run ) {
20
+ $first_run = false;
21
+
22
+ //checks for iPhoneTier devices & RichCSS devices
23
+ if ( $ua_info->isTierIphone() || $ua_info->isTierRichCSS() ) {
24
+ $kinds['smart'] = true;
25
+ $matched_agent = $ua_info->matched_agent;
26
+ }
27
+
28
+ if ( !$kinds['smart'] ) {
29
+ // if smart, we are not dumb so no need to check
30
+ $dumb_agents = $ua_info->dumb_agents;
31
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
32
+ foreach ( $dumb_agents as $dumb_agent ) {
33
+ if ( false !== strpos( $agent, $dumb_agent ) ) {
34
+ $kinds['dumb'] = true;
35
+ $matched_agent = $dumb_agent;
36
+ break;
37
+ }
38
+ }
39
+
40
+ if ( !$kinds['dumb'] ) {
41
+ if ( isset( $_SERVER['HTTP_X_WAP_PROFILE'] ) ) {
42
+ $kinds['dumb'] = true;
43
+ $matched_agent = 'http_x_wap_profile';
44
+ } elseif ( isset( $_SERVER['HTTP_ACCEPT']) && ( preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) || false !== strpos( strtolower( $_SERVER['HTTP_ACCEPT'] ), 'application/vnd.wap.xhtml+xml' ) ) ) {
45
+ $kinds['dumb'] = true;
46
+ $matched_agent = 'vnd.wap.xhtml+xml';
47
+ }
48
+ }
49
+ }
50
+
51
+ if ( $kinds['dumb'] || $kinds['smart'] )
52
+ $kinds['any'] = true;
53
+ }
54
+
55
+ if ( $return_matched_agent )
56
+ return $matched_agent;
57
+
58
+ return $kinds[$kind];
59
+ }
60
+
61
+ class Jetpack_User_Agent_Info {
62
+
63
+ var $useragent;
64
+ var $matched_agent;
65
+ var $isTierIphone; //Stores whether is the iPhone tier of devices.
66
+ var $isTierRichCss; //Stores whether the device can probably support Rich CSS, but JavaScript (jQuery) support is not assumed.
67
+ var $isTierGenericMobile; //Stores whether it is another mobile device, which cannot be assumed to support CSS or JS (eg, older BlackBerry, RAZR)
68
+
69
+ private $_platform = null; //Stores the device platform name
70
+ const PLATFORM_WINDOWS = 'windows';
71
+ const PLATFORM_IPHONE = 'iphone';
72
+ const PLATFORM_IPOD = 'ipod';
73
+ const PLATFORM_IPAD = 'ipad';
74
+ const PLATFORM_BLACKBERRY = 'blackberry';
75
+ const PLATFORM_BLACKBERRY_10 = 'blackberry_10';
76
+ const PLATFORM_SYMBIAN = 'symbian_series60';
77
+ const PLATFORM_SYMBIAN_S40 = 'symbian_series40';
78
+ const PLATFORM_J2ME_MIDP = 'j2me_midp';
79
+ const PLATFORM_ANDROID = 'android';
80
+ const PLATFORM_ANDROID_TABLET = 'android_tablet';
81
+
82
+ var $dumb_agents = array(
83
+ 'nokia', 'blackberry', 'philips', 'samsung', 'sanyo', 'sony', 'panasonic', 'webos',
84
+ 'ericsson', 'alcatel', 'palm',
85
+ 'windows ce', 'opera mini', 'series60', 'series40',
86
+ 'au-mic,', 'audiovox', 'avantgo', 'blazer',
87
+ 'danger', 'docomo', 'epoc',
88
+ 'ericy', 'i-mode', 'ipaq', 'midp-',
89
+ 'mot-', 'netfront', 'nitro',
90
+ 'palmsource', 'pocketpc', 'portalmmm',
91
+ 'rover', 'sie-',
92
+ 'symbian', 'cldc-', 'j2me',
93
+ 'smartphone', 'up.browser', 'up.link',
94
+ 'up.link', 'vodafone/', 'wap1.', 'wap2.', 'mobile', 'googlebot-mobile',
95
+ );
96
+
97
+ //The constructor. Initializes default variables.
98
+ function Jetpack_User_Agent_Info()
99
+ {
100
+ if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) )
101
+ $this->useragent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
102
+ }
103
+
104
+ /**
105
+ * This method detects the mobile User Agent name.
106
+ *
107
+ * @return string The matched User Agent name, false otherwise.
108
+ */
109
+ function get_mobile_user_agent_name() {
110
+ if( $this->is_chrome_for_iOS( ) ) //keep this check before the safari rule
111
+ return 'chrome-for-ios';
112
+ elseif ( $this->is_iphone_or_ipod( 'iphone-safari' ) )
113
+ return 'iphone';
114
+ elseif ( $this->is_ipad( 'ipad-safari' ) )
115
+ return 'ipad';
116
+ elseif ( $this->is_android_tablet() ) //keep this check before the android rule
117
+ return 'android_tablet';
118
+ elseif ( $this->is_android() )
119
+ return 'android';
120
+ elseif ( $this->is_blackberry_10() )
121
+ return 'blackberry_10';
122
+ elseif ( $this->is_blackbeberry() )
123
+ return 'blackberry';
124
+ elseif ( $this->is_WindowsPhone7() )
125
+ return 'win7';
126
+ elseif ( $this->is_windows_phone_8() )
127
+ return 'winphone8';
128
+ elseif ( $this->is_opera_mini() )
129
+ return 'opera-mini';
130
+ elseif ( $this->is_opera_mini_dumb() )
131
+ return 'opera-mini-dumb';
132
+ elseif ( $this->is_opera_mobile() )
133
+ return 'opera-mobi';
134
+ elseif ( $this->is_blackberry_tablet() )
135
+ return 'blackberry_tablet';
136
+ elseif ( $this->is_kindle_fire() )
137
+ return 'kindle-fire';
138
+ elseif ( $this->is_PalmWebOS() )
139
+ return 'webos';
140
+ elseif ( $this->is_S60_OSSBrowser() )
141
+ return 'series60';
142
+ elseif ( $this->is_firefox_mobile() )
143
+ return 'firefox_mobile';
144
+ elseif ( $this->is_MaemoTablet() )
145
+ return 'maemo';
146
+ elseif ( $this->is_MeeGo() )
147
+ return 'meego';
148
+ elseif( $this->is_TouchPad() )
149
+ return 'hp_tablet';
150
+ elseif ( $this->is_facebook_for_iphone() )
151
+ return 'facebook-for-iphone';
152
+ elseif ( $this->is_facebook_for_ipad() )
153
+ return 'facebook-for-ipad';
154
+ elseif ( $this->is_twitter_for_iphone() )
155
+ return 'twitter-for-iphone';
156
+ elseif ( $this->is_twitter_for_ipad() )
157
+ return 'twitter-for-ipad';
158
+ elseif ( $this->is_wordpress_for_ios() )
159
+ return 'ios-app';
160
+ elseif ( $this->is_iphone_or_ipod( 'iphone-not-safari' ) )
161
+ return 'iphone-unknown';
162
+ elseif ( $this->is_ipad( 'ipad-not-safari' ) )
163
+ return 'ipad-unknown';
164
+ else {
165
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
166
+ $dumb_agents = $this->dumb_agents;
167
+ foreach ( $dumb_agents as $dumb_agent ) {
168
+ if ( false !== strpos( $agent, $dumb_agent ) ) {
169
+ return $dumb_agent;
170
+ }
171
+ }
172
+ }
173
+
174
+ return false;
175
+ }
176
+
177
+ /**
178
+ * This method detects the mobile device's platform. All return strings are from the class constants.
179
+ * Note that this function returns the platform name, not the UA name/type. You should use a different function
180
+ * if you need to test the UA capabilites.
181
+ *
182
+ * @return string Name of the platform, false otherwise.
183
+ */
184
+ public function get_platform() {
185
+ if ( isset( $this->_platform ) ) {
186
+ return $this->_platform;
187
+ }
188
+
189
+ if ( strpos( $this->useragent, 'windows phone' ) !== false ) {
190
+ $this->_platform = self::PLATFORM_WINDOWS;
191
+ }
192
+ elseif ( strpos( $this->useragent, 'windows ce' ) !== false ) {
193
+ $this->_platform = self::PLATFORM_WINDOWS;
194
+ }
195
+ elseif ( strpos( $this->useragent, 'ipad' ) !== false ) {
196
+ $this->_platform = self::PLATFORM_IPAD;
197
+ }
198
+ else if ( strpos( $this->useragent, 'ipod' ) !== false ) {
199
+ $this->_platform = self::PLATFORM_IPOD;
200
+ }
201
+ else if ( strpos( $this->useragent, 'iphone' ) !== false ) {
202
+ $this->_platform = self::PLATFORM_IPHONE;
203
+ }
204
+ elseif ( strpos( $this->useragent, 'android' ) !== false ) {
205
+ if ( $this->is_android_tablet() )
206
+ $this->_platform = self::PLATFORM_ANDROID_TABLET;
207
+ else
208
+ $this->_platform = self::PLATFORM_ANDROID;
209
+ }
210
+ elseif ( $this->is_kindle_fire() ) {
211
+ $this->_platform = self::PLATFORM_ANDROID_TABLET;
212
+ }
213
+ elseif ( $this->is_blackberry_10() ) {
214
+ $this->_platform = self::PLATFORM_BLACKBERRY_10;
215
+ }
216
+ elseif ( strpos( $this->useragent, 'blackberry' ) !== false ) {
217
+ $this->_platform = self::PLATFORM_BLACKBERRY;
218
+ }
219
+ elseif ( $this->is_blackberry_tablet() ) {
220
+ $this->_platform = self::PLATFORM_BLACKBERRY;
221
+ }
222
+ elseif ( $this->is_symbian_platform() ) {
223
+ $this->_platform = self::PLATFORM_SYMBIAN;
224
+ }
225
+ elseif ( $this->is_symbian_s40_platform() ) {
226
+ $this->_platform = self::PLATFORM_SYMBIAN_S40;
227
+ }
228
+ elseif ( $this->is_J2ME_platform() ) {
229
+ $this->_platform = self::PLATFORM_J2ME_MIDP;
230
+ }
231
+ else
232
+ $this->_platform = false;
233
+
234
+ return $this->_platform;
235
+ }
236
+
237
+ /*
238
+ * This method detects for UA which can display iPhone-optimized web content.
239
+ * Includes iPhone, iPod Touch, Android, WebOS, Fennec (Firefox mobile), etc.
240
+ *
241
+ */
242
+ function isTierIphone() {
243
+ if ( isset( $this->isTierIphone ) ) {
244
+ return $this->isTierIphone;
245
+ }
246
+ if ( $this->is_iphoneOrIpod() ) {
247
+ $this->matched_agent = 'iphone';
248
+ $this->isTierIphone = true;
249
+ $this->isTierRichCss = false;
250
+ $this->isTierGenericMobile = false;
251
+ }
252
+ elseif ( $this->is_android() ) {
253
+ $this->matched_agent = 'android';
254
+ $this->isTierIphone = true;
255
+ $this->isTierRichCss = false;
256
+ $this->isTierGenericMobile = false;
257
+ }
258
+ elseif ( $this->is_windows_phone_8() ) {
259
+ $this->matched_agent = 'winphone8';
260
+ $this->isTierIphone = true;
261
+ $this->isTierRichCss = false;
262
+ $this->isTierGenericMobile = false;
263
+ }
264
+ elseif ( $this->is_WindowsPhone7() ) {
265
+ $this->matched_agent = 'win7';
266
+ $this->isTierIphone = true;
267
+ $this->isTierRichCss = false;
268
+ $this->isTierGenericMobile = false;
269
+ }
270
+ elseif ( $this->is_blackberry_10() ) {
271
+ $this->matched_agent = 'blackberry-10';
272
+ $this->isTierIphone = true;
273
+ $this->isTierRichCss = false;
274
+ $this->isTierGenericMobile = false;
275
+ }
276
+ elseif ( $this->is_blackbeberry() && $this->detect_blackberry_browser_version() == 'blackberry-webkit' ) {
277
+ $this->matched_agent = 'blackberry-webkit';
278
+ $this->isTierIphone = true;
279
+ $this->isTierRichCss = false;
280
+ $this->isTierGenericMobile = false;
281
+ }
282
+ elseif ( $this->is_blackberry_tablet() ) {
283
+ $this->matched_agent = 'blackberry_tablet';
284
+ $this->isTierIphone = true;
285
+ $this->isTierRichCss = false;
286
+ $this->isTierGenericMobile = false;
287
+ }
288
+ elseif ( $this->is_PalmWebOS() ) {
289
+ $this->matched_agent = 'webos';
290
+ $this->isTierIphone = true;
291
+ $this->isTierRichCss = false;
292
+ $this->isTierGenericMobile = false;
293
+ }
294
+ elseif ( $this->is_TouchPad() ) {
295
+ $this->matched_agent = 'hp_tablet';
296
+ $this->isTierIphone = true;
297
+ $this->isTierRichCss = false;
298
+ $this->isTierGenericMobile = false;
299
+ }
300
+ elseif ( $this->is_firefox_mobile() ) {
301
+ $this->matched_agent = 'fennec';
302
+ $this->isTierIphone = true;
303
+ $this->isTierRichCss = false;
304
+ $this->isTierGenericMobile = false;
305
+ }
306
+ elseif ( $this->is_opera_mobile() ) {
307
+ $this->matched_agent = 'opera-mobi';
308
+ $this->isTierIphone = true;
309
+ $this->isTierRichCss = false;
310
+ $this->isTierGenericMobile = false;
311
+ }
312
+ elseif ( $this->is_MaemoTablet() ) {
313
+ $this->matched_agent = 'maemo';
314
+ $this->isTierIphone = true;
315
+ $this->isTierRichCss = false;
316
+ $this->isTierGenericMobile = false;
317
+ }
318
+ elseif ( $this->is_MeeGo() ) {
319
+ $this->matched_agent = 'meego';
320
+ $this->isTierIphone = true;
321
+ $this->isTierRichCss = false;
322
+ $this->isTierGenericMobile = false;
323
+ }
324
+ elseif ( $this->is_kindle_touch() ) {
325
+ $this->matched_agent = 'kindle-touch';
326
+ $this->isTierIphone = true;
327
+ $this->isTierRichCss = false;
328
+ $this->isTierGenericMobile = false;
329
+ }
330
+ else {
331
+ $this->isTierIphone = false;
332
+ }
333
+ return $this->isTierIphone;
334
+ }
335
+
336
+ /*
337
+ * This method detects for UA which are likely to be capable
338
+ * but may not necessarily support JavaScript.
339
+ * Excludes all iPhone Tier UA.
340
+ *
341
+ */
342
+ function isTierRichCss(){
343
+ if ( isset( $this->isTierRichCss ) ) {
344
+ return $this->isTierRichCss;
345
+ }
346
+ if ($this->isTierIphone())
347
+ return false;
348
+
349
+ //The following devices are explicitly ok.
350
+ if ( $this->is_S60_OSSBrowser() ) {
351
+ $this->matched_agent = 'series60';
352
+ $this->isTierIphone = false;
353
+ $this->isTierRichCss = true;
354
+ $this->isTierGenericMobile = false;
355
+ }
356
+ elseif ( $this->is_opera_mini() ) {
357
+ $this->matched_agent = 'opera-mini';
358
+ $this->isTierIphone = false;
359
+ $this->isTierRichCss = true;
360
+ $this->isTierGenericMobile = false;
361
+ }
362
+ elseif ( $this->is_blackbeberry() ) {
363
+ $detectedDevice = $this->detect_blackberry_browser_version();
364
+ if ( $detectedDevice === 'blackberry-5' || $detectedDevice == 'blackberry-4.7' || $detectedDevice === 'blackberry-4.6' ) {
365
+ $this->matched_agent = $detectedDevice;
366
+ $this->isTierIphone = false;
367
+ $this->isTierRichCss = true;
368
+ $this->isTierGenericMobile = false;
369
+ }
370
+ }
371
+ else {
372
+ $this->isTierRichCss = false;
373
+ }
374
+
375
+ return $this->isTierRichCss;
376
+ }
377
+
378
+ // Detects if the user is using a tablet.
379
+ // props Corey Gilmore, BGR.com
380
+ function is_tablet() {
381
+ return ( 0 // never true, but makes it easier to manage our list of tablet conditions
382
+ || self::is_ipad()
383
+ || self::is_android_tablet()
384
+ || self::is_blackberry_tablet()
385
+ || self::is_kindle_fire()
386
+ || self::is_MaemoTablet()
387
+ || self::is_TouchPad()
388
+ );
389
+ }
390
+
391
+ /*
392
+ * Detects if the current UA is the default iPhone or iPod Touch Browser.
393
+ *
394
+ * DEPRECATED: use is_iphone_or_ipod
395
+ *
396
+ */
397
+ function is_iphoneOrIpod(){
398
+
399
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
400
+ return false;
401
+
402
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
403
+ if ( ( strpos( $ua, 'iphone' ) !== false ) || ( strpos( $ua,'ipod' ) !== false ) ) {
404
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
405
+ return false;
406
+ else
407
+ return true;
408
+ }
409
+ else
410
+ return false;
411
+ }
412
+
413
+
414
+ /*
415
+ * Detects if the current UA is iPhone Mobile Safari or another iPhone or iPod Touch Browser.
416
+ *
417
+ * They type can check for any iPhone, an iPhone using Safari, or an iPhone using something other than Safari.
418
+ *
419
+ * Note: If you want to check for Opera mini, Opera mobile or Firefox mobile (or any 3rd party iPhone browser),
420
+ * you should put the check condition before the check for 'iphone-any' or 'iphone-not-safari'.
421
+ * Otherwise those browsers will be 'catched' by the iphone string.
422
+ *
423
+ */
424
+ function is_iphone_or_ipod( $type = 'iphone-any' ) {
425
+
426
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
427
+ return false;
428
+
429
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
430
+ $is_iphone = ( strpos( $ua, 'iphone' ) !== false ) || ( strpos( $ua,'ipod' ) !== false );
431
+ $is_safari = ( false !== strpos( $ua, 'safari' ) );
432
+
433
+ if ( 'iphone-safari' == $type )
434
+ return $is_iphone && $is_safari;
435
+ elseif ( 'iphone-not-safari' == $type )
436
+ return $is_iphone && !$is_safari;
437
+ else
438
+ return $is_iphone;
439
+ }
440
+
441
+
442
+ /*
443
+ * Detects if the current UA is Chrome for iOS
444
+ *
445
+ * The User-Agent string in Chrome for iOS is the same as the Mobile Safari User-Agent, with CriOS/<ChromeRevision> instead of Version/<VersionNum>.
446
+ * - Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3
447
+ */
448
+ function is_chrome_for_iOS( ) {
449
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
450
+ return false;
451
+
452
+ if ( self::is_iphone_or_ipod( 'iphone-safari' ) === false ) return false;
453
+
454
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
455
+
456
+ if ( strpos( $ua, 'crios/' ) !== false )
457
+ return true;
458
+ else
459
+ return false;
460
+ }
461
+
462
+
463
+ /*
464
+ * Detects if the current UA is Twitter for iPhone
465
+ *
466
+ * Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 like Mac OS X; nb-no) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPhone
467
+ * Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Twitter for iPhone
468
+ *
469
+ */
470
+ function is_twitter_for_iphone( ) {
471
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
472
+ return false;
473
+
474
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
475
+
476
+ if ( strpos( $ua, 'ipad' ) !== false )
477
+ return false;
478
+
479
+ if ( strpos( $ua, 'twitter for iphone' ) !== false )
480
+ return true;
481
+ else
482
+ return false;
483
+ }
484
+
485
+ /*
486
+ * Detects if the current UA is Twitter for iPad
487
+ *
488
+ * Old version 4.X - Mozilla/5.0 (iPad; U; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPad
489
+ * Ver 5.0 or Higher - Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Twitter for iPhone
490
+ *
491
+ */
492
+ function is_twitter_for_ipad( ) {
493
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
494
+ return false;
495
+
496
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
497
+
498
+ if ( strpos( $ua, 'twitter for ipad' ) !== false )
499
+ return true;
500
+ elseif( strpos( $ua, 'ipad' ) !== false && strpos( $ua, 'twitter for iphone' ) !== false )
501
+ return true;
502
+ else
503
+ return false;
504
+ }
505
+
506
+
507
+ /*
508
+ * Detects if the current UA is Facebook for iPhone
509
+ * - Facebook 4020.0 (iPhone; iPhone OS 5.0.1; fr_FR)
510
+ * - Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_0 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.0;FBSS/2; FBCR/O2;FBID/phone;FBLC/en_US;FBSF/2.0]
511
+ * - Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 [FBAN/FBIOS;FBAV/5.0;FBBV/47423;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; FBCR/3ITA;FBID/phone;FBLC/en_US]
512
+ */
513
+ function is_facebook_for_iphone( ) {
514
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
515
+ return false;
516
+
517
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
518
+
519
+ if( strpos( $ua, 'iphone' ) === false )
520
+ return false;
521
+
522
+ if ( strpos( $ua, 'facebook' ) !== false && strpos( $ua, 'ipad' ) === false )
523
+ return true;
524
+ else if ( strpos( $ua, 'fbforiphone' ) !== false && strpos( $ua, 'tablet' ) === false )
525
+ return true;
526
+ else if ( strpos( $ua, 'fban/fbios;' ) !== false && strpos( $ua, 'tablet' ) === false ) //FB app v5.0 or higher
527
+ return true;
528
+ else
529
+ return false;
530
+ }
531
+
532
+ /*
533
+ * Detects if the current UA is Facebook for iPad
534
+ * - Facebook 4020.0 (iPad; iPhone OS 5.0.1; en_US)
535
+ * - Mozilla/5.0 (iPad; U; CPU iPhone OS 5_0 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.0;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US;FBSF/1.0]
536
+ * - Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403 [FBAN/FBIOS;FBAV/5.0;FBBV/47423;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/6.0;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US]
537
+ */
538
+ function is_facebook_for_ipad( ) {
539
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
540
+ return false;
541
+
542
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
543
+
544
+ if ( strpos( $ua, 'ipad' ) === false )
545
+ return false;
546
+
547
+ if ( strpos( $ua, 'facebook' ) !== false || strpos( $ua, 'fbforiphone' ) !== false || strpos( $ua, 'fban/fbios;' ) !== false )
548
+ return true;
549
+ else
550
+ return false;
551
+ }
552
+
553
+ /*
554
+ * Detects if the current UA is WordPress for iOS
555
+ */
556
+ function is_wordpress_for_ios( ) {
557
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
558
+ return false;
559
+
560
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
561
+ if ( strpos( $ua, 'wp-iphone' ) !== false )
562
+ return true;
563
+ else
564
+ return false;
565
+ }
566
+
567
+ /*
568
+ * Detects if the current device is an iPad.
569
+ * They type can check for any iPad, an iPad using Safari, or an iPad using something other than Safari.
570
+ *
571
+ * Note: If you want to check for Opera mini, Opera mobile or Firefox mobile (or any 3rd party iPad browser),
572
+ * you should put the check condition before the check for 'iphone-any' or 'iphone-not-safari'.
573
+ * Otherwise those browsers will be 'catched' by the ipad string.
574
+ *
575
+ */
576
+ function is_ipad( $type = 'ipad-any' ) {
577
+
578
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
579
+ return false;
580
+
581
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
582
+
583
+ $is_ipad = ( false !== strpos( $ua, 'ipad' ) );
584
+ $is_safari = ( false !== strpos( $ua, 'safari' ) );
585
+
586
+ if ( 'ipad-safari' == $type )
587
+ return $is_ipad && $is_safari;
588
+ elseif ( 'ipad-not-safari' == $type )
589
+ return $is_ipad && !$is_safari;
590
+ else
591
+ return $is_ipad;
592
+ }
593
+
594
+ /*
595
+ * Detects if the current browser is Firefox Mobile (Fennec)
596
+ *
597
+ * http://www.useragentstring.com/pages/Fennec/
598
+ * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1
599
+ * Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1
600
+ */
601
+ function is_firefox_mobile( ) {
602
+
603
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
604
+ return false;
605
+
606
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
607
+
608
+ if ( strpos( $ua, 'fennec' ) !== false )
609
+ return true;
610
+ else
611
+ return false;
612
+ }
613
+
614
+
615
+ /*
616
+ * Detects if the current browser is Opera Mobile
617
+ *
618
+ * What is the difference between Opera Mobile and Opera Mini?
619
+ * - Opera Mobile is a full Internet browser for mobile devices.
620
+ * - Opera Mini always uses a transcoder to convert the page for a small display.
621
+ * (it uses Opera advanced server compression technology to compress web content before it gets to a device.
622
+ * The rendering engine is on Opera's server.)
623
+ *
624
+ * Opera/9.80 (Windows NT 6.1; Opera Mobi/14316; U; en) Presto/2.7.81 Version/11.00"
625
+ */
626
+ function is_opera_mobile( ) {
627
+
628
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
629
+ return false;
630
+
631
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
632
+
633
+ if ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'mobi' ) !== false )
634
+ return true;
635
+ else
636
+ return false;
637
+ }
638
+
639
+
640
+ /*
641
+ * Detects if the current browser is Opera Mini
642
+ *
643
+ * Opera/8.01 (J2ME/MIDP; Opera Mini/3.0.6306/1528; en; U; ssr)
644
+ * Opera/9.80 (Android;Opera Mini/6.0.24212/24.746 U;en) Presto/2.5.25 Version/10.5454
645
+ * Opera/9.80 (iPhone; Opera Mini/5.0.019802/18.738; U; en) Presto/2.4.15
646
+ * Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15
647
+ * Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15
648
+ * Opera/9.80 (Series 60; Opera Mini/5.1.22783/23.334; U; en) Presto/2.5.25 Version/10.54
649
+ * Opera/9.80 (BlackBerry; Opera Mini/5.1.22303/22.387; U; en) Presto/2.5.25 Version/10.54
650
+ *
651
+ */
652
+ function is_opera_mini( ) {
653
+
654
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
655
+ return false;
656
+
657
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
658
+
659
+ if ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'mini' ) !== false )
660
+ return true;
661
+ else
662
+ return false;
663
+ }
664
+
665
+ /*
666
+ * Detects if the current browser is Opera Mini, but not on a smart device OS(Android, iOS, etc)
667
+ * Used to send users on dumb devices to m.wor
668
+ */
669
+ function is_opera_mini_dumb( ) {
670
+
671
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
672
+ return false;
673
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
674
+
675
+ if ( self::is_opera_mini() ) {
676
+ if ( strpos( $ua, 'android' ) !== false || strpos( $ua, 'iphone' ) !== false || strpos( $ua, 'ipod' ) !== false
677
+ || strpos( $ua, 'ipad' ) !== false || strpos( $ua, 'blackberry' ) !== false)
678
+ return false;
679
+ else
680
+ return true;
681
+ } else {
682
+ return false;
683
+ }
684
+ }
685
+
686
+ /*
687
+ * Detects if the current browser is Opera Mobile or Mini.
688
+ * DEPRECATED: use is_opera_mobile or is_opera_mini
689
+ *
690
+ * Opera Mini 5 Beta: Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.15650/756; U; en) Presto/2.2.0
691
+ * Opera Mini 8: Opera/8.01 (J2ME/MIDP; Opera Mini/3.0.6306/1528; en; U; ssr)
692
+ */
693
+ function is_OperaMobile() {
694
+ _deprecated_function( __FUNCTION__, 'always', 'is_opera_mini() or is_opera_mobile()' );
695
+
696
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
697
+ return false;
698
+
699
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
700
+
701
+ if ( strpos( $ua, 'opera' ) !== false ) {
702
+ if ( ( strpos( $ua, 'mini' ) !== false ) || ( strpos( $ua,'mobi' ) !== false ) )
703
+ return true;
704
+ else
705
+ return false;
706
+ } else {
707
+ return false;
708
+ }
709
+ }
710
+
711
+ /*
712
+ * Detects if the current browser is a Windows Phone 7 device.
713
+ * ex: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; GW910)
714
+ */
715
+ function is_WindowsPhone7() {
716
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
717
+ return false;
718
+
719
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
720
+
721
+ if ( strpos( $ua, 'windows phone os 7' ) === false ) {
722
+ return false;
723
+ } else {
724
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
725
+ return false;
726
+ else
727
+ return true;
728
+ }
729
+ }
730
+
731
+ /*
732
+ * Detects if the current browser is a Windows Phone 8 device.
733
+ * ex: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; ARM; Touch; IEMobile/10.0; <Manufacturer>; <Device> [;<Operator>])
734
+ */
735
+ function is_windows_phone_8() {
736
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
737
+ return false;
738
+
739
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
740
+ if ( strpos( $ua, 'windows phone 8' ) === false ) {
741
+ return false;
742
+ } else {
743
+ return true;
744
+ }
745
+ }
746
+
747
+
748
+ /*
749
+ * Detects if the current browser is on a Palm device running the new WebOS. This EXCLUDES TouchPad.
750
+ *
751
+ * ex1: Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1
752
+ * ex2: Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1
753
+ *
754
+ */
755
+ function is_PalmWebOS() {
756
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
757
+ return false;
758
+
759
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
760
+
761
+ if ( strpos( $ua, 'webos' ) === false ) {
762
+ return false;
763
+ } else {
764
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
765
+ return false;
766
+ else
767
+ return true;
768
+ }
769
+ }
770
+
771
+ /*
772
+ * Detects if the current browser is the HP TouchPad default browser. This excludes phones wt WebOS.
773
+ *
774
+ * TouchPad Emulator: Mozilla/5.0 (hp-desktop; Linux; hpwOS/2.0; U; it-IT) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 Desktop/1.0
775
+ * TouchPad: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0
776
+ *
777
+ */
778
+ function is_TouchPad() {
779
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
780
+ return false;
781
+
782
+ $http_user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
783
+ if ( false !== strpos( $http_user_agent, 'hp-tablet' ) || false !== strpos( $http_user_agent, 'hpwos' ) || false !== strpos( $http_user_agent, 'touchpad' ) ) {
784
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
785
+ return false;
786
+ else
787
+ return true;
788
+ }
789
+ else
790
+ return false;
791
+ }
792
+
793
+
794
+ /*
795
+ * Detects if the current browser is the Series 60 Open Source Browser.
796
+ *
797
+ * OSS Browser 3.2 on E75: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1/110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
798
+ *
799
+ * 7.0 Browser (Nokia 5800 XpressMusic (v21.0.025)) : Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
800
+ *
801
+ * Browser 7.1 (Nokia N97 (v12.0.024)) : Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/12.0.024; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.12344
802
+ *
803
+ */
804
+ function is_S60_OSSBrowser() {
805
+
806
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
807
+ return false;
808
+
809
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
810
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
811
+ return false;
812
+
813
+ $pos_webkit = strpos( $agent, 'webkit' );
814
+ if ( $pos_webkit !== false ) {
815
+ //First, test for WebKit, then make sure it's either Symbian or S60.
816
+ if ( strpos( $agent, 'symbian' ) !== false || strpos( $agent, 'series60' ) !== false ) {
817
+ return true;
818
+ } else
819
+ return false;
820
+ } elseif ( strpos( $agent, 'symbianos' ) !== false && strpos( $agent,'series60' ) !== false ) {
821
+ return true;
822
+ } elseif ( strpos( $agent, 'nokia' ) !== false && strpos( $agent,'series60' ) !== false ) {
823
+ return true;
824
+ }
825
+
826
+ return false;
827
+ }
828
+
829
+ /*
830
+ *
831
+ * Detects if the device platform is the Symbian Series 60.
832
+ *
833
+ */
834
+ function is_symbian_platform() {
835
+
836
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
837
+ return false;
838
+
839
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
840
+
841
+ $pos_webkit = strpos( $agent, 'webkit' );
842
+ if ( $pos_webkit !== false ) {
843
+ //First, test for WebKit, then make sure it's either Symbian or S60.
844
+ if ( strpos( $agent, 'symbian' ) !== false || strpos( $agent, 'series60' ) !== false ) {
845
+ return true;
846
+ } else
847
+ return false;
848
+ } elseif ( strpos( $agent, 'symbianos' ) !== false && strpos( $agent,'series60' ) !== false ) {
849
+ return true;
850
+ } elseif ( strpos( $agent, 'nokia' ) !== false && strpos( $agent,'series60' ) !== false ) {
851
+ return true;
852
+ } elseif ( strpos( $agent, 'opera mini' ) !== false ) {
853
+ if( strpos( $agent,'symbianos' ) !== false || strpos( $agent,'symbos' ) !== false || strpos( $agent,'series 60' ) !== false )
854
+ return true;
855
+ }
856
+
857
+ return false;
858
+ }
859
+
860
+ /*
861
+ *
862
+ * Detects if the device platform is the Symbian Series 40.
863
+ * Nokia Browser for Series 40 is a proxy based browser, previously known as Ovi Browser.
864
+ * This browser will report 'NokiaBrowser' in the header, however some older version will also report 'OviBrowser'.
865
+ *
866
+ */
867
+ function is_symbian_s40_platform() {
868
+
869
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
870
+ return false;
871
+
872
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
873
+
874
+ if ( strpos( $agent, 'series40' ) !== false ) {
875
+ if( strpos( $agent,'nokia' ) !== false || strpos( $agent,'ovibrowser' ) !== false || strpos( $agent,'nokiabrowser' ) !== false )
876
+ return true;
877
+ }
878
+
879
+ return false;
880
+ }
881
+
882
+ function is_J2ME_platform() {
883
+
884
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
885
+ return false;
886
+
887
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
888
+
889
+ if ( strpos( $agent, 'j2me/midp' ) !== false ) {
890
+ return true;
891
+ } elseif ( strpos( $agent, 'midp' ) !== false && strpos( $agent, 'cldc' ) ) {
892
+ return true;
893
+ }
894
+
895
+ return false;
896
+ }
897
+
898
+
899
+ /*
900
+ * Detects if the current UA is on one of the Maemo-based Nokia Internet Tablets.
901
+ */
902
+ function is_MaemoTablet() {
903
+
904
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
905
+ return false;
906
+
907
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
908
+
909
+ $pos_maemo = strpos( $agent, 'maemo' );
910
+ if ( $pos_maemo === false ) return false;
911
+
912
+ //Must be Linux + Tablet, or else it could be something else.
913
+ if ( strpos( $agent, 'tablet' ) !== false && strpos( $agent, 'linux' ) !== false ) {
914
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
915
+ return false;
916
+ else
917
+ return true;
918
+ } else
919
+ return false;
920
+ }
921
+
922
+ /*
923
+ * Detects if the current UA is a MeeGo device (Nokia Smartphone).
924
+ */
925
+ function is_MeeGo() {
926
+
927
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
928
+ return false;
929
+
930
+ $ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
931
+
932
+ if ( strpos( $ua, 'meego' ) === false ) {
933
+ return false;
934
+ } else {
935
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
936
+ return false;
937
+ else
938
+ return true;
939
+ }
940
+ }
941
+
942
+
943
+ /*
944
+ is_webkit() can be used to check the User Agent for an webkit generic browser
945
+ */
946
+ function is_webkit() {
947
+
948
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
949
+ return false;
950
+
951
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
952
+
953
+ $pos_webkit = strpos( $agent, 'webkit' );
954
+
955
+ if ( $pos_webkit !== false )
956
+ return true;
957
+ else
958
+ return false;
959
+ }
960
+
961
+ /**
962
+ * Detects if the current browser is the Native Android browser.
963
+ * @return boolean true if the browser is Android otherwise false
964
+ */
965
+ function is_android() {
966
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
967
+ return false;
968
+
969
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
970
+ $pos_android = strpos( $agent, 'android' );
971
+ if ( $pos_android !== false ) {
972
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
973
+ return false;
974
+ else
975
+ return true;
976
+ }
977
+ else
978
+ return false;
979
+ }
980
+
981
+
982
+ /**
983
+ * Detects if the current browser is the Native Android Tablet browser.
984
+ * Assumes 'Android' should be in the user agent, but not 'mobile'
985
+ *
986
+ * @return boolean true if the browser is Android and not 'mobile' otherwise false
987
+ */
988
+ function is_android_tablet( ) {
989
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
990
+ return false;
991
+
992
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
993
+
994
+ $pos_android = strpos( $agent, 'android' );
995
+ $pos_mobile = strpos( $agent, 'mobile' );
996
+ $post_android_app = strpos( $agent, 'wp-android' );
997
+
998
+ if ( $pos_android !== false && $pos_mobile === false && $post_android_app === false ) {
999
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
1000
+ return false;
1001
+ else
1002
+ return true;
1003
+ } else
1004
+ return false;
1005
+ }
1006
+
1007
+ /**
1008
+ * Detects if the current browser is the Kindle Fire Native browser.
1009
+ *
1010
+ * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true
1011
+ * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=false
1012
+ *
1013
+ * @return boolean true if the browser is Kindle Fire Native browser otherwise false
1014
+ */
1015
+ function is_kindle_fire( ) {
1016
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1017
+ return false;
1018
+
1019
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1020
+ $pos_silk = strpos( $agent, 'silk/' );
1021
+ $pos_silk_acc = strpos( $agent, 'silk-accelerated=' );
1022
+ if ( $pos_silk !== false && $pos_silk_acc !== false )
1023
+ return true;
1024
+ else
1025
+ return false;
1026
+ }
1027
+
1028
+
1029
+ /**
1030
+ * Detects if the current browser is the Kindle Touch Native browser
1031
+ *
1032
+ * Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+
1033
+ *
1034
+ * @return boolean true if the browser is Kindle monochrome Native browser otherwise false
1035
+ */
1036
+ function is_kindle_touch( ) {
1037
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1038
+ return false;
1039
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1040
+ $pos_kindle_touch = strpos( $agent, 'kindle/3.0+' );
1041
+ if ( $pos_kindle_touch !== false && self::is_kindle_fire() === false )
1042
+ return true;
1043
+ else
1044
+ return false;
1045
+ }
1046
+
1047
+
1048
+ // Detect if user agent is the WordPress.com Windows 8 app (used ONLY on the custom oauth stylesheet)
1049
+ function is_windows8_auth( ) {
1050
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1051
+ return false;
1052
+
1053
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1054
+ $pos = strpos( $agent, 'msauthhost' );
1055
+ if ( $pos !== false )
1056
+ return true;
1057
+ else
1058
+ return false;
1059
+ }
1060
+
1061
+ // Detect if user agent is the WordPress.com Windows 8 app.
1062
+ function is_wordpress_for_win8( ) {
1063
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1064
+ return false;
1065
+
1066
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1067
+ $pos = strpos( $agent, 'wp-windows8' );
1068
+ if ( $pos !== false )
1069
+ return true;
1070
+ else
1071
+ return false;
1072
+ }
1073
+
1074
+
1075
+ /*
1076
+ * is_blackberry_tablet() can be used to check the User Agent for a RIM blackberry tablet
1077
+ * The user agent of the BlackBerry® Tablet OS follows a format similar to the following:
1078
+ * Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+
1079
+ *
1080
+ */
1081
+ function is_blackberry_tablet() {
1082
+
1083
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1084
+ return false;
1085
+
1086
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1087
+ $pos_playbook = stripos( $agent, 'PlayBook' );
1088
+ $pos_rim_tablet = stripos( $agent, 'RIM Tablet' );
1089
+
1090
+ if ( ($pos_playbook === false) || ($pos_rim_tablet === false) )
1091
+ {
1092
+ return false;
1093
+ } else {
1094
+ return true;
1095
+ }
1096
+ }
1097
+
1098
+ /*
1099
+ is_blackbeberry() can be used to check the User Agent for a blackberry device
1100
+ Note that opera mini on BB matches this rule.
1101
+ */
1102
+ function is_blackbeberry() {
1103
+
1104
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1105
+ return false;
1106
+
1107
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1108
+
1109
+ $pos_blackberry = strpos( $agent, 'blackberry' );
1110
+ if ( $pos_blackberry !== false ) {
1111
+ if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() )
1112
+ return false;
1113
+ else
1114
+ return true;
1115
+ } else {
1116
+ return false;
1117
+ }
1118
+ }
1119
+
1120
+ /*
1121
+ is_blackberry_10() can be used to check the User Agent for a BlackBerry 10 device.
1122
+ */
1123
+ function is_blackberry_10() {
1124
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1125
+ return ( strpos( $agent, 'bb10' ) !== false ) && ( strpos( $agent, 'mobile' ) !== false );
1126
+ }
1127
+
1128
+ /**
1129
+ * Retrieve the blackberry OS version.
1130
+ *
1131
+ * Return strings are from the following list:
1132
+ * - blackberry-10
1133
+ * - blackberry-7
1134
+ * - blackberry-6
1135
+ * - blackberry-torch //only the first edition. The 2nd edition has the OS7 onboard and doesn't need any special rule.
1136
+ * - blackberry-5
1137
+ * - blackberry-4.7
1138
+ * - blackberry-4.6
1139
+ * - blackberry-4.5
1140
+ *
1141
+ * @return string Version of the BB OS.
1142
+ * If version is not found, get_blackbeberry_OS_version will return boolean false.
1143
+ */
1144
+ function get_blackbeberry_OS_version() {
1145
+
1146
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1147
+ return false;
1148
+
1149
+ if ( self::is_blackberry_10() )
1150
+ return 'blackberry-10';
1151
+
1152
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1153
+
1154
+ $pos_blackberry = stripos( $agent, 'blackberry' );
1155
+ if ( $pos_blackberry === false ) {
1156
+ //not a blackberry device
1157
+ return false;
1158
+ }
1159
+
1160
+ //blackberry devices OS 6.0 or higher
1161
+ //Mozilla/5.0 (BlackBerry; U; BlackBerry 9670; en) AppleWebKit/534.3+ (KHTML, like Gecko) Version/6.0.0.286 Mobile Safari/534.3+
1162
+ //Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, Like Gecko) Version/6.0.0.141 Mobile Safari/534.1+
1163
+ //Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0 Mobile Safari/534.11+
1164
+ $pos_webkit = stripos( $agent, 'webkit' );
1165
+ if ( $pos_webkit !== false ) {
1166
+ //detected blackberry webkit browser
1167
+ $pos_torch = stripos( $agent, 'BlackBerry 9800' );
1168
+ if ( $pos_torch !== false ) {
1169
+ return 'blackberry-torch'; //match the torch first edition. the 2nd edition should use the OS7 and doesn't need any special rule
1170
+ } else {
1171
+ //detecting the BB OS version for devices running OS 6.0 or higher
1172
+ if ( preg_match( '#Version\/([\d\.]+)#i', $agent, $matches ) ) {
1173
+ $version = $matches[1];
1174
+ $version_num = explode( '.', $version );
1175
+ if( is_array( $version_num ) === false || count( $version_num ) <= 1 )
1176
+ return 'blackberry-6'; //not a BB device that match our rule.
1177
+ else
1178
+ return 'blackberry-'.$version_num[0];
1179
+ } else {
1180
+ //if doesn't match returns the minimun version with a webkit browser. we should never fall here.
1181
+ return 'blackberry-6'; //not a BB device that match our rule.
1182
+ }
1183
+ }
1184
+ }
1185
+
1186
+ //blackberry devices <= 5.XX
1187
+ //BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179
1188
+ if ( preg_match( '#BlackBerry\w+\/([\d\.]+)#i', $agent, $matches ) ) {
1189
+ $version = $matches[1];
1190
+ } else {
1191
+ return false; //not a BB device that match our rule.
1192
+ }
1193
+
1194
+ $version_num = explode( '.', $version );
1195
+
1196
+ if( is_array( $version_num ) === false || count( $version_num ) <= 1 )
1197
+ return false;
1198
+ if ( $version_num[0] == 5 ) {
1199
+ return 'blackberry-5';
1200
+ } elseif ( $version_num[0] == 4 && $version_num[1] == 7 ) {
1201
+ return 'blackberry-4.7';
1202
+ } elseif ( $version_num[0] == 4 && $version_num[1] == 6 ) {
1203
+ return 'blackberry-4.6';
1204
+ } elseif ( $version_num[0] == 4 && $version_num[1] == 5 ) {
1205
+ return 'blackberry-4.5';
1206
+ } else {
1207
+ return false;
1208
+ }
1209
+
1210
+ return false;
1211
+ }
1212
+
1213
+ /**
1214
+ * Retrieve the blackberry browser version.
1215
+ *
1216
+ * Return string are from the following list:
1217
+ * - blackberry-10
1218
+ * - blackberry-webkit
1219
+ * - blackberry-5
1220
+ * - blackberry-4.7
1221
+ * - blackberry-4.6
1222
+ *
1223
+ * @return string Type of the BB browser.
1224
+ * If browser's version is not found, detect_blackbeberry_browser_version will return boolean false.
1225
+ */
1226
+ function detect_blackberry_browser_version() {
1227
+
1228
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1229
+ return false;
1230
+
1231
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1232
+
1233
+ if ( self::is_blackberry_10() )
1234
+ return 'blackberry-10';
1235
+
1236
+ $pos_blackberry = strpos( $agent, 'blackberry' );
1237
+ if ( $pos_blackberry === false ) {
1238
+ //not a blackberry device
1239
+ return false;
1240
+ }
1241
+
1242
+ $pos_webkit = strpos( $agent, 'webkit' );
1243
+
1244
+ if ( ! ( $pos_webkit === false ) ) {
1245
+ return 'blackberry-webkit';
1246
+ } else {
1247
+ if ( preg_match( '#BlackBerry\w+\/([\d\.]+)#i', $agent, $matches ) ) {
1248
+ $version = $matches[1];
1249
+ } else {
1250
+ return false; //not a BB device that match our rule.
1251
+ }
1252
+
1253
+ $version_num = explode( '.', $version );
1254
+
1255
+ if( is_array( $version_num ) === false || count( $version_num ) <= 1 )
1256
+ return false;
1257
+
1258
+ if ( $version_num[0] == 5 ) {
1259
+ return 'blackberry-5';
1260
+ } elseif ( $version_num[0] == 4 && $version_num[1] == 7 ) {
1261
+ return 'blackberry-4.7';
1262
+ } elseif ( $version_num[0] == 4 && $version_num[1] == 6 ) {
1263
+ return 'blackberry-4.6';
1264
+ } else {
1265
+ //A very old BB device is found or this is a BB device that doesn't match our rules.
1266
+ return false;
1267
+ }
1268
+ }
1269
+ return false;
1270
+ }
1271
+
1272
+ //Checks if a visitor is coming from one of the WordPress mobile apps
1273
+ function is_mobile_app() {
1274
+
1275
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) )
1276
+ return false;
1277
+
1278
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1279
+
1280
+ if ( isset( $_SERVER['X_USER_AGENT'] ) && preg_match( '|wp-webos|', $_SERVER['X_USER_AGENT'] ) )
1281
+ return true; //wp4webos 1.1 or higher
1282
+
1283
+ $app_agents = array( 'wp-android', 'wp-blackberry', 'wp-iphone', 'wp-nokia', 'wp-webos', 'wp-windowsphone' );
1284
+ // the mobile reader on iOS has an incorrect UA when loading the reader
1285
+ // currently it is the default one provided by the iOS framework which
1286
+ // causes problems with 2-step-auth
1287
+ // User-Agent WordPress/3.1.4 CFNetwork/609 Darwin/13.0.0
1288
+ $app_agents[] = 'wordpress/3.1';
1289
+
1290
+ foreach ( $app_agents as $app_agent ) {
1291
+ if ( false !== strpos( $agent, $app_agent ) )
1292
+ return true;
1293
+ }
1294
+ return false;
1295
+ }
1296
+
1297
+ static function is_bot() {
1298
+ static $is_bot = false;
1299
+ static $first_run = true;
1300
+
1301
+ if ( $first_run ) {
1302
+ $first_run = false;
1303
+
1304
+ /*
1305
+ $bot_ips = array( );
1306
+
1307
+ foreach ( $bot_ips as $bot_ip ) {
1308
+ if ( $_SERVER['REMOTE_ADDR'] == $bot_ip )
1309
+ $is_bot = true;
1310
+ }
1311
+ */
1312
+
1313
+ $agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
1314
+
1315
+ $bot_agents = array(
1316
+ 'alexa', 'altavista', 'ask jeeves', 'attentio', 'baiduspider', 'bingbot', 'chtml generic', 'crawler', 'fastmobilecrawl',
1317
+ 'feedfetcher-google', 'firefly', 'froogle', 'gigabot', 'googlebot', 'googlebot-mobile', 'heritrix', 'ia_archiver', 'irlbot',
1318
+ 'infoseek', 'jumpbot', 'lycos', 'mediapartners', 'mediobot', 'motionbot', 'msnbot', 'mshots', 'openbot',
1319
+ 'pythumbnail', 'scooter', 'slurp', 'snapbot', 'spider', 'surphace scout', 'taptubot', 'technoratisnoop',
1320
+ 'teoma', 'twiceler', 'yahooseeker', 'yahooysmcm', 'yammybot',
1321
+ );
1322
+
1323
+ foreach ( $bot_agents as $bot_agent ) {
1324
+ if ( false !== strpos( $agent, $bot_agent ) )
1325
+ $is_bot = true;
1326
+ }
1327
+ }
1328
+
1329
+ return $is_bot;
1330
+ }
1331
+ }
class.jetpack-xmlrpc-server.php ADDED
@@ -0,0 +1,366 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Just a sack of functions. Not actually an IXR_Server
5
+ */
6
+ class Jetpack_XMLRPC_Server {
7
+ /**
8
+ * The current error object
9
+ */
10
+ var $error = null;
11
+
12
+ /**
13
+ * Whitelist of the XML-RPC methods available to the Jetpack Server. If the
14
+ * user is not authenticated (->login()) then the methods are never added,
15
+ * so they will get a "does not exist" error.
16
+ */
17
+ function xmlrpc_methods( $core_methods ) {
18
+ $jetpack_methods = array(
19
+ 'jetpack.jsonAPI' => array( $this, 'json_api' ),
20
+ 'jetpack.verifyAction' => array( $this, 'verify_action' ),
21
+ );
22
+
23
+ $user = $this->login();
24
+
25
+ if ( $user ) {
26
+ $jetpack_methods = array_merge( $jetpack_methods, array(
27
+ 'jetpack.testConnection' => array( $this, 'test_connection' ),
28
+ 'jetpack.testAPIUserCode' => array( $this, 'test_api_user_code' ),
29
+ 'jetpack.featuresAvailable' => array( $this, 'features_available' ),
30
+ 'jetpack.featuresEnabled' => array( $this, 'features_enabled' ),
31
+ 'jetpack.getPost' => array( $this, 'get_post' ),
32
+ 'jetpack.getPosts' => array( $this, 'get_posts' ),
33
+ 'jetpack.getComment' => array( $this, 'get_comment' ),
34
+ 'jetpack.getComments' => array( $this, 'get_comments' ),
35
+ ) );
36
+
37
+ if ( isset( $core_methods['metaWeblog.editPost'] ) ) {
38
+ $jetpack_methods['metaWeblog.newMediaObject'] = $core_methods['metaWeblog.newMediaObject'];
39
+ $jetpack_methods['jetpack.updateAttachmentParent'] = array( $this, 'update_attachment_parent' );
40
+ }
41
+ }
42
+
43
+ return apply_filters( 'jetpack_xmlrpc_methods', $jetpack_methods, $core_methods, $user );
44
+ }
45
+
46
+ /**
47
+ * Whitelist of the bootstrap XML-RPC methods
48
+ */
49
+ function bootstrap_xmlrpc_methods() {
50
+ return array(
51
+ 'jetpack.verifyRegistration' => array( $this, 'verify_registration' ),
52
+ );
53
+ }
54
+
55
+ /**
56
+ * Verifies that Jetpack.WordPress.com received a registration request from this site
57
+ */
58
+ function verify_registration( $verify_secret ) {
59
+ return $this->verify_action( array( 'register', $verify_secret ) );
60
+ }
61
+
62
+ /**
63
+ * @return WP_Error|string secret_2 on success, WP_Error( error_code => error_code, error_message => error description, error_data => status code ) on failure
64
+ *
65
+ * Possible error_codes:
66
+ *
67
+ * verify_secret_1_missing
68
+ * verify_secret_1_malformed
69
+ * verify_secrets_missing: No longer have verification secrets stored
70
+ * verify_secrets_mismatch: stored secret_1 does not match secret_1 sent by Jetpack.WordPress.com
71
+ */
72
+ function verify_action( $params ) {
73
+ $action = $params[0];
74
+ $verify_secret = $params[1];
75
+
76
+ if ( empty( $verify_secret ) ) {
77
+ return $this->error( new Jetpack_Error( 'verify_secret_1_missing', sprintf( 'The required "%s" parameter is missing.', 'secret_1' ), 400 ) );
78
+ } else if ( !is_string( $verify_secret ) ) {
79
+ return $this->error( new Jetpack_Error( 'verify_secret_1_malformed', sprintf( 'The required "%s" parameter is malformed.', 'secret_1' ), 400 ) );
80
+ }
81
+
82
+ $secrets = Jetpack::get_option( $action );
83
+ if ( !$secrets || is_wp_error( $secrets ) ) {
84
+ Jetpack::delete_option( $action );
85
+ return $this->error( new Jetpack_Error( 'verify_secrets_missing', 'Verification took too long', 400 ) );
86
+ }
87
+
88
+ @list( $secret_1, $secret_2, $secret_eol ) = explode( ':', $secrets );
89
+ if ( empty( $secret_1 ) || empty( $secret_2 ) || empty( $secret_eol ) || $secret_eol < time() ) {
90
+ Jetpack::delete_option( $action );
91
+ return $this->error( new Jetpack_Error( 'verify_secrets_missing', 'Verification took too long', 400 ) );
92
+ }
93
+
94
+ if ( $verify_secret !== $secret_1 ) {
95
+ Jetpack::delete_option( $action );
96
+ return $this->error( new Jetpack_Error( 'verify_secrets_mismatch', 'Secret mismatch', 400 ) );
97
+ }
98
+
99
+ Jetpack::delete_option( $action );
100
+
101
+ return $secret_2;
102
+ }
103
+
104
+ /**
105
+ * Wrapper for wp_authenticate( $username, $password );
106
+ *
107
+ * @return WP_User|IXR_Error
108
+ */
109
+ function login() {
110
+ $user = wp_authenticate( 'username', 'password' );
111
+ if ( is_wp_error( $user ) ) {
112
+ if ( 'authentication_failed' == $user->get_error_code() ) { // Generic error could mean most anything.
113
+ $this->error = new Jetpack_Error( 'invalid_request', 'Invalid Request', 403 );
114
+ } else {
115
+ $this->error = $user;
116
+ }
117
+ return false;
118
+ } else if ( !$user ) { // Shouldn't happen.
119
+ $this->error = new Jetpack_Error( 'invalid_request', 'Invalid Request', 403 );
120
+ return false;
121
+ }
122
+
123
+ return $user;
124
+ }
125
+
126
+ /**
127
+ * Returns the current error as an IXR_Error
128
+ *
129
+ * @return null|IXR_Error
130
+ */
131
+ function error( $error = null ) {
132
+ if ( !is_null( $error ) ) {
133
+ $this->error = $error;
134
+ }
135
+
136
+ if ( is_wp_error( $this->error ) ) {
137
+ $code = $this->error->get_error_data();
138
+ if ( !$code ) {
139
+ $code = -10520;
140
+ }
141
+ $message = sprintf( 'Jetpack: [%s] %s', $this->error->get_error_code(), $this->error->get_error_message() );
142
+ return new IXR_Error( $code, $message );
143
+ } else if ( is_a( $this->error, 'IXR_Error' ) ) {
144
+ return $this->error;
145
+ }
146
+
147
+ return false;
148
+ }
149
+
150
+ /* API Methods */
151
+
152
+ /**
153
+ * Just authenticates with the given Jetpack credentials.
154
+ *
155
+ * @return bool|IXR_Error
156
+ */
157
+ function test_connection() {
158
+ return JETPACK__VERSION;
159
+ }
160
+
161
+ function test_api_user_code( $args ) {
162
+ $client_id = (int) $args[0];
163
+ $user_id = (int) $args[1];
164
+ $nonce = (string) $args[2];
165
+ $verify = (string) $args[3];
166
+
167
+ if ( !$client_id || !$user_id || !strlen( $nonce ) || 32 !== strlen( $verify ) ) {
168
+ return false;
169
+ }
170
+
171
+ $user = get_user_by( 'id', $user_id );
172
+ if ( !$user || is_wp_error( $user ) ) {
173
+ return false;
174
+ }
175
+
176
+ /* debugging
177
+ error_log( "CLIENT: $client_id" );
178
+ error_log( "USER: $user_id" );
179
+ error_log( "NONCE: $nonce" );
180
+ error_log( "VERIFY: $verify" );
181
+ */
182
+
183
+ $jetpack_token = Jetpack_Data::get_access_token( 1 );
184
+
185
+ $api_user_code = get_user_meta( $user_id, "jetpack_json_api_$client_id", true );
186
+ if ( !$api_user_code ) {
187
+ return false;
188
+ }
189
+
190
+ $hmac = hash_hmac( 'md5', json_encode( (object) array(
191
+ 'client_id' => (int) $client_id,
192
+ 'user_id' => (int) $user_id,
193
+ 'nonce' => (string) $nonce,
194
+ 'code' => (string) $api_user_code,
195
+ ) ), $jetpack_token->secret );
196
+
197
+ if ( $hmac !== $verify ) {
198
+ return false;
199
+ }
200
+
201
+ return $user_id;
202
+ }
203
+
204
+ /**
205
+ * Returns what features are available. Uses the slug of the module files.
206
+ *
207
+ * @return array|IXR_Error
208
+ */
209
+ function features_available() {
210
+ $raw_modules = Jetpack::get_available_modules();
211
+ $modules = array();
212
+ foreach ( $raw_modules as $module ) {
213
+ $modules[] = Jetpack::get_module_slug( $module );
214
+ }
215
+
216
+ return $modules;
217
+ }
218
+
219
+ /**
220
+ * Returns what features are enabled. Uses the slug of the modules files.
221
+ *
222
+ * @return array|IXR_Error
223
+ */
224
+ function features_enabled() {
225
+ $raw_modules = Jetpack::get_active_modules();
226
+ $modules = array();
227
+ foreach ( $raw_modules as $module ) {
228
+ $modules[] = Jetpack::get_module_slug( $module );
229
+ }
230
+
231
+ return $modules;
232
+ }
233
+
234
+ function get_post( $id ) {
235
+ if ( !$id = (int) $id ) {
236
+ return false;
237
+ }
238
+
239
+ $jetpack = Jetpack::init();
240
+
241
+ $post = $jetpack->sync->get_post( $id );
242
+ return $post;
243
+ }
244
+
245
+ function get_posts( $args ) {
246
+ list( $post_ids ) = $args;
247
+ $post_ids = array_map( 'intval', (array) $post_ids );
248
+ $jp = Jetpack::init();
249
+ $sync_data = $jp->sync->get_content( array( 'posts' => $post_ids ) );
250
+
251
+ return $sync_data;
252
+ }
253
+
254
+ function get_comment( $id ) {
255
+ if ( !$id = (int) $id ) {
256
+ return false;
257
+ }
258
+
259
+ $jetpack = Jetpack::init();
260
+
261
+ $comment = $jetpack->sync->get_comment( $id );
262
+ if ( !is_array( $comment ) )
263
+ return false;
264
+
265
+ $post = $jetpack->sync->get_post( $comment['comment_post_ID'] );
266
+ if ( !$post ) {
267
+ return false;
268
+ }
269
+
270
+ return $comment;
271
+ }
272
+
273
+ function get_comments( $args ) {
274
+ list( $comment_ids ) = $args;
275
+ $comment_ids = array_map( 'intval', (array) $comment_ids );
276
+ $jp = Jetpack::init();
277
+ $sync_data = $jp->sync->get_content( array( 'comments' => $comment_ids ) );
278
+
279
+ return $sync_data;
280
+ }
281
+
282
+ function update_attachment_parent( $args ) {
283
+ $attachment_id = (int) $args[0];
284
+ $parent_id = (int) $args[1];
285
+
286
+ return wp_update_post( array(
287
+ 'ID' => $attachment_id,
288
+ 'post_parent' => $parent_id,
289
+ ) );
290
+ }
291
+
292
+ function json_api( $args = array() ) {
293
+ $json_api_args = $args[0];
294
+ $verify_api_user_args = $args[1];
295
+
296
+ $method = (string) $json_api_args[0];
297
+ $url = (string) $json_api_args[1];
298
+ $post_body = is_null( $json_api_args[2] ) ? null : (string) $json_api_args[2];
299
+ $my_id = (int) $json_api_args[3];
300
+ $user_details = (array) $json_api_args[4];
301
+
302
+ if ( !$verify_api_user_args ) {
303
+ $user_id = 0;
304
+ } elseif ( 'internal' === $verify_api_user_args[0] ) {
305
+ $user_id = (int) $verify_api_user_args[1];
306
+ if ( $user_id ) {
307
+ $user = get_user_by( 'id', $user_id );
308
+ if ( !$user || is_wp_error( $user ) ) {
309
+ return false;
310
+ }
311
+ }
312
+ } else {
313
+ $user_id = call_user_func( array( $this, 'test_api_user_code' ), $verify_api_user_args );
314
+ if ( !$user_id ) {
315
+ return false;
316
+ }
317
+ }
318
+
319
+ /* debugging
320
+ error_log( "-- begin json api via jetpack debugging -- " );
321
+ error_log( "METHOD: $method" );
322
+ error_log( "URL: $url" );
323
+ error_log( "POST BODY: $post_body" );
324
+ error_log( "MY JETPACK ID: $my_id" );
325
+ error_log( "VERIFY_ARGS: " . print_r( $verify_api_user_args, 1 ) );
326
+ error_log( "VERIFIED USER_ID: " . (int) $user_id );
327
+ error_log( "-- end json api via jetpack debugging -- " );
328
+ */
329
+
330
+ $old_user = wp_get_current_user();
331
+ wp_set_current_user( $user_id );
332
+
333
+ $token = Jetpack_Data::get_access_token( get_current_user_id() );
334
+ if ( !$token || is_wp_error( $token ) ) {
335
+ return false;
336
+ }
337
+
338
+ define( 'REST_API_REQUEST', true );
339
+ define( 'WPCOM_JSON_API__BASE', 'public-api.wordpress.com/rest/v1' );
340
+
341
+ // needed?
342
+ require_once ABSPATH . 'wp-admin/includes/admin.php';
343
+
344
+ require_once dirname( __FILE__ ) . '/class.json-api.php';
345
+ $api = WPCOM_JSON_API::init( $method, $url, $post_body );
346
+ $api->token_details['user'] = $user_details;
347
+ require_once dirname( __FILE__ ) . '/class.json-api-endpoints.php';
348
+
349
+ $display_errors = ini_set( 'display_errors', 0 );
350
+ ob_start();
351
+ $content_type = $api->serve( false );
352
+ $output = ob_get_clean();
353
+ ini_set( 'display_errors', $display_errors );
354
+
355
+ $nonce = wp_generate_password( 10, false );
356
+ $hmac = hash_hmac( 'md5', $nonce . $output, $token->secret );
357
+
358
+ wp_set_current_user( isset( $old_user->ID ) ? $old_user->ID : 0 );
359
+
360
+ return array(
361
+ (string) $output,
362
+ (string) $nonce,
363
+ (string) $hmac,
364
+ );
365
+ }
366
+ }
class.json-api-endpoints.php ADDED
@@ -0,0 +1,3915 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Endpoint
4
+ abstract class WPCOM_JSON_API_Endpoint {
5
+ // The API Object
6
+ var $api;
7
+
8
+ var $pass_wpcom_user_details = false;
9
+ var $can_use_user_details_instead_of_blog_membership = false;
10
+
11
+ // One liner.
12
+ var $description;
13
+
14
+ // Object Grouping For Documentation (Users, Posts, Comments)
15
+ var $group;
16
+
17
+ // Stats extra value to bump
18
+ var $stat;
19
+
20
+ // HTTP Method
21
+ var $method = 'GET';
22
+
23
+ // Path at which to serve this endpoint: sprintf() format.
24
+ var $path = '';
25
+
26
+ // Identifiers to fill sprintf() formatted $path
27
+ var $path_labels = array();
28
+
29
+ // Accepted query parameters
30
+ var $query = array(
31
+ // Parameter name
32
+ 'context' => array(
33
+ // Default value => description
34
+ 'display' => 'Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..',
35
+ // Other possible values => description
36
+ 'edit' => 'Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..',
37
+ ),
38
+ 'http_envelope' => array(
39
+ 'false' => '',
40
+ 'true' => 'Some enviroments (like in-browser Javascript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.',
41
+ ),
42
+ 'pretty' => array(
43
+ 'false' => '',
44
+ 'true' => 'Output pretty JSON',
45
+ ),
46
+ // Parameter name => description (default value is empty)
47
+ 'callback' => '(string) An optional JSONP callback function.',
48
+ );
49
+
50
+ // Response format
51
+ var $response_format = array();
52
+
53
+ // Request format
54
+ var $request_format = array();
55
+
56
+ // Is this endpoint still in testing phase? If so, not available to the public.
57
+ var $in_testing = false;
58
+
59
+ /**
60
+ * @var string Version of the API
61
+ */
62
+ var $version = '';
63
+
64
+ /**
65
+ * @var string Example request to make
66
+ */
67
+ var $example_request = '';
68
+
69
+ /**
70
+ * @var string Example request data (for POST methods)
71
+ */
72
+ var $example_request_data = '';
73
+
74
+ /**
75
+ * @var string Example response from $example_request
76
+ */
77
+ var $example_response = '';
78
+
79
+ function __construct( $args ) {
80
+ $defaults = array(
81
+ 'in_testing' => false,
82
+ 'description' => '',
83
+ 'group' => '',
84
+ 'method' => 'GET',
85
+ 'path' => '/',
86
+ 'force' => '',
87
+ 'jp_disabled' => false,
88
+ 'path_labels' => array(),
89
+ 'request_format' => array(),
90
+ 'response_format' => array(),
91
+ 'query_parameters' => array(),
92
+ 'version' => 'v1',
93
+ 'example_request' => '',
94
+ 'example_request_data' => '',
95
+ 'example_response' => '',
96
+
97
+ 'pass_wpcom_user_details' => false,
98
+ 'can_use_user_details_instead_of_blog_membership' => false,
99
+ );
100
+
101
+ $args = wp_parse_args( $args, $defaults );
102
+
103
+ $this->in_testing = $args['in_testing'];
104
+
105
+ $this->description = $args['description'];
106
+ $this->group = $args['group'];
107
+ $this->stat = $args['stat'];
108
+ $this->force = $args['force'];
109
+ $this->jp_disabled = $args['jp_disabled'];
110
+
111
+ $this->method = $args['method'];
112
+ $this->path = $args['path'];
113
+ $this->path_labels = $args['path_labels'];
114
+
115
+ $this->pass_wpcom_user_details = $args['pass_wpcom_user_details'];
116
+ $this->can_use_user_details_instead_of_blog_membership = $args['can_use_user_details_instead_of_blog_membership'];
117
+
118
+ $this->version = $args['version'];
119
+
120
+ if ( $this->request_format ) {
121
+ $this->request_format = array_filter( array_merge( $this->request_format, $args['request_format'] ) );
122
+ } else {
123
+ $this->request_format = $args['request_format'];
124
+ }
125
+
126
+ if ( $this->response_format ) {
127
+ $this->response_format = array_filter( array_merge( $this->response_format, $args['response_format'] ) );
128
+ } else {
129
+ $this->response_format = $args['response_format'];
130
+ }
131
+
132
+ if ( false === $args['query_parameters'] ) {
133
+ $this->query = array();
134
+ } elseif ( is_array( $args['query_parameters'] ) ) {
135
+ $this->query = array_filter( array_merge( $this->query, $args['query_parameters'] ) );
136
+ }
137
+
138
+ $this->api = WPCOM_JSON_API::init(); // Auto-add to WPCOM_JSON_API
139
+
140
+ /** Example Request/Response ******************************************/
141
+
142
+ // Examples for endpoint documentation request
143
+ $this->example_request = $args['example_request'];
144
+ $this->example_request_data = $args['example_request_data'];
145
+ $this->example_response = $args['example_response'];
146
+
147
+ $this->api->add( $this );
148
+ }
149
+
150
+ // Get all query args. Prefill with defaults
151
+ function query_args( $return_default_values = true, $cast_and_filter = true ) {
152
+ $args = array_intersect_key( $this->api->query, $this->query );
153
+
154
+ if ( !$cast_and_filter ) {
155
+ return $args;
156
+ }
157
+
158
+ return $this->cast_and_filter( $args, $this->query, $return_default_values );
159
+ }
160
+
161
+ // Get POST body data
162
+ function input( $return_default_values = true, $cast_and_filter = true ) {
163
+ $input = trim( $this->api->post_body );
164
+
165
+ switch ( $this->api->content_type ) {
166
+ case 'application/json' :
167
+ case 'application/x-javascript' :
168
+ case 'text/javascript' :
169
+ case 'text/x-javascript' :
170
+ case 'text/x-json' :
171
+ case 'text/json' :
172
+ $return = json_decode( $input );
173
+ if ( function_exists( 'json_last_error' ) ) {
174
+ if ( JSON_ERROR_NONE !== json_last_error() ) {
175
+ return null;
176
+ }
177
+ } else {
178
+ if ( is_null( $return ) && json_encode( null ) !== $input ) {
179
+ return null;
180
+ }
181
+ }
182
+
183
+ if ( is_object( $return ) ) {
184
+ $return = (array) $return;
185
+ }
186
+ break;
187
+ case 'multipart/form-data' :
188
+ $return = array_merge( stripslashes_deep( $_POST ), $_FILES );
189
+ break;
190
+ default :
191
+ wp_parse_str( $input, $return );
192
+ break;
193
+ }
194
+
195
+ if ( !$cast_and_filter ) {
196
+ return $return;
197
+ }
198
+
199
+ return $this->cast_and_filter( $return, $this->request_format, $return_default_values );
200
+ }
201
+
202
+ function cast_and_filter( $data, $documentation, $return_default_values = false, $for_output = false ) {
203
+ $return_as_object = false;
204
+ if ( is_object( $data ) ) {
205
+ $data = (array) $data;
206
+ $return_as_object = true;
207
+ } elseif ( !is_array( $data ) ) {
208
+ return $data;
209
+ }
210
+
211
+ $boolean_arg = array( 'false', 'true' );
212
+ $naeloob_arg = array( 'true', 'false' );
213
+
214
+ $return = array();
215
+
216
+ foreach ( $documentation as $key => $description ) {
217
+ if ( is_array( $description ) ) {
218
+ // String or boolean array keys only
219
+ $whitelist = array_keys( $description );
220
+ if ( isset( $data[$key] ) && isset( $description[$data[$key]] ) ) {
221
+ $return[$key] = (string) $data[$key];
222
+ } elseif ( $return_default_values ) {
223
+ $return[$key] = (string) current( $whitelist );
224
+ } else {
225
+ continue;
226
+ }
227
+
228
+ // Truthiness
229
+ if ( $whitelist === $boolean_arg || $whitelist === $naeloob_arg ) {
230
+ $return[$key] = (bool) WPCOM_JSON_API::is_truthy( $return[$key] );
231
+ }
232
+
233
+ continue;
234
+ }
235
+
236
+ $types = $this->parse_types( $description );
237
+ $type = array_shift( $types );
238
+
239
+ // Explicit default - string and int only for now. Always set these reguardless of $return_default_values
240
+ if ( isset( $type['default'] ) ) {
241
+ if ( !isset( $data[$key] ) ) {
242
+ $data[$key] = $type['default'];
243
+ }
244
+ }
245
+
246
+ if ( !isset( $data[$key] ) ) {
247
+ continue;
248
+ }
249
+
250
+ $this->cast_and_filter_item( $return, $type, $key, $data[$key], $types, $for_output );
251
+ }
252
+
253
+ if ( $return_as_object ) {
254
+ return (object) $return;
255
+ }
256
+
257
+ return $return;
258
+ }
259
+
260
+ /**
261
+ * Casts $value according to $type.
262
+ * Handles fallbacks for certain values of $type when $value is not that $type
263
+ * Currently, only handles fallback between string <-> array (two way), from string -> false (one way), and from object -> false (one way)
264
+ *
265
+ * Handles "child types" - array:URL, object:category
266
+ * array:URL means an array of URLs
267
+ * object:category means a hash of categories
268
+ *
269
+ * Handles object typing - object>post means an object of type post
270
+ */
271
+ function cast_and_filter_item( &$return, $type, $key, $value, $types = array(), $for_output = false ) {
272
+ if ( is_string( $type ) ) {
273
+ $type = compact( 'type' );
274
+ }
275
+
276
+ switch ( $type['type'] ) {
277
+ case 'false' :
278
+ $return[$key] = false;
279
+ break;
280
+ case 'url' :
281
+ $return[$key] = (string) esc_url_raw( $value );
282
+ break;
283
+ case 'string' :
284
+ // Fallback string -> array
285
+ if ( is_array( $value ) ) {
286
+ if ( !empty( $types[0] ) ) {
287
+ $next_type = array_shift( $types );
288
+ return $this->cast_and_filter_item( $return, $next_type, $key, $value, $types, $for_output );
289
+ }
290
+ }
291
+
292
+ // Fallback string -> false
293
+ if ( !is_string( $value ) ) {
294
+ if ( !empty( $types[0] ) && 'false' === $types[0]['type'] ) {
295
+ $next_type = array_shift( $types );
296
+ return $this->cast_and_filter_item( $return, $next_type, $key, $value, $types, $for_output );
297
+ }
298
+ }
299
+ $return[$key] = (string) $value;
300
+ break;
301
+ case 'html' :
302
+ $return[$key] = (string) $value;
303
+ break;
304
+ case 'media' :
305
+ if ( is_array( $value ) ) {
306
+ if ( isset( $value['name'] ) ) {
307
+ // It's a $_FILES array
308
+ // Reformat into array of $_FILES items
309
+
310
+ $files = array();
311
+ foreach ( $value['name'] as $k => $v ) {
312
+ $files[$k] = array();
313
+ foreach ( array_keys( $value ) as $file_key ) {
314
+ $files[$k][$file_key] = $value[$file_key][$k];
315
+ }
316
+ }
317
+
318
+ $return[$key] = $files;
319
+ }
320
+ break;
321
+ } else {
322
+ // no break - treat as 'array'
323
+ }
324
+ // nobreak
325
+ case 'array' :
326
+ // Fallback array -> string
327
+ if ( is_string( $value ) ) {
328
+ if ( !empty( $types[0] ) ) {
329
+ $next_type = array_shift( $types );
330
+ return $this->cast_and_filter_item( $return, $next_type, $key, $value, $types, $for_output );
331
+ }
332
+ }
333
+
334
+ if ( isset( $type['children'] ) ) {
335
+ $children = array();
336
+ foreach ( (array) $value as $k => $child ) {
337
+ $this->cast_and_filter_item( $children, $type['children'], $k, $child, array(), $for_output );
338
+ }
339
+ $return[$key] = (array) $children;
340
+ break;
341
+ }
342
+
343
+ $return[$key] = (array) $value;
344
+ break;
345
+ case 'iso 8601 datetime' :
346
+ case 'datetime' :
347
+ // (string)s
348
+ $dates = $this->parse_date( (string) $value );
349
+ if ( $for_output ) {
350
+ $return[$key] = $this->format_date( $dates[1], $dates[0] );
351
+ } else {
352
+ list( $return[$key], $return["{$key}_gmt"] ) = $dates;
353
+ }
354
+ break;
355
+ case 'float' :
356
+ $return[$key] = (float) $value;
357
+ break;
358
+ case 'int' :
359
+ case 'integer' :
360
+ $return[$key] = (int) $value;
361
+ break;
362
+ case 'bool' :
363
+ case 'boolean' :
364
+ $return[$key] = (bool) WPCOM_JSON_API::is_truthy( $value );
365
+ break;
366
+ case 'object' :
367
+ // Fallback object -> false
368
+ if ( is_scalar( $value ) || is_null( $value ) ) {
369
+ if ( !empty( $types[0] ) && 'false' === $types[0]['type'] ) {
370
+ return $this->cast_and_filter_item( $return, 'false', $key, $value, $types, $for_output );
371
+ }
372
+ }
373
+
374
+ if ( isset( $type['children'] ) ) {
375
+ $children = array();
376
+ foreach ( (array) $value as $k => $child ) {
377
+ $this->cast_and_filter_item( $children, $type['children'], $k, $child, array(), $for_output );
378
+ }
379
+ $return[$key] = (object) $children;
380
+ break;
381
+ }
382
+
383
+ if ( isset( $type['subtype'] ) ) {
384
+ return $this->cast_and_filter_item( $return, $type['subtype'], $key, $value, $types, $for_output );
385
+ }
386
+
387
+ $return[$key] = (object) $value;
388
+ break;
389
+ case 'post' :
390
+ $return[$key] = (object) $this->cast_and_filter( $value, $this->post_object_format, false, $for_output );
391
+ break;
392
+ case 'comment' :
393
+ $return[$key] = (object) $this->cast_and_filter( $value, $this->comment_object_format, false, $for_output );
394
+ break;
395
+ case 'tag' :
396
+ case 'category' :
397
+ $docs = array(
398
+ 'name' => '(string)',
399
+ 'slug' => '(string)',
400
+ 'description' => '(HTML)',
401
+ 'post_count' => '(int)',
402
+ 'meta' => '(object)',
403
+ );
404
+ if ( 'category' === $type ) {
405
+ $docs['parent'] = '(int)';
406
+ }
407
+ $return[$key] = (object) $this->cast_and_filter( $value, $docs, false, $for_output );
408
+ break;
409
+ case 'post_reference' :
410
+ case 'comment_reference' :
411
+ $docs = array(
412
+ 'ID' => '(int)',
413
+ 'type' => '(string)',
414
+ 'link' => '(URL)',
415
+ );
416
+ $return[$key] = (object) $this->cast_and_filter( $value, $docs, false, $for_output );
417
+ break;
418
+ case 'geo' :
419
+ $docs = array(
420
+ 'latitude' => '(float)',
421
+ 'longitude' => '(float)',
422
+ 'address' => '(string)',
423
+ );
424
+ $return[$key] = (object) $this->cast_and_filter( $value, $docs, false, $for_output );
425
+ break;
426
+ case 'author' :
427
+ $docs = array(
428
+ 'ID' => '(int)',
429
+ 'email' => '(string|false)',
430
+ 'name' => '(string)',
431
+ 'URL' => '(URL)',
432
+ 'avatar_URL' => '(URL)',
433
+ 'profile_URL' => '(URL)',
434
+ );
435
+ $return[$key] = (object) $this->cast_and_filter( $value, $docs, false, $for_output );
436
+ break;
437
+ case 'attachment' :
438
+ $docs = array(
439
+ 'ID' => '(int)',
440
+ 'URL' => '(URL)',
441
+ 'guid' => '(string)',
442
+ 'mime_type' => '(string)',
443
+ 'width' => '(int)',
444
+ 'height' => '(int)',
445
+ 'duration' => '(int)',
446
+ );
447
+ $return[$key] = (object) $this->cast_and_filter( $value, apply_filters( 'wpcom_json_api_attachment_cast_and_filter', $docs ), false, $for_output );
448
+ break;
449
+ default :
450
+ trigger_error( "Unknown API casting type {$type['type']}", E_USER_WARNING );
451
+ }
452
+ }
453
+
454
+ function parse_types( $text ) {
455
+ if ( !preg_match( '#^\(([^)]+)\)#', ltrim( $text ), $matches ) ) {
456
+ return 'none';
457
+ }
458
+
459
+ $types = explode( '|', strtolower( $matches[1] ) );
460
+ $return = array();
461
+ foreach ( $types as $type ) {
462
+ foreach ( array( ':' => 'children', '>' => 'subtype', '=' => 'default' ) as $operator => $meaning ) {
463
+ if ( false !== strpos( $type, $operator ) ) {
464
+ $item = explode( $operator, $type, 2 );
465
+ $return[] = array( 'type' => $item[0], $meaning => $item[1] );
466
+ continue 2;
467
+ }
468
+ }
469
+ $return[] = compact( 'type' );
470
+ }
471
+
472
+ return $return;
473
+ }
474
+
475
+ /**
476
+ * Auto generates documentation based on description, method, path, path_labels, and query parameters.
477
+ * Echoes HTML.
478
+ */
479
+ function document( $show_description = true ) {
480
+ $original_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : 'unset';
481
+ unset( $GLOBALS['post'] );
482
+
483
+ $doc = $this->generate_documentation();
484
+
485
+ if ( $show_description ) :
486
+ ?>
487
+ <caption>
488
+ <h1><?php echo wp_kses_post( $doc['method'] ); ?> <?php echo wp_kses_post( $doc['path_labeled'] ); ?></h1>
489
+ <p><?php echo wp_kses_post( $doc['description'] ); ?></p>
490
+ </caption>
491
+
492
+ <?php endif; ?>
493
+
494
+ <section class="resource-url">
495
+ <h2 id="apidoc-resource-url">Resource URL</h2>
496
+ <table class="api-doc api-doc-resource-parameters api-doc-resource">
497
+ <thead>
498
+ <tr>
499
+ <th class="api-index-title" scope="column">Type</th>
500
+ <th class="api-index-title" scope="column">URL and Format</th>
501
+ </tr>
502
+ </thead>
503
+ <tbody>
504
+ <tr class="api-index-item">
505
+ <th scope="row" class="parameter api-index-item-title"><?php echo wp_kses_post( $doc['method'] ); ?></th>
506
+ <td class="type api-index-item-title" style="white-space: nowrap;">https://public-api.wordpress.com/rest/v1<?php echo wp_kses_post( $doc['path_labeled'] ); ?></td>
507
+ </tr>
508
+ </tbody>
509
+ </table>
510
+ </section>
511
+
512
+ <?php
513
+
514
+ foreach ( array(
515
+ 'path' => 'Method Parameters',
516
+ 'query' => 'Query Parameters',
517
+ 'body' => 'Request Parameters',
518
+ 'response' => 'Response Parameters',
519
+ ) as $doc_section_key => $label ) :
520
+ $doc_section = 'response' == $doc_section_key ? $doc['response']['body'] : $doc['request'][$doc_section_key];
521
+ if ( !$doc_section ) {
522
+ continue;
523
+ }
524
+
525
+ $param_label = strtolower( str_replace( ' ', '-', $label ) );
526
+ ?>
527
+
528
+ <section class="<?php echo $param_label; ?>">
529
+
530
+ <h2 id="apidoc-<?php echo esc_attr( $doc_section_key ); ?>"><?php echo wp_kses_post( $label ); ?></h2>
531
+
532
+ <table class="api-doc api-doc-<?php echo $param_label; ?>-parameters api-doc-<?php echo strtolower( str_replace( ' ', '-', $doc['group'] ) ); ?>">
533
+
534
+ <thead>
535
+ <tr>
536
+ <th class="api-index-title" scope="column">Parameter</th>
537
+ <th class="api-index-title" scope="column">Type</th>
538
+ <th class="api-index-title" scope="column">Description</th>
539
+ </tr>
540
+ </thead>
541
+ <tbody>
542
+
543
+ <?php foreach ( $doc_section as $key => $item ) : ?>
544
+
545
+ <tr class="api-index-item">
546
+ <th scope="row" class="parameter api-index-item-title"><?php echo wp_kses_post( $key ); ?></th>
547
+ <td class="type api-index-item-title"><?php echo wp_kses_post( $item['type'] ); // @todo auto-link? ?></td>
548
+ <td class="description api-index-item-body"><?php
549
+
550
+ $this->generate_doc_description( $item['description'] );
551
+
552
+ ?></td>
553
+ </tr>
554
+
555
+ <?php endforeach; ?>
556
+ </tbody>
557
+ </table>
558
+ </section>
559
+ <?php endforeach; ?>
560
+
561
+ <?php
562
+ // If no example was hardcoded in the doc, try to get some
563
+ if ( empty( $this->example_response ) ) {
564
+
565
+ // Examples for endpoint documentation response
566
+ $response_key = 'dev_response_' . $this->version . '_' . $this->method . '_' . sanitize_title( $this->path );
567
+ $response = get_option( $response_key );
568
+
569
+ // Response doesn't exist, so run the request
570
+ if ( empty( $response ) ) {
571
+
572
+ // Only trust GET request
573
+ if ( 'GET' == $this->method ) {
574
+ $response = wp_remote_get( $this->example_request );
575
+ }
576
+
577
+ // Set as false if it's an error
578
+ if ( is_wp_error( $response ) ) {
579
+ $response = false;
580
+ }
581
+
582
+ // Only update the option if there's a result
583
+ if ( !empty( $response ) ) {
584
+ $response = $response['body'];
585
+ update_option( $response_key, $response );
586
+ }
587
+ }
588
+
589
+ // Example response was passed into the constructor via params
590
+ } else {
591
+ $response = $this->example_response;
592
+ }
593
+
594
+ // Wrap the response in a sourcecode shortcode
595
+ if ( !empty( $response ) ) {
596
+ $response = '[sourcecode language="php" wraplines="false" light="true" autolink="false" htmlscript="false"]' . $response . '[/sourcecode]';
597
+ $response = apply_filters( 'the_content', $response );
598
+ $this->example_response = $response;
599
+ }
600
+
601
+ $curl = 'curl';
602
+
603
+ $php_opts = array( 'ignore_errors' => true );
604
+
605
+ if ( 'GET' !== $this->method ) {
606
+ $php_opts['method'] = $this->method;
607
+ }
608
+
609
+ if ( $this->example_request_data ) {
610
+ if ( isset( $this->example_request_data['headers'] ) && is_array( $this->example_request_data['headers'] ) ) {
611
+ $php_opts['header'] = array();
612
+ foreach ( $this->example_request_data['headers'] as $header => $value ) {
613
+ $curl .= " \\\n -H " . escapeshellarg( "$header: $value" );
614
+ $php_opts['header'][] = "$header: $value";
615
+ }
616
+ }
617
+
618
+ if ( isset( $this->example_request_data['body'] ) && is_array( $this->example_request_data['body'] ) ) {
619
+ $php_opts['content'] = $this->example_request_data['body'];
620
+ $php_opts['header'][] = 'Content-Type: application/x-www-form-urlencoded';
621
+ foreach ( $this->example_request_data['body'] as $key => $value ) {
622
+ $curl .= " \\\n --data-urlencode " . escapeshellarg( "$key=$value" );
623
+ }
624
+ }
625
+ }
626
+
627
+ if ( $php_opts ) {
628
+ $php_opts_exported = var_export( array( 'http' => $php_opts ), true );
629
+ if ( !empty( $php_opts['content'] ) ) {
630
+ $content_exported = preg_quote( var_export( $php_opts['content'], true ), '/' );
631
+ $content_exported = '\\s*' . str_replace( "\n", "\n\\s*", $content_exported ) . '\\s*';
632
+ $php_opts_exported = preg_replace_callback( "/$content_exported/", array( $this, 'add_http_build_query_to_php_content_example' ), $php_opts_exported );
633
+ }
634
+ $php = <<<EOPHP
635
+ <?php
636
+
637
+ \$options = $php_opts_exported;
638
+
639
+ \$context = stream_context_create( \$options );
640
+ \$response = file_get_contents(
641
+ '$this->example_request',
642
+ false,
643
+ \$context
644
+ );
645
+ \$response = json_decode( \$response );
646
+
647
+ ?>
648
+ EOPHP;
649
+ } else {
650
+ $php = <<<EOPHP
651
+ <?php
652
+
653
+ \$response = file_get_contents( '$this->example_request' );
654
+ \$response = json_decode( \$response );
655
+
656
+ ?>
657
+ EOPHP;
658
+ }
659
+
660
+ if ( false !== strpos( $curl, "\n" ) ) {
661
+ $curl .= " \\\n";
662
+ }
663
+
664
+ $curl .= ' ' . escapeshellarg( $this->example_request );
665
+
666
+ $curl = '[sourcecode language="bash" wraplines="false" light="true" autolink="false" htmlscript="false"]' . $curl . '[/sourcecode]';
667
+ $curl = apply_filters( 'the_content', $curl );
668
+
669
+ $php = '[sourcecode language="php" wraplines="false" light="true" autolink="false" htmlscript="false"]' . $php . '[/sourcecode]';
670
+ $php = apply_filters( 'the_content', $php );
671
+ ?>
672
+
673
+ <?php if ( ! empty( $this->example_request ) || ! empty( $this->example_request_data ) || ! empty( $this->example_response ) ) : ?>
674
+
675
+ <section class="example-response">
676
+ <h2 id="apidoc-example">Example</h2>
677
+
678
+ <section>
679
+ <h3>cURL</h3>
680
+ <?php echo wp_kses_post( $curl ); ?>
681
+ </section>
682
+
683
+ <section>
684
+ <h3>PHP</h3>
685
+ <?php echo wp_kses_post( $php ); ?>
686
+ </section>
687
+
688
+ <?php if ( ! empty( $this->example_response ) ) : ?>
689
+
690
+ <section>
691
+ <h3>Response Body</h3>
692
+ <?php echo $this->example_response; ?>
693
+ </section>
694
+
695
+ <?php endif; ?>
696
+
697
+ </section>
698
+
699
+ <?php endif; ?>
700
+
701
+ <?php
702
+ if ( 'unset' !== $original_post ) {
703
+ $GLOBALS['post'] = $original_post;
704
+ }
705
+ }
706
+
707
+ function add_http_build_query_to_php_content_example( $matches ) {
708
+ $trimmed_match = ltrim( $matches[0] );
709
+ $pad = substr( $matches[0], 0, -1 * strlen( $trimmed_match ) );
710
+ $pad = ltrim( $pad, ' ' );
711
+ $return = ' ' . str_replace( "\n", "\n ", $matches[0] );
712
+ return " http_build_query({$return}{$pad})";
713
+ }
714
+
715
+ /**
716
+ * Recursively generates the <dl>'s to document item descriptions.
717
+ * Echoes HTML.
718
+ */
719
+ function generate_doc_description( $item ) {
720
+ if ( is_array( $item ) ) : ?>
721
+
722
+ <dl>
723
+ <?php foreach ( $item as $description_key => $description_value ) : ?>
724
+
725
+ <dt><?php echo wp_kses_post( $description_key . ':' ); ?></dt>
726
+ <dd><?php $this->generate_doc_description( $description_value ); ?></dd>
727
+
728
+ <?php endforeach; ?>
729
+
730
+ </dl>
731
+
732
+ <?php
733
+ else :
734
+ echo wp_kses_post( $item );
735
+ endif;
736
+ }
737
+
738
+ /**
739
+ * Auto generates documentation based on description, method, path, path_labels, and query parameters.
740
+ * Echoes HTML.
741
+ */
742
+ function generate_documentation() {
743
+ $format = str_replace( '%d', '%s', $this->path );
744
+ $path_labeled = vsprintf( $format, array_keys( $this->path_labels ) );
745
+ $boolean_arg = array( 'false', 'true' );
746
+ $naeloob_arg = array( 'true', 'false' );
747
+
748
+ $doc = array(
749
+ 'description' => $this->description,
750
+ 'method' => $this->method,
751
+ 'path_format' => $this->path,
752
+ 'path_labeled' => $path_labeled,
753
+ 'group' => $this->group,
754
+ 'request' => array(
755
+ 'path' => array(),
756
+ 'query' => array(),
757
+ 'body' => array(),
758
+ ),
759
+ 'response' => array(
760
+ 'body' => array(),
761
+ )
762
+ );
763
+
764
+ foreach ( array( 'path_labels' => 'path', 'query' => 'query', 'request_format' => 'body', 'response_format' => 'body' ) as $_property => $doc_item ) {
765
+ foreach ( $this->$_property as $key => $description ) {
766
+ if ( is_array( $description ) ) {
767
+ $description_keys = array_keys( $description );
768
+ if ( $boolean_arg === $description_keys || $naeloob_arg === $description_keys ) {
769
+ $type = '(bool)';
770
+ } else {
771
+ $type = '(string)';
772
+ }
773
+
774
+ if ( 'response_format' != $_property ) {
775
+ // hack - don't show "(default)" in response format
776
+ reset( $description );
777
+ $description_key = key( $description );
778
+ $description[$description_key] = "(default) {$description[$description_key]}";
779
+ }
780
+ } else {
781
+ $types = $this->parse_types( $description );
782
+ $type = array();
783
+ $default = '';
784
+
785
+ foreach ( $types as $type_array ) {
786
+ $type[] = $type_array['type'];
787
+ if ( isset( $type_array['default'] ) ) {
788
+ $default = $type_array['default'];
789
+ if ( 'string' === $type_array['type'] ) {
790
+ $default = "'$default'";
791
+ }
792
+ }
793
+ }
794
+ $type = '(' . join( '|', $type ) . ')';
795
+ $noop = ''; // skip an index in list below
796
+ list( $noop, $description ) = explode( ')', $description, 2 );
797
+ $description = trim( $description );
798
+ if ( $default ) {
799
+ $description .= " Default: $default.";
800
+ }
801
+ }
802
+
803
+ $item = compact( 'type', 'description' );
804
+
805
+ if ( 'response_format' == $_property ) {
806
+ $doc['response'][$doc_item][$key] = $item;
807
+ } else {
808
+ $doc['request'][$doc_item][$key] = $item;
809
+ }
810
+ }
811
+ }
812
+
813
+ return $doc;
814
+ }
815
+
816
+ function user_can_view_post( $post_id ) {
817
+ $post = get_post( $post_id );
818
+ if ( !$post || is_wp_error( $post ) ) {
819
+ return false;
820
+ }
821
+
822
+ $post_status_obj = get_post_status_object( $post->post_status );
823
+ if ( !$post_status_obj->public ) {
824
+ if ( is_user_logged_in() ) {
825
+ if ( $post_status_obj->protected ) {
826
+ if ( !current_user_can( 'edit_post', $post->ID ) ) {
827
+ return new WP_Error( 'unauthorized', 'User cannot view post', 403 );
828
+ }
829
+ } elseif ( $post_status_obj->private ) {
830
+ if ( !current_user_can( 'read_post', $post->ID ) ) {
831
+ return new WP_Error( 'unauthorized', 'User cannot view post', 403 );
832
+ }
833
+ } elseif ( 'trash' === $post->post_status ) {
834
+ if ( !current_user_can( 'edit_post', $post->ID ) ) {
835
+ return new WP_Error( 'unauthorized', 'User cannot view post', 403 );
836
+ }
837
+ } else {
838
+ return new WP_Error( 'unauthorized', 'User cannot view post', 403 );
839
+ }
840
+ } else {
841
+ return new WP_Error( 'unauthorized', 'User cannot view post', 403 );
842
+ }
843
+ }
844
+
845
+ if ( -1 == get_option( 'blog_public' ) && !current_user_can( 'read_post', $post->ID ) ) {
846
+ return new WP_Error( 'unauthorized', 'User cannot view post', 403 );
847
+ }
848
+
849
+ if ( strlen( $post->post_password ) && !current_user_can( 'edit_post', $post->ID ) ) {
850
+ return new WP_Error( 'unauthorized', 'User cannot view password protected post', 403 );
851
+ }
852
+
853
+ return true;
854
+ }
855
+
856
+ /**
857
+ * Returns author object.
858
+ *
859
+ * @param $author user ID, user row, WP_User object, comment row, post row
860
+ * @param $show_email output the author's email address?
861
+ *
862
+ * @return (object)
863
+ */
864
+ function get_author( $author, $show_email = false ) {
865
+ if ( isset( $author->comment_author_email ) && !$author->user_id ) {
866
+ $ID = 0;
867
+ $email = $author->comment_author_email;
868
+ $name = $author->comment_author;
869
+ $URL = $author->comment_author_url;
870
+ $profile_URL = 'http://en.gravatar.com/' . md5( strtolower( trim( $email ) ) );
871
+ } else {
872
+ if ( isset( $author->post_author ) ) {
873
+ $author = $author->post_author;
874
+ } elseif ( isset( $author->user_id ) && $author->user_id ) {
875
+ $author = $author->user_id;
876
+ } elseif ( isset( $author->user_email ) ) {
877
+ $author = $author->ID;
878
+ }
879
+
880
+ $user = get_user_by( 'id', $author );
881
+ if ( !$user || is_wp_error( $user ) ) {
882
+ trigger_error( 'Unknown user', E_USER_WARNING );
883
+ return null;
884
+ }
885
+
886
+ $ID = $user->ID;
887
+ $email = $user->user_email;
888
+ $name = $user->display_name;
889
+ $URL = $user->user_url;
890
+ if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
891
+ $profile_URL = "http://en.gravatar.com/{$user->user_login}";
892
+ } else {
893
+ $profile_URL = 'http://en.gravatar.com/' . md5( strtolower( trim( $email ) ) );
894
+ }
895
+ }
896
+
897
+ $avatar_URL = $this->api->get_avatar_url( $email );
898
+
899
+ $email = $show_email ? (string) $email : false;
900
+
901
+ return (object) array(
902
+ 'ID' => (int) $ID,
903
+ 'email' => $email, // (string|bool)
904
+ 'name' => (string) $name,
905
+ 'URL' => (string) esc_url_raw( $URL ),
906
+ 'avatar_URL' => (string) esc_url_raw( $avatar_URL ),
907
+ 'profile_URL' => (string) esc_url_raw( $profile_URL ),
908
+ );
909
+ }
910
+
911
+ function get_taxonomy( $taxonomy_id, $taxonomy_type, $context ) {
912
+
913
+ $taxonomy = get_term_by( 'slug', $taxonomy_id, $taxonomy_type );
914
+ /// keep updating this function
915
+ if ( !$taxonomy || is_wp_error( $taxonomy ) ) {
916
+ return new WP_Error( 'unknown_taxonomy', 'Unknown taxonomy', 404 );
917
+ }
918
+
919
+ // Permissions
920
+ switch ( $context ) {
921
+ case 'edit' :
922
+ $tax = get_taxonomy( $taxonomy_type );
923
+ if ( !current_user_can( $tax->cap->edit_terms ) )
924
+ return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
925
+ break;
926
+ case 'display' :
927
+ if ( -1 == get_option( 'blog_public' ) ) {
928
+ return new WP_Error( 'unauthorized', 'User cannot view taxonomy', 403 );
929
+ }
930
+ break;
931
+ default :
932
+ return new WP_Error( 'invalid_context', 'Invalid API CONTEXT', 400 );
933
+ }
934
+
935
+ $response = array();
936
+ $response['name'] = (string) $taxonomy->name;
937
+ $response['slug'] = (string) $taxonomy_id;
938
+ $response['description'] = (string) $taxonomy->description;
939
+ $response['post_count'] = (int) $taxonomy->count;
940
+
941
+ if ( 'category' == $taxonomy_type )
942
+ $response['parent'] = (int) $taxonomy->parent;
943
+
944
+ $response['meta'] = (object) array(
945
+ 'links' => (object) array(
946
+ 'self' => (string) $this->get_taxonomy_link( $this->api->get_blog_id_for_output(), $taxonomy_id, $taxonomy_type ),
947
+ 'help' => (string) $this->get_taxonomy_link( $this->api->get_blog_id_for_output(), $taxonomy_id, $taxonomy_type, 'help' ),
948
+ 'site' => (string) $this->get_site_link( $this->api->get_blog_id_for_output() ),
949
+ ),
950
+ );
951
+
952
+ return (object) $response;
953
+ }
954
+
955
+ /**
956
+ * Returns ISO 8601 formatted datetime: 2011-12-08T01:15:36-08:00
957
+ *
958
+ * @param $date_gmt (string) GMT datetime string.
959
+ * @param $date (string) Optional. Used to calculate the offset from GMT.
960
+ *
961
+ * @return string
962
+ */
963
+ function format_date( $date_gmt, $date = null ) {
964
+ $timestamp_gmt = strtotime( "$date_gmt+0000" );
965
+ if ( null === $date ) {
966
+ $timestamp = $timestamp_gmt;
967
+ $hours = $minutes = $west = 0;
968
+ } else {
969
+ $timestamp = strtotime( "$date+0000" );
970
+ $offset = $timestamp - $timestamp_gmt;
971
+ $west = $offset < 0;
972
+ $offset = abs( $offset );
973
+ $hours = (int) floor( $offset / 3600 );
974
+ $offset -= $hours * 3600;
975
+ $minutes = (int) floor( $offset / 60 );
976
+ }
977
+
978
+ return (string) gmdate( 'Y-m-d\\TH:i:s', $timestamp ) . sprintf( '%s%02d:%02d', $west ? '-' : '+', $hours, $minutes );
979
+ }
980
+
981
+ /**
982
+ * @param datetime string
983
+ *
984
+ * @return array( $local_time_string, $gmt_time_string )
985
+ */
986
+ function parse_date( $date_string ) {
987
+ $time = strtotime( $date_string );
988
+ if ( !$time ) {
989
+ $time = time();
990
+ }
991
+
992
+ $datetime = new DateTime( "@$time" );
993
+ $gmt = $datetime->format( 'Y-m-d H:i:s' );
994
+ $timezone_string = get_option( 'timezone_string' );
995
+ if ( $timezone_string ) {
996
+ $tz = timezone_open( $timezone_string );
997
+ if ( $tz ) {
998
+ $datetime->setTimezone( $tz );
999
+ $local = $datetime->format( 'Y-m-d H:i:s' );
1000
+ return array( (string) $local, (string) $gmt );
1001
+ }
1002
+ }
1003
+
1004
+ $gmt_offset = get_option( 'gmt_offset' );
1005
+ $local_time = $time + $gmt_offset * 3600;
1006
+
1007
+ $date = getdate( ( int ) $local_time );
1008
+ $datetime->setDate( $date['year'], $date['mon'], $date['mday'] );
1009
+ $datetime->setTime( $date['hours'], $date['minutes'], $date['seconds'] );
1010
+
1011
+ $local = $datetime->format( 'Y-m-d H:i:s' );
1012
+ return array( (string) $local, (string) $gmt );
1013
+ }
1014
+
1015
+ function get_link() {
1016
+ $args = func_get_args();
1017
+ $format = array_shift( $args );
1018
+ array_unshift( $args, $this->api->public_api_scheme, WPCOM_JSON_API__BASE );
1019
+ $path = array_pop( $args );
1020
+ if ( $path ) {
1021
+ $path = '/' . ltrim( $path, '/' );
1022
+ }
1023
+ $args[] = $path;
1024
+
1025
+ // http, WPCOM_JSON_API__BASE, ... , path
1026
+ // %s , %s , $format, %s
1027
+ return esc_url_raw( vsprintf( "%s://%s$format%s", $args ) );
1028
+ }
1029
+
1030
+ function get_me_link( $path = '' ) {
1031
+ return $this->get_link( '/me', $path );
1032
+ }
1033
+
1034
+ function get_taxonomy_link( $blog_id, $taxonomy_id, $taxonomy_type, $path = '' ) {
1035
+ if ( 'category' == $taxonomy_type )
1036
+ return $this->get_link( '/sites/%d/categories/slug:%s', $blog_id, $taxonomy_id, $path );
1037
+ else
1038
+ return $this->get_link( '/sites/%d/tags/slug:%s', $blog_id, $taxonomy_id, $path );
1039
+ }
1040
+
1041
+ function get_site_link( $blog_id, $path = '' ) {
1042
+ return $this->get_link( '/sites/%d', $blog_id, $path );
1043
+ }
1044
+
1045
+ function get_post_link( $blog_id, $post_id, $path = '' ) {
1046
+ return $this->get_link( '/sites/%d/posts/%d', $blog_id, $post_id, $path );
1047
+ }
1048
+
1049
+ function get_comment_link( $blog_id, $comment_id, $path = '' ) {
1050
+ return $this->get_link( '/sites/%d/comments/%d', $blog_id, $comment_id, $path );
1051
+ }
1052
+
1053
+ /**
1054
+ * Return endpoint response
1055
+ *
1056
+ * @param ... determined by ->$path
1057
+ *
1058
+ * @return
1059
+ * falsy: HTTP 500, no response body
1060
+ * WP_Error( $error_code, $error_message, $http_status_code ): HTTP $status_code, json_encode( array( 'error' => $error_code, 'message' => $error_message ) ) response body
1061
+ * $data: HTTP 200, json_encode( $data ) response body
1062
+ */
1063
+ abstract function callback( $path = '' );
1064
+ }
1065
+
1066
+ abstract class WPCOM_JSON_API_Post_Endpoint extends WPCOM_JSON_API_Endpoint {
1067
+ var $post_object_format = array(
1068
+ // explicitly document and cast all output
1069
+ 'ID' => '(int) The post ID.',
1070
+ 'author' => '(object>author) The author of the post.',
1071
+ 'date' => "(ISO 8601 datetime) The post's creation time.",
1072
+ 'modified' => "(ISO 8601 datetime) The post's creation time.",
1073
+ 'title' => '(HTML) <code>context</code> dependent.',
1074
+ 'URL' => '(URL) The full permalink URL to the post.',
1075
+ 'short_URL' => '(URL) The wp.me short URL.',
1076
+ 'content' => '(HTML) <code>context</code> dependent.',
1077
+ 'excerpt' => '(HTML) <code>context</code> dependent.',
1078
+ 'slug' => '(string) The name (slug) for your post, used in URLs.',
1079
+ 'status' => array(
1080
+ 'publish' => 'The post is published.',
1081
+ 'draft' => 'The post is saved as a draft.',
1082
+ 'pending' => 'The post is pending editorial approval.',
1083
+ 'future' => 'The post is scheduled for future publishing.',
1084
+ 'trash' => 'The post is in the trash.',
1085
+ ),
1086
+ 'password' => '(string) The plaintext password protecting the post, or, more likely, the empty string if the post is not password protected.',
1087
+ 'parent' => "(object>post_reference|false) A reference to the post's parent, if it has one.",
1088
+ 'type' => array(
1089
+ 'post' => 'A blog post.',
1090
+ 'page' => 'A page.',
1091
+ ),
1092
+ 'comments_open' => '(bool) Is the post open for comments?',
1093
+ 'pings_open' => '(bool) Is the post open for pingbacks, trackbacks?',
1094
+ 'comment_count' => '(int) The number of comments for this post.',
1095
+ 'like_count' => '(int) The number of likes for this post.',
1096
+ 'featured_image' => '(URL) The URL to the featured image for this post if it has one.',
1097
+ 'format' => array(), // see constructor
1098
+ 'geo' => '(object>geo|false)',
1099
+ 'publicize_URLs' => '(array:URL) Array of Twitter and Facebook URLs published by this post.',
1100
+ 'tags' => '(object:tag) Hash of tags (keyed by tag name) applied to the post.',
1101
+ 'categories' => '(object:category) Hash of categories (keyed by category name) applied to the post.',
1102
+ 'attachments' => '(object:attachment) Hash of post attachments (keyed by attachment ID).',
1103
+ 'meta' => '(object) Meta data',
1104
+ );
1105
+
1106
+ // var $response_format =& $this->post_object_format;
1107
+
1108
+ function __construct( $args ) {
1109
+ if ( is_array( $this->post_object_format ) && isset( $this->post_object_format['format'] ) ) {
1110
+ $this->post_object_format['format'] = get_post_format_strings();
1111
+ }
1112
+ if ( !$this->response_format ) {
1113
+ $this->response_format =& $this->post_object_format;
1114
+ }
1115
+ parent::__construct( $args );
1116
+ }
1117
+
1118
+ function the_password_form() {
1119
+ return __( 'This post is password protected.', 'jetpack' );
1120
+ }
1121
+
1122
+ function get_post_by( $field, $post_id, $context = 'display' ) {
1123
+ global $blog_id;
1124
+
1125
+ if ( defined( 'GEO_LOCATION__CLASS' ) && class_exists( GEO_LOCATION__CLASS ) ) {
1126
+ $geo = call_user_func( array( GEO_LOCATION__CLASS, 'init' ) );
1127
+ } else {
1128
+ $geo = false;
1129
+ }
1130
+
1131
+ if ( 'display' == $context ) {
1132
+ $args = $this->query_args();
1133
+ if ( isset( $args['content_width'] ) && $args['content_width'] ) {
1134
+ $GLOBALS['content_width'] = (int) $args['content_width'];
1135
+ }
1136
+ }
1137
+
1138
+ if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'wp-windows8' ) ) {
1139
+ remove_shortcode( 'gallery', 'gallery_shortcode' );
1140
+ add_shortcode( 'gallery', array( &$this, 'win8_gallery_shortcode' ) );
1141
+ }
1142
+
1143
+ switch ( $field ) {
1144
+ case 'name' :
1145
+ $post_id = sanitize_title( $post_id );
1146
+ if ( !$post_id ) {
1147
+ return new WP_Error( 'invalid_post', 'Invalid post', 400 );
1148
+ }
1149
+
1150
+ $posts = get_posts( array( 'name' => $post_id ) );
1151
+ if ( !$posts || !isset( $posts[0]->ID ) || !$posts[0]->ID ) {
1152
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
1153
+ }
1154
+
1155
+ $post_id = (int) $posts[0]->ID;
1156
+ break;
1157
+ default :
1158
+ $post_id = (int) $post_id;
1159
+ break;
1160
+ }
1161
+
1162
+ $post = get_post( $post_id );
1163
+ if ( !$post || is_wp_error( $post ) ) {
1164
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
1165
+ }
1166
+
1167
+ $types = array( 'post', 'page' );
1168
+ if ( !in_array( $post->post_type, $types ) ) {
1169
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
1170
+ }
1171
+
1172
+ // Permissions
1173
+ switch ( $context ) {
1174
+ case 'edit' :
1175
+ if ( !current_user_can( 'edit_post', $post->ID ) ) {
1176
+ return new WP_Error( 'unauthorized', 'User cannot edit post', 403 );
1177
+ }
1178
+ break;
1179
+ case 'display' :
1180
+ break;
1181
+ default :
1182
+ return new WP_Error( 'invalid_context', 'Invalid API CONTEXT', 400 );
1183
+ }
1184
+
1185
+ $can_view = $this->user_can_view_post( $post->ID );
1186
+ if ( !$can_view || is_wp_error( $can_view ) ) {
1187
+ return $can_view;
1188
+ }
1189
+
1190
+ // Re-get post according to the correct $context
1191
+ $post = get_post( $post->ID, OBJECT, $context );
1192
+ $GLOBALS['post'] = $post;
1193
+
1194
+ if ( 'display' == $context ) {
1195
+ setup_postdata( $post );
1196
+ }
1197
+
1198
+ $response = array();
1199
+ foreach ( array_keys( $this->post_object_format ) as $key ) {
1200
+ switch ( $key ) {
1201
+ case 'ID' :
1202
+ // explicitly cast all output
1203
+ $response[$key] = (int) $post->ID;
1204
+ break;
1205
+ case 'author' :
1206
+ $response[$key] = (object) $this->get_author( $post, 'edit' === $context && current_user_can( 'edit_post', $post->ID ) );
1207
+ break;
1208
+ case 'date' :
1209
+ $response[$key] = (string) $this->format_date( $post->post_date_gmt, $post->post_date );
1210
+ break;
1211
+ case 'modified' :
1212
+ $response[$key] = (string) $this->format_date( $post->post_modified_gmt, $post->post_modified );
1213
+ break;
1214
+ case 'title' :
1215
+ if ( 'display' == $context ) {
1216
+ $response[$key] = (string) get_the_title( $post->ID );
1217
+ } else {
1218
+ $response[$key] = (string) $post->post_title;
1219
+ }
1220
+ break;
1221
+ case 'URL' :
1222
+ $response[$key] = (string) esc_url_raw( get_permalink( $post->ID ) );
1223
+ break;
1224
+ case 'short_URL' :
1225
+ $response[$key] = (string) esc_url_raw( wp_get_shortlink( $post->ID ) );
1226
+ break;
1227
+ case 'content' :
1228
+ if ( 'display' == $context ) {
1229
+ add_filter( 'the_password_form', array( $this, 'the_password_form' ) );
1230
+ $response[$key] = (string) $this->get_the_post_content_for_display();
1231
+ remove_filter( 'the_password_form', array( $this, 'the_password_form' ) );
1232
+ } else {
1233
+ $response[$key] = (string) $post->post_content;
1234
+ }
1235
+ break;
1236
+ case 'excerpt' :
1237
+ if ( 'display' == $context ) {
1238
+ add_filter( 'the_password_form', array( $this, 'the_password_form' ) );
1239
+ ob_start();
1240
+ the_excerpt();
1241
+ $response[$key] = (string) ob_get_clean();
1242
+ remove_filter( 'the_password_form', array( $this, 'the_password_form' ) );
1243
+ } else {
1244
+ $response[$key] = (string) $post->post_excerpt;
1245
+ }
1246
+ break;
1247
+ case 'status' :
1248
+ $response[$key] = (string) get_post_status( $post->ID );
1249
+ break;
1250
+ case 'slug' :
1251
+ $response[$key] = (string) $post->post_name;
1252
+ break;
1253
+ case 'password' :
1254
+ $response[$key] = (string) $post->post_password;
1255
+ break;
1256
+ case 'parent' : // (object|false)
1257
+ if ( $post->post_parent ) {
1258
+ $parent = get_post( $post->post_parent );
1259
+ $response[$key] = (object) array(
1260
+ 'ID' => (int) $parent->ID,
1261
+ 'type' => (string) $parent->post_type,
1262
+ 'link' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $parent->ID ),
1263
+ );
1264
+ } else {
1265
+ $response[$key] = false;
1266
+ }
1267
+ break;
1268
+ case 'type' :
1269
+ $response[$key] = (string) $post->post_type;
1270
+ break;
1271
+ case 'comments_open' :
1272
+ $response[$key] = (bool) comments_open( $post->ID );
1273
+ break;
1274
+ case 'pings_open' :
1275
+ $response[$key] = (bool) pings_open( $post->ID );
1276
+ break;
1277
+ case 'comment_count' :
1278
+ $response[$key] = (int) $post->comment_count;
1279
+ break;
1280
+ case 'like_count' :
1281
+ $response[$key] = (int) $this->api->post_like_count( array( 'post_id' => $post->ID, 'blog_id' => $blog_id ) );
1282
+ break;
1283
+ case 'featured_image' :
1284
+ $image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' );
1285
+ if ( is_array( $image_attributes ) && isset( $image_attributes[0] ) )
1286
+ $response[$key] = (string) $image_attributes[0];
1287
+ else
1288
+ $response[$key] = '';
1289
+ break;
1290
+ case 'format' :
1291
+ $response[$key] = (string) get_post_format( $post->ID );
1292
+ if ( !$response[$key] ) {
1293
+ $response[$key] = 'standard';
1294
+ }
1295
+ break;
1296
+ case 'geo' : // (object|false)
1297
+ if ( !$geo ) {
1298
+ $response[$key] = false;
1299
+ } else {
1300
+ $geo_data = $geo->get_geo( 'post', $post->ID );
1301
+ $response[$key] = false;
1302
+ if ( $geo_data ) {
1303
+ $geo_data = array_intersect_key( $geo_data, array( 'latitude' => true, 'longitude' => true, 'address' => true, 'public' => true ) );
1304
+ if ( $geo_data ) {
1305
+ $response[$key] = (object) array(
1306
+ 'latitude' => isset( $geo_data['latitude'] ) ? (float) $geo_data['latitude'] : 0,
1307
+ 'longitude' => isset( $geo_data['longitude'] ) ? (float) $geo_data['longitude'] : 0,
1308
+ 'address' => isset( $geo_data['address'] ) ? (string) $geo_data['address'] : '',
1309
+ );
1310
+ } else {
1311
+ $response[$key] = false;
1312
+ }
1313
+ // Private
1314
+ if ( !isset( $geo_data['public'] ) || !$geo_data['public'] ) {
1315
+ if ( 'edit' !== $context || !current_user_can( 'edit_post', $post->ID ) ) {
1316
+ // user can't access
1317
+ $response[$key] = false;
1318
+ }
1319
+ }
1320
+ }
1321
+ }
1322
+ break;
1323
+ case 'publicize_URLs' :
1324
+ $publicize_URLs = array();
1325
+ $publicize = get_post_meta( $post->ID, 'publicize_results', true );
1326
+ if ( $publicize ) {
1327
+ foreach ( $publicize as $service => $data ) {
1328
+ switch ( $service ) {
1329
+ case 'twitter' :
1330
+ foreach ( $data as $datum ) {
1331
+ $publicize_URLs[] = esc_url_raw( "https://twitter.com/{$datum['user_id']}/status/{$datum['post_id']}" );
1332
+ }
1333
+ break;
1334
+ case 'fb' :
1335
+ foreach ( $data as $datum ) {
1336
+ $publicize_URLs[] = esc_url_raw( "https://www.facebook.com/permalink.php?story_fbid={$datum['post_id']}&id={$datum['user_id']}" );
1337
+ }
1338
+ break;
1339
+ }
1340
+ }
1341
+ }
1342
+ $response[$key] = (array) $publicize_URLs;
1343
+ break;
1344
+ case 'tags' :
1345
+ $response[$key] = array();
1346
+ $terms = wp_get_post_tags( $post->ID );
1347
+ foreach ( $terms as $term ) {
1348
+ if ( !empty( $term->name ) ) {
1349
+ $response[$key][$term->name] = $this->get_taxonomy( $term->slug, 'post_tag', $context );
1350
+ }
1351
+ }
1352
+ $response[$key] = (object) $response[$key];
1353
+ break;
1354
+ case 'categories':
1355
+ $response[$key] = array();
1356
+ $terms = wp_get_post_categories( $post->ID );
1357
+ foreach ( $terms as $term ) {
1358
+ $category = $taxonomy = get_term_by( 'id', $term, 'category' );
1359
+ if ( !empty( $category->name ) ) {
1360
+ $response[$key][$category->name] = $this->get_taxonomy( $category->slug, 'category', $context );
1361
+ }
1362
+ }
1363
+ $response[$key] = (object) $response[$key];
1364
+ break;
1365
+ case 'attachments':
1366
+ $response[$key] = array();
1367
+ $_attachments = get_posts( array( 'post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment' ) );
1368
+ foreach ( $_attachments as $attachment ) {
1369
+ $response[$key][$attachment->ID] = $this->get_attachment( $attachment );
1370
+ }
1371
+ $response[$key] = (object) $response[$key];
1372
+ break;
1373
+ case 'meta' :
1374
+ $response[$key] = (object) array(
1375
+ 'links' => (object) array(
1376
+ 'self' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $post->ID ),
1377
+ 'help' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $post->ID, 'help' ),
1378
+ 'site' => (string) $this->get_site_link( $this->api->get_blog_id_for_output() ),
1379
+ // 'author' => (string) $this->get_user_link( $post->post_author ),
1380
+ // 'via' => (string) $this->get_post_link( $reblog_origin_blog_id, $reblog_origin_post_id ),
1381
+ 'replies' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $post->ID, 'replies/' ),
1382
+ 'likes' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $post->ID, 'likes/' ),
1383
+ ),
1384
+ );
1385
+ break;
1386
+ }
1387
+ }
1388
+
1389
+ unset( $GLOBALS['post'] );
1390
+ return $response;
1391
+ }
1392
+
1393
+ // No Blog ID parameter. No Post ID parameter. Depends on globals.
1394
+ // Expects setup_postdata() to already have been run
1395
+ function get_the_post_content_for_display() {
1396
+ global $pages, $page;
1397
+
1398
+ $old_pages = $pages;
1399
+ $old_page = $page;
1400
+
1401
+ $content = join( "\n\n", $pages );
1402
+ $content = preg_replace( '/<!--more(.*?)?-->/', '', $content );
1403
+ $pages = array( $content );
1404
+ $page = 1;
1405
+
1406
+ ob_start();
1407
+ the_content();
1408
+ $return = ob_get_clean();
1409
+
1410
+ $pages = $old_pages;
1411
+ $page = $old_page;
1412
+
1413
+ return $return;
1414
+ }
1415
+
1416
+ function get_blog_post( $blog_id, $post_id, $context = 'display' ) {
1417
+ $blog_id = $this->api->get_blog_id( $blog_id );
1418
+ if ( !$blog_id || is_wp_error( $blog_id ) ) {
1419
+ return $blog_id;
1420
+ }
1421
+ switch_to_blog( $blog_id );
1422
+ $post = $this->get_post_by( 'ID', $post_id, $context );
1423
+ restore_current_blog();
1424
+ return $post;
1425
+ }
1426
+
1427
+ function win8_gallery_shortcode( $attr ) {
1428
+ global $post;
1429
+
1430
+ static $instance = 0;
1431
+ $instance++;
1432
+
1433
+ $output = '';
1434
+
1435
+ // We're trusting author input, so let's at least make sure it looks like a valid orderby statement
1436
+ if ( isset( $attr['orderby'] ) ) {
1437
+ $attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
1438
+ if ( !$attr['orderby'] )
1439
+ unset( $attr['orderby'] );
1440
+ }
1441
+
1442
+ extract( shortcode_atts( array(
1443
+ 'order' => 'ASC',
1444
+ 'orderby' => 'menu_order ID',
1445
+ 'id' => $post->ID,
1446
+ 'include' => '',
1447
+ 'exclude' => '',
1448
+ 'slideshow' => false
1449
+ ), $attr ) );
1450
+
1451
+ // Custom image size and always use it
1452
+ add_image_size( 'win8app-column', 480 );
1453
+ $size = 'win8app-column';
1454
+
1455
+ $id = intval( $id );
1456
+ if ( 'RAND' == $order )
1457
+ $orderby = 'none';
1458
+
1459
+ if ( !empty( $include ) ) {
1460
+ $include = preg_replace( '/[^0-9,]+/', '', $include );
1461
+ $_attachments = get_posts( array( 'include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby ) );
1462
+ $attachments = array();
1463
+ foreach ( $_attachments as $key => $val ) {
1464
+ $attachments[$val->ID] = $_attachments[$key];
1465
+ }
1466
+ } elseif ( !empty( $exclude ) ) {
1467
+ $exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
1468
+ $attachments = get_children( array( 'post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby ) );
1469
+ } else {
1470
+ $attachments = get_children( array( 'post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby ) );
1471
+ }
1472
+
1473
+ if ( ! empty( $attachments ) ) {
1474
+ foreach ( $attachments as $id => $attachment ) {
1475
+ $link = isset( $attr['link'] ) && 'file' == $attr['link'] ? wp_get_attachment_link( $id, $size, false, false ) : wp_get_attachment_link( $id, $size, true, false );
1476
+
1477
+ if ( $captiontag && trim($attachment->post_excerpt) ) {
1478
+ $output .= "<div class='wp-caption aligncenter'>$link
1479
+ <p class='wp-caption-text'>" . wptexturize($attachment->post_excerpt) . "</p>
1480
+ </div>";
1481
+ } else {
1482
+ $output .= $link . ' ';
1483
+ }
1484
+ }
1485
+ }
1486
+ }
1487
+
1488
+ /**
1489
+ * Returns attachment object.
1490
+ *
1491
+ * @param $attachment attachment row
1492
+ *
1493
+ * @return (object)
1494
+ */
1495
+ function get_attachment( $attachment ) {
1496
+ $metadata = wp_get_attachment_metadata( $attachment->ID );
1497
+
1498
+ $result = array(
1499
+ 'ID' => (int) $attachment->ID,
1500
+ 'URL' => (string) wp_get_attachment_url( $attachment->ID ),
1501
+ 'guid' => (string) $attachment->guid,
1502
+ 'mime_type' => (string) $attachment->post_mime_type,
1503
+ 'width' => (int) $metadata['width'],
1504
+ 'height' => (int) $metadata['height'],
1505
+ );
1506
+
1507
+ if ( isset( $metadata['duration'] ) ) {
1508
+ $result['duration'] = (int) $metadata['duration'];
1509
+ }
1510
+
1511
+ return (object) apply_filters( 'get_attachment', $result );
1512
+ }
1513
+ }
1514
+
1515
+ class WPCOM_JSON_API_Get_Post_Endpoint extends WPCOM_JSON_API_Post_Endpoint {
1516
+ // /sites/%s/posts/%d -> $blog_id, $post_id
1517
+ // /sites/%s/posts/name:%s -> $blog_id, $post_id // not documented
1518
+ // /sites/%s/posts/slug:%s -> $blog_id, $post_id
1519
+ function callback( $path = '', $blog_id = 0, $post_id = 0 ) {
1520
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
1521
+ if ( is_wp_error( $blog_id ) ) {
1522
+ return $blog_id;
1523
+ }
1524
+
1525
+ $args = $this->query_args();
1526
+
1527
+ if ( false === strpos( $path, '/posts/slug:' ) && false === strpos( $path, '/posts/name:' ) ) {
1528
+ $get_by = 'ID';
1529
+ } else {
1530
+ $get_by = 'name';
1531
+ }
1532
+
1533
+ $return = $this->get_post_by( $get_by, $post_id, $args['context'] );
1534
+ if ( !$return || is_wp_error( $return ) ) {
1535
+ return $return;
1536
+ }
1537
+
1538
+ do_action( 'wpcom_json_api_objects', 'posts' );
1539
+
1540
+ return $return;
1541
+ }
1542
+ }
1543
+
1544
+ class WPCOM_JSON_API_List_Posts_Endpoint extends WPCOM_JSON_API_Post_Endpoint {
1545
+ var $date_range = array();
1546
+
1547
+ var $response_format = array(
1548
+ 'found' => '(int) The total number of posts found that match the request (ignoring limits, offsets, and pagination).',
1549
+ 'posts' => '(array:post) An array of post objects.',
1550
+ );
1551
+
1552
+ // /sites/%s/posts/ -> $blog_id
1553
+ function callback( $path = '', $blog_id = 0 ) {
1554
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
1555
+ if ( is_wp_error( $blog_id ) ) {
1556
+ return $blog_id;
1557
+ }
1558
+
1559
+ $args = $this->query_args();
1560
+
1561
+ if ( $args['number'] < 1 ) {
1562
+ $args['number'] = 20;
1563
+ } elseif ( 100 < $args['number'] ) {
1564
+ return new WP_Error( 'invalid_number', 'The NUMBER parameter must be less than or equal to 100.', 400 );
1565
+ }
1566
+
1567
+ $query = array(
1568
+ 'posts_per_page' => $args['number'],
1569
+ 'order' => $args['order'],
1570
+ 'orderby' => $args['order_by'],
1571
+ 'post_type' => $args['type'],
1572
+ 'post_status' => $args['status'],
1573
+ 'author' => isset( $args['author'] ) && 0 < $args['author'] ? $args['author'] : null,
1574
+ 's' => isset( $args['search'] ) ? $args['search'] : null,
1575
+ );
1576
+
1577
+ if (
1578
+ isset( $args['sticky'] )
1579
+ &&
1580
+ ( $sticky = get_option( 'sticky_posts' ) )
1581
+ &&
1582
+ is_array( $sticky )
1583
+ ) {
1584
+ if ( $args['sticky'] ) {
1585
+ $query['posts__in'] = $sticky;
1586
+ } else {
1587
+ $query['posts__not_in'] = $sticky;
1588
+ }
1589
+ }
1590
+
1591
+ if ( isset( $args['category'] ) ) {
1592
+ $category = get_term_by( 'slug', $args['category'], 'category' );
1593
+ if ( $category === false) {
1594
+ $query['category_name'] = $args['category'];
1595
+ } else {
1596
+ $query['cat'] = $category->term_id;
1597
+ }
1598
+ }
1599
+
1600
+ if ( isset( $args['tag'] ) ) {
1601
+ $query['tag'] = $args['tag'];
1602
+ }
1603
+
1604
+ if ( isset( $args['page'] ) ) {
1605
+ if ( $args['page'] < 1 ) {
1606
+ $args['page'] = 1;
1607
+ }
1608
+
1609
+ $query['paged'] = $args['page'];
1610
+ } else {
1611
+ if ( $args['offset'] < 0 ) {
1612
+ $args['offset'] = 0;
1613
+ }
1614
+
1615
+ $query['offset'] = $args['offset'];
1616
+ }
1617
+
1618
+ if ( isset( $args['before'] ) ) {
1619
+ $this->date_range['before'] = $args['before'];
1620
+ }
1621
+ if ( isset( $args['after'] ) ) {
1622
+ $this->date_range['after'] = $args['after'];
1623
+ }
1624
+
1625
+ if ( $this->date_range ) {
1626
+ add_filter( 'posts_where', array( $this, 'handle_date_range' ) );
1627
+ }
1628
+ $wp_query = new WP_Query( $query );
1629
+ if ( $this->date_range ) {
1630
+ remove_filter( 'posts_where', array( $this, 'handle_date_range' ) );
1631
+ $this->date_range = array();
1632
+ }
1633
+
1634
+ $return = array();
1635
+ foreach ( array_keys( $this->response_format ) as $key ) {
1636
+ switch ( $key ) {
1637
+ case 'found' :
1638
+ $return[$key] = (int) $wp_query->found_posts;
1639
+ break;
1640
+ case 'posts' :
1641
+ $posts = array();
1642
+ foreach ( $wp_query->posts as $post ) {
1643
+ $the_post = $this->get_post_by( 'ID', $post->ID, $args['context'] );
1644
+ if ( $the_post && !is_wp_error( $the_post ) ) {
1645
+ $posts[] = $the_post;
1646
+ }
1647
+ }
1648
+
1649
+ if ( $posts ) {
1650
+ do_action( 'wpcom_json_api_objects', 'posts', count( $posts ) );
1651
+ }
1652
+
1653
+ $return[$key] = $posts;
1654
+ break;
1655
+ }
1656
+ }
1657
+
1658
+ return $return;
1659
+ }
1660
+
1661
+ function handle_date_range( $where ) {
1662
+ global $wpdb;
1663
+
1664
+ switch ( count( $this->date_range ) ) {
1665
+ case 2 :
1666
+ $where .= $wpdb->prepare(
1667
+ " AND `$wpdb->posts`.post_date BETWEEN CAST( %s AS DATETIME ) AND CAST( %s AS DATETIME ) ",
1668
+ $this->date_range['after'],
1669
+ $this->date_range['before']
1670
+ );
1671
+ break;
1672
+ case 1 :
1673
+ if ( isset( $this->date_range['before'] ) ) {
1674
+ $where .= $wpdb->prepare(
1675
+ " AND `$wpdb->posts`.post_date <= CAST( %s AS DATETIME ) ",
1676
+ $this->date_range['before']
1677
+ );
1678
+ } else {
1679
+ $where .= $wpdb->prepare(
1680
+ " AND `$wpdb->posts`.post_date >= CAST( %s AS DATETIME ) ",
1681
+ $this->date_range['after']
1682
+ );
1683
+ }
1684
+ break;
1685
+ }
1686
+
1687
+ return $where;
1688
+ }
1689
+ }
1690
+
1691
+ class WPCOM_JSON_API_Update_Post_Endpoint extends WPCOM_JSON_API_Post_Endpoint {
1692
+ function __construct( $args ) {
1693
+ parent::__construct( $args );
1694
+ if ( $this->api->ends_with( $this->path, '/delete' ) ) {
1695
+ $this->post_object_format['status']['deleted'] = 'The post has been deleted permanently.';
1696
+ }
1697
+ }
1698
+
1699
+ // /sites/%s/posts/new -> $blog_id
1700
+ // /sites/%s/posts/%d -> $blog_id, $post_id
1701
+ // /sites/%s/posts/%d/delete -> $blog_id, $post_id
1702
+ function callback( $path = '', $blog_id = 0, $post_id = 0 ) {
1703
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
1704
+ if ( is_wp_error( $blog_id ) ) {
1705
+ return $blog_id;
1706
+ }
1707
+
1708
+ if ( $this->api->ends_with( $path, '/delete' ) ) {
1709
+ return $this->delete_post( $path, $blog_id, $post_id );
1710
+ } else {
1711
+ return $this->write_post( $path, $blog_id, $post_id );
1712
+ }
1713
+ }
1714
+
1715
+ // /sites/%s/posts/new -> $blog_id
1716
+ // /sites/%s/posts/%d -> $blog_id, $post_id
1717
+ function write_post( $path, $blog_id, $post_id ) {
1718
+ $new = $this->api->ends_with( $path, '/new' );
1719
+ $args = $this->query_args();
1720
+
1721
+ if ( $new ) {
1722
+ $input = $this->input( true );
1723
+
1724
+ if ( !isset( $input['title'] ) && !isset( $input['content'] ) && !isset( $input['excerpt'] ) ) {
1725
+ return new WP_Error( 'invalid_input', 'Invalid request input', 400 );
1726
+ }
1727
+
1728
+ $post_type = get_post_type_object( $input['type'] );
1729
+
1730
+ if ( 'publish' === $input['status'] ) {
1731
+ if ( !current_user_can( $post_type->cap->publish_posts ) ) {
1732
+ if ( current_user_can( $post_type->cap->edit_posts ) ) {
1733
+ $input['status'] = 'pending';
1734
+ } else {
1735
+ return new WP_Error( 'unauthorized', 'User cannot publish posts', 403 );
1736
+ }
1737
+ }
1738
+ } else {
1739
+ if ( !current_user_can( $post_type->cap->edit_posts ) ) {
1740
+ return new WP_Error( 'unauthorized', 'User cannot edit posts', 403 );
1741
+ }
1742
+ }
1743
+ } else {
1744
+ $input = $this->input( false );
1745
+
1746
+ if ( !is_array( $input ) || !$input ) {
1747
+ return new WP_Error( 'invalid_input', 'Invalid request input', 400 );
1748
+ }
1749
+
1750
+ $post = get_post( $post_id );
1751
+ if ( !$post || is_wp_error( $post ) ) {
1752
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
1753
+ }
1754
+
1755
+ if ( !current_user_can( 'edit_post', $post->ID ) ) {
1756
+ return new WP_Error( 'unauthorized', 'User cannot edit post', 403 );
1757
+ }
1758
+
1759
+ if ( 'publish' === $input['status'] && 'publish' !== $post->post_status && !current_user_can( 'publish_post', $post->ID ) ) {
1760
+ $input['status'] = 'pending';
1761
+ }
1762
+
1763
+ $post_type = get_post_type_object( $post->post_type );
1764
+ }
1765
+
1766
+ if ( !is_post_type_hierarchical( $post_type->name ) ) {
1767
+ unset( $input['parent'] );
1768
+ }
1769
+
1770
+ $categories = null;
1771
+ $tags = null;
1772
+
1773
+ if ( !empty( $input['categories'] )) {
1774
+ if ( is_array( $input['categories'] ) ) {
1775
+ $categories = $input['categories'];
1776
+ } else {
1777
+ foreach ( explode( ',', $input['categories'] ) as $category ) {
1778
+ $categories[] = $category;
1779
+ }
1780
+ }
1781
+ }
1782
+
1783
+ if ( !empty( $input['tags'] ) ) {
1784
+ if ( is_array( $input['tags'] ) ) {
1785
+ $tags = $input['tags'];
1786
+ } else {
1787
+ foreach ( explode( ',', $input['tags'] ) as $tag ) {
1788
+ $tags[] = $tag;
1789
+ }
1790
+ }
1791
+ $tags_string = implode( ',', $tags );
1792
+ }
1793
+
1794
+ unset( $input['tags'], $input['categories'] );
1795
+
1796
+ $insert = array();
1797
+
1798
+ if ( !empty( $input['slug'] ) ) {
1799
+ $insert['post_name'] = $input['slug'];
1800
+ unset( $input['slug'] );
1801
+ }
1802
+
1803
+ if ( true === $input['comments_open'] )
1804
+ $insert['comment_status'] = 'open';
1805
+ else if ( false === $input['comments_open'] )
1806
+ $insert['comment_status'] = 'closed';
1807
+
1808
+ if ( true === $input['pings_open'] )
1809
+ $insert['ping_status'] = 'open';
1810
+ else if ( false === $input['pings_open'] )
1811
+ $insert['ping_status'] = 'closed';
1812
+
1813
+ unset( $input['comments_open'], $input['pings_open'] );
1814
+
1815
+ $publicize = $input['publicize'];
1816
+ $publicize_custom_message = $input['publicize_message'];
1817
+ unset( $input['publicize'], $input['publicize_message'] );
1818
+
1819
+ foreach ( $input as $key => $value ) {
1820
+ $insert["post_$key"] = $value;
1821
+ }
1822
+
1823
+ $has_media = isset( $input['media'] ) && $input['media'] ? count( $input['media'] ) : false;
1824
+
1825
+ if ( $new ) {
1826
+ if ( false === strpos( $input['content'], '[gallery' ) && $has_media ) {
1827
+ switch ( $has_media ) {
1828
+ case 0 :
1829
+ // No images - do nothing.
1830
+ break;
1831
+ case 1 :
1832
+ // 1 image - make it big
1833
+ $insert['post_content'] = $input['content'] = "[gallery size=full columns=1]\n\n" . $input['content'];
1834
+ break;
1835
+ default :
1836
+ // Several images - 3 column gallery
1837
+ $insert['post_content'] = $input['content'] = "[gallery]\n\n" . $input['content'];
1838
+ break;
1839
+ }
1840
+ }
1841
+
1842
+ $post_id = wp_insert_post( add_magic_quotes( $insert ), true );
1843
+
1844
+ if ( $has_media ) {
1845
+ foreach ( $input['media'] as $media_item ) {
1846
+ $_FILES['.api.media.item.'] = $media_item;
1847
+ // check for WP_Error if we ever actually need $media_id
1848
+ $media_id = media_handle_upload( '.api.media.item.', $post_id );
1849
+ }
1850
+
1851
+ unset( $_FILES['.api.media.item.'] );
1852
+ }
1853
+ } else {
1854
+ $insert['ID'] = $post->ID;
1855
+ $post_id = wp_update_post( (object) $insert );
1856
+ }
1857
+
1858
+ if ( !$post_id || is_wp_error( $post_id ) ) {
1859
+ return null;
1860
+ }
1861
+
1862
+ if ( $publicize === false ) {
1863
+ foreach ( $GLOBALS['publicize_ui']->publicize->get_services( 'all' ) as $name => $service ) {
1864
+ update_post_meta( $post_id, $GLOBALS['publicize_ui']->publicize->POST_SKIP . $name, 1 );
1865
+ }
1866
+ } else if ( is_array( $publicize ) && ( count ( $publicize ) > 0 ) ) {
1867
+ foreach ( $GLOBALS['publicize_ui']->publicize->get_services( 'all' ) as $name => $service ) {
1868
+ if ( !in_array( $name, $publicize ) ) {
1869
+ update_post_meta( $post_id, $GLOBALS['publicize_ui']->publicize->POST_SKIP . $name, 1 );
1870
+ }
1871
+ }
1872
+ }
1873
+
1874
+ if ( !empty( $publicize_custom_message ) )
1875
+ update_post_meta( $post_id, $GLOBALS['publicize_ui']->publicize->POST_MESS, trim( $publicize_custom_message ) );
1876
+
1877
+ if ( is_array( $categories ) )
1878
+ wp_set_object_terms( $post_id, $categories, 'category' );
1879
+ if ( is_array( $tags ) )
1880
+ wp_set_object_terms( $post_id, $tags, 'post_tag' );
1881
+
1882
+ set_post_format( $post_id, $insert['post_format'] );
1883
+
1884
+ $return = $this->get_post_by( 'ID', $post_id, $args['context'] );
1885
+ if ( !$return || is_wp_error( $return ) ) {
1886
+ return $return;
1887
+ }
1888
+
1889
+ do_action( 'wpcom_json_api_objects', 'posts' );
1890
+
1891
+ return $return;
1892
+ }
1893
+
1894
+ // /sites/%s/posts/%d/delete -> $blog_id, $post_id
1895
+ function delete_post( $path, $blog_id, $post_id ) {
1896
+ $post = get_post( $post_id );
1897
+ if ( !$post || is_wp_error( $post ) ) {
1898
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
1899
+ }
1900
+
1901
+ if ( !current_user_can( 'delete_post', $post->ID ) ) {
1902
+ return new WP_Error( 'unauthorized', 'User cannot delete posts', 403 );
1903
+ }
1904
+
1905
+ $args = $this->query_args();
1906
+ $return = $this->get_post_by( 'ID', $post->ID, $args['context'] );
1907
+ if ( !$return || is_wp_error( $return ) ) {
1908
+ return $return;
1909
+ }
1910
+
1911
+ do_action( 'wpcom_json_api_objects', 'posts' );
1912
+
1913
+ wp_delete_post( $post->ID );
1914
+
1915
+ $status = get_post_status( $post->ID );
1916
+ if ( false === $status ) {
1917
+ $return['status'] = 'deleted';
1918
+ return $return;
1919
+ }
1920
+
1921
+ return $this->get_post_by( 'ID', $post->ID, $args['context'] );
1922
+ }
1923
+ }
1924
+
1925
+ abstract class WPCOM_JSON_API_Taxonomy_Endpoint extends WPCOM_JSON_API_Endpoint {
1926
+ var $category_object_format = array(
1927
+ 'ID' => '(int) The category ID.',
1928
+ 'name' => "(string) The name of the category.",
1929
+ 'slug' => "(string) The slug of the category.",
1930
+ 'description' => '(string) The description of the category.',
1931
+ 'post_count' => "(int) The number of posts using this category.",
1932
+ 'parent' => "(int) The parent ID for the category.",
1933
+ 'meta' => '(object) Meta data',
1934
+ );
1935
+
1936
+ var $tag_object_format = array(
1937
+ 'ID' => '(int) The tag ID.',
1938
+ 'name' => "(string) The name of the tag.",
1939
+ 'slug' => "(string) The slug of the tag.",
1940
+ 'description' => '(string) The description of the tag.',
1941
+ 'post_count' => "(int) The number of posts using this t.",
1942
+ 'meta' => '(object) Meta data',
1943
+ );
1944
+
1945
+ function __construct( $args ) {
1946
+ parent::__construct( $args );
1947
+ if ( preg_match( '#/tags/#i', $this->path ) )
1948
+ $this->response_format =& $this->tag_object_format;
1949
+ else
1950
+ $this->response_format =& $this->category_object_format;
1951
+ }
1952
+ }
1953
+
1954
+
1955
+ class WPCOM_JSON_API_Get_Taxonomy_Endpoint extends WPCOM_JSON_API_Taxonomy_Endpoint {
1956
+ // /sites/%s/tags/slug:%s -> $blog_id, $tag_id
1957
+ // /sites/%s/categories/slug:%s -> $blog_id, $tag_id
1958
+ function callback( $path = '', $blog_id = 0, $taxonomy_id = 0 ) {
1959
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
1960
+ if ( is_wp_error( $blog_id ) ) {
1961
+ return $blog_id;
1962
+ }
1963
+
1964
+ $args = $this->query_args();
1965
+ if ( preg_match( '#/tags/#i', $path ) ) {
1966
+ $taxonomy_type = "post_tag";
1967
+ } else {
1968
+ $taxonomy_type = "category";
1969
+ }
1970
+
1971
+ $return = $this->get_taxonomy( $taxonomy_id, $taxonomy_type, $args['context'] );
1972
+ if ( !$return || is_wp_error( $return ) ) {
1973
+ return $return;
1974
+ }
1975
+
1976
+ do_action( 'wpcom_json_api_objects', 'taxonomies' );
1977
+
1978
+ return $return;
1979
+ }
1980
+ }
1981
+
1982
+
1983
+ class WPCOM_JSON_API_Update_Taxonomy_Endpoint extends WPCOM_JSON_API_Taxonomy_Endpoint {
1984
+ // /sites/%s/tags|categories/new -> $blog_id
1985
+ // /sites/%s/tags|categories/slug:%s -> $blog_id, $taxonomy_id
1986
+ // /sites/%s/tags|categories/slug:%s/delete -> $blog_id, $taxonomy_id
1987
+ function callback( $path = '', $blog_id = 0, $object_id = 0 ) {
1988
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
1989
+ if ( is_wp_error( $blog_id ) ) {
1990
+ return $blog_id;
1991
+ }
1992
+
1993
+ if ( preg_match( '#/tags/#i', $path ) ) {
1994
+ $taxonomy_type = "post_tag";
1995
+ } else {
1996
+ $taxonomy_type = "category";
1997
+ }
1998
+
1999
+ if ( $this->api->ends_with( $path, '/delete' ) ) {
2000
+ return $this->delete_taxonomy( $path, $blog_id, $object_id, $taxonomy_type );
2001
+ } elseif ( $this->api->ends_with( $path, '/new' ) ) {
2002
+ return $this->new_taxonomy( $path, $blog_id, $taxonomy_type );
2003
+ }
2004
+
2005
+ return $this->update_taxonomy( $path, $blog_id, $object_id, $taxonomy_type );
2006
+ }
2007
+
2008
+ // /sites/%s/tags|categories/new -> $blog_id
2009
+ function new_taxonomy( $path, $blog_id, $taxonomy_type ) {
2010
+ $args = $this->query_args();
2011
+ $input = $this->input();
2012
+ if ( !is_array( $input ) || !$input || !strlen( $input['name'] ) ) {
2013
+ return new WP_Error( 'unknown_taxonomy', 'Unknown data passed', 404 );
2014
+ }
2015
+
2016
+ $user = wp_get_current_user();
2017
+ if ( !$user || is_wp_error( $user ) || !$user->ID ) {
2018
+ return new WP_Error( 'authorization_required', 'An active access token must be used to manage taxonomies.', 403 );
2019
+ }
2020
+
2021
+ $tax = get_taxonomy( $taxonomy_type );
2022
+ if ( !current_user_can( $tax->cap->edit_terms ) ) {
2023
+ return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
2024
+ }
2025
+
2026
+ if ( term_exists( $input['name'], $taxonomy_type ) ) {
2027
+ return new WP_Error( 'unknown_taxonomy', 'A taxonomy with that name already exists', 404 );
2028
+ }
2029
+
2030
+ if ( 'category' != $taxonomy_type )
2031
+ $input['parent'] = 0;
2032
+
2033
+ $data = wp_insert_term( addslashes( $input['name'] ), $taxonomy_type,
2034
+ array(
2035
+ 'description' => addslashes( $input['description'] ),
2036
+ 'parent' => $input['parent']
2037
+ )
2038
+ );
2039
+
2040
+ $taxonomy = get_term_by( 'id', $data['term_id'], $taxonomy_type );
2041
+ $return = $this->get_taxonomy( $taxonomy->slug, $taxonomy_type, $args['context'] );
2042
+ if ( !$return || is_wp_error( $return ) ) {
2043
+ return $return;
2044
+ }
2045
+
2046
+ do_action( 'wpcom_json_api_objects', 'taxonomies' );
2047
+ return $return;
2048
+ }
2049
+
2050
+ // /sites/%s/tags|categories/slug:%s -> $blog_id, $taxonomy_id
2051
+ function update_taxonomy( $path, $blog_id, $object_id, $taxonomy_type ) {
2052
+ $taxonomy = get_term_by( 'slug', $object_id, $taxonomy_type );
2053
+ $tax = get_taxonomy( $taxonomy_type );
2054
+ if ( !current_user_can( $tax->cap->edit_terms ) )
2055
+ return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
2056
+
2057
+ if ( !$taxonomy || is_wp_error( $taxonomy ) ) {
2058
+ return new WP_Error( 'unknown_taxonomy', 'Unknown taxonomy', 404 );
2059
+ }
2060
+
2061
+ if ( false === term_exists( $object_id, $taxonomy_type ) ) {
2062
+ return new WP_Error( 'unknown_taxonomy', 'That taxonomy does not exist', 404 );
2063
+ }
2064
+
2065
+ $args = $this->query_args();
2066
+ $input = $this->input( false );
2067
+ if ( !is_array( $input ) || !$input ) {
2068
+ return new WP_Error( 'invalid_input', 'Invalid request input', 400 );
2069
+ }
2070
+
2071
+ $update = array();
2072
+ if ( 'category' == $taxonomy_type && !empty( $input['parent'] ) )
2073
+ $update['parent'] = $input['parent'];
2074
+
2075
+ if ( !empty( $input['description'] ) )
2076
+ $update['description'] = addslashes( $input['description'] );
2077
+
2078
+ if ( !empty( $input['name'] ) )
2079
+ $update['name'] = addslashes( $input['name'] );
2080
+
2081
+
2082
+ $data = wp_update_term( $taxonomy->term_id, $taxonomy_type, $update );
2083
+ $taxonomy = get_term_by( 'id', $data['term_id'], $taxonomy_type );
2084
+
2085
+ $return = $this->get_taxonomy( $taxonomy->slug, $taxonomy_type, $args['context'] );
2086
+ if ( !$return || is_wp_error( $return ) ) {
2087
+ return $return;
2088
+ }
2089
+
2090
+ do_action( 'wpcom_json_api_objects', 'taxonomies' );
2091
+ return $return;
2092
+ }
2093
+
2094
+ // /sites/%s/tags|categories/%s/delete -> $blog_id, $taxonomy_id
2095
+ function delete_taxonomy( $path, $blog_id, $object_id, $taxonomy_type ) {
2096
+ $taxonomy = get_term_by( 'slug', $object_id, $taxonomy_type );
2097
+ $tax = get_taxonomy( $taxonomy_type );
2098
+ if ( !current_user_can( $tax->cap->delete_terms ) )
2099
+ return new WP_Error( 'unauthorized', 'User cannot edit taxonomy', 403 );
2100
+
2101
+ if ( !$taxonomy || is_wp_error( $taxonomy ) ) {
2102
+ return new WP_Error( 'unknown_taxonomy', 'Unknown taxonomy', 404 );
2103
+ }
2104
+
2105
+ if ( false === term_exists( $object_id, $taxonomy_type ) ) {
2106
+ return new WP_Error( 'unknown_taxonomy', 'That taxonomy does not exist', 404 );
2107
+ }
2108
+
2109
+ $args = $this->query_args();
2110
+ $return = $this->get_taxonomy( $taxonomy->slug, $taxonomy_type, $args['context'] );
2111
+ if ( !$return || is_wp_error( $return ) ) {
2112
+ return $return;
2113
+ }
2114
+
2115
+ do_action( 'wpcom_json_api_objects', 'taxonomies' );
2116
+
2117
+ wp_delete_term( $taxonomy->term_id, $taxonomy_type );
2118
+
2119
+ return array(
2120
+ 'slug' => (string) $taxonomy->slug,
2121
+ 'success' => 'true',
2122
+ );
2123
+ }
2124
+ }
2125
+
2126
+ abstract class WPCOM_JSON_API_Comment_Endpoint extends WPCOM_JSON_API_Endpoint {
2127
+ var $comment_object_format = array(
2128
+ // explicitly document and cast all output
2129
+ 'ID' => '(int) The comment ID.',
2130
+ 'post' => "(object>post_reference) A reference to the comment's post.",
2131
+ 'author' => '(object>author) The author of the comment.',
2132
+ 'date' => "(ISO 8601 datetime) The comment's creation time.",
2133
+ 'URL' => '(URL) The full permalink URL to the comment.',
2134
+ 'short_URL' => '(URL) The wp.me short URL.',
2135
+ 'content' => '(HTML) <code>context</code> dependent.',
2136
+ 'status' => array(
2137
+ 'approved' => 'The comment has been approved.',
2138
+ 'unapproved' => 'The comment has been held for review in the moderation queue.',
2139
+ 'spam' => 'The comment has been marked as spam.',
2140
+ 'trash' => 'The comment is in the trash.',
2141
+ ),
2142
+ 'parent' => "(object>comment_reference|false) A reference to the comment's parent, if it has one.",
2143
+ 'type' => array(
2144
+ 'comment' => 'The comment is a regular comment.',
2145
+ 'trackback' => 'The comment is a trackback.',
2146
+ 'pingback' => 'The comment is a pingback.',
2147
+ ),
2148
+ 'meta' => '(object) Meta data',
2149
+ );
2150
+
2151
+ // var $response_format =& $this->comment_object_format;
2152
+
2153
+ function __construct( $args ) {
2154
+ if ( !$this->response_format ) {
2155
+ $this->response_format =& $this->comment_object_format;
2156
+ }
2157
+ parent::__construct( $args );
2158
+ }
2159
+
2160
+ function get_comment( $comment_id, $context ) {
2161
+ global $blog_id;
2162
+
2163
+ $comment = get_comment( $comment_id );
2164
+ if ( !$comment || is_wp_error( $comment ) ) {
2165
+ return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
2166
+ }
2167
+
2168
+ $types = array( '', 'comment', 'pingback', 'trackback' );
2169
+ if ( !in_array( $comment->comment_type, $types ) ) {
2170
+ return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
2171
+ }
2172
+
2173
+ $post = get_post( $comment->comment_post_ID );
2174
+ if ( !$post || is_wp_error( $post ) ) {
2175
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
2176
+ }
2177
+
2178
+ $status = wp_get_comment_status( $comment->comment_ID );
2179
+
2180
+ // Permissions
2181
+ switch ( $context ) {
2182
+ case 'edit' :
2183
+ if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) {
2184
+ return new WP_Error( 'unauthorized', 'User cannot edit comment', 403 );
2185
+ }
2186
+
2187
+ $GLOBALS['post'] = $post;
2188
+ $comment = get_comment_to_edit( $comment->comment_ID );
2189
+ break;
2190
+ case 'display' :
2191
+ if ( 'approved' !== $status ) {
2192
+ $current_user_id = get_current_user_id();
2193
+ $user_can_read_coment = false;
2194
+ if ( $current_user_id && $comment->user_id && $current_user_id == $comment->user_id ) {
2195
+ $user_can_read_coment = true;
2196
+ } elseif (
2197
+ $comment->comment_author_email && $comment->comment_author
2198
+ &&
2199
+ isset( $this->api->token_details['user'] )
2200
+ &&
2201
+ $this->api->token_details['user']['user_email'] === $comment->comment_author_email
2202
+ &&
2203
+ $this->api->token_details['user']['display_name'] === $comment->comment_author
2204
+ ) {
2205
+ $user_can_read_coment = true;
2206
+ } else {
2207
+ $user_can_read_coment = current_user_can( 'edit_comment', $comment->comment_ID );
2208
+ }
2209
+
2210
+ if ( !$user_can_read_coment ) {
2211
+ return new WP_Error( 'unauthorized', 'User cannot read unapproved comment', 403 );
2212
+ }
2213
+ }
2214
+
2215
+ $GLOBALS['post'] = $post;
2216
+ setup_postdata( $post );
2217
+ break;
2218
+ default :
2219
+ return new WP_Error( 'invalid_context', 'Invalid API CONTEXT', 400 );
2220
+ }
2221
+
2222
+ $can_view = $this->user_can_view_post( $post->ID );
2223
+ if ( !$can_view || is_wp_error( $can_view ) ) {
2224
+ return $can_view;
2225
+ }
2226
+
2227
+ $GLOBALS['comment'] = $comment;
2228
+ $response = array();
2229
+
2230
+ foreach ( array_keys( $this->comment_object_format ) as $key ) {
2231
+ switch ( $key ) {
2232
+ case 'ID' :
2233
+ // explicitly cast all output
2234
+ $response[$key] = (int) $comment->comment_ID;
2235
+ break;
2236
+ case 'post' :
2237
+ $response[$key] = (object) array(
2238
+ 'ID' => (int) $post->ID,
2239
+ 'type' => (string) $post->post_type,
2240
+ 'link' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $post->ID ),
2241
+ );
2242
+ break;
2243
+ case 'author' :
2244
+ $response[$key] = (object) $this->get_author( $comment, 'edit' === $context && current_user_can( 'edit_comment', $comment->comment_ID ) );
2245
+ break;
2246
+ case 'date' :
2247
+ $response[$key] = (string) $this->format_date( $comment->comment_date_gmt, $comment->comment_date );
2248
+ break;
2249
+ case 'URL' :
2250
+ $response[$key] = (string) esc_url_raw( get_comment_link( $comment->comment_ID ) );
2251
+ break;
2252
+ case 'short_URL' :
2253
+ // @todo - pagination
2254
+ $response[$key] = (string) esc_url_raw( wp_get_shortlink( $post->ID ) . "%23comment-{$comment->comment_ID}" );
2255
+ break;
2256
+ case 'content' :
2257
+ if ( 'display' == $context ) {
2258
+ ob_start();
2259
+ comment_text();
2260
+ $response[$key] = (string) ob_get_clean();
2261
+ } else {
2262
+ $response[$key] = (string) $comment->comment_content;
2263
+ }
2264
+ break;
2265
+ case 'status' :
2266
+ $response[$key] = (string) $status;
2267
+ break;
2268
+ case 'parent' : // (object|false)
2269
+ if ( $comment->comment_parent ) {
2270
+ $parent = get_comment( $comment->comment_parent );
2271
+ $response[$key] = (object) array(
2272
+ 'ID' => (int) $parent->comment_ID,
2273
+ 'type' => (string) ( $parent->comment_type ? $parent->comment_type : 'comment' ),
2274
+ 'link' => (string) $this->get_comment_link( $blog_id, $parent->comment_ID ),
2275
+ );
2276
+ } else {
2277
+ $response[$key] = false;
2278
+ }
2279
+ break;
2280
+ case 'type' :
2281
+ $response[$key] = (string) ( $comment->comment_type ? $comment->comment_type : 'comment' );
2282
+ break;
2283
+ case 'meta' :
2284
+ $response[$key] = (object) array(
2285
+ 'links' => (object) array(
2286
+ 'self' => (string) $this->get_comment_link( $this->api->get_blog_id_for_output(), $comment->comment_ID ),
2287
+ 'help' => (string) $this->get_comment_link( $this->api->get_blog_id_for_output(), $comment->comment_ID, 'help' ),
2288
+ 'site' => (string) $this->get_site_link( $this->api->get_blog_id_for_output() ),
2289
+ 'post' => (string) $this->get_post_link( $this->api->get_blog_id_for_output(), $comment->comment_post_ID ),
2290
+ 'replies' => (string) $this->get_comment_link( $this->api->get_blog_id_for_output(), $comment->comment_ID, 'replies/' ),
2291
+ // 'author' => (string) $this->get_user_link( $comment->user_id ),
2292
+ // 'via' => (string) $this->get_post_link( $ping_origin_blog_id, $ping_origin_post_id ), // Ping/trackbacks
2293
+ ),
2294
+ );
2295
+ break;
2296
+ }
2297
+ }
2298
+
2299
+ unset( $GLOBALS['comment'], $GLOBALS['post'] );
2300
+ return $response;
2301
+ }
2302
+ }
2303
+
2304
+ class WPCOM_JSON_API_Get_Comment_Endpoint extends WPCOM_JSON_API_Comment_Endpoint {
2305
+ // /sites/%s/comments/%d -> $blog_id, $comment_id
2306
+ function callback( $path = '', $blog_id = 0, $comment_id = 0 ) {
2307
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
2308
+ if ( is_wp_error( $blog_id ) ) {
2309
+ return $blog_id;
2310
+ }
2311
+
2312
+ $args = $this->query_args();
2313
+
2314
+ $return = $this->get_comment( $comment_id, $args['context'] );
2315
+ if ( !$return || is_wp_error( $return ) ) {
2316
+ return $return;
2317
+ }
2318
+
2319
+ do_action( 'wpcom_json_api_objects', 'comments' );
2320
+
2321
+ return $return;
2322
+ }
2323
+ }
2324
+
2325
+ // @todo permissions
2326
+ class WPCOM_JSON_API_List_Comments_Endpoint extends WPCOM_JSON_API_Comment_Endpoint {
2327
+ var $date_range = array();
2328
+
2329
+ var $response_format = array(
2330
+ 'found' => '(int) The total number of comments found that match the request (ignoring limits, offsets, and pagination).',
2331
+ 'comments' => '(array:comment) An array of comment objects.',
2332
+ );
2333
+
2334
+ function __construct( $args ) {
2335
+ parent::__construct( $args );
2336
+ $this->query = array_merge( $this->query, array(
2337
+ 'number' => '(int=20) The number of comments to return. Limit: 100.',
2338
+ 'offset' => '(int=0) 0-indexed offset.',
2339
+ 'page' => '(int) Return the Nth 1-indexed page of comments. Takes precedence over the <code>offset</code> parameter.',
2340
+ 'order' => array(
2341
+ 'DESC' => 'Return comments in descending order from newest to oldest.',
2342
+ 'ASC' => 'Return comments in ascending order from oldest to newest.',
2343
+ ),
2344
+ 'after' => '(ISO 8601 datetime) Return comments dated on or after the specified datetime.',
2345
+ 'before' => '(ISO 8601 datetime) Return comments dated on or before the specified datetime.',
2346
+ 'type' => array(
2347
+ 'any' => 'Return all comments regardless of type.',
2348
+ 'comment' => 'Return only regular comments.',
2349
+ 'trackback' => 'Return only trackbacks.',
2350
+ 'pingback' => 'Return only pingbacks.',
2351
+ 'pings' => 'Return both trackbacks and pingbacks.',
2352
+ ),
2353
+ 'status' => array(
2354
+ 'approved' => 'Return only approved comments.',
2355
+ 'unapproved' => 'Return only comments in the moderation queue.',
2356
+ 'spam' => 'Return only comments marked as spam.',
2357
+ 'trash' => 'Return only comments in the trash.',
2358
+ ),
2359
+ ) );
2360
+ }
2361
+
2362
+ // /sites/%s/comments/ -> $blog_id
2363
+ // /sites/%s/posts/%d/replies/ -> $blog_id, $post_id
2364
+ // /sites/%s/comments/%d/replies/ -> $blog_id, $comment_id
2365
+ function callback( $path = '', $blog_id = 0, $object_id = 0 ) {
2366
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
2367
+ if ( is_wp_error( $blog_id ) ) {
2368
+ return $blog_id;
2369
+ }
2370
+
2371
+ $args = $this->query_args();
2372
+
2373
+ if ( $args['number'] < 1 ) {
2374
+ $args['number'] = 20;
2375
+ } elseif ( 100 < $args['number'] ) {
2376
+ return new WP_Error( 'invalid_number', 'The NUMBER parameter must be less than or equal to 100.', 400 );
2377
+ }
2378
+
2379
+ if ( false !== strpos( $path, '/posts/' ) ) {
2380
+ // We're looking for comments of a particular post
2381
+ $post_id = $object_id;
2382
+ $comment_id = 0;
2383
+ } else {
2384
+ // We're looking for comments for the whole blog, or replies to a single comment
2385
+ $comment_id = $object_id;
2386
+ $post_id = 0;
2387
+ }
2388
+
2389
+ // We can't efficiently get the number of replies to a single comment
2390
+ $count = false;
2391
+ $found = -1;
2392
+
2393
+ if ( !$comment_id ) {
2394
+ // We can get comment counts for the whole site or for a single post, but only for certain queries
2395
+ if ( 'any' === $args['type'] && !isset( $args['after'] ) && !isset( $args['before'] ) ) {
2396
+ $count = wp_count_comments( $post_id );
2397
+ }
2398
+ }
2399
+
2400
+ switch ( $args['status'] ) {
2401
+ case 'approved' :
2402
+ $status = 'approve';
2403
+ if ( $count ) {
2404
+ $found = $count->approved;
2405
+ }
2406
+ break;
2407
+ default :
2408
+ if ( !current_user_can( 'moderate_comments' ) ) {
2409
+ return new WP_Error( 'unauthorized', 'User cannot read non-approved comments', 403 );
2410
+ }
2411
+ if ( 'unapproved' === $args['status'] ) {
2412
+ $status = 'hold';
2413
+ $count_status = 'moderated';
2414
+ } else {
2415
+ $status = $count_status = $args['status'];
2416
+ }
2417
+ if ( $count ) {
2418
+ $found = $count->$count_status;
2419
+ }
2420
+ }
2421
+
2422
+ $query = array(
2423
+ 'number' => $args['number'],
2424
+ 'order' => $args['order'],
2425
+ 'type' => 'any' === $args['type'] ? false : $args['type'],
2426
+ 'status' => $status,
2427
+ );
2428
+
2429
+ if ( $post_id ) {
2430
+ $post = get_post( $post_id );
2431
+ if ( !$post || is_wp_error( $post ) ) {
2432
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
2433
+ }
2434
+ $query['post_id'] = $post->ID;
2435
+ if ( $this->api->ends_with( $this->path, '/replies' ) ) {
2436
+ $query['parent'] = 0;
2437
+ }
2438
+ } elseif ( $comment_id ) {
2439
+ $comment = get_comment( $comment_id );
2440
+ if ( !$comment || is_wp_error( $comment ) ) {
2441
+ return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
2442
+ }
2443
+ $query['parent'] = $comment_id;
2444
+ }
2445
+
2446
+ if ( isset( $args['page'] ) ) {
2447
+ if ( $args['page'] < 1 ) {
2448
+ $args['page'] = 1;
2449
+ }
2450
+
2451
+ $query['offset'] = ( $args['page'] - 1 ) * $args['number'];
2452
+ } else {
2453
+ if ( $args['offset'] < 0 ) {
2454
+ $args['offset'] = 0;
2455
+ }
2456
+
2457
+ $query['offset'] = $args['offset'];
2458
+ }
2459
+
2460
+ if ( isset( $args['before_gmt'] ) ) {
2461
+ $this->date_range['before_gmt'] = $args['before_gmt'];
2462
+ }
2463
+ if ( isset( $args['after_gmt'] ) ) {
2464
+ $this->date_range['after_gmt'] = $args['after_gmt'];
2465
+ }
2466
+
2467
+ if ( $this->date_range ) {
2468
+ add_filter( 'comments_clauses', array( $this, 'handle_date_range' ) );
2469
+ }
2470
+ $comments = get_comments( $query );
2471
+ if ( $this->date_range ) {
2472
+ remove_filter( 'comments_clauses', array( $this, 'handle_date_range' ) );
2473
+ $this->date_range = array();
2474
+ }
2475
+
2476
+ $return = array();
2477
+
2478
+ foreach ( array_keys( $this->response_format ) as $key ) {
2479
+ switch ( $key ) {
2480
+ case 'found' :
2481
+ $return[$key] = (int) $found;
2482
+ break;
2483
+ case 'comments' :
2484
+ $return_comments = array();
2485
+ foreach ( $comments as $comment ) {
2486
+ $the_comment = $this->get_comment( $comment->comment_ID, $args['context'] );
2487
+ if ( $the_comment && !is_wp_error( $the_comment ) ) {
2488
+ $return_comments[] = $the_comment;
2489
+ }
2490
+ }
2491
+
2492
+ if ( $return_comments ) {
2493
+ do_action( 'wpcom_json_api_objects', 'comments', count( $return_comments ) );
2494
+ }
2495
+
2496
+ $return[$key] = $return_comments;
2497
+ break;
2498
+ }
2499
+ }
2500
+
2501
+ return $return;
2502
+ }
2503
+
2504
+ function handle_date_range( $clauses ) {
2505
+ global $wpdb;
2506
+
2507
+ switch ( count( $this->date_range ) ) {
2508
+ case 2 :
2509
+ $clauses['where'] .= $wpdb->prepare(
2510
+ " AND `$wpdb->comments`.comment_date_gmt BETWEEN CAST( %s AS DATETIME ) AND CAST( %s AS DATETIME ) ",
2511
+ $this->date_range['after_gmt'],
2512
+ $this->date_range['before_gmt']
2513
+ );
2514
+ break;
2515
+ case 1 :
2516
+ if ( isset( $this->date_range['before_gmt'] ) ) {
2517
+ $clauses['where'] .= $wpdb->prepare(
2518
+ " AND `$wpdb->comments`.comment_date_gmt <= CAST( %s AS DATETIME ) ",
2519
+ $this->date_range['before_gmt']
2520
+ );
2521
+ } else {
2522
+ $clauses['where'] .= $wpdb->prepare(
2523
+ " AND `$wpdb->comments`.comment_date_gmt >= CAST( %s AS DATETIME ) ",
2524
+ $this->date_range['after_gmt']
2525
+ );
2526
+ }
2527
+ break;
2528
+ }
2529
+
2530
+ return $clauses;
2531
+ }
2532
+ }
2533
+
2534
+ class WPCOM_JSON_API_Update_Comment_Endpoint extends WPCOM_JSON_API_Comment_Endpoint {
2535
+ function __construct( $args ) {
2536
+ parent::__construct( $args );
2537
+ if ( $this->api->ends_with( $this->path, '/delete' ) ) {
2538
+ $this->comment_object_format['status']['deleted'] = 'The comment has been deleted permanently.';
2539
+ }
2540
+ }
2541
+
2542
+ // /sites/%s/posts/%d/replies/new -> $blog_id, $post_id
2543
+ // /sites/%s/comments/%d/replies/new -> $blog_id, $comment_id
2544
+ // /sites/%s/comments/%d -> $blog_id, $comment_id
2545
+ // /sites/%s/comments/%d/delete -> $blog_id, $comment_id
2546
+ function callback( $path = '', $blog_id = 0, $object_id = 0 ) {
2547
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
2548
+ if ( is_wp_error( $blog_id ) ) {
2549
+ return $blog_id;
2550
+ }
2551
+
2552
+ if ( $this->api->ends_with( $path, '/delete' ) ) {
2553
+ return $this->delete_comment( $path, $blog_id, $object_id );
2554
+ } elseif ( $this->api->ends_with( $path, '/new' ) ) {
2555
+ if ( false !== strpos( $path, '/posts/' ) ) {
2556
+ return $this->new_comment( $path, $blog_id, $object_id, 0 );
2557
+ } else {
2558
+ return $this->new_comment( $path, $blog_id, 0, $object_id );
2559
+ }
2560
+ }
2561
+
2562
+ return $this->update_comment( $path, $blog_id, $object_id );
2563
+ }
2564
+
2565
+ // /sites/%s/posts/%d/replies/new -> $blog_id, $post_id
2566
+ // /sites/%s/comments/%d/replies/new -> $blog_id, $comment_id
2567
+ function new_comment( $path, $blog_id, $post_id, $comment_parent_id ) {
2568
+ if ( !$post_id ) {
2569
+ $comment_parent = get_comment( $comment_parent_id );
2570
+ if ( !$comment_parent_id || !$comment_parent || is_wp_error( $comment_parent ) ) {
2571
+ return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
2572
+ }
2573
+
2574
+ $post_id = $comment_parent->comment_post_ID;
2575
+ }
2576
+
2577
+ $post = get_post( $post_id );
2578
+ if ( !$post || is_wp_error( $post ) ) {
2579
+ return new WP_Error( 'unknown_post', 'Unknown post', 404 );
2580
+ }
2581
+
2582
+ if ( -1 == get_option( 'blog_public' ) && ! is_user_member_of_blog() && ! is_super_admin() ) {
2583
+ return new WP_Error( 'unauthorized', 'User cannot create comments', 403 );
2584
+ }
2585
+
2586
+ if ( !comments_open( $post->ID ) ) {
2587
+ return new WP_Error( 'unauthorized', 'Comments on this post are closed', 403 );
2588
+ }
2589
+
2590
+ $can_view = $this->user_can_view_post( $post->ID );
2591
+ if ( !$can_view || is_wp_error( $can_view ) ) {
2592
+ return $can_view;
2593
+ }
2594
+
2595
+ $post_status = get_post_status_object( $post->post_status );
2596
+ if ( !$post_status->public && !$post_status->private ) {
2597
+ return new WP_Error( 'unauthorized', 'Comments on drafts are not allowed', 403 );
2598
+ }
2599
+
2600
+ $args = $this->query_args();
2601
+ $input = $this->input();
2602
+ if ( !is_array( $input ) || !$input || !strlen( $input['content'] ) ) {
2603
+ return new WP_Error( 'invalid_input', 'Invalid request input', 400 );
2604
+ }
2605
+
2606
+ $user = wp_get_current_user();
2607
+ if ( !$user || is_wp_error( $user ) || !$user->ID ) {
2608
+ $auth_required = false;
2609
+ if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
2610
+ $auth_required = true;
2611
+ } elseif ( isset( $this->api->token_details['user'] ) ) {
2612
+ $user = (object) $this->api->token_details['user'];
2613
+ foreach ( array( 'display_name', 'user_email', 'user_url' ) as $user_datum ) {
2614
+ if ( !isset( $user->$user_datum ) ) {
2615
+ $auth_required = true;
2616
+ }
2617
+ }
2618
+ if ( !isset( $user->ID ) ) {
2619
+ $user->ID = 0;
2620
+ }
2621
+ } else {
2622
+ $auth_required = true;
2623
+ }
2624
+
2625
+ if ( $auth_required ) {
2626
+ return new WP_Error( 'authorization_required', 'An active access token must be used to comment.', 403 );
2627
+ }
2628
+ }
2629
+
2630
+ $insert = array(
2631
+ 'comment_post_ID' => $post->ID,
2632
+ 'user_id' => $user->ID,
2633
+ 'comment_author' => $user->display_name,
2634
+ 'comment_author_email' => $user->user_email,
2635
+ 'comment_author_url' => $user->user_url,
2636
+ 'comment_content' => $input['content'],
2637
+ 'comment_parent' => $comment_parent_id,
2638
+ 'comment_type' => '',
2639
+ );
2640
+
2641
+ ob_start();
2642
+ add_filter( 'wp_die_handler', array( $this, 'filter_wp_die_callback' ), 10, 1 ); //override wp_die
2643
+ $comment_id = wp_new_comment( add_magic_quotes( $insert ) );
2644
+ remove_filter( 'wp_die_handler', array( $this, 'filter_wp_die_callback' ), 10, 1 );
2645
+ $msg = ob_get_clean();
2646
+ if ( $msg ) {
2647
+ return new WP_Error( 400, $msg );
2648
+ }
2649
+
2650
+ $return = $this->get_comment( $comment_id, $args['context'] );
2651
+ if ( !$return ) {
2652
+ return new WP_Error( 400, __( 'Comment cache problem?', 'jetpack' ) );
2653
+ }
2654
+ if ( is_wp_error( $return ) ) {
2655
+ return $return;
2656
+ }
2657
+
2658
+ do_action( 'wpcom_json_api_objects', 'comments' );
2659
+ return $return;
2660
+ }
2661
+
2662
+ // /sites/%s/comments/%d -> $blog_id, $comment_id
2663
+ function update_comment( $path, $blog_id, $comment_id ) {
2664
+ $comment = get_comment( $comment_id );
2665
+ if ( !$comment || is_wp_error( $comment ) ) {
2666
+ return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
2667
+ }
2668
+
2669
+ if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) {
2670
+ return new WP_Error( 'unauthorized', 'User cannot edit comment', 403 );
2671
+ }
2672
+
2673
+ $args = $this->query_args();
2674
+ $input = $this->input( false );
2675
+ if ( !is_array( $input ) || !$input ) {
2676
+ return new WP_Error( 'invalid_input', 'Invalid request input', 400 );
2677
+ }
2678
+
2679
+ $update = array();
2680
+ foreach ( $input as $key => $value ) {
2681
+ $update["comment_$key"] = $value;
2682
+ }
2683
+
2684
+ $comment_status = wp_get_comment_status( $comment->comment_ID );
2685
+ if ( $comment_status !== $update['status'] && !current_user_can( 'moderate_comments' ) ) {
2686
+ return new WP_Error( 'unauthorized', 'User cannot moderate comments', 403 );
2687
+ }
2688
+
2689
+ if ( isset( $update['comment_status'] ) ) {
2690
+ switch ( $update['comment_status'] ) {
2691
+ case 'unapproved' :
2692
+ $update['comment_approved'] = 0;
2693
+ break;
2694
+ case 'spam' :
2695
+ if ( 'spam' != $comment_status ) {
2696
+ wp_spam_comment( $comment->comment_ID );
2697
+ }
2698
+ break;
2699
+ case 'unspam' :
2700
+ if ( 'spam' == $comment_status ) {
2701
+ wp_unspam_comment( $comment->comment_ID );
2702
+ }
2703
+ break;
2704
+ case 'trash' :
2705
+ if ( ! EMPTY_TRASH_DAYS ) {
2706
+ return new WP_Error( 'trash_disabled', 'Cannot trash comment', 403 );
2707
+ }
2708
+
2709
+ if ( 'trash' != $comment_status ) {
2710
+ wp_trash_comment( $comment_id );
2711
+ }
2712
+ break;
2713
+ case 'untrash' :
2714
+ if ( 'trash' == $comment_status ) {
2715
+ wp_untrash_comment( $comment->comment_ID );
2716
+ }
2717
+ break;
2718
+ default:
2719
+ $update['comment_approved'] = 1;
2720
+ break;
2721
+ }
2722
+ unset( $update['comment_status'] );
2723
+ }
2724
+
2725
+ $update['comment_ID'] = $comment->comment_ID;
2726
+
2727
+ wp_update_comment( add_magic_quotes( $update ) );
2728
+
2729
+ $return = $this->get_comment( $comment->comment_ID, $args['context'] );
2730
+ if ( !$return || is_wp_error( $return ) ) {
2731
+ return $return;
2732
+ }
2733
+
2734
+ do_action( 'wpcom_json_api_objects', 'comments' );
2735
+ return $return;
2736
+ }
2737
+
2738
+ // /sites/%s/comments/%d/delete -> $blog_id, $comment_id
2739
+ function delete_comment( $path, $blog_id, $comment_id ) {
2740
+ $comment = get_comment( $comment_id );
2741
+ if ( !$comment || is_wp_error( $comment ) ) {
2742
+ return new WP_Error( 'unknown_comment', 'Unknown comment', 404 );
2743
+ }
2744
+
2745
+ if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) { // [sic] There is no delete_comment cap
2746
+ return new WP_Error( 'unauthorized', 'User cannot delete comment', 403 );
2747
+ }
2748
+
2749
+ $args = $this->query_args();
2750
+ $return = $this->get_comment( $comment->comment_ID, $args['context'] );
2751
+ if ( !$return || is_wp_error( $return ) ) {
2752
+ return $return;
2753
+ }
2754
+
2755
+ do_action( 'wpcom_json_api_objects', 'comments' );
2756
+
2757
+ wp_delete_comment( $comment->comment_ID );
2758
+ $status = wp_get_comment_status( $comment->comment_ID );
2759
+ if ( false === $status ) {
2760
+ $return['status'] = 'deleted';
2761
+ return $return;
2762
+ }
2763
+
2764
+ return $this->get_comment( $comment->comment_ID, $args['context'] );
2765
+ }
2766
+
2767
+ function filter_wp_die_callback( $callback ) {
2768
+ return array( $this, 'trap_wp_die' );
2769
+ }
2770
+
2771
+ //die with the message, ob_start/ob_get_clean will pick up the actual error message
2772
+ function trap_wp_die( $msg, $title = '', $args = array() ) {
2773
+ die( $msg );
2774
+ }
2775
+
2776
+ }
2777
+
2778
+ class WPCOM_JSON_API_GET_Site_Endpoint extends WPCOM_JSON_API_Endpoint {
2779
+ // /sites/mine
2780
+ // /sites/%s -> $blog_id
2781
+ function callback( $path = '', $blog_id = 0 ) {
2782
+ global $wpdb;
2783
+ if ( 'mine' === $blog_id ) {
2784
+ $api = WPCOM_JSON_API::init();
2785
+ if ( !$api->token_details || empty( $api->token_details['blog_id'] ) ) {
2786
+ return new WP_Error( 'authorization_required', 'An active access token must be used to query information about the current blog.', 403 );
2787
+ }
2788
+ $blog_id = $api->token_details['blog_id'];
2789
+ }
2790
+
2791
+ $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
2792
+ if ( is_wp_error( $blog_id ) ) {
2793
+ return $blog_id;
2794
+ }
2795
+
2796
+ $is_user_logged_in = is_user_logged_in();
2797
+
2798
+ $response = array();
2799
+ foreach ( array_keys( $this->response_format ) as $key ) {
2800
+ switch ( $key ) {
2801
+ case 'ID' :
2802
+ $response[$key] = (int) $this->api->get_blog_id_for_output();
2803
+ break;
2804
+ case 'name' :
2805
+ $response[$key] = (string) get_bloginfo( 'name' );
2806
+ break;
2807
+ case 'description' :
2808
+ $response[$key] = (string) get_bloginfo( 'description' );
2809
+ break;
2810
+ case 'URL' :
2811
+ $response[$key] = (string) home_url();
2812
+ break;
2813
+ case 'jetpack' :
2814
+ if ( $is_user_logged_in )
2815
+ $response[$key] = false; // magic
2816
+ break;
2817
+ case 'post_count' :
2818
+ if ( $is_user_logged_in )
2819
+ $response[$key] = (int) $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish'");
2820
+ break;
2821
+ case 'lang' :
2822
+ if ( $is_user_logged_in )
2823
+ $response[$key] = (string) get_bloginfo( 'language' );
2824
+ break;
2825
+ case 'meta' :
2826
+ $response[$key] = (object) array(
2827
+ 'links' => (object) array(
2828
+ 'self' => (string) $this->get_site_link( $this->api->get_blog_id_for_output() ),
2829
+ 'help' => (string) $this->get_site_link( $this->api->get_blog_id_for_output(), 'help' ),
2830
+ 'posts' => (string) $this->get_site_link( $this->api->get_blog_id_for_output(), 'posts/' ),
2831
+ 'comments' => (string) $this->get_site_link( $this->api->get_blog_id_for_output(), 'comments/' ),
2832
+ ),
2833
+ );
2834
+ break;
2835
+ }
2836
+ }
2837
+
2838
+ do_action( 'wpcom_json_api_objects', 'sites' );
2839
+
2840
+ return $response;
2841
+ }
2842
+ }
2843
+
2844
+ /*
2845
+ * Set up endpoints
2846
+ */
2847
+
2848
+ /*
2849
+ * Site endpoints
2850
+ */
2851
+ new WPCOM_JSON_API_GET_Site_Endpoint( array(
2852
+ 'description' => 'Information about a site ID/domain',
2853
+ 'group' => 'Sites',
2854
+ 'stat' => 'sites:X',
2855
+
2856
+ 'method' => 'GET',
2857
+ 'path' => '/sites/%s',
2858
+ 'path_labels' => array(
2859
+ '$site' => '(int|string) The site ID, The site domain',
2860
+ ),
2861
+
2862
+ 'query_parameters' => array(
2863
+ 'context' => false,
2864
+ ),
2865
+
2866
+ 'response_format' => array(
2867
+ 'ID' => '(int) Blog ID',
2868
+ 'name' => '(string) Title of blog',
2869
+ 'description' => '(string) Tagline or description of blog',
2870
+ 'URL' => '(string) Full URL to the blog',
2871
+ 'jetpack' => '(bool) Whether the blog is a Jetpack blog or not',
2872
+ 'post_count' => '(int) The number of posts the blog has',
2873
+ 'lang' => '(string) Primary language code of the blog',
2874
+ 'meta' => '(object) Meta data',
2875
+ ),
2876
+
2877
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/?pretty=1',
2878
+ ) );
2879
+
2880
+
2881
+ /*
2882
+ * Post endpoints
2883
+ */
2884
+ new WPCOM_JSON_API_List_Posts_Endpoint( array(
2885
+ 'description' => 'Return matching Posts',
2886
+ 'group' => 'Posts',
2887
+ 'stat' => 'posts',
2888
+
2889
+ 'method' => 'GET',
2890
+ 'path' => '/sites/%s/posts/',
2891
+ 'path_labels' => array(
2892
+ '$site' => '(int|string) The site ID, The site domain',
2893
+ ),
2894
+
2895
+ 'query_parameters' => array(
2896
+ 'number' => '(int=20) The number of posts to return. Limit: 100.',
2897
+ 'offset' => '(int=0) 0-indexed offset.',
2898
+ 'page' => '(int) Return the Nth 1-indexed page of posts. Takes precedence over the <code>offset</code> parameter.',
2899
+ 'order' => array(
2900
+ 'DESC' => 'Return posts in descending order. For dates, that means newest to oldest.',
2901
+ 'ASC' => 'Return posts in ascending order. For dates, that means oldest to newest.',
2902
+ ),
2903
+ 'order_by' => array(
2904
+ 'date' => 'Order by the created time of each post.',
2905
+ 'modified' => 'Order by the modified time of each post.',
2906
+ 'title' => "Order lexicographically by the posts' titles.",
2907
+ 'comment_count' => 'Order by the number of comments for each post.',
2908
+ ),
2909
+ 'after' => '(ISO 8601 datetime) Return posts dated on or after the specified datetime.',
2910
+ 'before' => '(ISO 8601 datetime) Return posts dated on or before the specified datetime.',
2911
+ 'tag' => '(string) Specify the tag name or slug.',
2912
+ 'category' => '(string) Specify the category name or slug.',
2913
+ 'type' => array(
2914
+ 'post' => 'Return only blog posts.',
2915
+ 'page' => 'Return only pages.',
2916
+ 'any' => 'Return both blog posts and pages.',
2917
+ ),
2918
+ 'status' => array(
2919
+ 'publish' => 'Return only published posts.',
2920
+ 'private' => 'Return only private posts.',
2921
+ 'draft' => 'Return only draft posts.',
2922
+ 'pending' => 'Return only posts pending editorial approval.',
2923
+ 'future' => 'Return only posts scheduled for future publishing.',
2924
+ 'trash' => 'Return only posts in the trash.',
2925
+ 'any' => 'Return all posts regardless of status.',
2926
+ ),
2927
+ 'sticky' => '(bool) Specify the stickiness.',
2928
+ 'author' => "(int) Author's user ID",
2929
+ 'search' => '(string) Search query',
2930
+ ),
2931
+
2932
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/?number=5&pretty=1'
2933
+ ) );
2934
+
2935
+ new WPCOM_JSON_API_Get_Post_Endpoint( array(
2936
+ 'description' => 'Return a single Post (by ID)',
2937
+ 'group' => 'Posts',
2938
+ 'stat' => 'posts:1',
2939
+
2940
+ 'method' => 'GET',
2941
+ 'path' => '/sites/%s/posts/%d',
2942
+ 'path_labels' => array(
2943
+ '$site' => '(int|string) The site ID, The site domain',
2944
+ '$post_ID' => '(int) The post ID',
2945
+ ),
2946
+
2947
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/7/?pretty=1'
2948
+ ) );
2949
+
2950
+ new WPCOM_JSON_API_Get_Post_Endpoint( array(
2951
+ 'description' => 'Return a single Post (by name)',
2952
+ 'group' => '__do_not_document',
2953
+ 'stat' => 'posts:name',
2954
+
2955
+ 'method' => 'GET',
2956
+ 'path' => '/sites/%s/posts/name:%s',
2957
+ 'path_labels' => array(
2958
+ '$site' => '(int|string) The site ID, The site domain',
2959
+ '$post_name' => '(string) The post name (a.k.a. slug)',
2960
+ ),
2961
+
2962
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/name:blogging-and-stuff?pretty=1',
2963
+ ) );
2964
+
2965
+ new WPCOM_JSON_API_Get_Post_Endpoint( array(
2966
+ 'description' => 'Return a single Post (by slug)',
2967
+ 'group' => 'Posts',
2968
+ 'stat' => 'posts:slug',
2969
+
2970
+ 'method' => 'GET',
2971
+ 'path' => '/sites/%s/posts/slug:%s',
2972
+ 'path_labels' => array(
2973
+ '$site' => '(int|string) The site ID, The site domain',
2974
+ '$post_slug' => '(string) The post slug (a.k.a. sanitized name)',
2975
+ ),
2976
+
2977
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/slug:blogging-and-stuff?pretty=1',
2978
+ ) );
2979
+
2980
+ new WPCOM_JSON_API_Update_Post_Endpoint( array(
2981
+ 'description' => 'Create a Post',
2982
+ 'group' => 'Posts',
2983
+ 'stat' => 'posts:new',
2984
+
2985
+ 'method' => 'POST',
2986
+ 'path' => '/sites/%s/posts/new',
2987
+ 'path_labels' => array(
2988
+ '$site' => '(int|string) The site ID, The site domain',
2989
+ ),
2990
+
2991
+ 'request_format' => array(
2992
+ // explicitly document all input
2993
+ 'date' => "(ISO 8601 datetime) The post's creation time.",
2994
+ 'title' => '(HTML) The post title.',
2995
+ 'content' => '(HTML) The post content.',
2996
+ 'excerpt' => '(HTML) An optional post excerpt.',
2997
+ 'slug' => '(string) The name (slug) for your post, used in URLs.',
2998
+ 'publicize' => '(array|bool) True or false if the post be publicized to external services. An array of services if we only want to publicize to a select few. Defaults to true.',
2999
+ 'publicize_message' => '(string) Custom message to be publicized to external services.',
3000
+ 'status' => array(
3001
+ 'publish' => 'Publish the post.',
3002
+ 'private' => 'Privately publish the post.',
3003
+ 'draft' => 'Save the post as a draft.',
3004
+ 'pending' => 'Mark the post as pending editorial approval.',
3005
+ ),
3006
+ 'password' => '(string) The plaintext password protecting the post, or, more likely, the empty string if the post is not password protected.',
3007
+ 'parent' => "(int) The post ID of the new post's parent.",
3008
+ 'type' => array(
3009
+ 'post' => 'Create a blog post.',
3010
+ 'page' => 'Create a page.',
3011
+ ),
3012
+ 'categories' => "(array|string) Comma separated list or array of categories (name or id)",
3013
+ 'tags' => "(array|string) Comma separated list or array of tags (name or id)",
3014
+ 'format' => get_post_format_strings(),
3015
+ 'media' => "(media) An array of images to attach to the post. To upload media, the entire request should be multipart/form-data encoded. Multiple media items will be displayed in a gallery. Accepts images (image/gif, image/jpeg, image/png) only.<br /><br /><strong>Example</strong>:<br />" .
3016
+ "<code>curl \<br />--form 'title=Image' \<br />--form 'media[]=@/path/to/file.jpg' \<br />-H 'Authorization: BEARER your-token' \<br />'https://public-api.wordpress.com/rest/v1/sites/123/posts/new'</code>",
3017
+ 'comments_open' => "(bool) Should the post be open to comments? Defaults to the blog's preference.",
3018
+ 'pings_open' => "(bool) Should the post be open to comments? Defaults to the blog's preference.",
3019
+ ),
3020
+
3021
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/posts/new/',
3022
+
3023
+ 'example_request_data' => array(
3024
+ 'headers' => array(
3025
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3026
+ ),
3027
+
3028
+ 'body' => array(
3029
+ 'title' => 'Hello World',
3030
+ 'content' => 'Hello. I am a test post. I was created by the API',
3031
+ 'tags' => 'tests',
3032
+ 'categories' => 'API'
3033
+ )
3034
+ ),
3035
+
3036
+ 'example_response' => '
3037
+ {
3038
+ "ID": 1270,
3039
+ "author": {
3040
+ "ID": 18342963,
3041
+ "email": false,
3042
+ "name": "binarysmash",
3043
+ "URL": "http:\/\/binarysmash.wordpress.com",
3044
+ "avatar_URL": "http:\/\/0.gravatar.com\/avatar\/a178ebb1731d432338e6bb0158720fcc?s=96&d=identicon&r=G",
3045
+ "profile_URL": "http:\/\/en.gravatar.com\/binarysmash"
3046
+ },
3047
+ "date": "2012-04-11T19:42:44+00:00",
3048
+ "modified": "2012-04-11T19:42:44+00:00",
3049
+ "title": "Hello World",
3050
+ "URL": "http:\/\/opossumapi.wordpress.com\/2012\/04\/11\/hello-world-3\/",
3051
+ "short_URL": "http:\/\/wp.me\/p23HjV-ku",
3052
+ "content": "<p>Hello. I am a test post. I was created by the API<\/p>\n",
3053
+ "excerpt": "<p>Hello. I am a test post. I was created by the API<\/p>\n",
3054
+ "status": "publish",
3055
+ "password": "",
3056
+ "parent": false,
3057
+ "type": "post",
3058
+ "comments_open": true,
3059
+ "pings_open": true,
3060
+ "comment_count": 0,
3061
+ "like_count": 0,
3062
+ "featured_image": "",
3063
+ "format": "standard",
3064
+ "geo": false,
3065
+ "publicize_URLs": [
3066
+
3067
+ ],
3068
+ "tags": {
3069
+ "tests": {
3070
+ "name": "tests",
3071
+ "slug": "tests",
3072
+ "description": "",
3073
+ "post_count": 1,
3074
+ "meta": {
3075
+ "links": {
3076
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/tests",
3077
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/tests\/help",
3078
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3079
+ }
3080
+ }
3081
+ }
3082
+ },
3083
+ "categories": {
3084
+ "API": {
3085
+ "name": "API",
3086
+ "slug": "api",
3087
+ "description": "",
3088
+ "post_count": 1,
3089
+ "parent": 0,
3090
+ "meta": {
3091
+ "links": {
3092
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/api",
3093
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/api\/help",
3094
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3095
+ }
3096
+ }
3097
+ }
3098
+ },
3099
+ "meta": {
3100
+ "links": {
3101
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1270",
3102
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1270\/help",
3103
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3104
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1270\/replies\/",
3105
+ "likes": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1270\/likes\/"
3106
+ }
3107
+ }
3108
+ }'
3109
+ ) );
3110
+
3111
+ new WPCOM_JSON_API_Update_Post_Endpoint( array(
3112
+ 'description' => 'Edit a Post',
3113
+ 'group' => 'Posts',
3114
+ 'stat' => 'posts:1:POST',
3115
+
3116
+ 'method' => 'POST',
3117
+ 'path' => '/sites/%s/posts/%d',
3118
+ 'path_labels' => array(
3119
+ '$site' => '(int|string) The site ID, The site domain',
3120
+ '$post_ID' => '(int) The post ID',
3121
+ ),
3122
+
3123
+ 'request_format' => array(
3124
+ 'date' => "(ISO 8601 datetime) The post's creation time.",
3125
+ 'title' => '(HTML) The post title.',
3126
+ 'content' => '(HTML) The post content.',
3127
+ 'excerpt' => '(HTML) An optional post excerpt.',
3128
+ 'slug' => '(string) The name (slug) for your post, used in URLs.',
3129
+ 'publicize' => '(array|bool) True or false if the post be publicized to external services. An array of services if we only want to publicize to a select few. Defaults to true.',
3130
+ 'publicize_message' => '(string) Custom message to be publicized to external services.',
3131
+ 'status' => array(
3132
+ 'publish' => 'Publish the post.',
3133
+ 'private' => 'Privately publish the post.',
3134
+ 'draft' => 'Save the post as a draft.',
3135
+ 'pending' => 'Mark the post as pending editorial approval.',
3136
+ ),
3137
+ 'password' => '(string) The plaintext password protecting the post, or, more likely, the empty string if the post is not password protected.',
3138
+ 'parent' => "(int) The post ID of the new post's parent.",
3139
+ 'categories' => "(string) Comma separated list of categories (name or id)",
3140
+ 'tags' => "(string) Comma separated list of tags (name or id)",
3141
+ 'format' => get_post_format_strings(),
3142
+ 'comments_open' => '(bool) Should the post be open to comments?',
3143
+ 'pings_open' => '(bool) Should the post be open to comments?',
3144
+ ),
3145
+
3146
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/posts/1222/',
3147
+
3148
+ 'example_request_data' => array(
3149
+ 'headers' => array(
3150
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3151
+ ),
3152
+
3153
+ 'body' => array(
3154
+ 'title' => 'Hello World (Again)',
3155
+ 'content' => 'Hello. I am an edited post. I was edited by the API',
3156
+ 'tags' => 'tests',
3157
+ 'categories' => 'API'
3158
+ )
3159
+ ),
3160
+
3161
+ 'example_response' => '
3162
+ {
3163
+ "ID": 1222,
3164
+ "author": {
3165
+ "ID": 422,
3166
+ "email": false,
3167
+ "name": "Justin Shreve",
3168
+ "URL": "http:\/\/justin.wordpress.com",
3169
+ "avatar_URL": "http:\/\/1.gravatar.com\/avatar\/9ea5b460afb2859968095ad3afe4804b?s=96&d=identicon&r=G",
3170
+ "profile_URL": "http:\/\/en.gravatar.com\/justin"
3171
+ },
3172
+ "date": "2012-04-11T15:53:52+00:00",
3173
+ "modified": "2012-04-11T19:44:35+00:00",
3174
+ "title": "Hello World (Again)",
3175
+ "URL": "http:\/\/opossumapi.wordpress.com\/2012\/04\/11\/hello-world-2\/",
3176
+ "short_URL": "http:\/\/wp.me\/p23HjV-jI",
3177
+ "content": "<p>Hello. I am an edited post. I was edited by the API<\/p>\n",
3178
+ "excerpt": "<p>Hello. I am an edited post. I was edited by the API<\/p>\n",
3179
+ "status": "publish",
3180
+ "password": "",
3181
+ "parent": false,
3182
+ "type": "post",
3183
+ "comments_open": true,
3184
+ "pings_open": true,
3185
+ "comment_count": 5,
3186
+ "like_count": 0,
3187
+ "featured_image": "",
3188
+ "format": "standard",
3189
+ "geo": false,
3190
+ "publicize_URLs": [
3191
+
3192
+ ],
3193
+ "tags": {
3194
+ "tests": {
3195
+ "name": "tests",
3196
+ "slug": "tests",
3197
+ "description": "",
3198
+ "post_count": 2,
3199
+ "meta": {
3200
+ "links": {
3201
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/tests",
3202
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/tests\/help",
3203
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3204
+ }
3205
+ }
3206
+ }
3207
+ },
3208
+ "categories": {
3209
+ "API": {
3210
+ "name": "API",
3211
+ "slug": "api",
3212
+ "description": "",
3213
+ "post_count": 2,
3214
+ "parent": 0,
3215
+ "meta": {
3216
+ "links": {
3217
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/api",
3218
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/api\/help",
3219
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3220
+ }
3221
+ }
3222
+ }
3223
+ },
3224
+ "meta": {
3225
+ "links": {
3226
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222",
3227
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222\/help",
3228
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3229
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222\/replies\/",
3230
+ "likes": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222\/likes\/"
3231
+ }
3232
+ }
3233
+ }'
3234
+
3235
+ ) );
3236
+
3237
+ new WPCOM_JSON_API_Update_Post_Endpoint( array(
3238
+ 'description' => 'Delete a Post',
3239
+ 'group' => 'Posts',
3240
+ 'stat' => 'posts:1:delete',
3241
+
3242
+ 'method' => 'POST',
3243
+ 'path' => '/sites/%s/posts/%d/delete',
3244
+ 'path_labels' => array(
3245
+ '$site' => '(int|string) The site ID, The site domain',
3246
+ '$post_ID' => '(int) The post ID',
3247
+ ),
3248
+
3249
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/posts/1222/delete/',
3250
+
3251
+ 'example_request_data' => array(
3252
+ 'headers' => array(
3253
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3254
+ )
3255
+ ),
3256
+
3257
+ 'example_response' => '
3258
+ {
3259
+ "ID": 1222,
3260
+ "author": {
3261
+ "ID": 422,
3262
+ "email": false,
3263
+ "name": "Justin Shreve",
3264
+ "URL": "http:\/\/justin.wordpress.com",
3265
+ "avatar_URL": "http:\/\/1.gravatar.com\/avatar\/9ea5b460afb2859968095ad3afe4804b?s=96&d=identicon&r=G",
3266
+ "profile_URL": "http:\/\/en.gravatar.com\/justin"
3267
+ },
3268
+ "date": "2012-04-11T15:53:52+00:00",
3269
+ "modified": "2012-04-11T19:49:42+00:00",
3270
+ "title": "Hello World (Again)",
3271
+ "URL": "http:\/\/opossumapi.wordpress.com\/2012\/04\/11\/hello-world-2\/",
3272
+ "short_URL": "http:\/\/wp.me\/p23HjV-jI",
3273
+ "content": "<p>Hello. I am an edited post. I was edited by the API<\/p>\n",
3274
+ "excerpt": "<p>Hello. I am an edited post. I was edited by the API<\/p>\n",
3275
+ "status": "trash",
3276
+ "password": "",
3277
+ "parent": false,
3278
+ "type": "post",
3279
+ "comments_open": true,
3280
+ "pings_open": true,
3281
+ "comment_count": 5,
3282
+ "like_count": 0,
3283
+ "featured_image": "",
3284
+ "format": "standard",
3285
+ "geo": false,
3286
+ "publicize_URLs": [
3287
+
3288
+ ],
3289
+ "tags": {
3290
+ "tests": {
3291
+ "name": "tests",
3292
+ "slug": "tests",
3293
+ "description": "",
3294
+ "post_count": 1,
3295
+ "meta": {
3296
+ "links": {
3297
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/tests",
3298
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/tests\/help",
3299
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3300
+ }
3301
+ }
3302
+ }
3303
+ },
3304
+ "categories": {
3305
+ "API": {
3306
+ "name": "API",
3307
+ "slug": "api",
3308
+ "description": "",
3309
+ "post_count": 1,
3310
+ "parent": 0,
3311
+ "meta": {
3312
+ "links": {
3313
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/api",
3314
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/api\/help",
3315
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3316
+ }
3317
+ }
3318
+ }
3319
+ },
3320
+ "meta": {
3321
+ "links": {
3322
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222",
3323
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222\/help",
3324
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3325
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222\/replies\/",
3326
+ "likes": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222\/likes\/"
3327
+ }
3328
+ }
3329
+ }'
3330
+
3331
+ ) );
3332
+
3333
+ /*
3334
+ * Comment endpoints
3335
+ */
3336
+ new WPCOM_JSON_API_List_Comments_Endpoint( array(
3337
+ 'description' => 'Return recent Comments',
3338
+ 'group' => 'Comments',
3339
+ 'stat' => 'comments',
3340
+
3341
+ 'method' => 'GET',
3342
+ 'path' => '/sites/%s/comments/',
3343
+ 'path_labels' => array(
3344
+ '$site' => '(int|string) The site ID, The site domain',
3345
+ ),
3346
+
3347
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/comments/?number=5&pretty=1'
3348
+ ) );
3349
+
3350
+ new WPCOM_JSON_API_List_Comments_Endpoint( array(
3351
+ 'description' => 'Return recent Comments for a Post',
3352
+ 'group' => 'Comments',
3353
+ 'stat' => 'posts:1:replies',
3354
+
3355
+ 'method' => 'GET',
3356
+ 'path' => '/sites/%s/posts/%d/replies/',
3357
+ 'path_labels' => array(
3358
+ '$site' => '(int|string) The site ID, The site domain',
3359
+ '$post_ID' => '(int) The post ID',
3360
+ ),
3361
+
3362
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/posts/7/replies/?number=5&pretty=1'
3363
+ ) );
3364
+
3365
+ new WPCOM_JSON_API_Get_Comment_Endpoint( array(
3366
+ 'description' => 'Return a single Comment',
3367
+ 'group' => 'Comments',
3368
+ 'stat' => 'comments:1',
3369
+
3370
+ 'method' => 'GET',
3371
+ 'path' => '/sites/%s/comments/%d',
3372
+ 'path_labels' => array(
3373
+ '$site' => '(int|string) The site ID, The site domain',
3374
+ '$comment_ID' => '(int) The comment ID'
3375
+ ),
3376
+
3377
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/comments/11/?pretty=1'
3378
+ ) );
3379
+
3380
+ new WPCOM_JSON_API_Update_Comment_Endpoint( array(
3381
+ 'description' => 'Create a Comment on a Post',
3382
+ 'group' => 'Comments',
3383
+ 'stat' => 'posts:1:replies:new',
3384
+
3385
+ 'method' => 'POST',
3386
+ 'path' => '/sites/%s/posts/%d/replies/new',
3387
+ 'path_labels' => array(
3388
+ '$site' => '(int|string) The site ID, The site domain',
3389
+ '$post_ID' => '(int) The post ID'
3390
+ ),
3391
+
3392
+ 'request_format' => array(
3393
+ // explicitly document all input
3394
+ 'content' => '(HTML) The comment text.',
3395
+ // @todo Should we open this up to unauthenticated requests too?
3396
+ // 'author' => '(author object) The author of the comment.',
3397
+ ),
3398
+
3399
+ 'pass_wpcom_user_details' => true,
3400
+ 'can_use_user_details_instead_of_blog_membership' => true,
3401
+
3402
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/posts/1222/replies/new/',
3403
+ 'example_request_data' => array(
3404
+ 'headers' => array(
3405
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3406
+ ),
3407
+ 'body' => array(
3408
+ 'content' => 'Your reply is very interesting. This is a reply.'
3409
+ )
3410
+ ),
3411
+
3412
+ 'example_response' => '
3413
+ {
3414
+ "ID": 9,
3415
+ "post": {
3416
+ "ID": 1222,
3417
+ "type": "post",
3418
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222"
3419
+ },
3420
+ "author": {
3421
+ "ID": 18342963,
3422
+ "email": false,
3423
+ "name": "binarysmash",
3424
+ "URL": "http:\/\/binarysmash.wordpress.com",
3425
+ "avatar_URL": "http:\/\/0.gravatar.com\/avatar\/a178ebb1731d432338e6bb0158720fcc?s=96&d=identicon&r=G",
3426
+ "profile_URL": "http:\/\/en.gravatar.com\/binarysmash"
3427
+ },
3428
+ "date": "2012-04-11T18:09:41+00:00",
3429
+ "URL": "http:\/\/opossumapi.wordpress.com\/2012\/04\/11\/hello-world-2\/#comment-9",
3430
+ "short_URL": "http:\/\/wp.me\/p23HjV-jI%23comment-9",
3431
+ "content": "<p>Your reply is very interesting. This is a reply.<\/p>\n",
3432
+ "status": "approved",
3433
+ "parent": {
3434
+ "ID":8,
3435
+ "type": "comment",
3436
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/8"
3437
+ },
3438
+ "type": "comment",
3439
+ "meta": {
3440
+ "links": {
3441
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/9",
3442
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/9\/help",
3443
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3444
+ "post": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1222",
3445
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/9\/replies\/"
3446
+ }
3447
+ }
3448
+ }',
3449
+ ) );
3450
+
3451
+ new WPCOM_JSON_API_Update_Comment_Endpoint( array(
3452
+ 'description' => 'Create a Comment as a reply to another Comment',
3453
+ 'group' => 'Comments',
3454
+ 'stat' => 'comments:1:replies:new',
3455
+
3456
+ 'method' => 'POST',
3457
+ 'path' => '/sites/%s/comments/%d/replies/new',
3458
+ 'path_labels' => array(
3459
+ '$site' => '(int|string) The site ID, The site domain',
3460
+ '$comment_ID' => '(int) The comment ID'
3461
+ ),
3462
+
3463
+ 'request_format' => array(
3464
+ 'content' => '(HTML) The comment text.',
3465
+ // @todo Should we open this up to unauthenticated requests too?
3466
+ // 'author' => '(author object) The author of the comment.',
3467
+ ),
3468
+
3469
+ 'pass_wpcom_user_details' => true,
3470
+ 'can_use_user_details_instead_of_blog_membership' => true,
3471
+
3472
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/comments/8/replies/new/',
3473
+ 'example_request_data' => array(
3474
+ 'headers' => array(
3475
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3476
+ ),
3477
+ 'body' => array(
3478
+ 'content' => 'This reply is very interesting. This is editing a comment reply via the API.',
3479
+ )
3480
+ ),
3481
+ 'example_response' => '
3482
+ {
3483
+ "ID": 13,
3484
+ "post": {
3485
+ "ID": 1,
3486
+ "type": "post",
3487
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1"
3488
+ },
3489
+ "author": {
3490
+ "ID": 18342963,
3491
+ "email": false,
3492
+ "name": "binarysmash",
3493
+ "URL": "http:\/\/binarysmash.wordpress.com",
3494
+ "avatar_URL": "http:\/\/0.gravatar.com\/avatar\/a178ebb1731d432338e6bb0158720fcc?s=96&d=identicon&r=G",
3495
+ "profile_URL": "http:\/\/en.gravatar.com\/binarysmash"
3496
+ },
3497
+ "date": "2012-04-11T20:16:28+00:00",
3498
+ "URL": "http:\/\/opossumapi.wordpress.com\/2011\/12\/13\/hello-world\/#comment-13",
3499
+ "short_URL": "http:\/\/wp.me\/p23HjV-1%23comment-13",
3500
+ "content": "<p>This reply is very interesting. This is editing a comment reply via the API.<\/p>\n",
3501
+ "status": "approved",
3502
+ "parent": {
3503
+ "ID": 1,
3504
+ "type": "comment",
3505
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/1"
3506
+ },
3507
+ "type": "comment",
3508
+ "meta": {
3509
+ "links": {
3510
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13",
3511
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13\/help",
3512
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3513
+ "post": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1",
3514
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13\/replies\/"
3515
+ }
3516
+ }
3517
+ }'
3518
+
3519
+ ) );
3520
+
3521
+ new WPCOM_JSON_API_Update_Comment_Endpoint( array(
3522
+ 'description' => 'Edit a Comment',
3523
+ 'group' => 'Comments',
3524
+ 'stat' => 'comments:1:POST',
3525
+
3526
+ 'method' => 'POST',
3527
+ 'path' => '/sites/%s/comments/%d',
3528
+ 'path_labels' => array(
3529
+ '$site' => '(int|string) The site ID, The site domain',
3530
+ '$comment_ID' => '(int) The comment ID'
3531
+ ),
3532
+
3533
+ 'request_format' => array(
3534
+ 'date' => "(ISO 8601 datetime) The comment's creation time.",
3535
+ 'content' => '(HTML) The comment text.',
3536
+ 'status' => array(
3537
+ 'approved' => 'Approve the comment.',
3538
+ 'unapproved' => 'Remove the comment from public view and send it to the moderation queue.',
3539
+ 'spam' => 'Mark the comment as spam.',
3540
+ 'unspam' => 'Unmark the comment as spam. Will attempt to set it to the previous status.',
3541
+ 'trash' => 'Send a comment to the trash if trashing is enabled (see constant: EMPTY_TRASH_DAYS).',
3542
+ 'untrash' => 'Untrash a comment. Only works when the comment is in the trash.',
3543
+ ),
3544
+ ),
3545
+
3546
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/comments/8/',
3547
+ 'example_request_data' => array(
3548
+ 'headers' => array(
3549
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3550
+ ),
3551
+ 'body' => array(
3552
+ 'content' => 'This reply is now edited via the API.',
3553
+ 'status' => 'approved',
3554
+ )
3555
+ ),
3556
+ 'example_response' => '
3557
+ {
3558
+ "ID": 13,
3559
+ "post": {
3560
+ "ID": 1,
3561
+ "type": "post",
3562
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1"
3563
+ },
3564
+ "author": {
3565
+ "ID": 18342963,
3566
+ "email": false,
3567
+ "name": "binarysmash",
3568
+ "URL": "http:\/\/binarysmash.wordpress.com",
3569
+ "avatar_URL": "http:\/\/0.gravatar.com\/avatar\/a178ebb1731d432338e6bb0158720fcc?s=96&d=identicon&r=G",
3570
+ "profile_URL": "http:\/\/en.gravatar.com\/binarysmash"
3571
+ },
3572
+ "date": "2012-04-11T20:16:28+00:00",
3573
+ "URL": "http:\/\/opossumapi.wordpress.com\/2011\/12\/13\/hello-world\/#comment-13",
3574
+ "short_URL": "http:\/\/wp.me\/p23HjV-1%23comment-13",
3575
+ "content": "<p>This reply is very interesting. This is editing a comment reply via the API.<\/p>\n",
3576
+ "status": "approved",
3577
+ "parent": {
3578
+ "ID": 1,
3579
+ "type": "comment",
3580
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/1"
3581
+ },
3582
+ "type": "comment",
3583
+ "meta": {
3584
+ "links": {
3585
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13",
3586
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13\/help",
3587
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3588
+ "post": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1",
3589
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13\/replies\/"
3590
+ }
3591
+ }
3592
+ }'
3593
+
3594
+ ) );
3595
+
3596
+ new WPCOM_JSON_API_Update_Comment_Endpoint( array(
3597
+ 'description' => 'Delete a Comment',
3598
+ 'group' => 'Comments',
3599
+ 'stat' => 'comments:1:delete',
3600
+
3601
+ 'method' => 'POST',
3602
+ 'path' => '/sites/%s/comments/%d/delete',
3603
+ 'path_labels' => array(
3604
+ '$site' => '(int|string) The site ID, The site domain',
3605
+ '$comment_ID' => '(int) The comment ID'
3606
+ ),
3607
+
3608
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/comments/8/delete/',
3609
+ 'example_request_data' => array(
3610
+ 'headers' => array(
3611
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3612
+ )
3613
+ ),
3614
+
3615
+ 'example_response' => '
3616
+ {
3617
+ "ID": 13,
3618
+ "post": {
3619
+ "ID": 1,
3620
+ "type": "post",
3621
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1"
3622
+ },
3623
+ "author": {
3624
+ "ID": 18342963,
3625
+ "email": false,
3626
+ "name": "binarysmash",
3627
+ "URL": "http:\/\/binarysmash.wordpress.com",
3628
+ "avatar_URL": "http:\/\/0.gravatar.com\/avatar\/a178ebb1731d432338e6bb0158720fcc?s=96&d=identicon&r=G",
3629
+ "profile_URL": "http:\/\/en.gravatar.com\/binarysmash"
3630
+ },
3631
+ "date": "2012-04-11T20:16:28+00:00",
3632
+ "URL": "http:\/\/opossumapi.wordpress.com\/2011\/12\/13\/hello-world\/#comment-13",
3633
+ "short_URL": "http:\/\/wp.me\/p23HjV-1%23comment-13",
3634
+ "content": "<p>This reply is very interesting. This is editing a comment reply via the API.<\/p>\n",
3635
+ "status": "deleted",
3636
+ "parent": {
3637
+ "ID": 1,
3638
+ "type": "comment",
3639
+ "link": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/1"
3640
+ },
3641
+ "type": "comment",
3642
+ "meta": {
3643
+ "links": {
3644
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13",
3645
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13\/help",
3646
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183",
3647
+ "post": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/posts\/1",
3648
+ "replies": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/comments\/13\/replies\/"
3649
+ }
3650
+ }
3651
+ }'
3652
+
3653
+ ) );
3654
+
3655
+ /**
3656
+ * Taxonomy Management Endpoints
3657
+ */
3658
+ new WPCOM_JSON_API_Get_Taxonomy_Endpoint( array(
3659
+ 'description' => 'Returns information on a single Category',
3660
+ 'group' => 'Taxonomy',
3661
+ 'stat' => 'categories:1',
3662
+
3663
+ 'method' => 'GET',
3664
+ 'path' => '/sites/%s/categories/slug:%s',
3665
+ 'path_labels' => array(
3666
+ '$site' => '(int|string) The site ID, The site domain',
3667
+ '$category' => '(string) The category slug'
3668
+ ),
3669
+
3670
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/categories/slug:community?pretty=1'
3671
+ ) );
3672
+
3673
+ new WPCOM_JSON_API_Get_Taxonomy_Endpoint( array(
3674
+ 'description' => 'Returns information on a single Tag',
3675
+ 'group' => 'Taxonomy',
3676
+ 'stat' => 'tags:1',
3677
+
3678
+ 'method' => 'GET',
3679
+ 'path' => '/sites/%s/tags/slug:%s',
3680
+ 'path_labels' => array(
3681
+ '$site' => '(int|string) The site ID, The site domain',
3682
+ '$tag' => '(string) The tag slug'
3683
+ ),
3684
+
3685
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/en.blog.wordpress.com/tags/slug:wordpresscom?pretty=1'
3686
+ ) );
3687
+
3688
+ new WPCOM_JSON_API_Update_Taxonomy_Endpoint( array(
3689
+ 'description' => 'Create a new Category',
3690
+ 'group' => 'Taxonomy',
3691
+ 'stat' => 'categories:new',
3692
+
3693
+ 'method' => 'POST',
3694
+ 'path' => '/sites/%s/categories/new',
3695
+ 'path_labels' => array(
3696
+ '$site' => '(int|string) The site ID, The site domain',
3697
+ ),
3698
+
3699
+ 'request_format' => array(
3700
+ 'name' => '(string) Name of the category',
3701
+ 'description' => '(string) A description of the category',
3702
+ 'parent' => '(id) ID of the parent category',
3703
+ ),
3704
+
3705
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/categories/new/',
3706
+ 'example_request_data' => array(
3707
+ 'headers' => array(
3708
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3709
+ ),
3710
+ 'body' => array(
3711
+ 'name' => 'Puppies',
3712
+ )
3713
+ ),
3714
+ 'example_response' => '
3715
+ {
3716
+ "name": "Puppies",
3717
+ "slug": "puppies",
3718
+ "description": "",
3719
+ "post_count": 0,
3720
+ "meta": {
3721
+ "links": {
3722
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/puppies",
3723
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/puppies\/help",
3724
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3725
+ }
3726
+ }
3727
+ }'
3728
+
3729
+ ) );
3730
+
3731
+ new WPCOM_JSON_API_Update_Taxonomy_Endpoint( array(
3732
+ 'description' => 'Create a new Tag',
3733
+ 'group' => 'Taxonomy',
3734
+ 'stat' => 'tags:new',
3735
+
3736
+ 'method' => 'POST',
3737
+ 'path' => '/sites/%s/tags/new',
3738
+ 'path_labels' => array(
3739
+ '$site' => '(int|string) The site ID, The site domain',
3740
+ ),
3741
+
3742
+ 'request_format' => array(
3743
+ 'name' => '(string) Name of the tag',
3744
+ 'description' => '(string) A description of the tag',
3745
+ ),
3746
+
3747
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/tags/new/',
3748
+ 'example_request_data' => array(
3749
+ 'headers' => array(
3750
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3751
+ ),
3752
+ 'body' => array(
3753
+ 'name' => 'Kitties'
3754
+ )
3755
+ ),
3756
+ 'example_response' => '
3757
+ {
3758
+ "name": "Kitties",
3759
+ "slug": "kitties",
3760
+ "description": "",
3761
+ "post_count": 0,
3762
+ "meta": {
3763
+ "links": {
3764
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/kitties",
3765
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/kitties\/help",
3766
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3767
+ }
3768
+ }
3769
+ }'
3770
+
3771
+ ) );
3772
+
3773
+ new WPCOM_JSON_API_Update_Taxonomy_Endpoint( array(
3774
+ 'description' => 'Edit a Tag',
3775
+ 'group' => 'Taxonomy',
3776
+ 'stat' => 'tags:1:POST',
3777
+
3778
+ 'method' => 'POST',
3779
+ 'path' => '/sites/%s/tags/slug:%s',
3780
+ 'path_labels' => array(
3781
+ '$site' => '(int|string) The site ID, The site domain',
3782
+ '$tag' => '(string) The tag slug',
3783
+ ),
3784
+
3785
+ 'request_format' => array(
3786
+ 'name' => '(string) Name of the tag',
3787
+ 'description' => '(string) A description of the tag',
3788
+ ),
3789
+
3790
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/tags/slug:testing-tag',
3791
+ 'example_request_data' => array(
3792
+ 'headers' => array(
3793
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3794
+ ),
3795
+ 'body' => array(
3796
+ 'description' => 'Kitties are awesome!'
3797
+ )
3798
+ ),
3799
+ 'example_response' => '
3800
+ {
3801
+ "name": "testing tag",
3802
+ "slug": "testing-tag",
3803
+ "description": "Kitties are awesome!",
3804
+ "post_count": 0,
3805
+ "meta": {
3806
+ "links": {
3807
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/testing-tag",
3808
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/tags\/testing-tag\/help",
3809
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3810
+ }
3811
+ }
3812
+ }'
3813
+
3814
+ ) );
3815
+
3816
+ new WPCOM_JSON_API_Update_Taxonomy_Endpoint( array(
3817
+ 'description' => 'Edit a Category',
3818
+ 'group' => 'Taxonomy',
3819
+ 'stat' => 'categories:1:POST',
3820
+
3821
+ 'method' => 'POST',
3822
+ 'path' => '/sites/%s/categories/slug:%s',
3823
+ 'path_labels' => array(
3824
+ '$site' => '(int|string) The site ID, The site domain',
3825
+ '$category' => '(string) The category slug',
3826
+ ),
3827
+
3828
+ 'request_format' => array(
3829
+ 'name' => '(string) Name of the category',
3830
+ 'description' => '(string) A description of the category',
3831
+ 'parent' => '(id) ID of the parent category',
3832
+ ),
3833
+
3834
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/categories/slug:testing-category',
3835
+ 'example_request_data' => array(
3836
+ 'headers' => array(
3837
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3838
+ ),
3839
+ 'body' => array(
3840
+ 'description' => 'Puppies are great!'
3841
+ )
3842
+ ),
3843
+ 'example_response' => '
3844
+ {
3845
+ "name": "testing category",
3846
+ "slug": "testing-category",
3847
+ "description": "Puppies are great!",
3848
+ "post_count": 0,
3849
+ "parent": 0,
3850
+ "meta": {
3851
+ "links": {
3852
+ "self": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/testing-category",
3853
+ "help": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183\/categories\/testing-category\/help",
3854
+ "site": "https:\/\/public-api.wordpress.com\/rest\/v1\/sites\/30434183"
3855
+ }
3856
+ }
3857
+ }'
3858
+
3859
+ ) );
3860
+
3861
+ new WPCOM_JSON_API_Update_Taxonomy_Endpoint( array(
3862
+ 'description' => 'Delete a Category',
3863
+ 'group' => 'Taxonomy',
3864
+ 'stat' => 'categories:1:delete',
3865
+
3866
+ 'method' => 'POST',
3867
+ 'path' => '/sites/%s/categories/slug:%s/delete',
3868
+ 'path_labels' => array(
3869
+ '$site' => '(int|string) The site ID, The site domain',
3870
+ '$category' => '(string) The category slug',
3871
+ ),
3872
+ 'response_format' => array(
3873
+ 'slug' => '(string) The slug of the deleted category',
3874
+ 'success' => '(bool) Was the operation successful?',
3875
+ ),
3876
+
3877
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/categories/slug:some-category-name/delete',
3878
+ 'example_request_data' => array(
3879
+ 'headers' => array(
3880
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3881
+ ),
3882
+ ),
3883
+ 'example_response' => '{
3884
+ "slug": "some-category-name",
3885
+ "success": "true"
3886
+ }'
3887
+ ) );
3888
+
3889
+ new WPCOM_JSON_API_Update_Taxonomy_Endpoint( array(
3890
+ 'description' => 'Delete a Tag',
3891
+ 'group' => 'Taxonomy',
3892
+ 'stat' => 'tags:1:delete',
3893
+
3894
+ 'method' => 'POST',
3895
+ 'path' => '/sites/%s/tags/slug:%s/delete',
3896
+ 'path_labels' => array(
3897
+ '$site' => '(int|string) The site ID, The site domain',
3898
+ '$tag' => '(string) The tag slug',
3899
+ ),
3900
+ 'response_format' => array(
3901
+ 'slug' => '(string) The slug of the deleted tag',
3902
+ 'success' => '(bool) Was the operation successful?',
3903
+ ),
3904
+
3905
+ 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/30434183/tags/slug:some-tag-name/delete',
3906
+ 'example_request_data' => array(
3907
+ 'headers' => array(
3908
+ 'authorization' => 'Bearer YOUR_API_TOKEN'
3909
+ ),
3910
+ ),
3911
+ 'example_response' => '{
3912
+ "slug": "some-tag-name",
3913
+ "success": "true"
3914
+ }'
3915
+ ) );
class.json-api.php ADDED
@@ -0,0 +1,371 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'WPCOM_JSON_API__DEBUG' ) or define( 'WPCOM_JSON_API__DEBUG', false );
4
+
5
+ class WPCOM_JSON_API {
6
+ static $self = null;
7
+
8
+ var $endpoints = array();
9
+
10
+ var $token_details = array();
11
+
12
+ var $method = '';
13
+ var $url = '';
14
+ var $path = '';
15
+ var $query = array();
16
+ var $post_body = null;
17
+ var $files = null;
18
+ var $content_type = null;
19
+ var $accept = '';
20
+
21
+ var $_server_https;
22
+ var $exit = true;
23
+ var $public_api_scheme = 'https';
24
+
25
+ static function init( $method = null, $url = null, $post_body = null ) {
26
+ if ( !self::$self ) {
27
+ $class = function_exists( 'get_called_class' ) ? get_called_class() : __CLASS__;
28
+ self::$self = new $class( $method, $url, $post_body );
29
+ }
30
+ return self::$self;
31
+ }
32
+
33
+ function add( WPCOM_JSON_API_Endpoint $endpoint ) {
34
+ if ( !isset( $this->endpoints[$endpoint->path] ) ) {
35
+ $this->endpoints[$endpoint->path] = array();
36
+ }
37
+ $this->endpoints[$endpoint->path][$endpoint->method] = $endpoint;
38
+ }
39
+
40
+ static function is_truthy( $value ) {
41
+ switch ( strtolower( (string) $value ) ) {
42
+ case '1' :
43
+ case 't' :
44
+ case 'true' :
45
+ return true;
46
+ }
47
+
48
+ return false;
49
+ }
50
+
51
+ function __construct( $method = null, $url = null, $post_body = null ) {
52
+ if ( is_null( $method ) ) {
53
+ $this->method = strtoupper( $_SERVER['REQUEST_METHOD'] );
54
+ } else {
55
+ $this->method = strtoupper( $method );
56
+ }
57
+ if ( is_null( $url ) ) {
58
+ $this->url = ( is_ssl() ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
59
+ } else {
60
+ $this->url = $url;
61
+ }
62
+
63
+ $parsed = parse_url( $this->url );
64
+ $this->path = $parsed['path'];
65
+
66
+ if ( !empty( $parsed['query'] ) ) {
67
+ wp_parse_str( $parsed['query'], $this->query );
68
+ }
69
+
70
+ if ( isset( $_SERVER['HTTP_ACCEPT'] ) && $_SERVER['HTTP_ACCEPT'] ) {
71
+ $this->accept = $_SERVER['HTTP_ACCEPT'];
72
+ }
73
+
74
+ if ( 'POST' == $this->method ) {
75
+ if ( is_null( $post_body ) ) {
76
+ $this->post_body = file_get_contents( 'php://input' );
77
+
78
+ if ( isset( $_SERVER['HTTP_CONTENT_TYPE'] ) && $_SERVER['HTTP_CONTENT_TYPE'] ) {
79
+ $this->content_type = $_SERVER['HTTP_CONTENT_TYPE'];
80
+ } elseif ( isset( $_SERVER['CONTENT_TYPE'] ) && $_SERVER['CONTENT_TYPE'] ) {
81
+ $this->content_type = $_SERVER['CONTENT_TYPE'] ;
82
+ } elseif ( '{' === $this->post_body[0] ) {
83
+ $this->content_type = 'application/json';
84
+ } else {
85
+ $this->content_type = 'application/x-www-form-urlencoded';
86
+ }
87
+
88
+ if ( 0 === strpos( strtolower( $this->content_type ), 'multipart/' ) ) {
89
+ $this->post_body = http_build_query( stripslashes_deep( $_POST ) );
90
+ $this->files = $_FILES;
91
+ $this->content_type = 'multipart/form-data';
92
+ }
93
+ } else {
94
+ $this->post_body = $post_body;
95
+ $this->content_type = '{' === $this->post_body[0] ? 'application/json' : 'application/x-www-form-urlencoded';
96
+ }
97
+ } else {
98
+ $this->post_body = null;
99
+ $this->content_type = null;
100
+ }
101
+
102
+ $this->_server_https = array_key_exists( 'HTTPS', $_SERVER ) ? $_SERVER['HTTPS'] : '--UNset--';
103
+ }
104
+
105
+ function initialize() {
106
+ $this->token_details['blog_id'] = Jetpack::get_option( 'id' );
107
+ }
108
+
109
+ function serve( $exit = true ) {
110
+ $this->exit = (bool) $exit;
111
+
112
+ add_filter( 'home_url', array( $this, 'ensure_http_scheme_of_home_url' ), 10, 3 );
113
+
114
+ add_filter( 'user_can_richedit', '__return_true' );
115
+
116
+ add_filter( 'comment_edit_pre', array( $this, 'comment_edit_pre' ) );
117
+
118
+ $this->initialize();
119
+
120
+ // Normalize path
121
+ $this->path = untrailingslashit( $this->path );
122
+ $this->path = preg_replace( '#^/rest/v1#', '', $this->path );
123
+
124
+ $allowed_methods = array( 'GET', 'POST' );
125
+ $four_oh_five = false;
126
+
127
+ $is_help = preg_match( '#/help/?$#i', $this->path );
128
+ $matching_endpoints = array();
129
+
130
+ if ( $is_help ) {
131
+ $this->path = substr( rtrim( $this->path, '/' ), 0, -5 );
132
+ // Show help for all matching endpoints regardless of method
133
+ $methods = $allowed_methods;
134
+ $find_all_matching_endpoints = true;
135
+ // How deep to truncate each endpoint's path to see if it matches this help request
136
+ $depth = substr_count( $this->path, '/' ) + 1;
137
+ if ( false !== stripos( $this->accept, 'javascript' ) || false !== stripos( $this->accept, 'json' ) ) {
138
+ $help_content_type = 'json';
139
+ } else {
140
+ $help_content_type = 'html';
141
+ }
142
+ } else {
143
+ if ( in_array( $this->method, $allowed_methods ) ) {
144
+ // Only serve requested method
145
+ $methods = array( $this->method );
146
+ $find_all_matching_endpoints = false;
147
+ } else {
148
+ // We don't allow this requested method - find matching endpoints and send 405
149
+ $methods = $allowed_methods;
150
+ $find_all_matching_endpoints = true;
151
+ $four_oh_five = true;
152
+ }
153
+ }
154
+
155
+ // Find which endpoint to serve
156
+ $found = false;
157
+ foreach ( $this->endpoints as $endpoint_path => $endpoints_by_method ) {
158
+ foreach ( $methods as $method ) {
159
+ if ( !isset( $endpoints_by_method[$method] ) ) {
160
+ continue;
161
+ }
162
+
163
+ // Normalize
164
+ $endpoint_path = untrailingslashit( $endpoint_path );
165
+ if ( $is_help ) {
166
+ // Truncate path at help depth
167
+ $endpoint_path = join( '/', array_slice( explode( '/', $endpoint_path ), 0, $depth ) );
168
+ }
169
+
170
+ // Generate regular expression from sprintf()
171
+ $endpoint_path_regex = str_replace( array( '%s', '%d' ), array( '([^/?&]+)', '(\d+)' ), $endpoint_path );
172
+
173
+ if ( !preg_match( "#^$endpoint_path_regex\$#", $this->path, $path_pieces ) ) {
174
+ // This endpoint does not match the requested path.
175
+ continue;
176
+ }
177
+
178
+ $found = true;
179
+
180
+ if ( $find_all_matching_endpoints ) {
181
+ $matching_endpoints[] = array( $endpoints_by_method[$method], $path_pieces );
182
+ } else {
183
+ // The method parameters are now in $path_pieces
184
+ $endpoint = $endpoints_by_method[$method];
185
+ break 2;
186
+ }
187
+ }
188
+ }
189
+
190
+ if ( !$found ) {
191
+ return $this->output( 404, '', 'text/plain' );
192
+ }
193
+
194
+ if ( $four_oh_five ) {
195
+ $allowed_methods = array();
196
+ foreach ( $matching_endpoints as $matching_endpoint ) {
197
+ $allowed_methods[] = $matching_endpoint[0]->method;
198
+ }
199
+
200
+ header( 'Allow: ' . strtoupper( join( ',', array_unique( $allowed_methods ) ) ) );
201
+ return $this->output( 405, array( 'error' => 'not_allowed', 'error_message' => 'Method not allowed' ) );
202
+ }
203
+
204
+ if ( $is_help ) {
205
+ do_action( 'wpcom_json_api_output', 'help' );
206
+ if ( 'json' === $help_content_type ) {
207
+ $docs = array();
208
+ foreach ( $matching_endpoints as $matching_endpoint ) {
209
+ if ( !$matching_endpoint[0]->in_testing || WPCOM_JSON_API__DEBUG )
210
+ $docs[] = call_user_func( array( $matching_endpoint[0], 'generate_documentation' ) );
211
+ }
212
+ return $this->output( 200, $docs );
213
+ } else {
214
+ status_header( 200 );
215
+ foreach ( $matching_endpoints as $matching_endpoint ) {
216
+ if ( !$matching_endpoint[0]->in_testing || WPCOM_JSON_API__DEBUG )
217
+ call_user_func( array( $matching_endpoint[0], 'document' ) );
218
+ }
219
+ }
220
+ exit;
221
+ }
222
+
223
+ if ( $endpoint->in_testing && !WPCOM_JSON_API__DEBUG ) {
224
+ return $this->output( 404, '', 'text/plain' );
225
+ }
226
+
227
+ do_action( 'wpcom_json_api_output', $endpoint->stat );
228
+
229
+ $response = $this->process_request( $endpoint, $path_pieces );
230
+
231
+ if ( !$response ) {
232
+ return $this->output( 500, '', 'text/plain' );
233
+ } elseif ( is_wp_error( $response ) ) {
234
+ $status_code = $response->get_error_data();
235
+ if ( !$status_code ) {
236
+ $status_code = 400;
237
+ }
238
+ $response = array(
239
+ 'error' => $response->get_error_code(),
240
+ 'message' => $response->get_error_message(),
241
+ );
242
+ return $this->output( $status_code, $response );
243
+ }
244
+
245
+ return $this->output( 200, $response );
246
+ }
247
+
248
+ function process_request( WPCOM_JSON_API_Endpoint $endpoint, $path_pieces ) {
249
+ return call_user_func_array( array( $endpoint, 'callback' ), $path_pieces );
250
+ }
251
+
252
+ function output( $status_code, $response = null, $content_type = 'application/json' ) {
253
+ if ( is_null( $response ) ) {
254
+ $response = new stdClass;
255
+ }
256
+
257
+ if ( 'text/plain' === $content_type ) {
258
+ status_header( (int) $status_code );
259
+ header( 'Content-Type: text/plain' );
260
+ echo $response;
261
+ if ( $this->exit ) {
262
+ exit;
263
+ }
264
+
265
+ return $content_type;
266
+ }
267
+
268
+ if ( isset( $this->query['http_envelope'] ) && self::is_truthy( $this->query['http_envelope'] ) ) {
269
+ $response = array(
270
+ 'code' => (int) $status_code,
271
+ 'headers' => array(
272
+ array(
273
+ 'name' => 'Content-Type',
274
+ 'value' => $content_type,
275
+ ),
276
+ ),
277
+ 'body' => $response,
278
+ );
279
+ $status_code = 200;
280
+ $content_type = 'application/json';
281
+ }
282
+
283
+ status_header( (int) $status_code );
284
+ header( "Content-Type: $content_type" );
285
+ if ( isset( $this->query['callback'] ) && is_string( $this->query['callback'] ) ) {
286
+ $callback = preg_replace( '/[^a-z0-9_.]/i', '', $this->query['callback'] );
287
+ } else {
288
+ $callback = false;
289
+ }
290
+
291
+ if ( $callback ) {
292
+ echo "$callback(";
293
+ }
294
+ echo $this->json_encode( $response );
295
+ if ( $callback ) {
296
+ echo ");";
297
+ }
298
+
299
+ if ( $this->exit ) {
300
+ exit;
301
+ }
302
+
303
+ return $content_type;
304
+ }
305
+
306
+ function ensure_http_scheme_of_home_url( $url, $path, $original_scheme ) {
307
+ if ( $original_scheme ) {
308
+ return $url;
309
+ }
310
+
311
+ return preg_replace( '#^https:#', 'http:', $url );
312
+ }
313
+
314
+ function comment_edit_pre( $comment_content ) {
315
+ return htmlspecialchars_decode( $comment_content, ENT_QUOTES );
316
+ }
317
+
318
+ function json_encode( $data ) {
319
+ return json_encode( $data );
320
+ }
321
+
322
+ function ends_with( $haystack, $needle ) {
323
+ return $needle === substr( $haystack, -strlen( $needle ) );
324
+ }
325
+
326
+ // Returns the site's blog_id in the WP.com ecosystem
327
+ function get_blog_id_for_output() {
328
+ return $this->token_details['blog_id'];
329
+ }
330
+
331
+ // Returns the site's local blog_id
332
+ function get_blog_id( $blog_id ) {
333
+ return $GLOBALS['blog_id'];
334
+ }
335
+
336
+ function switch_to_blog_and_validate_user( $blog_id = 0, $verify_token_for_blog = true ) {
337
+ if ( -1 == get_option( 'blog_public' ) && !current_user_can( 'read' ) ) {
338
+ return new WP_Error( 'unauthorized', 'User cannot access this private blog.', 403 );
339
+ }
340
+
341
+ return $blog_id;
342
+ }
343
+
344
+ function post_like_count() {
345
+ return 0;
346
+ }
347
+
348
+ function get_avatar_url( $email ) {
349
+ add_filter( 'pre_option_show_avatars', '__return_true', 999 );
350
+ $_SERVER['HTTPS'] = 'off';
351
+
352
+ $avatar_img_element = get_avatar( $email, 96, '' );
353
+
354
+ if ( !$avatar_img_element || is_wp_error( $avatar_img_element ) ) {
355
+ $return = '';
356
+ } elseif ( !preg_match( '#src=([\'"])?(.*?)(?(1)\\1|\s)#', $avatar_img_element, $matches ) ) {
357
+ $return = '';
358
+ } else {
359
+ $return = esc_url_raw( htmlspecialchars_decode( $matches[2] ) );
360
+ }
361
+
362
+ remove_filter( 'pre_option_show_avatars', '__return_true', 999 );
363
+ if ( '--UNset--' === $this->_server_https ) {
364
+ unset( $_SERVER['HTTPS'] );
365
+ } else {
366
+ $_SERVER['HTTPS'] = $this->_server_https;
367
+ }
368
+
369
+ return $return;
370
+ }
371
+ }
functions.compat.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !function_exists( 'rawurlencode_deep' ) ) :
4
+ /**
5
+ * Navigates through an array and raw encodes the values to be used in a URL.
6
+ *
7
+ * @since WordPress 3.4.0
8
+ *
9
+ * @param array|string $value The array or string to be encoded.
10
+ * @return array|string $value The encoded array (or string from the callback).
11
+ */
12
+ function rawurlencode_deep( $value ) {
13
+ return is_array( $value ) ? array_map( 'rawurlencode_deep', $value ) : rawurlencode( $value );
14
+ }
15
+ endif;
functions.opengraph.php ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Open Graph Tags
4
+ *
5
+ * Add Open Graph tags so that Facebook (and any other service that supports them)
6
+ * can crawl the site better and we provide a better sharing experience.
7
+ *
8
+ * @link http://ogp.me/
9
+ * @link http://developers.facebook.com/docs/opengraph/
10
+ */
11
+ add_action( 'wp_head', 'jetpack_og_tags' );
12
+
13
+ function jetpack_og_tags() {
14
+ if ( false === apply_filters( 'jetpack_enable_opengraph', true ) ) {
15
+ _deprecated_function( 'jetpack_enable_opengraph', '2.0.3', 'jetpack_enable_open_graph' );
16
+ return;
17
+ }
18
+
19
+ $og_output = "\n<!-- Jetpack Open Graph Tags -->\n";
20
+ $tags = array();
21
+
22
+ $image_width = absint( apply_filters( 'jetpack_open_graph_image_width', 200 ) );
23
+ $image_height = absint( apply_filters( 'jetpack_open_graph_image_height', 200 ) );
24
+ $description_length = 197;
25
+
26
+ if ( is_home() || is_front_page() ) {
27
+ $site_type = get_option( 'open_graph_protocol_site_type' );
28
+ $tags['og:type'] = ! empty( $site_type ) ? $site_type : 'blog';
29
+ $tags['og:title'] = get_bloginfo( 'name' );
30
+ $tags['og:url'] = is_home() ? get_permalink( get_option( 'page_for_posts' ) ) : home_url( '/' );
31
+ $tags['og:description'] = get_bloginfo( 'description' );
32
+
33
+ // Associate a blog's root path with one or more Facebook accounts
34
+ $facebook_admins = get_option( 'facebook_admins' );
35
+ if ( ! empty( $facebook_admins ) )
36
+ $tags['fb:admins'] = $facebook_admins;
37
+
38
+ } else if ( is_author() ) {
39
+ $tags['og:type'] = 'author';
40
+
41
+ $author = get_queried_object();
42
+
43
+ $tags['og:title'] = $author->display_name;
44
+ $tags['og:url'] = get_author_posts_url( $author->ID );
45
+ $tags['og:description'] = $author->description;
46
+
47
+ } else if ( is_singular() ) {
48
+ global $post;
49
+ setup_postdata( $post );
50
+
51
+ $tags['og:type'] = 'article';
52
+ $tags['og:title'] = get_the_title();
53
+ $tags['og:url'] = get_permalink();
54
+ $tags['og:description'] = strip_tags( get_the_excerpt() );
55
+
56
+ // Force a description, to avoid FB getting its own
57
+ if ( empty( $tags['og:description'] ) )
58
+ $tags['og:description'] = ' ';
59
+
60
+ }
61
+
62
+ if ( empty( $tags ) )
63
+ return;
64
+
65
+ $tags['og:site_name'] = get_bloginfo( 'name' );
66
+ $tags['og:image'] = jetpack_og_get_image( $image_width, $image_height );
67
+
68
+ // Facebook whines if you give it an empty title
69
+ if ( empty( $tags['og:title'] ) )
70
+ $tags['og:title'] = __( '(no title)', 'jetpack' );
71
+
72
+ // Shorten the description if it's too long
73
+ $tags['og:description'] = strlen( $tags['og:description'] ) > $description_length ? mb_substr( $tags['og:description'], 0, $description_length ) . '...' : $tags['og:description'];
74
+
75
+ // Add any additional tags here, or modify what we've come up with
76
+ $tags = apply_filters( 'jetpack_open_graph_tags', $tags, compact( 'image_width', 'image_height' ) );
77
+
78
+ foreach ( (array) $tags as $tag_property => $tag_content ) {
79
+ // to accomodate multiple images
80
+ $tag_content = (array) $tag_content;
81
+ $tag_content = array_unique( $tag_content );
82
+
83
+ foreach ( $tag_content as $tag_content_single ) {
84
+ if ( empty( $tag_content_single ) )
85
+ continue; // Don't ever output empty tags
86
+ $og_tag = sprintf( '<meta property="%s" content="%s" />', esc_attr( $tag_property ), esc_attr( $tag_content_single ) );
87
+ $og_output .= apply_filters( 'jetpack_open_graph_output', $og_tag );
88
+ $og_output .= "\n";
89
+ }
90
+ }
91
+
92
+ echo $og_output;
93
+ }
94
+
95
+ function jetpack_og_get_image( $width = 50, $height = 50, $max_images = 4 ) { // Facebook requires thumbnails to be a minimum of 50x50
96
+ $image = '';
97
+
98
+ if ( is_singular() && !is_home() && !is_front_page() ) {
99
+ global $post;
100
+ $image = '';
101
+
102
+ // Attempt to find something good for this post using our generalized PostImages code
103
+ if ( class_exists( 'Jetpack_PostImages' ) ) {
104
+ $post_images = Jetpack_PostImages::get_images( $post->ID, array( 'width' => $width, 'height' => $height ) );
105
+ if ( $post_images && !is_wp_error( $post_images ) ) {
106
+ $image = array();
107
+ foreach ( (array) $post_images as $post_image ) {
108
+ $image[] = $post_image['src'];
109
+ }
110
+ }
111
+ }
112
+ } else if ( is_author() ) {
113
+ $author = get_queried_object();
114
+ if ( function_exists( 'get_avatar_url' ) ) {
115
+ $avatar = get_avatar_url( $author->user_email, $width );
116
+
117
+ if ( ! empty( $avatar ) ) {
118
+ if ( is_array( $avatar ) )
119
+ $image = $avatar[0];
120
+ else
121
+ $image = $avatar;
122
+ }
123
+ }
124
+ else {
125
+ $has_filter = has_filter( 'pre_option_show_avatars', '__return_true' );
126
+ if ( !$has_filter ) {
127
+ add_filter( 'pre_option_show_avatars', '__return_true' );
128
+ }
129
+ $avatar = get_avatar( $author->user_email, $width );
130
+ if ( !$has_filter ) {
131
+ remove_filter( 'pre_option_show_avatars', '__return_true' );
132
+ }
133
+
134
+ if ( !empty( $avatar ) && !is_wp_error( $avatar ) ) {
135
+ if ( preg_match( '/src=["\']([^"\']+)["\']/', $avatar, $matches ) );
136
+ $image = wp_specialchars_decode( $matches[1], ENT_QUOTES );
137
+ }
138
+ }
139
+ }
140
+
141
+ // Fallback to Blavatar if available
142
+ if ( function_exists( 'blavatar_domain' ) ) {
143
+ $blavatar_domain = blavatar_domain( site_url() );
144
+ if ( empty( $image ) && blavatar_exists( $blavatar_domain ) )
145
+ $image = blavatar_url( $blavatar_domain, 'img', $width );
146
+ }
147
+
148
+ return $image;
149
+ }
functions.photon.php ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Generates a Photon URL.
5
+ *
6
+ * @see http://developer.wordpress.com/docs/photon/
7
+ *
8
+ * @param string $image_url URL to the publicly accessible image you want to manipulate
9
+ * @param array|string $args An array of arguments, i.e. array( 'w' => '300', 'resize' => array( 123, 456 ) ), or in string form (w=123&h=456)
10
+ * @return string The raw final URL. You should run this through esc_url() before displaying it.
11
+ */
12
+ function jetpack_photon_url( $image_url, $args = array(), $scheme = null ) {
13
+ $image_url = trim( $image_url );
14
+
15
+ $image_url = apply_filters( 'jetpack_photon_pre_image_url', $image_url, $args, $scheme );
16
+ $args = apply_filters( 'jetpack_photon_pre_args', $args, $image_url, $scheme );
17
+
18
+ if ( empty( $image_url ) )
19
+ return $image_url;
20
+
21
+ $image_url_parts = parse_url( $image_url );
22
+
23
+ // Unable to parse
24
+ if ( ! is_array( $image_url_parts ) || empty( $image_url_parts['host'] ) || empty( $image_url_parts['path'] ) )
25
+ return $image_url;
26
+
27
+ if ( is_array( $args ) ){
28
+ // Convert values that are arrays into strings
29
+ foreach ( $args as $arg => $value ) {
30
+ if ( is_array( $value ) ) {
31
+ $args[$arg] = implode( ',', $value );
32
+ }
33
+ }
34
+
35
+ // Encode values
36
+ // See http://core.trac.wordpress.org/ticket/17923
37
+ $args = rawurlencode_deep( $args );
38
+ }
39
+
40
+ // You can't run a Photon URL through Photon again because query strings are stripped.
41
+ // So if the image is already a Photon URL, append the new arguments to the existing URL.
42
+ if ( in_array( $image_url_parts['host'], array( 'i0.wp.com', 'i1.wp.com', 'i2.wp.com' ) ) ) {
43
+ $photon_url = add_query_arg( $args, $image_url );
44
+
45
+ return jetpack_photon_url_scheme( $photon_url, $scheme );
46
+ }
47
+
48
+ // This setting is Photon Server dependent
49
+ if ( ! apply_filters( 'jetpack_photon_any_extension_for_domain', false, $image_url_parts['host'] ) ) {
50
+ // Photon doesn't support query strings so we ignore them and look only at the path.
51
+ // However some source images are served via PHP so check the no-query-string extension.
52
+ // For future proofing, this is a blacklist of common issues rather than a whitelist.
53
+ $extension = pathinfo( $image_url_parts['path'], PATHINFO_EXTENSION );
54
+ if ( empty( $extension ) || in_array( $extension, array( 'php' ) ) )
55
+ return $image_url;
56
+ }
57
+
58
+ $image_host_path = $image_url_parts['host'] . $image_url_parts['path'];
59
+
60
+ // Figure out which CDN subdomain to use
61
+ srand( crc32( $image_host_path ) );
62
+ $subdomain = rand( 0, 2 );
63
+ srand();
64
+
65
+ $photon_url = "http://i{$subdomain}.wp.com/$image_host_path";
66
+
67
+ // This setting is Photon Server dependent
68
+ if ( isset( $image_url_parts['query'] ) && apply_filters( 'jetpack_photon_add_query_string_to_domain', false, $image_url_parts['host'] ) ) {
69
+ $photon_url .= '?q=' . rawurlencode( $image_url_parts['query'] );
70
+ }
71
+
72
+ if ( $args ) {
73
+ if ( is_array( $args ) ) {
74
+ $photon_url = add_query_arg( $args, $photon_url );
75
+ } else {
76
+ // You can pass a query string for complicated requests but where you still want CDN subdomain help, etc.
77
+ $photon_url .= '?' . $args;
78
+ }
79
+ }
80
+
81
+ return jetpack_photon_url_scheme( $photon_url, $scheme );
82
+ }
83
+
84
+
85
+ /**
86
+ * WordPress.com
87
+ *
88
+ * If a cropped WP.com-hosted image is the source image, have Photon replicate the crop.
89
+ */
90
+ add_filter( 'jetpack_photon_pre_args', 'jetpack_photon_parse_wpcom_query_args', 10, 2 );
91
+
92
+ function jetpack_photon_parse_wpcom_query_args( $args, $image_url ) {
93
+ $image_url_parts = parse_url( $image_url );
94
+
95
+ if ( '.files.wordpress.com' != substr( $image_url_parts['host'], -20 ) )
96
+ return $args;
97
+
98
+ if ( empty( $image_url_parts['query'] ) )
99
+ return $args;
100
+
101
+ $wpcom_args = wp_parse_args( $image_url_parts['query'] );
102
+
103
+ if ( empty( $wpcom_args['w'] ) || empty( $wpcom_args['h'] ) )
104
+ return $args;
105
+
106
+ // Keep the crop by using "resize"
107
+ if ( ! empty( $wpcom_args['crop'] ) ) {
108
+ if ( is_array( $args ) ) {
109
+ $args = array_merge( array( 'resize' => array( $wpcom_args['w'], $wpcom_args['h'] ) ), $args );
110
+ } else {
111
+ $args = 'resize=' . rawurlencode( absint( $wpcom_args['w'] ) . ',' . absint( $wpcom_args['h'] ) ) . '&' . $args;
112
+ }
113
+ } else {
114
+ if ( is_array( $args ) ) {
115
+ $args = array_merge( array( 'fit' => array( $wpcom_args['w'], $wpcom_args['h'] ) ), $args );
116
+ } else {
117
+ $args = 'fit=' . rawurlencode( absint( $wpcom_args['w'] ) . ',' . absint( $wpcom_args['h'] ) ) . '&' . $args;
118
+ }
119
+ }
120
+
121
+ return $args;
122
+ }
123
+
124
+
125
+ /**
126
+ * Facebook
127
+ */
128
+ add_filter( 'jetpack_photon_add_query_string_to_domain', 'jetpack_photon_allow_facebook_graph_domain', 10, 2 );
129
+ add_filter( 'jetpack_photon_any_extension_for_domain', 'jetpack_photon_allow_facebook_graph_domain', 10, 2 );
130
+
131
+ function jetpack_photon_url_scheme( $url, $scheme ) {
132
+ if ( ! in_array( $scheme, array( 'http', 'https', 'network_path' ) ) ) {
133
+ $scheme = is_ssl() ? 'https' : 'http';
134
+ }
135
+
136
+ if ( 'network_path' == $scheme ) {
137
+ $scheme_slashes = '//';
138
+ } else {
139
+ $scheme_slashes = "$scheme://";
140
+ }
141
+
142
+ return preg_replace( '#^[a-z:]+//#i', $scheme_slashes, $url );
143
+ }
144
+
145
+ function jetpack_photon_allow_facebook_graph_domain( $allow = false, $domain ) {
146
+ switch ( $domain ) {
147
+ case 'graph.facebook.com' :
148
+ return true;
149
+ }
150
+
151
+ return $allow;
152
+ }
jetpack.php ADDED
@@ -0,0 +1,4529 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Plugin Name: Jetpack by WordPress.com
5
+ * Plugin URI: http://wordpress.org/extend/plugins/jetpack/
6
+ * Description: Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.
7
+ * Author: Automattic
8
+ * Version: 2.0.7
9
+ * Author URI: http://jetpack.me
10
+ * License: GPL2+
11
+ * Text Domain: jetpack
12
+ * Domain Path: /languages/
13
+ */
14
+
15
+ defined( 'JETPACK__API_BASE' ) or define( 'JETPACK__API_BASE', 'https://jetpack.wordpress.com/jetpack.' );
16
+ define( 'JETPACK__API_VERSION', 1 );
17
+ define( 'JETPACK__MINIMUM_WP_VERSION', '3.2' );
18
+ defined( 'JETPACK_CLIENT__AUTH_LOCATION' ) or define( 'JETPACK_CLIENT__AUTH_LOCATION', 'header' );
19
+ defined( 'JETPACK_CLIENT__HTTPS' ) or define( 'JETPACK_CLIENT__HTTPS', 'AUTO' );
20
+ define( 'JETPACK__VERSION', '2.0.7' );
21
+ define( 'JETPACK__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
22
+ defined( 'JETPACK__GLOTPRESS_LOCALES_PATH' ) or define( 'JETPACK__GLOTPRESS_LOCALES_PATH', JETPACK__PLUGIN_DIR . 'locales.php' );
23
+
24
+ define( 'JETPACK_MASTER_USER', true );
25
+
26
+ /*
27
+ Options:
28
+ jetpack_options (array)
29
+ An array of options.
30
+ @see Jetpack::get_option_names()
31
+
32
+ jetpack_register (string)
33
+ Temporary verification secrets.
34
+
35
+ jetpack_activated (int)
36
+ 1: the plugin was activated normally
37
+ 2: the plugin was activated on this site because of a network-wide activation
38
+ 3: the plugin was auto-installed
39
+ 4: the plugin was manually disconnected (but is still installed)
40
+
41
+ jetpack_active_modules (array)
42
+ Array of active module slugs.
43
+
44
+ jetpack_do_activate (bool)
45
+ Flag for "activating" the plugin on sites where the activation hook never fired (auto-installs)
46
+ */
47
+
48
+ class Jetpack {
49
+ var $xmlrpc_server = null;
50
+
51
+ private $xmlrpc_verification = null;
52
+
53
+ var $HTTP_RAW_POST_DATA = null; // copy of $GLOBALS['HTTP_RAW_POST_DATA']
54
+
55
+ var $plugins_to_deactivate = array(
56
+ 'stats' => array( 'stats/stats.php', 'WordPress.com Stats' ),
57
+ 'shortlinks' => array( 'stats/stats.php', 'WordPress.com Stats' ),
58
+ 'sharedaddy' => array( 'sharedaddy/sharedaddy.php', 'Sharedaddy' ),
59
+ 'twitter-widget' => array( 'wickett-twitter-widget/wickett-twitter-widget.php', 'Wickett Twitter Widget' ),
60
+ 'after-the-deadline' => array( 'after-the-deadline/after-the-deadline.php', 'After The Deadline' ),
61
+ 'contact-form' => array( 'grunion-contact-form/grunion-contact-form.php', 'Grunion Contact Form' ),
62
+ 'custom-css' => array( 'safecss/safecss.php', 'WordPress.com Custom CSS' ),
63
+ );
64
+
65
+ var $capability_translations = array(
66
+ 'administrator' => 'manage_options',
67
+ 'editor' => 'edit_others_posts',
68
+ 'author' => 'publish_posts',
69
+ 'contributor' => 'edit_posts',
70
+ 'subscriber' => 'read',
71
+ );
72
+
73
+ /**
74
+ * Message to display in admin_notice
75
+ * @var string
76
+ */
77
+ var $message = '';
78
+
79
+ /**
80
+ * Error to display in admin_notice
81
+ * @var string
82
+ */
83
+ var $error = '';
84
+
85
+ /**
86
+ * Modules that need more privacy description.
87
+ * @var string
88
+ */
89
+ var $privacy_checks = '';
90
+
91
+ /**
92
+ * Stats to record once the page loads
93
+ *
94
+ * @var array
95
+ */
96
+ var $stats = array();
97
+
98
+ /**
99
+ * Jetpack_Sync object
100
+ */
101
+ var $sync;
102
+
103
+ /**
104
+ * Verified data for JSON authorization request
105
+ */
106
+ var $json_api_authorization_request = array();
107
+
108
+ /**
109
+ * Singleton
110
+ * @static
111
+ */
112
+ function init() {
113
+ static $instance = false;
114
+
115
+ if ( !$instance ) {
116
+ load_plugin_textdomain( 'jetpack', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
117
+ $instance = new Jetpack;
118
+
119
+ $instance->plugin_upgrade();
120
+ }
121
+
122
+ return $instance;
123
+ }
124
+
125
+ /**
126
+ * Must never be called statically
127
+ */
128
+ function plugin_upgrade() {
129
+ // Upgrade: 1.1 -> 1.2
130
+ if ( get_option( 'jetpack_id' ) ) {
131
+ // Move individual jetpack options to single array of options
132
+ $options = array();
133
+ foreach ( Jetpack::get_option_names() as $option ) {
134
+ if ( false !== $value = get_option( "jetpack_$option" ) ) {
135
+ $options[$option] = $value;
136
+ }
137
+ }
138
+
139
+ if ( $options ) {
140
+ Jetpack::update_options( $options );
141
+
142
+ foreach ( array_keys( $options ) as $option ) {
143
+ delete_option( "jetpack_$option" );
144
+ }
145
+ }
146
+
147
+ // Add missing version and old_version options
148
+ if ( !$version = Jetpack::get_option( 'version' ) ) {
149
+ $version = $old_version = '1.1:' . time();
150
+ Jetpack::update_options( compact( 'version', 'old_version' ) );
151
+ }
152
+ }
153
+
154
+ // Upgrade from a single user token to a user_id-indexed array and a master_user ID
155
+ if ( !Jetpack::get_option( 'user_tokens' ) ) {
156
+ if ( $user_token = Jetpack::get_option( 'user_token' ) ) {
157
+ $token_parts = explode( '.', $user_token );
158
+ if ( isset( $token_parts[2] ) ) {
159
+ $master_user = $token_parts[2];
160
+ $user_tokens = array( $master_user => $user_token );
161
+ Jetpack::update_options( compact( 'master_user', 'user_tokens' ) );
162
+ Jetpack::delete_option( 'user_token' );
163
+ } else {
164
+ // @todo: is this even possible?
165
+ trigger_error( sprintf( 'Jetpack::plugin_upgrade found no user_id in user_token "%s"', $user_token ), E_USER_WARNING );
166
+ }
167
+ }
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Constructor. Initializes WordPress hooks
173
+ */
174
+ function Jetpack() {
175
+ $this->sync = new Jetpack_Sync;
176
+
177
+ // Modules should do Jetpack_Sync::sync_options( __FILE__, $option, ... ); instead
178
+ // We access the "internal" method here only because the Jetpack object isn't instantiated yet
179
+ $this->sync->options( __FILE__,
180
+ 'home',
181
+ 'siteurl',
182
+ 'blogname',
183
+ 'gmt_offset',
184
+ 'timezone_string'
185
+ );
186
+
187
+ if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST && isset( $_GET['for'] ) && 'jetpack' == $_GET['for'] ) {
188
+ @ini_set( 'display_errors', false ); // Display errors can cause the XML to be not well formed.
189
+
190
+ require_once dirname( __FILE__ ) . '/class.jetpack-xmlrpc-server.php';
191
+ $this->xmlrpc_server = new Jetpack_XMLRPC_Server();
192
+
193
+ $this->require_jetpack_authentication();
194
+
195
+ if ( $this->is_active() ) {
196
+ // Hack to preserve $HTTP_RAW_POST_DATA
197
+ add_filter( 'xmlrpc_methods', array( $this, 'xmlrpc_methods' ) );
198
+
199
+ $signed = $this->verify_xml_rpc_signature();
200
+ if ( $signed && ! is_wp_error( $signed ) ) {
201
+ // The actual API methods.
202
+ add_filter( 'xmlrpc_methods', array( $this->xmlrpc_server, 'xmlrpc_methods' ) );
203
+ } else {
204
+ add_filter( 'xmlrpc_methods', '__return_empty_array' );
205
+ }
206
+ } else {
207
+ // The bootstrap API methods.
208
+ add_filter( 'xmlrpc_methods', array( $this->xmlrpc_server, 'bootstrap_xmlrpc_methods' ) );
209
+ }
210
+
211
+ // Now that no one can authenticate, and we're whitelisting all XML-RPC methods, force enable_xmlrpc on.
212
+ add_filter( 'pre_option_enable_xmlrpc', '__return_true' );
213
+ } elseif ( is_admin() && isset( $_POST['action'] ) && 'jetpack_upload_file' == $_POST['action'] ) {
214
+ $this->require_jetpack_authentication();
215
+ $this->add_remote_request_handlers();
216
+ } else {
217
+ if ( $this->is_active() ) {
218
+ add_action( 'login_form_jetpack_json_api_authorization', array( &$this, 'login_form_json_api_authorization' ) );
219
+ }
220
+ }
221
+
222
+ add_action( 'jetpack_clean_nonces', array( $this, 'clean_nonces' ) );
223
+ if ( !wp_next_scheduled( 'jetpack_clean_nonces' ) ) {
224
+ wp_schedule_event( time(), 'hourly', 'jetpack_clean_nonces' );
225
+ }
226
+
227
+ add_filter( 'xmlrpc_blog_options', array( $this, 'xmlrpc_options' ) );
228
+
229
+ add_action( 'admin_menu', array( $this, 'admin_menu' ) );
230
+ add_action( 'admin_init', array( $this, 'admin_init' ) );
231
+ add_action( 'admin_init', array( $this, 'dismiss_jetpack_notice' ) );
232
+
233
+ add_action( 'wp_ajax_jetpack-check-news-subscription', array( $this, 'check_news_subscription' ) );
234
+ add_action( 'wp_ajax_jetpack-subscribe-to-news', array( $this, 'subscribe_to_news' ) );
235
+
236
+ add_action( 'wp_loaded', array( $this, 'register_assets' ) );
237
+ add_action( 'wp_enqueue_scripts', array( $this, 'devicepx' ) );
238
+ add_action( 'customize_controls_enqueue_scripts', array( $this, 'devicepx' ) );
239
+ add_action( 'admin_enqueue_scripts', array( $this, 'devicepx' ) );
240
+
241
+ add_action( 'jetpack_activate_module', array( $this, 'activate_module_actions' ) );
242
+
243
+ add_action( 'plugins_loaded', array( $this, 'check_open_graph' ), 999 );
244
+ }
245
+
246
+ function require_jetpack_authentication() {
247
+ // Don't let anyone authenticate
248
+ $_COOKIE = array();
249
+ remove_all_filters( 'authenticate' );
250
+
251
+ if ( $this->is_active() ) {
252
+ // Allow Jetpack authentication
253
+ add_filter( 'authenticate', array( $this, 'authenticate_jetpack' ), 10, 3 );
254
+ }
255
+ }
256
+
257
+ /**
258
+ * Register assets for use in various modules and the Jetpack admin page.
259
+ *
260
+ * @uses wp_script_is, wp_register_script, plugins_url
261
+ * @action wp_loaded
262
+ * @return null
263
+ */
264
+ public function register_assets() {
265
+ if ( ! wp_script_is( 'spin', 'registered' ) )
266
+ wp_register_script( 'spin', plugins_url( '_inc/spin.js', __FILE__ ), false, '1.2.4' );
267
+
268
+ if ( ! wp_script_is( 'jquery.spin', 'registered' ) )
269
+ wp_register_script( 'jquery.spin', plugins_url( '_inc/jquery.spin.js', __FILE__ ) , array( 'jquery', 'spin' ) );
270
+ }
271
+
272
+ /**
273
+ * Device Pixels support
274
+ * This improves the resolution of gravatars and wordpress.com uploads on hi-res and zoomed browsers.
275
+ */
276
+ function devicepx() {
277
+ wp_enqueue_script( 'devicepx', ( is_ssl() ? 'https' : 'http' ) . '://s0.wp.com/wp-content/js/devicepx-jetpack.js', array(), gmdate('oW'), true );
278
+ }
279
+
280
+ /**
281
+ * Is Jetpack active?
282
+ */
283
+ function is_active() {
284
+ return (bool) Jetpack_Data::get_access_token( JETPACK_MASTER_USER );
285
+ }
286
+
287
+ /**
288
+ * Is a given user (or the current user if none is specified) linked to a WordPress.com user?
289
+ */
290
+ function is_user_connected( $user_id = false ) {
291
+ $user_id = false === $user_id ? get_current_user_id() : absint( $user_id );
292
+ if ( !$user_id ) {
293
+ return false;
294
+ }
295
+ return (bool) Jetpack_Data::get_access_token( $user_id );
296
+ }
297
+
298
+ function current_user_is_connection_owner() {
299
+ $user_token = Jetpack_Data::get_access_token( JETPACK_MASTER_USER );
300
+ return $user_token && is_object( $user_token ) && isset( $user_token->external_user_id ) && get_current_user_id() === $user_token->external_user_id;
301
+ }
302
+
303
+ /**
304
+ * Synchronize connected user role changes
305
+ */
306
+ function user_role_change( $user_id ) {
307
+ if ( $this->is_active() && $this->is_user_connected( $user_id ) ) {
308
+
309
+ $current_user_id = get_current_user_id();
310
+ wp_set_current_user( $user_id );
311
+ $role = $this->translate_current_user_to_role();
312
+ $signed_role = $this->sign_role( $role );
313
+ wp_set_current_user( $current_user_id );
314
+
315
+ $master_token = Jetpack_Data::get_access_token( JETPACK_MASTER_USER );
316
+ $master_user_id = absint( $master_token->external_user_id );
317
+
318
+ if ( !$master_user_id )
319
+ return; // this shouldn't happen
320
+
321
+ $this->xmlrpc_async_call( 'jetpack.updateRole', $user_id, $signed_role );
322
+ //@todo retry on failure
323
+
324
+ //try to choose a new master if we're demoting the current one
325
+ if ( $user_id == $master_user_id && 'administrator' != $role ) {
326
+ $query = new WP_User_Query( array(
327
+ 'fields' => array( 'id' ),
328
+ 'role' => 'administrator',
329
+ 'orderby' => 'id',
330
+ 'exclude' => array( $master_user_id ),
331
+ )
332
+ );
333
+ $new_master = false;
334
+ foreach ( $query->results as $result ) {
335
+ $uid = absint( $result->id );
336
+ if ( $uid && $this->is_user_connected( $uid ) ) {
337
+ $new_master = $uid;
338
+ break;
339
+ }
340
+ }
341
+
342
+ if ( $new_master ) {
343
+ Jetpack::update_option( 'master_user', $new_master );
344
+ }
345
+ // else disconnect..?
346
+ }
347
+ }
348
+ }
349
+
350
+ /**
351
+ * Loads the currently active modules.
352
+ */
353
+ function load_modules() {
354
+ if ( !Jetpack::is_active() ) {
355
+ return;
356
+ }
357
+
358
+ $version = Jetpack::get_option( 'version' );
359
+ if ( !$version ) {
360
+ $version = $old_version = JETPACK__VERSION . ':' . time();
361
+ Jetpack::update_options( compact( 'version', 'old_version' ) );
362
+ }
363
+ list( $version ) = explode( ':', $version );
364
+
365
+ $modules = array_filter( Jetpack::get_active_modules(), array( 'Jetpack', 'is_module' ) );
366
+
367
+ // Don't load modules that have had "Major" changes since the stored version until they have been deactivated/reactivated through the lint check.
368
+ if ( version_compare( $version, JETPACK__VERSION, '<' ) ) {
369
+ $updated_modules = array();
370
+ foreach ( $modules as $module ) {
371
+ $module_data = Jetpack::get_module( $module );
372
+ if ( !isset( $module_data['changed'] ) ) {
373
+ continue;
374
+ }
375
+
376
+ if ( version_compare( $module_data['changed'], $version, '<=' ) ) {
377
+ continue;
378
+ }
379
+
380
+ $updated_modules[] = $module;
381
+ }
382
+
383
+ $modules = array_diff( $modules, $updated_modules );
384
+ }
385
+
386
+ foreach ( $modules as $module ) {
387
+ if ( did_action( 'jetpack_module_loaded_' . $module ) ) {
388
+ continue;
389
+ }
390
+ require Jetpack::get_module_path( $module );
391
+ do_action( 'jetpack_module_loaded_' . $module );
392
+ }
393
+
394
+ do_action( 'jetpack_modules_loaded' );
395
+
396
+ // Load module-specific code that is needed even when a module isn't active. Loaded here because code contained therein may need actions such as setup_theme.
397
+ require_once( dirname( __FILE__ ) . '/modules/module-extras.php' );
398
+ }
399
+
400
+ /**
401
+ * Check if Jetpack's Open Graph tags should be used.
402
+ * If certain plugins are active, Jetpack's og tags are suppressed.
403
+ *
404
+ * @uses Jetpack::get_active_modules, add_filter, get_option, apply_filters
405
+ * @action plugins_loaded
406
+ * @return null
407
+ */
408
+ public function check_open_graph() {
409
+ if ( in_array( 'publicize', Jetpack::get_active_modules() ) || in_array( 'sharedaddy', Jetpack::get_active_modules() ) )
410
+ add_filter( 'jetpack_enable_open_graph', '__return_true', 0 );
411
+
412
+ $active_plugins = get_option( 'active_plugins', array() );
413
+
414
+ $conflicting_plugins = array(
415
+ 'facebook/facebook.php', // Official Facebook plugin
416
+ 'wordpress-seo/wp-seo.php', // WordPress SEO by Yoast
417
+ 'add-link-to-facebook/add-link-to-facebook.php', // Add Link to Facebook
418
+ 'facebook-awd/AWD_facebook.php', // Facebook AWD All in one
419
+ 'header-footer/plugin.php', // Header and Footer
420
+ 'nextgen-facebook/nextgen-facebook.php', // NextGEN Facebook OG
421
+ 'seo-facebook-comments/seofacebook.php', // SEO Facebook Comments
422
+ 'seo-ultimate/seo-ultimate.php', // SEO Ultimate
423
+ 'sexybookmarks/sexy-bookmarks.php', // Shareaholic
424
+ 'shareaholic/sexy-bookmarks.php', // Shareaholic
425
+ 'social-discussions/social-discussions.php', // Social Discussions
426
+ 'social-networks-auto-poster-facebook-twitter-g/NextScripts_SNAP.php', // NextScripts SNAP
427
+ 'wordbooker/wordbooker.php', // Wordbooker
428
+ 'socialize/socialize.php', // Socialize
429
+ 'simple-facebook-connect/sfc.php', // Simple Facebook Connect
430
+ 'social-sharing-toolkit/social_sharing_toolkit.php', // Social Sharing Toolkit
431
+ 'wp-facebook-open-graph-protocol/wp-facebook-ogp.php', // WP Facebook Open Graph protocol
432
+ 'opengraph/opengraph.php', // Open Graph
433
+ 'sharepress/sharepress.php', // SharePress
434
+ );
435
+
436
+ foreach ( $conflicting_plugins as $plugin ) {
437
+ if ( in_array( $plugin, $active_plugins ) ) {
438
+ add_filter( 'jetpack_enable_open_graph', '__return_false', 99 );
439
+ break;
440
+ }
441
+ }
442
+
443
+ if ( apply_filters( 'jetpack_enable_open_graph', false ) )
444
+ require_once dirname( __FILE__ ) . '/functions.opengraph.php';
445
+ }
446
+
447
+ /* Jetpack Options API */
448
+
449
+ function get_option_names( $type = 'compact' ) {
450
+ switch ( $type ) {
451
+ case 'non-compact' :
452
+ case 'non_compact' :
453
+ return array(
454
+ 'register',
455
+ 'activated',
456
+ 'active_modules',
457
+ 'do_activate',
458
+ 'publicize',
459
+ );
460
+ }
461
+
462
+ return array(
463
+ 'id', // (int) The Client ID/WP.com Blog ID of this site.
464
+ 'blog_token', // (string) The Client Secret/Blog Token of this site.
465
+ 'user_token', // (string) The User Token of this site. (deprecated)
466
+ 'publicize_connections', // (array) An array of Publicize connections from WordPress.com
467
+ 'master_user', // (int) The local User ID of the user who connected this site to jetpack.wordpress.com.
468
+ 'user_tokens', // (array) User Tokens for each user of this site who has connected to jetpack.wordpress.com.
469
+ 'version', // (string) Used during upgrade procedure to auto-activate new modules. version:time
470
+ 'old_version', // (string) Used to determine which modules are the most recently added. previous_version:time
471
+ 'fallback_no_verify_ssl_certs', // (int) Flag for determining if this host must skip SSL Certificate verification due to misconfigured SSL.
472
+ 'time_diff', // (int) Offset between Jetpack server's clocks and this server's clocks. Jetpack Server Time = time() + (int) Jetpack::get_option( 'time_diff' )
473
+ 'public', // (int|bool) If we think this site is public or not (1, 0), false if we haven't yet tried to figure it out.
474
+ );
475
+ }
476
+
477
+ /**
478
+ * Returns the requested option. Looks in jetpack_options or jetpack_$name as appropriate.
479
+ *
480
+ * @param string $name Option name
481
+ * @param mixed $default (optional)
482
+ */
483
+ function get_option( $name, $default = false ) {
484
+ if ( in_array( $name, Jetpack::get_option_names( 'non_compact' ) ) ) {
485
+ return get_option( "jetpack_$name" );
486
+ } else if ( !in_array( $name, Jetpack::get_option_names() ) ) {
487
+ trigger_error( sprintf( 'Invalid Jetpack option name: %s', $name ), E_USER_WARNING );
488
+ return false;
489
+ }
490
+
491
+ $options = get_option( 'jetpack_options' );
492
+ if ( is_array( $options ) && isset( $options[$name] ) ) {
493
+ return $options[$name];
494
+ }
495
+
496
+ return $default;
497
+ }
498
+
499
+ /**
500
+ * Stores two secrets and a timestamp so WordPress.com can make a request back and verify an action
501
+ * Does some extra verification so urls (such as those to public-api, register, etc) cant just be crafted
502
+ * $name must be a registered option name.
503
+ */
504
+ function create_nonce( $name ) {
505
+ $secret = wp_generate_password( 32, false ) . ':' . wp_generate_password( 32, false ) . ':' . ( time() + 600 );
506
+
507
+ Jetpack::update_option( $name, $secret );
508
+ @list( $secret_1, $secret_2, $eol ) = explode( ':', Jetpack::get_option( $name ) );
509
+ if ( empty( $secret_1 ) || empty( $secret_2 ) || $eol < time() )
510
+ return new Jetpack_Error( 'missing_secrets' );
511
+
512
+ return array(
513
+ 'secret_1' => $secret_1,
514
+ 'secret_2' => $secret_2,
515
+ 'eol' => $eol,
516
+ );
517
+ }
518
+
519
+ /**
520
+ * Updates the single given option. Updates jetpack_options or jetpack_$name as appropriate.
521
+ *
522
+ * @param string $name Option name
523
+ * @param mixed $value Option value
524
+ */
525
+ function update_option( $name, $value ) {
526
+ if ( in_array( $name, Jetpack::get_option_names( 'non_compact' ) ) ) {
527
+ return update_option( "jetpack_$name", $value );
528
+ } else if ( !in_array( $name, Jetpack::get_option_names() ) ) {
529
+ trigger_error( sprintf( 'Invalid Jetpack option name: %s', $name ), E_USER_WARNING );
530
+ return false;
531
+ }
532
+
533
+ $options = get_option( 'jetpack_options' );
534
+ if ( !is_array( $options ) ) {
535
+ $options = array();
536
+ }
537
+
538
+ $options[$name] = $value;
539
+
540
+ return update_option( 'jetpack_options', $options );
541
+ }
542
+
543
+ /**
544
+ * Updates the multiple given options. Updates jetpack_options and/or jetpack_$name as appropriate.
545
+ *
546
+ * @param array $array array( option name => option value, ... )
547
+ */
548
+ function update_options( $array ) {
549
+ $names = array_keys( $array );
550
+
551
+ foreach ( array_diff( $names, Jetpack::get_option_names(), Jetpack::get_option_names( 'non_compact' ) ) as $unknown_name ) {
552
+ trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING );
553
+ unset( $array[$unknown_name] );
554
+ }
555
+
556
+ foreach ( array_intersect( $names, Jetpack::get_option_names( 'non_compact' ) ) as $name ) {
557
+ update_option( "jetpack_$name", $array[$name] );
558
+ unset( $array[$name] );
559
+ }
560
+
561
+ $options = get_option( 'jetpack_options' );
562
+ if ( !is_array( $options ) ) {
563
+ $options = array();
564
+ }
565
+
566
+ return update_option( 'jetpack_options', array_merge( $options, $array ) );
567
+ }
568
+
569
+ /**
570
+ * Deletes the given option. May be passed multiple option names as an array.
571
+ * Updates jetpack_options and/or deletes jetpack_$name as appropriate.
572
+ *
573
+ * @param string|array $names
574
+ */
575
+ function delete_option( $names ) {
576
+ $names = (array) $names;
577
+
578
+ foreach ( array_diff( $names, Jetpack::get_option_names(), Jetpack::get_option_names( 'non_compact' ) ) as $unknown_name ) {
579
+ trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING );
580
+ }
581
+
582
+ foreach ( array_intersect( $names, Jetpack::get_option_names( 'non_compact' ) ) as $name ) {
583
+ delete_option( "jetpack_$name" );
584
+ }
585
+
586
+ $options = get_option( 'jetpack_options' );
587
+ if ( !is_array( $options ) ) {
588
+ $options = array();
589
+ }
590
+
591
+ $to_delete = array_intersect( $names, Jetpack::get_option_names(), array_keys( $options ) );
592
+ if ( $to_delete ) {
593
+ foreach ( $to_delete as $name ) {
594
+ unset( $options[$name] );
595
+ }
596
+
597
+ return update_option( 'jetpack_options', $options );
598
+ }
599
+
600
+ return true;
601
+ }
602
+
603
+ /**
604
+ * Enters a user token into the user_tokens option
605
+ *
606
+ * @param int $user_id
607
+ * @param string $token
608
+ * return bool
609
+ */
610
+ function update_user_token( $user_id, $token, $is_master_user ) {
611
+ // not designed for concurrent updates
612
+ $user_tokens = Jetpack::get_option( 'user_tokens' );
613
+ if ( ! is_array( $user_tokens ) )
614
+ $user_tokens = array();
615
+ $user_tokens[$user_id] = $token;
616
+ if ( $is_master_user ) {
617
+ $master_user = $user_id;
618
+ $options = compact('user_tokens', 'master_user');
619
+ } else {
620
+ $options = compact('user_tokens');
621
+ }
622
+ return Jetpack::update_options( $options );
623
+ }
624
+
625
+ /**
626
+ * Returns an array of all PHP files in the specified absolute path.
627
+ * Equivalent to glob( "$absolute_path/*.php" ).
628
+ *
629
+ * @param string $absolute_path The absolute path of the directory to search.
630
+ * @return array Array of absolute paths to the PHP files.
631
+ */
632
+ function glob_php( $absolute_path ) {
633
+ $absolute_path = untrailingslashit( $absolute_path );
634
+ $files = array();
635
+ if ( !$dir = @opendir( $absolute_path ) ) {
636
+ return $files;
637
+ }
638
+
639
+ while ( false !== $file = readdir( $dir ) ) {
640
+ if ( '.' == substr( $file, 0, 1 ) || '.php' != substr( $file, -4 ) ) {
641
+ continue;
642
+ }
643
+
644
+ $file = "$absolute_path/$file";
645
+
646
+ if ( !is_file( $file ) ) {
647
+ continue;
648
+ }
649
+
650
+ $files[] = $file;
651
+ }
652
+
653
+ closedir( $dir );
654
+
655
+ return $files;
656
+ }
657
+
658
+ function activate_new_modules() {
659
+ if ( !$this->is_active() ) {
660
+ return;
661
+ }
662
+
663
+ $jetpack_old_version = Jetpack::get_option( 'version' ); // [sic]
664
+ if ( !$jetpack_old_version ) {
665
+ $jetpack_old_version = $version = $old_version = '1.1:' . time();
666
+ Jetpack::update_options( compact( 'version', 'old_version' ) );
667
+ }
668
+
669
+ list( $jetpack_version ) = explode( ':', $jetpack_old_version ); // [sic]
670
+
671
+ if ( version_compare( JETPACK__VERSION, $jetpack_version, '<=' ) ) {
672
+ return;
673
+ }
674
+
675
+ $active_modules = Jetpack::get_active_modules();
676
+ $reactivate_modules = array();
677
+ foreach ( $active_modules as $active_module ) {
678
+ $module = Jetpack::get_module( $active_module );
679
+ if ( !isset( $module['changed'] ) ) {
680
+ continue;
681
+ }
682
+
683
+ if ( version_compare( $module['changed'], $jetpack_version, '<=' ) ) {
684
+ continue;
685
+ }
686
+
687
+ $reactivate_modules[] = $active_module;
688
+ Jetpack::deactivate_module( $active_module );
689
+ }
690
+
691
+ if ( version_compare( $jetpack_version, '1.9.2', '<' ) && version_compare( '1.9-something', JETPACK__VERSION, '<' ) ) {
692
+ add_action( 'jetpack_activate_default_modules', array( $this->sync, 'sync_all_registered_options' ), 1000 );
693
+ }
694
+
695
+ Jetpack::update_options( array(
696
+ 'version' => JETPACK__VERSION . ':' . time(),
697
+ 'old_version' => $jetpack_old_version,
698
+ ) );
699
+
700
+ Jetpack::state( 'message', 'modules_activated' );
701
+ Jetpack::activate_default_modules( $jetpack_version, JETPACK__VERSION, $reactivate_modules );
702
+ wp_safe_redirect( Jetpack::admin_url() );
703
+ exit;
704
+ }
705
+
706
+ /**
707
+ * List available Jetpack modules. Simply lists .php files in /modules/.
708
+ * Make sure to tuck away module "library" files in a sub-directory.
709
+ */
710
+ function get_available_modules( $min_version = false, $max_version = false ) {
711
+ static $modules = null;
712
+
713
+ if ( !isset( $modules ) ) {
714
+ $files = Jetpack::glob_php( dirname( __FILE__ ) . '/modules' );
715
+
716
+ $modules = array();
717
+
718
+ foreach ( $files as $file ) {
719
+ if ( !$headers = Jetpack::get_module( $file ) ) {
720
+ continue;
721
+ }
722
+
723
+ $modules[ Jetpack::get_module_slug( $file ) ] = $headers['introduced'];
724
+ }
725
+ }
726
+
727
+ if ( !$min_version && !$max_version ) {
728
+ return array_keys( $modules );
729
+ }
730
+
731
+ $r = array();
732
+ foreach ( $modules as $slug => $introduced ) {
733
+ if ( $min_version && version_compare( $min_version, $introduced, '>=' ) ) {
734
+ continue;
735
+ }
736
+
737
+ if ( $max_version && version_compare( $max_version, $introduced, '<' ) ) {
738
+ continue;
739
+ }
740
+
741
+ $r[] = $slug;
742
+ }
743
+
744
+ return $r;
745
+ }
746
+
747
+ /**
748
+ * Default modules loaded on activation.
749
+ */
750
+ function get_default_modules( $min_version = false, $max_version = false ) {
751
+ $return = array();
752
+
753
+ foreach ( Jetpack::get_available_modules( $min_version, $max_version ) as $module ) {
754
+ // Add special cases here for modules to avoid auto-activation
755
+ switch ( $module ) {
756
+
757
+ // These modules are default off: they change things blog-side
758
+ case 'comments' :
759
+ case 'carousel' :
760
+ case 'minileven':
761
+ case 'infinite-scroll' :
762
+ case 'photon' :
763
+ break;
764
+
765
+ // These modules are default off if we think the site is a private one
766
+ case 'enhanced-distribution' :
767
+ case 'json-api' :
768
+ if ( !Jetpack::get_option( 'public' ) ) {
769
+ break;
770
+ }
771
+ // else no break
772
+ // The rest are default on
773
+ default :
774
+ $return[] = $module;
775
+ }
776
+ }
777
+
778
+ return $return;
779
+ }
780
+
781
+ /**
782
+ * Extract a module's slug from its full path.
783
+ */
784
+ function get_module_slug( $file ) {
785
+ return str_replace( '.php', '', basename( $file ) );
786
+ }
787
+
788
+ /**
789
+ * Generate a module's path from its slug.
790
+ */
791
+ function get_module_path( $slug ) {
792
+ return dirname( __FILE__ ) . "/modules/$slug.php";
793
+ }
794
+
795
+ /**
796
+ * Load module data from module file. Headers differ from WordPress
797
+ * plugin headers to avoid them being identified as standalone
798
+ * plugins on the WordPress plugins page.
799
+ */
800
+ function get_module( $module ) {
801
+ $headers = array(
802
+ 'name' => 'Module Name',
803
+ 'description' => 'Module Description',
804
+ 'sort' => 'Sort Order',
805
+ 'introduced' => 'First Introduced',
806
+ 'changed' => 'Major Changes In',
807
+ 'deactivate' => 'Deactivate',
808
+ 'free' => 'Free',
809
+ );
810
+
811
+ $file = Jetpack::get_module_path( Jetpack::get_module_slug( $module ) );
812
+ if ( !file_exists( $file ) )
813
+ return false;
814
+
815
+ $mod = get_file_data( $file, $headers );
816
+ if ( empty( $mod['name'] ) )
817
+ return false;
818
+
819
+ $mod['name'] = translate( $mod['name'], 'jetpack' );
820
+ $mod['description'] = translate( $mod['description'], 'jetpack' );
821
+ if ( empty( $mod['sort'] ) )
822
+ $mod['sort'] = 10;
823
+ $mod['deactivate'] = empty( $mod['deactivate'] );
824
+ $mod['free'] = empty( $mod['free'] );
825
+ return $mod;
826
+ }
827
+
828
+ /**
829
+ * Get a list of activated modules as an array of module slugs.
830
+ */
831
+ function get_active_modules() {
832
+ $active = Jetpack::get_option( 'active_modules' );
833
+ if ( !is_array( $active ) )
834
+ $active = array();
835
+ if ( is_admin() ) {
836
+ $active[] = 'vaultpress';
837
+ } else {
838
+ $active = array_diff( $active, array( 'vaultpress' ) );
839
+ }
840
+ return array_unique( $active );
841
+ }
842
+
843
+ function is_module( $module ) {
844
+ return !empty( $module ) && !validate_file( $module, Jetpack::get_available_modules() );
845
+ }
846
+
847
+ /**
848
+ * Catches PHP errors. Must be used in conjunction with output buffering.
849
+ *
850
+ * @param bool $catch True to start catching, False to stop.
851
+ *
852
+ * @static
853
+ */
854
+ function catch_errors( $catch ) {
855
+ static $display_errors, $error_reporting;
856
+
857
+ if ( $catch ) {
858
+ $display_errors = @ini_set( 'display_errors', 1 );
859
+ $error_reporting = @error_reporting( E_ALL );
860
+ add_action( 'shutdown', array( 'Jetpack', 'catch_errors_on_shutdown' ), 0 );
861
+ } else {
862
+ @ini_set( 'display_errors', $display_errors );
863
+ @error_reporting( $error_reporting );
864
+ remove_action( 'shutdown', array( 'Jetpack', 'catch_errors_on_shutdown' ), 1 );
865
+ }
866
+ }
867
+
868
+ /**
869
+ * Saves any generated PHP errors in ::state( 'php_errors', {errors} )
870
+ */
871
+ function catch_errors_on_shutdown() {
872
+ Jetpack::state( 'php_errors', ob_get_clean() );
873
+ }
874
+
875
+ function activate_default_modules( $min_version = false, $max_version = false, $other_modules = array() ) {
876
+ $jetpack = Jetpack::init();
877
+
878
+ $modules = Jetpack::get_default_modules( $min_version, $max_version );
879
+ $modules = array_merge( $other_modules, $modules );
880
+
881
+ // Look for standalone plugins and disable if active.
882
+
883
+ $to_deactivate = array();
884
+ foreach ( $modules as $module ) {
885
+ if ( isset( $jetpack->plugins_to_deactivate[$module] ) ) {
886
+ $to_deactivate[$module] = $jetpack->plugins_to_deactivate[$module];
887
+ }
888
+ }
889
+
890
+ $deactivated = array();
891
+ foreach ( $to_deactivate as $module => $deactivate_me ) {
892
+ list( $probable_file, $probable_title ) = $deactivate_me;
893
+ if ( Jetpack_Client_Server::deactivate_plugin( $probable_file, $probable_title ) ) {
894
+ $deactivated[] = $module;
895
+ }
896
+ }
897
+
898
+ if ( $deactivated ) {
899
+ Jetpack::state( 'deactivated_plugins', join( ',', $deactivated ) );
900
+
901
+ $url = add_query_arg( array(
902
+ 'action' => 'activate_default_modules',
903
+ '_wpnonce' => wp_create_nonce( 'activate_default_modules' ),
904
+ ), add_query_arg( compact( 'min_version', 'max_version', 'other_modules' ), Jetpack::admin_url() ) );
905
+ wp_safe_redirect( $url );
906
+ exit;
907
+ }
908
+
909
+ do_action( 'jetpack_before_activate_default_modules', $min_version, $max_version, $other_modules );
910
+
911
+ // Check each module for fatal errors, a la wp-admin/plugins.php::activate before activating
912
+ $redirect = menu_page_url( 'jetpack', false );
913
+ Jetpack::restate();
914
+ Jetpack::catch_errors( true );
915
+ foreach ( $modules as $module ) {
916
+ $active = Jetpack::get_active_modules();
917
+ if ( in_array( $module, $active ) ) {
918
+ $module_info = Jetpack::get_module( $module );
919
+ if ( !$module_info['deactivate'] ) {
920
+ $state = in_array( $module, $other_modules ) ? 'reactivated_modules' : 'activated_modules';
921
+ if ( $active_state = Jetpack::state( $state ) ) {
922
+ $active_state = explode( ',', $active_state );
923
+ } else {
924
+ $active_state = array();
925
+ }
926
+ $active_state[] = $module;
927
+ Jetpack::state( $state, implode( ',', $active_state ) );
928
+ }
929
+ continue;
930
+ }
931
+
932
+ $file = Jetpack::get_module_path( $module );
933
+ if ( !file_exists( $file ) ) {
934
+ continue;
935
+ }
936
+
937
+ // we'll override this later if the plugin can be included without fatal error
938
+ wp_safe_redirect( Jetpack::admin_url() );
939
+ Jetpack::state( 'error', 'module_activation_failed' );
940
+ Jetpack::state( 'module', $module );
941
+ ob_start();
942
+ require $file;
943
+ do_action( 'jetpack_activate_module', $module );
944
+ $active[] = $module;
945
+ $state = in_array( $module, $other_modules ) ? 'reactivated_modules' : 'activated_modules';
946
+ if ( $active_state = Jetpack::state( $state ) ) {
947
+ $active_state = explode( ',', $active_state );
948
+ } else {
949
+ $active_state = array();
950
+ }
951
+ $active_state[] = $module;
952
+ Jetpack::state( $state, implode( ',', $active_state ) );
953
+ Jetpack::update_option( 'active_modules', array_unique( $active ) );
954
+ ob_end_clean();
955
+ }
956
+ Jetpack::state( 'error', false );
957
+ Jetpack::state( 'module', false );
958
+ Jetpack::catch_errors( false );
959
+ do_action( 'jetpack_activate_default_modules', $min_version, $max_version, $other_modules );
960
+ }
961
+
962
+ function activate_module( $module ) {
963
+ $jetpack = Jetpack::init();
964
+
965
+ if ( !Jetpack::is_active() )
966
+ return false;
967
+
968
+ if ( !strlen( $module ) )
969
+ return false;
970
+
971
+ if ( !Jetpack::is_module( $module ) )
972
+ return false;
973
+
974
+ // If it's already active, then don't do it again
975
+ $active = Jetpack::get_active_modules();
976
+ foreach ( $active as $act ) {
977
+ if ( $act == $module )
978
+ return true;
979
+ }
980
+
981
+ // Check and see if the old plugin is active
982
+ if ( isset( $jetpack->plugins_to_deactivate[$module] ) ) {
983
+ // Deactivate the old plugin
984
+ if ( Jetpack_Client_Server::deactivate_plugin( $jetpack->plugins_to_deactivate[$module][0], $jetpack->plugins_to_deactivate[$module][1] ) ) {
985
+ // If we deactivated the old plugin, remembere that with ::state() and redirect back to this page to activate the module
986
+ // We can't activate the module on this page load since the newly deactivated old plugin is still loaded on this page load.
987
+ Jetpack::state( 'deactivated_plugins', $module );
988
+ wp_safe_redirect( add_query_arg( 'jetpack_restate', 1 ) );
989
+ exit;
990
+ }
991
+ }
992
+
993
+ // Check the file for fatal errors, a la wp-admin/plugins.php::activate
994
+ Jetpack::state( 'module', $module );
995
+ Jetpack::state( 'error', 'module_activation_failed' ); // we'll override this later if the plugin can be included without fatal error
996
+ wp_safe_redirect( Jetpack::admin_url() );
997
+
998
+ Jetpack::catch_errors( true );
999
+ ob_start();
1000
+ require Jetpack::get_module_path( $module );
1001
+ do_action( 'jetpack_activate_module', $module );
1002
+ $active[] = $module;
1003
+ Jetpack::update_option( 'active_modules', array_unique( $active ) );
1004
+ Jetpack::state( 'error', false ); // the override
1005
+ Jetpack::state( 'message', 'module_activated' );
1006
+ Jetpack::state( 'module', $module );
1007
+ ob_end_clean();
1008
+ Jetpack::catch_errors( false );
1009
+ exit;
1010
+ }
1011
+
1012
+ function activate_module_actions( $module ) {
1013
+ do_action( "jetpack_activate_module_$module" );
1014
+
1015
+ $this->sync->sync_all_module_options( $module );
1016
+ }
1017
+
1018
+ function deactivate_module( $module ) {
1019
+ $active = Jetpack::get_active_modules();
1020
+ $new = array();
1021
+ foreach ( $active as $check ) {
1022
+ if ( !empty( $check ) && $module != $check )
1023
+ $new[] = $check;
1024
+ }
1025
+
1026
+ do_action( "jetpack_deactivate_module_$module" );
1027
+ return Jetpack::update_option( 'active_modules', array_unique( $new ) );
1028
+ }
1029
+
1030
+ function enable_module_configurable( $module ) {
1031
+ $module = Jetpack::get_module_slug( $module );
1032
+ add_filter( 'jetpack_module_configurable_' . $module, '__return_true' );
1033
+ }
1034
+
1035
+ function module_configuration_url( $module ) {
1036
+ $module = Jetpack::get_module_slug( $module );
1037
+ return Jetpack::admin_url( array( 'configure' => $module ) );
1038
+ }
1039
+
1040
+ function module_configuration_load( $module, $method ) {
1041
+ $module = Jetpack::get_module_slug( $module );
1042
+ add_action( 'jetpack_module_configuration_load_' . $module, $method );
1043
+ }
1044
+
1045
+ function module_configuration_head( $module, $method ) {
1046
+ $module = Jetpack::get_module_slug( $module );
1047
+ add_action( 'jetpack_module_configuration_head_' . $module, $method );
1048
+ }
1049
+
1050
+ function module_configuration_screen( $module, $method ) {
1051
+ $module = Jetpack::get_module_slug( $module );
1052
+ add_action( 'jetpack_module_configuration_screen_' . $module, $method );
1053
+ }
1054
+
1055
+ /* Installation */
1056
+
1057
+ function bail_on_activation( $message, $deactivate = true ) {
1058
+ ?>
1059
+ <!doctype html>
1060
+ <html>
1061
+ <head>
1062
+ <meta charset="<?php bloginfo( 'charset' ); ?>">
1063
+ <style>
1064
+ * {
1065
+ text-align: center;
1066
+ margin: 0;
1067
+ padding: 0;
1068
+ font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
1069
+ }
1070
+ p {
1071
+ margin-top: 1em;
1072
+ font-size: 18px;
1073
+ }
1074
+ </style>
1075
+ <body>
1076
+ <p><?php echo esc_html( $message ); ?></p>
1077
+ </body>
1078
+ </html>
1079
+ <?php
1080
+ if ( $deactivate ) {
1081
+ $plugins = get_option( 'active_plugins' );
1082
+ $jetpack = plugin_basename( __FILE__ );
1083
+ $update = false;
1084
+ foreach ( $plugins as $i => $plugin ) {
1085
+ if ( $plugin === $jetpack ) {
1086
+ $plugins[$i] = false;
1087
+ $update = true;
1088
+ }
1089
+ }
1090
+
1091
+ if ( $update ) {
1092
+ update_option( 'active_plugins', array_filter( $plugins ) );
1093
+ }
1094
+ }
1095
+ exit;
1096
+ }
1097
+
1098
+ /**
1099
+ * Attached to activate_{ plugin_basename( __FILES__ ) } by register_activation_hook()
1100
+ * @static
1101
+ */
1102
+ function plugin_activation( $network_wide ) {
1103
+ Jetpack::update_option( 'activated', 1 );
1104
+
1105
+ if ( version_compare( $GLOBALS['wp_version'], JETPACK__MINIMUM_WP_VERSION, '<' ) ) {
1106
+ Jetpack::bail_on_activation( sprintf( __( 'Jetpack requires WordPress version %s or later.', 'jetpack' ), JETPACK__MINIMUM_WP_VERSION ) );
1107
+ }
1108
+
1109
+ if ( $network_wide )
1110
+ Jetpack::state( 'network_nag', true );
1111
+
1112
+ Jetpack::plugin_initialize();
1113
+ }
1114
+
1115
+ /**
1116
+ * Sets the internal version number and activation state.
1117
+ * @static
1118
+ */
1119
+ function plugin_initialize() {
1120
+ if ( !Jetpack::get_option( 'activated' ) ) {
1121
+ Jetpack::update_option( 'activated', 2 );
1122
+ }
1123
+
1124
+ if ( !Jetpack::get_option( 'version' ) ) {
1125
+ $version = $old_version = JETPACK__VERSION . ':' . time();
1126
+ Jetpack::update_options( compact( 'version', 'old_version' ) );
1127
+ }
1128
+
1129
+ Jetpack::load_modules();
1130
+
1131
+ Jetpack::delete_option( 'do_activate' );
1132
+ }
1133
+
1134
+ /**
1135
+ * Removes all connection options
1136
+ * @static
1137
+ */
1138
+ function plugin_deactivation( $network_wide ) {
1139
+ Jetpack::disconnect( false );
1140
+ }
1141
+
1142
+ /**
1143
+ * Disconnects from the Jetpack servers.
1144
+ * Forgets all connection details and tells the Jetpack servers to do the same.
1145
+ * @static
1146
+ */
1147
+ function disconnect( $update_activated_state = true ) {
1148
+ wp_clear_scheduled_hook( 'jetpack_clean_nonces' );
1149
+ Jetpack::clean_nonces( true );
1150
+
1151
+ Jetpack::load_xml_rpc_client();
1152
+ $xml = new Jetpack_IXR_Client();
1153
+ $xml->query( 'jetpack.deregister' );
1154
+
1155
+ Jetpack::delete_option( array(
1156
+ 'register',
1157
+ 'blog_token',
1158
+ 'user_token',
1159
+ 'user_tokens',
1160
+ 'master_user',
1161
+ 'time_diff',
1162
+ 'fallback_no_verify_ssl_certs',
1163
+ ) );
1164
+
1165
+ if ( $update_activated_state ) {
1166
+ Jetpack::update_option( 'activated', 4 );
1167
+ }
1168
+ }
1169
+
1170
+ /**
1171
+ * Unlinks the current user from the linked WordPress.com user
1172
+ */
1173
+ function unlink_user() {
1174
+ if ( !$tokens = Jetpack::get_option( 'user_tokens' ) )
1175
+ return false;
1176
+
1177
+ $user_id = get_current_user_id();
1178
+
1179
+ if ( Jetpack::get_option( 'master_user' ) == $user_id )
1180
+ return false;
1181
+
1182
+ if ( !isset( $tokens[$user_id] ) )
1183
+ return false;
1184
+
1185
+ Jetpack::load_xml_rpc_client();
1186
+ $xml = new Jetpack_IXR_Client( compact( 'user_id' ) );
1187
+ $xml->query( 'jetpack.unlink_user', $user_id );
1188
+
1189
+ unset( $tokens[$user_id] );
1190
+
1191
+ Jetpack::update_option( 'user_tokens', $tokens );
1192
+
1193
+ return true;
1194
+ }
1195
+
1196
+ /**
1197
+ * Attempts Jetpack registration. If it fail, a state flag is set: @see ::admin_page_load()
1198
+ * @static
1199
+ */
1200
+ function try_registration() {
1201
+ $result = Jetpack::register();
1202
+
1203
+ // If there was an error with registration and the site was not registered, record this so we can show a message.
1204
+ if ( !$result || is_wp_error( $result ) ) {
1205
+ return $result;
1206
+ } else {
1207
+ return true;
1208
+ }
1209
+ }
1210
+
1211
+ /* Admin Pages */
1212
+
1213
+ function admin_init() {
1214
+ // If the plugin is not connected, display a connect message.
1215
+ if (
1216
+ // the plugin was auto-activated and needs its candy
1217
+ Jetpack::get_option( 'do_activate' )
1218
+ ||
1219
+ // the plugin is active, but was never activated. Probably came from a site-wide network activation
1220
+ !Jetpack::get_option( 'activated' )
1221
+ ) {
1222
+ Jetpack::plugin_initialize();
1223
+ }
1224
+
1225
+ if ( !Jetpack::is_active() ) {
1226
+ if ( 4 != Jetpack::get_option( 'activated' ) ) {
1227
+ // Show connect notice on dashboard and plugins pages
1228
+ add_action( 'load-index.php', array( $this, 'prepare_connect_notice' ) );
1229
+ add_action( 'load-plugins.php', array( $this, 'prepare_connect_notice' ) );
1230
+ }
1231
+ } elseif ( false === Jetpack::get_option( 'fallback_no_verify_ssl_certs' ) ) {
1232
+ // Upgrade: 1.1 -> 1.1.1
1233
+ // Check and see if host can verify the Jetpack servers' SSL certificate
1234
+ $args = array();
1235
+ Jetpack_Client::_wp_remote_request(
1236
+ Jetpack::fix_url_for_bad_hosts( Jetpack::api_url( 'test' ), $args ),
1237
+ $args,
1238
+ true
1239
+ );
1240
+ }
1241
+
1242
+ add_action( 'load-plugins.php', array( $this, 'intercept_plugin_error_scrape_init' ) );
1243
+ add_action( 'admin_head', array( $this, 'admin_menu_css' ) );
1244
+ add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'plugin_action_links' ) );
1245
+
1246
+ add_action( 'wp_ajax_jetpack_debug', array( $this, 'ajax_debug' ) );
1247
+
1248
+ if ( Jetpack::is_active() ) {
1249
+ // Artificially throw errors in certain whitelisted cases during plugin activation
1250
+ add_action( 'activate_plugin', array( $this, 'throw_error_on_activate_plugin' ) );
1251
+
1252
+ // Kick off synchronization of user role when it changes
1253
+ add_action( 'set_user_role', array( $this, 'user_role_change' ) );
1254
+
1255
+ // Add retina images hotfix to admin
1256
+ global $wp_db_version;
1257
+ if ( $wp_db_version > 19470 ) {
1258
+ // WP 3.4.x
1259
+ // TODO will need to add && $wp_db_version < xxxxx when 3.5 comes out.
1260
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_retina_scripts' ) );
1261
+ // /wp-admin/customize.php omits the action above.
1262
+ add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_retina_scripts' ) );
1263
+ }
1264
+ }
1265
+ }
1266
+
1267
+ function prepare_connect_notice() {
1268
+ add_action( 'admin_print_styles', array( $this, 'admin_styles' ) );
1269
+
1270
+ add_action( 'admin_notices', array( $this, 'admin_connect_notice' ) );
1271
+
1272
+ if ( Jetpack::state( 'network_nag' ) )
1273
+ add_action( 'network_admin_notices', array( $this, 'network_connect_notice' ) );
1274
+ }
1275
+
1276
+ /**
1277
+ * Sometimes a plugin can activate without causing errors, but it will cause errors on the next page load.
1278
+ * This function artificially throws errors for such cases (whitelisted).
1279
+ *
1280
+ * @param string $plugin The activated plugin.
1281
+ */
1282
+ function throw_error_on_activate_plugin( $plugin ) {
1283
+ $active_modules = Jetpack::get_active_modules();
1284
+
1285
+ // The Shortlinks module and the Stats plugin conflict, but won't cause errors on activation because of some function_exists() checks.
1286
+ if ( function_exists( 'stats_get_api_key' ) && in_array( 'shortlinks', $active_modules ) ) {
1287
+ $throw = false;
1288
+
1289
+ // Try and make sure it really was the stats plugin
1290
+ if ( !class_exists( 'ReflectionFunction' ) ) {
1291
+ if ( 'stats.php' == basename( $plugin ) ) {
1292
+ $throw = true;
1293
+ }
1294
+ } else {
1295
+ $reflection = new ReflectionFunction( 'stats_get_api_key' );
1296
+ if ( basename( $plugin ) == basename( $reflection->getFileName() ) ) {
1297
+ $throw = true;
1298
+ }
1299
+ }
1300
+
1301
+ if ( $throw ) {
1302
+ trigger_error( sprintf( __( 'Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin.', 'jetpack' ), 'WordPress.com Stats' ), E_USER_ERROR );
1303
+ }
1304
+ }
1305
+ }
1306
+
1307
+ function intercept_plugin_error_scrape_init() {
1308
+ add_action( 'check_admin_referer', array( $this, 'intercept_plugin_error_scrape' ), 10, 2 );
1309
+ }
1310
+
1311
+ function intercept_plugin_error_scrape( $action, $result ) {
1312
+ if ( !$result ) {
1313
+ return;
1314
+ }
1315
+
1316
+ foreach ( $this->plugins_to_deactivate as $module => $deactivate_me ) {
1317
+ if ( "plugin-activation-error_{$deactivate_me[0]}" == $action ) {
1318
+ $this->bail_on_activation( sprintf( __( 'Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin.', 'jetpack' ), $deactivate_me[1] ), false );
1319
+ }
1320
+ }
1321
+ }
1322
+
1323
+ function admin_menu() {
1324
+ list( $jetpack_version ) = explode( ':', Jetpack::get_option( 'version' ) );
1325
+ if (
1326
+ $jetpack_version
1327
+ &&
1328
+ $jetpack_version != JETPACK__VERSION
1329
+ &&
1330
+ ( $new_modules = Jetpack::get_default_modules( $jetpack_version, JETPACK__VERSION ) )
1331
+ &&
1332
+ is_array( $new_modules )
1333
+ &&
1334
+ ( $new_modules_count = count( $new_modules ) )
1335
+ &&
1336
+ $this->is_active()
1337
+ ) {
1338
+ $new_modules_count_i18n = number_format_i18n( $new_modules_count );
1339
+ $span_title = esc_attr( sprintf( _n( 'One New Jetpack Module', '%s New Jetpack Modules', $new_modules_count, 'jetpack' ), $new_modules_count_i18n ) );
1340
+ $title = sprintf( 'Jetpack %s', "<span class='update-plugins count-{$new_modules_count}' title='$span_title'><span class='update-count'>$new_modules_count_i18n</span></span>" );
1341
+ } else {
1342
+ $title = __( 'Jetpack', 'jetpack' );
1343
+ }
1344
+
1345
+ $hook = add_menu_page( 'Jetpack', $title, 'read', 'jetpack', array( $this, 'admin_page' ), 'div' );
1346
+
1347
+ add_action( "load-$hook", array( $this, 'admin_page_load' ) );
1348
+
1349
+ if ( version_compare( $GLOBALS['wp_version'], '3.3', '<' ) ) {
1350
+ if ( isset( $_GET['page'] ) && 'jetpack' == $_GET['page'] ) {
1351
+ add_contextual_help( $hook, $this->jetpack_help() );
1352
+ }
1353
+ } else {
1354
+ add_action( "load-$hook", array( $this, 'admin_help' ) );
1355
+ }
1356
+ add_action( "admin_head-$hook", array( $this, 'admin_head' ) );
1357
+ add_filter( 'custom_menu_order', array( $this, 'admin_menu_order' ) );
1358
+ add_filter( 'menu_order', array( $this, 'jetpack_menu_order' ) );
1359
+
1360
+ add_action( "admin_print_styles-$hook", array( $this, 'admin_styles' ) );
1361
+
1362
+ add_action( "admin_print_scripts-$hook", array( $this, 'admin_scripts' ) );
1363
+
1364
+ do_action( 'jetpack_admin_menu' );
1365
+ }
1366
+
1367
+ function add_remote_request_handlers() {
1368
+ add_action( 'wp_ajax_nopriv_jetpack_upload_file', array( $this, 'remote_request_handlers' ) );
1369
+ }
1370
+
1371
+ function remote_request_handlers() {
1372
+ switch ( current_filter() ) {
1373
+ case 'wp_ajax_nopriv_jetpack_upload_file' :
1374
+ $response = $this->upload_handler();
1375
+ break;
1376
+ default :
1377
+ $response = new Jetpack_Error( 'unknown_handler', 'Unknown Handler', 400 );
1378
+ break;
1379
+ }
1380
+
1381
+ if ( !$response ) {
1382
+ $response = new Jetpack_Error( 'unknown_error', 'Unknown Error', 400 );
1383
+ }
1384
+
1385
+ if ( is_wp_error( $response ) ) {
1386
+ $status_code = $response->get_error_data();
1387
+ $error = $response->get_error_code();
1388
+ $error_description = $response->get_error_message();
1389
+
1390
+ if ( !is_int( $status_code ) ) {
1391
+ $status_code = 400;
1392
+ }
1393
+
1394
+ status_header( $status_code );
1395
+ die( json_encode( (object) compact( 'error', 'error_description' ) ) );
1396
+ }
1397
+
1398
+ status_header( 200 );
1399
+ if ( true === $response ) {
1400
+ exit;
1401
+ }
1402
+
1403
+ die( json_encode( (object) $response ) );
1404
+ }
1405
+
1406
+ function upload_handler() {
1407
+ if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) {
1408
+ return new Jetpack_Error( 405, get_status_header_desc( 405 ), 405 );
1409
+ }
1410
+
1411
+ $user = wp_authenticate( '', '' );
1412
+ if ( !$user || is_wp_error( $user ) ) {
1413
+ return new Jetpack_Error( 403, get_status_header_desc( 403 ), 403 );
1414
+ }
1415
+
1416
+ wp_set_current_user( $user->ID );
1417
+
1418
+ if ( !current_user_can( 'upload_files' ) ) {
1419
+ return new Jetpack_Error( 'cannot_upload_files', 'User does not have permission to upload files', 403 );
1420
+ }
1421
+
1422
+ if ( empty( $_FILES ) ) {
1423
+ return new Jetpack_Error( 'no_files_uploaded', 'No files were uploaded: nothing to process', 400 );
1424
+ }
1425
+
1426
+ foreach ( array_keys( $_FILES ) as $files_key ) {
1427
+ if ( !isset( $_POST["_jetpack_file_hmac_{$files_key}"] ) ) {
1428
+ return new Jetpack_Error( 'missing_hmac', 'An HMAC for one or more files is missing', 400 );
1429
+ }
1430
+ }
1431
+
1432
+ $media_keys = array_keys( $_FILES['media'] );
1433
+
1434
+ $token = Jetpack_Data::get_access_token( get_current_user_id() );
1435
+ if ( !$token || is_wp_error( $token ) ) {
1436
+ return new Jetpack_Error( 'unknown_token', 'Unknown Jetpack token', 403 );
1437
+ }
1438
+
1439
+ $uploaded_files = array();
1440
+ $global_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null;
1441
+ unset( $GLOBALS['post'] );
1442
+ foreach ( $_FILES['media']['name'] as $index => $name ) {
1443
+ $file = array();
1444
+ foreach ( $media_keys as $media_key ) {
1445
+ $file[$media_key] = $_FILES['media'][$media_key][$index];
1446
+ }
1447
+
1448
+ list( $hmac_provided, $salt ) = explode( ':', $_POST['_jetpack_file_hmac_media'][$index] );
1449
+
1450
+ $hmac_file = hash_hmac_file( 'sha1', $file['tmp_name'], $salt . $token->secret );
1451
+ if ( $hmac_provided !== $hmac_file ) {
1452
+ $uploaded_files[$index] = (object) array( 'error' => 'invalid_hmac', 'error_description' => 'The corresponding HMAC for this file does not match' );
1453
+ continue;
1454
+ }
1455
+
1456
+ $_FILES['.jetpack.upload.'] = $file;
1457
+ $post_id = isset( $_POST['post_id'][$index] ) ? absint( $_POST['post_id'][$index] ) : 0;
1458
+ if ( !current_user_can( 'edit_post', $post_id ) ) {
1459
+ $post_id = 0;
1460
+ }
1461
+ $attachment_id = media_handle_upload( '.jetpack.upload.', $post_id, array(), array(
1462
+ 'action' => 'jetpack_upload_file',
1463
+ ) );
1464
+
1465
+ if ( !$attachment_id ) {
1466
+ $uploaded_files[$index] = (object) array( 'error' => 'unknown', 'error_description' => 'An unknown problem occurred processing the upload on the Jetpack site' );
1467
+ } elseif ( is_wp_error( $attachment_id ) ) {
1468
+ $uploaded_files[$index] = (object) array( 'error' => 'attachment_' . $attachment_id->get_error_code(), 'error_description' => $attachment_id->get_error_message() );
1469
+ } else {
1470
+ $attachment = get_post( $attachment_id );
1471
+ $uploaded_files[$index] = (object) array(
1472
+ 'id' => (string) $attachment_id,
1473
+ 'file' => $attachment->post_title,
1474
+ 'url' => wp_get_attachment_url( $attachment_id ),
1475
+ 'type' => $attachment->post_mime_type,
1476
+ 'meta' => wp_get_attachment_metadata( $attachment_id ),
1477
+ );
1478
+ }
1479
+ }
1480
+ if ( !is_null( $global_post ) ) {
1481
+ $GLOBALS['post'] = $global_post;
1482
+ }
1483
+
1484
+ return $uploaded_files;
1485
+ }
1486
+
1487
+ /**
1488
+ * Add help to the Jetpack page
1489
+ *
1490
+ * Deprecated. Remove when Jetpack requires WP 3.3+
1491
+ */
1492
+ function jetpack_help() {
1493
+ return
1494
+ '<p><strong>' . __( 'Jetpack by WordPress.com', 'jetpack' ) . '</strong></p>' .
1495
+ '<p>' . __( 'Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com.', 'jetpack' ) . '</p>' .
1496
+ '<p>' . __( 'On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed.', 'jetpack' ) . '</p>' .
1497
+ '<p><strong>' . __( 'Jetpack Module Options', 'jetpack' ) . '</strong></p>' .
1498
+ '<p>' . __( '<strong>To Activate/Deactivate a Module</strong> - Click on Learn More. An Activate or Deactivate button will now appear next to the Learn More button. Click the Activate/Deactivate button.', 'jetpack' ) . '</p>' .
1499
+ '<p><strong>' . __( 'For more information:', 'jetpack' ) . '</strong></p>' .
1500
+ '<p><a href="http://jetpack.me/faq/" target="_blank">' . __( 'Jetpack FAQ', 'jetpack' ) . '</a></p>' .
1501
+ '<p><a href="http://jetpack.me/support/" target="_blank">' . __( 'Jetpack Support', 'jetpack' ) . '</a></p>';
1502
+ }
1503
+
1504
+ /**
1505
+ * Add help to the Jetpack page
1506
+ *
1507
+ * @since Jetpack (1.2.3)
1508
+ * @return false if not the Jetpack page
1509
+ */
1510
+ function admin_help() {
1511
+ $current_screen = get_current_screen();
1512
+
1513
+ // Overview
1514
+ $current_screen->add_help_tab( array(
1515
+ 'id' => 'overview',
1516
+ 'title' => __( 'Overview', 'jetpack' ),
1517
+ 'content' =>
1518
+ '<p><strong>' . __( 'Jetpack by WordPress.com', 'jetpack' ) . '</strong></p>' .
1519
+ '<p>' . __( 'Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com.', 'jetpack' ) . '</p>' .
1520
+ '<p>' . __( 'On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed.', 'jetpack' ) . '</p>'
1521
+ ) );
1522
+
1523
+ // Screen Content
1524
+ if ( current_user_can( 'manage_options' ) ) {
1525
+ $current_screen->add_help_tab( array(
1526
+ 'id' => 'modules',
1527
+ 'title' => __( 'Modules', 'jetpack' ),
1528
+ 'content' =>
1529
+ '<p><strong>' . __( 'Jetpack by WordPress.com', 'jetpack' ) . '</strong></p>' .
1530
+ '<p>' . __( 'You can activate or deactivate individual Jetpack modules to suit your needs.', 'jetpack' ) . '</p>' .
1531
+ '<ol>' .
1532
+ '<li>' . __( 'Find the component you want to manage', 'jetpack' ) . '</li>' .
1533
+ '<li>' . __( 'Click on Learn More', 'jetpack' ) . '</li>' .
1534
+ '<li>' . __( 'An Activate or Deactivate button will appear', 'jetpack' ) . '</li>' .
1535
+ '<li>' . __( 'If additional settings are available, a link to them will appear', 'jetpack' ) . '</li>' .
1536
+ '</ol>'
1537
+ ) );
1538
+ }
1539
+
1540
+ // Help Sidebar
1541
+ $current_screen->set_help_sidebar(
1542
+ '<p><strong>' . __( 'For more information:', 'jetpack' ) . '</strong></p>' .
1543
+ '<p><a href="http://jetpack.me/faq/" target="_blank">' . __( 'Jetpack FAQ', 'jetpack' ) . '</a></p>' .
1544
+ '<p><a href="http://jetpack.me/support/" target="_blank">' . __( 'Jetpack Support', 'jetpack' ) . '</a></p>'
1545
+ );
1546
+ }
1547
+
1548
+ function admin_menu_css() { ?>
1549
+ <style type="text/css" id="jetpack-menu-css">
1550
+ #toplevel_page_jetpack .wp-menu-image {
1551
+ background: url( <?php echo plugins_url( basename( dirname( __FILE__ ) ) . '/_inc/images/menuicon-sprite.png' ) ?> ) 0 90% no-repeat;
1552
+ }
1553
+ /* Retina Jetpack Menu Icon */
1554
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
1555
+ #toplevel_page_jetpack .wp-menu-image {
1556
+ background: url( <?php echo plugins_url( basename( dirname( __FILE__ ) ) . '/_inc/images/menuicon-sprite-2x.png' ) ?> ) 0 90% no-repeat;
1557
+ background-size:30px 64px;
1558
+ }
1559
+ }
1560
+ #toplevel_page_jetpack.current .wp-menu-image,
1561
+ #toplevel_page_jetpack.wp-has-current-submenu .wp-menu-image,
1562
+ #toplevel_page_jetpack:hover .wp-menu-image {
1563
+ background-position: top left;
1564
+ }
1565
+ </style><?php
1566
+ }
1567
+
1568
+ function admin_menu_order() {
1569
+ return true;
1570
+ }
1571
+
1572
+ function jetpack_menu_order( $menu_order ) {
1573
+ $jp_menu_order = array();
1574
+
1575
+ foreach ( $menu_order as $index => $item ) {
1576
+ if ( $item != 'jetpack' )
1577
+ $jp_menu_order[] = $item;
1578
+
1579
+ if ( $index == 0 )
1580
+ $jp_menu_order[] = 'jetpack';
1581
+ }
1582
+
1583
+ return $jp_menu_order;
1584
+ }
1585
+
1586
+ function admin_head() {
1587
+ if ( isset( $_GET['configure'] ) && Jetpack::is_module( $_GET['configure'] ) && current_user_can( 'manage_options' ) )
1588
+ do_action( 'jetpack_module_configuration_head_' . $_GET['configure'] );
1589
+ }
1590
+
1591
+ function admin_styles() {
1592
+ global $wp_styles;
1593
+ wp_enqueue_style( 'jetpack', plugins_url( basename( dirname( __FILE__ ) ) . '/_inc/jetpack.css' ), false, JETPACK__VERSION . '-20121016' );
1594
+ $wp_styles->add_data( 'jetpack', 'rtl', true );
1595
+ }
1596
+
1597
+ function admin_scripts() {
1598
+ wp_enqueue_script( 'jetpack-js', plugins_url( basename( dirname( __FILE__ ) ) ) . '/_inc/jetpack.js', array( 'jquery' ), JETPACK__VERSION . '-20121111' );
1599
+ wp_localize_script( 'jetpack-js', 'jetpackL10n', array(
1600
+ 'ays_disconnect' => "This will deactivate all Jetpack modules.\nAre you sure you want to disconnect?",
1601
+ 'ays_unlink' => "This will prevent user-specific modules such as Publicize, Notifications and Post By Email from working.\nAre you sure you want to unlink?",
1602
+ 'ays_dismiss' => "This will deactivate Jetpack.\nAre you sure you want to deactivate Jetpack?",
1603
+ ) );
1604
+ add_action( 'admin_footer', array( $this, 'do_stats' ) );
1605
+ }
1606
+
1607
+ function enqueue_retina_scripts() {
1608
+ wp_enqueue_style( 'jetpack-retina', plugins_url( basename( dirname( __FILE__ ) ) . '/_inc/jetpack-retina.css' ), false, JETPACK__VERSION . '-20120730' );
1609
+ }
1610
+
1611
+ function plugin_action_links( $actions ) {
1612
+ return array_merge(
1613
+ array( 'settings' => sprintf( '<a href="%s">%s</a>', Jetpack::admin_url(), __( 'Settings', 'jetpack' ) ) ),
1614
+ $actions
1615
+ );
1616
+ return $actions;
1617
+ }
1618
+
1619
+ function admin_connect_notice() {
1620
+ // Don't show the connect notice on the jetpack settings page. @todo: must be a better way?
1621
+ if ( false !== strpos( $_SERVER['QUERY_STRING'], 'page=jetpack' ) )
1622
+ return;
1623
+
1624
+ if ( !current_user_can( 'manage_options' ) )
1625
+ return;
1626
+ ?>
1627
+
1628
+ <div id="message" class="updated jetpack-message jp-connect">
1629
+ <div id="jp-dismiss" class="jetpack-close-button-container">
1630
+ <a class="jetpack-close-button" href="?page=jetpack&jetpack-notice=dismiss" title="<?php _e( 'Dismiss this notice and deactivate Jetpack.', 'jetpack' ); ?>"><?php _e( 'Dismiss this notice and deactivate Jetpack.', 'jetpack' ); ?></a>
1631
+ </div>
1632
+ <div class="jetpack-wrap-container">
1633
+ <div class="jetpack-text-container">
1634
+ <h4>
1635
+ <?php if ( 1 == Jetpack::get_option( 'activated' ) ) : ?>
1636
+ <p><?php _e( '<strong>Your Jetpack is almost ready</strong> &#8211; A connection to WordPress.com is needed to enable features like Comments, Stats, Contact Forms, and Subscriptions. Connect now to get fueled up!', 'jetpack' ); ?></p>
1637
+ <?php else : ?>
1638
+ <p><?php _e( '<strong>Jetpack is installed</strong> and ready to bring awesome, WordPress.com cloud-powered features to your site.', 'jetpack' ) ?></p>
1639
+ <?php endif; ?>
1640
+ </h4>
1641
+ </div>
1642
+ <div class="jetpack-install-container">
1643
+ <?php if ( 1 == Jetpack::get_option( 'activated' ) ) : ?>
1644
+ <p class="submit"><a href="<?php echo $this->build_connect_url() ?>" class="button-connector" id="wpcom-connect"><?php _e( 'Connect to WordPress.com', 'jetpack' ); ?></a></p>
1645
+ <?php else : ?>
1646
+ <p class="submit"><a href="<?php echo Jetpack::admin_url() ?>" class="button-connector" id="wpcom-connect"><?php _e( 'Learn More', 'jetpack' ); ?></a></p>
1647
+ <?php endif; ?>
1648
+ </div>
1649
+ </div>
1650
+ </div>
1651
+
1652
+ <?php
1653
+ }
1654
+
1655
+ function network_connect_notice() {
1656
+ ?>
1657
+ <div id="message" class="updated jetpack-message">
1658
+ <div class="squeezer">
1659
+ <h4><?php _e( '<strong>Jetpack is activated!</strong> Each site on your network must be connected individually by an admin on that site.', 'jetpack' ) ?></h4>
1660
+ </div>
1661
+ </div>
1662
+ <?php
1663
+ }
1664
+
1665
+ function jetpack_comment_notice() {
1666
+ if ( in_array( 'comments', Jetpack::get_active_modules() ) ) {
1667
+ return '';
1668
+ }
1669
+
1670
+ $jetpack_old_version = explode( ':', Jetpack::get_option( 'old_version' ) );
1671
+ $jetpack_new_version = explode( ':', Jetpack::get_option( 'version' ) );
1672
+
1673
+ if ( $jetpack_old_version ) {
1674
+ if ( version_compare( $jetpack_old_version[0], '1.4', '>=' ) ) {
1675
+ return '';
1676
+ }
1677
+ }
1678
+
1679
+ if ( $jetpack_new_version ) {
1680
+ if ( version_compare( $jetpack_new_version[0], '1.4-something', '<' ) ) {
1681
+ return '';
1682
+ }
1683
+ }
1684
+
1685
+ return '<br /><br />' . sprintf(
1686
+ __( 'Jetpack now includes Jetpack Comments, which enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site. To activate Jetpack Comments, <a href="%s">%s</a>.', 'jetpack' ),
1687
+ wp_nonce_url(
1688
+ Jetpack::admin_url( array(
1689
+ 'action' => 'activate',
1690
+ 'module' => 'comments',
1691
+ ) ),
1692
+ "jetpack_activate-comments"
1693
+ ),
1694
+ __( 'click here', 'jetpack' )
1695
+ );
1696
+ }
1697
+
1698
+ /*
1699
+ * Registration flow:
1700
+ * 1 - ::admin_page_load() action=register
1701
+ * 2 - ::try_registration()
1702
+ * 3 - ::register()
1703
+ * - Creates jetpack_register option containing two secrets and a timestamp
1704
+ * - Calls https://jetpack.wordpress.com/jetpack.register/1/ with
1705
+ * siteurl, home, gmt_offset, timezone_string, site_name, secret_1, secret_2, site_lang, timeout, stats_id
1706
+ * - That request to jetpack.wordpress.com does not immediately respond. It first makes a request BACK to this site's
1707
+ * xmlrpc.php?for=jetpack: RPC method: jetpack.verifyRegistration, Parameters: secret_1
1708
+ * - The XML-RPC request verifies secret_1, deletes both secrets and responds with: secret_2
1709
+ * - https://jetpack.wordpress.com/jetpack.register/1/ verifies that XML-RPC response (secret_2) then finally responds itself with
1710
+ * jetpack_id, jetpack_secret, jetpack_public
1711
+ * - ::register() then stores jetpack_options: id => jetpack_id, blog_token => jetpack_secret
1712
+ * 4 - redirect to https://jetpack.wordpress.com/jetpack.authorize/1/
1713
+ * 5 - user logs in with WP.com account
1714
+ * 6 - redirect to this site's wp-admin/index.php?page=jetpack&action=authorize with
1715
+ * code <-- OAuth2 style authorization code
1716
+ * 7 - ::admin_page_load() action=authorize
1717
+ * 8 - Jetpack_Client_Server::authorize()
1718
+ * 9 - Jetpack_Client_Server::get_token()
1719
+ * 10- GET https://jetpack.wordpress.com/jetpack.token/1/ with
1720
+ * client_id, client_secret, grant_type, code, redirect_uri:action=authorize, state, scope, user_email, user_login
1721
+ * 11- which responds with
1722
+ * access_token, token_type, scope
1723
+ * 12- Jetpack_Client_Server::authorize() stores jetpack_options: user_token => access_token.$user_id
1724
+ * 13- Jetpack::activate_default_modules()
1725
+ * Deactivates deprecated plugins
1726
+ * Activates all default modules
1727
+ * Catches errors: redirects to wp-admin/index.php?page=jetpack state:error=something
1728
+ * 14- redirect to this site's wp-admin/index.php?page=jetpack with state:message=authorized
1729
+ * Done!
1730
+ */
1731
+
1732
+ /**
1733
+ * Handles the page load events for the Jetpack admin page
1734
+ */
1735
+ function admin_page_load() {
1736
+ $error = false;
1737
+
1738
+ if ( !empty( $_GET['jetpack_restate'] ) ) {
1739
+ // Should only be used in intermediate redirects to preserve state across redirects
1740
+ Jetpack::restate();
1741
+ }
1742
+
1743
+ if ( isset( $_GET['connect_url_redirect'] ) ) {
1744
+ // User clicked in the iframe to link their accounts
1745
+ if ( ! Jetpack::is_user_connected() ) {
1746
+ $connect_url = Jetpack::build_connect_url( true );
1747
+ if ( isset( $_GET['notes_iframe'] ) )
1748
+ $connect_url .= '&notes_iframe';
1749
+ wp_redirect( $connect_url );
1750
+ exit;
1751
+ } else {
1752
+ Jetpack::state( 'message', 'already_authorized' );
1753
+ wp_safe_redirect( Jetpack::admin_url() );
1754
+ exit;
1755
+ }
1756
+ }
1757
+
1758
+ if ( isset( $_GET['action'] ) ) {
1759
+ switch ( $_GET['action'] ) {
1760
+ case 'authorize' :
1761
+ if ( Jetpack::is_active() && Jetpack::is_user_connected() ) {
1762
+ Jetpack::state( 'message', 'already_authorized' );
1763
+ wp_safe_redirect( Jetpack::admin_url() );
1764
+ exit;
1765
+ }
1766
+ $client_server = new Jetpack_Client_Server;
1767
+ $client_server->authorize();
1768
+ exit;
1769
+ case 'register' :
1770
+ check_admin_referer( 'jetpack-register' );
1771
+ $registered = Jetpack::try_registration();
1772
+ if ( is_wp_error( $registered ) ) {
1773
+ $error = $registered->get_error_code();
1774
+ Jetpack::state( 'error_description', $registered->get_error_message() );
1775
+ break;
1776
+ }
1777
+
1778
+ wp_redirect( $this->build_connect_url( true ) );
1779
+ exit;
1780
+ case 'activate' :
1781
+ $module = stripslashes( $_GET['module'] );
1782
+ check_admin_referer( "jetpack_activate-$module" );
1783
+ Jetpack::activate_module( $module );
1784
+ wp_safe_redirect( Jetpack::admin_url() );
1785
+ exit;
1786
+ case 'activate_default_modules' :
1787
+ check_admin_referer( 'activate_default_modules' );
1788
+ Jetpack::restate();
1789
+ $min_version = isset( $_GET['min_version'] ) ? $_GET['min_version'] : false;
1790
+ $max_version = isset( $_GET['max_version'] ) ? $_GET['max_version'] : false;
1791
+ $other_modules = isset( $_GET['other_modules'] ) && is_array( $_GET['other_modules'] ) ? $_GET['other_modules'] : array();
1792
+ Jetpack::activate_default_modules( $min_version, $max_version, $other_modules );
1793
+ wp_safe_redirect( Jetpack::admin_url() );
1794
+ exit;
1795
+ case 'disconnect' :
1796
+ check_admin_referer( 'jetpack-disconnect' );
1797
+ $this->disconnect();
1798
+ wp_safe_redirect( Jetpack::admin_url() );
1799
+ exit;
1800
+ case 'deactivate' :
1801
+ $modules = stripslashes( $_GET['module'] );
1802
+ check_admin_referer( "jetpack_deactivate-$modules" );
1803
+ foreach ( explode( ',', $modules ) as $module ) {
1804
+ Jetpack::deactivate_module( $module );
1805
+ Jetpack::state( 'message', 'module_deactivated' );
1806
+ }
1807
+ Jetpack::state( 'module', $modules );
1808
+ wp_safe_redirect( Jetpack::admin_url() );
1809
+ exit;
1810
+ case 'unlink' :
1811
+ check_admin_referer( 'jetpack-unlink' );
1812
+ $this->unlink_user();
1813
+ Jetpack::state( 'message', 'unlinked' );
1814
+ wp_safe_redirect( Jetpack::admin_url() );
1815
+ exit;
1816
+ }
1817
+ }
1818
+
1819
+ if ( !$error = $error ? $error : Jetpack::state( 'error' ) ) {
1820
+ Jetpack::activate_new_modules();
1821
+ }
1822
+
1823
+ switch ( $error ) {
1824
+ case 'access_denied' :
1825
+ $this->error = __( 'You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features.', 'jetpack' );
1826
+ break;
1827
+ case 'wrong_state' :
1828
+ $this->error = __( "Don&#8217;t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack.", 'jetpack' );
1829
+ break;
1830
+ case 'invalid_client' :
1831
+ // @todo re-register instead of deactivate/reactivate
1832
+ $this->error = __( 'Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one.', 'jetpack' );
1833
+ break;
1834
+ case 'invalid_grant' :
1835
+ $this->error = __( "Wrong size. Hm&#8230; it seems your Jetpack doesn&#8217;t quite fit. Have you lost weight? Click &#8220;Connect to WordPress.com&#8221; again to get your Jetpack adjusted.", 'jetpack' );
1836
+ break;
1837
+ case 'site_inaccessible' :
1838
+ case 'site_requires_authorization' :
1839
+ $this->error = sprintf( __( 'Your website needs to be publicly accessible to use Jetpack: %s', 'jetpack' ), "<code>$error</code>" );
1840
+ break;
1841
+ case 'module_activation_failed' :
1842
+ $module = Jetpack::state( 'module' );
1843
+ if ( !empty( $module ) && $mod = Jetpack::get_module( $module ) ) {
1844
+ $this->error = sprintf( __( '%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?', 'jetpack' ), $mod['name'] );
1845
+ if ( isset( $this->plugins_to_deactivate[$module] ) ) {
1846
+ $this->error .= ' ' . sprintf( __( 'Do you still have the %s plugin installed?', 'jetpack' ), $this->plugins_to_deactivate[$module][1] );
1847
+ }
1848
+ } else {
1849
+ $this->error = __( 'Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?', 'jetpack' );
1850
+ }
1851
+ if ( $php_errors = Jetpack::state( 'php_errors' ) ) {
1852
+ $this->error .= "<br />\n";
1853
+ $this->error .= $php_errors;
1854
+ }
1855
+ break;
1856
+ case 'not_public' :
1857
+ $this->error = __( "<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost).", 'jetpack' );
1858
+ break;
1859
+ case 'wpcom_408' :
1860
+ case 'wpcom_5??' :
1861
+ case 'wpcom_bad_response' :
1862
+ case 'wpcom_outage' :
1863
+ $this->error = __( 'WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later.', 'jetpack' );
1864
+ break;
1865
+ case 'register_http_request_failed' :
1866
+ case 'token_http_request_failed' :
1867
+ $this->error = sprintf( __( 'Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host.', 'jetpack' ), "<code>$error</code>" );
1868
+ break;
1869
+ default :
1870
+ if ( empty( $error ) ) {
1871
+ break;
1872
+ }
1873
+ $error = trim( substr( strip_tags( $error ), 0, 20 ) );
1874
+ // no break: fall through
1875
+ case 'no_role' :
1876
+ case 'no_cap' :
1877
+ case 'no_code' :
1878
+ case 'no_state' :
1879
+ case 'invalid_state' :
1880
+ case 'invalid_request' :
1881
+ case 'invalid_scope' :
1882
+ case 'unsupported_response_type' :
1883
+ case 'invalid_token' :
1884
+ case 'no_token' :
1885
+ case 'missing_secrets' :
1886
+ case 'home_missing' :
1887
+ case 'siteurl_missing' :
1888
+ case 'gmt_offset_missing' :
1889
+ case 'site_name_missing' :
1890
+ case 'secret_1_missing' :
1891
+ case 'secret_2_missing' :
1892
+ case 'site_lang_missing' :
1893
+ case 'home_malformed' :
1894
+ case 'siteurl_malformed' :
1895
+ case 'gmt_offset_malformed' :
1896
+ case 'timezone_string_malformed' :
1897
+ case 'site_name_malformed' :
1898
+ case 'secret_1_malformed' :
1899
+ case 'secret_2_malformed' :
1900
+ case 'site_lang_malformed' :
1901
+ case 'secrets_mismatch' :
1902
+ case 'verify_secret_1_missing' :
1903
+ case 'verify_secret_1_malformed' :
1904
+ case 'verify_secrets_missing' :
1905
+ case 'verify_secrets_mismatch' :
1906
+ $error = esc_html( $error );
1907
+ $this->error = sprintf( __( "<strong>Your Jetpack has a glitch.</strong> Something went wrong that&#8217;s never supposed to happen. Guess you&#8217;re just lucky: %s", 'jetpack' ), "<code>$error</code>" );
1908
+ if ( !Jetpack::is_active() ) {
1909
+ $this->error .= '<br />';
1910
+ $this->error .= sprintf( __( 'Try connecting again.', 'jetpack' ) );
1911
+ }
1912
+ break;
1913
+ }
1914
+
1915
+ $message_code = Jetpack::state( 'message' );
1916
+
1917
+ $active_state = Jetpack::state( 'activated_modules' );
1918
+ if ( !empty( $active_state ) ) {
1919
+ $available = Jetpack::get_available_modules();
1920
+ $active_state = explode( ',', $active_state );
1921
+ $active_state = array_intersect( $active_state, $available );
1922
+ if ( count( $active_state ) ) {
1923
+ foreach ( $active_state as $mod ) {
1924
+ $this->stat( 'module-activated', $mod );
1925
+ }
1926
+ } else {
1927
+ $active_state = false;
1928
+ }
1929
+ }
1930
+
1931
+ switch ( $message_code ) {
1932
+ case 'modules_activated' :
1933
+ $this->message = sprintf(
1934
+ __( 'Welcome to <strong>Jetpack %s</strong>!', 'jetpack' ),
1935
+ JETPACK__VERSION
1936
+ );
1937
+
1938
+ if ( $active_state ) {
1939
+ $titles = array();
1940
+ foreach ( $active_state as $mod ) {
1941
+ if ( $mod_headers = Jetpack::get_module( $mod ) ) {
1942
+ $titles[] = '<strong>' . preg_replace( '/\s+(?![^<>]++>)/', '&nbsp;', $mod_headers['name'] ) . '</strong>';
1943
+ }
1944
+ }
1945
+ if ( $titles ) {
1946
+ $this->message .= '<br /><br />' . wp_sprintf( __( 'The following new modules have been activated: %l.', 'jetpack' ), $titles );
1947
+ }
1948
+ }
1949
+
1950
+ if ( $reactive_state = Jetpack::state( 'reactivated_modules' ) ) {
1951
+ $titles = array();
1952
+ foreach ( explode( ',', $reactive_state ) as $mod ) {
1953
+ if ( $mod_headers = Jetpack::get_module( $mod ) ) {
1954
+ $titles[] = '<strong>' . preg_replace( '/\s+(?![^<>]++>)/', '&nbsp;', $mod_headers['name'] ) . '</strong>';
1955
+ }
1956
+ }
1957
+ if ( $titles ) {
1958
+ $this->message .= '<br /><br />' . wp_sprintf( __( 'The following modules have been updated: %l.', 'jetpack' ), $titles );
1959
+ }
1960
+ }
1961
+
1962
+ $this->message .= Jetpack::jetpack_comment_notice();
1963
+ break;
1964
+
1965
+ case 'module_activated' :
1966
+ if ( $module = Jetpack::get_module( Jetpack::state( 'module' ) ) ) {
1967
+ $this->message = sprintf( __( '<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card.', 'jetpack' ), $module['name'] );
1968
+ $this->stat( 'module-activated', Jetpack::state( 'module' ) );
1969
+ }
1970
+ break;
1971
+
1972
+ case 'module_deactivated' :
1973
+ $modules = Jetpack::state( 'module' );
1974
+ if ( !$modules ) {
1975
+ break;
1976
+ }
1977
+
1978
+ $module_names = array();
1979
+ foreach ( explode( ',', $modules ) as $module_slug ) {
1980
+ $module = Jetpack::get_module( $module_slug );
1981
+ if ( $module ) {
1982
+ $module_names[] = $module['name'];
1983
+ }
1984
+
1985
+ $this->stat( 'module-deactivated', $module_slug );
1986
+ }
1987
+
1988
+ if ( !$module_names ) {
1989
+ break;
1990
+ }
1991
+
1992
+ $this->message = wp_sprintf(
1993
+ _nx(
1994
+ '<strong>%l Deactivated!</strong> You can activate it again at any time using the activate button on the module card.',
1995
+ '<strong>%l Deactivated!</strong> You can activate them again at any time using the activate buttons on their module cards.',
1996
+ count( $module_names ),
1997
+ '%l = list of Jetpack module/feature names',
1998
+ 'jetpack'
1999
+ ),
2000
+ $module_names
2001
+ );
2002
+ break;
2003
+
2004
+ case 'module_configured' :
2005
+ $this->message = __( '<strong>Module settings were saved.</strong> ', 'jetpack' );
2006
+ break;
2007
+
2008
+ case 'already_authorized' :
2009
+ $this->message = __( '<strong>Your Jetpack is already connected.</strong> ', 'jetpack' );
2010
+ break;
2011
+
2012
+ case 'authorized' :
2013
+ $this->message = __( "<strong>You&#8217;re fueled up and ready to go.</strong> ", 'jetpack' );
2014
+ $this->message .= "<br />\n";
2015
+ $this->message .= __( 'The features below are now active. Click the learn more buttons to explore each feature.', 'jetpack' );
2016
+ $this->message .= Jetpack::jetpack_comment_notice();
2017
+ break;
2018
+
2019
+ case 'linked' :
2020
+ $this->message = __( "<strong>You&#8217;re fueled up and ready to go.</strong> ", 'jetpack' );
2021
+ $this->message .= Jetpack::jetpack_comment_notice();
2022
+ break;
2023
+
2024
+ case 'unlinked' :
2025
+ $user = wp_get_current_user();
2026
+ $this->message = sprintf( __( '<strong>You have unlinked your account (%s) from WordPress.com.</strong>', 'jetpack' ), $user->user_login );
2027
+ break;
2028
+ }
2029
+
2030
+ $deactivated_plugins = Jetpack::state( 'deactivated_plugins' );
2031
+
2032
+ if ( !empty( $deactivated_plugins ) ) {
2033
+ $deactivated_plugins = explode( ',', $deactivated_plugins );
2034
+ $deactivated_titles = array();
2035
+ foreach ( $deactivated_plugins as $deactivated_plugin ) {
2036
+ if ( !isset( $this->plugins_to_deactivate[$deactivated_plugin] ) ) {
2037
+ continue;
2038
+ }
2039
+
2040
+ $deactivated_titles[] = '<strong>' . str_replace( ' ', '&nbsp;', $this->plugins_to_deactivate[$deactivated_plugin][1] ) . '</strong>';
2041
+ }
2042
+
2043
+ if ( $deactivated_titles ) {
2044
+ if ( $this->message ) {
2045
+ $this->message .= "<br /><br />\n";
2046
+ }
2047
+
2048
+ $this->message .= wp_sprintf( _n(
2049
+ 'Jetpack contains the most recent version of the old %l plugin.',
2050
+ 'Jetpack contains the most recent versions of the old %l plugins.',
2051
+ count( $deactivated_titles ),
2052
+ 'jetpack'
2053
+ ), $deactivated_titles );
2054
+
2055
+ $this->message .= "<br />\n";
2056
+
2057
+ $this->message .= _n(
2058
+ 'The old version has been deactivated and can be removed from your site.',
2059
+ 'The old versions have been deactivated and can be removed from your site.',
2060
+ count( $deactivated_titles ),
2061
+ 'jetpack'
2062
+ );
2063
+ }
2064
+ }
2065
+
2066
+ $this->privacy_checks = Jetpack::state( 'privacy_checks' );
2067
+
2068
+ if ( $this->message || $this->error || $this->privacy_checks ) {
2069
+ add_action( 'jetpack_notices', array( $this, 'admin_notices' ) );
2070
+ }
2071
+
2072
+ if ( isset( $_GET['configure'] ) && Jetpack::is_module( $_GET['configure'] ) && current_user_can( 'manage_options' ) ) {
2073
+ do_action( 'jetpack_module_configuration_load_' . $_GET['configure'] );
2074
+ }
2075
+
2076
+ add_filter( 'jetpack_short_module_description', 'wptexturize' );
2077
+ }
2078
+
2079
+ function admin_notices() {
2080
+
2081
+ if ( $this->error ) {
2082
+ ?>
2083
+ <div id="message" class="jetpack-message jetpack-err">
2084
+ <div class="squeezer">
2085
+ <h4><?php echo wp_kses( $this->error, array( 'code' => true, 'strong' => true, 'br' => true, 'b' => true ) ); ?></h4>
2086
+ <?php if ( $desc = Jetpack::state( 'error_description' ) ) : ?>
2087
+ <p><?php echo esc_html( stripslashes( $desc ) ); ?></p>
2088
+ <?php endif; ?>
2089
+ </div>
2090
+ </div>
2091
+ <?php
2092
+ }
2093
+
2094
+ if ( $this->message ) {
2095
+ ?>
2096
+ <div id="message" class="jetpack-message">
2097
+ <div class="squeezer">
2098
+ <h4><?php echo wp_kses( $this->message, array( 'strong' => array(), 'a' => array( 'href' => true ), 'br' => true ) ); ?></h4>
2099
+ </div>
2100
+ </div>
2101
+ <?php
2102
+
2103
+ }
2104
+
2105
+ if ( $this->privacy_checks ) :
2106
+ $module_names = $module_slugs = array();
2107
+
2108
+ $privacy_checks = explode( ',', $this->privacy_checks );
2109
+ foreach ( $privacy_checks as $module_slug ) {
2110
+ $module = Jetpack::get_module( $module_slug );
2111
+ if ( !$module ) {
2112
+ continue;
2113
+ }
2114
+
2115
+ $module_slugs[] = $module_slug;
2116
+ $module_names[] = "<strong>{$module['name']}</strong>";
2117
+ }
2118
+
2119
+ $module_slugs = join( ',', $module_slugs );
2120
+ ?>
2121
+ <div id="message" class="jetpack-message jetpack-err">
2122
+ <div class="squeezer">
2123
+ <h4><strong><?php esc_html_e( 'Is this site private?', 'jetpack' ); ?></strong></h4><br />
2124
+ <p><?php
2125
+ echo wp_kses( wptexturize( wp_sprintf(
2126
+ _nx(
2127
+ "Like your site's RSS feeds, %l allows access to your posts and other content to third parties.",
2128
+ "Like your site's RSS feeds, %l allow access to your posts and other content to third parties.",
2129
+ count( $privacy_checks ),
2130
+ '%l = list of Jetpack module/feature names',
2131
+ 'jetpack'
2132
+ ),
2133
+ $module_names
2134
+ ) ), array( 'strong' => true ) );
2135
+
2136
+ echo "\n<br />\n";
2137
+
2138
+ echo wp_kses( sprintf(
2139
+ _nx(
2140
+ 'If your site is not publicly accessible, consider <a href="%1$s" title="%2$s">deactivating this feature</a>.',
2141
+ 'If your site is not publicly accessible, consider <a href="%1$s" title="%2$s">deactivating these features</a>.',
2142
+ count( $privacy_checks ),
2143
+ '%1$s = deactivation URL, %2$s = "Deactivate {list of Jetpack module/feature names}',
2144
+ 'jetpack'
2145
+ ),
2146
+ wp_nonce_url(
2147
+ Jetpack::admin_url( array(
2148
+ 'action' => 'deactivate',
2149
+ 'module' => urlencode( $module_slugs ),
2150
+ ) ),
2151
+ "jetpack_deactivate-$module_slugs"
2152
+ ),
2153
+ esc_attr( wp_kses( wp_sprintf( _x( 'Deactivate %l', '%l = list of Jetpack module/feature names', 'jetpack' ), $module_names ), array() ) )
2154
+ ), array( 'a' => array( 'href' => true, 'title' => true ) ) );
2155
+ ?></p>
2156
+ </div>
2157
+ </div>
2158
+ <?php
2159
+ endif;
2160
+ }
2161
+
2162
+ /**
2163
+ * Record a stat for later output
2164
+ */
2165
+ function stat( $group, $detail ) {
2166
+ if ( !isset( $this->stats[ $group ] ) )
2167
+ $this->stats[ $group ] = array();
2168
+ $this->stats[ $group ][] = $detail;
2169
+ }
2170
+
2171
+ /**
2172
+ * Load stats pixels. $group is auto-prefixed with "jetpack-"
2173
+ */
2174
+ function do_stats() {
2175
+ if ( is_array( $this->stats ) && count( $this->stats ) ) {
2176
+ foreach ( $this->stats as $group => $stats ) {
2177
+ if ( is_array( $stats ) && count( $stats ) )
2178
+ echo '<img src="' . ( is_ssl() ? 'https' : 'http' ) . '://stats.wordpress.com/g.gif?v=wpcom2&x_jetpack-' . esc_attr( $group ) . '=' . esc_attr( implode( ',', $stats ) ) . '&rand=' . md5( mt_rand( 0, 999 ) . time() ) . '" width="1" height="1" style="display:none;" />';
2179
+ }
2180
+ }
2181
+ }
2182
+
2183
+ function translate_current_user_to_role() {
2184
+ foreach ( $this->capability_translations as $role => $cap ) {
2185
+ if ( current_user_can( $role ) || current_user_can( $cap ) ) {
2186
+ return $role;
2187
+ }
2188
+ }
2189
+
2190
+ return false;
2191
+ }
2192
+
2193
+ function translate_role_to_cap( $role ) {
2194
+ if ( !isset( $this->capability_translations[$role] ) ) {
2195
+ return false;
2196
+ }
2197
+
2198
+ return $this->capability_translations[$role];
2199
+ }
2200
+
2201
+ function sign_role( $role ) {
2202
+ if ( !$user_id = (int) get_current_user_id() ) {
2203
+ return false;
2204
+ }
2205
+
2206
+ $token = Jetpack_Data::get_access_token();
2207
+ if ( !$token || is_wp_error( $token ) ) {
2208
+ return false;
2209
+ }
2210
+
2211
+ return $role . ':' . hash_hmac( 'md5', "{$role}|{$user_id}", $token->secret );
2212
+ }
2213
+
2214
+ function build_connect_url( $raw = false, $redirect = false ) {
2215
+ if ( !Jetpack::get_option( 'blog_token' ) ) {
2216
+ $url = wp_nonce_url( add_query_arg( 'action', 'register', menu_page_url( 'jetpack', false ) ), 'jetpack-register' );
2217
+ } else {
2218
+ $role = $this->translate_current_user_to_role();
2219
+ $signed_role = $this->sign_role( $role );
2220
+
2221
+ $user = wp_get_current_user();
2222
+
2223
+ $redirect = $redirect ? esc_url_raw( $redirect ) : '';
2224
+
2225
+ $args = urlencode_deep( array(
2226
+ 'response_type' => 'code',
2227
+ 'client_id' => Jetpack::get_option( 'id' ),
2228
+ 'redirect_uri' => add_query_arg( array(
2229
+ 'action' => 'authorize',
2230
+ '_wpnonce' => wp_create_nonce( "jetpack-authorize_{$role}_{$redirect}" ),
2231
+ 'redirect' => $redirect ? urlencode( $redirect ) : false,
2232
+ ), menu_page_url( 'jetpack', false ) ),
2233
+ 'state' => $user->ID,
2234
+ 'scope' => $signed_role,
2235
+ 'user_email' => $user->user_email,
2236
+ 'user_login' => $user->user_login,
2237
+ 'is_active' => Jetpack::is_active(),
2238
+ 'jp_version' => JETPACK__VERSION,
2239
+ ) );
2240
+
2241
+ $url = add_query_arg( $args, Jetpack::api_url( 'authorize' ) );
2242
+ }
2243
+
2244
+ return $raw ? $url : esc_url( $url );
2245
+ }
2246
+
2247
+ function admin_url( $args = null ) {
2248
+ $url = admin_url( 'admin.php?page=jetpack' );
2249
+ if ( is_array( $args ) )
2250
+ $url = add_query_arg( $args, $url );
2251
+ return $url;
2252
+ }
2253
+
2254
+ function dismiss_jetpack_notice() {
2255
+ if ( isset( $_GET['jetpack-notice'] ) && 'dismiss' == $_GET['jetpack-notice'] && ! is_plugin_active_for_network( plugin_basename( __FILE__ ) ) ) {
2256
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
2257
+
2258
+ deactivate_plugins( plugin_basename( __FILE__ ), false, false );
2259
+
2260
+ wp_safe_redirect( admin_url() . 'plugins.php?deactivate=true&plugin_status=all&paged=1&s=' );
2261
+ exit;
2262
+ }
2263
+ }
2264
+
2265
+ function admin_page() {
2266
+ global $current_user;
2267
+
2268
+ $role = $this->translate_current_user_to_role();
2269
+ $is_connected = Jetpack::is_active();
2270
+ $user_token = Jetpack_Data::get_access_token($current_user->ID);
2271
+ $is_user_connected = $user_token && !is_wp_error($user_token);
2272
+ $is_master_user = $current_user->ID == Jetpack::get_option( 'master_user' );
2273
+ $module = false;
2274
+ ?>
2275
+ <div class="wrap" id="jetpack-settings">
2276
+
2277
+ <h2 style="display: none"></h2> <!-- For WP JS message relocation -->
2278
+
2279
+ <div id="jp-header"<?php if ( $is_connected ) : ?> class="small"<?php endif; ?>>
2280
+ <div id="jp-clouds">
2281
+ <?php if ( $is_connected ) : ?>
2282
+ <div id="jp-disconnectors">
2283
+ <?php if ( current_user_can( 'manage_options' ) ) : ?>
2284
+ <div id="jp-disconnect" class="jp-disconnect">
2285
+ <a href="<?php echo wp_nonce_url( Jetpack::admin_url( array( 'action' => 'disconnect' ) ), 'jetpack-disconnect' ); ?>"><div class="deftext"><?php _e( 'Connected to WordPress.com', 'jetpack' ); ?></div><div class="hovertext"><?php _e( 'Disconnect from WordPress.com', 'jetpack' ) ?></div></a>
2286
+ </div>
2287
+ <?php endif; ?>
2288
+ <?php if ( $is_user_connected && !$is_master_user ) : ?>
2289
+ <div id="jp-unlink" class="jp-disconnect">
2290
+ <a href="<?php echo wp_nonce_url( Jetpack::admin_url( array( 'action' => 'unlink' ) ), 'jetpack-unlink' ); ?>"><div class="deftext"><?php _e( 'User linked to WordPress.com', 'jetpack' ); ?></div><div class="hovertext"><?php _e( 'Unlink user from WordPress.com', 'jetpack' ) ?></div></a>
2291
+ </div>
2292
+ <?php endif; ?>
2293
+ </div>
2294
+ <?php endif; ?>
2295
+ <h3><?php _e( 'Jetpack by WordPress.com', 'jetpack' ) ?></h3>
2296
+ <?php if ( !$is_connected ) : ?>
2297
+ <div id="jp-notice">
2298
+ <p><?php _e( 'Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com.', 'jetpack' ); ?></p>
2299
+ </div>
2300
+ <?php endif; ?>
2301
+ </div>
2302
+ </div>
2303
+
2304
+ <?php if ( isset( $_GET['jetpack-notice'] ) && 'dismiss' == $_GET['jetpack-notice'] ) : ?>
2305
+ <div id="message" class="error">
2306
+ <p><?php _e( 'Jetpack is network activated and notices can not be dismissed.', 'jetpack' ); ?></p>
2307
+ </div>
2308
+ <?php endif; ?>
2309
+
2310
+ <?php do_action( 'jetpack_notices' ) ?>
2311
+
2312
+ <?php // If the connection has not been made then show the marketing text. ?>
2313
+ <?php if ( ! $is_connected ) : ?>
2314
+
2315
+ <div id="message" class="updated jetpack-message jp-connect">
2316
+ <div id="jp-dismiss" class="jetpack-close-button-container">
2317
+ <a class="jetpack-close-button" href="?page=jetpack&jetpack-notice=dismiss" title="<?php _e( 'Dismiss this notice.', 'jetpack' ); ?>"><?php _e( 'Dismiss this notice.', 'jetpack' ); ?></a>
2318
+ </div>
2319
+ <div class="jetpack-wrap-container">
2320
+ <div class="jetpack-text-container">
2321
+ <h4>
2322
+ <p><?php _e( "To enable all of the Jetpack features you&#8217;ll need to connect your website to WordPress.com using the button to the right. Once you&#8217;ve made the connection you&#8217;ll activate all the delightful features below.", 'jetpack' ) ?></p>
2323
+ </h4>
2324
+ </div>
2325
+ <div class="jetpack-install-container">
2326
+ <p class="submit"><a href="<?php echo $this->build_connect_url() ?>" class="button-connector" id="wpcom-connect"><?php _e( 'Connect to WordPress.com', 'jetpack' ); ?></a></p>
2327
+ </div>
2328
+ </div>
2329
+ </div>
2330
+
2331
+ <?php elseif ( ! $is_user_connected ) : ?>
2332
+
2333
+ <div id="message" class="updated jetpack-message jp-connect">
2334
+ <div class="jetpack-wrap-container">
2335
+ <div class="jetpack-text-container">
2336
+ <h4>
2337
+ <p><?php _e( "To enable all of the Jetpack features you&#8217;ll need to link your account here to your WordPress.com account using the button to the right.", 'jetpack' ) ?></p>
2338
+ </h4>
2339
+ </div>
2340
+ <div class="jetpack-install-container">
2341
+ <p class="submit"><a href="<?php echo $this->build_connect_url() ?>" class="button-connector" id="wpcom-connect"><?php _e( 'Link account with WordPress.com', 'jetpack' ); ?></a></p>
2342
+ </div>
2343
+ </div>
2344
+ </div>
2345
+
2346
+ <?php else /* blog and user are connected */ : ?>
2347
+ <?php /* TODO: if not master user, show user disconnect button? */ ?>
2348
+ <?php endif; ?>
2349
+
2350
+ <?php
2351
+ // If we select the configure option for a module, show the configuration screen.
2352
+ if ( isset( $_GET['configure'] ) && Jetpack::is_module( $_GET['configure'] ) && current_user_can( 'manage_options' ) ) :
2353
+ $this->admin_screen_configure_module( $_GET['configure'] );
2354
+
2355
+ // List all the available modules.
2356
+ else :
2357
+ $this->admin_screen_list_modules();
2358
+ ?>
2359
+
2360
+ <div id="survey" class="jp-survey">
2361
+ <div class="jp-survey-container">
2362
+ <div class="jp-survey-text">
2363
+ <h4><?php _e( 'Have feedback on Jetpack?', 'jetpack' ); ?></h4>
2364
+ <br />
2365
+ <?php _e( 'Answer a short survey to let us know how we&#8217;re doing and what to add in the future.', 'jetpack' ); ?>
2366
+ </div>
2367
+ <div class="jp-survey-button-container">
2368
+ <p class="submit"><?php printf( '<a id="jp-survey-button" class="button-primary" target="_blank" href="%1$s">%2$s</a>', 'http://jetpack.me/survey/?rel=' . JETPACK__VERSION, __( 'Take Survey', 'jetpack' ) ); ?></p>
2369
+ </div>
2370
+ </div>
2371
+ </div>
2372
+
2373
+ <?php if ( $is_connected && $this->current_user_is_connection_owner() ) : ?>
2374
+ <p id="news-sub"><?php _e( 'Checking email updates status&hellip;', 'jetpack' ); ?></p>
2375
+ <script type="text/javascript">
2376
+ jQuery(document).ready(function($){
2377
+ $.get( ajaxurl, { action: 'jetpack-check-news-subscription', rand: jQuery.now().toString() + Math.random().toString() }, function( data ) {
2378
+ if ( 'subscribed' == data ) {
2379
+ $( '#news-sub' ).html( '<?php printf(
2380
+ esc_js( _x( 'You are currently subscribed to email updates. %s', '%s = Unsubscribe link', 'jetpack' ) ),
2381
+ '<a href="#" class="jp-news-link button">' . esc_js( __( 'Unsubscribe', 'jetpack' ) ) . '</a>'
2382
+ ); ?>' );
2383
+ } else {
2384
+ $( '#news-sub' ).html( '<?php printf(
2385
+ esc_js( _x( 'Want to receive updates about Jetpack by email? %s', '%s = Subscribe link', 'jetpack' ) ),
2386
+ '<a href="#" class="jp-news-link button-primary">' . esc_js( __( 'Subscribe', 'jetpack' ) ) . '</a>'
2387
+ ); ?>' );
2388
+ }
2389
+ $( '.jp-news-link' ).click( function() {
2390
+ $( '#news-sub' ).append( ' <img src="<?php echo esc_js( esc_url( admin_url( 'images/loading.gif' ) ) ); ?>" align="absmiddle" id="jp-news-loading" />' );
2391
+ $.get( ajaxurl, { action: 'jetpack-subscribe-to-news', rand: jQuery.now().toString() + Math.random().toString() }, function( data ) {
2392
+ if ( 'subscribed' == data ) {
2393
+ $( '#news-sub' ).text( '<?php echo esc_js( __( 'You have been subscribed to receive email updates.', 'jetpack' ) ); ?>' );
2394
+ } else {
2395
+ $( '#news-sub' ).text( '<?php echo esc_js( __( 'You will no longer receive email updates about Jetpack.', 'jetpack' ) ); ?>' );
2396
+ }
2397
+ $( '#jp-news-loading' ).remove();
2398
+ } );
2399
+ return false;
2400
+ } );
2401
+ } );
2402
+ } );
2403
+ </script>
2404
+ <?php endif; ?>
2405
+ <?php endif; ?>
2406
+
2407
+ <div id="jp-footer">
2408
+ <p class="automattic"><?php _e( 'An <span>Automattic</span> Airline', 'jetpack' ) ?></p>
2409
+ <p class="small">
2410
+ <a href="http://jetpack.me/" target="_blank">Jetpack <?php echo esc_html( JETPACK__VERSION ); ?></a> |
2411
+ <a href="http://automattic.com/privacy/" target="_blank"><?php _e( 'Privacy Policy', 'jetpack' ); ?></a> |
2412
+ <a href="http://wordpress.com/tos/" target="_blank"><?php _e( 'Terms of Service', 'jetpack' ); ?></a> |
2413
+ <?php if ( current_user_can( 'manage_options' ) ) : ?>
2414
+ <a href="<?php echo esc_url( wp_nonce_url( admin_url( 'admin-ajax.php?action=jetpack_debug' ), 'jetpack_debug' ) ); ?>" id="jp-debug"><?php _e( 'Debug', 'jetpack' ); ?></a> |
2415
+ <?php endif; ?>
2416
+ <a href="http://jetpack.me/support/" target="_blank"><?php _e( 'Support', 'jetpack' ); ?></a>
2417
+ </p>
2418
+ </div>
2419
+
2420
+ <div id="jetpack-configuration" style="display:none;">
2421
+ <p><img width="16" src="<?php echo esc_url( plugins_url( '_inc/images/wpspin_light-2x.gif', __FILE__ ) ); ?>" alt="Loading ..." /></p>
2422
+ </div>
2423
+ </div>
2424
+ <?php
2425
+ }
2426
+
2427
+ function ajax_debug() {
2428
+ nocache_headers();
2429
+
2430
+ check_ajax_referer( 'jetpack_debug' );
2431
+
2432
+ if ( !current_user_can( 'manage_options' ) ) {
2433
+ die( '-1' );
2434
+ }
2435
+ ?>
2436
+ <p><?php esc_html_e( 'This is sensitive information. Please do not post your BLOG_TOKEN or USER_TOKEN publicly; they are like passwords.', 'jetpack' ); ?></p>
2437
+ <ul>
2438
+ <?php
2439
+ // Extract the current_user's token
2440
+ $user_id = get_current_user_id();
2441
+ $user_tokens = Jetpack::get_option( 'user_tokens' );
2442
+ if ( is_array( $user_tokens ) && array_key_exists( $user_id, $user_tokens ) ) {
2443
+ $user_token = $user_tokens[$user_id];
2444
+ } else {
2445
+ $user_token = '[this user has no token]';
2446
+ }
2447
+ unset( $user_tokens );
2448
+
2449
+ foreach ( array(
2450
+ 'CLIENT_ID' => 'id',
2451
+ 'BLOG_TOKEN' => 'blog_token',
2452
+ 'MASTER_USER' => 'master_user',
2453
+ 'CERT' => 'fallback_no_verify_ssl_certs',
2454
+ 'TIME_DIFF' => 'time_diff',
2455
+ 'VERSION' => 'version',
2456
+ 'OLD_VERSION' => 'old_version',
2457
+ 'PUBLIC' => 'public',
2458
+ ) as $label => $option_name ) :
2459
+ ?>
2460
+ <li><?php echo esc_html( $label ); ?>: <code><?php echo esc_html( Jetpack::get_option( $option_name ) ); ?></code></li>
2461
+ <?php endforeach; ?>
2462
+ <li>USER_ID: <code><?php echo esc_html( $user_id ); ?></code></li>
2463
+ <li>USER_TOKEN: <code><?php echo esc_html( $user_token ); ?></code></li>
2464
+ <li>PHP_VERSION: <code><?php echo esc_html( PHP_VERSION ); ?></code></li>
2465
+ <li>WORDPRESS_VERSION: <code><?php echo esc_html( $GLOBALS['wp_version'] ); ?></code></li>
2466
+ </ul>
2467
+ <?php
2468
+ exit;
2469
+ }
2470
+
2471
+ function admin_screen_configure_module( $module_id ) {
2472
+ if ( !in_array( $module_id, $this->get_active_modules() ) || !current_user_can( 'manage_options' ) )
2473
+ return false; ?>
2474
+
2475
+ <div id="jp-settings-screen" style="position: relative">
2476
+ <h3>
2477
+ <?php
2478
+ $module = Jetpack::get_module( $module_id );
2479
+ echo '<a href="' . menu_page_url( 'jetpack', false ) . '">' . __( 'Jetpack by WordPress.com', 'jetpack' ) . '</a> &rarr; ';
2480
+ printf( __( 'Configure %s', 'jetpack' ), $module['name'] );
2481
+ ?>
2482
+ </h3>
2483
+
2484
+ <?php do_action( 'jetpack_module_configuration_screen_' . $module_id ); ?>
2485
+ </div><?php
2486
+ }
2487
+
2488
+ function sort_modules( $a, $b ) {
2489
+ if ( $a['sort'] == $b['sort'] )
2490
+ return 0;
2491
+
2492
+ return ( $a['sort'] < $b['sort'] ) ? -1 : 1;
2493
+ }
2494
+
2495
+ function admin_screen_list_modules() {
2496
+ require_once dirname( __FILE__ ) . '/modules/module-info.php';
2497
+ $jetpack_connected = true;
2498
+ if ( !Jetpack::is_active() )
2499
+ $jetpack_connected = false;
2500
+
2501
+ ?>
2502
+ <div class="module-container">
2503
+ <?php
2504
+
2505
+ $avail_raw = Jetpack::get_available_modules();
2506
+ $available = array();
2507
+ $active = Jetpack::get_active_modules();
2508
+ $counter = 0;
2509
+
2510
+ foreach ( (array) $avail_raw as $module ) {
2511
+ if ( $plugin = Jetpack::get_module( $module ) ) {
2512
+ $plugin['module'] = $module;
2513
+ $available[] = $plugin;
2514
+ }
2515
+ }
2516
+ unset( $avail_raw );
2517
+ usort( $available, array( 'Jetpack', 'sort_modules' ) );
2518
+ $jetpack_version = Jetpack::get_option( 'version' );
2519
+ if ( $jetpack_version ) {
2520
+ list( $jetpack_version, $jetpack_version_time ) = explode( ':', $jetpack_version );
2521
+ } else {
2522
+ $jetpack_version = 0;
2523
+ $jetpack_version_time = 0;
2524
+ }
2525
+
2526
+ $jetpack_old_version = Jetpack::get_option( 'old_version' );
2527
+ if ( $jetpack_old_version ) {
2528
+ list( $jetpack_old_version ) = explode( ':', $jetpack_old_version );
2529
+ } else {
2530
+ $jetpack_old_version = 0;
2531
+ }
2532
+ $now = time();
2533
+
2534
+ foreach ( (array) $available as $module_data ) {
2535
+ $module = $module_data['module'];
2536
+ $activated = in_array( $module, $active );
2537
+ if ( $activated ) {
2538
+ $css = 'active';
2539
+ $toggle = __( 'Deactivate', 'jetpack' );
2540
+ $toggle_url = wp_nonce_url(
2541
+ Jetpack::admin_url( array(
2542
+ 'action' => 'deactivate',
2543
+ 'module' => $module
2544
+ ) ),
2545
+ "jetpack_deactivate-$module"
2546
+ );
2547
+ } else {
2548
+ $css = 'inactive';
2549
+ $toggle = __( 'Activate', 'jetpack' );
2550
+ $toggle_url = wp_nonce_url(
2551
+ Jetpack::admin_url( array(
2552
+ 'action' => 'activate',
2553
+ 'module' => $module
2554
+ ) ),
2555
+ "jetpack_activate-$module"
2556
+ );
2557
+ }
2558
+
2559
+ if ( $counter % 4 == 0 ) {
2560
+ $classes = $css . ' jetpack-newline';
2561
+ $counter = 0;
2562
+ } else {
2563
+ $classes = $css;
2564
+ }
2565
+
2566
+ $free_text = esc_html( $module_data['free'] ? __( 'Free', 'jetpack' ) : __( 'Purchase', 'jetpack' ) );
2567
+ $free_text = apply_filters( 'jetpack_module_free_text_' . $module, $free_text );
2568
+ $badge_text = $free_text;
2569
+
2570
+ if ( !$jetpack_connected ) {
2571
+ $classes = 'x disabled';
2572
+ } else if ( $jetpack_version_time + 604800 > $now ) { // 1 week
2573
+ if ( version_compare( $module_data['introduced'], $jetpack_old_version, '>' ) ) {
2574
+ $badge_text = esc_html__( 'New', 'jetpack' );
2575
+ $classes .= ' jetpack-new-module';
2576
+ } elseif ( isset( $module_data['changed'] ) && version_compare( $module_data['changed'], $jetpack_old_version, '>' ) ) {
2577
+ $badge_text = esc_html__( 'Updated', 'jetpack' );
2578
+ $classes .= ' jetpack-updated-module';
2579
+ } else {
2580
+ $badge_text = $free_text;
2581
+ }
2582
+ }
2583
+
2584
+ ?>
2585
+ <div class="jetpack-module jetpack-<?php echo $classes; ?>" id="<?php echo $module ?>">
2586
+ <h3><?php echo $module_data['name']; ?></h3>
2587
+ <div class="jetpack-module-description">
2588
+ <div class="module-image">
2589
+ <p><span class="module-image-badge"><?php echo $badge_text; ?></span><span class="module-image-free" style="display: none"><?php echo $free_text; ?></span></p>
2590
+ </div>
2591
+
2592
+ <p><?php echo apply_filters( 'jetpack_short_module_description', $module_data['description'], $module ); ?></p>
2593
+ </div>
2594
+
2595
+ <div class="jetpack-module-actions">
2596
+ <?php if ( $jetpack_connected ) : ?>
2597
+ <?php if ( !$activated && current_user_can( 'manage_options' ) && apply_filters( 'jetpack_can_activate_' . $module, true ) ) : ?>
2598
+ <a href="<?php echo esc_url( $toggle_url ); ?>" class="<?php echo ( 'inactive' == $css ? ' button-primary' : ' button-secondary' ); ?>"><?php echo $toggle; ?></a>&nbsp;
2599
+ <?php endif; ?>
2600
+
2601
+ <?php do_action( 'jetpack_learn_more_button_' . $module ) ?>
2602
+
2603
+ <?php
2604
+ if ( current_user_can( 'manage_options' ) && apply_filters( 'jetpack_module_configurable_' . $module, false ) ) {
2605
+ echo '<a href="' . esc_attr( Jetpack::module_configuration_url( $module ) ) . '" class="jetpack-configure-button button-secondary">' . __( 'Configure', 'jetpack' ) . '</a>';
2606
+ }
2607
+ ?><?php if ( $activated && $module_data['deactivate'] && current_user_can( 'manage_options' ) ) : ?><a style="display: none;" href="<?php echo esc_url( $toggle_url ); ?>" class="jetpack-deactivate-button button-secondary"><?php echo $toggle; ?></a>&nbsp;<?php endif; ?>
2608
+
2609
+ <?php else : ?>
2610
+ <?php do_action( 'jetpack_learn_more_button_' . $module ) ?>
2611
+ <?php endif; ?>
2612
+ </div>
2613
+ </div>
2614
+ <?php if ( 'inactive' == $css && $jetpack_connected ) : ?>
2615
+ <script type="text/javascript">
2616
+ jQuery( '#<?php echo esc_js( $module ); ?>' ).bind( 'click', function(e){
2617
+ if ( !jQuery(e.target).hasClass('more-info-link') )
2618
+ document.location.href = '<?php echo str_replace( '&amp;', '&', esc_js( esc_url( $toggle_url ) ) ); ?>';
2619
+ } );
2620
+ </script>
2621
+ <?php endif; ?>
2622
+
2623
+ <div id="jp-more-info-<?php echo esc_attr( $module ); ?>" style="display:none;">
2624
+ <?php
2625
+ if ( $jetpack_connected && has_action( 'jetpack_module_more_info_connected_' . $module ) )
2626
+ do_action( 'jetpack_module_more_info_connected_' . $module );
2627
+ else
2628
+ do_action( 'jetpack_module_more_info_' . $module );
2629
+ ?>
2630
+ </div>
2631
+
2632
+ <?php
2633
+ $counter++;
2634
+ }
2635
+
2636
+ // Add in some "Coming soon..." placeholders to fill up the current row and one more
2637
+ for ( $i = 0; $i < 4; $i++ ) { ?>
2638
+ <div class="jetpack-module placeholder"<?php if ( $i > 8 - $counter ) echo ' style="display: none;"'; ?>>
2639
+ <h3><?php _e( 'Coming soon&#8230;', 'jetpack' ) ?></h3>
2640
+ </div>
2641
+ <?php
2642
+ }
2643
+
2644
+ echo '</div><!-- .module-container -->';
2645
+ }
2646
+
2647
+ function check_news_subscription() {
2648
+ if ( !$this->current_user_is_connection_owner() ) {
2649
+ exit;
2650
+ }
2651
+
2652
+ $this->load_xml_rpc_client();
2653
+ $xml = new Jetpack_IXR_Client( array(
2654
+ 'user_id' => JETPACK_MASTER_USER,
2655
+ ) );
2656
+ $xml->query( 'jetpack.checkNewsSubscription' );
2657
+ if ( $xml->isError() ) {
2658
+ printf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() );
2659
+ } else {
2660
+ print_r( $xml->getResponse() );
2661
+ }
2662
+ exit;
2663
+ }
2664
+
2665
+ function subscribe_to_news() {
2666
+ if ( !$this->current_user_is_connection_owner() ) {
2667
+ exit;
2668
+ }
2669
+
2670
+ $this->load_xml_rpc_client();
2671
+ $xml = new Jetpack_IXR_Client( array(
2672
+ 'user_id' => JETPACK_MASTER_USER,
2673
+ ) );
2674
+ $xml->query( 'jetpack.subscribeToNews' );
2675
+ if ( $xml->isError() ) {
2676
+ printf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() );
2677
+ } else {
2678
+ print_r( $xml->getResponse() );
2679
+ }
2680
+ exit;
2681
+ }
2682
+
2683
+ /* Client API */
2684
+
2685
+ /**
2686
+ * Returns the requested Jetpack API URL
2687
+ *
2688
+ * @static
2689
+ * @return string
2690
+ */
2691
+ function api_url( $relative_url ) {
2692
+ return trailingslashit( JETPACK__API_BASE . $relative_url ) . JETPACK__API_VERSION . '/';
2693
+ }
2694
+
2695
+ /**
2696
+ * Some hosts disable the OpenSSL extension and so cannot make outgoing HTTPS requsets
2697
+ */
2698
+ function fix_url_for_bad_hosts( $url, &$args ) {
2699
+ if ( 0 !== strpos( $url, 'https://' ) ) {
2700
+ return $url;
2701
+ }
2702
+
2703
+ switch ( JETPACK_CLIENT__HTTPS ) {
2704
+ case 'ALWAYS' :
2705
+ return $url;
2706
+ case 'NEVER' :
2707
+ return substr_replace( $url, '', 4, 1 );
2708
+ // default : case 'AUTO' :
2709
+ }
2710
+
2711
+ $jetpack = Jetpack::init();
2712
+
2713
+ // Yay! Your host is good!
2714
+ if ( wp_http_supports( array( 'ssl' => true ) ) ) {
2715
+ return $url;
2716
+ }
2717
+
2718
+ // Boo! Your host is bad and makes Jetpack cry!
2719
+ return substr_replace( $url, '', 4, 1 );
2720
+ }
2721
+
2722
+ /**
2723
+ * Returns the Jetpack XML-RPC API
2724
+ *
2725
+ * @static
2726
+ * @return string
2727
+ */
2728
+ function xmlrpc_api_url() {
2729
+ $base = preg_replace( '#(https?://[^?/]+)(/?.*)?$#', '\\1', JETPACK__API_BASE );
2730
+ return untrailingslashit( $base ) . '/xmlrpc.php';
2731
+ }
2732
+
2733
+ /**
2734
+ * @static
2735
+ * @return bool|WP_Error
2736
+ */
2737
+ function register() {
2738
+ Jetpack::update_option( 'register', wp_generate_password( 32, false ) . ':' . wp_generate_password( 32, false ) . ':' . ( time() + 600 ) );
2739
+
2740
+ @list( $secret_1, $secret_2, $secret_eol ) = explode( ':', Jetpack::get_option( 'register' ) );
2741
+ if ( empty( $secret_1 ) || empty( $secret_2 ) || empty( $secret_eol ) || $secret_eol < time() )
2742
+ return new Jetpack_Error( 'missing_secrets' );
2743
+
2744
+ $timeout = (int) ini_get( 'max_execution_time' );
2745
+ if ( !$timeout )
2746
+ $timeout = 30;
2747
+ $timeout = intval( $timeout / 2 );
2748
+
2749
+ $gmt_offset = get_option( 'gmt_offset' );
2750
+ if ( !$gmt_offset ) {
2751
+ $gmt_offset = 0;
2752
+ }
2753
+
2754
+ $stats_options = get_option( 'stats_options' );
2755
+ $stats_id = isset($stats_options['blog_id']) ? $stats_options['blog_id'] : null;
2756
+
2757
+ $args = array(
2758
+ 'method' => 'POST',
2759
+ 'body' => array(
2760
+ 'siteurl' => site_url(),
2761
+ 'home' => home_url(),
2762
+ 'gmt_offset' => $gmt_offset,
2763
+ 'timezone_string' => (string) get_option( 'timezone_string' ),
2764
+ 'site_name' => (string) get_option( 'blogname' ),
2765
+ 'secret_1' => $secret_1,
2766
+ 'secret_2' => $secret_2,
2767
+ 'site_lang' => get_locale(),
2768
+ 'timeout' => $timeout,
2769
+ 'stats_id' => $stats_id,
2770
+ ),
2771
+ 'headers' => array(
2772
+ 'Accept' => 'application/json',
2773
+ ),
2774
+ 'timeout' => $timeout,
2775
+ );
2776
+ $response = Jetpack_Client::_wp_remote_request( Jetpack::fix_url_for_bad_hosts( Jetpack::api_url( 'register' ), $args ), $args, true );
2777
+
2778
+ if ( is_wp_error( $response ) ) {
2779
+ return new Jetpack_Error( 'register_http_request_failed', $response->get_error_message() );
2780
+ }
2781
+
2782
+ $code = wp_remote_retrieve_response_code( $response );
2783
+ $entity = wp_remote_retrieve_body( $response );
2784
+
2785
+ if ( $entity )
2786
+ $json = json_decode( $entity );
2787
+ else
2788
+ $json = false;
2789
+
2790
+ $code_type = intval( $code / 100 );
2791
+ if ( 5 == $code_type ) {
2792
+ return new Jetpack_error( 'wpcom_5??', sprintf( __( 'Error Details: %s', 'jetpack' ), $code ), $code );
2793
+ } elseif ( 408 == $code ) {
2794
+ return new Jetpack_error( 'wpcom_408', sprintf( __( 'Error Details: %s', 'jetpack' ), $code ), $code );
2795
+ } elseif ( !empty( $json->error ) ) {
2796
+ $error_description = isset( $json->error_description ) ? sprintf( __( 'Error Details: %s', 'jetpack' ), (string) $json->error_description ) : '';
2797
+ return new Jetpack_Error( (string) $json->error, $error_description, $code );
2798
+ } elseif ( 200 != $code ) {
2799
+ return new Jetpack_error( 'wpcom_bad_response', sprintf( __( 'Error Details: %s', 'jetpack' ), $code ), $code );
2800
+ }
2801
+
2802
+ if ( empty( $json->jetpack_id ) || !is_scalar( $json->jetpack_id ) || preg_match( '/[^0-9]/', $json->jetpack_id ) )
2803
+ return new Jetpack_Error( 'jetpack_id', '', $code );
2804
+ if ( empty( $json->jetpack_secret ) || !is_string( $json->jetpack_secret ) )
2805
+ return new Jetpack_Error( 'jetpack_secret', '', $code );
2806
+
2807
+ if ( isset( $json->jetpack_public ) ) {
2808
+ $jetpack_public = (int) $json->jetpack_public;
2809
+ } else {
2810
+ $jetpack_public = false;
2811
+ }
2812
+
2813
+ Jetpack::update_options( array(
2814
+ 'id' => (int) $json->jetpack_id,
2815
+ 'blog_token' => (string) $json->jetpack_secret,
2816
+ 'public' => $jetpack_public,
2817
+ ) );
2818
+
2819
+ return true;
2820
+ }
2821
+
2822
+
2823
+ /* Client Server API */
2824
+
2825
+ /**
2826
+ * Loads the Jetpack XML-RPC client
2827
+ */
2828
+ function load_xml_rpc_client() {
2829
+ require_once ABSPATH . WPINC . '/class-IXR.php';
2830
+ require_once dirname( __FILE__ ) . '/class.jetpack-ixr-client.php';
2831
+ }
2832
+
2833
+ function verify_xml_rpc_signature() {
2834
+ if ( $this->xmlrpc_verification ) {
2835
+ return $this->xmlrpc_verification;
2836
+ }
2837
+
2838
+ // It's not for us
2839
+ if ( !isset( $_GET['token'] ) || empty( $_GET['signature'] ) ) {
2840
+ return false;
2841
+ }
2842
+
2843
+ @list( $token_key, $version, $user_id ) = explode( ':', $_GET['token'] );
2844
+ if (
2845
+ empty( $token_key )
2846
+ ||
2847
+ empty( $version ) || strval( JETPACK__API_VERSION ) !== $version
2848
+ ) {
2849
+ return false;
2850
+ }
2851
+
2852
+ if ( '0' === $user_id ) {
2853
+ $token_type = 'blog';
2854
+ $user_id = 0;
2855
+ } else {
2856
+ $token_type = 'user';
2857
+ if ( empty( $user_id ) || ! ctype_digit( $user_id ) ) {
2858
+ return false;
2859
+ }
2860
+ $user_id = (int) $user_id;
2861
+
2862
+ $user = new WP_User( $user_id );
2863
+ if ( ! $user || ! $user->exists() ) {
2864
+ return false;
2865
+ }
2866
+ }
2867
+
2868
+ $token = Jetpack_Data::get_access_token( $user_id );
2869
+ if ( !$token ) {
2870
+ return false;
2871
+ }
2872
+
2873
+ if ( 0 !== strpos( $token->secret, "$token_key." ) ) {
2874
+ return false;
2875
+ }
2876
+
2877
+ require_once dirname( __FILE__ ) . '/class.jetpack-signature.php';
2878
+
2879
+ $jetpack_signature = new Jetpack_Signature( $token->secret, (int) Jetpack::get_option( 'time_diff' ) );
2880
+ if ( isset( $_POST['_jetpack_is_multipart'] ) ) {
2881
+ $post_data = $_POST;
2882
+ $file_hashes = array();
2883
+ foreach ( $post_data as $post_data_key => $post_data_value ) {
2884
+ if ( 0 !== strpos( $post_data_key, '_jetpack_file_hmac_' ) ) {
2885
+ continue;
2886
+ }
2887
+ $post_data_key = substr( $post_data_key, strlen( '_jetpack_file_hmac_' ) );
2888
+ $file_hashes[$post_data_key] = $post_data_value;
2889
+ }
2890
+
2891
+ foreach ( $file_hashes as $post_data_key => $post_data_value ) {
2892
+ unset( $post_data["_jetpack_file_hmac_{$post_data_key}"] );
2893
+ $post_data[$post_data_key] = $post_data_value;
2894
+ }
2895
+
2896
+ ksort( $post_data );
2897
+
2898
+ $body = http_build_query( stripslashes_deep( $post_data ) );
2899
+ } elseif ( is_null( $this->HTTP_RAW_POST_DATA ) ) {
2900
+ $body = file_get_contents( 'php://input' );
2901
+ } else {
2902
+ $body = null;
2903
+ }
2904
+ $signature = $jetpack_signature->sign_current_request( array(
2905
+ 'body' => is_null( $body ) ? $this->HTTP_RAW_POST_DATA : $body
2906
+ ) );
2907
+
2908
+ if ( !$signature ) {
2909
+ return false;
2910
+ } else if ( is_wp_error( $signature ) ) {
2911
+ return $signature;
2912
+ } else if ( $signature !== $_GET['signature'] ) {
2913
+ return false;
2914
+ }
2915
+
2916
+ $timestamp = (int) $_GET['timestamp'];
2917
+ $nonce = stripslashes( (string) $_GET['nonce'] );
2918
+
2919
+ if ( !$this->add_nonce( $timestamp, $nonce ) ) {
2920
+ return false;
2921
+ }
2922
+
2923
+ $this->xmlrpc_verification = array(
2924
+ 'type' => $token_type,
2925
+ 'user_id' => $token->external_user_id,
2926
+ );
2927
+
2928
+ return $this->xmlrpc_verification;
2929
+ }
2930
+
2931
+ /**
2932
+ * Authenticates XML-RPC and other requests from the Jetpack Server
2933
+ */
2934
+ function authenticate_jetpack( $user, $username, $password ) {
2935
+ if ( is_a( $user, 'WP_User' ) ) {
2936
+ return $user;
2937
+ }
2938
+
2939
+ $token_details = $this->verify_xml_rpc_signature();
2940
+
2941
+ if ( ! $token_details || is_wp_error( $token_details ) ) {
2942
+ return $user;
2943
+ }
2944
+
2945
+ if ( 'user' !== $token_details['type'] ) {
2946
+ return $user;
2947
+ }
2948
+
2949
+ if ( ! $token_details['user_id'] ) {
2950
+ return $user;
2951
+ }
2952
+
2953
+ nocache_headers();
2954
+
2955
+ return new WP_User( $token_details['user_id'] );
2956
+ }
2957
+
2958
+ function add_nonce( $timestamp, $nonce ) {
2959
+ global $wpdb;
2960
+ static $nonces_used_this_request = array();
2961
+
2962
+ if ( isset( $nonces_used_this_request["$timestamp:$nonce"] ) ) {
2963
+ return $nonces_used_this_request["$timestamp:$nonce"];
2964
+ }
2965
+
2966
+ // This should always have gone through Jetpack_Signature::sign_request() first to check $timestamp an $nonce
2967
+ $timestamp = (int) $timestamp;
2968
+ $nonce = $wpdb->escape( $nonce );
2969
+
2970
+ // Raw query so we can avoid races: add_option will also update
2971
+ $show_errors = $wpdb->show_errors( false );
2972
+ $return = $wpdb->query( $wpdb->prepare(
2973
+ "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s)",
2974
+ "jetpack_nonce_{$timestamp}_{$nonce}",
2975
+ time(),
2976
+ 'no'
2977
+ ) );
2978
+ $wpdb->show_errors( $show_errors );
2979
+
2980
+ $nonces_used_this_request["$timestamp:$nonce"] = $return;
2981
+
2982
+ return $return;
2983
+ }
2984
+
2985
+ /**
2986
+ * In some setups, $HTTP_RAW_POST_DATA can be emptied during some IXR_Server paths since it is passed by reference to various methods.
2987
+ * Capture it here so we can verify the signature later.
2988
+ */
2989
+ function xmlrpc_methods( $methods ) {
2990
+ $this->HTTP_RAW_POST_DATA = $GLOBALS['HTTP_RAW_POST_DATA'];
2991
+ return $methods;
2992
+ }
2993
+
2994
+ function xmlrpc_options( $options ) {
2995
+ $options['jetpack_version'] = array(
2996
+ 'desc' => __( 'Jetpack Plugin Version' , 'jetpack'),
2997
+ 'readonly' => true,
2998
+ 'value' => JETPACK__VERSION,
2999
+ );
3000
+
3001
+ $options['jetpack_client_id'] = array(
3002
+ 'desc' => __( 'The Client ID/WP.com Blog ID of this site' , 'jetpack'),
3003
+ 'readonly' => true,
3004
+ 'value' => $this->get_option( 'id' ),
3005
+ );
3006
+ return $options;
3007
+ }
3008
+
3009
+ function clean_nonces( $all = false ) {
3010
+ global $wpdb;
3011
+
3012
+ $sql = "DELETE FROM `$wpdb->options` WHERE `option_name` LIKE %s";
3013
+ $sql_args = array( like_escape( 'jetpack_nonce_' ) . '%' );
3014
+
3015
+ if ( true !== $all ) {
3016
+ $sql .= ' AND CAST( `option_value` AS UNSIGNED ) < %d';
3017
+ $sql_args[] = time() - 3600;
3018
+ }
3019
+
3020
+ $sql .= ' LIMIT 100';
3021
+
3022
+ $sql = $wpdb->prepare( $sql, $sql_args );
3023
+
3024
+ for ( $i = 0; $i < 1000; $i++ ) {
3025
+ if ( !$wpdb->query( $sql ) ) {
3026
+ break;
3027
+ }
3028
+ }
3029
+ }
3030
+
3031
+ /**
3032
+ * State is passed via cookies from one request to the next, but never to subsequent requests.
3033
+ * SET: state( $key, $value );
3034
+ * GET: $value = state( $key );
3035
+ *
3036
+ * @param string $key
3037
+ * @param string $value
3038
+ * @param bool $restate private
3039
+ *
3040
+ * @static
3041
+ */
3042
+ function state( $key = null, $value = null, $restate = false ) {
3043
+ static $state = array();
3044
+ static $path, $domain;
3045
+ if ( !isset( $path ) ) {
3046
+ require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
3047
+ $admin_url = Jetpack::admin_url();
3048
+ $bits = parse_url( $admin_url );
3049
+
3050
+ if ( is_array( $bits ) ) {
3051
+ $path = ( isset( $bits['path'] ) ) ? dirname( $bits['path'] ) : null;
3052
+ $domain = ( isset( $bits['host'] ) ) ? $bits['host'] : null;
3053
+ } else {
3054
+ $path = $domain = null;
3055
+ }
3056
+ }
3057
+
3058
+ // Extract state from cookies and delete cookies
3059
+ if ( isset( $_COOKIE[ 'jetpackState' ] ) && is_array( $_COOKIE[ 'jetpackState' ] ) ) {
3060
+ $yum = $_COOKIE[ 'jetpackState' ];
3061
+ unset( $_COOKIE[ 'jetpackState' ] );
3062
+ foreach ( $yum as $k => $v ) {
3063
+ if ( strlen( $v ) )
3064
+ $state[ $k ] = $v;
3065
+ setcookie( "jetpackState[$k]", false, 0, $path, $domain );
3066
+ }
3067
+ }
3068
+
3069
+ if ( $restate ) {
3070
+ foreach ( $state as $k => $v ) {
3071
+ setcookie( "jetpackState[$k]", $v, 0, $path, $domain );
3072
+ }
3073
+ return;
3074
+ }
3075
+
3076
+ // Get a state variable
3077
+ if ( isset( $key ) && !isset( $value ) ) {
3078
+ if ( array_key_exists( $key, $state ) )
3079
+ return $state[ $key ];
3080
+ return null;
3081
+ }
3082
+
3083
+ // Set a state variable
3084
+ if ( isset ( $key ) && isset( $value ) ) {
3085
+ $state[ $key ] = $value;
3086
+ setcookie( "jetpackState[$key]", $value, 0, $path, $domain );
3087
+ }
3088
+ }
3089
+
3090
+ /**
3091
+ * @static
3092
+ */
3093
+ function restate() {
3094
+ Jetpack::state( null, null, true );
3095
+ }
3096
+
3097
+ static function check_privacy( $file ) {
3098
+ static $is_site_publicly_accessible = null;
3099
+
3100
+ if ( is_null( $is_site_publicly_accessible ) ) {
3101
+ $is_site_publicly_accessible = false;
3102
+
3103
+ Jetpack::load_xml_rpc_client();
3104
+ $rpc = new Jetpack_IXR_Client();
3105
+
3106
+ $success = $rpc->query( 'jetpack.isSitePubliclyAccessible', home_url() );
3107
+ if ( $success ) {
3108
+ $response = $rpc->getResponse();
3109
+ if ( $response ) {
3110
+ $is_site_publicly_accessible = true;
3111
+ }
3112
+ }
3113
+
3114
+ Jetpack::update_option( 'public', (int) $is_site_publicly_accessible );
3115
+ }
3116
+
3117
+ if ( $is_site_publicly_accessible ) {
3118
+ return;
3119
+ }
3120
+
3121
+ $module_slug = self::get_module_slug( $file );
3122
+
3123
+ $privacy_checks = Jetpack::state( 'privacy_checks' );
3124
+ if ( !$privacy_checks ) {
3125
+ $privacy_checks = $module_slug;
3126
+ } else {
3127
+ $privacy_checks .= ",$module_slug";
3128
+ }
3129
+
3130
+ Jetpack::state( 'privacy_checks', $privacy_checks );
3131
+ }
3132
+
3133
+ /**
3134
+ * Helper method for multicall XMLRPC.
3135
+ */
3136
+ function xmlrpc_async_call() {
3137
+ global $blog_id;
3138
+ static $clients = array();
3139
+
3140
+ $client_blog_id = is_multisite() ? $blog_id : 0;
3141
+
3142
+ if ( !isset( $clients[$client_blog_id] ) ) {
3143
+ Jetpack::load_xml_rpc_client();
3144
+ $clients[$client_blog_id] = new Jetpack_IXR_ClientMulticall( array(
3145
+ 'user_id' => JETPACK_MASTER_USER,
3146
+ ) );
3147
+ ignore_user_abort( true );
3148
+ add_action( 'shutdown', array( 'Jetpack', 'xmlrpc_async_call' ) );
3149
+ }
3150
+
3151
+ $args = func_get_args();
3152
+
3153
+ if ( !empty( $args[0] ) ) {
3154
+ call_user_func_array( array( $clients[$client_blog_id], 'addCall' ), $args );
3155
+ } elseif ( is_multisite() ) {
3156
+ foreach ( $clients as $client_blog_id => $client ) {
3157
+ if ( !$client_blog_id || empty( $client->calls ) ) {
3158
+ continue;
3159
+ }
3160
+
3161
+ $switch_success = switch_to_blog( $client_blog_id, true );
3162
+ if ( !$switch_success ) {
3163
+ continue;
3164
+ }
3165
+
3166
+ flush();
3167
+ $client->query();
3168
+
3169
+ restore_current_blog();
3170
+ }
3171
+ } else {
3172
+ if ( isset( $clients[0] ) && !empty( $clients[0]->calls ) ) {
3173
+ flush();
3174
+ $clients[0]->query();
3175
+ }
3176
+ }
3177
+ }
3178
+
3179
+ function staticize_subdomain( $url ) {
3180
+ $host = parse_url( $url, PHP_URL_HOST );
3181
+ if ( !preg_match( '/.?(?:wordpress|wp)\.com$/', $host ) ) {
3182
+ return $url;
3183
+ }
3184
+
3185
+ if ( is_ssl() ) {
3186
+ return preg_replace( '|https?://[^/]++/|', 'https://s-ssl.wordpress.com/', $url );
3187
+ }
3188
+
3189
+ srand( crc32( basename( $url ) ) );
3190
+ $static_counter = rand( 0, 2 );
3191
+ srand(); // this resets everything that relies on this, like array_rand() and shuffle()
3192
+
3193
+ return preg_replace( '|://[^/]+?/|', "://s$static_counter.wp.com/", $url );
3194
+ }
3195
+
3196
+ /* JSON API Authorization */
3197
+
3198
+ /**
3199
+ * Handles the login action for Authorizing the JSON API
3200
+ */
3201
+ function login_form_json_api_authorization() {
3202
+ $this->verify_json_api_authorization_request();
3203
+
3204
+ add_action( 'wp_login', array( &$this, 'store_json_api_authorization_token' ), 10, 2 );
3205
+
3206
+ add_action( 'login_message', array( &$this, 'login_message_json_api_authorization' ) );
3207
+ add_action( 'login_form', array( &$this, 'preserve_action_in_login_form_for_json_api_authorization' ) );
3208
+ add_filter( 'site_url', array( &$this, 'post_login_form_to_signed_url' ), 10, 3 );
3209
+ }
3210
+
3211
+ // Make sure the login form is POSTed to the signed URL so we can reverify the request
3212
+ function post_login_form_to_signed_url( $url, $path, $scheme ) {
3213
+ if ( 'wp-login.php' !== $path || 'login_post' !== $scheme ) {
3214
+ return $url;
3215
+ }
3216
+
3217
+ return "$url?{$_SERVER['QUERY_STRING']}";
3218
+ }
3219
+
3220
+ // Make sure the POSTed request is handled by the same action
3221
+ function preserve_action_in_login_form_for_json_api_authorization() {
3222
+ echo "<input type='hidden' name='action' value='jetpack_json_api_authorization' />\n";
3223
+ }
3224
+
3225
+ // If someone logs in to approve API access, store the Access Code in usermeta
3226
+ function store_json_api_authorization_token( $user_login, $user ) {
3227
+ add_filter( 'login_redirect', array( &$this, 'add_token_to_login_redirect_json_api_authorization' ), 10, 3 );
3228
+ add_filter( 'allowed_redirect_hosts', array( &$this, 'allow_wpcom_public_api_domain' ) );
3229
+ $token = wp_generate_password( 32, false );
3230
+ update_user_meta( $user->ID, 'jetpack_json_api_' . $this->json_api_authorization_request['client_id'], $token );
3231
+ }
3232
+
3233
+ // Add public-api.wordpress.com to the safe redirect whitelist - only added when someone allows API access
3234
+ function allow_wpcom_public_api_domain( $domains ) {
3235
+ $domains[] = 'public-api.wordpress.com';
3236
+ return $domains;
3237
+ }
3238
+
3239
+ // Add the Access Code details to the public-api.wordpress.com redirect
3240
+ function add_token_to_login_redirect_json_api_authorization( $redirect_to, $original_redirect_to, $user ) {
3241
+ return add_query_arg( urlencode_deep( array(
3242
+ 'jetpack-code' => get_user_meta( $user->ID, 'jetpack_json_api_' . $this->json_api_authorization_request['client_id'], true ),
3243
+ 'jetpack-user-id' => (int) $user->ID,
3244
+ 'jetpack-state' => $this->json_api_authorization_request['state'],
3245
+ ) ), $redirect_to );
3246
+ }
3247
+
3248
+ // Verifies the request by checking the signature
3249
+ function verify_json_api_authorization_request() {
3250
+ require_once dirname( __FILE__ ) . '/class.jetpack-signature.php';
3251
+
3252
+ $token = Jetpack_Data::get_access_token( 1 );
3253
+ if ( !$token || empty( $token->secret ) ) {
3254
+ wp_die( __( 'You must connect your Jetpack plugin to WordPress.com to use this feature.' , 'jetpack') );
3255
+ }
3256
+
3257
+ $die_error = __( 'Someone may be trying to trick you into giving them access to your site. Or it could be you just encountered a bug :). Either way, please close this window.', 'jetpack' );
3258
+
3259
+ $jetpack_signature =& new Jetpack_Signature( $token->secret, (int) Jetpack::get_option( 'time_diff' ) );
3260
+ $signature = $jetpack_signature->sign_current_request( array( 'body' => null, 'method' => 'GET' ) );
3261
+ if ( !$signature ) {
3262
+ wp_die( $die_error );
3263
+ } else if ( is_wp_error( $signature ) ) {
3264
+ wp_die( $die_error );
3265
+ } else if ( $signature !== $_GET['signature'] ) {
3266
+ if ( is_ssl() ) {
3267
+ // If we signed an HTTP request on the Jetpack Servers, but got redirected to HTTPS by the local blog, check the HTTP signature as well
3268
+ $signature = $jetpack_signature->sign_current_request( array( 'scheme' => 'http', 'body' => null, 'method' => 'GET' ) );
3269
+ if ( !$signature || is_wp_error( $signature ) || $signature !== $_GET['signature'] ) {
3270
+ wp_die( $die_error );
3271
+ }
3272
+ } else {
3273
+ wp_die( $die_error );
3274
+ }
3275
+ }
3276
+
3277
+ $timestamp = (int) $_GET['timestamp'];
3278
+ $nonce = stripslashes( (string) $_GET['nonce'] );
3279
+
3280
+ if ( !$this->add_nonce( $timestamp, $nonce ) ) {
3281
+ // De-nonce the nonce, at least for 5 minutes.
3282
+ // We have to reuse this nonce at least once (used the first time when the initial request is made, used a second time when the login form is POSTed)
3283
+ $old_nonce_time = get_option( "jetpack_nonce_{$timestamp}_{$nonce}" );
3284
+ if ( $old_nonce_time < time() - 300 ) {
3285
+ wp_die( __( 'The authorization process expired. Please go back and try again.' , 'jetpack') );
3286
+ }
3287
+ }
3288
+
3289
+ $data = json_decode( base64_decode( stripslashes( $_GET['data'] ) ) );
3290
+ $data_filters = array(
3291
+ 'state' => 'opaque',
3292
+ 'client_id' => 'int',
3293
+ 'client_title' => 'string',
3294
+ 'client_image' => 'url',
3295
+ );
3296
+
3297
+ foreach ( $data_filters as $key => $sanitation ) {
3298
+ if ( !isset( $data->$key ) ) {
3299
+ wp_die( $die_error );
3300
+ }
3301
+
3302
+ switch ( $sanitation ) {
3303
+ case 'int' :
3304
+ $this->json_api_authorization_request[$key] = (int) $data->$key;
3305
+ break;
3306
+ case 'opaque' :
3307
+ $this->json_api_authorization_request[$key] = (string) $data->$key;
3308
+ break;
3309
+ case 'string' :
3310
+ $this->json_api_authorization_request[$key] = wp_kses( (string) $data->$key, array() );
3311
+ break;
3312
+ case 'url' :
3313
+ $this->json_api_authorization_request[$key] = esc_url_raw( (string) $data->$key );
3314
+ break;
3315
+ }
3316
+ }
3317
+
3318
+ if ( empty( $this->json_api_authorization_request['client_id'] ) ) {
3319
+ wp_die( $die_error );
3320
+ }
3321
+ }
3322
+
3323
+ function login_message_json_api_authorization( $message ) {
3324
+ return '<p class="message">' . sprintf(
3325
+ esc_html__( '%s wants to access your site&#8217;s data. Log in to authorize that access.' , 'jetpack'),
3326
+ '<strong>' . esc_html( $this->json_api_authorization_request['client_title'] ) . '</strong>'
3327
+ ) . '<img src="' . esc_url( $this->json_api_authorization_request['client_image'] ) . '" /></p>';
3328
+ }
3329
+ }
3330
+
3331
+ class Jetpack_Client {
3332
+ /**
3333
+ * Makes an authorized remote request using Jetpack_Signature
3334
+ *
3335
+ * @static
3336
+ * @return array|WP_Error WP HTTP response on success
3337
+ */
3338
+ function remote_request( $args, $body = null ) {
3339
+ $defaults = array(
3340
+ 'url' => '',
3341
+ 'user_id' => 0,
3342
+ 'blog_id' => 0,
3343
+ 'auth_location' => JETPACK_CLIENT__AUTH_LOCATION,
3344
+ 'method' => 'POST',
3345
+ 'timeout' => 10,
3346
+ 'redirection' => 0,
3347
+ );
3348
+
3349
+ $args = wp_parse_args( $args, $defaults );
3350
+
3351
+ $args['blog_id'] = (int) $args['blog_id'];
3352
+
3353
+ if ( 'header' != $args['auth_location'] ) {
3354
+ $args['auth_location'] = 'query_string';
3355
+ }
3356
+
3357
+ $token = Jetpack_Data::get_access_token( $args['user_id'] );
3358
+ if ( !$token ) {
3359
+ return new Jetpack_Error( 'missing_token' );
3360
+ }
3361
+
3362
+ $method = strtoupper( $args['method'] );
3363
+
3364
+ $timeout = intval( $args['timeout'] );
3365
+
3366
+ $redirection = $args['redirection'];
3367
+
3368
+ $request = compact( 'method', 'body', 'timeout', 'redirection' );
3369
+
3370
+ @list( $token_key, $secret ) = explode( '.', $token->secret );
3371
+ if ( empty( $token ) || empty( $secret ) ) {
3372
+ return new Jetpack_Error( 'malformed_token' );
3373
+ }
3374
+
3375
+ $token_key = sprintf( '%s:%d:%d', $token_key, JETPACK__API_VERSION, $token->external_user_id );
3376
+
3377
+ require_once dirname( __FILE__ ) . '/class.jetpack-signature.php';
3378
+
3379
+ $time_diff = (int) Jetpack::get_option( 'time_diff' );
3380
+ $jetpack_signature = new Jetpack_Signature( $token->secret, $time_diff );
3381
+
3382
+ $timestamp = time() + $time_diff;
3383
+ $nonce = wp_generate_password( 10, false );
3384
+
3385
+ // Kind of annoying. Maybe refactor Jetpack_Signature to handle body-hashing
3386
+ if ( is_null( $body ) ) {
3387
+ $body_hash = '';
3388
+ } else {
3389
+ if ( !is_string( $body ) ) {
3390
+ return new Jetpack_Error( 'invalid_body', 'Body is malformed.' );
3391
+ }
3392
+ $body_hash = jetpack_sha1_base64( $body );
3393
+ }
3394
+
3395
+ $auth = array(
3396
+ 'token' => $token_key,
3397
+ 'timestamp' => $timestamp,
3398
+ 'nonce' => $nonce,
3399
+ 'body-hash' => $body_hash,
3400
+ );
3401
+
3402
+ if ( false !== strpos( $args['url'], 'xmlrpc.php' ) ) {
3403
+ $url_args = array( 'for' => 'jetpack' );
3404
+ } else {
3405
+ $url_args = array();
3406
+ }
3407
+
3408
+ if ( 'header' != $args['auth_location'] ) {
3409
+ $url_args += $auth;
3410
+ }
3411
+
3412
+ $url = add_query_arg( urlencode_deep( $url_args ), $args['url'] );
3413
+ $url = Jetpack::fix_url_for_bad_hosts( $url, $request );
3414
+
3415
+ $signature = $jetpack_signature->sign_request( $token_key, $timestamp, $nonce, $body_hash, $method, $url, $body, false );
3416
+
3417
+ if ( !$signature || is_wp_error( $signature ) ) {
3418
+ return $signature;
3419
+ }
3420
+
3421
+ // Send an Authorization header so various caches/proxies do the right thing
3422
+ $auth['signature'] = $signature;
3423
+ $auth['version'] = JETPACK__VERSION;
3424
+ $header_pieces = array();
3425
+ foreach ( $auth as $key => $value ) {
3426
+ $header_pieces[] = sprintf( '%s="%s"', $key, $value );
3427
+ }
3428
+ $request['headers'] = array(
3429
+ 'Authorization' => "X_JETPACK " . join( ' ', $header_pieces ),
3430
+ );
3431
+
3432
+ if ( 'header' != $args['auth_location'] ) {
3433
+ $url = add_query_arg( 'signature', urlencode( $signature ), $url );
3434
+ }
3435
+
3436
+ return Jetpack_Client::_wp_remote_request( $url, $request );
3437
+ }
3438
+
3439
+ /**
3440
+ * Wrapper for wp_remote_request(). Turns off SSL verification for certain SSL errors.
3441
+ * This is lame, but many, many, many hosts have misconfigured SSL.
3442
+ *
3443
+ * When Jetpack is registered, the jetpack_fallback_no_verify_ssl_certs option is set to the current time if:
3444
+ * 1. a certificate error is found AND
3445
+ * 2. not verifying the certificate works around the problem.
3446
+ *
3447
+ * The option is checked on each request.
3448
+ *
3449
+ * @internal
3450
+ * @todo: Better fallbacks (bundled certs?), feedback, UI, ....
3451
+ * @see Jetpack::fix_url_for_bad_hosts()
3452
+ *
3453
+ * @static
3454
+ * @return array|WP_Error WP HTTP response on success
3455
+ */
3456
+ function _wp_remote_request( $url, $args, $set_fallback = false ) {
3457
+ $fallback = Jetpack::get_option( 'fallback_no_verify_ssl_certs' );
3458
+ if ( false === $fallback ) {
3459
+ Jetpack::update_option( 'fallback_no_verify_ssl_certs', 0 );
3460
+ }
3461
+
3462
+ if ( (int) $fallback ) {
3463
+ // We're flagged to fallback
3464
+ $args['sslverify'] = false;
3465
+ }
3466
+
3467
+ $response = wp_remote_request( $url, $args );
3468
+
3469
+ if (
3470
+ !$set_fallback // We're not allowed to set the flag on this request, so whatever happens happens
3471
+ ||
3472
+ isset( $args['sslverify'] ) && !$args['sslverify'] // No verification - no point in doing it again
3473
+ ||
3474
+ !is_wp_error( $response ) // Let it ride
3475
+ ) {
3476
+ Jetpack_Client::set_time_diff( $response, $set_fallback );
3477
+ return $response;
3478
+ }
3479
+
3480
+ // At this point, we're not flagged to fallback and we are allowed to set the flag on this request.
3481
+
3482
+ $message = $response->get_error_message();
3483
+
3484
+ // Is it an SSL Certificate verification error?
3485
+ if (
3486
+ false === strpos( $message, '14090086' ) // OpenSSL SSL3 certificate error
3487
+ &&
3488
+ false === strpos( $message, '1407E086' ) // OpenSSL SSL2 certificate error
3489
+ &&
3490
+ false === strpos( $message, 'error setting certificate verify locations' ) // cURL CA bundle not found
3491
+ &&
3492
+ false === strpos( $message, 'Peer certificate cannot be authenticated with' ) // cURL CURLE_SSL_CACERT: CA bundle found, but not helpful
3493
+ // different versions of curl have different error messages
3494
+ // this string should catch them all
3495
+ &&
3496
+ false === strpos( $message, 'Problem with the SSL CA cert' ) // cURL CURLE_SSL_CACERT_BADFILE: probably access rights
3497
+ ) {
3498
+ // No, it is not.
3499
+ return $response;
3500
+ }
3501
+
3502
+ // Redo the request without SSL certificate verification.
3503
+ $args['sslverify'] = false;
3504
+ $response = wp_remote_request( $url, $args );
3505
+
3506
+ if ( !is_wp_error( $response ) ) {
3507
+ // The request went through this time, flag for future fallbacks
3508
+ Jetpack::update_option( 'fallback_no_verify_ssl_certs', time() );
3509
+ Jetpack_Client::set_time_diff( $response, $set_fallback );
3510
+ }
3511
+
3512
+ return $response;
3513
+ }
3514
+
3515
+ function set_time_diff( &$response, $force_set = false ) {
3516
+ $code = wp_remote_retrieve_response_code( $response );
3517
+
3518
+ // Only trust the Date header on some responses
3519
+ if ( 200 != $code && 304 != $code && 400 != $code && 401 != $code ) {
3520
+ return;
3521
+ }
3522
+
3523
+ if ( !$date = wp_remote_retrieve_header( $response, 'date' ) ) {
3524
+ return;
3525
+ }
3526
+
3527
+ if ( 0 >= $time = (int) strtotime( $date ) ) {
3528
+ return;
3529
+ }
3530
+
3531
+ $time_diff = $time - time();
3532
+
3533
+ if ( $force_set ) { // during register
3534
+ Jetpack::update_option( 'time_diff', $time_diff );
3535
+ } else { // otherwise
3536
+ $old_diff = Jetpack::get_option( 'time_diff' );
3537
+ if ( false === $old_diff || abs( $time_diff - (int) $old_diff ) > 10 ) {
3538
+ Jetpack::update_option( 'time_diff', $time_diff );
3539
+ }
3540
+ }
3541
+ }
3542
+ }
3543
+
3544
+ class Jetpack_Data {
3545
+ /**
3546
+ * Gets locally stored token
3547
+ *
3548
+ * @static
3549
+ * @return object|false
3550
+ */
3551
+ function get_access_token( $user_id = false ) {
3552
+ if ( $user_id ) {
3553
+ if ( !$tokens = Jetpack::get_option( 'user_tokens' ) ) {
3554
+ return false;
3555
+ }
3556
+ if ( $user_id === JETPACK_MASTER_USER ) {
3557
+ if ( !$user_id = Jetpack::get_option( 'master_user' ) ) {
3558
+ return false;
3559
+ }
3560
+ }
3561
+ if ( !isset( $tokens[$user_id] ) || !$token = $tokens[$user_id] ) {
3562
+ return false;
3563
+ }
3564
+ $token_chunks = explode( '.', $token );
3565
+ if ( empty( $token_chunks[1] ) || empty( $token_chunks[2] ) ) {
3566
+ return false;
3567
+ }
3568
+ if ( $user_id != $token_chunks[2] ) {
3569
+ return false;
3570
+ }
3571
+ $token = "{$token_chunks[0]}.{$token_chunks[1]}";
3572
+ } else {
3573
+ $token = Jetpack::get_option( 'blog_token' );
3574
+ if ( empty( $token ) ) {
3575
+ return false;
3576
+ }
3577
+ }
3578
+
3579
+ return (object) array(
3580
+ 'secret' => $token,
3581
+ 'external_user_id' => (int) $user_id,
3582
+ );
3583
+ }
3584
+ }
3585
+
3586
+ /**
3587
+ * Client = Plugin
3588
+ * Client Server = API Methods the Plugin must respond to
3589
+ *
3590
+ * @todo Roll this into Jetpack? There's only one 'public' method now: ::authorize().
3591
+ */
3592
+ class Jetpack_Client_Server {
3593
+ function authorize() {
3594
+ $data = stripslashes_deep( $_GET );
3595
+
3596
+ $args = array();
3597
+
3598
+ $redirect = isset( $data['redirect'] ) ? esc_url_raw( (string) $data['redirect'] ) : '';
3599
+
3600
+ do {
3601
+ $jetpack = Jetpack::init();
3602
+ $role = $jetpack->translate_current_user_to_role();
3603
+ if ( !$role ) {
3604
+ Jetpack::state( 'error', 'no_role' );
3605
+ break;
3606
+ }
3607
+
3608
+ $cap = $jetpack->translate_role_to_cap( $role );
3609
+ if ( !$cap ) {
3610
+ Jetpack::state( 'error', 'no_cap' );
3611
+ break;
3612
+ }
3613
+
3614
+ check_admin_referer( "jetpack-authorize_{$role}_{$redirect}" );
3615
+
3616
+ if ( !empty( $data['error'] ) ) {
3617
+ Jetpack::state( 'error', $data['error'] );
3618
+ break;
3619
+ }
3620
+
3621
+ if ( empty( $data['state'] ) ) {
3622
+ Jetpack::state( 'error', 'no_state' );
3623
+ break;
3624
+ }
3625
+
3626
+ if ( !ctype_digit( $data['state'] ) ) {
3627
+ Jetpack::state( 'error', 'invalid_state' );
3628
+ break;
3629
+ }
3630
+
3631
+ $current_user_id = get_current_user_id();
3632
+ if ( $current_user_id != $data['state'] ) {
3633
+ Jetpack::state( 'error', 'wrong_state' );
3634
+ break;
3635
+ }
3636
+
3637
+ if ( empty( $data['code'] ) ) {
3638
+ Jetpack::state( 'error', 'no_code' );
3639
+ break;
3640
+ }
3641
+
3642
+ $token = $this->get_token( $data );
3643
+
3644
+ if ( is_wp_error( $token ) ) {
3645
+ if ( $error = $token->get_error_code() )
3646
+ Jetpack::state( 'error', $error );
3647
+ else
3648
+ Jetpack::state( 'error', 'invalid_token' );
3649
+
3650
+ Jetpack::state( 'error_description', $token->get_error_message() );
3651
+
3652
+ break;
3653
+ }
3654
+
3655
+ if ( !$token ) {
3656
+ Jetpack::state( 'error', 'no_token' );
3657
+ break;
3658
+ }
3659
+
3660
+ $is_master_user = ! Jetpack::is_active();
3661
+
3662
+ Jetpack::update_user_token( $current_user_id, sprintf( '%s.%d', $token, $current_user_id ), $is_master_user );
3663
+
3664
+
3665
+ if ( $is_master_user ) {
3666
+ Jetpack::state( 'message', 'authorized' );
3667
+ } else {
3668
+ Jetpack::state( 'message', 'linked' );
3669
+ // Don't activate anything since we are just connecting a user.
3670
+ break;
3671
+ }
3672
+
3673
+ if ( $active_modules = Jetpack::get_option( 'active_modules' ) ) {
3674
+ Jetpack::delete_option( 'active_modules' );
3675
+
3676
+ Jetpack::activate_default_modules( 999, 1, $active_modules );
3677
+ } else {
3678
+ Jetpack::activate_default_modules();
3679
+ }
3680
+
3681
+ $jetpack->sync->register( 'noop' ); // Spawn a sync to make sure the Jetpack Servers know what modules are active.
3682
+
3683
+ // Start nonce cleaner
3684
+ wp_clear_scheduled_hook( 'jetpack_clean_nonces' );
3685
+ wp_schedule_event( time(), 'hourly', 'jetpack_clean_nonces' );
3686
+ } while ( false );
3687
+
3688
+ if ( wp_validate_redirect( $redirect ) ) {
3689
+ wp_safe_redirect( $redirect );
3690
+ } else {
3691
+ wp_safe_redirect( Jetpack::admin_url() );
3692
+ }
3693
+
3694
+ exit;
3695
+ }
3696
+
3697
+ function deactivate_plugin( $probable_file, $probable_title ) {
3698
+ if ( is_plugin_active( $probable_file ) ) {
3699
+ deactivate_plugins( $probable_file );
3700
+ return 1;
3701
+ } else {
3702
+ // If the plugin is not in the usual place, try looking through all active plugins.
3703
+ $active_plugins = get_option( 'active_plugins', array() );
3704
+ foreach ( $active_plugins as $plugin ) {
3705
+ $data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
3706
+ if ( $data['Name'] == $probable_title ) {
3707
+ deactivate_plugins( $plugin );
3708
+ return 1;
3709
+ }
3710
+ }
3711
+ }
3712
+
3713
+ return 0;
3714
+ }
3715
+
3716
+ /**
3717
+ * @return object|WP_Error
3718
+ */
3719
+ function get_token( $data ) {
3720
+ $jetpack = Jetpack::init();
3721
+ $role = $jetpack->translate_current_user_to_role();
3722
+
3723
+ if ( !$role ) {
3724
+ return new Jetpack_Error( 'role', __( 'An administrator for this blog must set up the Jetpack connection.', 'jetpack' ) );
3725
+ }
3726
+
3727
+ $client_secret = Jetpack_Data::get_access_token();
3728
+ if ( !$client_secret ) {
3729
+ return new Jetpack_Error( 'client_secret', __( 'You need to register your Jetpack before connecting it.', 'jetpack' ) );
3730
+ }
3731
+
3732
+ $redirect = isset( $data['redirect'] ) ? esc_url_raw( (string) $data['redirect'] ) : '';
3733
+
3734
+ $body = array(
3735
+ 'client_id' => Jetpack::get_option( 'id' ),
3736
+ 'client_secret' => $client_secret->secret,
3737
+ 'grant_type' => 'authorization_code',
3738
+ 'code' => $data['code'],
3739
+ 'redirect_uri' => add_query_arg( array(
3740
+ 'action' => 'authorize',
3741
+ '_wpnonce' => wp_create_nonce( "jetpack-authorize_{$role}_{$redirect}" ),
3742
+ 'redirect' => $redirect ? urlencode( $redirect ) : false,
3743
+ ), menu_page_url( 'jetpack', false ) ),
3744
+ );
3745
+
3746
+ $args = array(
3747
+ 'method' => 'POST',
3748
+ 'body' => $body,
3749
+ 'headers' => array(
3750
+ 'Accept' => 'application/json',
3751
+ ),
3752
+ );
3753
+ $response = Jetpack_Client::_wp_remote_request( Jetpack::fix_url_for_bad_hosts( Jetpack::api_url( 'token' ), $args ), $args );
3754
+
3755
+ if ( is_wp_error( $response ) ) {
3756
+ return new Jetpack_Error( 'token_http_request_failed', $response->get_error_message() );
3757
+ }
3758
+
3759
+ $code = wp_remote_retrieve_response_code( $response );
3760
+ $entity = wp_remote_retrieve_body( $response );
3761
+
3762
+ if ( $entity )
3763
+ $json = json_decode( $entity );
3764
+ else
3765
+ $json = false;
3766
+
3767
+ if ( 200 != $code || !empty( $json->error ) ) {
3768
+ if ( empty( $json->error ) )
3769
+ return new Jetpack_Error( 'unknown', '', $code );
3770
+
3771
+ $error_description = isset( $json->error_description ) ? sprintf( __( 'Error Details: %s', 'jetpack' ), (string) $json->error_description ) : '';
3772
+
3773
+ return new Jetpack_Error( (string) $json->error, $error_description, $code );
3774
+ }
3775
+
3776
+ if ( empty( $json->access_token ) || !is_scalar( $json->access_token ) ) {
3777
+ return new Jetpack_Error( 'access_token', '', $code );
3778
+ }
3779
+
3780
+ if ( empty( $json->token_type ) || 'X_JETPACK' != strtoupper( $json->token_type ) ) {
3781
+ return new Jetpack_Error( 'token_type', '', $code );
3782
+ }
3783
+
3784
+ if ( empty( $json->scope ) ) {
3785
+ return new Jetpack_Error( 'scope', 'No Scope', $code );
3786
+ }
3787
+ @list( $role, $hmac ) = explode( ':', $json->scope );
3788
+ if ( empty( $role ) || empty( $hmac ) ) {
3789
+ return new Jetpack_Error( 'scope', 'Malformed Scope', $code );
3790
+ }
3791
+ if ( $jetpack->sign_role( $role ) !== $json->scope ) {
3792
+ return new Jetpack_Error( 'scope', 'Invalid Scope', $code );
3793
+ }
3794
+
3795
+ if ( !$cap = $jetpack->translate_role_to_cap( $role ) )
3796
+ return new Jetpack_Error( 'scope', 'No Cap', $code );
3797
+ if ( !current_user_can( $cap ) )
3798
+ return new Jetpack_Error( 'scope', 'current_user_cannot', $code );
3799
+
3800
+ return (string) $json->access_token;
3801
+ }
3802
+ }
3803
+
3804
+
3805
+ /**
3806
+ * Request that a piece of data on this WordPress install be synced back to the
3807
+ * Jetpack server for remote processing/notifications/etc
3808
+ */
3809
+ class Jetpack_Sync {
3810
+ // What modules want to sync what content
3811
+ var $sync_conditions = array( 'posts' => array(), 'comments' => array() );
3812
+
3813
+ // We keep track of all the options registered for sync so that we can sync them all if needed
3814
+ var $sync_options = array();
3815
+
3816
+ // Keep trac of status transitions, which we wouldn't always know about on the Jetpack Servers but are important when deciding what to do with the sync.
3817
+ var $post_transitions = array();
3818
+ var $comment_transitions = array();
3819
+
3820
+ // Objects to sync
3821
+ var $sync = array();
3822
+
3823
+ function __construct() {
3824
+ // WP Cron action. Only used on upgrade
3825
+ add_action( 'jetpack_sync_all_registered_options', array( $this, 'sync_all_registered_options' ) );
3826
+ }
3827
+
3828
+ /* Static Methods for Modules */
3829
+
3830
+ /**
3831
+ * @param string $file __FILE__
3832
+ * @param array settings:
3833
+ * post_types => array( post_type slugs ): The post types to sync. Default: post, page
3834
+ * post_stati => array( post_status slugs ): The post stati to sync. Default: publish
3835
+ */
3836
+ static function sync_posts( $file, array $settings = null ) {
3837
+ $jetpack = Jetpack::init();
3838
+ $args = func_get_args();
3839
+ return call_user_func_array( array( $jetpack->sync, 'posts' ), $args );
3840
+ }
3841
+
3842
+ /**
3843
+ * @param string $file __FILE__
3844
+ * @param array settings:
3845
+ * post_types => array( post_type slugs ): The post types to sync. Default: post, page
3846
+ * post_stati => array( post_status slugs ): The post stati to sync. Default: publish
3847
+ * comment_types => array( comment_type slugs ): The comment types to sync. Default: '', comment, trackback, pingback
3848
+ * comment_stati => array( comment_status slugs ): The comment stati to sync. Default: approved
3849
+ */
3850
+ static function sync_comments( $file, array $settings = null ) {
3851
+ $jetpack = Jetpack::init();
3852
+ $args = func_get_args();
3853
+ return call_user_func_array( array( $jetpack->sync, 'comments' ), $args );
3854
+ }
3855
+
3856
+ /**
3857
+ * @param string $file __FILE__
3858
+ * @param string $option, Option name to sync
3859
+ * @param string $option ...
3860
+ */
3861
+ static function sync_options( $file, $option /*, $option, ... */ ) {
3862
+ $jetpack = Jetpack::init();
3863
+ $args = func_get_args();
3864
+ return call_user_func_array( array( $jetpack->sync, 'options' ), $args );
3865
+ }
3866
+
3867
+ /* Internal Methods */
3868
+
3869
+ /**
3870
+ * Create a sync object/request
3871
+ *
3872
+ * @param string $object Type of object to sync -- [ post | comment | option ]
3873
+ * @param int $id Unique identifier
3874
+ * @param array $settings
3875
+ */
3876
+ function register( $object, $id = false, array $settings = null ) {
3877
+ // Since we've registered something for sync, hook it up to execute on shutdown if we haven't already
3878
+ if ( !$this->sync ) {
3879
+ ignore_user_abort( true );
3880
+ add_action( 'shutdown', array( $this, 'sync' ), 9 ); // Right before async XML-RPC
3881
+ }
3882
+
3883
+ $defaults = array(
3884
+ 'on_behalf_of' => array(), // What modules want this data
3885
+ );
3886
+ $settings = wp_parse_args( $settings, $defaults );
3887
+
3888
+ if ( !isset( $this->sync[$object] ) ) {
3889
+ $this->sync[$object] = array();
3890
+ }
3891
+
3892
+ // Store the settings for this object
3893
+ if (
3894
+ // First time for this object
3895
+ !isset( $this->sync[$object][$id] )
3896
+ ) {
3897
+ // Easy: store the current settings
3898
+ $this->sync[$object][$id] = $settings;
3899
+ } else {
3900
+ // Not as easy: we have to manually merge the settings from previous runs for this object with the settings for this run
3901
+
3902
+ $this->sync[$object][$id]['on_behalf_of'] = array_unique( array_merge( $this->sync[$object][$id]['on_behalf_of'], $settings['on_behalf_of'] ) );
3903
+ }
3904
+
3905
+ $delete_prefix = 'delete_';
3906
+ if ( 0 === strpos( $object, $delete_prefix ) ) {
3907
+ $unset_object = substr( $object, strlen( $delete_prefix ) );
3908
+ } else {
3909
+ $unset_object = "{$delete_prefix}{$object}";
3910
+ }
3911
+
3912
+ // Ensure post ... delete_post yields a delete operation
3913
+ // Ensure delete_post ... post yields a sync post operation
3914
+ // Ensure update_option() ... delete_option() ends up as a delete
3915
+ // Ensure delete_option() ... update_option() ends up as an update
3916
+ // Etc.
3917
+ unset( $this->sync[$unset_object][$id] );
3918
+
3919
+ return true;
3920
+ }
3921
+
3922
+ function get_common_sync_data() {
3923
+ $available_modules = Jetpack::get_available_modules();
3924
+ $active_modules = Jetpack::get_active_modules();
3925
+ $modules = array();
3926
+ foreach ( $available_modules as $available_module ) {
3927
+ $modules[$available_module] = in_array( $available_module, $active_modules );
3928
+ }
3929
+ $modules['vaultpress'] = class_exists( 'VaultPress' ) || function_exists( 'vaultpress_contact_service' );
3930
+
3931
+ $sync_data = array(
3932
+ 'modules' => $modules,
3933
+ 'version' => JETPACK__VERSION,
3934
+ );
3935
+
3936
+ return $sync_data;
3937
+ }
3938
+
3939
+ /**
3940
+ * Set up all the data and queue it for the outgoing XML-RPC request
3941
+ */
3942
+ function sync() {
3943
+ if ( !$this->sync ) {
3944
+ return false;
3945
+ }
3946
+
3947
+ $sync_data = $this->get_common_sync_data();
3948
+
3949
+ $wp_importing = defined( 'WP_IMPORTING' ) && WP_IMPORTING;
3950
+
3951
+ foreach ( $this->sync as $sync_operation_type => $sync_operations ) {
3952
+ switch ( $sync_operation_type ) {
3953
+ case 'post':
3954
+ if ( $wp_importing ) {
3955
+ break;
3956
+ }
3957
+
3958
+ $global_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null;
3959
+ $GLOBALS['post'] = null;
3960
+ foreach ( $sync_operations as $post_id => $settings ) {
3961
+ $sync_data['post'][$post_id] = $this->get_post( $post_id );
3962
+ if ( isset( $this->post_transitions[$post_id] ) ) {
3963
+ $sync_data['post'][$post_id]['transitions'] = $this->post_transitions[$post_id];
3964
+ } else {
3965
+ $sync_data['post'][$post_id]['transitions'] = array( false, false );
3966
+ }
3967
+ $sync_data['post'][$post_id]['on_behalf_of'] = $settings['on_behalf_of'];
3968
+ }
3969
+ $GLOBALS['post'] = $global_post;
3970
+ unset( $global_post );
3971
+ break;
3972
+ case 'comment':
3973
+ if ( $wp_importing ) {
3974
+ break;
3975
+ }
3976
+
3977
+ $global_comment = isset( $GLOBALS['comment'] ) ? $GLOBALS['comment'] : null;
3978
+ unset( $GLOBALS['comment'] );
3979
+ foreach ( $sync_operations as $comment_id => $settings ) {
3980
+ $sync_data['comment'][$comment_id] = $this->get_comment( $comment_id );
3981
+ if ( isset( $this->comment_transitions[$comment_id] ) ) {
3982
+ $sync_data['comment'][$comment_id]['transitions'] = $this->comment_transitions[$comment_id];
3983
+ } else {
3984
+ $sync_data['comment'][$comment_id]['transitions'] = array( false, false );
3985
+ }
3986
+ $sync_data['comment'][$comment_id]['on_behalf_of'] = $settings['on_behalf_of'];
3987
+ }
3988
+ $GLOBALS['comment'] = $global_comment;
3989
+ unset( $global_comment );
3990
+ break;
3991
+ case 'option' :
3992
+ foreach ( $sync_operations as $option => $settings ) {
3993
+ $sync_data['option'][$option] = array( 'value' => get_option( $option ) );
3994
+ }
3995
+ break;
3996
+
3997
+ case 'delete_post':
3998
+ case 'delete_comment':
3999
+ foreach ( $sync_operations as $object_id => $settings ) {
4000
+ $sync_data[$sync_operation_type][$object_id] = array( 'on_behalf_of' => $settings['on_behalf_of'] );
4001
+ }
4002
+ break;
4003
+ case 'delete_option' :
4004
+ foreach ( $sync_operations as $object_id => $settings ) {
4005
+ $sync_data[$sync_operation_type][$object_id] = true;
4006
+ }
4007
+ break;
4008
+ }
4009
+ }
4010
+
4011
+ Jetpack::xmlrpc_async_call( 'jetpack.syncContent', $sync_data );
4012
+ }
4013
+
4014
+ /**
4015
+ * Format and return content data from a direct xmlrpc request for it.
4016
+ *
4017
+ * @param array $content_ids: array( 'posts' => array of ids, 'comments' => array of ids, 'options' => array of options )
4018
+ */
4019
+ function get_content( $content_ids ) {
4020
+ $sync_data = $this->get_common_sync_data();
4021
+
4022
+ if ( isset( $content_ids['posts'] ) ) {
4023
+ foreach ( $content_ids['posts'] as $id ) {
4024
+ $sync_data['post'][$id] = $this->get_post( $id );
4025
+ }
4026
+ }
4027
+
4028
+ if ( isset( $content_ids['comments'] ) ) {
4029
+ foreach ( $content_ids['comments'] as $id ) {
4030
+ $sync_data['comment'][$id] = $this->get_post( $id );
4031
+ }
4032
+ }
4033
+
4034
+ if ( isset( $content_ids['options'] ) ) {
4035
+ foreach ( $content_ids['options'] as $option ) {
4036
+ $sync_data['option'][$option] = array( 'value' => get_option( $option ) );
4037
+ }
4038
+ }
4039
+
4040
+ return $sync_data;
4041
+ }
4042
+
4043
+ /**
4044
+ * Helper method for registering a post for sync
4045
+ *
4046
+ * @param int $id wp_posts.ID
4047
+ * @param array $settings Sync data
4048
+ */
4049
+ function register_post( $id, array $settings = null ) {
4050
+ $id = (int) $id;
4051
+ if ( !$id ) {
4052
+ return false;
4053
+ }
4054
+
4055
+ $post = get_post( $id );
4056
+ if ( !$post ) {
4057
+ return false;
4058
+ }
4059
+
4060
+ $settings = wp_parse_args( $settings, array(
4061
+ 'on_behalf_of' => array(),
4062
+ ) );
4063
+
4064
+ return $this->register( 'post', $id, $settings );
4065
+ }
4066
+
4067
+ /**
4068
+ * Helper method for registering a comment for sync
4069
+ *
4070
+ * @param int $id wp_comments.comment_ID
4071
+ * @param array $settings Sync data
4072
+ */
4073
+ function register_comment( $id, array $settings = null ) {
4074
+ $id = (int) $id;
4075
+ if ( !$id ) {
4076
+ return false;
4077
+ }
4078
+
4079
+ $comment = get_comment( $id );
4080
+ if ( !$comment || empty( $comment->comment_post_ID ) ) {
4081
+ return false;
4082
+ }
4083
+
4084
+ $post = get_post( $comment->comment_post_ID );
4085
+ if ( !$post ) {
4086
+ return false;
4087
+ }
4088
+
4089
+ $settings = wp_parse_args( $settings, array(
4090
+ 'on_behalf_of' => array(),
4091
+ ) );
4092
+
4093
+ return $this->register( 'comment', $id, $settings );
4094
+ }
4095
+
4096
+ /* Posts Sync */
4097
+
4098
+ function posts( $file, array $settings = null ) {
4099
+ $module_slug = Jetpack::get_module_slug( $file );
4100
+
4101
+ $defaults = array(
4102
+ 'post_types' => array( 'post', 'page' ),
4103
+ 'post_stati' => array( 'publish' ),
4104
+ );
4105
+
4106
+ $this->sync_conditions['posts'][$module_slug] = wp_parse_args( $settings, $defaults );
4107
+
4108
+ add_action( 'transition_post_status', array( $this, 'transition_post_status_action' ), 10, 3 );
4109
+ add_action( 'delete_post', array( $this, 'delete_post_action' ) );
4110
+ }
4111
+
4112
+ function delete_post_action( $post_id ) {
4113
+ $post = get_post( $post_id );
4114
+ if ( !$post ) {
4115
+ return $this->register( 'delete_post', (int) $id );
4116
+ }
4117
+
4118
+ $this->transition_post_status_action( 'delete', $post->post_status, $post );
4119
+ }
4120
+
4121
+ function transition_post_status_action( $new_status, $old_status, $post ) {
4122
+ $sync = $this->get_post_sync_operation( $new_status, $old_status, $post, $this->sync_conditions['posts'] );
4123
+ if ( !$sync ) {
4124
+ // No module wants to sync this post
4125
+ return false;
4126
+ }
4127
+
4128
+ // Track post transitions
4129
+ if ( isset( $this->post_transitions[$post->ID] ) ) {
4130
+ // status changed more than once - keep tha most recent $new_status
4131
+ $this->post_transitions[$post->ID][0] = $new_status;
4132
+ } else {
4133
+ $this->post_transitions[$post->ID] = array( $new_status, $old_status );
4134
+ }
4135
+
4136
+ $operation = $sync['operation'];
4137
+ unset( $sync['operation'] );
4138
+
4139
+ switch ( $operation ) {
4140
+ case 'delete' :
4141
+ return $this->register( 'delete_post', (int) $post->ID, $sync );
4142
+ case 'submit' :
4143
+ return $this->register_post( (int) $post->ID, $sync );
4144
+ }
4145
+ }
4146
+
4147
+ function get_post_sync_operation( $new_status, $old_status, $post, $module_conditions ) {
4148
+ $delete_on_behalf_of = array();
4149
+ $submit_on_behalf_of = array();
4150
+ $delete_stati = array( 'delete' );
4151
+
4152
+ foreach ( $module_conditions as $module => $conditions ) {
4153
+ if ( !in_array( $post->post_type, $conditions['post_types'] ) ) {
4154
+ continue;
4155
+ }
4156
+
4157
+ $deleted_post = in_array( $new_status, $delete_stati );
4158
+
4159
+ if ( $deleted_post ) {
4160
+ $delete_on_behalf_of[] = $module;
4161
+ } else {
4162
+ clean_post_cache( $post->ID );
4163
+ $new_status = get_post_status( $post->ID ); // Inherited status is resolved here
4164
+ }
4165
+
4166
+ $old_status_in_stati = in_array( $old_status, $conditions['post_stati'] );
4167
+ $new_status_in_stati = in_array( $new_status, $conditions['post_stati'] );
4168
+
4169
+ if ( $old_status_in_stati && !$new_status_in_stati ) {
4170
+ // Jetpack no longer needs the post
4171
+ if ( !$deleted_post ) {
4172
+ $delete_on_behalf_of[] = $module;
4173
+ } // else, we've already flagged it above
4174
+ continue;
4175
+ }
4176
+
4177
+ if ( !$new_status_in_stati ) {
4178
+ continue;
4179
+ }
4180
+
4181
+ // At this point, we know we want to sync the post, not delete it
4182
+ $submit_on_behalf_of[] = $module;
4183
+ }
4184
+
4185
+ if ( !empty( $submit_on_behalf_of ) ) {
4186
+ return array( 'operation' => 'submit', 'on_behalf_of' => $submit_on_behalf_of );
4187
+ }
4188
+
4189
+ if ( !empty( $delete_on_behalf_of ) ) {
4190
+ return array( 'operation' => 'delete', 'on_behalf_of' => $delete_on_behalf_of );
4191
+ }
4192
+
4193
+ return false;
4194
+ }
4195
+
4196
+ /**
4197
+ * Get a post and associated data in the standard JP format.
4198
+ * Cannot be called statically
4199
+ *
4200
+ * @param int $id Post ID
4201
+ * @return Array containing full post details
4202
+ */
4203
+ function get_post( $id ) {
4204
+ $post_obj = get_post( $id );
4205
+ if ( !$post_obj )
4206
+ return false;
4207
+
4208
+ if ( is_callable( $post_obj, 'to_array' ) ) {
4209
+ // WP >= 3.5
4210
+ $post = $post_obj->to_array();
4211
+ } else {
4212
+ // WP < 3.5
4213
+ $post = get_object_vars( $post_obj );
4214
+ }
4215
+
4216
+ if ( 0 < strlen( $post['post_password'] ) ) {
4217
+ $post['post_password'] = 'auto-' . wp_generate_password( 10, false ); // We don't want the real password. Just pass something random.
4218
+ }
4219
+
4220
+ // local optimizations
4221
+ unset(
4222
+ $post['filter'],
4223
+ $post['ancestors'],
4224
+ $post['post_content_filtered'],
4225
+ $post['to_ping'],
4226
+ $post['pinged']
4227
+ );
4228
+
4229
+ if ( $this->is_post_public( $post ) ) {
4230
+ $post['post_is_public'] = Jetpack::get_option( 'public' );
4231
+ } else {
4232
+ //obscure content
4233
+ $post['post_content'] = '';
4234
+ $post['post_excerpt'] = '';
4235
+ $post['post_is_public'] = false;
4236
+ }
4237
+ $post_type_obj = get_post_type_object( $post['post_type'] );
4238
+ $post['post_is_excluded_from_search'] = $post_type_obj->exclude_from_search;
4239
+
4240
+ $post['tax'] = array();
4241
+ $taxonomies = get_object_taxonomies( $post_obj );
4242
+ foreach ( $taxonomies as $taxonomy ) {
4243
+ $terms = get_object_term_cache( $post_obj->ID, $taxonomy );
4244
+ if ( empty( $terms ) )
4245
+ $terms = wp_get_object_terms( $post_obj->ID, $taxonomy );
4246
+ $term_names = array();
4247
+ foreach ( $terms as $term ) {
4248
+ $term_names[] = $term->name;
4249
+ }
4250
+ $post['tax'][$taxonomy] = $term_names;
4251
+ }
4252
+
4253
+ $meta = get_post_meta( $post_obj->ID, false );
4254
+ $post['meta'] = array();
4255
+ foreach ( $meta as $key => $value ) {
4256
+ $post['meta'][$key] = array_map( 'maybe_unserialize', $value );
4257
+ }
4258
+
4259
+ $post['extra'] = array(
4260
+ 'author' => get_the_author_meta( 'display_name', $post_obj->post_author ),
4261
+ 'author_email' => get_the_author_meta( 'email', $post_obj->post_author ),
4262
+ );
4263
+
4264
+ if ( $fid = get_post_thumbnail_id( $id ) ) {
4265
+ $feature = wp_get_attachment_image_src( $fid, 'large' );
4266
+ if ( !empty( $feature[0] ) )
4267
+ $post['extra']['featured_image'] = $feature[0];
4268
+ }
4269
+
4270
+ $post['permalink'] = get_permalink( $post_obj->ID );
4271
+ $post['shortlink'] = wp_get_shortlink( $post_obj->ID );
4272
+ return $post;
4273
+ }
4274
+
4275
+ /**
4276
+ * Decide whether a post/page/attachment is visible to the public.
4277
+ *
4278
+ * @param array $post
4279
+ * @return bool
4280
+ */
4281
+ function is_post_public( $post ) {
4282
+ if ( !is_array( $post ) ) {
4283
+ $post = (array) $post;
4284
+ }
4285
+
4286
+ if ( 0 < strlen( $post['post_password'] ) )
4287
+ return false;
4288
+ if ( ! in_array( $post['post_type'], get_post_types( array( 'public' => true ) ) ) )
4289
+ return false;
4290
+ $post_status = get_post_status( $post['ID'] ); // Inherited status is resolved here.
4291
+ if ( ! in_array( $post_status, get_post_stati( array( 'public' => true ) ) ) )
4292
+ return false;
4293
+ return true;
4294
+ }
4295
+
4296
+ /* Comments Sync */
4297
+
4298
+ function comments( $file, array $settings = null ) {
4299
+ $module_slug = Jetpack::get_module_slug( $file );
4300
+
4301
+ $defaults = array(
4302
+ 'post_types' => array( 'post', 'page' ), // For what post types will we sync comments?
4303
+ 'post_stati' => array( 'publish' ), // For what post stati will we sync comments?
4304
+ 'comment_types' => array( '', 'comment', 'trackback', 'pingback' ), // What comment types will we sync?
4305
+ 'comment_stati' => array( 'approved' ), // What comment stati will we sync?
4306
+ );
4307
+
4308
+ $settings = wp_parse_args( $settings, $defaults );
4309
+
4310
+ $this->sync_conditions['comments'][$module_slug] = $settings;
4311
+
4312
+ add_action( 'wp_insert_comment', array( $this, 'wp_insert_comment_action' ), 10, 2 );
4313
+ add_action( 'transition_comment_status', array( $this, 'transition_comment_status_action' ), 10, 3 );
4314
+ add_action( 'edit_comment', array( $this, 'edit_comment_action' ) );
4315
+ }
4316
+
4317
+ /*
4318
+ * This is really annoying. If you edit a comment, but don't change the status, WordPress doesn't fire the transition_comment_status hook.
4319
+ * That means we have to catch these comments on the edit_comment hook, but ignore comments on that hook when the transition_comment_status does fire.
4320
+ */
4321
+ function edit_comment_action( $comment_id ) {
4322
+ $comment = get_comment( $comment_id );
4323
+ $new_status = $this->translate_comment_status( $comment->comment_approved );
4324
+ add_action( "comment_{$new_status}_{$comment->comment_type}", array( $this, 'transition_comment_status_for_comments_whose_status_does_not_change' ), 10, 2 );
4325
+ }
4326
+
4327
+ function wp_insert_comment_action( $comment_id, $comment ) {
4328
+ $this->transition_comment_status_action( $comment->comment_approved, 'new', $comment );
4329
+ }
4330
+
4331
+ function transition_comment_status_for_comments_whose_status_does_not_change( $comment_id, $comment ) {
4332
+ if ( isset( $this->comment_transitions[$comment_id] ) ) {
4333
+ return $this->transition_comment_status_action( $comment->comment_approved, $this->comment_transitions[$comment_id][1], $comment );
4334
+ }
4335
+
4336
+ return $this->transition_comment_status_action( $comment->comment_approved, $comment->comment_approved, $comment );
4337
+ }
4338
+
4339
+ function translate_comment_status( $status ) {
4340
+ switch ( (string) $status ) {
4341
+ case '0' :
4342
+ case 'hold' :
4343
+ return 'unapproved';
4344
+ case '1' :
4345
+ case 'approve' :
4346
+ return 'approved';
4347
+ }
4348
+
4349
+ return $status;
4350
+ }
4351
+
4352
+ function transition_comment_status_action( $new_status, $old_status, $comment ) {
4353
+ $post = get_post( $comment->comment_post_ID );
4354
+ if ( !$post ) {
4355
+ return false;
4356
+ }
4357
+
4358
+ foreach ( array( 'new_status', 'old_status' ) as $_status ) {
4359
+ $$_status = $this->translate_comment_status( $$_status );
4360
+ }
4361
+
4362
+ // Track comment transitions
4363
+ if ( isset( $this->comment_transitions[$comment->comment_ID] ) ) {
4364
+ // status changed more than once - keep tha most recent $new_status
4365
+ $this->comment_transitions[$comment->comment_ID][0] = $new_status;
4366
+ } else {
4367
+ $this->comment_transitions[$comment->comment_ID] = array( $new_status, $old_status );
4368
+ }
4369
+
4370
+ $post_sync = $this->get_post_sync_operation( $post->post_status, '_jetpack_test_sync', $post, $this->sync_conditions['comments'] );
4371
+
4372
+ if ( !$post_sync ) {
4373
+ // No module wants to sync this comment because its post doesn't match any sync conditions
4374
+ return false;
4375
+ }
4376
+
4377
+ if ( 'delete' == $post_sync['operation'] ) {
4378
+ // Had we been looking at post sync operations (instead of comment sync operations),
4379
+ // this comment's post would have been deleted. Don't sync the comment.
4380
+ return false;
4381
+ }
4382
+
4383
+ $delete_on_behalf_of = array();
4384
+ $submit_on_behalf_of = array();
4385
+ $delete_stati = array( 'delete' );
4386
+
4387
+ foreach ( $this->sync_conditions['comments'] as $module => $conditions ) {
4388
+ if ( !in_array( $comment->comment_type, $conditions['comment_types'] ) ) {
4389
+ continue;
4390
+ }
4391
+
4392
+ $deleted_comment = in_array( $new_status, $delete_stati );
4393
+
4394
+ if ( $deleted_comment ) {
4395
+ $delete_on_behalf_of[] = $module;
4396
+ }
4397
+
4398
+ $old_status_in_stati = in_array( $old_status, $conditions['comment_stati'] );
4399
+ $new_status_in_stati = in_array( $new_status, $conditions['comment_stati'] );
4400
+
4401
+ if ( $old_status_in_stati && !$new_status_in_stati ) {
4402
+ // Jetpack no longer needs the comment
4403
+ if ( !$deleted_comment ) {
4404
+ $delete_on_behalf_of[] = $module;
4405
+ } // else, we've already flagged it above
4406
+ continue;
4407
+ }
4408
+
4409
+ if ( !$new_status_in_stati ) {
4410
+ continue;
4411
+ }
4412
+
4413
+ // At this point, we know we want to sync the comment, not delete it
4414
+ $submit_on_behalf_of[] = $module;
4415
+ }
4416
+
4417
+ if ( ! empty( $submit_on_behalf_of ) ) {
4418
+ $this->register_post( $comment->comment_post_ID, array( 'on_behalf_of' => $submit_on_behalf_of ) );
4419
+ return $this->register_comment( $comment->comment_ID, array( 'on_behalf_of' => $submit_on_behalf_of ) );
4420
+ }
4421
+
4422
+ if ( !empty( $delete_on_behalf_of ) ) {
4423
+ return $this->register( 'delete_comment', $comment->comment_ID, array( 'on_behalf_of' => $delete_on_behalf_of ) );
4424
+ }
4425
+
4426
+ return false;
4427
+ }
4428
+
4429
+ /**
4430
+ * Get a comment and associated data in the standard JP format.
4431
+ * Cannot be called statically
4432
+ *
4433
+ * @param int $id Comment ID
4434
+ * @return Array containing full comment details
4435
+ */
4436
+ function get_comment( $id ) {
4437
+ $comment_obj = get_comment( $id );
4438
+ if ( !$comment_obj )
4439
+ return false;
4440
+ $comment = get_object_vars( $comment_obj );
4441
+
4442
+ $meta = get_comment_meta( $id, false );
4443
+ $comment['meta'] = array();
4444
+ foreach ( $meta as $key => $value ) {
4445
+ $comment['meta'][$key] = array_map( 'maybe_unserialize', $value );
4446
+ }
4447
+
4448
+ return $comment;
4449
+ }
4450
+
4451
+ /* Options Sync */
4452
+
4453
+ /* Ah... so much simpler than Posts and Comments :) */
4454
+ function options( $file, $option /*, $option, ... */ ) {
4455
+ $options = func_get_args();
4456
+ $file = array_shift( $options );
4457
+
4458
+ $module_slug = Jetpack::get_module_slug( $file );
4459
+
4460
+ if ( !isset( $this->sync_options[$module_slug] ) ) {
4461
+ $this->sync_options[$module_slug] = array();
4462
+ }
4463
+
4464
+ foreach ( $options as $option ) {
4465
+ $this->sync_options[$module_slug][] = $option;
4466
+ add_action( "delete_option_{$option}", array( $this, 'deleted_option_action' ) );
4467
+ add_action( "update_option_{$option}", array( $this, 'updated_option_action' ) );
4468
+ add_action( "add_option_{$option}", array( $this, 'added_option_action' ) );
4469
+ }
4470
+
4471
+ $this->sync_options[$module_slug] = array_unique( $this->sync_options[$module_slug] );
4472
+ }
4473
+
4474
+ function deleted_option_action( $option ) {
4475
+ $this->register( 'delete_option', $option );
4476
+ }
4477
+
4478
+ function updated_option_action( $old_value ) {
4479
+ // The value of $option isn't passed to the filter
4480
+ // Calculate it
4481
+ $option = current_filter();
4482
+ $prefix = 'update_option_';
4483
+ if ( 0 !== strpos( $option, $prefix ) ) {
4484
+ return;
4485
+ }
4486
+ $option = substr( $option, strlen( $prefix ) );
4487
+
4488
+ $this->added_option_action( $option );
4489
+ }
4490
+
4491
+ function added_option_action( $option ) {
4492
+ $this->register( 'option', $option );
4493
+ }
4494
+
4495
+ function sync_all_module_options( $module_slug ) {
4496
+ if ( empty( $this->sync_options[$module_slug] ) ) {
4497
+ return;
4498
+ }
4499
+
4500
+ foreach ( $this->sync_options[$module_slug] as $option ) {
4501
+ $this->added_option_action( $option );
4502
+ }
4503
+ }
4504
+
4505
+ function sync_all_registered_options( $options = array() ) {
4506
+ if ( 'jetpack_sync_all_registered_options' == current_filter() ) {
4507
+ $all_registered_options = array_unique( call_user_func_array( 'array_merge', $this->sync_options ) );
4508
+ foreach ( $all_registered_options as $option ) {
4509
+ $this->added_option_action( $option );
4510
+ }
4511
+ } else {
4512
+ wp_schedule_single_event( time(), 'jetpack_sync_all_registered_options', array( $this->sync_options ) );
4513
+ }
4514
+ }
4515
+ }
4516
+
4517
+ require_once dirname( __FILE__ ) . '/class.jetpack-user-agent.php';
4518
+ require_once dirname( __FILE__ ) . '/class.jetpack-post-images.php';
4519
+ require dirname( __FILE__ ) . '/functions.photon.php';
4520
+ require dirname( __FILE__ ) . '/functions.compat.php';
4521
+
4522
+ class Jetpack_Error extends WP_Error {}
4523
+
4524
+ register_activation_hook( __FILE__, array( 'Jetpack', 'plugin_activation' ) );
4525
+ register_deactivation_hook( __FILE__, array( 'Jetpack', 'plugin_deactivation' ) );
4526
+
4527
+ add_action( 'init', array( 'Jetpack', 'init' ) );
4528
+ add_action( 'plugins_loaded', array( 'Jetpack', 'load_modules' ), 100 );
4529
+ add_filter( 'jetpack_static_url', array( 'Jetpack', 'staticize_subdomain' ) );
languages/jetpack-ar.mo ADDED
Binary file
languages/jetpack-ar.po ADDED
@@ -0,0 +1,3514 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of 2.0 in Arabic
2
+ # This file is distributed under the same license as the 2.0 package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2012-11-20 20:02:04+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: 2.0\n"
12
+
13
+ #: modules/widgets/rsslinks-widget.php:113
14
+ msgid "Red"
15
+ msgstr ""
16
+
17
+ #: modules/widgets/rsslinks-widget.php:114
18
+ msgid "Orange"
19
+ msgstr "برتقالي"
20
+
21
+ #: modules/widgets/rsslinks-widget.php:115
22
+ msgid "Green"
23
+ msgstr "أخضر"
24
+
25
+ #: modules/widgets/rsslinks-widget.php:116
26
+ msgid "Blue"
27
+ msgstr "ازرق"
28
+
29
+ #: modules/widgets/rsslinks-widget.php:117
30
+ msgid "Purple"
31
+ msgstr "أرجواني"
32
+
33
+ #: modules/widgets/rsslinks-widget.php:118
34
+ msgid "Pink"
35
+ msgstr "زهري"
36
+
37
+ #: modules/widgets/rsslinks-widget.php:119
38
+ msgid "Silver"
39
+ msgstr "فضي"
40
+
41
+ #: modules/widgets/rsslinks-widget.php:121
42
+ msgid "Image Color:"
43
+ msgstr "لون الصورة"
44
+
45
+ #: modules/widgets/rsslinks-widget.php:140
46
+ msgid "Subscribe to %s"
47
+ msgstr "اشترك بـ %s"
48
+
49
+ #: modules/widgets/top-posts.php:35 modules/widgets/top-posts.php:41
50
+ msgid "Top Posts &amp; Pages"
51
+ msgstr ""
52
+
53
+ #: modules/widgets/top-posts.php:37
54
+ msgid "Shows your most viewed posts and pages."
55
+ msgstr ""
56
+
57
+ #: modules/widgets/top-posts.php:78
58
+ msgid "Number of posts to show:"
59
+ msgstr "عدد التدوينات:"
60
+
61
+ #: modules/widgets/top-posts.php:83
62
+ msgid "Display as:"
63
+ msgstr ""
64
+
65
+ #: modules/widgets/top-posts.php:85
66
+ msgid "Text List"
67
+ msgstr ""
68
+
69
+ #: modules/widgets/top-posts.php:86
70
+ msgid "Image List"
71
+ msgstr ""
72
+
73
+ #: modules/widgets/top-posts.php:87
74
+ msgid "Image Grid"
75
+ msgstr ""
76
+
77
+ #: modules/widgets/top-posts.php:91
78
+ msgid "Top Posts &amp; Pages by views are calculated from 24-48 hours of stats. They take a while to change."
79
+ msgstr ""
80
+
81
+ #: modules/widgets/top-posts.php:164
82
+ msgid "There are no posts to display. <a href=\"%s\">Want more traffic?</a>"
83
+ msgstr ""
84
+
85
+ #: modules/widgets/twitter.php:22
86
+ msgid "Display your Tweets from Twitter"
87
+ msgstr ""
88
+
89
+ #: modules/widgets/twitter.php:31
90
+ msgid "Please configure your Twitter username for the <a href=\"%s\">Twitter Widget</a>."
91
+ msgstr ""
92
+
93
+ #: modules/widgets/twitter.php:41
94
+ msgid "Twitter Updates"
95
+ msgstr "تحديثات تويتر"
96
+
97
+ #: modules/widgets/twitter.php:182 modules/widgets/twitter.php:203
98
+ msgid "Error: Twitter did not respond. Please wait a few minutes and refresh this page."
99
+ msgstr "خطأ: تويتر لم يستجب. الرجاء الانتظار بضعة دقائق ثم قم بتحديث هذه الصفحة."
100
+
101
+ #: modules/widgets/twitter.php:196
102
+ msgid "Error: Please make sure the Twitter account is %1$spublic%2$s."
103
+ msgstr ""
104
+
105
+ #: modules/widgets/twitter.php:265
106
+ msgid "Twitter username:"
107
+ msgstr ": اسم المستخدم على تويتر"
108
+
109
+ #: modules/widgets/twitter.php:272
110
+ msgid "Maximum number of Tweets to show:"
111
+ msgstr ""
112
+
113
+ #: modules/widgets/twitter.php:286
114
+ msgid "Hide replies"
115
+ msgstr "إخفاء الردود"
116
+
117
+ #: modules/widgets/twitter.php:293
118
+ msgid "Hide Tweets pushed by Publicize"
119
+ msgstr ""
120
+
121
+ #: modules/widgets/twitter.php:300
122
+ msgid "Include retweets"
123
+ msgstr "تضمين ردود تويتر"
124
+
125
+ #: modules/widgets/twitter.php:307
126
+ msgid "Display Follow Button"
127
+ msgstr ""
128
+
129
+ #: modules/widgets/twitter.php:313
130
+ msgid "Text to display between Tweet and timestamp:"
131
+ msgstr ""
132
+
133
+ msgid "http://wordpress.org/extend/plugins/jetpack/"
134
+ msgstr "http://wordpress.org/extend/plugins/jetpack/"
135
+
136
+ msgid "Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users."
137
+ msgstr ""
138
+
139
+ msgid "Automattic"
140
+ msgstr "أوتوماتيك"
141
+
142
+ msgid "http://jetpack.me"
143
+ msgstr "http://jetpack.me"
144
+
145
+ msgid "Improve your spelling, style, and grammar with the <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> Proofreading service."
146
+ msgstr ""
147
+
148
+ msgid "Transform your standard image galleries into an immersive full-screen experience."
149
+ msgstr ""
150
+
151
+ msgid "A new comment system that has integrated social media login options."
152
+ msgstr ""
153
+
154
+ msgid "Easily insert a contact form any where on your site."
155
+ msgstr "أدخل نموذج الاتصال بك في أي مكان في موقعك بكل سهولة"
156
+
157
+ msgid "Customize the appearance of your site using CSS but without modifying your theme."
158
+ msgstr ""
159
+
160
+ msgid "Share your public posts and comments to search engines and other services in real-time."
161
+ msgstr ""
162
+
163
+ msgid "Show a pop-up business card of your users' gravatar profiles in comments."
164
+ msgstr ""
165
+
166
+ msgid "Automatically pull the next set of posts into view when the reader approaches the bottom of the page."
167
+ msgstr ""
168
+
169
+ msgid "Allow applications to securely access your content through the cloud."
170
+ msgstr ""
171
+
172
+ msgid "Beautiful Math"
173
+ msgstr "رياضيات جميلة"
174
+
175
+ msgid "Mark up your posts with the <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> markup language, perfect for complex mathematical equations and other &#252;ber-geekery."
176
+ msgstr ""
177
+
178
+ msgid "Automatically optimize your site for mobile devices."
179
+ msgstr ""
180
+
181
+ msgid "Receive notifications on your Apple device."
182
+ msgstr ""
183
+
184
+ msgid "Monitor and manage your site's activity with Notifications in your Toolbar and on WordPress.com."
185
+ msgstr ""
186
+
187
+ msgid "Give your site a boost by loading images from the WordPress.com content delivery network."
188
+ msgstr ""
189
+
190
+ msgid "Publish posts to your blog directly from your personal email account."
191
+ msgstr ""
192
+
193
+ msgid "Connect your site to popular social networks and automatically share new posts with your friends."
194
+ msgstr ""
195
+
196
+ msgid "The most super duper sharing tool on the interwebs. Share content with Facebook, Twitter, and many more."
197
+ msgstr ""
198
+
199
+ msgid "Easily embed videos and more from sites like YouTube, Vimeo, and SlideShare."
200
+ msgstr ".SlideShare و ،Vimeo ،YouTube تضمين مقاطع الفيديو والمزيد من مواقع مثل"
201
+
202
+ msgid "Enable WP.me-powered shortlinks for all of your Posts and Pages for easier sharing."
203
+ msgstr "WP.me تمكين ​​اختصار الروابط لجميع تدويناتك وصفحاتك لتسهيل المشاركة على"
204
+
205
+ msgid "Simple, concise site stats with no additional load on your server."
206
+ msgstr ".(Server)إحصائيات بسيطة و موجزة للموقع دون تحميل إضافات على الملقم"
207
+
208
+ msgid "Allow users to subscribe to your posts and comments to receive a notification via email."
209
+ msgstr ".السماح للمستخدمين الإشتراك في تدويناتك و تعليقاتها تلقي إشعار عبر البريد الإلكتروني"
210
+
211
+ msgid "Realtime backup and security scanning for your WordPress site."
212
+ msgstr ".نسخ احتياطي في وقت حقيقي و متابعة الأمن لموقع وورد الخاص بك"
213
+
214
+ msgid "Easily add images, Twitter updates, and your site's RSS links to your theme's sidebar."
215
+ msgstr ".RSS اضافة الصور و تحديثات تويتر في الشريط الجانبي لموقعك و روابط"
216
+
217
+ #: modules/widgets/facebook-likebox.php:115
218
+ #: modules/widgets/gravatar-profile.php:164
219
+ msgid "Title"
220
+ msgstr "العنوان"
221
+
222
+ #: modules/widgets/facebook-likebox.php:122
223
+ msgid "Facebook Page URL"
224
+ msgstr ""
225
+
226
+ #: modules/widgets/facebook-likebox.php:125
227
+ msgid "The Like Box only works with <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook Pages</a>."
228
+ msgstr ""
229
+
230
+ #: modules/widgets/facebook-likebox.php:131
231
+ msgid "Width"
232
+ msgstr "عرض"
233
+
234
+ #: modules/widgets/facebook-likebox.php:138
235
+ msgid "Height"
236
+ msgstr "ارتفاع"
237
+
238
+ #: modules/widgets/facebook-likebox.php:157
239
+ msgid "Show Faces"
240
+ msgstr ""
241
+
242
+ #: modules/widgets/facebook-likebox.php:159
243
+ msgid "Show profile photos in the plugin."
244
+ msgstr ""
245
+
246
+ #: modules/widgets/facebook-likebox.php:166
247
+ msgid "Show Stream"
248
+ msgstr ""
249
+
250
+ #: modules/widgets/facebook-likebox.php:168
251
+ msgid "Show the profile stream for the public profile."
252
+ msgstr ""
253
+
254
+ #: modules/widgets/facebook-likebox.php:175
255
+ msgid "Show Wall"
256
+ msgstr ""
257
+
258
+ #: modules/widgets/facebook-likebox.php:177
259
+ msgid "Show the wall for a Places page rather than friend activity."
260
+ msgstr ""
261
+
262
+ #: modules/widgets/gravatar-profile.php:19
263
+ msgid "Gravatar Profile"
264
+ msgstr ""
265
+
266
+ #: modules/widgets/gravatar-profile.php:21
267
+ msgid "Display a mini version of your Gravatar Profile"
268
+ msgstr "اعرض نسخة مصغرة من ملفك الشخصي في Gravatar"
269
+
270
+ #: modules/widgets/gravatar-profile.php:37
271
+ msgid "You need to select what to show in this <a href=\"%s\">Gravatar Profile widget</a>."
272
+ msgstr "تحتاج أن تختار ما يجب عرضه في القطعة من ملفك الشخصي في <a href=\"%s\">Gravatar</a>."
273
+
274
+ #: modules/widgets/gravatar-profile.php:91
275
+ msgid "View Full Profile &rarr;"
276
+ msgstr "عرض الملف الشخصي &rarr;"
277
+
278
+ #: modules/widgets/gravatar-profile.php:99
279
+ msgid "Error loading profile"
280
+ msgstr "هناك خطأ في تحميل الملف الشخصي"
281
+
282
+ #: modules/widgets/gravatar-profile.php:111
283
+ msgid "Personal Links"
284
+ msgstr "الروابط الشخصية"
285
+
286
+ #: modules/widgets/gravatar-profile.php:131
287
+ msgid "Verified Services"
288
+ msgstr ""
289
+
290
+ #: modules/widgets/gravatar-profile.php:142
291
+ msgctxt "1: User Name, 2: Service Name (Facebook, Twitter, ...)"
292
+ msgid "%1$s on %2$s"
293
+ msgstr ""
294
+
295
+ #: modules/widgets/gravatar-profile.php:170
296
+ msgid "Select a user or pick \"custom\" and enter a custom email address."
297
+ msgstr "حدد مستخدم أو اختر \"مخصص\" وأدخل البريد الإلكتروني المخصص."
298
+
299
+ #: modules/widgets/gravatar-profile.php:174
300
+ msgid "Custom"
301
+ msgstr "مخصص"
302
+
303
+ #: modules/widgets/gravatar-profile.php:184
304
+ msgid "Custom Email Address"
305
+ msgstr "بريد إلكتروني مخصص"
306
+
307
+ #: modules/widgets/gravatar-profile.php:192
308
+ msgid "Show Personal Links"
309
+ msgstr "عرض الروابط الشخصية"
310
+
311
+ #: modules/widgets/gravatar-profile.php:194
312
+ msgid "Links to your websites, blogs, or any other sites that help describe who you are."
313
+ msgstr "روابط مواقعك، مدوناتك، أو أي مواقع أخرى تساعد في التعريف بنفسك."
314
+
315
+ #: modules/widgets/gravatar-profile.php:201
316
+ msgid "Show Account Links"
317
+ msgstr "عرض روابط الحساب"
318
+
319
+ #: modules/widgets/gravatar-profile.php:203
320
+ msgid "Links to services that you use across the web."
321
+ msgstr "روابط للخدمات التي تستخدمها على شبكة الإنترنت."
322
+
323
+ #: modules/widgets/gravatar-profile.php:207
324
+ msgid "Opens in new window"
325
+ msgstr "تفتح في نافذة جديدة"
326
+
327
+ #: modules/widgets/gravatar-profile.php:207
328
+ msgid "Edit Your Profile"
329
+ msgstr "تعديل الملف الشخصي"
330
+
331
+ #: modules/widgets/gravatar-profile.php:207
332
+ msgid "What's a Gravatar?"
333
+ msgstr "ما هو Gravatar؟"
334
+
335
+ #: modules/widgets/image-widget.php:12
336
+ msgid "Display an image in your sidebar"
337
+ msgstr "عرض صورة في القائمة الجانبية"
338
+
339
+ #: modules/widgets/image-widget.php:14
340
+ msgid "Image (Jetpack)"
341
+ msgstr "صورة (جيت باك)"
342
+
343
+ #: modules/widgets/image-widget.php:110
344
+ msgid "Image URL:"
345
+ msgstr "رابط الصورة:"
346
+
347
+ #: modules/widgets/image-widget.php:113
348
+ msgid "Alternate text:"
349
+ msgstr "النص البديل:"
350
+
351
+ #: modules/widgets/image-widget.php:116
352
+ msgid "Image title:"
353
+ msgstr "عنوان الصورة:"
354
+
355
+ #: modules/widgets/image-widget.php:119
356
+ msgid "Caption:"
357
+ msgstr ""
358
+
359
+ #: modules/widgets/image-widget.php:124
360
+ msgid "None"
361
+ msgstr "بدون"
362
+
363
+ #: modules/widgets/image-widget.php:125
364
+ msgid "Left"
365
+ msgstr "يسار"
366
+
367
+ #: modules/widgets/image-widget.php:126
368
+ msgid "Center"
369
+ msgstr "وسط"
370
+
371
+ #: modules/widgets/image-widget.php:127
372
+ msgid "Right"
373
+ msgstr "يمين"
374
+
375
+ #: modules/widgets/image-widget.php:129
376
+ msgid "Image Alignment:"
377
+ msgstr "محاذاة الصورة:"
378
+
379
+ #: modules/widgets/image-widget.php:139
380
+ msgid "Width:"
381
+ msgstr "العرض:"
382
+
383
+ #: modules/widgets/image-widget.php:142
384
+ msgid "Height:"
385
+ msgstr "الإرتفاع:"
386
+
387
+ #: modules/widgets/image-widget.php:145
388
+ msgid "If empty, we will attempt to determine the image size."
389
+ msgstr ""
390
+
391
+ #: modules/widgets/image-widget.php:146
392
+ msgid "Link URL (when the image is clicked):"
393
+ msgstr ""
394
+
395
+ #: modules/widgets/rsslinks-widget.php:12
396
+ msgid "Links to your blog's RSS feeds"
397
+ msgstr ""
398
+
399
+ #: modules/widgets/rsslinks-widget.php:13
400
+ msgid "RSS Links (Jetpack)"
401
+ msgstr ""
402
+
403
+ #: modules/widgets/rsslinks-widget.php:62 modules/widgets/top-posts.php:73
404
+ #: modules/widgets/twitter.php:258
405
+ msgid "Title:"
406
+ msgstr "العنوان:"
407
+
408
+ #: modules/widgets/rsslinks-widget.php:67
409
+ #: modules/widgets/rsslinks-widget.php:133
410
+ msgid "Posts"
411
+ msgstr "تدوينات"
412
+
413
+ #: modules/widgets/rsslinks-widget.php:68
414
+ #: modules/widgets/rsslinks-widget.php:136
415
+ msgid "Comments"
416
+ msgstr "تعليقات"
417
+
418
+ #: modules/widgets/rsslinks-widget.php:69
419
+ msgid "Posts & Comments"
420
+ msgstr ""
421
+
422
+ #: modules/widgets/rsslinks-widget.php:71
423
+ msgid "Feed(s) to Display:"
424
+ msgstr ""
425
+
426
+ #: modules/widgets/rsslinks-widget.php:81
427
+ msgid "Text Link"
428
+ msgstr "رابط نصي"
429
+
430
+ #: modules/widgets/rsslinks-widget.php:82
431
+ msgid "Image Link"
432
+ msgstr "رابط صورة"
433
+
434
+ #: modules/widgets/rsslinks-widget.php:83
435
+ msgid "Text & Image Links"
436
+ msgstr "روابط نصية وروابط صور"
437
+
438
+ #: modules/widgets/rsslinks-widget.php:85
439
+ msgid "Format:"
440
+ msgstr ""
441
+
442
+ #: modules/widgets/rsslinks-widget.php:96
443
+ msgid "Image Settings:"
444
+ msgstr "إعدادات الصورة"
445
+
446
+ #: modules/widgets/rsslinks-widget.php:99
447
+ msgid "Small"
448
+ msgstr "صغير"
449
+
450
+ #: modules/widgets/rsslinks-widget.php:100
451
+ msgid "Medium"
452
+ msgstr "متوسط"
453
+
454
+ #: modules/widgets/rsslinks-widget.php:101
455
+ msgid "Large"
456
+ msgstr "كبير"
457
+
458
+ #: modules/widgets/rsslinks-widget.php:103
459
+ msgid "Image Size:"
460
+ msgstr ""
461
+
462
+ #: modules/stats.php:527
463
+ msgid "Hide the stats smiley face image."
464
+ msgstr ""
465
+
466
+ #: modules/stats.php:527
467
+ msgid "The image helps collect stats and <strong>makes the world a better place</strong> but should still work when hidden"
468
+ msgstr ""
469
+
470
+ #: modules/stats.php:527
471
+ msgid "Smiley face"
472
+ msgstr ""
473
+
474
+ #: modules/stats.php:528
475
+ msgid "Report visibility"
476
+ msgstr ""
477
+
478
+ #: modules/stats.php:530
479
+ msgid "Select the roles that will be able to view stats reports."
480
+ msgstr ""
481
+
482
+ #: modules/stats.php:541
483
+ msgid "Save configuration"
484
+ msgstr ""
485
+
486
+ #: modules/stats.php:597
487
+ msgid "Stats"
488
+ msgstr "الحالة"
489
+
490
+ #: modules/stats.php:599
491
+ msgid "Views over 48 hours. Click for more Site Stats."
492
+ msgstr ""
493
+
494
+ #: modules/stats.php:666
495
+ msgid "day"
496
+ msgstr "يوم"
497
+
498
+ #: modules/stats.php:667
499
+ msgid "week"
500
+ msgstr "أسبوع"
501
+
502
+ #: modules/stats.php:668
503
+ msgid "month"
504
+ msgstr "شهر"
505
+
506
+ #: modules/stats.php:671
507
+ msgid "the past day"
508
+ msgstr "اليوم السابق"
509
+
510
+ #: modules/stats.php:672
511
+ msgid "the past week"
512
+ msgstr "الأسبوع الماضي"
513
+
514
+ #: modules/stats.php:673
515
+ msgid "the past month"
516
+ msgstr "الشهر الماضي"
517
+
518
+ #: modules/stats.php:674
519
+ msgid "the past quarter"
520
+ msgstr "الثلاثة الأشهر الماضية"
521
+
522
+ #: modules/stats.php:675
523
+ msgid "the past year"
524
+ msgstr "السنة الماضية"
525
+
526
+ #: modules/stats.php:697
527
+ msgid "Chart stats by"
528
+ msgstr ""
529
+
530
+ #: modules/stats.php:710
531
+ msgid "Show top posts over"
532
+ msgstr "أظهر المواضيع الأفضل على"
533
+
534
+ #: modules/stats.php:723
535
+ msgid "Show top search terms over"
536
+ msgstr ""
537
+
538
+ #: modules/stats.php:882
539
+ msgid "%1$s %2$s Views"
540
+ msgstr ""
541
+
542
+ #: modules/stats.php:895
543
+ msgid "View All"
544
+ msgstr "عرض الكل"
545
+
546
+ #: modules/stats.php:899
547
+ msgid "Top Posts"
548
+ msgstr "أحسن مشاركات"
549
+
550
+ #: modules/stats.php:903 modules/stats.php:927
551
+ msgid "Sorry, nothing to report."
552
+ msgstr ""
553
+
554
+ #: modules/stats.php:923
555
+ msgid "Top Searches"
556
+ msgstr "أعلى الأبحاث"
557
+
558
+ #: modules/stats.php:946
559
+ msgid "We were unable to get your stats just now. Please reload this page to try again. If this error persists, please <a href=\"%1$s\">contact support</a>. In your report please include the information below."
560
+ msgstr ""
561
+
562
+ #: modules/subscriptions.php:108
563
+ msgid "Jetpack Subscriptions Settings"
564
+ msgstr "إعدادات اشتراكات جيت باك"
565
+
566
+ #: modules/subscriptions.php:117
567
+ msgid "Follow Blog"
568
+ msgstr "الاشتراك بالنشرة البريدية للموقع"
569
+
570
+ #: modules/subscriptions.php:132
571
+ msgid "Follow Comments"
572
+ msgstr "متابعة التعليقات"
573
+
574
+ #: modules/subscriptions.php:153
575
+ msgid "Follower Settings"
576
+ msgstr ""
577
+
578
+ #: modules/subscriptions.php:160
579
+ msgid "Blog follow email text"
580
+ msgstr ""
581
+
582
+ #: modules/subscriptions.php:168
583
+ msgid "Comment follow email text"
584
+ msgstr ""
585
+
586
+ #: modules/subscriptions.php:182
587
+ msgid "Change whether your visitors can subscribe to your posts or comments or both."
588
+ msgstr ""
589
+
590
+ #: modules/subscriptions.php:197
591
+ msgid "Show a <em>'follow blog'</em> option in the comment form"
592
+ msgstr ""
593
+
594
+ #: modules/subscriptions.php:212
595
+ msgid "Show a <em>'follow comments'</em> option in the comment form"
596
+ msgstr ""
597
+
598
+ #: modules/subscriptions.php:237
599
+ msgid "These settings change emails sent from your blog to followers."
600
+ msgstr ""
601
+
602
+ #: modules/subscriptions.php:243
603
+ msgid "Introduction text sent when someone follows your blog. (Site and confirmation details will be automatically added for you.)"
604
+ msgstr ""
605
+
606
+ #: modules/subscriptions.php:249
607
+ msgid "Introduction text sent when someone follows a post on your blog. (Site and confirmation details will be automatically added for you.)"
608
+ msgstr ""
609
+
610
+ #: modules/subscriptions.php:254
611
+ msgid ""
612
+ "Howdy.\n"
613
+ "\n"
614
+ "You recently followed this blog's posts. This means you will receive each new post by email.\n"
615
+ "\n"
616
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
617
+ msgstr ""
618
+
619
+ #: modules/subscriptions.php:255
620
+ msgid ""
621
+ "Howdy.\n"
622
+ "\n"
623
+ "You recently followed one of my posts. This means you will receive an email when new comments are posted.\n"
624
+ "\n"
625
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
626
+ msgstr ""
627
+
628
+ #: modules/subscriptions.php:447
629
+ msgid "Notify me of follow-up comments by email."
630
+ msgstr ""
631
+
632
+ #: modules/subscriptions.php:454
633
+ msgid "Notify me of new posts by email."
634
+ msgstr ""
635
+
636
+ #: modules/subscriptions.php:520
637
+ msgid "Add an email signup form to allow people to subscribe to your blog."
638
+ msgstr "أضف نموذج الاشتراك بالإيميل للسماح للزوار بالاشتراك بالنشرة البريدية لمدونتك."
639
+
640
+ #: modules/subscriptions.php:523
641
+ msgid "Blog Subscriptions (Jetpack)"
642
+ msgstr "النشرة البريدية (جيت باك)"
643
+
644
+ #: modules/subscriptions.php:554
645
+ msgid "An email was just sent to confirm your subscription. Please find the email now and click activate to start subscribing."
646
+ msgstr "تم إرسال بريد إلكتروني لتأكيد الاشتراك. الرجاء فتح الإيميل واضغط على تفعيل لبدء الاشتراك."
647
+
648
+ #: modules/subscriptions.php:564
649
+ msgid "The email you entered was invalid, please check and try again."
650
+ msgstr "البريد الذي أدخلته غير صحيح، الرجاء التأكد والمحاولة من جديد."
651
+
652
+ #: modules/subscriptions.php:567
653
+ msgid "You have already subscribed to this site, please check your inbox."
654
+ msgstr "لقد قمت بالاشتراك بهذا الموقع مسبقاً، يرجى التحقق من البريد الوارد."
655
+
656
+ #: modules/subscriptions.php:574
657
+ msgid "There was an error when subscribing, please try again."
658
+ msgstr "حدث خطأ بالاشتراك، يرجى المحاولة من جديد."
659
+
660
+ #: modules/subscriptions.php:592
661
+ msgid "Join %s other subscriber"
662
+ msgid_plural "Join %s other subscribers"
663
+ msgstr[0] "انضم مع %s مشترك"
664
+ msgstr[1] "انضم مع مشترك %s"
665
+ msgstr[2] "انضم مع %s مشتركين"
666
+ msgstr[3] "انضم مع %s مشتركين"
667
+ msgstr[4] "انضم مع %s مشترك"
668
+ msgstr[5] "انضم مع %s مشترك"
669
+
670
+ #: modules/subscriptions.php:671
671
+ msgid "Subscribe to Blog via Email"
672
+ msgstr "اشترك بالنشرة البريدية للموقع"
673
+
674
+ #: modules/subscriptions.php:672
675
+ msgid "Enter your email address to subscribe to this blog and receive notifications of new posts by email."
676
+ msgstr "ادخل بريدك الإلكتروني للاشتراك بالنشرة البريدية والحصول على تنبيهات بالمواضيع الجديدة للموقع."
677
+
678
+ #: modules/subscriptions.php:674
679
+ msgid "Click to subscribe to this blog and receive notifications of new posts by email."
680
+ msgstr ""
681
+
682
+ #: modules/subscriptions.php:690
683
+ msgid "%s: %s"
684
+ msgstr ""
685
+
686
+ #: modules/subscriptions.php:698 modules/widgets/image-widget.php:107
687
+ msgid "Widget title:"
688
+ msgstr ""
689
+
690
+ #: modules/subscriptions.php:704
691
+ msgid "Optional text to display to your readers:"
692
+ msgstr ""
693
+
694
+ #: modules/subscriptions.php:710
695
+ msgid "Subscribe Button:"
696
+ msgstr ""
697
+
698
+ #: modules/subscriptions.php:717
699
+ msgid "Show total number of subscribers? (%s subscriber)"
700
+ msgid_plural "Show total number of subscribers? (%s subscribers)"
701
+ msgstr[0] ""
702
+ msgstr[1] ""
703
+ msgstr[2] ""
704
+ msgstr[3] ""
705
+ msgstr[4] ""
706
+ msgstr[5] ""
707
+
708
+ #: modules/vaultpress.php:22
709
+ msgid "Active"
710
+ msgstr "نشط"
711
+
712
+ #: modules/widgets/facebook-likebox.php:29
713
+ msgid "Facebook Like Box"
714
+ msgstr ""
715
+
716
+ #: modules/widgets/facebook-likebox.php:29
717
+ msgid "Display a Facebook Like Box to connect visitors to your Facebook Page"
718
+ msgstr ""
719
+
720
+ #: modules/widgets/facebook-likebox.php:41
721
+ msgid "It looks like your Facebook URL is incorrectly configured. Please check it in your <a href=\"%s\">widget settings</a>."
722
+ msgstr ""
723
+
724
+ #: modules/sharedaddy/sharing.php:300
725
+ msgid "Button style"
726
+ msgstr ""
727
+
728
+ #: modules/sharedaddy/sharing.php:303
729
+ msgid "Icon + text"
730
+ msgstr ""
731
+
732
+ #: modules/sharedaddy/sharing.php:304
733
+ msgid "Icon only"
734
+ msgstr ""
735
+
736
+ #: modules/sharedaddy/sharing.php:305
737
+ msgid "Text only"
738
+ msgstr ""
739
+
740
+ #: modules/sharedaddy/sharing.php:306
741
+ msgid "Official buttons"
742
+ msgstr ""
743
+
744
+ #: modules/sharedaddy/sharing.php:311
745
+ msgid "Sharing label"
746
+ msgstr ""
747
+
748
+ #: modules/sharedaddy/sharing.php:317
749
+ msgid "Open links in"
750
+ msgstr ""
751
+
752
+ #: modules/sharedaddy/sharing.php:320
753
+ msgid "New window"
754
+ msgstr ""
755
+
756
+ #: modules/sharedaddy/sharing.php:321
757
+ msgid "Same window"
758
+ msgstr ""
759
+
760
+ #: modules/sharedaddy/sharing.php:326
761
+ msgid "Show buttons on"
762
+ msgstr ""
763
+
764
+ #: modules/sharedaddy/sharing.php:332
765
+ msgid "Front Page, Archive Pages, and Search Results"
766
+ msgstr ""
767
+
768
+ #: modules/sharedaddy/sharing.php:348
769
+ msgid "Save Changes"
770
+ msgstr "حفظ التغييرات"
771
+
772
+ #: modules/sharedaddy/sharing.php:359
773
+ msgid "Service name"
774
+ msgstr ""
775
+
776
+ #: modules/sharedaddy/sharing.php:365
777
+ msgid "Sharing URL"
778
+ msgstr ""
779
+
780
+ #: modules/sharedaddy/sharing.php:369
781
+ msgid "You can add the following variables to your service sharing URL:"
782
+ msgstr ""
783
+
784
+ #: modules/sharedaddy/sharing.php:374
785
+ msgid "Icon URL"
786
+ msgstr ""
787
+
788
+ #: modules/sharedaddy/sharing.php:377
789
+ msgid "Enter the URL of a 16x16px icon you want to use for this service."
790
+ msgstr ""
791
+
792
+ #: modules/sharedaddy/sharing.php:383
793
+ msgid "Create Share Button"
794
+ msgstr ""
795
+
796
+ #: modules/sharedaddy/sharing.php:395
797
+ msgid "An error occurred creating your new sharing service - please check you gave valid details."
798
+ msgstr ""
799
+
800
+ #: modules/shortcodes/archives.php:50
801
+ msgid "Your blog does not currently have any published posts."
802
+ msgstr ""
803
+
804
+ #: modules/shortcodes/audio.php:180
805
+ msgid "Download: <a href=\"%s\">%s</a><br />"
806
+ msgstr ""
807
+
808
+ #: modules/shortcodes/videopress.php:616
809
+ msgid "The VideoPress plugin could not communicate with the VideoPress servers. This error is most likely caused by a misconfigured plugin. Please reinstall or upgrade."
810
+ msgstr ""
811
+
812
+ #: modules/shortcodes/videopress.php:618
813
+ msgid "<strong>%s</strong> is not an allowed embed site."
814
+ msgstr ""
815
+
816
+ #: modules/shortcodes/videopress.php:618
817
+ msgid "Publisher limits playback of video embeds."
818
+ msgstr ""
819
+
820
+ #: modules/shortcodes/videopress.php:620
821
+ msgid "No data found for VideoPress identifier: <strong>%s</strong>."
822
+ msgstr ""
823
+
824
+ #: modules/shortcodes/videopress.php:837
825
+ msgid "%s Error"
826
+ msgstr ""
827
+
828
+ #: modules/shortcodes/videopress.php:871
829
+ msgid "This video is intended for mature audiences."
830
+ msgstr ""
831
+
832
+ #: modules/shortcodes/videopress.php:871
833
+ msgid "Please verify your birthday."
834
+ msgstr ""
835
+
836
+ #: modules/shortcodes/videopress.php:887
837
+ msgid "January"
838
+ msgstr "يناير"
839
+
840
+ #: modules/shortcodes/videopress.php:887
841
+ msgid "February"
842
+ msgstr "فبراير"
843
+
844
+ #: modules/shortcodes/videopress.php:887
845
+ msgid "March"
846
+ msgstr "مارس"
847
+
848
+ #: modules/shortcodes/videopress.php:887
849
+ msgid "April"
850
+ msgstr "أبريل"
851
+
852
+ #: modules/shortcodes/videopress.php:887
853
+ msgid "May"
854
+ msgstr "مايو"
855
+
856
+ #: modules/shortcodes/videopress.php:887
857
+ msgid "June"
858
+ msgstr "يونيو"
859
+
860
+ #: modules/shortcodes/videopress.php:887
861
+ msgid "July"
862
+ msgstr "يوليو"
863
+
864
+ #: modules/shortcodes/videopress.php:887
865
+ msgid "August"
866
+ msgstr "اغسطس"
867
+
868
+ #: modules/shortcodes/videopress.php:887
869
+ msgid "September"
870
+ msgstr "سبتمبر"
871
+
872
+ #: modules/shortcodes/videopress.php:887
873
+ msgid "October"
874
+ msgstr "أكتوبر"
875
+
876
+ #: modules/shortcodes/videopress.php:887
877
+ msgid "November"
878
+ msgstr "نوفمبر"
879
+
880
+ #: modules/shortcodes/videopress.php:887
881
+ msgid "December"
882
+ msgstr "ديسمبر"
883
+
884
+ #: modules/shortcodes/videopress.php:923
885
+ msgid "Submit"
886
+ msgstr "تنفيذ"
887
+
888
+ #: modules/shortcodes/videopress.php:969
889
+ msgid "You do not have sufficient <a rel=\"nofollow\" href=\"%s\">freedom levels</a> to view this video. Support free software and upgrade."
890
+ msgstr ""
891
+
892
+ #: modules/shortcodes/videopress.php:1027
893
+ msgctxt "watch a video title"
894
+ msgid "Watch: %s"
895
+ msgstr ""
896
+
897
+ #: modules/shortcodes/videopress.php:1123
898
+ #: modules/shortcodes/videopress.php:1145
899
+ msgid "this video"
900
+ msgstr ""
901
+
902
+ #: modules/shortcodes/videopress.php:1152
903
+ msgctxt "Play as in playback or view a movie"
904
+ msgid "JavaScript required to play %s."
905
+ msgstr ""
906
+
907
+ #: modules/shortcodes/videopress.php:1299
908
+ msgid "This video requires <a rel=\"nofollow\" href=\"%s\">Adobe Flash</a> for playback."
909
+ msgstr ""
910
+
911
+ #: modules/shortcodes/videopress.php:1306
912
+ msgid "Loading video..."
913
+ msgstr ""
914
+
915
+ #: modules/stats.php:252 modules/stats.php:645
916
+ msgid "Site Stats"
917
+ msgstr ""
918
+
919
+ #: modules/stats.php:343
920
+ msgid "Loading&hellip;"
921
+ msgstr ""
922
+
923
+ #: modules/stats.php:344
924
+ msgid "Your Site Stats work better with Javascript enabled."
925
+ msgstr ""
926
+
927
+ #: modules/stats.php:345
928
+ msgid "View Site Stats without Javascript"
929
+ msgstr ""
930
+
931
+ #: modules/stats.php:517
932
+ msgid "Visit <a href=\"%s\">Site Stats</a> to see your stats."
933
+ msgstr ""
934
+
935
+ #: modules/stats.php:522
936
+ msgid "Admin bar"
937
+ msgstr ""
938
+
939
+ #: modules/stats.php:523
940
+ msgid "Put a chart showing 48 hours of views in the admin bar."
941
+ msgstr ""
942
+
943
+ #: modules/stats.php:524
944
+ msgid "Registered users"
945
+ msgstr ""
946
+
947
+ #: modules/stats.php:525
948
+ msgid "Count the page views of registered users who are logged in."
949
+ msgstr ""
950
+
951
+ #: modules/stats.php:526
952
+ msgid "Smiley"
953
+ msgstr ""
954
+
955
+ #: modules/sharedaddy/sharing-sources.php:279
956
+ msgid "Send to Email Address"
957
+ msgstr ""
958
+
959
+ #: modules/sharedaddy/sharing-sources.php:287
960
+ msgid "Your Name"
961
+ msgstr "إسمك"
962
+
963
+ #: modules/sharedaddy/sharing-sources.php:290
964
+ msgid "Your Email Address"
965
+ msgstr ""
966
+
967
+ #: modules/sharedaddy/sharing-sources.php:298
968
+ msgid "Send Email"
969
+ msgstr ""
970
+
971
+ #: modules/sharedaddy/sharing-sources.php:299
972
+ msgid "Cancel"
973
+ msgstr "إلغاء"
974
+
975
+ #: modules/sharedaddy/sharing-sources.php:302
976
+ msgid "Post was not sent - check your email addresses!"
977
+ msgstr ""
978
+
979
+ #: modules/sharedaddy/sharing-sources.php:306
980
+ msgid "Email check failed, please try again"
981
+ msgstr "فشل التأكد من البريد الإلكتروني، من فضلك أعد المحاولة"
982
+
983
+ #: modules/sharedaddy/sharing-sources.php:310
984
+ msgid "Sorry, your blog cannot share posts by email."
985
+ msgstr ""
986
+
987
+ #: modules/sharedaddy/sharing-sources.php:330 modules/widgets/twitter.php:22
988
+ msgid "Twitter"
989
+ msgstr "Twitter"
990
+
991
+ #: modules/sharedaddy/sharing-sources.php:376
992
+ msgctxt "share to"
993
+ msgid "Twitter"
994
+ msgstr ""
995
+
996
+ #: modules/sharedaddy/sharing-sources.php:376
997
+ msgid "Click to share on Twitter"
998
+ msgstr ""
999
+
1000
+ #: modules/sharedaddy/sharing-sources.php:451
1001
+ msgid "StumbleUpon"
1002
+ msgstr ""
1003
+
1004
+ #: modules/sharedaddy/sharing-sources.php:462
1005
+ msgctxt "share to"
1006
+ msgid "StumbleUpon"
1007
+ msgstr ""
1008
+
1009
+ #: modules/sharedaddy/sharing-sources.php:462
1010
+ msgid "Click to share on StumbleUpon"
1011
+ msgstr ""
1012
+
1013
+ #: modules/sharedaddy/sharing-sources.php:489
1014
+ #: modules/sharedaddy/sharing-sources.php:496
1015
+ msgid "Reddit"
1016
+ msgstr ""
1017
+
1018
+ #: modules/sharedaddy/sharing-sources.php:496
1019
+ msgid "Click to share on Reddit"
1020
+ msgstr ""
1021
+
1022
+ #: modules/sharedaddy/sharing-sources.php:523
1023
+ msgid "Digg"
1024
+ msgstr ""
1025
+
1026
+ #: modules/sharedaddy/sharing-sources.php:532
1027
+ #: modules/sharedaddy/sharing-sources.php:535
1028
+ msgid "Click to Digg this post"
1029
+ msgstr ""
1030
+
1031
+ #: modules/sharedaddy/sharing-sources.php:535
1032
+ msgctxt "share to"
1033
+ msgid "Digg"
1034
+ msgstr ""
1035
+
1036
+ #: modules/sharedaddy/sharing-sources.php:579
1037
+ msgid "LinkedIn"
1038
+ msgstr ""
1039
+
1040
+ #: modules/sharedaddy/sharing-sources.php:593
1041
+ msgctxt "share to"
1042
+ msgid "LinkedIn"
1043
+ msgstr ""
1044
+
1045
+ #: modules/sharedaddy/sharing-sources.php:593
1046
+ msgid "Click to share on LinkedIn"
1047
+ msgstr ""
1048
+
1049
+ #: modules/sharedaddy/sharing-sources.php:659
1050
+ msgid "Facebook"
1051
+ msgstr ""
1052
+
1053
+ #: modules/sharedaddy/sharing-sources.php:734
1054
+ msgctxt "share to"
1055
+ msgid "Facebook"
1056
+ msgstr ""
1057
+
1058
+ #: modules/sharedaddy/sharing-sources.php:734
1059
+ msgid "Share on Facebook"
1060
+ msgstr ""
1061
+
1062
+ #: modules/sharedaddy/sharing-sources.php:765
1063
+ msgid "Print"
1064
+ msgstr "اطبع"
1065
+
1066
+ #: modules/sharedaddy/sharing-sources.php:769
1067
+ msgctxt "share to"
1068
+ msgid "Print"
1069
+ msgstr ""
1070
+
1071
+ #: modules/sharedaddy/sharing-sources.php:769
1072
+ msgid "Click to print"
1073
+ msgstr ""
1074
+
1075
+ #: modules/sharedaddy/sharing-sources.php:785
1076
+ msgid "Press This"
1077
+ msgstr "انشر"
1078
+
1079
+ #: modules/sharedaddy/sharing-sources.php:813
1080
+ msgctxt "share to"
1081
+ msgid "Press This"
1082
+ msgstr ""
1083
+
1084
+ #: modules/sharedaddy/sharing-sources.php:813
1085
+ msgid "Click to Press This!"
1086
+ msgstr ""
1087
+
1088
+ #: modules/sharedaddy/sharing-sources.php:831
1089
+ msgid "Google +1"
1090
+ msgstr ""
1091
+
1092
+ #: modules/sharedaddy/sharing-sources.php:846
1093
+ msgctxt "share to"
1094
+ msgid "Google +1"
1095
+ msgstr ""
1096
+
1097
+ #: modules/sharedaddy/sharing-sources.php:846
1098
+ msgid "Click to share on Google+"
1099
+ msgstr ""
1100
+
1101
+ #: modules/sharedaddy/sharing-sources.php:935
1102
+ msgid "Click to share"
1103
+ msgstr "اضغط هنا لتنشرها"
1104
+
1105
+ #: modules/sharedaddy/sharing-sources.php:990
1106
+ msgid "URL"
1107
+ msgstr "الرابط"
1108
+
1109
+ #: modules/sharedaddy/sharing-sources.php:995
1110
+ msgid "Icon"
1111
+ msgstr ""
1112
+
1113
+ #: modules/sharedaddy/sharing-sources.php:1002
1114
+ msgid "Save"
1115
+ msgstr "حفظ"
1116
+
1117
+ #: modules/sharedaddy/sharing-sources.php:1003
1118
+ msgid "Remove Service"
1119
+ msgstr ""
1120
+
1121
+ #: modules/sharedaddy/sharing-sources.php:1082
1122
+ msgid "Tumblr"
1123
+ msgstr ""
1124
+
1125
+ #: modules/sharedaddy/sharing-sources.php:1093
1126
+ msgctxt "share to"
1127
+ msgid "Tumblr"
1128
+ msgstr ""
1129
+
1130
+ #: modules/sharedaddy/sharing-sources.php:1093
1131
+ msgid "Click to share on Tumblr"
1132
+ msgstr ""
1133
+
1134
+ #: modules/sharedaddy/sharing-sources.php:1129
1135
+ msgid "Pinterest"
1136
+ msgstr ""
1137
+
1138
+ #: modules/sharedaddy/sharing-sources.php:1159
1139
+ msgid "Pin It"
1140
+ msgstr ""
1141
+
1142
+ #: modules/sharedaddy/sharing-sources.php:1161
1143
+ msgctxt "share to"
1144
+ msgid "Pinterest"
1145
+ msgstr ""
1146
+
1147
+ #: modules/sharedaddy/sharing-sources.php:1161
1148
+ msgid "Click to share on Pinterest"
1149
+ msgstr ""
1150
+
1151
+ #: modules/sharedaddy/sharing.php:153
1152
+ msgid "Warning! Multibyte support missing!"
1153
+ msgstr ""
1154
+
1155
+ #: modules/sharedaddy/sharing.php:154
1156
+ msgid "This plugin will work without it, but multibyte support is used <a href=\"%s\">if available</a>. You may see minor problems with Tweets and other sharing services."
1157
+ msgstr ""
1158
+
1159
+ #: modules/sharedaddy/sharing.php:158
1160
+ msgid "Settings have been saved"
1161
+ msgstr ""
1162
+
1163
+ #: modules/sharedaddy/sharing.php:169
1164
+ msgid "Sharing Buttons"
1165
+ msgstr ""
1166
+
1167
+ #: modules/sharedaddy/sharing.php:170
1168
+ msgid "Add sharing buttons to your blog and allow your visitors to share posts with their friends."
1169
+ msgstr ""
1170
+
1171
+ #: modules/sharedaddy/sharing.php:176
1172
+ msgid "Available Services"
1173
+ msgstr ""
1174
+
1175
+ #: modules/sharedaddy/sharing.php:177
1176
+ msgid "Drag and drop the services you'd like to enable into the box below."
1177
+ msgstr ""
1178
+
1179
+ #: modules/sharedaddy/sharing.php:178
1180
+ msgid "Add a new service"
1181
+ msgstr ""
1182
+
1183
+ #: modules/sharedaddy/sharing.php:198
1184
+ msgid "Enabled Services"
1185
+ msgstr ""
1186
+
1187
+ #: modules/sharedaddy/sharing.php:201
1188
+ msgid "Services dragged here will appear individually."
1189
+ msgstr ""
1190
+
1191
+ #: modules/sharedaddy/sharing.php:204
1192
+ msgid "Drag and drop available services here."
1193
+ msgstr ""
1194
+
1195
+ #: modules/sharedaddy/sharing.php:215
1196
+ msgid "Services dragged here will be hidden behind a share button."
1197
+ msgstr ""
1198
+
1199
+ #: modules/sharedaddy/sharing.php:230
1200
+ msgid "Live Preview"
1201
+ msgstr ""
1202
+
1203
+ #: modules/sharedaddy/sharing.php:233
1204
+ msgid "Sharing is off. Add services above to enable."
1205
+ msgstr ""
1206
+
1207
+ #: modules/module-info.php:638
1208
+ msgid "When you write great content, all you really want is people to find it, right?"
1209
+ msgstr ""
1210
+
1211
+ #: modules/module-info.php:640
1212
+ msgid "With the Infinite Scroll module and a supported theme, that's exactly what happens. Instead of the old way of navigating down a page by scrolling and then clicking a link to get to the next page, waiting for a page refresh&mdash;the document model of the web&mdash;infinite scrolling pulls the next set of posts automatically into view when the reader approaches the bottom of the page, more like an application."
1213
+ msgstr ""
1214
+
1215
+ #: modules/module-info.php:643
1216
+ msgid "At this time, your theme, %s, doesn't support Infinite Scroll. Unlike other Jetpack modules, Infinite Scroll needs information from your theme to function properly."
1217
+ msgstr ""
1218
+
1219
+ #: modules/module-info.php:645
1220
+ msgid "Until your theme supports Infinite Scroll, you won't be able to activate this module."
1221
+ msgstr ""
1222
+
1223
+ #: modules/module-info.php:655
1224
+ msgid "There is an update available for your theme. You may wish to check if this update adds Infinite Scroll support by visiting the <a href=\"%s\">WordPress Updates</a> page."
1225
+ msgstr ""
1226
+
1227
+ #: modules/module-info.php:675 modules/module-info.php:678
1228
+ #: modules/post-by-email.php:89
1229
+ msgid "Post by Email"
1230
+ msgstr ""
1231
+
1232
+ #: modules/module-info.php:680
1233
+ msgid "Post by Email is a way of publishing posts on your blog by email. Any email client can be used to send the email, allowing you to publish quickly and easily from devices such as cell phones."
1234
+ msgstr ""
1235
+
1236
+ #: modules/module-info.php:684
1237
+ msgid "Manage your Post By Email address from your <a href=\"%s\">profile settings</a>."
1238
+ msgstr ""
1239
+
1240
+ #: modules/module-info.php:688
1241
+ msgid "More information on sending emails, attachments, and customizing your posts."
1242
+ msgstr ""
1243
+
1244
+ #: modules/module-info.php:708
1245
+ msgid "Photon"
1246
+ msgstr ""
1247
+
1248
+ #: modules/module-info.php:710
1249
+ msgid "Give your site a boost by loading images in post and posts' featured images from the WordPress.com content delivery network. We cache your images and serve them from our super-fast network, reducing the burden on your web host with the click of a button."
1250
+ msgstr ""
1251
+
1252
+ #: modules/post-by-email.php:92 modules/subscriptions.php:596
1253
+ msgid "Email Address"
1254
+ msgstr "عنوان البريد الإلكتروني"
1255
+
1256
+ #: modules/post-by-email.php:107
1257
+ msgid "Enable Post By Email"
1258
+ msgstr ""
1259
+
1260
+ #: modules/post-by-email.php:111 modules/shortcodes/videopress.php:926
1261
+ msgid "More information"
1262
+ msgstr ""
1263
+
1264
+ #: modules/post-by-email.php:114
1265
+ msgid "Regenerate Address"
1266
+ msgstr ""
1267
+
1268
+ #: modules/post-by-email.php:115
1269
+ msgid "Disable Post By Email"
1270
+ msgstr ""
1271
+
1272
+ #: modules/post-by-email.php:123
1273
+ msgid "To use Post By Email, you need to link your %s account to your WordPress.com account."
1274
+ msgstr ""
1275
+
1276
+ #: modules/post-by-email.php:126 modules/publicize/publicize-jetpack.php:58
1277
+ msgid "If you don't have a WordPress.com account yet, you can sign up for free in just a few seconds."
1278
+ msgstr ""
1279
+
1280
+ #: modules/post-by-email.php:167 modules/post-by-email.php:176
1281
+ msgid "Unable to create your Post By Email address. Please try again later."
1282
+ msgstr ""
1283
+
1284
+ #: modules/post-by-email.php:195 modules/post-by-email.php:204
1285
+ msgid "Unable to regenerate your Post By Email address. Please try again later."
1286
+ msgstr ""
1287
+
1288
+ #: modules/post-by-email.php:223 modules/post-by-email.php:232
1289
+ msgid "Unable to disable your Post By Email address. Please try again later."
1290
+ msgstr ""
1291
+
1292
+ #: modules/publicize/publicize-jetpack.php:55
1293
+ msgid "To use Publicize, you'll need to link your %s account to your WordPress.com account using the button to the right."
1294
+ msgstr ""
1295
+
1296
+ #: modules/publicize/publicize-jetpack.php:165
1297
+ msgid "There was a problem connecting to %s to create an authorized connection. Please try again in a moment."
1298
+ msgstr ""
1299
+
1300
+ #: modules/publicize/publicize-jetpack.php:167
1301
+ msgid "There was a problem connecting with Publicize. Please try again in a moment."
1302
+ msgstr ""
1303
+
1304
+ #: modules/publicize/publicize-jetpack.php:313
1305
+ #: modules/publicize/publicize-jetpack.php:329
1306
+ #: modules/publicize/publicize-jetpack.php:453
1307
+ msgid "Publicize to my %s:"
1308
+ msgstr ""
1309
+
1310
+ #: modules/publicize/publicize-jetpack.php:314
1311
+ msgid "Facebook Wall"
1312
+ msgstr ""
1313
+
1314
+ #: modules/publicize/publicize-jetpack.php:330
1315
+ msgid "Facebook Page"
1316
+ msgstr ""
1317
+
1318
+ #: modules/publicize/publicize-jetpack.php:361
1319
+ #: modules/publicize/publicize-jetpack.php:473 modules/publicize/ui.php:214
1320
+ msgid "OK"
1321
+ msgstr "موافق"
1322
+
1323
+ #: modules/publicize/publicize-jetpack.php:454
1324
+ msgid "Tumblr blog"
1325
+ msgstr ""
1326
+
1327
+ #: modules/publicize/ui.php:35 modules/publicize/ui.php:45
1328
+ #: modules/sharedaddy/sharing.php:57 modules/sharedaddy/sharing.php:163
1329
+ msgid "Sharing Settings"
1330
+ msgstr "إعدادات أزار المشاركة"
1331
+
1332
+ #: modules/publicize/ui.php:76
1333
+ msgid "You have successfully connected your blog with your %s account."
1334
+ msgstr ""
1335
+
1336
+ #: modules/publicize/ui.php:91
1337
+ msgid "Connect your blog to popular social networking sites and automatically share new posts with your friends."
1338
+ msgstr ""
1339
+
1340
+ #: modules/publicize/ui.php:92
1341
+ msgid "You can make a connection for just yourself or for all users on your blog. Shared connections are marked with the (Shared) text."
1342
+ msgstr ""
1343
+
1344
+ #: modules/publicize/ui.php:153
1345
+ msgid "Shared"
1346
+ msgstr ""
1347
+
1348
+ #: modules/publicize/ui.php:156 modules/publicize/ui.php:160
1349
+ msgid "Disconnect"
1350
+ msgstr ""
1351
+
1352
+ #: modules/publicize/ui.php:169
1353
+ msgid "Add new %s connection."
1354
+ msgstr ""
1355
+
1356
+ #: modules/publicize/ui.php:185
1357
+ msgid "Make this connection available to all users of this blog?"
1358
+ msgstr ""
1359
+
1360
+ #: modules/publicize/ui.php:193
1361
+ msgid "There was a problem connecting to %s. Please disconnect and try again."
1362
+ msgstr ""
1363
+
1364
+ #: modules/publicize/ui.php:383
1365
+ msgid "Publicize:"
1366
+ msgstr ""
1367
+
1368
+ #: modules/publicize/ui.php:429
1369
+ msgctxt "Service: Account connected as"
1370
+ msgid "%1$s: %2$s"
1371
+ msgstr ""
1372
+
1373
+ #: modules/publicize/ui.php:464
1374
+ msgid "Custom Message:"
1375
+ msgstr ""
1376
+
1377
+ #: modules/publicize/ui.php:469 modules/publicize/ui.php:498
1378
+ #: modules/publicize/ui.php:500
1379
+ msgid "Hide"
1380
+ msgstr "إخفاء "
1381
+
1382
+ #: modules/publicize/ui.php:478
1383
+ msgid "Not Connected"
1384
+ msgstr ""
1385
+
1386
+ #: modules/publicize/ui.php:485
1387
+ msgid "Connect to"
1388
+ msgstr ""
1389
+
1390
+ #: modules/publicize/ui.php:490
1391
+ msgid "Connect and share your posts on %s"
1392
+ msgstr ""
1393
+
1394
+ #: modules/publicize/ui.php:513
1395
+ msgid "Show"
1396
+ msgstr "عرض"
1397
+
1398
+ #: modules/publicize.php:87
1399
+ msgctxt "word count: words or characters?"
1400
+ msgid "words"
1401
+ msgstr ""
1402
+
1403
+ #: modules/sharedaddy/sharedaddy.php:18
1404
+ msgid "Shared Post"
1405
+ msgstr ""
1406
+
1407
+ #: modules/sharedaddy/sharedaddy.php:35
1408
+ msgid "Show sharing buttons."
1409
+ msgstr ""
1410
+
1411
+ #: modules/sharedaddy/sharedaddy.php:112
1412
+ msgid "Disable CSS and JS"
1413
+ msgstr ""
1414
+
1415
+ #: modules/sharedaddy/sharedaddy.php:114
1416
+ msgid "Advanced. If this option is checked, you must include these files in your theme manually for the sharing links to work."
1417
+ msgstr ""
1418
+
1419
+ #: modules/sharedaddy/sharing-service.php:12
1420
+ msgid "Share this:"
1421
+ msgstr ""
1422
+
1423
+ #: modules/sharedaddy/sharing-service.php:523
1424
+ #: modules/sharedaddy/sharing.php:245 modules/sharedaddy/sharing.php:278
1425
+ msgid "More"
1426
+ msgstr ""
1427
+
1428
+ #: modules/sharedaddy/sharing-service.php:525
1429
+ msgid "Share"
1430
+ msgstr ""
1431
+
1432
+ #: modules/sharedaddy/sharing-sources.php:242
1433
+ msgid "This post has been shared!"
1434
+ msgstr ""
1435
+
1436
+ #: modules/sharedaddy/sharing-sources.php:243
1437
+ msgid "You have shared this post with %s"
1438
+ msgstr ""
1439
+
1440
+ #: modules/sharedaddy/sharing-sources.php:244
1441
+ msgid "Close"
1442
+ msgstr "إغلاق"
1443
+
1444
+ #: modules/sharedaddy/sharing-sources.php:266
1445
+ msgctxt "share to"
1446
+ msgid "Email"
1447
+ msgstr ""
1448
+
1449
+ #: modules/sharedaddy/sharing-sources.php:266
1450
+ msgid "Click to email this to a friend"
1451
+ msgstr ""
1452
+
1453
+ #: modules/module-info.php:315 modules/module-info.php:318
1454
+ #: modules/module-info.php:339 modules/publicize/ui.php:35
1455
+ #: modules/sharedaddy/sharedaddy.php:25 modules/sharedaddy/sharing.php:57
1456
+ msgid "Sharing"
1457
+ msgstr ""
1458
+
1459
+ #: modules/module-info.php:319
1460
+ msgid "Share your posts with Twitter, Facebook, and a host of other services. You can configure services to appear as icons, text, or both. Some services have additional options to display smart buttons, such as Twitter, which will update the number of times the post has been shared."
1461
+ msgstr ""
1462
+
1463
+ #: modules/module-info.php:323
1464
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, Print, and Email."
1465
+ msgstr ""
1466
+
1467
+ #: modules/module-info.php:325
1468
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, Print, and Email."
1469
+ msgstr ""
1470
+
1471
+ #: modules/module-info.php:329
1472
+ msgid "Additionally you can define your own custom services."
1473
+ msgstr ""
1474
+
1475
+ #: modules/module-info.php:344
1476
+ msgid "To configure your sharing settings, go to the Settings &rarr; <a href=\"%s\">Sharing</a> menu."
1477
+ msgstr ""
1478
+
1479
+ #: modules/module-info.php:345
1480
+ msgid "Drag and drop sharing services into the enabled section to have them show up on your site, and drag them into the hidden section to have them hidden behind a button."
1481
+ msgstr ""
1482
+
1483
+ #: modules/module-info.php:351
1484
+ msgid "Full details can be found on the <a href=\"%s\">Sharing support page</a>. This video also gives a swish run-down of how to use the Sharing feature. Watch it in HD for extra snazz!"
1485
+ msgstr ""
1486
+
1487
+ #: modules/module-info.php:366 modules/module-info.php:370
1488
+ msgid "Spelling and Grammar"
1489
+ msgstr ""
1490
+
1491
+ #: modules/module-info.php:372
1492
+ msgid "The <a href='%s'>After&nbsp;the&nbsp;Deadline</a> Proofreading service improves your writing by using artificial intelligence to find your errors and offer smart suggestions."
1493
+ msgstr ""
1494
+
1495
+ #: modules/module-info.php:373
1496
+ msgid "After the Deadline provides a number of <a href=\"%s\">customization options</a>, which you can edit in your profile."
1497
+ msgstr ""
1498
+
1499
+ #: modules/module-info.php:387 modules/module-info.php:401
1500
+ msgid "Widgets Screenshot"
1501
+ msgstr ""
1502
+
1503
+ #: modules/module-info.php:390 modules/module-info.php:404
1504
+ msgid "Extra Sidebar Widgets"
1505
+ msgstr ""
1506
+
1507
+ #: modules/module-info.php:392
1508
+ msgid "The RSS Links Widget "
1509
+ msgstr ""
1510
+
1511
+ #: modules/module-info.php:392
1512
+ msgid "allows you to add links to your blog&#8217;s post and comment RSS feeds in your sidebar. This makes it easy for your readers to stay updated when you post new content or receive new comments."
1513
+ msgstr ""
1514
+
1515
+ #: modules/module-info.php:393
1516
+ msgid "The Twitter Widget "
1517
+ msgstr ""
1518
+
1519
+ #: modules/module-info.php:393
1520
+ msgid "shows your latest tweets within a sidebar on your theme. It&#8217;s an easy way to add more activity to your site. There are also a number of customization options."
1521
+ msgstr ""
1522
+
1523
+ #: modules/module-info.php:393
1524
+ msgid "The Facebook Like Box Widget "
1525
+ msgstr ""
1526
+
1527
+ #: modules/module-info.php:393
1528
+ msgid "shows your Facebook Like Box within a sidebar on your theme. It&#8217;s a great way to let your readers show their support."
1529
+ msgstr ""
1530
+
1531
+ #: modules/module-info.php:393
1532
+ msgid "The Image Widget "
1533
+ msgstr ""
1534
+
1535
+ #: modules/module-info.php:393
1536
+ msgid "allows you to easily add images to widget areas in your theme. It&#8217;s an easy way to add more visual interest to your site."
1537
+ msgstr ""
1538
+
1539
+ #: modules/module-info.php:406
1540
+ msgid "The RSS Links Widget"
1541
+ msgstr ""
1542
+
1543
+ #: modules/module-info.php:406
1544
+ msgid "lets you easily add post and comment RSS feeds to a sidebar on your theme."
1545
+ msgstr ""
1546
+
1547
+ #: modules/module-info.php:407
1548
+ msgid "The Twitter Widget"
1549
+ msgstr ""
1550
+
1551
+ #: modules/module-info.php:407
1552
+ msgid "shows your latest tweets within a sidebar on your theme."
1553
+ msgstr ""
1554
+
1555
+ #: modules/module-info.php:408
1556
+ msgid "The Facebook Like Box Widget"
1557
+ msgstr ""
1558
+
1559
+ #: modules/module-info.php:408
1560
+ msgid "shows your Facebook Like Box within a sidebar on your theme."
1561
+ msgstr ""
1562
+
1563
+ #: modules/module-info.php:409
1564
+ msgid "The Image Widget"
1565
+ msgstr ""
1566
+
1567
+ #: modules/module-info.php:409
1568
+ msgid "lets you easily add images to a sidebar on your theme."
1569
+ msgstr ""
1570
+
1571
+ #: modules/module-info.php:411
1572
+ msgid "Each of these widgets has a number of customization options."
1573
+ msgstr ""
1574
+
1575
+ #: modules/module-info.php:411
1576
+ msgid "To use the widgets, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag them into one of your sidebars and configure away."
1577
+ msgstr ""
1578
+
1579
+ #: modules/module-info.php:424
1580
+ msgid "Subsriptions Screenshot"
1581
+ msgstr ""
1582
+
1583
+ #: modules/module-info.php:427
1584
+ msgid "Subscriptions"
1585
+ msgstr "اشتراكات"
1586
+
1587
+ #: modules/module-info.php:429
1588
+ msgid "Easily allow any visitor to subscribe to all of your posts via email through a widget in your blog&#8217;s sidebar. Every time you publish a post, WordPress.com will send a notification to all your subscribers."
1589
+ msgstr ""
1590
+
1591
+ #: modules/module-info.php:430
1592
+ msgid "When leaving comments, your visitors can also subscribe to a post&#8217;s comments to keep up with the conversation."
1593
+ msgstr ""
1594
+
1595
+ #: modules/module-info.php:435
1596
+ msgid "To use the Subscriptions widget, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag the widget labeled &#8220;Blog Subscriptions (Jetpack)&#8221; into one of your sidebars and configure away."
1597
+ msgstr ""
1598
+
1599
+ #: modules/module-info.php:436
1600
+ msgid "You can also make changes to your Subscription settings at the bottom of the <a href=\"%s\">Discussion Settings</a> page."
1601
+ msgstr ""
1602
+
1603
+ #: modules/module-info.php:449
1604
+ msgid "Enhanced Distribution"
1605
+ msgstr ""
1606
+
1607
+ #: modules/module-info.php:451
1608
+ msgid "Jetpack will automatically take the great published content from your blog or website and share it instantly with third party services like search engines, increasing your reach and traffic."
1609
+ msgstr ""
1610
+
1611
+ #: modules/module-info.php:466
1612
+ msgid "JSON API"
1613
+ msgstr ""
1614
+
1615
+ #: modules/module-info.php:468
1616
+ msgid "Jetpack will allow you to authorize applications and services to securely connect to your blog and allow them to use your content in new ways and offer you new functionality."
1617
+ msgstr ""
1618
+
1619
+ #: modules/module-info.php:470
1620
+ msgid "Developers can use WordPress.com's <a href='http://developer.wordpress.com/docs/oauth2/'>OAuth2</a> authentication system and <a href='http://developer.wordpress.com/docs/api/'>WordPress.com REST API</a> to manage and access your site's content."
1621
+ msgstr ""
1622
+
1623
+ #: modules/module-info.php:498
1624
+ msgid "A contact form is a great way to offer your readers the ability to get in touch, without giving out your personal email address."
1625
+ msgstr ""
1626
+
1627
+ #: modules/module-info.php:501
1628
+ msgid "Each contact form can easily be customized to fit your needs. When a user submits your contact form, the feedback will be filtered through <a href=\"http://akismet.com/\">Akismet</a> (if it is active on your site) to make sure it’s not spam. Any legitimate feedback will then be emailed to you, and added to your feedback management area."
1629
+ msgstr ""
1630
+
1631
+ #: modules/module-info.php:518
1632
+ msgid "Jetpack Comments Screenshot"
1633
+ msgstr ""
1634
+
1635
+ #: modules/module-info.php:523
1636
+ msgid "Jetpack Comments enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site."
1637
+ msgstr ""
1638
+
1639
+ #: modules/module-info.php:528
1640
+ msgid "Jetpack tries to match your site's color scheme automatically, but you can make manual adjustments at the bottom of the <a href='%s'>Discussion Settings</a> page."
1641
+ msgstr ""
1642
+
1643
+ #: modules/module-info.php:549
1644
+ msgid "Gallery Carousel Screenshot"
1645
+ msgstr ""
1646
+
1647
+ #: modules/module-info.php:552
1648
+ msgid "Carousel"
1649
+ msgstr ""
1650
+
1651
+ #: modules/module-info.php:554
1652
+ msgid "With Carousel active, any standard WordPress galleries you have embedded in posts or pages will launch a gorgeous full-screen photo browsing experience with comments and EXIF metadata."
1653
+ msgstr ""
1654
+
1655
+ #: modules/module-info.php:567 modules/module-info.php:570
1656
+ msgid "Custom CSS"
1657
+ msgstr ""
1658
+
1659
+ #: modules/module-info.php:571
1660
+ msgid "The Custom CSS editor gives you the ability to add to or replace your theme's CSS, all while supplying syntax coloring, auto-indentation, and immediate feedback on the validity of the CSS you're writing."
1661
+ msgstr ""
1662
+
1663
+ #: modules/module-info.php:572
1664
+ msgid "To use the CSS editor, go to Appearance &#8594; <a href=\"%s\">Edit CSS</a>."
1665
+ msgstr ""
1666
+
1667
+ #: modules/module-info.php:589 modules/module-info.php:592
1668
+ msgid "Mobile Theme"
1669
+ msgstr ""
1670
+
1671
+ #: modules/module-info.php:593
1672
+ msgid "There's a good chance that visitors to your site will be using a smartphone, and it's important to provide them with a great reading experience while on the small screen."
1673
+ msgstr ""
1674
+
1675
+ #: modules/module-info.php:594
1676
+ msgid "Jetpack's mobile theme is optimized for small screens. It uses the header image, background, and widgets from your current theme for a great custom look. Post format support is included, so your photos and galleries will look fantastic on a smartphone."
1677
+ msgstr ""
1678
+
1679
+ #: modules/module-info.php:595
1680
+ msgid "Visitors on iPhone, Android, Windows Phone, and other mobile devices will automatically see the mobile theme, with the option to view the full site. You can enable or disable the mobile theme by clicking the \"Activate\" or \"Deactive\" button above."
1681
+ msgstr ""
1682
+
1683
+ #: modules/module-info.php:611 modules/module-info.php:614
1684
+ msgid "Mobile Push Notifications"
1685
+ msgstr ""
1686
+
1687
+ #: modules/module-info.php:616
1688
+ msgid "If you have your blog added to the <a href=\"http://ios.wordpress.org/\">WordPress for iOS app</a>, you’ll now be able to opt in to receive push notifications of new comments, which makes it easier than ever to keep up with your readers and moderate comments on the go."
1689
+ msgstr ""
1690
+
1691
+ #: modules/module-info.php:635
1692
+ msgid "Infinite Scroll"
1693
+ msgstr ""
1694
+
1695
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:70
1696
+ msgid "Your comment is awaiting moderation."
1697
+ msgstr "تعليقك بأنتظار الموافقة بالنشر."
1698
+
1699
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:79
1700
+ msgid "Reply <span>&darr;</span>"
1701
+ msgstr ""
1702
+
1703
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:93
1704
+ msgid "<span class=\"entry-date\"><a href=\"%1$s\" title=\"%2$s\" rel=\"bookmark\"><time datetime=\"%3$s\" pubdate>%4$s</time></a></span>"
1705
+ msgstr ""
1706
+
1707
+ #: modules/minileven/theme/pub/minileven/index.php:23
1708
+ msgid "Daily Archives: %s"
1709
+ msgstr "الأرشيف اليومي : %s"
1710
+
1711
+ #: modules/minileven/theme/pub/minileven/index.php:25
1712
+ msgid "Monthly Archives: %s"
1713
+ msgstr "الأرشيف الشهري: %s"
1714
+
1715
+ #: modules/minileven/theme/pub/minileven/index.php:27
1716
+ msgid "Yearly Archives: %s"
1717
+ msgstr "الأرشيف السنوي: %s"
1718
+
1719
+ #: modules/minileven/theme/pub/minileven/index.php:29
1720
+ msgid "Posted in %s"
1721
+ msgstr "أرسلت فى %s "
1722
+
1723
+ #: modules/minileven/theme/pub/minileven/index.php:31
1724
+ msgid "Tagged with %s"
1725
+ msgstr ""
1726
+
1727
+ #: modules/minileven/theme/pub/minileven/index.php:33
1728
+ msgid "Posted by"
1729
+ msgstr ""
1730
+
1731
+ #: modules/minileven/theme/pub/minileven/index.php:35
1732
+ msgid "Blog Archives"
1733
+ msgstr "أرشيف المدونة"
1734
+
1735
+ #: modules/minileven/theme/pub/minileven/index.php:43
1736
+ msgid "Search Results for: %s"
1737
+ msgstr ""
1738
+
1739
+ #: modules/minileven/theme/pub/minileven/index.php:57
1740
+ msgid "Nothing Found"
1741
+ msgstr "لم يتم العثور على نتائج"
1742
+
1743
+ #: modules/minileven/theme/pub/minileven/index.php:61
1744
+ msgid "Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post."
1745
+ msgstr ""
1746
+
1747
+ #: modules/minileven/theme/pub/minileven/searchform.php:9
1748
+ #: modules/minileven/theme/pub/minileven/searchform.php:10
1749
+ #: modules/minileven/theme/pub/minileven/searchform.php:11
1750
+ msgid "Search"
1751
+ msgstr "بحث"
1752
+
1753
+ #: modules/minileven.php:48
1754
+ msgid "Excerpts"
1755
+ msgstr ""
1756
+
1757
+ #: modules/minileven.php:52
1758
+ msgid "Enable excerpts on front page and on archive pages"
1759
+ msgstr ""
1760
+
1761
+ #: modules/minileven.php:57
1762
+ msgid "Show full posts on front page and on archive pages"
1763
+ msgstr ""
1764
+
1765
+ #: modules/minileven.php:62
1766
+ msgid "Mobile App Promos"
1767
+ msgstr ""
1768
+
1769
+ #: modules/minileven.php:66
1770
+ msgid "Show a promo for the WordPress mobile apps in the footer of the mobile theme."
1771
+ msgstr ""
1772
+
1773
+ #: modules/minileven.php:75
1774
+ msgid "Mobile Apps"
1775
+ msgstr ""
1776
+
1777
+ #: modules/minileven.php:76
1778
+ msgid "Take WordPress with you."
1779
+ msgstr ""
1780
+
1781
+ #: modules/minileven.php:78
1782
+ msgid "We have apps for <a href=\"%s\">iOS (iPhone, iPad, iPod Touch)</a>, <a href=\"%s\">Android</a>, <a href=\"%s\">BlackBerry</a>, <a href=\"%s\">Windows Phone</a>, and <a href=\"%s\">more</a>!"
1783
+ msgstr ""
1784
+
1785
+ #: modules/module-info.php:22 modules/module-info.php:26
1786
+ msgid "VaultPress"
1787
+ msgstr ""
1788
+
1789
+ #: modules/module-info.php:28
1790
+ msgid "Your WordPress installation is currently being protected with the world&#8217;s best security, backup, and support."
1791
+ msgstr ""
1792
+
1793
+ #: modules/module-info.php:29
1794
+ msgctxt "Visit your _VaultPress_dashboard_."
1795
+ msgid "To check your backups, see any security alerts, or check your VaultPress Vitality, visit your %s."
1796
+ msgstr ""
1797
+
1798
+ #: modules/module-info.php:29
1799
+ msgid "VaultPress dashboard"
1800
+ msgstr ""
1801
+
1802
+ #: modules/module-info.php:31
1803
+ msgid "With a monthly subscription, the VaultPress plugin will backup your site&#8217;s content, themes, and plugins in real-time, as well as perform regular security scans for common threats and attacks."
1804
+ msgstr ""
1805
+
1806
+ #: modules/module-info.php:32
1807
+ msgctxt "View _Plans_&_Pricing_. (VaultPress)"
1808
+ msgid "View %s."
1809
+ msgstr ""
1810
+
1811
+ #: modules/module-info.php:32
1812
+ msgid "Plans & Pricing"
1813
+ msgstr ""
1814
+
1815
+ #: modules/module-info.php:53 modules/module-info.php:68
1816
+ msgid "Gravatar Hovercard"
1817
+ msgstr ""
1818
+
1819
+ #: modules/module-info.php:58 modules/module-info.php:73
1820
+ msgid "What&#8217;s a Hovercard?"
1821
+ msgstr ""
1822
+
1823
+ #: modules/module-info.php:59
1824
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services they use on the web like Twitter, Facebook, or LinkedIn."
1825
+ msgstr ""
1826
+
1827
+ #: modules/module-info.php:60
1828
+ msgid "Hovercards offer a great way to show your internet presence and help people find your own blog."
1829
+ msgstr ""
1830
+
1831
+ #: modules/module-info.php:74
1832
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services."
1833
+ msgstr ""
1834
+
1835
+ #: modules/module-info.php:75
1836
+ msgid "To see hovercards, look at any blog post on your blog that has comments. If the commenter has a hovercard associated with their gravatar, mouse over their image and the hovercard will appear. To turn hovercards off, click the Deactivate button above."
1837
+ msgstr ""
1838
+
1839
+ #: modules/module-info.php:90 modules/module-info.php:94
1840
+ #: modules/module-info.php:103 modules/module-info.php:107
1841
+ msgid "Shortcode Embeds"
1842
+ msgstr ""
1843
+
1844
+ #: modules/module-info.php:95 modules/module-info.php:108
1845
+ msgid "Shortcodes allow you to easily and safely embed media from other places in your site. With just one simple code, you can tell WordPress to embed YouTube, Flickr, and other media."
1846
+ msgstr ""
1847
+
1848
+ #: modules/module-info.php:109
1849
+ msgid "Enter a shortcode directly into the Post/Page editor to embed media. For specific instructions follow the links below."
1850
+ msgstr ""
1851
+
1852
+ #: modules/module-info.php:132
1853
+ msgid "Available shortcodes are: %l."
1854
+ msgstr ""
1855
+
1856
+ #: modules/module-info.php:147 modules/module-info.php:151
1857
+ #: modules/module-info.php:161 modules/module-info.php:165
1858
+ msgid "WP.me Shortlinks"
1859
+ msgstr ""
1860
+
1861
+ #: modules/module-info.php:152 modules/module-info.php:166
1862
+ msgid "Instead of typing or copy-pasting long URLs, you can now get a short and simple link to your posts and pages. This uses the super compact wp.me domain name, and gives you a unique URL you can use that will be safe and reliable."
1863
+ msgstr ""
1864
+
1865
+ #: modules/module-info.php:153
1866
+ msgid "It&#8217;s perfect for use on Twitter, Facebook, and cell phone text messages where every character counts."
1867
+ msgstr ""
1868
+
1869
+ #: modules/module-info.php:167
1870
+ msgid "To use shortlinks, go to any already published post (or publish something new!). A &#8220;Get Shortlink&#8221; button will be visible under the Post title. When you click it, a dialog box will appear with the shortlink and you can copy and paste to Twitter, Facebook or wherever your heart desires."
1871
+ msgstr ""
1872
+
1873
+ #: modules/module-info.php:182 modules/module-info.php:186
1874
+ #: modules/module-info.php:195 modules/module-info.php:199
1875
+ msgid "WordPress.com Stats"
1876
+ msgstr ""
1877
+
1878
+ #: modules/module-info.php:187 modules/module-info.php:200
1879
+ msgid "There are many plugins and services that provide statistics, but data can be overwhelming. WordPress.com Stats makes the most popular metrics easy to understand through a clear and attractive interface."
1880
+ msgstr ""
1881
+
1882
+ #: modules/module-info.php:201
1883
+ msgid "You can <a href=\"%s\">view your stats dashboard here</a>."
1884
+ msgstr ""
1885
+
1886
+ #: modules/module-info.php:215 modules/module-info.php:219
1887
+ #: modules/publicize/ui.php:89
1888
+ msgid "Publicize"
1889
+ msgstr ""
1890
+
1891
+ #: modules/module-info.php:220
1892
+ msgid "Publicize allows you to connect your blog to popular social networking sites and automatically share new posts with your friends.\t You can make a connection for just yourself or for all users on your blog."
1893
+ msgstr ""
1894
+
1895
+ #: modules/module-info.php:221
1896
+ msgid "Publicize allows you to share your posts on Facebook, Twitter, Tumblr, Yahoo!, and Linkedin."
1897
+ msgstr ""
1898
+
1899
+ #: modules/module-info.php:225
1900
+ msgid "Manage your <a href=\"%s\">Publicize settings</a>."
1901
+ msgstr ""
1902
+
1903
+ #: modules/module-info.php:229 modules/publicize/ui.php:102
1904
+ msgid "More information on using Publicize."
1905
+ msgstr ""
1906
+
1907
+ #: modules/module-info.php:245 modules/module-info.php:249
1908
+ #: modules/module-info.php:258 modules/module-info.php:262
1909
+ #: modules/notes.php:106
1910
+ msgid "Notifications"
1911
+ msgstr ""
1912
+
1913
+ #: modules/module-info.php:250 modules/module-info.php:263
1914
+ msgid "Keep up with the latest happenings on all your WordPress sites and interact with other WordPress.com users."
1915
+ msgstr ""
1916
+
1917
+ #: modules/module-info.php:264
1918
+ msgid "You can view your notifications in the Toolbar and <a href=\"%s\">on WordPress.com</a>."
1919
+ msgstr ""
1920
+
1921
+ #: modules/module-info.php:279 modules/module-info.php:294
1922
+ msgid "LaTeX"
1923
+ msgstr ""
1924
+
1925
+ #: modules/module-info.php:284 modules/module-info.php:299
1926
+ msgid "%s is a powerful markup language for writing complex mathematical equations, formulas, etc."
1927
+ msgstr ""
1928
+
1929
+ #: modules/module-info.php:285
1930
+ msgid "Jetpack combines the power of %s and the simplicity of WordPress to give you the ultimate in math blogging platforms."
1931
+ msgstr ""
1932
+
1933
+ #: modules/module-info.php:286
1934
+ msgid "Wow, that sounds nerdy."
1935
+ msgstr ""
1936
+
1937
+ #: modules/module-info.php:300
1938
+ msgid "Use <code>$latex your latex code here$</code> or <code>[latex]your latex code here[/latex]</code> to include %s in your posts and comments. There are <a href=\"%s\" target=\"_blank\">all sorts of options</a> available."
1939
+ msgstr ""
1940
+
1941
+ #: modules/custom-css/custom-css.php:865
1942
+ msgid "Preview"
1943
+ msgstr "معاينة"
1944
+
1945
+ #: modules/custom-css/custom-css.php:866
1946
+ msgid "Save Stylesheet &amp; Buy Upgrade"
1947
+ msgstr ""
1948
+
1949
+ #: modules/custom-css/custom-css.php:866
1950
+ msgid "Save Stylesheet"
1951
+ msgstr ""
1952
+
1953
+ #: modules/custom-css/custom-css.php:871
1954
+ msgid "CSS Settings"
1955
+ msgstr ""
1956
+
1957
+ #: modules/custom-css/custom-css.php:878
1958
+ msgid "CSS Revisions"
1959
+ msgstr "مراجعات CSS"
1960
+
1961
+ #: modules/custom-css/custom-css.php:916
1962
+ msgid "Add my CSS to <strong>%s&apos;s</strong> CSS stylesheet."
1963
+ msgstr ""
1964
+
1965
+ #: modules/custom-css/custom-css.php:917
1966
+ msgid "Don&apos;t use <strong>%s&apos;s</strong> CSS, and replace everything with my own CSS."
1967
+ msgstr ""
1968
+
1969
+ #: modules/custom-css/custom-css.php:919
1970
+ msgid "<a href=\"%s\">View the original stylesheet</a> for the %s theme. Use this as a reference and do not copy and paste all of it into the CSS Editor."
1971
+ msgstr ""
1972
+
1973
+ #: modules/gravatar-hovercards.php:44 modules/module-info.php:57
1974
+ #: modules/module-info.php:72
1975
+ msgid "Gravatar Hovercards"
1976
+ msgstr ""
1977
+
1978
+ #: modules/gravatar-hovercards.php:56
1979
+ msgid "View people's profiles when you mouse over their Gravatars"
1980
+ msgstr ""
1981
+
1982
+ #: modules/gravatar-hovercards.php:83
1983
+ msgid "Put your mouse over your Gravatar to check out your profile."
1984
+ msgstr ""
1985
+
1986
+ #: modules/infinite-scroll/infinity.php:238
1987
+ msgid "To infinity and beyond"
1988
+ msgstr ""
1989
+
1990
+ #: modules/infinite-scroll/infinity.php:247
1991
+ msgid "We've disabled this option for you since you have footer widgets in Appearance &rarr; Widgets, or because your theme does not support infinite scroll."
1992
+ msgstr ""
1993
+
1994
+ #: modules/infinite-scroll/infinity.php:253
1995
+ msgid "Scroll Infinitely"
1996
+ msgstr ""
1997
+
1998
+ #: modules/infinite-scroll/infinity.php:253
1999
+ msgid "(Shows %s posts on each load)"
2000
+ msgstr ""
2001
+
2002
+ #: modules/infinite-scroll/infinity.php:442
2003
+ msgid "Load more posts"
2004
+ msgstr ""
2005
+
2006
+ #: modules/infinite-scroll/infinity.php:443
2007
+ msgid "Scroll back to top"
2008
+ msgstr ""
2009
+
2010
+ #: modules/infinite-scroll/infinity.php:813
2011
+ msgid "Theme: %1$s."
2012
+ msgstr ""
2013
+
2014
+ #: modules/infinite-scroll.php:79
2015
+ msgid "Use Google Analytics with Infinite Scroll"
2016
+ msgstr ""
2017
+
2018
+ #: modules/infinite-scroll.php:90
2019
+ msgid "Track each Infinite Scroll post load as a page view in Google Analytics"
2020
+ msgstr ""
2021
+
2022
+ #: modules/infinite-scroll.php:90
2023
+ msgid "By checking the box above, each new set of posts loaded via Infinite Scroll will be recorded as a page view in Google Analytics."
2024
+ msgstr ""
2025
+
2026
+ #: modules/minileven/minileven.php:90
2027
+ msgid "View Mobile Site"
2028
+ msgstr ""
2029
+
2030
+ #: modules/minileven/minileven.php:254
2031
+ msgid "Apply this CSS to the Mobile Theme"
2032
+ msgstr ""
2033
+
2034
+ #: modules/minileven/theme/pub/minileven/comments.php:15
2035
+ msgid "This post is password protected. Enter the password to view any comments."
2036
+ msgstr "هذه التدوينة محمية بكلمة سر. أدخل كلمة السر لاستعراض التعليقات."
2037
+
2038
+ #: modules/minileven/theme/pub/minileven/comments.php:45
2039
+ msgid "Comment navigation"
2040
+ msgstr ""
2041
+
2042
+ #: modules/minileven/theme/pub/minileven/comments.php:46
2043
+ msgid "&larr; Older Comments"
2044
+ msgstr ""
2045
+
2046
+ #: modules/minileven/theme/pub/minileven/comments.php:47
2047
+ msgid "Newer Comments &rarr;"
2048
+ msgstr ""
2049
+
2050
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:14
2051
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:58
2052
+ #: modules/minileven/theme/pub/minileven/content.php:13
2053
+ #: modules/minileven/theme/pub/minileven/content.php:17
2054
+ msgid "Permalink to %s"
2055
+ msgstr "الوصلة الدائمة لـ%s"
2056
+
2057
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:15
2058
+ msgid "Gallery"
2059
+ msgstr "معرض"
2060
+
2061
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:21
2062
+ #: modules/minileven/theme/pub/minileven/content.php:36
2063
+ #: modules/minileven/theme/pub/minileven/inc/tweaks.php:26
2064
+ msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
2065
+ msgstr ""
2066
+
2067
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:57
2068
+ msgid "This gallery contains <a %1$s>%2$s photo</a>."
2069
+ msgid_plural "This gallery contains <a %1$s>%2$s photos</a>."
2070
+ msgstr[0] ""
2071
+ msgstr[1] ""
2072
+ msgstr[2] ""
2073
+ msgstr[3] ""
2074
+ msgstr[4] ""
2075
+ msgstr[5] ""
2076
+
2077
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:65
2078
+ #: modules/minileven/theme/pub/minileven/content.php:38
2079
+ #: modules/minileven/theme/pub/minileven/image.php:64
2080
+ #: modules/minileven/theme/pub/minileven/page.php:27
2081
+ msgid "Pages:"
2082
+ msgstr "الصفحات:"
2083
+
2084
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2085
+ #: modules/minileven/theme/pub/minileven/content.php:46
2086
+ #: modules/minileven/theme/pub/minileven/image.php:80
2087
+ msgid "<b>1</b> Reply"
2088
+ msgstr ""
2089
+
2090
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2091
+ #: modules/minileven/theme/pub/minileven/content.php:46
2092
+ #: modules/minileven/theme/pub/minileven/image.php:80
2093
+ msgid "<b>%</b> Replies"
2094
+ msgstr ""
2095
+
2096
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:74
2097
+ #: modules/minileven/theme/pub/minileven/content.php:48
2098
+ #: modules/minileven/theme/pub/minileven/image.php:82
2099
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:66
2100
+ #: modules/minileven/theme/pub/minileven/page.php:31
2101
+ #: modules/publicize/ui.php:511
2102
+ msgid "Edit"
2103
+ msgstr "تحرير"
2104
+
2105
+ #: modules/minileven/theme/pub/minileven/content.php:14
2106
+ msgid "Featured"
2107
+ msgstr ""
2108
+
2109
+ #: modules/minileven/theme/pub/minileven/content.php:23
2110
+ msgid "Posted by "
2111
+ msgstr ""
2112
+
2113
+ #: modules/minileven/theme/pub/minileven/content.php:25
2114
+ msgid "%s"
2115
+ msgstr "%s "
2116
+
2117
+ #: modules/minileven/theme/pub/minileven/content.php:46
2118
+ #: modules/minileven/theme/pub/minileven/image.php:80
2119
+ msgid "Leave a reply"
2120
+ msgstr ""
2121
+
2122
+ #: modules/minileven/theme/pub/minileven/content.php:54
2123
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:19
2124
+ msgid "Post navigation"
2125
+ msgstr ""
2126
+
2127
+ #: modules/minileven/theme/pub/minileven/content.php:55
2128
+ msgid "&laquo; Previous"
2129
+ msgstr "&laquo; الصفحة السابقة"
2130
+
2131
+ #: modules/minileven/theme/pub/minileven/content.php:56
2132
+ msgid "Next &raquo;"
2133
+ msgstr "التالي &raquo;"
2134
+
2135
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2136
+ msgid "http://wordpress.org/"
2137
+ msgstr ""
2138
+
2139
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2140
+ msgid "Semantic Personal Publishing Platform"
2141
+ msgstr ""
2142
+
2143
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2144
+ msgid "Proudly powered by %s"
2145
+ msgstr ""
2146
+
2147
+ #: modules/minileven/theme/pub/minileven/functions.php:54
2148
+ msgid "Primary Menu"
2149
+ msgstr ""
2150
+
2151
+ #: modules/minileven/theme/pub/minileven/functions.php:92
2152
+ msgid "Main Sidebar"
2153
+ msgstr ""
2154
+
2155
+ #: modules/minileven/theme/pub/minileven/header.php:32
2156
+ msgid "Page %s"
2157
+ msgstr ""
2158
+
2159
+ #: modules/minileven/theme/pub/minileven/header.php:50
2160
+ msgid "Menu"
2161
+ msgstr "القائمة"
2162
+
2163
+ #: modules/minileven/theme/pub/minileven/header.php:53
2164
+ msgid "Skip to primary content"
2165
+ msgstr ""
2166
+
2167
+ #: modules/minileven/theme/pub/minileven/image.php:73
2168
+ msgid "<span class=\"entry-gallery\">&laquo; <a href=\"%1$s\" title=\"Back to %2$s\" rel=\"gallery\">Back to Gallery</a></span>"
2169
+ msgstr ""
2170
+
2171
+ #: modules/minileven/theme/pub/minileven/image.php:87
2172
+ msgid "Image navigation"
2173
+ msgstr ""
2174
+
2175
+ #: modules/minileven/theme/pub/minileven/image.php:88
2176
+ msgid "&raquo; Previous"
2177
+ msgstr ""
2178
+
2179
+ #: modules/minileven/theme/pub/minileven/image.php:89
2180
+ msgid "Next &raquo; "
2181
+ msgstr ""
2182
+
2183
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:20
2184
+ msgid "<span class=\"meta-nav\">&laquo;</span> Older"
2185
+ msgstr ""
2186
+
2187
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:21
2188
+ msgid "Newer <span class=\"meta-nav\">&raquo;</span>"
2189
+ msgstr ""
2190
+
2191
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:38
2192
+ msgid "Pingback:"
2193
+ msgstr ""
2194
+
2195
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:55
2196
+ msgid "%1$s on %2$s"
2197
+ msgstr "%1$s على %2$s"
2198
+
2199
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:61
2200
+ msgid "%1$s at %2$s"
2201
+ msgstr "%1$s عند %2$s"
2202
+
2203
+ #: modules/contact-form/grunion-contact-form.php:1242
2204
+ msgid "%s is required"
2205
+ msgstr ""
2206
+
2207
+ #: modules/contact-form/grunion-contact-form.php:1289
2208
+ #: modules/contact-form/grunion-contact-form.php:1295
2209
+ #: modules/contact-form/grunion-contact-form.php:1300
2210
+ #: modules/contact-form/grunion-contact-form.php:1314
2211
+ #: modules/contact-form/grunion-contact-form.php:1320
2212
+ #: modules/contact-form/grunion-contact-form.php:1333
2213
+ msgid "(required)"
2214
+ msgstr "**مطلوب"
2215
+
2216
+ #: modules/contact-form/grunion-contact-form.php:1313
2217
+ msgid "Yes"
2218
+ msgstr "نعم"
2219
+
2220
+ #: modules/contact-form/grunion-form-view.php:8
2221
+ msgctxt "Label for HTML form \"Name\" field in contact form builder"
2222
+ msgid "Name"
2223
+ msgstr ""
2224
+
2225
+ #: modules/contact-form/grunion-form-view.php:9
2226
+ msgctxt "Label for HTML form \"Email\" field in contact form builder"
2227
+ msgid "Email"
2228
+ msgstr ""
2229
+
2230
+ #: modules/contact-form/grunion-form-view.php:10
2231
+ msgctxt "Label for HTML form \"URL/Website\" field in contact form builder"
2232
+ msgid "Website"
2233
+ msgstr ""
2234
+
2235
+ #: modules/contact-form/grunion-form-view.php:11
2236
+ msgctxt "Label for HTML form \"Comment/Response\" field in contact form builder"
2237
+ msgid "Comment"
2238
+ msgstr ""
2239
+
2240
+ #: modules/contact-form/grunion-form-view.php:12
2241
+ msgctxt "Default label for new HTML form field in contact form builder"
2242
+ msgid "New Field"
2243
+ msgstr ""
2244
+
2245
+ #: modules/contact-form/grunion-form-view.php:13
2246
+ msgctxt "Label for the set of options to be included in a user-created dropdown in contact form builder"
2247
+ msgid "Options"
2248
+ msgstr ""
2249
+
2250
+ #: modules/contact-form/grunion-form-view.php:14
2251
+ msgctxt "Label for an option to be included in a user-created dropdown in contact form builder"
2252
+ msgid "Option"
2253
+ msgstr ""
2254
+
2255
+ #: modules/contact-form/grunion-form-view.php:15
2256
+ msgctxt "Default label for the first option to be included in a user-created dropdown in contact form builder"
2257
+ msgid "First option"
2258
+ msgstr ""
2259
+
2260
+ #: modules/contact-form/grunion-form-view.php:16
2261
+ msgctxt "error message in contact form builder"
2262
+ msgid "Oops, there was a problem generating your form. You'll likely need to try again."
2263
+ msgstr ""
2264
+
2265
+ #: modules/contact-form/grunion-form-view.php:17
2266
+ msgid ""
2267
+ "Drag up or down\n"
2268
+ "to re-arrange"
2269
+ msgstr ""
2270
+
2271
+ #: modules/contact-form/grunion-form-view.php:18
2272
+ msgctxt "Label to drag HTML form fields around to change their order in contact form builder"
2273
+ msgid "move"
2274
+ msgstr ""
2275
+
2276
+ #: modules/contact-form/grunion-form-view.php:19
2277
+ msgctxt "Link to edit an HTML form field in contact form builder"
2278
+ msgid "edit"
2279
+ msgstr ""
2280
+
2281
+ #: modules/contact-form/grunion-form-view.php:20
2282
+ msgid "Saved successfully"
2283
+ msgstr ""
2284
+
2285
+ #: modules/contact-form/grunion-form-view.php:21
2286
+ msgctxt "This HTML form field is marked as required by the user in contact form builder"
2287
+ msgid "(required)"
2288
+ msgstr ""
2289
+
2290
+ #: modules/contact-form/grunion-form-view.php:22
2291
+ msgid "Are you sure you want to exit the form editor without saving? Any changes you have made will be lost."
2292
+ msgstr ""
2293
+
2294
+ #: modules/contact-form/grunion-form-view.php:30 modules/module-info.php:491
2295
+ #: modules/module-info.php:495
2296
+ msgid "Contact Form"
2297
+ msgstr ""
2298
+
2299
+ #: modules/contact-form/grunion-form-view.php:118
2300
+ msgid "Your new field was saved successfully"
2301
+ msgstr ""
2302
+
2303
+ #: modules/contact-form/grunion-form-view.php:120
2304
+ msgid "Form builder"
2305
+ msgstr ""
2306
+
2307
+ #: modules/contact-form/grunion-form-view.php:121
2308
+ msgid "Email notifications"
2309
+ msgstr ""
2310
+
2311
+ #: modules/contact-form/grunion-form-view.php:126
2312
+ msgid "How does this work?"
2313
+ msgstr ""
2314
+
2315
+ #: modules/contact-form/grunion-form-view.php:127
2316
+ msgid "By adding a contact form, your readers will be able to submit feedback to you. All feedback is automatically scanned for spam, and the legitimate feedback will be emailed to you."
2317
+ msgstr ""
2318
+
2319
+ #: modules/contact-form/grunion-form-view.php:128
2320
+ msgid "Can I add more fields?"
2321
+ msgstr ""
2322
+
2323
+ #: modules/contact-form/grunion-form-view.php:130
2324
+ msgctxt "%1$s = \"Click here\" in an HTML link"
2325
+ msgid "Sure thing. %1$s to add a new text box, textarea, radio, checkbox, or dropdown field."
2326
+ msgstr ""
2327
+
2328
+ #: modules/contact-form/grunion-form-view.php:131
2329
+ msgid "Click here"
2330
+ msgstr ""
2331
+
2332
+ #: modules/contact-form/grunion-form-view.php:133
2333
+ msgid "Can I view my feedback within WordPress?"
2334
+ msgstr ""
2335
+
2336
+ #: modules/contact-form/grunion-form-view.php:135
2337
+ msgctxt "%1$s = \"Feedbacks\" in an HTML link"
2338
+ msgid "Yep, you can read your feedback at any time by clicking the \"%1$s\" link in the admin menu."
2339
+ msgstr ""
2340
+
2341
+ #: modules/contact-form/grunion-form-view.php:141
2342
+ msgid "Do I need to fill this out?"
2343
+ msgstr ""
2344
+
2345
+ #: modules/contact-form/grunion-form-view.php:142
2346
+ msgid "Nope. However, if you&#8217;d like to modify where your feedback is sent, or the subject line you can. If you don&#8217;t make any changes here, feedback will be sent to the author of the page/post and the subject will be the name of this page/post."
2347
+ msgstr ""
2348
+
2349
+ #: modules/contact-form/grunion-form-view.php:146
2350
+ msgid "Edit this new field"
2351
+ msgstr ""
2352
+
2353
+ #: modules/contact-form/grunion-form-view.php:148
2354
+ #: modules/sharedaddy/sharing-sources.php:985
2355
+ msgid "Label"
2356
+ msgstr ""
2357
+
2358
+ #: modules/contact-form/grunion-form-view.php:149
2359
+ msgid "New field"
2360
+ msgstr ""
2361
+
2362
+ #: modules/contact-form/grunion-form-view.php:151
2363
+ msgid "Field type"
2364
+ msgstr ""
2365
+
2366
+ #: modules/contact-form/grunion-form-view.php:153
2367
+ msgid "Checkbox"
2368
+ msgstr ""
2369
+
2370
+ #: modules/contact-form/grunion-form-view.php:154
2371
+ msgid "Drop down"
2372
+ msgstr ""
2373
+
2374
+ #: modules/contact-form/grunion-form-view.php:157
2375
+ msgid "Radio"
2376
+ msgstr ""
2377
+
2378
+ #: modules/contact-form/grunion-form-view.php:158
2379
+ msgid "Text"
2380
+ msgstr "نص"
2381
+
2382
+ #: modules/contact-form/grunion-form-view.php:159
2383
+ msgid "Textarea"
2384
+ msgstr ""
2385
+
2386
+ #: modules/contact-form/grunion-form-view.php:166
2387
+ msgid "Options"
2388
+ msgstr "إعدادات"
2389
+
2390
+ #: modules/contact-form/grunion-form-view.php:167
2391
+ msgid "First option"
2392
+ msgstr ""
2393
+
2394
+ #: modules/contact-form/grunion-form-view.php:170
2395
+ msgid "Add another option"
2396
+ msgstr ""
2397
+
2398
+ #: modules/contact-form/grunion-form-view.php:177
2399
+ msgid "Required?"
2400
+ msgstr ""
2401
+
2402
+ #: modules/contact-form/grunion-form-view.php:182
2403
+ msgid "Save this field"
2404
+ msgstr ""
2405
+
2406
+ #: modules/contact-form/grunion-form-view.php:187
2407
+ msgid "Here&#8217;s what your form will look like"
2408
+ msgstr ""
2409
+
2410
+ #: modules/contact-form/grunion-form-view.php:192
2411
+ msgid "Add a new field"
2412
+ msgstr ""
2413
+
2414
+ #: modules/contact-form/grunion-form-view.php:194
2415
+ msgid "Add this form to my post"
2416
+ msgstr ""
2417
+
2418
+ #: modules/contact-form/grunion-form-view.php:197
2419
+ msgid "Email settings"
2420
+ msgstr ""
2421
+
2422
+ #: modules/contact-form/grunion-form-view.php:199
2423
+ msgid "Enter your email address"
2424
+ msgstr ""
2425
+
2426
+ #: modules/contact-form/grunion-form-view.php:202
2427
+ msgid "What should the subject line be?"
2428
+ msgstr ""
2429
+
2430
+ #: modules/contact-form/grunion-form-view.php:205
2431
+ msgid "Save and go back to form builder"
2432
+ msgstr ""
2433
+
2434
+ #: modules/custom-css/custom-css.php:486
2435
+ msgid ""
2436
+ "Welcome to Custom CSS!\n"
2437
+ "\n"
2438
+ "CSS (Cascading Style Sheets) is a kind of code that tells the browser how to render a web page. You may delete these comments and get started with your customizations.\n"
2439
+ "\n"
2440
+ "By default, your stylesheet will be loaded after the theme stylesheets, which means that your rules can take precedence and override the theme CSS rules. Just write here what you want to change, you don't need to copy all your theme's stylesheet content."
2441
+ msgstr ""
2442
+
2443
+ #: modules/custom-css/custom-css.php:595
2444
+ msgid "Preview: changes must be saved or they will be lost"
2445
+ msgstr "عرض: يجب حفظ التغييرات أو سيتم فقدها."
2446
+
2447
+ #: modules/custom-css/custom-css.php:623
2448
+ msgid "Edit CSS"
2449
+ msgstr "تعديل CSS"
2450
+
2451
+ #: modules/custom-css/custom-css.php:637
2452
+ msgid "CSS"
2453
+ msgstr ""
2454
+
2455
+ #: modules/custom-css/custom-css.php:676
2456
+ msgid "Custom CSS Stylesheet"
2457
+ msgstr ""
2458
+
2459
+ #: modules/custom-css/custom-css.php:836
2460
+ msgid "Stylesheet saved."
2461
+ msgstr ""
2462
+
2463
+ #: modules/custom-css/custom-css.php:844
2464
+ msgid "CSS Stylesheet Editor"
2465
+ msgstr ""
2466
+
2467
+ #: modules/custom-css/custom-css.php:845
2468
+ msgid ""
2469
+ "New to CSS? Start with a <a href=\"http://www.htmldog.com/guides/cssbeginner/\">beginner tutorial</a>. Questions?\n"
2470
+ "\tAsk in the <a href=\"http://wordpress.org/support/forum/themes-and-templates\">Themes and Templates forum</a>."
2471
+ msgstr ""
2472
+
2473
+ #: modules/carousel/jetpack-carousel.php:443
2474
+ msgid "White"
2475
+ msgstr ""
2476
+
2477
+ #: modules/carousel/jetpack-carousel.php:451
2478
+ msgid "Display images in full-size carousel slideshow."
2479
+ msgstr ""
2480
+
2481
+ #: modules/comments/admin.php:50 modules/comments/comments.php:178
2482
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2483
+ msgid "Leave a Reply"
2484
+ msgstr "اترك رد"
2485
+
2486
+ #: modules/comments/admin.php:54 modules/widgets/facebook-likebox.php:147
2487
+ msgid "Light"
2488
+ msgstr ""
2489
+
2490
+ #: modules/comments/admin.php:55 modules/widgets/facebook-likebox.php:148
2491
+ msgid "Dark"
2492
+ msgstr ""
2493
+
2494
+ #: modules/comments/admin.php:56
2495
+ msgid "Transparent"
2496
+ msgstr ""
2497
+
2498
+ #: modules/comments/admin.php:72 modules/module-info.php:521
2499
+ msgid "Jetpack Comments"
2500
+ msgstr ""
2501
+
2502
+ #: modules/comments/admin.php:81
2503
+ msgid "Greeting Text"
2504
+ msgstr ""
2505
+
2506
+ #: modules/comments/admin.php:97 modules/comments/admin.php:168
2507
+ #: modules/widgets/facebook-likebox.php:145
2508
+ msgid "Color Scheme"
2509
+ msgstr ""
2510
+
2511
+ #: modules/comments/admin.php:118
2512
+ msgid "Adjust your Jetpack Comments form with a clever greeting and color-scheme."
2513
+ msgstr ""
2514
+
2515
+ #: modules/comments/admin.php:134
2516
+ msgid "A few catchy words to motivate your readers to comment"
2517
+ msgstr ""
2518
+
2519
+ #: modules/comments/base.php:84
2520
+ msgid "Invalid request"
2521
+ msgstr ""
2522
+
2523
+ #: modules/comments/base.php:231
2524
+ msgid "Error: please fill the required fields (name, email)."
2525
+ msgstr "خطأ: الرجاء كتابة اسمك و بريد الإلكتروني."
2526
+
2527
+ #: modules/comments/base.php:233
2528
+ msgid "Error: please enter a valid email address."
2529
+ msgstr "خطأ: رجاءاً تأكد من البريد الإلكتروني."
2530
+
2531
+ #: modules/comments/comments.php:154
2532
+ msgid "You must <a href=\"%s\">log in</a> to post a comment."
2533
+ msgstr ""
2534
+
2535
+ #: modules/comments/comments.php:217
2536
+ msgid "Cancel Reply"
2537
+ msgstr ""
2538
+
2539
+ #: modules/comments/comments.php:351
2540
+ msgid "Invalid security token."
2541
+ msgstr ""
2542
+
2543
+ #: modules/comments/comments.php:412 modules/comments/comments.php:463
2544
+ msgid "Submitting Comment%s"
2545
+ msgstr ""
2546
+
2547
+ #: modules/contact-form/admin.php:27
2548
+ msgid "Add a custom form"
2549
+ msgstr ""
2550
+
2551
+ #: modules/contact-form/admin.php:129
2552
+ msgid "From"
2553
+ msgstr ""
2554
+
2555
+ #: modules/contact-form/admin.php:130
2556
+ #: modules/contact-form/grunion-contact-form.php:556
2557
+ msgid "Message"
2558
+ msgstr "رسالة"
2559
+
2560
+ #: modules/contact-form/admin.php:131
2561
+ msgid "Date"
2562
+ msgstr "التاريخ"
2563
+
2564
+ #: modules/contact-form/admin.php:201
2565
+ msgid "Restore this item from the Trash"
2566
+ msgstr ""
2567
+
2568
+ #: modules/contact-form/admin.php:203
2569
+ msgid "Restore"
2570
+ msgstr "استعادة"
2571
+
2572
+ #: modules/contact-form/admin.php:206 modules/contact-form/admin.php:305
2573
+ msgid "Delete this item permanently"
2574
+ msgstr ""
2575
+
2576
+ #: modules/contact-form/admin.php:208 modules/contact-form/admin.php:307
2577
+ msgid "Delete Permanently"
2578
+ msgstr ""
2579
+
2580
+ #: modules/contact-form/admin.php:239
2581
+ msgid "Mark this message as spam"
2582
+ msgstr ""
2583
+
2584
+ #: modules/contact-form/admin.php:246 modules/contact-form/admin.php:248
2585
+ #: modules/contact-form/admin.php:540
2586
+ msgid "Trash"
2587
+ msgstr "حذف"
2588
+
2589
+ #: modules/contact-form/admin.php:299
2590
+ msgid "Mark this message as NOT spam"
2591
+ msgstr ""
2592
+
2593
+ #: modules/contact-form/admin.php:338
2594
+ msgid "Y-m-d @ g:i:s A"
2595
+ msgstr ""
2596
+
2597
+ #: modules/contact-form/admin.php:462
2598
+ msgid "You are not allowed to manage this item."
2599
+ msgstr ""
2600
+
2601
+ #: modules/contact-form/admin.php:496
2602
+ msgid "You are not allowed to move this item out of the Trash."
2603
+ msgstr ""
2604
+
2605
+ #: modules/contact-form/admin.php:499
2606
+ msgid "Error in restoring from Trash."
2607
+ msgstr ""
2608
+
2609
+ #: modules/contact-form/admin.php:503
2610
+ msgid "You are not allowed to move this item to the Trash."
2611
+ msgstr ""
2612
+
2613
+ #: modules/contact-form/admin.php:506
2614
+ msgid "Error in moving to Trash."
2615
+ msgstr ""
2616
+
2617
+ #: modules/contact-form/admin.php:530
2618
+ msgid "Messages"
2619
+ msgstr ""
2620
+
2621
+ #: modules/contact-form/admin.php:553
2622
+ msgid "Spam"
2623
+ msgstr "سخام"
2624
+
2625
+ #: modules/contact-form/grunion-contact-form.php:73
2626
+ #: modules/contact-form/grunion-form-view.php:136
2627
+ msgid "Feedbacks"
2628
+ msgstr ""
2629
+
2630
+ #: modules/contact-form/grunion-contact-form.php:74
2631
+ msgid "Feedback"
2632
+ msgstr ""
2633
+
2634
+ #: modules/contact-form/grunion-contact-form.php:75
2635
+ msgid "Search Feedback"
2636
+ msgstr ""
2637
+
2638
+ #: modules/contact-form/grunion-contact-form.php:76
2639
+ #: modules/contact-form/grunion-contact-form.php:77
2640
+ msgid "No feedback found"
2641
+ msgstr ""
2642
+
2643
+ #: modules/contact-form/grunion-contact-form.php:94
2644
+ msgid "Spam <span class=\"count\">(%s)</span>"
2645
+ msgid_plural "Spam <span class=\"count\">(%s)</span>"
2646
+ msgstr[0] ""
2647
+ msgstr[1] ""
2648
+ msgstr[2] ""
2649
+ msgstr[3] ""
2650
+ msgstr[4] ""
2651
+ msgstr[5] ""
2652
+
2653
+ #: modules/contact-form/grunion-contact-form.php:514
2654
+ msgctxt "%1$s = blog name"
2655
+ msgid "%1$s Sidebar"
2656
+ msgstr ""
2657
+
2658
+ #: modules/contact-form/grunion-contact-form.php:521
2659
+ msgctxt "%1$s = blog name, %2$s = post title"
2660
+ msgid "%1$s %2$s"
2661
+ msgstr ""
2662
+
2663
+ #: modules/contact-form/grunion-contact-form.php:546
2664
+ #: modules/contact-form/grunion-form-view.php:156
2665
+ msgid "Name"
2666
+ msgstr "الاسم"
2667
+
2668
+ #: modules/contact-form/grunion-contact-form.php:547
2669
+ #: modules/contact-form/grunion-form-view.php:155
2670
+ #: modules/sharedaddy/sharing-sources.php:200
2671
+ msgid "Email"
2672
+ msgstr ""
2673
+
2674
+ #: modules/contact-form/grunion-contact-form.php:552
2675
+ msgid "Subject"
2676
+ msgstr ""
2677
+
2678
+ #: modules/contact-form/grunion-contact-form.php:633
2679
+ msgid "Error!"
2680
+ msgstr "خطأ!"
2681
+
2682
+ #: modules/contact-form/grunion-contact-form.php:647
2683
+ msgid "Message Sent"
2684
+ msgstr "تم إرسال الرسالة"
2685
+
2686
+ #: modules/contact-form/grunion-contact-form.php:648
2687
+ msgid "go back"
2688
+ msgstr ""
2689
+
2690
+ #: modules/contact-form/grunion-contact-form.php:683
2691
+ #: modules/contact-form/grunion-contact-form.php:699
2692
+ msgctxt "%1$s = form field label, %2$s = form field value"
2693
+ msgid "%1$s: %2$s"
2694
+ msgstr ""
2695
+
2696
+ #: modules/contact-form/grunion-contact-form.php:729
2697
+ msgid "Submit &#187;"
2698
+ msgstr "أرسل &#187; "
2699
+
2700
+ #: modules/contact-form/grunion-contact-form.php:971
2701
+ msgid "l F j, Y \\a\\t g:i a"
2702
+ msgstr ""
2703
+
2704
+ #: modules/contact-form/grunion-contact-form.php:991
2705
+ msgid "Time:"
2706
+ msgstr "الوقت:"
2707
+
2708
+ #: modules/contact-form/grunion-contact-form.php:992
2709
+ msgid "IP Address:"
2710
+ msgstr "عنوان الأيبي IP"
2711
+
2712
+ #: modules/contact-form/grunion-contact-form.php:993
2713
+ msgid "Contact Form URL:"
2714
+ msgstr ""
2715
+
2716
+ #: modules/contact-form/grunion-contact-form.php:999
2717
+ msgid "Sent by a verified %s user."
2718
+ msgstr ""
2719
+
2720
+ #: modules/contact-form/grunion-contact-form.php:1003
2721
+ msgid "Sent by an unverified visitor to your site."
2722
+ msgstr "أرسلت بواسطة زائر غير متأكد منه إلي موقعك"
2723
+
2724
+ #: modules/contact-form/grunion-contact-form.php:1236
2725
+ msgid "%s requires a valid email address"
2726
+ msgstr ""
2727
+
2728
+ #: modules/after-the-deadline/atd-l10n.php:34
2729
+ msgid ""
2730
+ "The proofreader has suggestions for this post. Are you sure you want to update it?\n"
2731
+ "\n"
2732
+ "Press OK to update your post, or Cancel to view the suggestions and edit your post."
2733
+ msgstr ""
2734
+
2735
+ #: modules/after-the-deadline/config-options.php:48
2736
+ msgid "Proofreading"
2737
+ msgstr ""
2738
+
2739
+ #: modules/after-the-deadline/config-options.php:50
2740
+ msgid "Automatically proofread content when:"
2741
+ msgstr ""
2742
+
2743
+ #: modules/after-the-deadline/config-options.php:53
2744
+ msgid "a post or page is first published"
2745
+ msgstr ""
2746
+
2747
+ #: modules/after-the-deadline/config-options.php:55
2748
+ msgid "a post or page is updated"
2749
+ msgstr ""
2750
+
2751
+ #: modules/after-the-deadline/config-options.php:58
2752
+ msgid "English Options"
2753
+ msgstr ""
2754
+
2755
+ #: modules/after-the-deadline/config-options.php:60
2756
+ msgid "Enable proofreading for the following grammar and style rules when writing posts and pages:"
2757
+ msgstr ""
2758
+
2759
+ #: modules/after-the-deadline/config-options.php:63
2760
+ msgid "Bias Language"
2761
+ msgstr ""
2762
+
2763
+ #: modules/after-the-deadline/config-options.php:65
2764
+ msgid "Clich&eacute;s"
2765
+ msgstr ""
2766
+
2767
+ #: modules/after-the-deadline/config-options.php:67
2768
+ msgid "Complex Phrases"
2769
+ msgstr ""
2770
+
2771
+ #: modules/after-the-deadline/config-options.php:69
2772
+ msgid "Diacritical Marks"
2773
+ msgstr ""
2774
+
2775
+ #: modules/after-the-deadline/config-options.php:71
2776
+ msgid "Double Negatives"
2777
+ msgstr ""
2778
+
2779
+ #: modules/after-the-deadline/config-options.php:73
2780
+ msgid "Hidden Verbs"
2781
+ msgstr "أفعال مخفية"
2782
+
2783
+ #: modules/after-the-deadline/config-options.php:75
2784
+ msgid "Jargon"
2785
+ msgstr ""
2786
+
2787
+ #: modules/after-the-deadline/config-options.php:77
2788
+ msgid "Passive Voice"
2789
+ msgstr ""
2790
+
2791
+ #: modules/after-the-deadline/config-options.php:79
2792
+ msgid "Phrases to Avoid"
2793
+ msgstr ""
2794
+
2795
+ #: modules/after-the-deadline/config-options.php:81
2796
+ msgid "Redundant Phrases"
2797
+ msgstr ""
2798
+
2799
+ #: modules/after-the-deadline/config-options.php:83
2800
+ msgid "<a href=\"%s\">Learn more</a> about these options."
2801
+ msgstr ""
2802
+
2803
+ #: modules/after-the-deadline/config-options.php:86
2804
+ msgid "Language"
2805
+ msgstr "اللغة"
2806
+
2807
+ #: modules/after-the-deadline/config-options.php:89
2808
+ msgctxt "%1$s = http://codex.wordpress.org/Installing_WordPress_in_Your_Language, %2$s = WPLANG"
2809
+ msgid "The proofreader supports English, French, German, Portuguese, and Spanish. Your <a href=\"%1$s\">%2$s</a> value is the default proofreading language."
2810
+ msgstr ""
2811
+
2812
+ #: modules/after-the-deadline/config-options.php:95
2813
+ msgid "Use automatically detected language to proofread posts and pages"
2814
+ msgstr ""
2815
+
2816
+ #: modules/after-the-deadline/config-unignore.php:126
2817
+ msgid "Ignored Phrases"
2818
+ msgstr ""
2819
+
2820
+ #: modules/after-the-deadline/config-unignore.php:128
2821
+ msgid "Identify words and phrases to ignore while proofreading your posts and pages:"
2822
+ msgstr ""
2823
+
2824
+ #: modules/after-the-deadline/config-unignore.php:130
2825
+ msgid "Add"
2826
+ msgstr "اضف"
2827
+
2828
+ #: modules/after-the-deadline/config-unignore.php:135
2829
+ msgid "Be sure to click \"Update Profile\" at the bottom of the screen to save your changes."
2830
+ msgstr ""
2831
+
2832
+ #: modules/carousel/jetpack-carousel.php:103
2833
+ msgid "Comment"
2834
+ msgstr ""
2835
+
2836
+ #: modules/carousel/jetpack-carousel.php:104
2837
+ msgid "Post Comment"
2838
+ msgstr "أضف تعليقاً"
2839
+
2840
+ #: modules/carousel/jetpack-carousel.php:105
2841
+ msgid "Loading Comments..."
2842
+ msgstr ""
2843
+
2844
+ #: modules/carousel/jetpack-carousel.php:106
2845
+ msgid "View full size <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
2846
+ msgstr ""
2847
+
2848
+ #: modules/carousel/jetpack-carousel.php:107
2849
+ msgid "Please be sure to submit some text with your comment."
2850
+ msgstr ""
2851
+
2852
+ #: modules/carousel/jetpack-carousel.php:108
2853
+ msgid "Please provide an email address to comment."
2854
+ msgstr ""
2855
+
2856
+ #: modules/carousel/jetpack-carousel.php:109
2857
+ msgid "Please provide your name to comment."
2858
+ msgstr ""
2859
+
2860
+ #: modules/carousel/jetpack-carousel.php:110
2861
+ msgid "Sorry, but there was an error posting your comment. Please try again later."
2862
+ msgstr ""
2863
+
2864
+ #: modules/carousel/jetpack-carousel.php:111
2865
+ msgid "Your comment was approved."
2866
+ msgstr ""
2867
+
2868
+ #: modules/carousel/jetpack-carousel.php:112
2869
+ msgid "Your comment is in moderation."
2870
+ msgstr ""
2871
+
2872
+ #: modules/carousel/jetpack-carousel.php:113
2873
+ msgid "Camera"
2874
+ msgstr ""
2875
+
2876
+ #: modules/carousel/jetpack-carousel.php:114
2877
+ msgid "Aperture"
2878
+ msgstr ""
2879
+
2880
+ #: modules/carousel/jetpack-carousel.php:115
2881
+ msgid "Shutter Speed"
2882
+ msgstr ""
2883
+
2884
+ #: modules/carousel/jetpack-carousel.php:116
2885
+ msgid "Focal Length"
2886
+ msgstr ""
2887
+
2888
+ #: modules/carousel/jetpack-carousel.php:123
2889
+ msgid "Commenting as %s"
2890
+ msgstr ""
2891
+
2892
+ #: modules/carousel/jetpack-carousel.php:126
2893
+ msgid "Email (Required)"
2894
+ msgstr ""
2895
+
2896
+ #: modules/carousel/jetpack-carousel.php:128
2897
+ msgid "Name (Required)"
2898
+ msgstr ""
2899
+
2900
+ #: modules/carousel/jetpack-carousel.php:130
2901
+ #: modules/contact-form/grunion-contact-form.php:548
2902
+ #: modules/contact-form/grunion-form-view.php:160
2903
+ msgid "Website"
2904
+ msgstr "الموقع"
2905
+
2906
+ #: modules/carousel/jetpack-carousel.php:246
2907
+ msgid "Missing attachment ID."
2908
+ msgstr ""
2909
+
2910
+ #: modules/carousel/jetpack-carousel.php:284
2911
+ msgid "Nonce verification failed."
2912
+ msgstr ""
2913
+
2914
+ #: modules/carousel/jetpack-carousel.php:291
2915
+ msgid "Missing target blog ID."
2916
+ msgstr ""
2917
+
2918
+ #: modules/carousel/jetpack-carousel.php:294
2919
+ msgid "Missing target post ID."
2920
+ msgstr ""
2921
+
2922
+ #: modules/carousel/jetpack-carousel.php:297
2923
+ msgid "No comment text was submitted."
2924
+ msgstr ""
2925
+
2926
+ #: modules/carousel/jetpack-carousel.php:309
2927
+ msgid "Comments on this post are closed."
2928
+ msgstr ""
2929
+
2930
+ #: modules/carousel/jetpack-carousel.php:319
2931
+ msgid "Sorry, but we could not authenticate your request."
2932
+ msgstr ""
2933
+
2934
+ #: modules/carousel/jetpack-carousel.php:327
2935
+ msgid "Please provide your name."
2936
+ msgstr ""
2937
+
2938
+ #: modules/carousel/jetpack-carousel.php:330
2939
+ msgid "Please provide an email address."
2940
+ msgstr ""
2941
+
2942
+ #: modules/carousel/jetpack-carousel.php:333
2943
+ msgid "Please provide a valid email address."
2944
+ msgstr ""
2945
+
2946
+ #: modules/carousel/jetpack-carousel.php:360
2947
+ msgid "Image Gallery Carousel"
2948
+ msgstr ""
2949
+
2950
+ #: modules/carousel/jetpack-carousel.php:363
2951
+ msgid "Enable carousel"
2952
+ msgstr ""
2953
+
2954
+ #: modules/carousel/jetpack-carousel.php:367
2955
+ msgid "Background color"
2956
+ msgstr ""
2957
+
2958
+ #: modules/carousel/jetpack-carousel.php:370
2959
+ msgid "Metadata"
2960
+ msgstr ""
2961
+
2962
+ #: modules/carousel/jetpack-carousel.php:427
2963
+ msgid "Show photo metadata (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) in carousel, when available."
2964
+ msgstr ""
2965
+
2966
+ #: modules/carousel/jetpack-carousel.php:435
2967
+ msgid "Show map of photo location in carousel, when available."
2968
+ msgstr ""
2969
+
2970
+ #: modules/carousel/jetpack-carousel.php:443
2971
+ msgid "Black"
2972
+ msgstr "اسود"
2973
+
2974
+ #: jetpack.php:2233
2975
+ msgid "User linked to WordPress.com"
2976
+ msgstr ""
2977
+
2978
+ #: jetpack.php:2233
2979
+ msgid "Unlink user from WordPress.com"
2980
+ msgstr ""
2981
+
2982
+ #: jetpack.php:2249
2983
+ msgid "Jetpack is network activated and notices can not be dismissed."
2984
+ msgstr ""
2985
+
2986
+ #: jetpack.php:2260
2987
+ msgid "Dismiss this notice."
2988
+ msgstr ""
2989
+
2990
+ #: jetpack.php:2265
2991
+ msgid "To enable all of the Jetpack features you&#8217;ll need to connect your website to WordPress.com using the button to the right. Once you&#8217;ve made the connection you&#8217;ll activate all the delightful features below."
2992
+ msgstr ""
2993
+
2994
+ #: jetpack.php:2280
2995
+ msgid "To enable all of the Jetpack features you&#8217;ll need to link your account here to your WordPress.com account using the button to the right."
2996
+ msgstr ""
2997
+
2998
+ #: jetpack.php:2284 modules/post-by-email.php:129
2999
+ #: modules/publicize/publicize-jetpack.php:62
3000
+ msgid "Link account with WordPress.com"
3001
+ msgstr ""
3002
+
3003
+ #: jetpack.php:2306
3004
+ msgid "Have feedback on Jetpack?"
3005
+ msgstr ""
3006
+
3007
+ #: jetpack.php:2308
3008
+ msgid "Answer a short survey to let us know how we&#8217;re doing and what to add in the future."
3009
+ msgstr ""
3010
+
3011
+ #: jetpack.php:2311
3012
+ msgid "Take Survey"
3013
+ msgstr ""
3014
+
3015
+ #: jetpack.php:2317
3016
+ msgid "Checking email updates status&hellip;"
3017
+ msgstr ""
3018
+
3019
+ #: jetpack.php:2323
3020
+ msgctxt "%s = Unsubscribe link"
3021
+ msgid "You are currently subscribed to email updates. %s"
3022
+ msgstr ""
3023
+
3024
+ #: jetpack.php:2324
3025
+ msgid "Unsubscribe"
3026
+ msgstr "إلغاء الاشتراك"
3027
+
3028
+ #: jetpack.php:2328
3029
+ msgctxt "%s = Subscribe link"
3030
+ msgid "Want to receive updates about Jetpack by email? %s"
3031
+ msgstr ""
3032
+
3033
+ #: jetpack.php:2329 modules/subscriptions.php:673
3034
+ msgid "Subscribe"
3035
+ msgstr "اشترك"
3036
+
3037
+ #: jetpack.php:2336
3038
+ msgid "You have been subscribed to receive email updates."
3039
+ msgstr ""
3040
+
3041
+ #: jetpack.php:2338
3042
+ msgid "You will no longer receive email updates about Jetpack."
3043
+ msgstr ""
3044
+
3045
+ #: jetpack.php:2351
3046
+ msgid "An <span>Automattic</span> Airline"
3047
+ msgstr ""
3048
+
3049
+ #: jetpack.php:2354
3050
+ msgid "Privacy Policy"
3051
+ msgstr ""
3052
+
3053
+ #: jetpack.php:2355
3054
+ msgid "Terms of Service"
3055
+ msgstr "شروط الخدمة"
3056
+
3057
+ #: jetpack.php:2357
3058
+ msgid "Debug"
3059
+ msgstr ""
3060
+
3061
+ #: jetpack.php:2359 modules/sharedaddy/sharedaddy.php:82
3062
+ msgid "Support"
3063
+ msgstr "الدعم الفني "
3064
+
3065
+ #: jetpack.php:2379
3066
+ msgid "This is sensitive information. Please do not post your BLOG_TOKEN or USER_TOKEN publicly; they are like passwords."
3067
+ msgstr ""
3068
+
3069
+ #: jetpack.php:2423
3070
+ msgid "Configure %s"
3071
+ msgstr ""
3072
+
3073
+ #: jetpack.php:2482
3074
+ msgid "Deactivate"
3075
+ msgstr "تعطيل"
3076
+
3077
+ #: jetpack.php:2492
3078
+ msgid "Activate"
3079
+ msgstr "تفعيل"
3080
+
3081
+ #: jetpack.php:2509
3082
+ msgid "Free"
3083
+ msgstr ""
3084
+
3085
+ #: jetpack.php:2509
3086
+ msgid "Purchase"
3087
+ msgstr ""
3088
+
3089
+ #: jetpack.php:2517
3090
+ msgid "New"
3091
+ msgstr "جديد"
3092
+
3093
+ #: jetpack.php:2520
3094
+ msgid "Updated"
3095
+ msgstr ""
3096
+
3097
+ #: jetpack.php:2548
3098
+ msgid "Configure"
3099
+ msgstr ""
3100
+
3101
+ #: jetpack.php:2582
3102
+ msgid "Coming soon&#8230;"
3103
+ msgstr ""
3104
+
3105
+ #: jetpack.php:2735 jetpack.php:2737 jetpack.php:2739 jetpack.php:2742
3106
+ #: jetpack.php:3673
3107
+ msgid "Error Details: %s"
3108
+ msgstr ""
3109
+
3110
+ #: jetpack.php:2898
3111
+ msgid "Jetpack Plugin Version"
3112
+ msgstr ""
3113
+
3114
+ #: jetpack.php:2904
3115
+ msgid "The Client ID/WP.com Blog ID of this site"
3116
+ msgstr ""
3117
+
3118
+ #: jetpack.php:3156
3119
+ msgid "You must connect your Jetpack plugin to WordPress.com to use this feature."
3120
+ msgstr ""
3121
+
3122
+ #: jetpack.php:3159
3123
+ msgid "Someone may be trying to trick you into giving them access to your site. Or it could be you just encountered a bug :). Either way, please close this window."
3124
+ msgstr ""
3125
+
3126
+ #: jetpack.php:3187
3127
+ msgid "The authorization process expired. Please go back and try again."
3128
+ msgstr ""
3129
+
3130
+ #: jetpack.php:3227
3131
+ msgid "%s wants to access your site&#8217;s data. Log in to authorize that access."
3132
+ msgstr ""
3133
+
3134
+ #: jetpack.php:3626
3135
+ msgid "An administrator for this blog must set up the Jetpack connection."
3136
+ msgstr ""
3137
+
3138
+ #: jetpack.php:3631
3139
+ msgid "You need to register your Jetpack before connecting it."
3140
+ msgstr ""
3141
+
3142
+ #: locales.php:29
3143
+ msgctxt "locales"
3144
+ msgid "%1$s/%2$s"
3145
+ msgstr ""
3146
+
3147
+ #: modules/after-the-deadline/atd-l10n.php:12
3148
+ msgid "Spelling"
3149
+ msgstr ""
3150
+
3151
+ #: modules/after-the-deadline/atd-l10n.php:13
3152
+ msgid "Repeated Word"
3153
+ msgstr ""
3154
+
3155
+ #: modules/after-the-deadline/atd-l10n.php:15
3156
+ msgid "No suggestions"
3157
+ msgstr "لا اقتراحات"
3158
+
3159
+ #: modules/after-the-deadline/atd-l10n.php:17
3160
+ msgid "Explain..."
3161
+ msgstr ""
3162
+
3163
+ #: modules/after-the-deadline/atd-l10n.php:18
3164
+ msgid "Ignore suggestion"
3165
+ msgstr ""
3166
+
3167
+ #: modules/after-the-deadline/atd-l10n.php:19
3168
+ msgid "Ignore always"
3169
+ msgstr ""
3170
+
3171
+ #: modules/after-the-deadline/atd-l10n.php:20
3172
+ msgid "Ignore all"
3173
+ msgstr "تجاهل الكل"
3174
+
3175
+ #: modules/after-the-deadline/atd-l10n.php:22
3176
+ msgid "Edit Selection..."
3177
+ msgstr ""
3178
+
3179
+ #: modules/after-the-deadline/atd-l10n.php:24
3180
+ msgid "proofread"
3181
+ msgstr ""
3182
+
3183
+ #: modules/after-the-deadline/atd-l10n.php:25
3184
+ msgid "edit text"
3185
+ msgstr ""
3186
+
3187
+ #: modules/after-the-deadline/atd-l10n.php:26
3188
+ #: modules/after-the-deadline.php:224
3189
+ msgid "Proofread Writing"
3190
+ msgstr ""
3191
+
3192
+ #: modules/after-the-deadline/atd-l10n.php:28
3193
+ msgid "No writing errors were found."
3194
+ msgstr ""
3195
+
3196
+ #: modules/after-the-deadline/atd-l10n.php:29
3197
+ msgid "There was a problem communicating with the Proofreading service. Try again in one minute."
3198
+ msgstr ""
3199
+
3200
+ #: modules/after-the-deadline/atd-l10n.php:30
3201
+ msgid "There was an error communicating with the proofreading service."
3202
+ msgstr ""
3203
+
3204
+ #: modules/after-the-deadline/atd-l10n.php:32
3205
+ msgid "Replace selection with:"
3206
+ msgstr ""
3207
+
3208
+ #: modules/after-the-deadline/atd-l10n.php:33
3209
+ msgid ""
3210
+ "The proofreader has suggestions for this post. Are you sure you want to publish it?\n"
3211
+ "\n"
3212
+ "Press OK to publish your post, or Cancel to view the suggestions and edit your post."
3213
+ msgstr ""
3214
+
3215
+ #: functions.opengraph.php:74
3216
+ msgid "(no title)"
3217
+ msgstr "(لا عنوان)"
3218
+
3219
+ #: jetpack.php:1050
3220
+ msgid "Jetpack requires WordPress version %s or later."
3221
+ msgstr ""
3222
+
3223
+ #: jetpack.php:1246 jetpack.php:1262
3224
+ msgid "Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin."
3225
+ msgstr ""
3226
+
3227
+ #: jetpack.php:1283
3228
+ msgid "One New Jetpack Module"
3229
+ msgid_plural "%s New Jetpack Modules"
3230
+ msgstr[0] ""
3231
+ msgstr[1] ""
3232
+ msgstr[2] ""
3233
+ msgstr[3] ""
3234
+ msgstr[4] ""
3235
+ msgstr[5] ""
3236
+
3237
+ #: jetpack.php:1286
3238
+ msgid "Jetpack"
3239
+ msgstr ""
3240
+
3241
+ #: jetpack.php:1438 jetpack.php:1462 jetpack.php:1473 jetpack.php:2238
3242
+ #: jetpack.php:2422
3243
+ msgid "Jetpack by WordPress.com"
3244
+ msgstr ""
3245
+
3246
+ #: jetpack.php:1439 jetpack.php:1463 jetpack.php:2241
3247
+ msgid "Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com."
3248
+ msgstr ""
3249
+
3250
+ #: jetpack.php:1440 jetpack.php:1464
3251
+ msgid "On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed."
3252
+ msgstr ""
3253
+
3254
+ #: jetpack.php:1441
3255
+ msgid "Jetpack Module Options"
3256
+ msgstr ""
3257
+
3258
+ #: jetpack.php:1442
3259
+ msgid "<strong>To Activate/Deactivate a Module</strong> - Click on Learn More. An Activate or Deactivate button will now appear next to the Learn More button. Click the Activate/Deactivate button."
3260
+ msgstr ""
3261
+
3262
+ #: jetpack.php:1443 jetpack.php:1486
3263
+ msgid "For more information:"
3264
+ msgstr ""
3265
+
3266
+ #: jetpack.php:1444 jetpack.php:1487
3267
+ msgid "Jetpack FAQ"
3268
+ msgstr ""
3269
+
3270
+ #: jetpack.php:1445 jetpack.php:1488
3271
+ msgid "Jetpack Support"
3272
+ msgstr ""
3273
+
3274
+ #: jetpack.php:1460
3275
+ msgid "Overview"
3276
+ msgstr ""
3277
+
3278
+ #: jetpack.php:1471
3279
+ msgid "Modules"
3280
+ msgstr ""
3281
+
3282
+ #: jetpack.php:1474
3283
+ msgid "You can activate or deactivate individual Jetpack modules to suit your needs."
3284
+ msgstr ""
3285
+
3286
+ #: jetpack.php:1476
3287
+ msgid "Find the component you want to manage"
3288
+ msgstr ""
3289
+
3290
+ #: jetpack.php:1477
3291
+ msgid "Click on Learn More"
3292
+ msgstr ""
3293
+
3294
+ #: jetpack.php:1478
3295
+ msgid "An Activate or Deactivate button will appear"
3296
+ msgstr ""
3297
+
3298
+ #: jetpack.php:1479
3299
+ msgid "If additional settings are available, a link to them will appear"
3300
+ msgstr ""
3301
+
3302
+ #: jetpack.php:1557 modules/publicize/ui.php:511
3303
+ #: modules/sharedaddy/sharedaddy.php:74 modules/sharedaddy/sharedaddy.php:81
3304
+ msgid "Settings"
3305
+ msgstr "الإعدادات"
3306
+
3307
+ #: jetpack.php:1574
3308
+ msgid "Dismiss this notice and deactivate Jetpack."
3309
+ msgstr ""
3310
+
3311
+ #: jetpack.php:1580
3312
+ msgid "<strong>Your Jetpack is almost ready</strong> &#8211; A connection to WordPress.com is needed to enable features like Comments, Stats, Contact Forms, and Subscriptions. Connect now to get fueled up!"
3313
+ msgstr ""
3314
+
3315
+ #: jetpack.php:1582
3316
+ msgid "<strong>Jetpack is installed</strong> and ready to bring awesome, WordPress.com cloud-powered features to your site."
3317
+ msgstr ""
3318
+
3319
+ #: jetpack.php:1588 jetpack.php:2269
3320
+ msgid "Connect to WordPress.com"
3321
+ msgstr ""
3322
+
3323
+ #: jetpack.php:1590 modules/module-info.php:45 modules/module-info.php:81
3324
+ #: modules/module-info.php:138 modules/module-info.php:173
3325
+ #: modules/module-info.php:207 modules/module-info.php:237
3326
+ #: modules/module-info.php:270 modules/module-info.php:306
3327
+ #: modules/module-info.php:357 modules/module-info.php:379
3328
+ #: modules/module-info.php:417 modules/module-info.php:442
3329
+ #: modules/module-info.php:460 modules/module-info.php:479
3330
+ #: modules/module-info.php:485 modules/module-info.php:512
3331
+ #: modules/module-info.php:543 modules/module-info.php:578
3332
+ #: modules/module-info.php:600 modules/module-info.php:622
3333
+ #: modules/module-info.php:666 modules/module-info.php:694
3334
+ #: modules/module-info.php:722
3335
+ msgid "Learn More"
3336
+ msgstr ""
3337
+
3338
+ #: jetpack.php:1603
3339
+ msgid "<strong>Jetpack is activated!</strong> Each site on your network must be connected individually by an admin on that site."
3340
+ msgstr ""
3341
+
3342
+ #: jetpack.php:1630
3343
+ msgid "Jetpack now includes Jetpack Comments, which enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site. To activate Jetpack Comments, <a href=\"%s\">%s</a>."
3344
+ msgstr ""
3345
+
3346
+ #: jetpack.php:1638
3347
+ msgid "click here"
3348
+ msgstr ""
3349
+
3350
+ #: jetpack.php:1769
3351
+ msgid "You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features."
3352
+ msgstr ""
3353
+
3354
+ #: jetpack.php:1772
3355
+ msgid "Don&#8217;t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack."
3356
+ msgstr ""
3357
+
3358
+ #: jetpack.php:1776
3359
+ msgid "Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one."
3360
+ msgstr ""
3361
+
3362
+ #: jetpack.php:1779
3363
+ msgid "Wrong size. Hm&#8230; it seems your Jetpack doesn&#8217;t quite fit. Have you lost weight? Click &#8220;Connect to WordPress.com&#8221; again to get your Jetpack adjusted."
3364
+ msgstr ""
3365
+
3366
+ #: jetpack.php:1783
3367
+ msgid "Your website needs to be publicly accessible to use Jetpack: %s"
3368
+ msgstr ""
3369
+
3370
+ #: jetpack.php:1788
3371
+ msgid "%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3372
+ msgstr ""
3373
+
3374
+ #: jetpack.php:1790
3375
+ msgid "Do you still have the %s plugin installed?"
3376
+ msgstr ""
3377
+
3378
+ #: jetpack.php:1793
3379
+ msgid "Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3380
+ msgstr ""
3381
+
3382
+ #: jetpack.php:1801
3383
+ msgid "<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost)."
3384
+ msgstr ""
3385
+
3386
+ #: jetpack.php:1807
3387
+ msgid "WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later."
3388
+ msgstr ""
3389
+
3390
+ #: jetpack.php:1811
3391
+ msgid "Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host."
3392
+ msgstr ""
3393
+
3394
+ #: jetpack.php:1851
3395
+ msgid "<strong>Your Jetpack has a glitch.</strong> Something went wrong that&#8217;s never supposed to happen. Guess you&#8217;re just lucky: %s"
3396
+ msgstr ""
3397
+
3398
+ #: jetpack.php:1854
3399
+ msgid "Try connecting again."
3400
+ msgstr ""
3401
+
3402
+ #: jetpack.php:1878
3403
+ msgid "Welcome to <strong>Jetpack %s</strong>!"
3404
+ msgstr ""
3405
+
3406
+ #: jetpack.php:1890
3407
+ msgid "The following new modules have been activated: %l."
3408
+ msgstr ""
3409
+
3410
+ #: jetpack.php:1902
3411
+ msgid "The following modules have been updated: %l."
3412
+ msgstr ""
3413
+
3414
+ #: jetpack.php:1911
3415
+ msgid "<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card."
3416
+ msgstr ""
3417
+
3418
+ #: jetpack.php:1937
3419
+ msgctxt "%l = list of Jetpack module/feature names"
3420
+ msgid "<strong>%l Deactivated!</strong> You can activate it again at any time using the activate button on the module card."
3421
+ msgid_plural "<strong>%l Deactivated!</strong> You can activate them again at any time using the activate buttons on their module cards."
3422
+ msgstr[0] ""
3423
+ msgstr[1] ""
3424
+ msgstr[2] ""
3425
+ msgstr[3] ""
3426
+ msgstr[4] ""
3427
+ msgstr[5] ""
3428
+
3429
+ #: jetpack.php:1949
3430
+ msgid "<strong>Module settings were saved.</strong> "
3431
+ msgstr ""
3432
+
3433
+ #: jetpack.php:1953
3434
+ msgid "<strong>Your Jetpack is already connected.</strong> "
3435
+ msgstr ""
3436
+
3437
+ #: jetpack.php:1957 jetpack.php:1964
3438
+ msgid "<strong>You&#8217;re fueled up and ready to go.</strong> "
3439
+ msgstr ""
3440
+
3441
+ #: jetpack.php:1959
3442
+ msgid "The features below are now active. Click the learn more buttons to explore each feature."
3443
+ msgstr ""
3444
+
3445
+ #: jetpack.php:1970
3446
+ msgid "<strong>You have unlinked your account (%s) from WordPress.com.</strong>"
3447
+ msgstr ""
3448
+
3449
+ #: jetpack.php:1992
3450
+ msgid "Jetpack contains the most recent version of the old %l plugin."
3451
+ msgid_plural "Jetpack contains the most recent versions of the old %l plugins."
3452
+ msgstr[0] ""
3453
+ msgstr[1] ""
3454
+ msgstr[2] ""
3455
+ msgstr[3] ""
3456
+ msgstr[4] ""
3457
+ msgstr[5] ""
3458
+
3459
+ #: jetpack.php:2001
3460
+ msgid "The old version has been deactivated and can be removed from your site."
3461
+ msgid_plural "The old versions have been deactivated and can be removed from your site."
3462
+ msgstr[0] ""
3463
+ msgstr[1] ""
3464
+ msgstr[2] ""
3465
+ msgstr[3] ""
3466
+ msgstr[4] ""
3467
+ msgstr[5] ""
3468
+
3469
+ #: jetpack.php:2067
3470
+ msgid "Is this site private?"
3471
+ msgstr ""
3472
+
3473
+ #: jetpack.php:2070
3474
+ msgctxt "%l = list of Jetpack module/feature names"
3475
+ msgid "Like your site's RSS feeds, %l allows access to your posts and other content to third parties."
3476
+ msgid_plural "Like your site's RSS feeds, %l allow access to your posts and other content to third parties."
3477
+ msgstr[0] ""
3478
+ msgstr[1] ""
3479
+ msgstr[2] ""
3480
+ msgstr[3] ""
3481
+ msgstr[4] ""
3482
+ msgstr[5] ""
3483
+
3484
+ #: jetpack.php:2083
3485
+ msgctxt "%1$s = deactivation URL, %2$s = \"Deactivate {list of Jetpack module/feature names}"
3486
+ msgid "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating this feature</a>."
3487
+ msgid_plural "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating these features</a>."
3488
+ msgstr[0] ""
3489
+ msgstr[1] ""
3490
+ msgstr[2] ""
3491
+ msgstr[3] ""
3492
+ msgstr[4] ""
3493
+ msgstr[5] ""
3494
+
3495
+ #: jetpack.php:2097
3496
+ msgctxt "%l = list of Jetpack module/feature names"
3497
+ msgid "Deactivate %l"
3498
+ msgstr ""
3499
+
3500
+ #: jetpack.php:2228
3501
+ msgid "Connected to WordPress.com"
3502
+ msgstr ""
3503
+
3504
+ #: jetpack.php:2228
3505
+ msgid "Disconnect from WordPress.com"
3506
+ msgstr ""
3507
+
3508
+ #: class.json-api-endpoints.php:1113
3509
+ msgid "This post is password protected."
3510
+ msgstr "هذه التدوينة محمية بكلمة سر."
3511
+
3512
+ #: class.json-api-endpoints.php:2633
3513
+ msgid "Comment cache problem?"
3514
+ msgstr ""
languages/jetpack-az.mo ADDED
Binary file
languages/jetpack-az.po ADDED
@@ -0,0 +1,3474 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of 2.0 in Azerbaijani
2
+ # This file is distributed under the same license as the 2.0 package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2012-11-20 20:02:08+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: 2.0\n"
12
+
13
+ #: modules/widgets/rsslinks-widget.php:113
14
+ msgid "Red"
15
+ msgstr ""
16
+
17
+ #: modules/widgets/rsslinks-widget.php:114
18
+ msgid "Orange"
19
+ msgstr ""
20
+
21
+ #: modules/widgets/rsslinks-widget.php:115
22
+ msgid "Green"
23
+ msgstr ""
24
+
25
+ #: modules/widgets/rsslinks-widget.php:116
26
+ msgid "Blue"
27
+ msgstr ""
28
+
29
+ #: modules/widgets/rsslinks-widget.php:117
30
+ msgid "Purple"
31
+ msgstr ""
32
+
33
+ #: modules/widgets/rsslinks-widget.php:118
34
+ msgid "Pink"
35
+ msgstr ""
36
+
37
+ #: modules/widgets/rsslinks-widget.php:119
38
+ msgid "Silver"
39
+ msgstr ""
40
+
41
+ #: modules/widgets/rsslinks-widget.php:121
42
+ msgid "Image Color:"
43
+ msgstr ""
44
+
45
+ #: modules/widgets/rsslinks-widget.php:140
46
+ msgid "Subscribe to %s"
47
+ msgstr ""
48
+
49
+ #: modules/widgets/top-posts.php:35 modules/widgets/top-posts.php:41
50
+ msgid "Top Posts &amp; Pages"
51
+ msgstr ""
52
+
53
+ #: modules/widgets/top-posts.php:37
54
+ msgid "Shows your most viewed posts and pages."
55
+ msgstr ""
56
+
57
+ #: modules/widgets/top-posts.php:78
58
+ msgid "Number of posts to show:"
59
+ msgstr ""
60
+
61
+ #: modules/widgets/top-posts.php:83
62
+ msgid "Display as:"
63
+ msgstr ""
64
+
65
+ #: modules/widgets/top-posts.php:85
66
+ msgid "Text List"
67
+ msgstr ""
68
+
69
+ #: modules/widgets/top-posts.php:86
70
+ msgid "Image List"
71
+ msgstr ""
72
+
73
+ #: modules/widgets/top-posts.php:87
74
+ msgid "Image Grid"
75
+ msgstr ""
76
+
77
+ #: modules/widgets/top-posts.php:91
78
+ msgid "Top Posts &amp; Pages by views are calculated from 24-48 hours of stats. They take a while to change."
79
+ msgstr ""
80
+
81
+ #: modules/widgets/top-posts.php:164
82
+ msgid "There are no posts to display. <a href=\"%s\">Want more traffic?</a>"
83
+ msgstr ""
84
+
85
+ #: modules/widgets/twitter.php:22
86
+ msgid "Display your Tweets from Twitter"
87
+ msgstr ""
88
+
89
+ #: modules/widgets/twitter.php:31
90
+ msgid "Please configure your Twitter username for the <a href=\"%s\">Twitter Widget</a>."
91
+ msgstr ""
92
+
93
+ #: modules/widgets/twitter.php:41
94
+ msgid "Twitter Updates"
95
+ msgstr ""
96
+
97
+ #: modules/widgets/twitter.php:182 modules/widgets/twitter.php:203
98
+ msgid "Error: Twitter did not respond. Please wait a few minutes and refresh this page."
99
+ msgstr ""
100
+
101
+ #: modules/widgets/twitter.php:196
102
+ msgid "Error: Please make sure the Twitter account is %1$spublic%2$s."
103
+ msgstr ""
104
+
105
+ #: modules/widgets/twitter.php:265
106
+ msgid "Twitter username:"
107
+ msgstr ""
108
+
109
+ #: modules/widgets/twitter.php:272
110
+ msgid "Maximum number of Tweets to show:"
111
+ msgstr ""
112
+
113
+ #: modules/widgets/twitter.php:286
114
+ msgid "Hide replies"
115
+ msgstr ""
116
+
117
+ #: modules/widgets/twitter.php:293
118
+ msgid "Hide Tweets pushed by Publicize"
119
+ msgstr ""
120
+
121
+ #: modules/widgets/twitter.php:300
122
+ msgid "Include retweets"
123
+ msgstr ""
124
+
125
+ #: modules/widgets/twitter.php:307
126
+ msgid "Display Follow Button"
127
+ msgstr ""
128
+
129
+ #: modules/widgets/twitter.php:313
130
+ msgid "Text to display between Tweet and timestamp:"
131
+ msgstr ""
132
+
133
+ msgid "http://wordpress.org/extend/plugins/jetpack/"
134
+ msgstr ""
135
+
136
+ msgid "Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users."
137
+ msgstr ""
138
+
139
+ msgid "Automattic"
140
+ msgstr ""
141
+
142
+ msgid "http://jetpack.me"
143
+ msgstr ""
144
+
145
+ msgid "Improve your spelling, style, and grammar with the <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> Proofreading service."
146
+ msgstr ""
147
+
148
+ msgid "Transform your standard image galleries into an immersive full-screen experience."
149
+ msgstr ""
150
+
151
+ msgid "A new comment system that has integrated social media login options."
152
+ msgstr ""
153
+
154
+ msgid "Easily insert a contact form any where on your site."
155
+ msgstr ""
156
+
157
+ msgid "Customize the appearance of your site using CSS but without modifying your theme."
158
+ msgstr ""
159
+
160
+ msgid "Share your public posts and comments to search engines and other services in real-time."
161
+ msgstr ""
162
+
163
+ msgid "Show a pop-up business card of your users' gravatar profiles in comments."
164
+ msgstr ""
165
+
166
+ msgid "Automatically pull the next set of posts into view when the reader approaches the bottom of the page."
167
+ msgstr ""
168
+
169
+ msgid "Allow applications to securely access your content through the cloud."
170
+ msgstr ""
171
+
172
+ msgid "Beautiful Math"
173
+ msgstr ""
174
+
175
+ msgid "Mark up your posts with the <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> markup language, perfect for complex mathematical equations and other &#252;ber-geekery."
176
+ msgstr ""
177
+
178
+ msgid "Automatically optimize your site for mobile devices."
179
+ msgstr ""
180
+
181
+ msgid "Receive notifications on your Apple device."
182
+ msgstr ""
183
+
184
+ msgid "Monitor and manage your site's activity with Notifications in your Toolbar and on WordPress.com."
185
+ msgstr ""
186
+
187
+ msgid "Give your site a boost by loading images from the WordPress.com content delivery network."
188
+ msgstr ""
189
+
190
+ msgid "Publish posts to your blog directly from your personal email account."
191
+ msgstr ""
192
+
193
+ msgid "Connect your site to popular social networks and automatically share new posts with your friends."
194
+ msgstr ""
195
+
196
+ msgid "The most super duper sharing tool on the interwebs. Share content with Facebook, Twitter, and many more."
197
+ msgstr ""
198
+
199
+ msgid "Easily embed videos and more from sites like YouTube, Vimeo, and SlideShare."
200
+ msgstr ""
201
+
202
+ msgid "Enable WP.me-powered shortlinks for all of your Posts and Pages for easier sharing."
203
+ msgstr ""
204
+
205
+ msgid "Simple, concise site stats with no additional load on your server."
206
+ msgstr ""
207
+
208
+ msgid "Allow users to subscribe to your posts and comments to receive a notification via email."
209
+ msgstr ""
210
+
211
+ msgid "Realtime backup and security scanning for your WordPress site."
212
+ msgstr ""
213
+
214
+ msgid "Easily add images, Twitter updates, and your site's RSS links to your theme's sidebar."
215
+ msgstr ""
216
+
217
+ #: modules/widgets/facebook-likebox.php:115
218
+ #: modules/widgets/gravatar-profile.php:164
219
+ msgid "Title"
220
+ msgstr ""
221
+
222
+ #: modules/widgets/facebook-likebox.php:122
223
+ msgid "Facebook Page URL"
224
+ msgstr ""
225
+
226
+ #: modules/widgets/facebook-likebox.php:125
227
+ msgid "The Like Box only works with <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook Pages</a>."
228
+ msgstr ""
229
+
230
+ #: modules/widgets/facebook-likebox.php:131
231
+ msgid "Width"
232
+ msgstr ""
233
+
234
+ #: modules/widgets/facebook-likebox.php:138
235
+ msgid "Height"
236
+ msgstr ""
237
+
238
+ #: modules/widgets/facebook-likebox.php:157
239
+ msgid "Show Faces"
240
+ msgstr ""
241
+
242
+ #: modules/widgets/facebook-likebox.php:159
243
+ msgid "Show profile photos in the plugin."
244
+ msgstr ""
245
+
246
+ #: modules/widgets/facebook-likebox.php:166
247
+ msgid "Show Stream"
248
+ msgstr ""
249
+
250
+ #: modules/widgets/facebook-likebox.php:168
251
+ msgid "Show the profile stream for the public profile."
252
+ msgstr ""
253
+
254
+ #: modules/widgets/facebook-likebox.php:175
255
+ msgid "Show Wall"
256
+ msgstr ""
257
+
258
+ #: modules/widgets/facebook-likebox.php:177
259
+ msgid "Show the wall for a Places page rather than friend activity."
260
+ msgstr ""
261
+
262
+ #: modules/widgets/gravatar-profile.php:19
263
+ msgid "Gravatar Profile"
264
+ msgstr ""
265
+
266
+ #: modules/widgets/gravatar-profile.php:21
267
+ msgid "Display a mini version of your Gravatar Profile"
268
+ msgstr ""
269
+
270
+ #: modules/widgets/gravatar-profile.php:37
271
+ msgid "You need to select what to show in this <a href=\"%s\">Gravatar Profile widget</a>."
272
+ msgstr ""
273
+
274
+ #: modules/widgets/gravatar-profile.php:91
275
+ msgid "View Full Profile &rarr;"
276
+ msgstr ""
277
+
278
+ #: modules/widgets/gravatar-profile.php:99
279
+ msgid "Error loading profile"
280
+ msgstr ""
281
+
282
+ #: modules/widgets/gravatar-profile.php:111
283
+ msgid "Personal Links"
284
+ msgstr ""
285
+
286
+ #: modules/widgets/gravatar-profile.php:131
287
+ msgid "Verified Services"
288
+ msgstr ""
289
+
290
+ #: modules/widgets/gravatar-profile.php:142
291
+ msgctxt "1: User Name, 2: Service Name (Facebook, Twitter, ...)"
292
+ msgid "%1$s on %2$s"
293
+ msgstr ""
294
+
295
+ #: modules/widgets/gravatar-profile.php:170
296
+ msgid "Select a user or pick \"custom\" and enter a custom email address."
297
+ msgstr ""
298
+
299
+ #: modules/widgets/gravatar-profile.php:174
300
+ msgid "Custom"
301
+ msgstr ""
302
+
303
+ #: modules/widgets/gravatar-profile.php:184
304
+ msgid "Custom Email Address"
305
+ msgstr ""
306
+
307
+ #: modules/widgets/gravatar-profile.php:192
308
+ msgid "Show Personal Links"
309
+ msgstr ""
310
+
311
+ #: modules/widgets/gravatar-profile.php:194
312
+ msgid "Links to your websites, blogs, or any other sites that help describe who you are."
313
+ msgstr ""
314
+
315
+ #: modules/widgets/gravatar-profile.php:201
316
+ msgid "Show Account Links"
317
+ msgstr ""
318
+
319
+ #: modules/widgets/gravatar-profile.php:203
320
+ msgid "Links to services that you use across the web."
321
+ msgstr ""
322
+
323
+ #: modules/widgets/gravatar-profile.php:207
324
+ msgid "Opens in new window"
325
+ msgstr ""
326
+
327
+ #: modules/widgets/gravatar-profile.php:207
328
+ msgid "Edit Your Profile"
329
+ msgstr ""
330
+
331
+ #: modules/widgets/gravatar-profile.php:207
332
+ msgid "What's a Gravatar?"
333
+ msgstr ""
334
+
335
+ #: modules/widgets/image-widget.php:12
336
+ msgid "Display an image in your sidebar"
337
+ msgstr ""
338
+
339
+ #: modules/widgets/image-widget.php:14
340
+ msgid "Image (Jetpack)"
341
+ msgstr ""
342
+
343
+ #: modules/widgets/image-widget.php:110
344
+ msgid "Image URL:"
345
+ msgstr ""
346
+
347
+ #: modules/widgets/image-widget.php:113
348
+ msgid "Alternate text:"
349
+ msgstr ""
350
+
351
+ #: modules/widgets/image-widget.php:116
352
+ msgid "Image title:"
353
+ msgstr ""
354
+
355
+ #: modules/widgets/image-widget.php:119
356
+ msgid "Caption:"
357
+ msgstr ""
358
+
359
+ #: modules/widgets/image-widget.php:124
360
+ msgid "None"
361
+ msgstr ""
362
+
363
+ #: modules/widgets/image-widget.php:125
364
+ msgid "Left"
365
+ msgstr "Sol"
366
+
367
+ #: modules/widgets/image-widget.php:126
368
+ msgid "Center"
369
+ msgstr ""
370
+
371
+ #: modules/widgets/image-widget.php:127
372
+ msgid "Right"
373
+ msgstr "Sağ"
374
+
375
+ #: modules/widgets/image-widget.php:129
376
+ msgid "Image Alignment:"
377
+ msgstr ""
378
+
379
+ #: modules/widgets/image-widget.php:139
380
+ msgid "Width:"
381
+ msgstr ""
382
+
383
+ #: modules/widgets/image-widget.php:142
384
+ msgid "Height:"
385
+ msgstr ""
386
+
387
+ #: modules/widgets/image-widget.php:145
388
+ msgid "If empty, we will attempt to determine the image size."
389
+ msgstr ""
390
+
391
+ #: modules/widgets/image-widget.php:146
392
+ msgid "Link URL (when the image is clicked):"
393
+ msgstr ""
394
+
395
+ #: modules/widgets/rsslinks-widget.php:12
396
+ msgid "Links to your blog's RSS feeds"
397
+ msgstr ""
398
+
399
+ #: modules/widgets/rsslinks-widget.php:13
400
+ msgid "RSS Links (Jetpack)"
401
+ msgstr ""
402
+
403
+ #: modules/widgets/rsslinks-widget.php:62 modules/widgets/top-posts.php:73
404
+ #: modules/widgets/twitter.php:258
405
+ msgid "Title:"
406
+ msgstr ""
407
+
408
+ #: modules/widgets/rsslinks-widget.php:67
409
+ #: modules/widgets/rsslinks-widget.php:133
410
+ msgid "Posts"
411
+ msgstr "Yazılar"
412
+
413
+ #: modules/widgets/rsslinks-widget.php:68
414
+ #: modules/widgets/rsslinks-widget.php:136
415
+ msgid "Comments"
416
+ msgstr "Şərhlər"
417
+
418
+ #: modules/widgets/rsslinks-widget.php:69
419
+ msgid "Posts & Comments"
420
+ msgstr ""
421
+
422
+ #: modules/widgets/rsslinks-widget.php:71
423
+ msgid "Feed(s) to Display:"
424
+ msgstr ""
425
+
426
+ #: modules/widgets/rsslinks-widget.php:81
427
+ msgid "Text Link"
428
+ msgstr ""
429
+
430
+ #: modules/widgets/rsslinks-widget.php:82
431
+ msgid "Image Link"
432
+ msgstr ""
433
+
434
+ #: modules/widgets/rsslinks-widget.php:83
435
+ msgid "Text & Image Links"
436
+ msgstr ""
437
+
438
+ #: modules/widgets/rsslinks-widget.php:85
439
+ msgid "Format:"
440
+ msgstr ""
441
+
442
+ #: modules/widgets/rsslinks-widget.php:96
443
+ msgid "Image Settings:"
444
+ msgstr ""
445
+
446
+ #: modules/widgets/rsslinks-widget.php:99
447
+ msgid "Small"
448
+ msgstr "Kiçik"
449
+
450
+ #: modules/widgets/rsslinks-widget.php:100
451
+ msgid "Medium"
452
+ msgstr ""
453
+
454
+ #: modules/widgets/rsslinks-widget.php:101
455
+ msgid "Large"
456
+ msgstr "Geniş "
457
+
458
+ #: modules/widgets/rsslinks-widget.php:103
459
+ msgid "Image Size:"
460
+ msgstr ""
461
+
462
+ #: modules/stats.php:527
463
+ msgid "Hide the stats smiley face image."
464
+ msgstr ""
465
+
466
+ #: modules/stats.php:527
467
+ msgid "The image helps collect stats and <strong>makes the world a better place</strong> but should still work when hidden"
468
+ msgstr ""
469
+
470
+ #: modules/stats.php:527
471
+ msgid "Smiley face"
472
+ msgstr ""
473
+
474
+ #: modules/stats.php:528
475
+ msgid "Report visibility"
476
+ msgstr ""
477
+
478
+ #: modules/stats.php:530
479
+ msgid "Select the roles that will be able to view stats reports."
480
+ msgstr ""
481
+
482
+ #: modules/stats.php:541
483
+ msgid "Save configuration"
484
+ msgstr ""
485
+
486
+ #: modules/stats.php:597
487
+ msgid "Stats"
488
+ msgstr "Rəqəmlər"
489
+
490
+ #: modules/stats.php:599
491
+ msgid "Views over 48 hours. Click for more Site Stats."
492
+ msgstr ""
493
+
494
+ #: modules/stats.php:666
495
+ msgid "day"
496
+ msgstr "gün"
497
+
498
+ #: modules/stats.php:667
499
+ msgid "week"
500
+ msgstr ""
501
+
502
+ #: modules/stats.php:668
503
+ msgid "month"
504
+ msgstr "ay"
505
+
506
+ #: modules/stats.php:671
507
+ msgid "the past day"
508
+ msgstr "Ötən gün"
509
+
510
+ #: modules/stats.php:672
511
+ msgid "the past week"
512
+ msgstr "Ötən həftə"
513
+
514
+ #: modules/stats.php:673
515
+ msgid "the past month"
516
+ msgstr "ötən ay"
517
+
518
+ #: modules/stats.php:674
519
+ msgid "the past quarter"
520
+ msgstr ""
521
+
522
+ #: modules/stats.php:675
523
+ msgid "the past year"
524
+ msgstr "Ötən il"
525
+
526
+ #: modules/stats.php:697
527
+ msgid "Chart stats by"
528
+ msgstr ""
529
+
530
+ #: modules/stats.php:710
531
+ msgid "Show top posts over"
532
+ msgstr ""
533
+
534
+ #: modules/stats.php:723
535
+ msgid "Show top search terms over"
536
+ msgstr "Əsas axtarış sözlərini göstər"
537
+
538
+ #: modules/stats.php:882
539
+ msgid "%1$s %2$s Views"
540
+ msgstr ""
541
+
542
+ #: modules/stats.php:895
543
+ msgid "View All"
544
+ msgstr ""
545
+
546
+ #: modules/stats.php:899
547
+ msgid "Top Posts"
548
+ msgstr ""
549
+
550
+ #: modules/stats.php:903 modules/stats.php:927
551
+ msgid "Sorry, nothing to report."
552
+ msgstr ""
553
+
554
+ #: modules/stats.php:923
555
+ msgid "Top Searches"
556
+ msgstr ""
557
+
558
+ #: modules/stats.php:946
559
+ msgid "We were unable to get your stats just now. Please reload this page to try again. If this error persists, please <a href=\"%1$s\">contact support</a>. In your report please include the information below."
560
+ msgstr ""
561
+
562
+ #: modules/subscriptions.php:108
563
+ msgid "Jetpack Subscriptions Settings"
564
+ msgstr ""
565
+
566
+ #: modules/subscriptions.php:117
567
+ msgid "Follow Blog"
568
+ msgstr ""
569
+
570
+ #: modules/subscriptions.php:132
571
+ msgid "Follow Comments"
572
+ msgstr ""
573
+
574
+ #: modules/subscriptions.php:153
575
+ msgid "Follower Settings"
576
+ msgstr ""
577
+
578
+ #: modules/subscriptions.php:160
579
+ msgid "Blog follow email text"
580
+ msgstr ""
581
+
582
+ #: modules/subscriptions.php:168
583
+ msgid "Comment follow email text"
584
+ msgstr ""
585
+
586
+ #: modules/subscriptions.php:182
587
+ msgid "Change whether your visitors can subscribe to your posts or comments or both."
588
+ msgstr ""
589
+
590
+ #: modules/subscriptions.php:197
591
+ msgid "Show a <em>'follow blog'</em> option in the comment form"
592
+ msgstr ""
593
+
594
+ #: modules/subscriptions.php:212
595
+ msgid "Show a <em>'follow comments'</em> option in the comment form"
596
+ msgstr ""
597
+
598
+ #: modules/subscriptions.php:237
599
+ msgid "These settings change emails sent from your blog to followers."
600
+ msgstr ""
601
+
602
+ #: modules/subscriptions.php:243
603
+ msgid "Introduction text sent when someone follows your blog. (Site and confirmation details will be automatically added for you.)"
604
+ msgstr ""
605
+
606
+ #: modules/subscriptions.php:249
607
+ msgid "Introduction text sent when someone follows a post on your blog. (Site and confirmation details will be automatically added for you.)"
608
+ msgstr ""
609
+
610
+ #: modules/subscriptions.php:254
611
+ msgid ""
612
+ "Howdy.\n"
613
+ "\n"
614
+ "You recently followed this blog's posts. This means you will receive each new post by email.\n"
615
+ "\n"
616
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
617
+ msgstr ""
618
+
619
+ #: modules/subscriptions.php:255
620
+ msgid ""
621
+ "Howdy.\n"
622
+ "\n"
623
+ "You recently followed one of my posts. This means you will receive an email when new comments are posted.\n"
624
+ "\n"
625
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
626
+ msgstr ""
627
+
628
+ #: modules/subscriptions.php:447
629
+ msgid "Notify me of follow-up comments by email."
630
+ msgstr ""
631
+
632
+ #: modules/subscriptions.php:454
633
+ msgid "Notify me of new posts by email."
634
+ msgstr ""
635
+
636
+ #: modules/subscriptions.php:520
637
+ msgid "Add an email signup form to allow people to subscribe to your blog."
638
+ msgstr ""
639
+
640
+ #: modules/subscriptions.php:523
641
+ msgid "Blog Subscriptions (Jetpack)"
642
+ msgstr ""
643
+
644
+ #: modules/subscriptions.php:554
645
+ msgid "An email was just sent to confirm your subscription. Please find the email now and click activate to start subscribing."
646
+ msgstr ""
647
+
648
+ #: modules/subscriptions.php:564
649
+ msgid "The email you entered was invalid, please check and try again."
650
+ msgstr ""
651
+
652
+ #: modules/subscriptions.php:567
653
+ msgid "You have already subscribed to this site, please check your inbox."
654
+ msgstr ""
655
+
656
+ #: modules/subscriptions.php:574
657
+ msgid "There was an error when subscribing, please try again."
658
+ msgstr ""
659
+
660
+ #: modules/subscriptions.php:592
661
+ msgid "Join %s other subscriber"
662
+ msgid_plural "Join %s other subscribers"
663
+ msgstr[0] ""
664
+ msgstr[1] ""
665
+
666
+ #: modules/subscriptions.php:671
667
+ msgid "Subscribe to Blog via Email"
668
+ msgstr ""
669
+
670
+ #: modules/subscriptions.php:672
671
+ msgid "Enter your email address to subscribe to this blog and receive notifications of new posts by email."
672
+ msgstr ""
673
+
674
+ #: modules/subscriptions.php:674
675
+ msgid "Click to subscribe to this blog and receive notifications of new posts by email."
676
+ msgstr ""
677
+
678
+ #: modules/subscriptions.php:690
679
+ msgid "%s: %s"
680
+ msgstr ""
681
+
682
+ #: modules/subscriptions.php:698 modules/widgets/image-widget.php:107
683
+ msgid "Widget title:"
684
+ msgstr ""
685
+
686
+ #: modules/subscriptions.php:704
687
+ msgid "Optional text to display to your readers:"
688
+ msgstr ""
689
+
690
+ #: modules/subscriptions.php:710
691
+ msgid "Subscribe Button:"
692
+ msgstr ""
693
+
694
+ #: modules/subscriptions.php:717
695
+ msgid "Show total number of subscribers? (%s subscriber)"
696
+ msgid_plural "Show total number of subscribers? (%s subscribers)"
697
+ msgstr[0] ""
698
+ msgstr[1] ""
699
+
700
+ #: modules/vaultpress.php:22
701
+ msgid "Active"
702
+ msgstr ""
703
+
704
+ #: modules/widgets/facebook-likebox.php:29
705
+ msgid "Facebook Like Box"
706
+ msgstr ""
707
+
708
+ #: modules/widgets/facebook-likebox.php:29
709
+ msgid "Display a Facebook Like Box to connect visitors to your Facebook Page"
710
+ msgstr ""
711
+
712
+ #: modules/widgets/facebook-likebox.php:41
713
+ msgid "It looks like your Facebook URL is incorrectly configured. Please check it in your <a href=\"%s\">widget settings</a>."
714
+ msgstr ""
715
+
716
+ #: modules/sharedaddy/sharing.php:300
717
+ msgid "Button style"
718
+ msgstr ""
719
+
720
+ #: modules/sharedaddy/sharing.php:303
721
+ msgid "Icon + text"
722
+ msgstr ""
723
+
724
+ #: modules/sharedaddy/sharing.php:304
725
+ msgid "Icon only"
726
+ msgstr ""
727
+
728
+ #: modules/sharedaddy/sharing.php:305
729
+ msgid "Text only"
730
+ msgstr ""
731
+
732
+ #: modules/sharedaddy/sharing.php:306
733
+ msgid "Official buttons"
734
+ msgstr ""
735
+
736
+ #: modules/sharedaddy/sharing.php:311
737
+ msgid "Sharing label"
738
+ msgstr ""
739
+
740
+ #: modules/sharedaddy/sharing.php:317
741
+ msgid "Open links in"
742
+ msgstr ""
743
+
744
+ #: modules/sharedaddy/sharing.php:320
745
+ msgid "New window"
746
+ msgstr ""
747
+
748
+ #: modules/sharedaddy/sharing.php:321
749
+ msgid "Same window"
750
+ msgstr ""
751
+
752
+ #: modules/sharedaddy/sharing.php:326
753
+ msgid "Show buttons on"
754
+ msgstr ""
755
+
756
+ #: modules/sharedaddy/sharing.php:332
757
+ msgid "Front Page, Archive Pages, and Search Results"
758
+ msgstr ""
759
+
760
+ #: modules/sharedaddy/sharing.php:348
761
+ msgid "Save Changes"
762
+ msgstr ""
763
+
764
+ #: modules/sharedaddy/sharing.php:359
765
+ msgid "Service name"
766
+ msgstr ""
767
+
768
+ #: modules/sharedaddy/sharing.php:365
769
+ msgid "Sharing URL"
770
+ msgstr ""
771
+
772
+ #: modules/sharedaddy/sharing.php:369
773
+ msgid "You can add the following variables to your service sharing URL:"
774
+ msgstr ""
775
+
776
+ #: modules/sharedaddy/sharing.php:374
777
+ msgid "Icon URL"
778
+ msgstr ""
779
+
780
+ #: modules/sharedaddy/sharing.php:377
781
+ msgid "Enter the URL of a 16x16px icon you want to use for this service."
782
+ msgstr ""
783
+
784
+ #: modules/sharedaddy/sharing.php:383
785
+ msgid "Create Share Button"
786
+ msgstr ""
787
+
788
+ #: modules/sharedaddy/sharing.php:395
789
+ msgid "An error occurred creating your new sharing service - please check you gave valid details."
790
+ msgstr ""
791
+
792
+ #: modules/shortcodes/archives.php:50
793
+ msgid "Your blog does not currently have any published posts."
794
+ msgstr ""
795
+
796
+ #: modules/shortcodes/audio.php:180
797
+ msgid "Download: <a href=\"%s\">%s</a><br />"
798
+ msgstr ""
799
+
800
+ #: modules/shortcodes/videopress.php:616
801
+ msgid "The VideoPress plugin could not communicate with the VideoPress servers. This error is most likely caused by a misconfigured plugin. Please reinstall or upgrade."
802
+ msgstr ""
803
+
804
+ #: modules/shortcodes/videopress.php:618
805
+ msgid "<strong>%s</strong> is not an allowed embed site."
806
+ msgstr ""
807
+
808
+ #: modules/shortcodes/videopress.php:618
809
+ msgid "Publisher limits playback of video embeds."
810
+ msgstr ""
811
+
812
+ #: modules/shortcodes/videopress.php:620
813
+ msgid "No data found for VideoPress identifier: <strong>%s</strong>."
814
+ msgstr ""
815
+
816
+ #: modules/shortcodes/videopress.php:837
817
+ msgid "%s Error"
818
+ msgstr ""
819
+
820
+ #: modules/shortcodes/videopress.php:871
821
+ msgid "This video is intended for mature audiences."
822
+ msgstr ""
823
+
824
+ #: modules/shortcodes/videopress.php:871
825
+ msgid "Please verify your birthday."
826
+ msgstr ""
827
+
828
+ #: modules/shortcodes/videopress.php:887
829
+ msgid "January"
830
+ msgstr "Yanvar"
831
+
832
+ #: modules/shortcodes/videopress.php:887
833
+ msgid "February"
834
+ msgstr "Fevral"
835
+
836
+ #: modules/shortcodes/videopress.php:887
837
+ msgid "March"
838
+ msgstr "Mart"
839
+
840
+ #: modules/shortcodes/videopress.php:887
841
+ msgid "April"
842
+ msgstr "Aprel"
843
+
844
+ #: modules/shortcodes/videopress.php:887
845
+ msgid "May"
846
+ msgstr ""
847
+
848
+ #: modules/shortcodes/videopress.php:887
849
+ msgid "June"
850
+ msgstr "İyun"
851
+
852
+ #: modules/shortcodes/videopress.php:887
853
+ msgid "July"
854
+ msgstr "İyul"
855
+
856
+ #: modules/shortcodes/videopress.php:887
857
+ msgid "August"
858
+ msgstr "Avqust"
859
+
860
+ #: modules/shortcodes/videopress.php:887
861
+ msgid "September"
862
+ msgstr "Sentyabr"
863
+
864
+ #: modules/shortcodes/videopress.php:887
865
+ msgid "October"
866
+ msgstr "Oktyabr"
867
+
868
+ #: modules/shortcodes/videopress.php:887
869
+ msgid "November"
870
+ msgstr ""
871
+
872
+ #: modules/shortcodes/videopress.php:887
873
+ msgid "December"
874
+ msgstr "Dekabr"
875
+
876
+ #: modules/shortcodes/videopress.php:923
877
+ msgid "Submit"
878
+ msgstr ""
879
+
880
+ #: modules/shortcodes/videopress.php:969
881
+ msgid "You do not have sufficient <a rel=\"nofollow\" href=\"%s\">freedom levels</a> to view this video. Support free software and upgrade."
882
+ msgstr ""
883
+
884
+ #: modules/shortcodes/videopress.php:1027
885
+ msgctxt "watch a video title"
886
+ msgid "Watch: %s"
887
+ msgstr ""
888
+
889
+ #: modules/shortcodes/videopress.php:1123
890
+ #: modules/shortcodes/videopress.php:1145
891
+ msgid "this video"
892
+ msgstr ""
893
+
894
+ #: modules/shortcodes/videopress.php:1152
895
+ msgctxt "Play as in playback or view a movie"
896
+ msgid "JavaScript required to play %s."
897
+ msgstr ""
898
+
899
+ #: modules/shortcodes/videopress.php:1299
900
+ msgid "This video requires <a rel=\"nofollow\" href=\"%s\">Adobe Flash</a> for playback."
901
+ msgstr ""
902
+
903
+ #: modules/shortcodes/videopress.php:1306
904
+ msgid "Loading video..."
905
+ msgstr ""
906
+
907
+ #: modules/stats.php:252 modules/stats.php:645
908
+ msgid "Site Stats"
909
+ msgstr ""
910
+
911
+ #: modules/stats.php:343
912
+ msgid "Loading&hellip;"
913
+ msgstr ""
914
+
915
+ #: modules/stats.php:344
916
+ msgid "Your Site Stats work better with Javascript enabled."
917
+ msgstr ""
918
+
919
+ #: modules/stats.php:345
920
+ msgid "View Site Stats without Javascript"
921
+ msgstr ""
922
+
923
+ #: modules/stats.php:517
924
+ msgid "Visit <a href=\"%s\">Site Stats</a> to see your stats."
925
+ msgstr ""
926
+
927
+ #: modules/stats.php:522
928
+ msgid "Admin bar"
929
+ msgstr ""
930
+
931
+ #: modules/stats.php:523
932
+ msgid "Put a chart showing 48 hours of views in the admin bar."
933
+ msgstr ""
934
+
935
+ #: modules/stats.php:524
936
+ msgid "Registered users"
937
+ msgstr ""
938
+
939
+ #: modules/stats.php:525
940
+ msgid "Count the page views of registered users who are logged in."
941
+ msgstr ""
942
+
943
+ #: modules/stats.php:526
944
+ msgid "Smiley"
945
+ msgstr ""
946
+
947
+ #: modules/sharedaddy/sharing-sources.php:279
948
+ msgid "Send to Email Address"
949
+ msgstr ""
950
+
951
+ #: modules/sharedaddy/sharing-sources.php:287
952
+ msgid "Your Name"
953
+ msgstr "Adınız"
954
+
955
+ #: modules/sharedaddy/sharing-sources.php:290
956
+ msgid "Your Email Address"
957
+ msgstr ""
958
+
959
+ #: modules/sharedaddy/sharing-sources.php:298
960
+ msgid "Send Email"
961
+ msgstr ""
962
+
963
+ #: modules/sharedaddy/sharing-sources.php:299
964
+ msgid "Cancel"
965
+ msgstr "Ləğv et"
966
+
967
+ #: modules/sharedaddy/sharing-sources.php:302
968
+ msgid "Post was not sent - check your email addresses!"
969
+ msgstr ""
970
+
971
+ #: modules/sharedaddy/sharing-sources.php:306
972
+ msgid "Email check failed, please try again"
973
+ msgstr ""
974
+
975
+ #: modules/sharedaddy/sharing-sources.php:310
976
+ msgid "Sorry, your blog cannot share posts by email."
977
+ msgstr ""
978
+
979
+ #: modules/sharedaddy/sharing-sources.php:330 modules/widgets/twitter.php:22
980
+ msgid "Twitter"
981
+ msgstr ""
982
+
983
+ #: modules/sharedaddy/sharing-sources.php:376
984
+ msgctxt "share to"
985
+ msgid "Twitter"
986
+ msgstr ""
987
+
988
+ #: modules/sharedaddy/sharing-sources.php:376
989
+ msgid "Click to share on Twitter"
990
+ msgstr ""
991
+
992
+ #: modules/sharedaddy/sharing-sources.php:451
993
+ msgid "StumbleUpon"
994
+ msgstr ""
995
+
996
+ #: modules/sharedaddy/sharing-sources.php:462
997
+ msgctxt "share to"
998
+ msgid "StumbleUpon"
999
+ msgstr ""
1000
+
1001
+ #: modules/sharedaddy/sharing-sources.php:462
1002
+ msgid "Click to share on StumbleUpon"
1003
+ msgstr ""
1004
+
1005
+ #: modules/sharedaddy/sharing-sources.php:489
1006
+ #: modules/sharedaddy/sharing-sources.php:496
1007
+ msgid "Reddit"
1008
+ msgstr ""
1009
+
1010
+ #: modules/sharedaddy/sharing-sources.php:496
1011
+ msgid "Click to share on Reddit"
1012
+ msgstr ""
1013
+
1014
+ #: modules/sharedaddy/sharing-sources.php:523
1015
+ msgid "Digg"
1016
+ msgstr ""
1017
+
1018
+ #: modules/sharedaddy/sharing-sources.php:532
1019
+ #: modules/sharedaddy/sharing-sources.php:535
1020
+ msgid "Click to Digg this post"
1021
+ msgstr ""
1022
+
1023
+ #: modules/sharedaddy/sharing-sources.php:535
1024
+ msgctxt "share to"
1025
+ msgid "Digg"
1026
+ msgstr ""
1027
+
1028
+ #: modules/sharedaddy/sharing-sources.php:579
1029
+ msgid "LinkedIn"
1030
+ msgstr ""
1031
+
1032
+ #: modules/sharedaddy/sharing-sources.php:593
1033
+ msgctxt "share to"
1034
+ msgid "LinkedIn"
1035
+ msgstr ""
1036
+
1037
+ #: modules/sharedaddy/sharing-sources.php:593
1038
+ msgid "Click to share on LinkedIn"
1039
+ msgstr ""
1040
+
1041
+ #: modules/sharedaddy/sharing-sources.php:659
1042
+ msgid "Facebook"
1043
+ msgstr ""
1044
+
1045
+ #: modules/sharedaddy/sharing-sources.php:734
1046
+ msgctxt "share to"
1047
+ msgid "Facebook"
1048
+ msgstr ""
1049
+
1050
+ #: modules/sharedaddy/sharing-sources.php:734
1051
+ msgid "Share on Facebook"
1052
+ msgstr ""
1053
+
1054
+ #: modules/sharedaddy/sharing-sources.php:765
1055
+ msgid "Print"
1056
+ msgstr ""
1057
+
1058
+ #: modules/sharedaddy/sharing-sources.php:769
1059
+ msgctxt "share to"
1060
+ msgid "Print"
1061
+ msgstr ""
1062
+
1063
+ #: modules/sharedaddy/sharing-sources.php:769
1064
+ msgid "Click to print"
1065
+ msgstr ""
1066
+
1067
+ #: modules/sharedaddy/sharing-sources.php:785
1068
+ msgid "Press This"
1069
+ msgstr ""
1070
+
1071
+ #: modules/sharedaddy/sharing-sources.php:813
1072
+ msgctxt "share to"
1073
+ msgid "Press This"
1074
+ msgstr ""
1075
+
1076
+ #: modules/sharedaddy/sharing-sources.php:813
1077
+ msgid "Click to Press This!"
1078
+ msgstr ""
1079
+
1080
+ #: modules/sharedaddy/sharing-sources.php:831
1081
+ msgid "Google +1"
1082
+ msgstr ""
1083
+
1084
+ #: modules/sharedaddy/sharing-sources.php:846
1085
+ msgctxt "share to"
1086
+ msgid "Google +1"
1087
+ msgstr ""
1088
+
1089
+ #: modules/sharedaddy/sharing-sources.php:846
1090
+ msgid "Click to share on Google+"
1091
+ msgstr ""
1092
+
1093
+ #: modules/sharedaddy/sharing-sources.php:935
1094
+ msgid "Click to share"
1095
+ msgstr ""
1096
+
1097
+ #: modules/sharedaddy/sharing-sources.php:990
1098
+ msgid "URL"
1099
+ msgstr ""
1100
+
1101
+ #: modules/sharedaddy/sharing-sources.php:995
1102
+ msgid "Icon"
1103
+ msgstr ""
1104
+
1105
+ #: modules/sharedaddy/sharing-sources.php:1002
1106
+ msgid "Save"
1107
+ msgstr ""
1108
+
1109
+ #: modules/sharedaddy/sharing-sources.php:1003
1110
+ msgid "Remove Service"
1111
+ msgstr ""
1112
+
1113
+ #: modules/sharedaddy/sharing-sources.php:1082
1114
+ msgid "Tumblr"
1115
+ msgstr ""
1116
+
1117
+ #: modules/sharedaddy/sharing-sources.php:1093
1118
+ msgctxt "share to"
1119
+ msgid "Tumblr"
1120
+ msgstr ""
1121
+
1122
+ #: modules/sharedaddy/sharing-sources.php:1093
1123
+ msgid "Click to share on Tumblr"
1124
+ msgstr ""
1125
+
1126
+ #: modules/sharedaddy/sharing-sources.php:1129
1127
+ msgid "Pinterest"
1128
+ msgstr ""
1129
+
1130
+ #: modules/sharedaddy/sharing-sources.php:1159
1131
+ msgid "Pin It"
1132
+ msgstr ""
1133
+
1134
+ #: modules/sharedaddy/sharing-sources.php:1161
1135
+ msgctxt "share to"
1136
+ msgid "Pinterest"
1137
+ msgstr ""
1138
+
1139
+ #: modules/sharedaddy/sharing-sources.php:1161
1140
+ msgid "Click to share on Pinterest"
1141
+ msgstr ""
1142
+
1143
+ #: modules/sharedaddy/sharing.php:153
1144
+ msgid "Warning! Multibyte support missing!"
1145
+ msgstr ""
1146
+
1147
+ #: modules/sharedaddy/sharing.php:154
1148
+ msgid "This plugin will work without it, but multibyte support is used <a href=\"%s\">if available</a>. You may see minor problems with Tweets and other sharing services."
1149
+ msgstr ""
1150
+
1151
+ #: modules/sharedaddy/sharing.php:158
1152
+ msgid "Settings have been saved"
1153
+ msgstr ""
1154
+
1155
+ #: modules/sharedaddy/sharing.php:169
1156
+ msgid "Sharing Buttons"
1157
+ msgstr ""
1158
+
1159
+ #: modules/sharedaddy/sharing.php:170
1160
+ msgid "Add sharing buttons to your blog and allow your visitors to share posts with their friends."
1161
+ msgstr ""
1162
+
1163
+ #: modules/sharedaddy/sharing.php:176
1164
+ msgid "Available Services"
1165
+ msgstr ""
1166
+
1167
+ #: modules/sharedaddy/sharing.php:177
1168
+ msgid "Drag and drop the services you'd like to enable into the box below."
1169
+ msgstr ""
1170
+
1171
+ #: modules/sharedaddy/sharing.php:178
1172
+ msgid "Add a new service"
1173
+ msgstr ""
1174
+
1175
+ #: modules/sharedaddy/sharing.php:198
1176
+ msgid "Enabled Services"
1177
+ msgstr ""
1178
+
1179
+ #: modules/sharedaddy/sharing.php:201
1180
+ msgid "Services dragged here will appear individually."
1181
+ msgstr ""
1182
+
1183
+ #: modules/sharedaddy/sharing.php:204
1184
+ msgid "Drag and drop available services here."
1185
+ msgstr ""
1186
+
1187
+ #: modules/sharedaddy/sharing.php:215
1188
+ msgid "Services dragged here will be hidden behind a share button."
1189
+ msgstr ""
1190
+
1191
+ #: modules/sharedaddy/sharing.php:230
1192
+ msgid "Live Preview"
1193
+ msgstr ""
1194
+
1195
+ #: modules/sharedaddy/sharing.php:233
1196
+ msgid "Sharing is off. Add services above to enable."
1197
+ msgstr ""
1198
+
1199
+ #: modules/module-info.php:638
1200
+ msgid "When you write great content, all you really want is people to find it, right?"
1201
+ msgstr ""
1202
+
1203
+ #: modules/module-info.php:640
1204
+ msgid "With the Infinite Scroll module and a supported theme, that's exactly what happens. Instead of the old way of navigating down a page by scrolling and then clicking a link to get to the next page, waiting for a page refresh&mdash;the document model of the web&mdash;infinite scrolling pulls the next set of posts automatically into view when the reader approaches the bottom of the page, more like an application."
1205
+ msgstr ""
1206
+
1207
+ #: modules/module-info.php:643
1208
+ msgid "At this time, your theme, %s, doesn't support Infinite Scroll. Unlike other Jetpack modules, Infinite Scroll needs information from your theme to function properly."
1209
+ msgstr ""
1210
+
1211
+ #: modules/module-info.php:645
1212
+ msgid "Until your theme supports Infinite Scroll, you won't be able to activate this module."
1213
+ msgstr ""
1214
+
1215
+ #: modules/module-info.php:655
1216
+ msgid "There is an update available for your theme. You may wish to check if this update adds Infinite Scroll support by visiting the <a href=\"%s\">WordPress Updates</a> page."
1217
+ msgstr ""
1218
+
1219
+ #: modules/module-info.php:675 modules/module-info.php:678
1220
+ #: modules/post-by-email.php:89
1221
+ msgid "Post by Email"
1222
+ msgstr ""
1223
+
1224
+ #: modules/module-info.php:680
1225
+ msgid "Post by Email is a way of publishing posts on your blog by email. Any email client can be used to send the email, allowing you to publish quickly and easily from devices such as cell phones."
1226
+ msgstr ""
1227
+
1228
+ #: modules/module-info.php:684
1229
+ msgid "Manage your Post By Email address from your <a href=\"%s\">profile settings</a>."
1230
+ msgstr ""
1231
+
1232
+ #: modules/module-info.php:688
1233
+ msgid "More information on sending emails, attachments, and customizing your posts."
1234
+ msgstr ""
1235
+
1236
+ #: modules/module-info.php:708
1237
+ msgid "Photon"
1238
+ msgstr ""
1239
+
1240
+ #: modules/module-info.php:710
1241
+ msgid "Give your site a boost by loading images in post and posts' featured images from the WordPress.com content delivery network. We cache your images and serve them from our super-fast network, reducing the burden on your web host with the click of a button."
1242
+ msgstr ""
1243
+
1244
+ #: modules/post-by-email.php:92 modules/subscriptions.php:596
1245
+ msgid "Email Address"
1246
+ msgstr "Elektron poçt"
1247
+
1248
+ #: modules/post-by-email.php:107
1249
+ msgid "Enable Post By Email"
1250
+ msgstr ""
1251
+
1252
+ #: modules/post-by-email.php:111 modules/shortcodes/videopress.php:926
1253
+ msgid "More information"
1254
+ msgstr ""
1255
+
1256
+ #: modules/post-by-email.php:114
1257
+ msgid "Regenerate Address"
1258
+ msgstr ""
1259
+
1260
+ #: modules/post-by-email.php:115
1261
+ msgid "Disable Post By Email"
1262
+ msgstr ""
1263
+
1264
+ #: modules/post-by-email.php:123
1265
+ msgid "To use Post By Email, you need to link your %s account to your WordPress.com account."
1266
+ msgstr ""
1267
+
1268
+ #: modules/post-by-email.php:126 modules/publicize/publicize-jetpack.php:58
1269
+ msgid "If you don't have a WordPress.com account yet, you can sign up for free in just a few seconds."
1270
+ msgstr ""
1271
+
1272
+ #: modules/post-by-email.php:167 modules/post-by-email.php:176
1273
+ msgid "Unable to create your Post By Email address. Please try again later."
1274
+ msgstr ""
1275
+
1276
+ #: modules/post-by-email.php:195 modules/post-by-email.php:204
1277
+ msgid "Unable to regenerate your Post By Email address. Please try again later."
1278
+ msgstr ""
1279
+
1280
+ #: modules/post-by-email.php:223 modules/post-by-email.php:232
1281
+ msgid "Unable to disable your Post By Email address. Please try again later."
1282
+ msgstr ""
1283
+
1284
+ #: modules/publicize/publicize-jetpack.php:55
1285
+ msgid "To use Publicize, you'll need to link your %s account to your WordPress.com account using the button to the right."
1286
+ msgstr ""
1287
+
1288
+ #: modules/publicize/publicize-jetpack.php:165
1289
+ msgid "There was a problem connecting to %s to create an authorized connection. Please try again in a moment."
1290
+ msgstr ""
1291
+
1292
+ #: modules/publicize/publicize-jetpack.php:167
1293
+ msgid "There was a problem connecting with Publicize. Please try again in a moment."
1294
+ msgstr ""
1295
+
1296
+ #: modules/publicize/publicize-jetpack.php:313
1297
+ #: modules/publicize/publicize-jetpack.php:329
1298
+ #: modules/publicize/publicize-jetpack.php:453
1299
+ msgid "Publicize to my %s:"
1300
+ msgstr ""
1301
+
1302
+ #: modules/publicize/publicize-jetpack.php:314
1303
+ msgid "Facebook Wall"
1304
+ msgstr ""
1305
+
1306
+ #: modules/publicize/publicize-jetpack.php:330
1307
+ msgid "Facebook Page"
1308
+ msgstr ""
1309
+
1310
+ #: modules/publicize/publicize-jetpack.php:361
1311
+ #: modules/publicize/publicize-jetpack.php:473 modules/publicize/ui.php:214
1312
+ msgid "OK"
1313
+ msgstr ""
1314
+
1315
+ #: modules/publicize/publicize-jetpack.php:454
1316
+ msgid "Tumblr blog"
1317
+ msgstr ""
1318
+
1319
+ #: modules/publicize/ui.php:35 modules/publicize/ui.php:45
1320
+ #: modules/sharedaddy/sharing.php:57 modules/sharedaddy/sharing.php:163
1321
+ msgid "Sharing Settings"
1322
+ msgstr ""
1323
+
1324
+ #: modules/publicize/ui.php:76
1325
+ msgid "You have successfully connected your blog with your %s account."
1326
+ msgstr ""
1327
+
1328
+ #: modules/publicize/ui.php:91
1329
+ msgid "Connect your blog to popular social networking sites and automatically share new posts with your friends."
1330
+ msgstr ""
1331
+
1332
+ #: modules/publicize/ui.php:92
1333
+ msgid "You can make a connection for just yourself or for all users on your blog. Shared connections are marked with the (Shared) text."
1334
+ msgstr ""
1335
+
1336
+ #: modules/publicize/ui.php:153
1337
+ msgid "Shared"
1338
+ msgstr ""
1339
+
1340
+ #: modules/publicize/ui.php:156 modules/publicize/ui.php:160
1341
+ msgid "Disconnect"
1342
+ msgstr ""
1343
+
1344
+ #: modules/publicize/ui.php:169
1345
+ msgid "Add new %s connection."
1346
+ msgstr ""
1347
+
1348
+ #: modules/publicize/ui.php:185
1349
+ msgid "Make this connection available to all users of this blog?"
1350
+ msgstr ""
1351
+
1352
+ #: modules/publicize/ui.php:193
1353
+ msgid "There was a problem connecting to %s. Please disconnect and try again."
1354
+ msgstr ""
1355
+
1356
+ #: modules/publicize/ui.php:383
1357
+ msgid "Publicize:"
1358
+ msgstr ""
1359
+
1360
+ #: modules/publicize/ui.php:429
1361
+ msgctxt "Service: Account connected as"
1362
+ msgid "%1$s: %2$s"
1363
+ msgstr ""
1364
+
1365
+ #: modules/publicize/ui.php:464
1366
+ msgid "Custom Message:"
1367
+ msgstr ""
1368
+
1369
+ #: modules/publicize/ui.php:469 modules/publicize/ui.php:498
1370
+ #: modules/publicize/ui.php:500
1371
+ msgid "Hide"
1372
+ msgstr ""
1373
+
1374
+ #: modules/publicize/ui.php:478
1375
+ msgid "Not Connected"
1376
+ msgstr ""
1377
+
1378
+ #: modules/publicize/ui.php:485
1379
+ msgid "Connect to"
1380
+ msgstr ""
1381
+
1382
+ #: modules/publicize/ui.php:490
1383
+ msgid "Connect and share your posts on %s"
1384
+ msgstr ""
1385
+
1386
+ #: modules/publicize/ui.php:513
1387
+ msgid "Show"
1388
+ msgstr ""
1389
+
1390
+ #: modules/publicize.php:87
1391
+ msgctxt "word count: words or characters?"
1392
+ msgid "words"
1393
+ msgstr ""
1394
+
1395
+ #: modules/sharedaddy/sharedaddy.php:18
1396
+ msgid "Shared Post"
1397
+ msgstr ""
1398
+
1399
+ #: modules/sharedaddy/sharedaddy.php:35
1400
+ msgid "Show sharing buttons."
1401
+ msgstr ""
1402
+
1403
+ #: modules/sharedaddy/sharedaddy.php:112
1404
+ msgid "Disable CSS and JS"
1405
+ msgstr ""
1406
+
1407
+ #: modules/sharedaddy/sharedaddy.php:114
1408
+ msgid "Advanced. If this option is checked, you must include these files in your theme manually for the sharing links to work."
1409
+ msgstr ""
1410
+
1411
+ #: modules/sharedaddy/sharing-service.php:12
1412
+ msgid "Share this:"
1413
+ msgstr ""
1414
+
1415
+ #: modules/sharedaddy/sharing-service.php:523
1416
+ #: modules/sharedaddy/sharing.php:245 modules/sharedaddy/sharing.php:278
1417
+ msgid "More"
1418
+ msgstr ""
1419
+
1420
+ #: modules/sharedaddy/sharing-service.php:525
1421
+ msgid "Share"
1422
+ msgstr ""
1423
+
1424
+ #: modules/sharedaddy/sharing-sources.php:242
1425
+ msgid "This post has been shared!"
1426
+ msgstr ""
1427
+
1428
+ #: modules/sharedaddy/sharing-sources.php:243
1429
+ msgid "You have shared this post with %s"
1430
+ msgstr ""
1431
+
1432
+ #: modules/sharedaddy/sharing-sources.php:244
1433
+ msgid "Close"
1434
+ msgstr "Bağla"
1435
+
1436
+ #: modules/sharedaddy/sharing-sources.php:266
1437
+ msgctxt "share to"
1438
+ msgid "Email"
1439
+ msgstr ""
1440
+
1441
+ #: modules/sharedaddy/sharing-sources.php:266
1442
+ msgid "Click to email this to a friend"
1443
+ msgstr ""
1444
+
1445
+ #: modules/module-info.php:315 modules/module-info.php:318
1446
+ #: modules/module-info.php:339 modules/publicize/ui.php:35
1447
+ #: modules/sharedaddy/sharedaddy.php:25 modules/sharedaddy/sharing.php:57
1448
+ msgid "Sharing"
1449
+ msgstr ""
1450
+
1451
+ #: modules/module-info.php:319
1452
+ msgid "Share your posts with Twitter, Facebook, and a host of other services. You can configure services to appear as icons, text, or both. Some services have additional options to display smart buttons, such as Twitter, which will update the number of times the post has been shared."
1453
+ msgstr ""
1454
+
1455
+ #: modules/module-info.php:323
1456
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, Print, and Email."
1457
+ msgstr ""
1458
+
1459
+ #: modules/module-info.php:325
1460
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, Print, and Email."
1461
+ msgstr ""
1462
+
1463
+ #: modules/module-info.php:329
1464
+ msgid "Additionally you can define your own custom services."
1465
+ msgstr ""
1466
+
1467
+ #: modules/module-info.php:344
1468
+ msgid "To configure your sharing settings, go to the Settings &rarr; <a href=\"%s\">Sharing</a> menu."
1469
+ msgstr ""
1470
+
1471
+ #: modules/module-info.php:345
1472
+ msgid "Drag and drop sharing services into the enabled section to have them show up on your site, and drag them into the hidden section to have them hidden behind a button."
1473
+ msgstr ""
1474
+
1475
+ #: modules/module-info.php:351
1476
+ msgid "Full details can be found on the <a href=\"%s\">Sharing support page</a>. This video also gives a swish run-down of how to use the Sharing feature. Watch it in HD for extra snazz!"
1477
+ msgstr ""
1478
+
1479
+ #: modules/module-info.php:366 modules/module-info.php:370
1480
+ msgid "Spelling and Grammar"
1481
+ msgstr ""
1482
+
1483
+ #: modules/module-info.php:372
1484
+ msgid "The <a href='%s'>After&nbsp;the&nbsp;Deadline</a> Proofreading service improves your writing by using artificial intelligence to find your errors and offer smart suggestions."
1485
+ msgstr ""
1486
+
1487
+ #: modules/module-info.php:373
1488
+ msgid "After the Deadline provides a number of <a href=\"%s\">customization options</a>, which you can edit in your profile."
1489
+ msgstr ""
1490
+
1491
+ #: modules/module-info.php:387 modules/module-info.php:401
1492
+ msgid "Widgets Screenshot"
1493
+ msgstr ""
1494
+
1495
+ #: modules/module-info.php:390 modules/module-info.php:404
1496
+ msgid "Extra Sidebar Widgets"
1497
+ msgstr ""
1498
+
1499
+ #: modules/module-info.php:392
1500
+ msgid "The RSS Links Widget "
1501
+ msgstr ""
1502
+
1503
+ #: modules/module-info.php:392
1504
+ msgid "allows you to add links to your blog&#8217;s post and comment RSS feeds in your sidebar. This makes it easy for your readers to stay updated when you post new content or receive new comments."
1505
+ msgstr ""
1506
+
1507
+ #: modules/module-info.php:393
1508
+ msgid "The Twitter Widget "
1509
+ msgstr ""
1510
+
1511
+ #: modules/module-info.php:393
1512
+ msgid "shows your latest tweets within a sidebar on your theme. It&#8217;s an easy way to add more activity to your site. There are also a number of customization options."
1513
+ msgstr ""
1514
+
1515
+ #: modules/module-info.php:393
1516
+ msgid "The Facebook Like Box Widget "
1517
+ msgstr ""
1518
+
1519
+ #: modules/module-info.php:393
1520
+ msgid "shows your Facebook Like Box within a sidebar on your theme. It&#8217;s a great way to let your readers show their support."
1521
+ msgstr ""
1522
+
1523
+ #: modules/module-info.php:393
1524
+ msgid "The Image Widget "
1525
+ msgstr ""
1526
+
1527
+ #: modules/module-info.php:393
1528
+ msgid "allows you to easily add images to widget areas in your theme. It&#8217;s an easy way to add more visual interest to your site."
1529
+ msgstr ""
1530
+
1531
+ #: modules/module-info.php:406
1532
+ msgid "The RSS Links Widget"
1533
+ msgstr ""
1534
+
1535
+ #: modules/module-info.php:406
1536
+ msgid "lets you easily add post and comment RSS feeds to a sidebar on your theme."
1537
+ msgstr ""
1538
+
1539
+ #: modules/module-info.php:407
1540
+ msgid "The Twitter Widget"
1541
+ msgstr ""
1542
+
1543
+ #: modules/module-info.php:407
1544
+ msgid "shows your latest tweets within a sidebar on your theme."
1545
+ msgstr ""
1546
+
1547
+ #: modules/module-info.php:408
1548
+ msgid "The Facebook Like Box Widget"
1549
+ msgstr ""
1550
+
1551
+ #: modules/module-info.php:408
1552
+ msgid "shows your Facebook Like Box within a sidebar on your theme."
1553
+ msgstr ""
1554
+
1555
+ #: modules/module-info.php:409
1556
+ msgid "The Image Widget"
1557
+ msgstr ""
1558
+
1559
+ #: modules/module-info.php:409
1560
+ msgid "lets you easily add images to a sidebar on your theme."
1561
+ msgstr ""
1562
+
1563
+ #: modules/module-info.php:411
1564
+ msgid "Each of these widgets has a number of customization options."
1565
+ msgstr ""
1566
+
1567
+ #: modules/module-info.php:411
1568
+ msgid "To use the widgets, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag them into one of your sidebars and configure away."
1569
+ msgstr ""
1570
+
1571
+ #: modules/module-info.php:424
1572
+ msgid "Subsriptions Screenshot"
1573
+ msgstr ""
1574
+
1575
+ #: modules/module-info.php:427
1576
+ msgid "Subscriptions"
1577
+ msgstr "Abunəlik"
1578
+
1579
+ #: modules/module-info.php:429
1580
+ msgid "Easily allow any visitor to subscribe to all of your posts via email through a widget in your blog&#8217;s sidebar. Every time you publish a post, WordPress.com will send a notification to all your subscribers."
1581
+ msgstr ""
1582
+
1583
+ #: modules/module-info.php:430
1584
+ msgid "When leaving comments, your visitors can also subscribe to a post&#8217;s comments to keep up with the conversation."
1585
+ msgstr ""
1586
+
1587
+ #: modules/module-info.php:435
1588
+ msgid "To use the Subscriptions widget, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag the widget labeled &#8220;Blog Subscriptions (Jetpack)&#8221; into one of your sidebars and configure away."
1589
+ msgstr ""
1590
+
1591
+ #: modules/module-info.php:436
1592
+ msgid "You can also make changes to your Subscription settings at the bottom of the <a href=\"%s\">Discussion Settings</a> page."
1593
+ msgstr ""
1594
+
1595
+ #: modules/module-info.php:449
1596
+ msgid "Enhanced Distribution"
1597
+ msgstr ""
1598
+
1599
+ #: modules/module-info.php:451
1600
+ msgid "Jetpack will automatically take the great published content from your blog or website and share it instantly with third party services like search engines, increasing your reach and traffic."
1601
+ msgstr ""
1602
+
1603
+ #: modules/module-info.php:466
1604
+ msgid "JSON API"
1605
+ msgstr ""
1606
+
1607
+ #: modules/module-info.php:468
1608
+ msgid "Jetpack will allow you to authorize applications and services to securely connect to your blog and allow them to use your content in new ways and offer you new functionality."
1609
+ msgstr ""
1610
+
1611
+ #: modules/module-info.php:470
1612
+ msgid "Developers can use WordPress.com's <a href='http://developer.wordpress.com/docs/oauth2/'>OAuth2</a> authentication system and <a href='http://developer.wordpress.com/docs/api/'>WordPress.com REST API</a> to manage and access your site's content."
1613
+ msgstr ""
1614
+
1615
+ #: modules/module-info.php:498
1616
+ msgid "A contact form is a great way to offer your readers the ability to get in touch, without giving out your personal email address."
1617
+ msgstr ""
1618
+
1619
+ #: modules/module-info.php:501
1620
+ msgid "Each contact form can easily be customized to fit your needs. When a user submits your contact form, the feedback will be filtered through <a href=\"http://akismet.com/\">Akismet</a> (if it is active on your site) to make sure it’s not spam. Any legitimate feedback will then be emailed to you, and added to your feedback management area."
1621
+ msgstr ""
1622
+
1623
+ #: modules/module-info.php:518
1624
+ msgid "Jetpack Comments Screenshot"
1625
+ msgstr ""
1626
+
1627
+ #: modules/module-info.php:523
1628
+ msgid "Jetpack Comments enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site."
1629
+ msgstr ""
1630
+
1631
+ #: modules/module-info.php:528
1632
+ msgid "Jetpack tries to match your site's color scheme automatically, but you can make manual adjustments at the bottom of the <a href='%s'>Discussion Settings</a> page."
1633
+ msgstr ""
1634
+
1635
+ #: modules/module-info.php:549
1636
+ msgid "Gallery Carousel Screenshot"
1637
+ msgstr ""
1638
+
1639
+ #: modules/module-info.php:552
1640
+ msgid "Carousel"
1641
+ msgstr ""
1642
+
1643
+ #: modules/module-info.php:554
1644
+ msgid "With Carousel active, any standard WordPress galleries you have embedded in posts or pages will launch a gorgeous full-screen photo browsing experience with comments and EXIF metadata."
1645
+ msgstr ""
1646
+
1647
+ #: modules/module-info.php:567 modules/module-info.php:570
1648
+ msgid "Custom CSS"
1649
+ msgstr ""
1650
+
1651
+ #: modules/module-info.php:571
1652
+ msgid "The Custom CSS editor gives you the ability to add to or replace your theme's CSS, all while supplying syntax coloring, auto-indentation, and immediate feedback on the validity of the CSS you're writing."
1653
+ msgstr ""
1654
+
1655
+ #: modules/module-info.php:572
1656
+ msgid "To use the CSS editor, go to Appearance &#8594; <a href=\"%s\">Edit CSS</a>."
1657
+ msgstr ""
1658
+
1659
+ #: modules/module-info.php:589 modules/module-info.php:592
1660
+ msgid "Mobile Theme"
1661
+ msgstr ""
1662
+
1663
+ #: modules/module-info.php:593
1664
+ msgid "There's a good chance that visitors to your site will be using a smartphone, and it's important to provide them with a great reading experience while on the small screen."
1665
+ msgstr ""
1666
+
1667
+ #: modules/module-info.php:594
1668
+ msgid "Jetpack's mobile theme is optimized for small screens. It uses the header image, background, and widgets from your current theme for a great custom look. Post format support is included, so your photos and galleries will look fantastic on a smartphone."
1669
+ msgstr ""
1670
+
1671
+ #: modules/module-info.php:595
1672
+ msgid "Visitors on iPhone, Android, Windows Phone, and other mobile devices will automatically see the mobile theme, with the option to view the full site. You can enable or disable the mobile theme by clicking the \"Activate\" or \"Deactive\" button above."
1673
+ msgstr ""
1674
+
1675
+ #: modules/module-info.php:611 modules/module-info.php:614
1676
+ msgid "Mobile Push Notifications"
1677
+ msgstr ""
1678
+
1679
+ #: modules/module-info.php:616
1680
+ msgid "If you have your blog added to the <a href=\"http://ios.wordpress.org/\">WordPress for iOS app</a>, you’ll now be able to opt in to receive push notifications of new comments, which makes it easier than ever to keep up with your readers and moderate comments on the go."
1681
+ msgstr ""
1682
+
1683
+ #: modules/module-info.php:635
1684
+ msgid "Infinite Scroll"
1685
+ msgstr ""
1686
+
1687
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:70
1688
+ msgid "Your comment is awaiting moderation."
1689
+ msgstr ""
1690
+
1691
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:79
1692
+ msgid "Reply <span>&darr;</span>"
1693
+ msgstr ""
1694
+
1695
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:93
1696
+ msgid "<span class=\"entry-date\"><a href=\"%1$s\" title=\"%2$s\" rel=\"bookmark\"><time datetime=\"%3$s\" pubdate>%4$s</time></a></span>"
1697
+ msgstr ""
1698
+
1699
+ #: modules/minileven/theme/pub/minileven/index.php:23
1700
+ msgid "Daily Archives: %s"
1701
+ msgstr "Gündəlik Arxivləşdirmə: %s"
1702
+
1703
+ #: modules/minileven/theme/pub/minileven/index.php:25
1704
+ msgid "Monthly Archives: %s"
1705
+ msgstr "Aylıq arxiv: %s"
1706
+
1707
+ #: modules/minileven/theme/pub/minileven/index.php:27
1708
+ msgid "Yearly Archives: %s"
1709
+ msgstr ""
1710
+
1711
+ #: modules/minileven/theme/pub/minileven/index.php:29
1712
+ msgid "Posted in %s"
1713
+ msgstr ""
1714
+
1715
+ #: modules/minileven/theme/pub/minileven/index.php:31
1716
+ msgid "Tagged with %s"
1717
+ msgstr ""
1718
+
1719
+ #: modules/minileven/theme/pub/minileven/index.php:33
1720
+ msgid "Posted by"
1721
+ msgstr ""
1722
+
1723
+ #: modules/minileven/theme/pub/minileven/index.php:35
1724
+ msgid "Blog Archives"
1725
+ msgstr ""
1726
+
1727
+ #: modules/minileven/theme/pub/minileven/index.php:43
1728
+ msgid "Search Results for: %s"
1729
+ msgstr ""
1730
+
1731
+ #: modules/minileven/theme/pub/minileven/index.php:57
1732
+ msgid "Nothing Found"
1733
+ msgstr ""
1734
+
1735
+ #: modules/minileven/theme/pub/minileven/index.php:61
1736
+ msgid "Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post."
1737
+ msgstr ""
1738
+
1739
+ #: modules/minileven/theme/pub/minileven/searchform.php:9
1740
+ #: modules/minileven/theme/pub/minileven/searchform.php:10
1741
+ #: modules/minileven/theme/pub/minileven/searchform.php:11
1742
+ msgid "Search"
1743
+ msgstr "Axtar"
1744
+
1745
+ #: modules/minileven.php:48
1746
+ msgid "Excerpts"
1747
+ msgstr ""
1748
+
1749
+ #: modules/minileven.php:52
1750
+ msgid "Enable excerpts on front page and on archive pages"
1751
+ msgstr ""
1752
+
1753
+ #: modules/minileven.php:57
1754
+ msgid "Show full posts on front page and on archive pages"
1755
+ msgstr ""
1756
+
1757
+ #: modules/minileven.php:62
1758
+ msgid "Mobile App Promos"
1759
+ msgstr ""
1760
+
1761
+ #: modules/minileven.php:66
1762
+ msgid "Show a promo for the WordPress mobile apps in the footer of the mobile theme."
1763
+ msgstr ""
1764
+
1765
+ #: modules/minileven.php:75
1766
+ msgid "Mobile Apps"
1767
+ msgstr ""
1768
+
1769
+ #: modules/minileven.php:76
1770
+ msgid "Take WordPress with you."
1771
+ msgstr ""
1772
+
1773
+ #: modules/minileven.php:78
1774
+ msgid "We have apps for <a href=\"%s\">iOS (iPhone, iPad, iPod Touch)</a>, <a href=\"%s\">Android</a>, <a href=\"%s\">BlackBerry</a>, <a href=\"%s\">Windows Phone</a>, and <a href=\"%s\">more</a>!"
1775
+ msgstr ""
1776
+
1777
+ #: modules/module-info.php:22 modules/module-info.php:26
1778
+ msgid "VaultPress"
1779
+ msgstr ""
1780
+
1781
+ #: modules/module-info.php:28
1782
+ msgid "Your WordPress installation is currently being protected with the world&#8217;s best security, backup, and support."
1783
+ msgstr ""
1784
+
1785
+ #: modules/module-info.php:29
1786
+ msgctxt "Visit your _VaultPress_dashboard_."
1787
+ msgid "To check your backups, see any security alerts, or check your VaultPress Vitality, visit your %s."
1788
+ msgstr ""
1789
+
1790
+ #: modules/module-info.php:29
1791
+ msgid "VaultPress dashboard"
1792
+ msgstr ""
1793
+
1794
+ #: modules/module-info.php:31
1795
+ msgid "With a monthly subscription, the VaultPress plugin will backup your site&#8217;s content, themes, and plugins in real-time, as well as perform regular security scans for common threats and attacks."
1796
+ msgstr ""
1797
+
1798
+ #: modules/module-info.php:32
1799
+ msgctxt "View _Plans_&_Pricing_. (VaultPress)"
1800
+ msgid "View %s."
1801
+ msgstr ""
1802
+
1803
+ #: modules/module-info.php:32
1804
+ msgid "Plans & Pricing"
1805
+ msgstr ""
1806
+
1807
+ #: modules/module-info.php:53 modules/module-info.php:68
1808
+ msgid "Gravatar Hovercard"
1809
+ msgstr ""
1810
+
1811
+ #: modules/module-info.php:58 modules/module-info.php:73
1812
+ msgid "What&#8217;s a Hovercard?"
1813
+ msgstr ""
1814
+
1815
+ #: modules/module-info.php:59
1816
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services they use on the web like Twitter, Facebook, or LinkedIn."
1817
+ msgstr ""
1818
+
1819
+ #: modules/module-info.php:60
1820
+ msgid "Hovercards offer a great way to show your internet presence and help people find your own blog."
1821
+ msgstr ""
1822
+
1823
+ #: modules/module-info.php:74
1824
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services."
1825
+ msgstr ""
1826
+
1827
+ #: modules/module-info.php:75
1828
+ msgid "To see hovercards, look at any blog post on your blog that has comments. If the commenter has a hovercard associated with their gravatar, mouse over their image and the hovercard will appear. To turn hovercards off, click the Deactivate button above."
1829
+ msgstr ""
1830
+
1831
+ #: modules/module-info.php:90 modules/module-info.php:94
1832
+ #: modules/module-info.php:103 modules/module-info.php:107
1833
+ msgid "Shortcode Embeds"
1834
+ msgstr ""
1835
+
1836
+ #: modules/module-info.php:95 modules/module-info.php:108
1837
+ msgid "Shortcodes allow you to easily and safely embed media from other places in your site. With just one simple code, you can tell WordPress to embed YouTube, Flickr, and other media."
1838
+ msgstr ""
1839
+
1840
+ #: modules/module-info.php:109
1841
+ msgid "Enter a shortcode directly into the Post/Page editor to embed media. For specific instructions follow the links below."
1842
+ msgstr ""
1843
+
1844
+ #: modules/module-info.php:132
1845
+ msgid "Available shortcodes are: %l."
1846
+ msgstr ""
1847
+
1848
+ #: modules/module-info.php:147 modules/module-info.php:151
1849
+ #: modules/module-info.php:161 modules/module-info.php:165
1850
+ msgid "WP.me Shortlinks"
1851
+ msgstr ""
1852
+
1853
+ #: modules/module-info.php:152 modules/module-info.php:166
1854
+ msgid "Instead of typing or copy-pasting long URLs, you can now get a short and simple link to your posts and pages. This uses the super compact wp.me domain name, and gives you a unique URL you can use that will be safe and reliable."
1855
+ msgstr ""
1856
+
1857
+ #: modules/module-info.php:153
1858
+ msgid "It&#8217;s perfect for use on Twitter, Facebook, and cell phone text messages where every character counts."
1859
+ msgstr ""
1860
+
1861
+ #: modules/module-info.php:167
1862
+ msgid "To use shortlinks, go to any already published post (or publish something new!). A &#8220;Get Shortlink&#8221; button will be visible under the Post title. When you click it, a dialog box will appear with the shortlink and you can copy and paste to Twitter, Facebook or wherever your heart desires."
1863
+ msgstr ""
1864
+
1865
+ #: modules/module-info.php:182 modules/module-info.php:186
1866
+ #: modules/module-info.php:195 modules/module-info.php:199
1867
+ msgid "WordPress.com Stats"
1868
+ msgstr ""
1869
+
1870
+ #: modules/module-info.php:187 modules/module-info.php:200
1871
+ msgid "There are many plugins and services that provide statistics, but data can be overwhelming. WordPress.com Stats makes the most popular metrics easy to understand through a clear and attractive interface."
1872
+ msgstr ""
1873
+
1874
+ #: modules/module-info.php:201
1875
+ msgid "You can <a href=\"%s\">view your stats dashboard here</a>."
1876
+ msgstr ""
1877
+
1878
+ #: modules/module-info.php:215 modules/module-info.php:219
1879
+ #: modules/publicize/ui.php:89
1880
+ msgid "Publicize"
1881
+ msgstr ""
1882
+
1883
+ #: modules/module-info.php:220
1884
+ msgid "Publicize allows you to connect your blog to popular social networking sites and automatically share new posts with your friends.\t You can make a connection for just yourself or for all users on your blog."
1885
+ msgstr ""
1886
+
1887
+ #: modules/module-info.php:221
1888
+ msgid "Publicize allows you to share your posts on Facebook, Twitter, Tumblr, Yahoo!, and Linkedin."
1889
+ msgstr ""
1890
+
1891
+ #: modules/module-info.php:225
1892
+ msgid "Manage your <a href=\"%s\">Publicize settings</a>."
1893
+ msgstr ""
1894
+
1895
+ #: modules/module-info.php:229 modules/publicize/ui.php:102
1896
+ msgid "More information on using Publicize."
1897
+ msgstr ""
1898
+
1899
+ #: modules/module-info.php:245 modules/module-info.php:249
1900
+ #: modules/module-info.php:258 modules/module-info.php:262
1901
+ #: modules/notes.php:106
1902
+ msgid "Notifications"
1903
+ msgstr ""
1904
+
1905
+ #: modules/module-info.php:250 modules/module-info.php:263
1906
+ msgid "Keep up with the latest happenings on all your WordPress sites and interact with other WordPress.com users."
1907
+ msgstr ""
1908
+
1909
+ #: modules/module-info.php:264
1910
+ msgid "You can view your notifications in the Toolbar and <a href=\"%s\">on WordPress.com</a>."
1911
+ msgstr ""
1912
+
1913
+ #: modules/module-info.php:279 modules/module-info.php:294
1914
+ msgid "LaTeX"
1915
+ msgstr ""
1916
+
1917
+ #: modules/module-info.php:284 modules/module-info.php:299
1918
+ msgid "%s is a powerful markup language for writing complex mathematical equations, formulas, etc."
1919
+ msgstr ""
1920
+
1921
+ #: modules/module-info.php:285
1922
+ msgid "Jetpack combines the power of %s and the simplicity of WordPress to give you the ultimate in math blogging platforms."
1923
+ msgstr ""
1924
+
1925
+ #: modules/module-info.php:286
1926
+ msgid "Wow, that sounds nerdy."
1927
+ msgstr ""
1928
+
1929
+ #: modules/module-info.php:300
1930
+ msgid "Use <code>$latex your latex code here$</code> or <code>[latex]your latex code here[/latex]</code> to include %s in your posts and comments. There are <a href=\"%s\" target=\"_blank\">all sorts of options</a> available."
1931
+ msgstr ""
1932
+
1933
+ #: modules/custom-css/custom-css.php:865
1934
+ msgid "Preview"
1935
+ msgstr "Görünüş"
1936
+
1937
+ #: modules/custom-css/custom-css.php:866
1938
+ msgid "Save Stylesheet &amp; Buy Upgrade"
1939
+ msgstr ""
1940
+
1941
+ #: modules/custom-css/custom-css.php:866
1942
+ msgid "Save Stylesheet"
1943
+ msgstr ""
1944
+
1945
+ #: modules/custom-css/custom-css.php:871
1946
+ msgid "CSS Settings"
1947
+ msgstr ""
1948
+
1949
+ #: modules/custom-css/custom-css.php:878
1950
+ msgid "CSS Revisions"
1951
+ msgstr ""
1952
+
1953
+ #: modules/custom-css/custom-css.php:916
1954
+ msgid "Add my CSS to <strong>%s&apos;s</strong> CSS stylesheet."
1955
+ msgstr ""
1956
+
1957
+ #: modules/custom-css/custom-css.php:917
1958
+ msgid "Don&apos;t use <strong>%s&apos;s</strong> CSS, and replace everything with my own CSS."
1959
+ msgstr ""
1960
+
1961
+ #: modules/custom-css/custom-css.php:919
1962
+ msgid "<a href=\"%s\">View the original stylesheet</a> for the %s theme. Use this as a reference and do not copy and paste all of it into the CSS Editor."
1963
+ msgstr ""
1964
+
1965
+ #: modules/gravatar-hovercards.php:44 modules/module-info.php:57
1966
+ #: modules/module-info.php:72
1967
+ msgid "Gravatar Hovercards"
1968
+ msgstr ""
1969
+
1970
+ #: modules/gravatar-hovercards.php:56
1971
+ msgid "View people's profiles when you mouse over their Gravatars"
1972
+ msgstr ""
1973
+
1974
+ #: modules/gravatar-hovercards.php:83
1975
+ msgid "Put your mouse over your Gravatar to check out your profile."
1976
+ msgstr ""
1977
+
1978
+ #: modules/infinite-scroll/infinity.php:238
1979
+ msgid "To infinity and beyond"
1980
+ msgstr ""
1981
+
1982
+ #: modules/infinite-scroll/infinity.php:247
1983
+ msgid "We've disabled this option for you since you have footer widgets in Appearance &rarr; Widgets, or because your theme does not support infinite scroll."
1984
+ msgstr ""
1985
+
1986
+ #: modules/infinite-scroll/infinity.php:253
1987
+ msgid "Scroll Infinitely"
1988
+ msgstr ""
1989
+
1990
+ #: modules/infinite-scroll/infinity.php:253
1991
+ msgid "(Shows %s posts on each load)"
1992
+ msgstr ""
1993
+
1994
+ #: modules/infinite-scroll/infinity.php:442
1995
+ msgid "Load more posts"
1996
+ msgstr ""
1997
+
1998
+ #: modules/infinite-scroll/infinity.php:443
1999
+ msgid "Scroll back to top"
2000
+ msgstr ""
2001
+
2002
+ #: modules/infinite-scroll/infinity.php:813
2003
+ msgid "Theme: %1$s."
2004
+ msgstr ""
2005
+
2006
+ #: modules/infinite-scroll.php:79
2007
+ msgid "Use Google Analytics with Infinite Scroll"
2008
+ msgstr ""
2009
+
2010
+ #: modules/infinite-scroll.php:90
2011
+ msgid "Track each Infinite Scroll post load as a page view in Google Analytics"
2012
+ msgstr ""
2013
+
2014
+ #: modules/infinite-scroll.php:90
2015
+ msgid "By checking the box above, each new set of posts loaded via Infinite Scroll will be recorded as a page view in Google Analytics."
2016
+ msgstr ""
2017
+
2018
+ #: modules/minileven/minileven.php:90
2019
+ msgid "View Mobile Site"
2020
+ msgstr ""
2021
+
2022
+ #: modules/minileven/minileven.php:254
2023
+ msgid "Apply this CSS to the Mobile Theme"
2024
+ msgstr ""
2025
+
2026
+ #: modules/minileven/theme/pub/minileven/comments.php:15
2027
+ msgid "This post is password protected. Enter the password to view any comments."
2028
+ msgstr ""
2029
+
2030
+ #: modules/minileven/theme/pub/minileven/comments.php:45
2031
+ msgid "Comment navigation"
2032
+ msgstr ""
2033
+
2034
+ #: modules/minileven/theme/pub/minileven/comments.php:46
2035
+ msgid "&larr; Older Comments"
2036
+ msgstr ""
2037
+
2038
+ #: modules/minileven/theme/pub/minileven/comments.php:47
2039
+ msgid "Newer Comments &rarr;"
2040
+ msgstr ""
2041
+
2042
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:14
2043
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:58
2044
+ #: modules/minileven/theme/pub/minileven/content.php:13
2045
+ #: modules/minileven/theme/pub/minileven/content.php:17
2046
+ msgid "Permalink to %s"
2047
+ msgstr ""
2048
+
2049
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:15
2050
+ msgid "Gallery"
2051
+ msgstr ""
2052
+
2053
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:21
2054
+ #: modules/minileven/theme/pub/minileven/content.php:36
2055
+ #: modules/minileven/theme/pub/minileven/inc/tweaks.php:26
2056
+ msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
2057
+ msgstr ""
2058
+
2059
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:57
2060
+ msgid "This gallery contains <a %1$s>%2$s photo</a>."
2061
+ msgid_plural "This gallery contains <a %1$s>%2$s photos</a>."
2062
+ msgstr[0] ""
2063
+ msgstr[1] ""
2064
+
2065
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:65
2066
+ #: modules/minileven/theme/pub/minileven/content.php:38
2067
+ #: modules/minileven/theme/pub/minileven/image.php:64
2068
+ #: modules/minileven/theme/pub/minileven/page.php:27
2069
+ msgid "Pages:"
2070
+ msgstr ""
2071
+
2072
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2073
+ #: modules/minileven/theme/pub/minileven/content.php:46
2074
+ #: modules/minileven/theme/pub/minileven/image.php:80
2075
+ msgid "<b>1</b> Reply"
2076
+ msgstr ""
2077
+
2078
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2079
+ #: modules/minileven/theme/pub/minileven/content.php:46
2080
+ #: modules/minileven/theme/pub/minileven/image.php:80
2081
+ msgid "<b>%</b> Replies"
2082
+ msgstr ""
2083
+
2084
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:74
2085
+ #: modules/minileven/theme/pub/minileven/content.php:48
2086
+ #: modules/minileven/theme/pub/minileven/image.php:82
2087
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:66
2088
+ #: modules/minileven/theme/pub/minileven/page.php:31
2089
+ #: modules/publicize/ui.php:511
2090
+ msgid "Edit"
2091
+ msgstr "Redaktə et"
2092
+
2093
+ #: modules/minileven/theme/pub/minileven/content.php:14
2094
+ msgid "Featured"
2095
+ msgstr ""
2096
+
2097
+ #: modules/minileven/theme/pub/minileven/content.php:23
2098
+ msgid "Posted by "
2099
+ msgstr ""
2100
+
2101
+ #: modules/minileven/theme/pub/minileven/content.php:25
2102
+ msgid "%s"
2103
+ msgstr ""
2104
+
2105
+ #: modules/minileven/theme/pub/minileven/content.php:46
2106
+ #: modules/minileven/theme/pub/minileven/image.php:80
2107
+ msgid "Leave a reply"
2108
+ msgstr ""
2109
+
2110
+ #: modules/minileven/theme/pub/minileven/content.php:54
2111
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:19
2112
+ msgid "Post navigation"
2113
+ msgstr ""
2114
+
2115
+ #: modules/minileven/theme/pub/minileven/content.php:55
2116
+ msgid "&laquo; Previous"
2117
+ msgstr "&laquo; Əvvəlki"
2118
+
2119
+ #: modules/minileven/theme/pub/minileven/content.php:56
2120
+ msgid "Next &raquo;"
2121
+ msgstr ""
2122
+
2123
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2124
+ msgid "http://wordpress.org/"
2125
+ msgstr ""
2126
+
2127
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2128
+ msgid "Semantic Personal Publishing Platform"
2129
+ msgstr ""
2130
+
2131
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2132
+ msgid "Proudly powered by %s"
2133
+ msgstr ""
2134
+
2135
+ #: modules/minileven/theme/pub/minileven/functions.php:54
2136
+ msgid "Primary Menu"
2137
+ msgstr ""
2138
+
2139
+ #: modules/minileven/theme/pub/minileven/functions.php:92
2140
+ msgid "Main Sidebar"
2141
+ msgstr ""
2142
+
2143
+ #: modules/minileven/theme/pub/minileven/header.php:32
2144
+ msgid "Page %s"
2145
+ msgstr ""
2146
+
2147
+ #: modules/minileven/theme/pub/minileven/header.php:50
2148
+ msgid "Menu"
2149
+ msgstr "Menyu"
2150
+
2151
+ #: modules/minileven/theme/pub/minileven/header.php:53
2152
+ msgid "Skip to primary content"
2153
+ msgstr ""
2154
+
2155
+ #: modules/minileven/theme/pub/minileven/image.php:73
2156
+ msgid "<span class=\"entry-gallery\">&laquo; <a href=\"%1$s\" title=\"Back to %2$s\" rel=\"gallery\">Back to Gallery</a></span>"
2157
+ msgstr ""
2158
+
2159
+ #: modules/minileven/theme/pub/minileven/image.php:87
2160
+ msgid "Image navigation"
2161
+ msgstr ""
2162
+
2163
+ #: modules/minileven/theme/pub/minileven/image.php:88
2164
+ msgid "&raquo; Previous"
2165
+ msgstr ""
2166
+
2167
+ #: modules/minileven/theme/pub/minileven/image.php:89
2168
+ msgid "Next &raquo; "
2169
+ msgstr ""
2170
+
2171
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:20
2172
+ msgid "<span class=\"meta-nav\">&laquo;</span> Older"
2173
+ msgstr ""
2174
+
2175
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:21
2176
+ msgid "Newer <span class=\"meta-nav\">&raquo;</span>"
2177
+ msgstr ""
2178
+
2179
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:38
2180
+ msgid "Pingback:"
2181
+ msgstr ""
2182
+
2183
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:55
2184
+ msgid "%1$s on %2$s"
2185
+ msgstr ""
2186
+
2187
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:61
2188
+ msgid "%1$s at %2$s"
2189
+ msgstr ""
2190
+
2191
+ #: modules/contact-form/grunion-contact-form.php:1242
2192
+ msgid "%s is required"
2193
+ msgstr ""
2194
+
2195
+ #: modules/contact-form/grunion-contact-form.php:1289
2196
+ #: modules/contact-form/grunion-contact-form.php:1295
2197
+ #: modules/contact-form/grunion-contact-form.php:1300
2198
+ #: modules/contact-form/grunion-contact-form.php:1314
2199
+ #: modules/contact-form/grunion-contact-form.php:1320
2200
+ #: modules/contact-form/grunion-contact-form.php:1333
2201
+ msgid "(required)"
2202
+ msgstr "(tələb olunur)"
2203
+
2204
+ #: modules/contact-form/grunion-contact-form.php:1313
2205
+ msgid "Yes"
2206
+ msgstr ""
2207
+
2208
+ #: modules/contact-form/grunion-form-view.php:8
2209
+ msgctxt "Label for HTML form \"Name\" field in contact form builder"
2210
+ msgid "Name"
2211
+ msgstr ""
2212
+
2213
+ #: modules/contact-form/grunion-form-view.php:9
2214
+ msgctxt "Label for HTML form \"Email\" field in contact form builder"
2215
+ msgid "Email"
2216
+ msgstr ""
2217
+
2218
+ #: modules/contact-form/grunion-form-view.php:10
2219
+ msgctxt "Label for HTML form \"URL/Website\" field in contact form builder"
2220
+ msgid "Website"
2221
+ msgstr ""
2222
+
2223
+ #: modules/contact-form/grunion-form-view.php:11
2224
+ msgctxt "Label for HTML form \"Comment/Response\" field in contact form builder"
2225
+ msgid "Comment"
2226
+ msgstr ""
2227
+
2228
+ #: modules/contact-form/grunion-form-view.php:12
2229
+ msgctxt "Default label for new HTML form field in contact form builder"
2230
+ msgid "New Field"
2231
+ msgstr ""
2232
+
2233
+ #: modules/contact-form/grunion-form-view.php:13
2234
+ msgctxt "Label for the set of options to be included in a user-created dropdown in contact form builder"
2235
+ msgid "Options"
2236
+ msgstr ""
2237
+
2238
+ #: modules/contact-form/grunion-form-view.php:14
2239
+ msgctxt "Label for an option to be included in a user-created dropdown in contact form builder"
2240
+ msgid "Option"
2241
+ msgstr ""
2242
+
2243
+ #: modules/contact-form/grunion-form-view.php:15
2244
+ msgctxt "Default label for the first option to be included in a user-created dropdown in contact form builder"
2245
+ msgid "First option"
2246
+ msgstr ""
2247
+
2248
+ #: modules/contact-form/grunion-form-view.php:16
2249
+ msgctxt "error message in contact form builder"
2250
+ msgid "Oops, there was a problem generating your form. You'll likely need to try again."
2251
+ msgstr ""
2252
+
2253
+ #: modules/contact-form/grunion-form-view.php:17
2254
+ msgid ""
2255
+ "Drag up or down\n"
2256
+ "to re-arrange"
2257
+ msgstr ""
2258
+
2259
+ #: modules/contact-form/grunion-form-view.php:18
2260
+ msgctxt "Label to drag HTML form fields around to change their order in contact form builder"
2261
+ msgid "move"
2262
+ msgstr ""
2263
+
2264
+ #: modules/contact-form/grunion-form-view.php:19
2265
+ msgctxt "Link to edit an HTML form field in contact form builder"
2266
+ msgid "edit"
2267
+ msgstr ""
2268
+
2269
+ #: modules/contact-form/grunion-form-view.php:20
2270
+ msgid "Saved successfully"
2271
+ msgstr ""
2272
+
2273
+ #: modules/contact-form/grunion-form-view.php:21
2274
+ msgctxt "This HTML form field is marked as required by the user in contact form builder"
2275
+ msgid "(required)"
2276
+ msgstr ""
2277
+
2278
+ #: modules/contact-form/grunion-form-view.php:22
2279
+ msgid "Are you sure you want to exit the form editor without saving? Any changes you have made will be lost."
2280
+ msgstr ""
2281
+
2282
+ #: modules/contact-form/grunion-form-view.php:30 modules/module-info.php:491
2283
+ #: modules/module-info.php:495
2284
+ msgid "Contact Form"
2285
+ msgstr ""
2286
+
2287
+ #: modules/contact-form/grunion-form-view.php:118
2288
+ msgid "Your new field was saved successfully"
2289
+ msgstr ""
2290
+
2291
+ #: modules/contact-form/grunion-form-view.php:120
2292
+ msgid "Form builder"
2293
+ msgstr ""
2294
+
2295
+ #: modules/contact-form/grunion-form-view.php:121
2296
+ msgid "Email notifications"
2297
+ msgstr ""
2298
+
2299
+ #: modules/contact-form/grunion-form-view.php:126
2300
+ msgid "How does this work?"
2301
+ msgstr ""
2302
+
2303
+ #: modules/contact-form/grunion-form-view.php:127
2304
+ msgid "By adding a contact form, your readers will be able to submit feedback to you. All feedback is automatically scanned for spam, and the legitimate feedback will be emailed to you."
2305
+ msgstr ""
2306
+
2307
+ #: modules/contact-form/grunion-form-view.php:128
2308
+ msgid "Can I add more fields?"
2309
+ msgstr ""
2310
+
2311
+ #: modules/contact-form/grunion-form-view.php:130
2312
+ msgctxt "%1$s = \"Click here\" in an HTML link"
2313
+ msgid "Sure thing. %1$s to add a new text box, textarea, radio, checkbox, or dropdown field."
2314
+ msgstr ""
2315
+
2316
+ #: modules/contact-form/grunion-form-view.php:131
2317
+ msgid "Click here"
2318
+ msgstr ""
2319
+
2320
+ #: modules/contact-form/grunion-form-view.php:133
2321
+ msgid "Can I view my feedback within WordPress?"
2322
+ msgstr ""
2323
+
2324
+ #: modules/contact-form/grunion-form-view.php:135
2325
+ msgctxt "%1$s = \"Feedbacks\" in an HTML link"
2326
+ msgid "Yep, you can read your feedback at any time by clicking the \"%1$s\" link in the admin menu."
2327
+ msgstr ""
2328
+
2329
+ #: modules/contact-form/grunion-form-view.php:141
2330
+ msgid "Do I need to fill this out?"
2331
+ msgstr ""
2332
+
2333
+ #: modules/contact-form/grunion-form-view.php:142
2334
+ msgid "Nope. However, if you&#8217;d like to modify where your feedback is sent, or the subject line you can. If you don&#8217;t make any changes here, feedback will be sent to the author of the page/post and the subject will be the name of this page/post."
2335
+ msgstr ""
2336
+
2337
+ #: modules/contact-form/grunion-form-view.php:146
2338
+ msgid "Edit this new field"
2339
+ msgstr ""
2340
+
2341
+ #: modules/contact-form/grunion-form-view.php:148
2342
+ #: modules/sharedaddy/sharing-sources.php:985
2343
+ msgid "Label"
2344
+ msgstr ""
2345
+
2346
+ #: modules/contact-form/grunion-form-view.php:149
2347
+ msgid "New field"
2348
+ msgstr ""
2349
+
2350
+ #: modules/contact-form/grunion-form-view.php:151
2351
+ msgid "Field type"
2352
+ msgstr ""
2353
+
2354
+ #: modules/contact-form/grunion-form-view.php:153
2355
+ msgid "Checkbox"
2356
+ msgstr ""
2357
+
2358
+ #: modules/contact-form/grunion-form-view.php:154
2359
+ msgid "Drop down"
2360
+ msgstr ""
2361
+
2362
+ #: modules/contact-form/grunion-form-view.php:157
2363
+ msgid "Radio"
2364
+ msgstr ""
2365
+
2366
+ #: modules/contact-form/grunion-form-view.php:158
2367
+ msgid "Text"
2368
+ msgstr "Mətn"
2369
+
2370
+ #: modules/contact-form/grunion-form-view.php:159
2371
+ msgid "Textarea"
2372
+ msgstr ""
2373
+
2374
+ #: modules/contact-form/grunion-form-view.php:166
2375
+ msgid "Options"
2376
+ msgstr ""
2377
+
2378
+ #: modules/contact-form/grunion-form-view.php:167
2379
+ msgid "First option"
2380
+ msgstr ""
2381
+
2382
+ #: modules/contact-form/grunion-form-view.php:170
2383
+ msgid "Add another option"
2384
+ msgstr ""
2385
+
2386
+ #: modules/contact-form/grunion-form-view.php:177
2387
+ msgid "Required?"
2388
+ msgstr ""
2389
+
2390
+ #: modules/contact-form/grunion-form-view.php:182
2391
+ msgid "Save this field"
2392
+ msgstr ""
2393
+
2394
+ #: modules/contact-form/grunion-form-view.php:187
2395
+ msgid "Here&#8217;s what your form will look like"
2396
+ msgstr ""
2397
+
2398
+ #: modules/contact-form/grunion-form-view.php:192
2399
+ msgid "Add a new field"
2400
+ msgstr ""
2401
+
2402
+ #: modules/contact-form/grunion-form-view.php:194
2403
+ msgid "Add this form to my post"
2404
+ msgstr ""
2405
+
2406
+ #: modules/contact-form/grunion-form-view.php:197
2407
+ msgid "Email settings"
2408
+ msgstr ""
2409
+
2410
+ #: modules/contact-form/grunion-form-view.php:199
2411
+ msgid "Enter your email address"
2412
+ msgstr ""
2413
+
2414
+ #: modules/contact-form/grunion-form-view.php:202
2415
+ msgid "What should the subject line be?"
2416
+ msgstr ""
2417
+
2418
+ #: modules/contact-form/grunion-form-view.php:205
2419
+ msgid "Save and go back to form builder"
2420
+ msgstr ""
2421
+
2422
+ #: modules/custom-css/custom-css.php:486
2423
+ msgid ""
2424
+ "Welcome to Custom CSS!\n"
2425
+ "\n"
2426
+ "CSS (Cascading Style Sheets) is a kind of code that tells the browser how to render a web page. You may delete these comments and get started with your customizations.\n"
2427
+ "\n"
2428
+ "By default, your stylesheet will be loaded after the theme stylesheets, which means that your rules can take precedence and override the theme CSS rules. Just write here what you want to change, you don't need to copy all your theme's stylesheet content."
2429
+ msgstr ""
2430
+
2431
+ #: modules/custom-css/custom-css.php:595
2432
+ msgid "Preview: changes must be saved or they will be lost"
2433
+ msgstr ""
2434
+
2435
+ #: modules/custom-css/custom-css.php:623
2436
+ msgid "Edit CSS"
2437
+ msgstr ""
2438
+
2439
+ #: modules/custom-css/custom-css.php:637
2440
+ msgid "CSS"
2441
+ msgstr ""
2442
+
2443
+ #: modules/custom-css/custom-css.php:676
2444
+ msgid "Custom CSS Stylesheet"
2445
+ msgstr ""
2446
+
2447
+ #: modules/custom-css/custom-css.php:836
2448
+ msgid "Stylesheet saved."
2449
+ msgstr ""
2450
+
2451
+ #: modules/custom-css/custom-css.php:844
2452
+ msgid "CSS Stylesheet Editor"
2453
+ msgstr ""
2454
+
2455
+ #: modules/custom-css/custom-css.php:845
2456
+ msgid ""
2457
+ "New to CSS? Start with a <a href=\"http://www.htmldog.com/guides/cssbeginner/\">beginner tutorial</a>. Questions?\n"
2458
+ "\tAsk in the <a href=\"http://wordpress.org/support/forum/themes-and-templates\">Themes and Templates forum</a>."
2459
+ msgstr ""
2460
+
2461
+ #: modules/carousel/jetpack-carousel.php:443
2462
+ msgid "White"
2463
+ msgstr ""
2464
+
2465
+ #: modules/carousel/jetpack-carousel.php:451
2466
+ msgid "Display images in full-size carousel slideshow."
2467
+ msgstr ""
2468
+
2469
+ #: modules/comments/admin.php:50 modules/comments/comments.php:178
2470
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2471
+ msgid "Leave a Reply"
2472
+ msgstr "Cavab qoy "
2473
+
2474
+ #: modules/comments/admin.php:54 modules/widgets/facebook-likebox.php:147
2475
+ msgid "Light"
2476
+ msgstr ""
2477
+
2478
+ #: modules/comments/admin.php:55 modules/widgets/facebook-likebox.php:148
2479
+ msgid "Dark"
2480
+ msgstr ""
2481
+
2482
+ #: modules/comments/admin.php:56
2483
+ msgid "Transparent"
2484
+ msgstr ""
2485
+
2486
+ #: modules/comments/admin.php:72 modules/module-info.php:521
2487
+ msgid "Jetpack Comments"
2488
+ msgstr ""
2489
+
2490
+ #: modules/comments/admin.php:81
2491
+ msgid "Greeting Text"
2492
+ msgstr ""
2493
+
2494
+ #: modules/comments/admin.php:97 modules/comments/admin.php:168
2495
+ #: modules/widgets/facebook-likebox.php:145
2496
+ msgid "Color Scheme"
2497
+ msgstr ""
2498
+
2499
+ #: modules/comments/admin.php:118
2500
+ msgid "Adjust your Jetpack Comments form with a clever greeting and color-scheme."
2501
+ msgstr ""
2502
+
2503
+ #: modules/comments/admin.php:134
2504
+ msgid "A few catchy words to motivate your readers to comment"
2505
+ msgstr ""
2506
+
2507
+ #: modules/comments/base.php:84
2508
+ msgid "Invalid request"
2509
+ msgstr ""
2510
+
2511
+ #: modules/comments/base.php:231
2512
+ msgid "Error: please fill the required fields (name, email)."
2513
+ msgstr "Xəta: zəhmət olmasa tələb olunan sahələri doldurun(ad, email)."
2514
+
2515
+ #: modules/comments/base.php:233
2516
+ msgid "Error: please enter a valid email address."
2517
+ msgstr "Səhv var: zəhmət olmasa keçərli elektron poçt ünvanı daxil edin."
2518
+
2519
+ #: modules/comments/comments.php:154
2520
+ msgid "You must <a href=\"%s\">log in</a> to post a comment."
2521
+ msgstr ""
2522
+
2523
+ #: modules/comments/comments.php:217
2524
+ msgid "Cancel Reply"
2525
+ msgstr ""
2526
+
2527
+ #: modules/comments/comments.php:351
2528
+ msgid "Invalid security token."
2529
+ msgstr ""
2530
+
2531
+ #: modules/comments/comments.php:412 modules/comments/comments.php:463
2532
+ msgid "Submitting Comment%s"
2533
+ msgstr ""
2534
+
2535
+ #: modules/contact-form/admin.php:27
2536
+ msgid "Add a custom form"
2537
+ msgstr ""
2538
+
2539
+ #: modules/contact-form/admin.php:129
2540
+ msgid "From"
2541
+ msgstr ""
2542
+
2543
+ #: modules/contact-form/admin.php:130
2544
+ #: modules/contact-form/grunion-contact-form.php:556
2545
+ msgid "Message"
2546
+ msgstr ""
2547
+
2548
+ #: modules/contact-form/admin.php:131
2549
+ msgid "Date"
2550
+ msgstr ""
2551
+
2552
+ #: modules/contact-form/admin.php:201
2553
+ msgid "Restore this item from the Trash"
2554
+ msgstr ""
2555
+
2556
+ #: modules/contact-form/admin.php:203
2557
+ msgid "Restore"
2558
+ msgstr ""
2559
+
2560
+ #: modules/contact-form/admin.php:206 modules/contact-form/admin.php:305
2561
+ msgid "Delete this item permanently"
2562
+ msgstr ""
2563
+
2564
+ #: modules/contact-form/admin.php:208 modules/contact-form/admin.php:307
2565
+ msgid "Delete Permanently"
2566
+ msgstr "Birdəfəlik poz"
2567
+
2568
+ #: modules/contact-form/admin.php:239
2569
+ msgid "Mark this message as spam"
2570
+ msgstr ""
2571
+
2572
+ #: modules/contact-form/admin.php:246 modules/contact-form/admin.php:248
2573
+ #: modules/contact-form/admin.php:540
2574
+ msgid "Trash"
2575
+ msgstr ""
2576
+
2577
+ #: modules/contact-form/admin.php:299
2578
+ msgid "Mark this message as NOT spam"
2579
+ msgstr ""
2580
+
2581
+ #: modules/contact-form/admin.php:338
2582
+ msgid "Y-m-d @ g:i:s A"
2583
+ msgstr ""
2584
+
2585
+ #: modules/contact-form/admin.php:462
2586
+ msgid "You are not allowed to manage this item."
2587
+ msgstr ""
2588
+
2589
+ #: modules/contact-form/admin.php:496
2590
+ msgid "You are not allowed to move this item out of the Trash."
2591
+ msgstr ""
2592
+
2593
+ #: modules/contact-form/admin.php:499
2594
+ msgid "Error in restoring from Trash."
2595
+ msgstr ""
2596
+
2597
+ #: modules/contact-form/admin.php:503
2598
+ msgid "You are not allowed to move this item to the Trash."
2599
+ msgstr ""
2600
+
2601
+ #: modules/contact-form/admin.php:506
2602
+ msgid "Error in moving to Trash."
2603
+ msgstr ""
2604
+
2605
+ #: modules/contact-form/admin.php:530
2606
+ msgid "Messages"
2607
+ msgstr ""
2608
+
2609
+ #: modules/contact-form/admin.php:553
2610
+ msgid "Spam"
2611
+ msgstr ""
2612
+
2613
+ #: modules/contact-form/grunion-contact-form.php:73
2614
+ #: modules/contact-form/grunion-form-view.php:136
2615
+ msgid "Feedbacks"
2616
+ msgstr ""
2617
+
2618
+ #: modules/contact-form/grunion-contact-form.php:74
2619
+ msgid "Feedback"
2620
+ msgstr ""
2621
+
2622
+ #: modules/contact-form/grunion-contact-form.php:75
2623
+ msgid "Search Feedback"
2624
+ msgstr ""
2625
+
2626
+ #: modules/contact-form/grunion-contact-form.php:76
2627
+ #: modules/contact-form/grunion-contact-form.php:77
2628
+ msgid "No feedback found"
2629
+ msgstr ""
2630
+
2631
+ #: modules/contact-form/grunion-contact-form.php:94
2632
+ msgid "Spam <span class=\"count\">(%s)</span>"
2633
+ msgid_plural "Spam <span class=\"count\">(%s)</span>"
2634
+ msgstr[0] ""
2635
+ msgstr[1] ""
2636
+
2637
+ #: modules/contact-form/grunion-contact-form.php:514
2638
+ msgctxt "%1$s = blog name"
2639
+ msgid "%1$s Sidebar"
2640
+ msgstr ""
2641
+
2642
+ #: modules/contact-form/grunion-contact-form.php:521
2643
+ msgctxt "%1$s = blog name, %2$s = post title"
2644
+ msgid "%1$s %2$s"
2645
+ msgstr ""
2646
+
2647
+ #: modules/contact-form/grunion-contact-form.php:546
2648
+ #: modules/contact-form/grunion-form-view.php:156
2649
+ msgid "Name"
2650
+ msgstr ""
2651
+
2652
+ #: modules/contact-form/grunion-contact-form.php:547
2653
+ #: modules/contact-form/grunion-form-view.php:155
2654
+ #: modules/sharedaddy/sharing-sources.php:200
2655
+ msgid "Email"
2656
+ msgstr ""
2657
+
2658
+ #: modules/contact-form/grunion-contact-form.php:552
2659
+ msgid "Subject"
2660
+ msgstr ""
2661
+
2662
+ #: modules/contact-form/grunion-contact-form.php:633
2663
+ msgid "Error!"
2664
+ msgstr "Səhv!"
2665
+
2666
+ #: modules/contact-form/grunion-contact-form.php:647
2667
+ msgid "Message Sent"
2668
+ msgstr "Mesaj göndərildi. "
2669
+
2670
+ #: modules/contact-form/grunion-contact-form.php:648
2671
+ msgid "go back"
2672
+ msgstr ""
2673
+
2674
+ #: modules/contact-form/grunion-contact-form.php:683
2675
+ #: modules/contact-form/grunion-contact-form.php:699
2676
+ msgctxt "%1$s = form field label, %2$s = form field value"
2677
+ msgid "%1$s: %2$s"
2678
+ msgstr ""
2679
+
2680
+ #: modules/contact-form/grunion-contact-form.php:729
2681
+ msgid "Submit &#187;"
2682
+ msgstr "Təqdim et &#187;"
2683
+
2684
+ #: modules/contact-form/grunion-contact-form.php:971
2685
+ msgid "l F j, Y \\a\\t g:i a"
2686
+ msgstr ""
2687
+
2688
+ #: modules/contact-form/grunion-contact-form.php:991
2689
+ msgid "Time:"
2690
+ msgstr ""
2691
+
2692
+ #: modules/contact-form/grunion-contact-form.php:992
2693
+ msgid "IP Address:"
2694
+ msgstr ""
2695
+
2696
+ #: modules/contact-form/grunion-contact-form.php:993
2697
+ msgid "Contact Form URL:"
2698
+ msgstr ""
2699
+
2700
+ #: modules/contact-form/grunion-contact-form.php:999
2701
+ msgid "Sent by a verified %s user."
2702
+ msgstr ""
2703
+
2704
+ #: modules/contact-form/grunion-contact-form.php:1003
2705
+ msgid "Sent by an unverified visitor to your site."
2706
+ msgstr ""
2707
+
2708
+ #: modules/contact-form/grunion-contact-form.php:1236
2709
+ msgid "%s requires a valid email address"
2710
+ msgstr ""
2711
+
2712
+ #: modules/after-the-deadline/atd-l10n.php:34
2713
+ msgid ""
2714
+ "The proofreader has suggestions for this post. Are you sure you want to update it?\n"
2715
+ "\n"
2716
+ "Press OK to update your post, or Cancel to view the suggestions and edit your post."
2717
+ msgstr ""
2718
+
2719
+ #: modules/after-the-deadline/config-options.php:48
2720
+ msgid "Proofreading"
2721
+ msgstr ""
2722
+
2723
+ #: modules/after-the-deadline/config-options.php:50
2724
+ msgid "Automatically proofread content when:"
2725
+ msgstr ""
2726
+
2727
+ #: modules/after-the-deadline/config-options.php:53
2728
+ msgid "a post or page is first published"
2729
+ msgstr ""
2730
+
2731
+ #: modules/after-the-deadline/config-options.php:55
2732
+ msgid "a post or page is updated"
2733
+ msgstr ""
2734
+
2735
+ #: modules/after-the-deadline/config-options.php:58
2736
+ msgid "English Options"
2737
+ msgstr ""
2738
+
2739
+ #: modules/after-the-deadline/config-options.php:60
2740
+ msgid "Enable proofreading for the following grammar and style rules when writing posts and pages:"
2741
+ msgstr ""
2742
+
2743
+ #: modules/after-the-deadline/config-options.php:63
2744
+ msgid "Bias Language"
2745
+ msgstr ""
2746
+
2747
+ #: modules/after-the-deadline/config-options.php:65
2748
+ msgid "Clich&eacute;s"
2749
+ msgstr ""
2750
+
2751
+ #: modules/after-the-deadline/config-options.php:67
2752
+ msgid "Complex Phrases"
2753
+ msgstr ""
2754
+
2755
+ #: modules/after-the-deadline/config-options.php:69
2756
+ msgid "Diacritical Marks"
2757
+ msgstr ""
2758
+
2759
+ #: modules/after-the-deadline/config-options.php:71
2760
+ msgid "Double Negatives"
2761
+ msgstr ""
2762
+
2763
+ #: modules/after-the-deadline/config-options.php:73
2764
+ msgid "Hidden Verbs"
2765
+ msgstr ""
2766
+
2767
+ #: modules/after-the-deadline/config-options.php:75
2768
+ msgid "Jargon"
2769
+ msgstr ""
2770
+
2771
+ #: modules/after-the-deadline/config-options.php:77
2772
+ msgid "Passive Voice"
2773
+ msgstr ""
2774
+
2775
+ #: modules/after-the-deadline/config-options.php:79
2776
+ msgid "Phrases to Avoid"
2777
+ msgstr ""
2778
+
2779
+ #: modules/after-the-deadline/config-options.php:81
2780
+ msgid "Redundant Phrases"
2781
+ msgstr ""
2782
+
2783
+ #: modules/after-the-deadline/config-options.php:83
2784
+ msgid "<a href=\"%s\">Learn more</a> about these options."
2785
+ msgstr ""
2786
+
2787
+ #: modules/after-the-deadline/config-options.php:86
2788
+ msgid "Language"
2789
+ msgstr "Dil"
2790
+
2791
+ #: modules/after-the-deadline/config-options.php:89
2792
+ msgctxt "%1$s = http://codex.wordpress.org/Installing_WordPress_in_Your_Language, %2$s = WPLANG"
2793
+ msgid "The proofreader supports English, French, German, Portuguese, and Spanish. Your <a href=\"%1$s\">%2$s</a> value is the default proofreading language."
2794
+ msgstr ""
2795
+
2796
+ #: modules/after-the-deadline/config-options.php:95
2797
+ msgid "Use automatically detected language to proofread posts and pages"
2798
+ msgstr ""
2799
+
2800
+ #: modules/after-the-deadline/config-unignore.php:126
2801
+ msgid "Ignored Phrases"
2802
+ msgstr ""
2803
+
2804
+ #: modules/after-the-deadline/config-unignore.php:128
2805
+ msgid "Identify words and phrases to ignore while proofreading your posts and pages:"
2806
+ msgstr ""
2807
+
2808
+ #: modules/after-the-deadline/config-unignore.php:130
2809
+ msgid "Add"
2810
+ msgstr "Əlavə et"
2811
+
2812
+ #: modules/after-the-deadline/config-unignore.php:135
2813
+ msgid "Be sure to click \"Update Profile\" at the bottom of the screen to save your changes."
2814
+ msgstr ""
2815
+
2816
+ #: modules/carousel/jetpack-carousel.php:103
2817
+ msgid "Comment"
2818
+ msgstr ""
2819
+
2820
+ #: modules/carousel/jetpack-carousel.php:104
2821
+ msgid "Post Comment"
2822
+ msgstr ""
2823
+
2824
+ #: modules/carousel/jetpack-carousel.php:105
2825
+ msgid "Loading Comments..."
2826
+ msgstr ""
2827
+
2828
+ #: modules/carousel/jetpack-carousel.php:106
2829
+ msgid "View full size <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
2830
+ msgstr ""
2831
+
2832
+ #: modules/carousel/jetpack-carousel.php:107
2833
+ msgid "Please be sure to submit some text with your comment."
2834
+ msgstr ""
2835
+
2836
+ #: modules/carousel/jetpack-carousel.php:108
2837
+ msgid "Please provide an email address to comment."
2838
+ msgstr ""
2839
+
2840
+ #: modules/carousel/jetpack-carousel.php:109
2841
+ msgid "Please provide your name to comment."
2842
+ msgstr ""
2843
+
2844
+ #: modules/carousel/jetpack-carousel.php:110
2845
+ msgid "Sorry, but there was an error posting your comment. Please try again later."
2846
+ msgstr ""
2847
+
2848
+ #: modules/carousel/jetpack-carousel.php:111
2849
+ msgid "Your comment was approved."
2850
+ msgstr ""
2851
+
2852
+ #: modules/carousel/jetpack-carousel.php:112
2853
+ msgid "Your comment is in moderation."
2854
+ msgstr ""
2855
+
2856
+ #: modules/carousel/jetpack-carousel.php:113
2857
+ msgid "Camera"
2858
+ msgstr ""
2859
+
2860
+ #: modules/carousel/jetpack-carousel.php:114
2861
+ msgid "Aperture"
2862
+ msgstr ""
2863
+
2864
+ #: modules/carousel/jetpack-carousel.php:115
2865
+ msgid "Shutter Speed"
2866
+ msgstr ""
2867
+
2868
+ #: modules/carousel/jetpack-carousel.php:116
2869
+ msgid "Focal Length"
2870
+ msgstr ""
2871
+
2872
+ #: modules/carousel/jetpack-carousel.php:123
2873
+ msgid "Commenting as %s"
2874
+ msgstr ""
2875
+
2876
+ #: modules/carousel/jetpack-carousel.php:126
2877
+ msgid "Email (Required)"
2878
+ msgstr ""
2879
+
2880
+ #: modules/carousel/jetpack-carousel.php:128
2881
+ msgid "Name (Required)"
2882
+ msgstr ""
2883
+
2884
+ #: modules/carousel/jetpack-carousel.php:130
2885
+ #: modules/contact-form/grunion-contact-form.php:548
2886
+ #: modules/contact-form/grunion-form-view.php:160
2887
+ msgid "Website"
2888
+ msgstr "Vebsayt"
2889
+
2890
+ #: modules/carousel/jetpack-carousel.php:246
2891
+ msgid "Missing attachment ID."
2892
+ msgstr ""
2893
+
2894
+ #: modules/carousel/jetpack-carousel.php:284
2895
+ msgid "Nonce verification failed."
2896
+ msgstr ""
2897
+
2898
+ #: modules/carousel/jetpack-carousel.php:291
2899
+ msgid "Missing target blog ID."
2900
+ msgstr ""
2901
+
2902
+ #: modules/carousel/jetpack-carousel.php:294
2903
+ msgid "Missing target post ID."
2904
+ msgstr ""
2905
+
2906
+ #: modules/carousel/jetpack-carousel.php:297
2907
+ msgid "No comment text was submitted."
2908
+ msgstr ""
2909
+
2910
+ #: modules/carousel/jetpack-carousel.php:309
2911
+ msgid "Comments on this post are closed."
2912
+ msgstr ""
2913
+
2914
+ #: modules/carousel/jetpack-carousel.php:319
2915
+ msgid "Sorry, but we could not authenticate your request."
2916
+ msgstr ""
2917
+
2918
+ #: modules/carousel/jetpack-carousel.php:327
2919
+ msgid "Please provide your name."
2920
+ msgstr ""
2921
+
2922
+ #: modules/carousel/jetpack-carousel.php:330
2923
+ msgid "Please provide an email address."
2924
+ msgstr ""
2925
+
2926
+ #: modules/carousel/jetpack-carousel.php:333
2927
+ msgid "Please provide a valid email address."
2928
+ msgstr ""
2929
+
2930
+ #: modules/carousel/jetpack-carousel.php:360
2931
+ msgid "Image Gallery Carousel"
2932
+ msgstr ""
2933
+
2934
+ #: modules/carousel/jetpack-carousel.php:363
2935
+ msgid "Enable carousel"
2936
+ msgstr ""
2937
+
2938
+ #: modules/carousel/jetpack-carousel.php:367
2939
+ msgid "Background color"
2940
+ msgstr ""
2941
+
2942
+ #: modules/carousel/jetpack-carousel.php:370
2943
+ msgid "Metadata"
2944
+ msgstr ""
2945
+
2946
+ #: modules/carousel/jetpack-carousel.php:427
2947
+ msgid "Show photo metadata (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) in carousel, when available."
2948
+ msgstr ""
2949
+
2950
+ #: modules/carousel/jetpack-carousel.php:435
2951
+ msgid "Show map of photo location in carousel, when available."
2952
+ msgstr ""
2953
+
2954
+ #: modules/carousel/jetpack-carousel.php:443
2955
+ msgid "Black"
2956
+ msgstr ""
2957
+
2958
+ #: jetpack.php:2233
2959
+ msgid "User linked to WordPress.com"
2960
+ msgstr ""
2961
+
2962
+ #: jetpack.php:2233
2963
+ msgid "Unlink user from WordPress.com"
2964
+ msgstr ""
2965
+
2966
+ #: jetpack.php:2249
2967
+ msgid "Jetpack is network activated and notices can not be dismissed."
2968
+ msgstr ""
2969
+
2970
+ #: jetpack.php:2260
2971
+ msgid "Dismiss this notice."
2972
+ msgstr ""
2973
+
2974
+ #: jetpack.php:2265
2975
+ msgid "To enable all of the Jetpack features you&#8217;ll need to connect your website to WordPress.com using the button to the right. Once you&#8217;ve made the connection you&#8217;ll activate all the delightful features below."
2976
+ msgstr ""
2977
+
2978
+ #: jetpack.php:2280
2979
+ msgid "To enable all of the Jetpack features you&#8217;ll need to link your account here to your WordPress.com account using the button to the right."
2980
+ msgstr ""
2981
+
2982
+ #: jetpack.php:2284 modules/post-by-email.php:129
2983
+ #: modules/publicize/publicize-jetpack.php:62
2984
+ msgid "Link account with WordPress.com"
2985
+ msgstr ""
2986
+
2987
+ #: jetpack.php:2306
2988
+ msgid "Have feedback on Jetpack?"
2989
+ msgstr ""
2990
+
2991
+ #: jetpack.php:2308
2992
+ msgid "Answer a short survey to let us know how we&#8217;re doing and what to add in the future."
2993
+ msgstr ""
2994
+
2995
+ #: jetpack.php:2311
2996
+ msgid "Take Survey"
2997
+ msgstr ""
2998
+
2999
+ #: jetpack.php:2317
3000
+ msgid "Checking email updates status&hellip;"
3001
+ msgstr ""
3002
+
3003
+ #: jetpack.php:2323
3004
+ msgctxt "%s = Unsubscribe link"
3005
+ msgid "You are currently subscribed to email updates. %s"
3006
+ msgstr ""
3007
+
3008
+ #: jetpack.php:2324
3009
+ msgid "Unsubscribe"
3010
+ msgstr ""
3011
+
3012
+ #: jetpack.php:2328
3013
+ msgctxt "%s = Subscribe link"
3014
+ msgid "Want to receive updates about Jetpack by email? %s"
3015
+ msgstr ""
3016
+
3017
+ #: jetpack.php:2329 modules/subscriptions.php:673
3018
+ msgid "Subscribe"
3019
+ msgstr ""
3020
+
3021
+ #: jetpack.php:2336
3022
+ msgid "You have been subscribed to receive email updates."
3023
+ msgstr ""
3024
+
3025
+ #: jetpack.php:2338
3026
+ msgid "You will no longer receive email updates about Jetpack."
3027
+ msgstr ""
3028
+
3029
+ #: jetpack.php:2351
3030
+ msgid "An <span>Automattic</span> Airline"
3031
+ msgstr ""
3032
+
3033
+ #: jetpack.php:2354
3034
+ msgid "Privacy Policy"
3035
+ msgstr ""
3036
+
3037
+ #: jetpack.php:2355
3038
+ msgid "Terms of Service"
3039
+ msgstr ""
3040
+
3041
+ #: jetpack.php:2357
3042
+ msgid "Debug"
3043
+ msgstr ""
3044
+
3045
+ #: jetpack.php:2359 modules/sharedaddy/sharedaddy.php:82
3046
+ msgid "Support"
3047
+ msgstr ""
3048
+
3049
+ #: jetpack.php:2379
3050
+ msgid "This is sensitive information. Please do not post your BLOG_TOKEN or USER_TOKEN publicly; they are like passwords."
3051
+ msgstr ""
3052
+
3053
+ #: jetpack.php:2423
3054
+ msgid "Configure %s"
3055
+ msgstr ""
3056
+
3057
+ #: jetpack.php:2482
3058
+ msgid "Deactivate"
3059
+ msgstr "Dayandır"
3060
+
3061
+ #: jetpack.php:2492
3062
+ msgid "Activate"
3063
+ msgstr "İşə sal"
3064
+
3065
+ #: jetpack.php:2509
3066
+ msgid "Free"
3067
+ msgstr ""
3068
+
3069
+ #: jetpack.php:2509
3070
+ msgid "Purchase"
3071
+ msgstr "Satın al"
3072
+
3073
+ #: jetpack.php:2517
3074
+ msgid "New"
3075
+ msgstr ""
3076
+
3077
+ #: jetpack.php:2520
3078
+ msgid "Updated"
3079
+ msgstr ""
3080
+
3081
+ #: jetpack.php:2548
3082
+ msgid "Configure"
3083
+ msgstr ""
3084
+
3085
+ #: jetpack.php:2582
3086
+ msgid "Coming soon&#8230;"
3087
+ msgstr ""
3088
+
3089
+ #: jetpack.php:2735 jetpack.php:2737 jetpack.php:2739 jetpack.php:2742
3090
+ #: jetpack.php:3673
3091
+ msgid "Error Details: %s"
3092
+ msgstr ""
3093
+
3094
+ #: jetpack.php:2898
3095
+ msgid "Jetpack Plugin Version"
3096
+ msgstr ""
3097
+
3098
+ #: jetpack.php:2904
3099
+ msgid "The Client ID/WP.com Blog ID of this site"
3100
+ msgstr ""
3101
+
3102
+ #: jetpack.php:3156
3103
+ msgid "You must connect your Jetpack plugin to WordPress.com to use this feature."
3104
+ msgstr ""
3105
+
3106
+ #: jetpack.php:3159
3107
+ msgid "Someone may be trying to trick you into giving them access to your site. Or it could be you just encountered a bug :). Either way, please close this window."
3108
+ msgstr ""
3109
+
3110
+ #: jetpack.php:3187
3111
+ msgid "The authorization process expired. Please go back and try again."
3112
+ msgstr ""
3113
+
3114
+ #: jetpack.php:3227
3115
+ msgid "%s wants to access your site&#8217;s data. Log in to authorize that access."
3116
+ msgstr ""
3117
+
3118
+ #: jetpack.php:3626
3119
+ msgid "An administrator for this blog must set up the Jetpack connection."
3120
+ msgstr ""
3121
+
3122
+ #: jetpack.php:3631
3123
+ msgid "You need to register your Jetpack before connecting it."
3124
+ msgstr ""
3125
+
3126
+ #: locales.php:29
3127
+ msgctxt "locales"
3128
+ msgid "%1$s/%2$s"
3129
+ msgstr ""
3130
+
3131
+ #: modules/after-the-deadline/atd-l10n.php:12
3132
+ msgid "Spelling"
3133
+ msgstr ""
3134
+
3135
+ #: modules/after-the-deadline/atd-l10n.php:13
3136
+ msgid "Repeated Word"
3137
+ msgstr ""
3138
+
3139
+ #: modules/after-the-deadline/atd-l10n.php:15
3140
+ msgid "No suggestions"
3141
+ msgstr "Təkliflər yoxdur"
3142
+
3143
+ #: modules/after-the-deadline/atd-l10n.php:17
3144
+ msgid "Explain..."
3145
+ msgstr ""
3146
+
3147
+ #: modules/after-the-deadline/atd-l10n.php:18
3148
+ msgid "Ignore suggestion"
3149
+ msgstr ""
3150
+
3151
+ #: modules/after-the-deadline/atd-l10n.php:19
3152
+ msgid "Ignore always"
3153
+ msgstr ""
3154
+
3155
+ #: modules/after-the-deadline/atd-l10n.php:20
3156
+ msgid "Ignore all"
3157
+ msgstr "Hamısına göz yum"
3158
+
3159
+ #: modules/after-the-deadline/atd-l10n.php:22
3160
+ msgid "Edit Selection..."
3161
+ msgstr ""
3162
+
3163
+ #: modules/after-the-deadline/atd-l10n.php:24
3164
+ msgid "proofread"
3165
+ msgstr ""
3166
+
3167
+ #: modules/after-the-deadline/atd-l10n.php:25
3168
+ msgid "edit text"
3169
+ msgstr ""
3170
+
3171
+ #: modules/after-the-deadline/atd-l10n.php:26
3172
+ #: modules/after-the-deadline.php:224
3173
+ msgid "Proofread Writing"
3174
+ msgstr ""
3175
+
3176
+ #: modules/after-the-deadline/atd-l10n.php:28
3177
+ msgid "No writing errors were found."
3178
+ msgstr ""
3179
+
3180
+ #: modules/after-the-deadline/atd-l10n.php:29
3181
+ msgid "There was a problem communicating with the Proofreading service. Try again in one minute."
3182
+ msgstr ""
3183
+
3184
+ #: modules/after-the-deadline/atd-l10n.php:30
3185
+ msgid "There was an error communicating with the proofreading service."
3186
+ msgstr ""
3187
+
3188
+ #: modules/after-the-deadline/atd-l10n.php:32
3189
+ msgid "Replace selection with:"
3190
+ msgstr ""
3191
+
3192
+ #: modules/after-the-deadline/atd-l10n.php:33
3193
+ msgid ""
3194
+ "The proofreader has suggestions for this post. Are you sure you want to publish it?\n"
3195
+ "\n"
3196
+ "Press OK to publish your post, or Cancel to view the suggestions and edit your post."
3197
+ msgstr ""
3198
+
3199
+ #: functions.opengraph.php:74
3200
+ msgid "(no title)"
3201
+ msgstr ""
3202
+
3203
+ #: jetpack.php:1050
3204
+ msgid "Jetpack requires WordPress version %s or later."
3205
+ msgstr ""
3206
+
3207
+ #: jetpack.php:1246 jetpack.php:1262
3208
+ msgid "Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin."
3209
+ msgstr ""
3210
+
3211
+ #: jetpack.php:1283
3212
+ msgid "One New Jetpack Module"
3213
+ msgid_plural "%s New Jetpack Modules"
3214
+ msgstr[0] ""
3215
+ msgstr[1] ""
3216
+
3217
+ #: jetpack.php:1286
3218
+ msgid "Jetpack"
3219
+ msgstr ""
3220
+
3221
+ #: jetpack.php:1438 jetpack.php:1462 jetpack.php:1473 jetpack.php:2238
3222
+ #: jetpack.php:2422
3223
+ msgid "Jetpack by WordPress.com"
3224
+ msgstr ""
3225
+
3226
+ #: jetpack.php:1439 jetpack.php:1463 jetpack.php:2241
3227
+ msgid "Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com."
3228
+ msgstr ""
3229
+
3230
+ #: jetpack.php:1440 jetpack.php:1464
3231
+ msgid "On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed."
3232
+ msgstr ""
3233
+
3234
+ #: jetpack.php:1441
3235
+ msgid "Jetpack Module Options"
3236
+ msgstr ""
3237
+
3238
+ #: jetpack.php:1442
3239
+ msgid "<strong>To Activate/Deactivate a Module</strong> - Click on Learn More. An Activate or Deactivate button will now appear next to the Learn More button. Click the Activate/Deactivate button."
3240
+ msgstr ""
3241
+
3242
+ #: jetpack.php:1443 jetpack.php:1486
3243
+ msgid "For more information:"
3244
+ msgstr ""
3245
+
3246
+ #: jetpack.php:1444 jetpack.php:1487
3247
+ msgid "Jetpack FAQ"
3248
+ msgstr ""
3249
+
3250
+ #: jetpack.php:1445 jetpack.php:1488
3251
+ msgid "Jetpack Support"
3252
+ msgstr ""
3253
+
3254
+ #: jetpack.php:1460
3255
+ msgid "Overview"
3256
+ msgstr ""
3257
+
3258
+ #: jetpack.php:1471
3259
+ msgid "Modules"
3260
+ msgstr ""
3261
+
3262
+ #: jetpack.php:1474
3263
+ msgid "You can activate or deactivate individual Jetpack modules to suit your needs."
3264
+ msgstr ""
3265
+
3266
+ #: jetpack.php:1476
3267
+ msgid "Find the component you want to manage"
3268
+ msgstr ""
3269
+
3270
+ #: jetpack.php:1477
3271
+ msgid "Click on Learn More"
3272
+ msgstr ""
3273
+
3274
+ #: jetpack.php:1478
3275
+ msgid "An Activate or Deactivate button will appear"
3276
+ msgstr ""
3277
+
3278
+ #: jetpack.php:1479
3279
+ msgid "If additional settings are available, a link to them will appear"
3280
+ msgstr ""
3281
+
3282
+ #: jetpack.php:1557 modules/publicize/ui.php:511
3283
+ #: modules/sharedaddy/sharedaddy.php:74 modules/sharedaddy/sharedaddy.php:81
3284
+ msgid "Settings"
3285
+ msgstr "Sazlamalar"
3286
+
3287
+ #: jetpack.php:1574
3288
+ msgid "Dismiss this notice and deactivate Jetpack."
3289
+ msgstr ""
3290
+
3291
+ #: jetpack.php:1580
3292
+ msgid "<strong>Your Jetpack is almost ready</strong> &#8211; A connection to WordPress.com is needed to enable features like Comments, Stats, Contact Forms, and Subscriptions. Connect now to get fueled up!"
3293
+ msgstr ""
3294
+
3295
+ #: jetpack.php:1582
3296
+ msgid "<strong>Jetpack is installed</strong> and ready to bring awesome, WordPress.com cloud-powered features to your site."
3297
+ msgstr ""
3298
+
3299
+ #: jetpack.php:1588 jetpack.php:2269
3300
+ msgid "Connect to WordPress.com"
3301
+ msgstr ""
3302
+
3303
+ #: jetpack.php:1590 modules/module-info.php:45 modules/module-info.php:81
3304
+ #: modules/module-info.php:138 modules/module-info.php:173
3305
+ #: modules/module-info.php:207 modules/module-info.php:237
3306
+ #: modules/module-info.php:270 modules/module-info.php:306
3307
+ #: modules/module-info.php:357 modules/module-info.php:379
3308
+ #: modules/module-info.php:417 modules/module-info.php:442
3309
+ #: modules/module-info.php:460 modules/module-info.php:479
3310
+ #: modules/module-info.php:485 modules/module-info.php:512
3311
+ #: modules/module-info.php:543 modules/module-info.php:578
3312
+ #: modules/module-info.php:600 modules/module-info.php:622
3313
+ #: modules/module-info.php:666 modules/module-info.php:694
3314
+ #: modules/module-info.php:722
3315
+ msgid "Learn More"
3316
+ msgstr ""
3317
+
3318
+ #: jetpack.php:1603
3319
+ msgid "<strong>Jetpack is activated!</strong> Each site on your network must be connected individually by an admin on that site."
3320
+ msgstr ""
3321
+
3322
+ #: jetpack.php:1630
3323
+ msgid "Jetpack now includes Jetpack Comments, which enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site. To activate Jetpack Comments, <a href=\"%s\">%s</a>."
3324
+ msgstr ""
3325
+
3326
+ #: jetpack.php:1638
3327
+ msgid "click here"
3328
+ msgstr ""
3329
+
3330
+ #: jetpack.php:1769
3331
+ msgid "You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features."
3332
+ msgstr ""
3333
+
3334
+ #: jetpack.php:1772
3335
+ msgid "Don&#8217;t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack."
3336
+ msgstr ""
3337
+
3338
+ #: jetpack.php:1776
3339
+ msgid "Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one."
3340
+ msgstr ""
3341
+
3342
+ #: jetpack.php:1779
3343
+ msgid "Wrong size. Hm&#8230; it seems your Jetpack doesn&#8217;t quite fit. Have you lost weight? Click &#8220;Connect to WordPress.com&#8221; again to get your Jetpack adjusted."
3344
+ msgstr ""
3345
+
3346
+ #: jetpack.php:1783
3347
+ msgid "Your website needs to be publicly accessible to use Jetpack: %s"
3348
+ msgstr ""
3349
+
3350
+ #: jetpack.php:1788
3351
+ msgid "%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3352
+ msgstr ""
3353
+
3354
+ #: jetpack.php:1790
3355
+ msgid "Do you still have the %s plugin installed?"
3356
+ msgstr ""
3357
+
3358
+ #: jetpack.php:1793
3359
+ msgid "Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3360
+ msgstr ""
3361
+
3362
+ #: jetpack.php:1801
3363
+ msgid "<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost)."
3364
+ msgstr ""
3365
+
3366
+ #: jetpack.php:1807
3367
+ msgid "WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later."
3368
+ msgstr ""
3369
+
3370
+ #: jetpack.php:1811
3371
+ msgid "Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host."
3372
+ msgstr ""
3373
+
3374
+ #: jetpack.php:1851
3375
+ msgid "<strong>Your Jetpack has a glitch.</strong> Something went wrong that&#8217;s never supposed to happen. Guess you&#8217;re just lucky: %s"
3376
+ msgstr ""
3377
+
3378
+ #: jetpack.php:1854
3379
+ msgid "Try connecting again."
3380
+ msgstr ""
3381
+
3382
+ #: jetpack.php:1878
3383
+ msgid "Welcome to <strong>Jetpack %s</strong>!"
3384
+ msgstr ""
3385
+
3386
+ #: jetpack.php:1890
3387
+ msgid "The following new modules have been activated: %l."
3388
+ msgstr ""
3389
+
3390
+ #: jetpack.php:1902
3391
+ msgid "The following modules have been updated: %l."
3392
+ msgstr ""
3393
+
3394
+ #: jetpack.php:1911
3395
+ msgid "<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card."
3396
+ msgstr ""
3397
+
3398
+ #: jetpack.php:1937
3399
+ msgctxt "%l = list of Jetpack module/feature names"
3400
+ msgid "<strong>%l Deactivated!</strong> You can activate it again at any time using the activate button on the module card."
3401
+ msgid_plural "<strong>%l Deactivated!</strong> You can activate them again at any time using the activate buttons on their module cards."
3402
+ msgstr[0] ""
3403
+ msgstr[1] ""
3404
+
3405
+ #: jetpack.php:1949
3406
+ msgid "<strong>Module settings were saved.</strong> "
3407
+ msgstr ""
3408
+
3409
+ #: jetpack.php:1953
3410
+ msgid "<strong>Your Jetpack is already connected.</strong> "
3411
+ msgstr ""
3412
+
3413
+ #: jetpack.php:1957 jetpack.php:1964
3414
+ msgid "<strong>You&#8217;re fueled up and ready to go.</strong> "
3415
+ msgstr ""
3416
+
3417
+ #: jetpack.php:1959
3418
+ msgid "The features below are now active. Click the learn more buttons to explore each feature."
3419
+ msgstr ""
3420
+
3421
+ #: jetpack.php:1970
3422
+ msgid "<strong>You have unlinked your account (%s) from WordPress.com.</strong>"
3423
+ msgstr ""
3424
+
3425
+ #: jetpack.php:1992
3426
+ msgid "Jetpack contains the most recent version of the old %l plugin."
3427
+ msgid_plural "Jetpack contains the most recent versions of the old %l plugins."
3428
+ msgstr[0] ""
3429
+ msgstr[1] ""
3430
+
3431
+ #: jetpack.php:2001
3432
+ msgid "The old version has been deactivated and can be removed from your site."
3433
+ msgid_plural "The old versions have been deactivated and can be removed from your site."
3434
+ msgstr[0] ""
3435
+ msgstr[1] ""
3436
+
3437
+ #: jetpack.php:2067
3438
+ msgid "Is this site private?"
3439
+ msgstr ""
3440
+
3441
+ #: jetpack.php:2070
3442
+ msgctxt "%l = list of Jetpack module/feature names"
3443
+ msgid "Like your site's RSS feeds, %l allows access to your posts and other content to third parties."
3444
+ msgid_plural "Like your site's RSS feeds, %l allow access to your posts and other content to third parties."
3445
+ msgstr[0] ""
3446
+ msgstr[1] ""
3447
+
3448
+ #: jetpack.php:2083
3449
+ msgctxt "%1$s = deactivation URL, %2$s = \"Deactivate {list of Jetpack module/feature names}"
3450
+ msgid "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating this feature</a>."
3451
+ msgid_plural "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating these features</a>."
3452
+ msgstr[0] ""
3453
+ msgstr[1] ""
3454
+
3455
+ #: jetpack.php:2097
3456
+ msgctxt "%l = list of Jetpack module/feature names"
3457
+ msgid "Deactivate %l"
3458
+ msgstr ""
3459
+
3460
+ #: jetpack.php:2228
3461
+ msgid "Connected to WordPress.com"
3462
+ msgstr ""
3463
+
3464
+ #: jetpack.php:2228
3465
+ msgid "Disconnect from WordPress.com"
3466
+ msgstr ""
3467
+
3468
+ #: class.json-api-endpoints.php:1113
3469
+ msgid "This post is password protected."
3470
+ msgstr "Bu yazı gizli şifrə ilə qorunur."
3471
+
3472
+ #: class.json-api-endpoints.php:2633
3473
+ msgid "Comment cache problem?"
3474
+ msgstr ""
languages/jetpack-bs_BA.mo ADDED
Binary file
languages/jetpack-bs_BA.po ADDED
@@ -0,0 +1,3492 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of 2.0 in Bosnian
2
+ # This file is distributed under the same license as the 2.0 package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2012-11-20 20:01:54+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: 2.0\n"
12
+
13
+ #: modules/widgets/rsslinks-widget.php:113
14
+ msgid "Red"
15
+ msgstr "Crvena"
16
+
17
+ #: modules/widgets/rsslinks-widget.php:114
18
+ msgid "Orange"
19
+ msgstr "Narandžasta"
20
+
21
+ #: modules/widgets/rsslinks-widget.php:115
22
+ msgid "Green"
23
+ msgstr "Zelena"
24
+
25
+ #: modules/widgets/rsslinks-widget.php:116
26
+ msgid "Blue"
27
+ msgstr "Plava"
28
+
29
+ #: modules/widgets/rsslinks-widget.php:117
30
+ msgid "Purple"
31
+ msgstr "Ljubičasta"
32
+
33
+ #: modules/widgets/rsslinks-widget.php:118
34
+ msgid "Pink"
35
+ msgstr "Roze"
36
+
37
+ #: modules/widgets/rsslinks-widget.php:119
38
+ msgid "Silver"
39
+ msgstr "Srebrena"
40
+
41
+ #: modules/widgets/rsslinks-widget.php:121
42
+ msgid "Image Color:"
43
+ msgstr "Boja slike:"
44
+
45
+ #: modules/widgets/rsslinks-widget.php:140
46
+ msgid "Subscribe to %s"
47
+ msgstr "Pretplati se na %s"
48
+
49
+ #: modules/widgets/top-posts.php:35 modules/widgets/top-posts.php:41
50
+ msgid "Top Posts &amp; Pages"
51
+ msgstr "Najposjećeniji članci i stranice"
52
+
53
+ #: modules/widgets/top-posts.php:37
54
+ msgid "Shows your most viewed posts and pages."
55
+ msgstr "Prikazuje članke i stranice s najviše pregleda."
56
+
57
+ #: modules/widgets/top-posts.php:78
58
+ msgid "Number of posts to show:"
59
+ msgstr "Broj članaka za prikaz:"
60
+
61
+ #: modules/widgets/top-posts.php:83
62
+ msgid "Display as:"
63
+ msgstr "Prikaži kao:"
64
+
65
+ #: modules/widgets/top-posts.php:85
66
+ msgid "Text List"
67
+ msgstr "Tekstualnu listu"
68
+
69
+ #: modules/widgets/top-posts.php:86
70
+ msgid "Image List"
71
+ msgstr "Slikovnu listu"
72
+
73
+ #: modules/widgets/top-posts.php:87
74
+ msgid "Image Grid"
75
+ msgstr "Tabelu slika"
76
+
77
+ #: modules/widgets/top-posts.php:91
78
+ msgid "Top Posts &amp; Pages by views are calculated from 24-48 hours of stats. They take a while to change."
79
+ msgstr ""
80
+
81
+ #: modules/widgets/top-posts.php:164
82
+ msgid "There are no posts to display. <a href=\"%s\">Want more traffic?</a>"
83
+ msgstr "Nema članaka za prikaz. <a href=\"%s\">Želite više saobraćaja?</a>"
84
+
85
+ #: modules/widgets/twitter.php:22
86
+ msgid "Display your Tweets from Twitter"
87
+ msgstr "Prikažite vaše tweetove sa Twittera"
88
+
89
+ #: modules/widgets/twitter.php:31
90
+ msgid "Please configure your Twitter username for the <a href=\"%s\">Twitter Widget</a>."
91
+ msgstr "Molimo vas da konfigurišete vaše Twitter korisničko ime za <a href=\"%s\">Twitter dodatak</a>."
92
+
93
+ #: modules/widgets/twitter.php:41
94
+ msgid "Twitter Updates"
95
+ msgstr "Twitter ažuriranja"
96
+
97
+ #: modules/widgets/twitter.php:182 modules/widgets/twitter.php:203
98
+ msgid "Error: Twitter did not respond. Please wait a few minutes and refresh this page."
99
+ msgstr "Greška: Twitter nije poslao odgovor. Molimo vas da sačekate par minuta a zatim da osvježite ovu stranicu."
100
+
101
+ #: modules/widgets/twitter.php:196
102
+ msgid "Error: Please make sure the Twitter account is %1$spublic%2$s."
103
+ msgstr ""
104
+
105
+ #: modules/widgets/twitter.php:265
106
+ msgid "Twitter username:"
107
+ msgstr "Twitter korisničko ime:"
108
+
109
+ #: modules/widgets/twitter.php:272
110
+ msgid "Maximum number of Tweets to show:"
111
+ msgstr ""
112
+
113
+ #: modules/widgets/twitter.php:286
114
+ msgid "Hide replies"
115
+ msgstr "Sakrij odgovore"
116
+
117
+ #: modules/widgets/twitter.php:293
118
+ msgid "Hide Tweets pushed by Publicize"
119
+ msgstr ""
120
+
121
+ #: modules/widgets/twitter.php:300
122
+ msgid "Include retweets"
123
+ msgstr "Uključi i retweetove"
124
+
125
+ #: modules/widgets/twitter.php:307
126
+ msgid "Display Follow Button"
127
+ msgstr ""
128
+
129
+ #: modules/widgets/twitter.php:313
130
+ msgid "Text to display between Tweet and timestamp:"
131
+ msgstr ""
132
+
133
+ msgid "http://wordpress.org/extend/plugins/jetpack/"
134
+ msgstr "http://wordpress.org/extend/plugins/jetpack/"
135
+
136
+ msgid "Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users."
137
+ msgstr "Dobijte WordPress.com mogućnosti na vašoj samostalno hostiranoj WordPress stranici. Jetpack vam omogućava da povežete vaš blog sa WordPress.com računom kako biste mogli koristiti mogućnosti koje su dostupne samo za WordPress.com korisnike."
138
+
139
+ msgid "Automattic"
140
+ msgstr "Automattic"
141
+
142
+ msgid "http://jetpack.me"
143
+ msgstr "http://jetpack.me"
144
+
145
+ msgid "Improve your spelling, style, and grammar with the <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> Proofreading service."
146
+ msgstr "Poboljšajte vlastiti pravopis, stil i gramatiku pomoću <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> servisa."
147
+
148
+ msgid "Transform your standard image galleries into an immersive full-screen experience."
149
+ msgstr ""
150
+
151
+ msgid "A new comment system that has integrated social media login options."
152
+ msgstr "Novi sistem komentarisanja koji integriše opcije prijavljivanja na socijalne mreže."
153
+
154
+ msgid "Easily insert a contact form any where on your site."
155
+ msgstr "Jednostavno umetnite obrazac za kontakt na bilo kojem mjestu na vašoj stranici."
156
+
157
+ msgid "Customize the appearance of your site using CSS but without modifying your theme."
158
+ msgstr ""
159
+
160
+ msgid "Share your public posts and comments to search engines and other services in real-time."
161
+ msgstr "Trenutno šaljite vaše javne članke i komentare pretraživačima i drugim servisima."
162
+
163
+ msgid "Show a pop-up business card of your users' gravatar profiles in comments."
164
+ msgstr "Prikazuje iskačuću karticu gravatar profila vaših korisnika u poljima za komentare."
165
+
166
+ msgid "Automatically pull the next set of posts into view when the reader approaches the bottom of the page."
167
+ msgstr ""
168
+
169
+ msgid "Allow applications to securely access your content through the cloud."
170
+ msgstr "Dozvolite aplikacijama sigurni pristup vašem sadržaju preko oblaka."
171
+
172
+ msgid "Beautiful Math"
173
+ msgstr "Beautiful Math"
174
+
175
+ msgid "Mark up your posts with the <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> markup language, perfect for complex mathematical equations and other &#252;ber-geekery."
176
+ msgstr "U vašim člancima možete koristiti <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> jezik koji je najbolje rješenje za komplikovane matematičke jednačine i druge štreberske stvari."
177
+
178
+ msgid "Automatically optimize your site for mobile devices."
179
+ msgstr ""
180
+
181
+ msgid "Receive notifications on your Apple device."
182
+ msgstr ""
183
+
184
+ msgid "Monitor and manage your site's activity with Notifications in your Toolbar and on WordPress.com."
185
+ msgstr "Pratite i upravljajte aktivnostima na vašoj stranici pomoću Obavijesti u vašoj alatnoj traci i na WordPress.com stranici."
186
+
187
+ msgid "Give your site a boost by loading images from the WordPress.com content delivery network."
188
+ msgstr ""
189
+
190
+ msgid "Publish posts to your blog directly from your personal email account."
191
+ msgstr ""
192
+
193
+ msgid "Connect your site to popular social networks and automatically share new posts with your friends."
194
+ msgstr ""
195
+
196
+ msgid "The most super duper sharing tool on the interwebs. Share content with Facebook, Twitter, and many more."
197
+ msgstr "Najbolji alat za razmjenu na webu. Razmjenjujte sadržaj sa Facebooka, Twittera i sa još mnogo servisa."
198
+
199
+ msgid "Easily embed videos and more from sites like YouTube, Vimeo, and SlideShare."
200
+ msgstr "Jednostavna ugradnja video datoteka sa stranica kao što su YouTube, Vimeo i SlideShare."
201
+
202
+ msgid "Enable WP.me-powered shortlinks for all of your Posts and Pages for easier sharing."
203
+ msgstr "Omogućite WP.me kratke linkove radi lakše razmjene na svim vašim člancima i stranicama."
204
+
205
+ msgid "Simple, concise site stats with no additional load on your server."
206
+ msgstr "Jednostavna statistika stranice koja ne opterećuje vaš server."
207
+
208
+ msgid "Allow users to subscribe to your posts and comments to receive a notification via email."
209
+ msgstr "Dozvoljava korisnicima da se pretplate na vaše članke i komentare i da primaju obavijesti o njima putem emaila."
210
+
211
+ msgid "Realtime backup and security scanning for your WordPress site."
212
+ msgstr "Backup i sigurnosno skeniranje u realnom vremenu za vašu WordPress stranicu."
213
+
214
+ msgid "Easily add images, Twitter updates, and your site's RSS links to your theme's sidebar."
215
+ msgstr "Jednostavno dodajte slike, Twitter napomene i RSS linkove u bočnu traku vaše teme."
216
+
217
+ #: modules/widgets/facebook-likebox.php:115
218
+ #: modules/widgets/gravatar-profile.php:164
219
+ msgid "Title"
220
+ msgstr "Naslov"
221
+
222
+ #: modules/widgets/facebook-likebox.php:122
223
+ msgid "Facebook Page URL"
224
+ msgstr "URL Facebook stranice"
225
+
226
+ #: modules/widgets/facebook-likebox.php:125
227
+ msgid "The Like Box only works with <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook Pages</a>."
228
+ msgstr "Like okvir radi samo sa <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook stranicama</a>."
229
+
230
+ #: modules/widgets/facebook-likebox.php:131
231
+ msgid "Width"
232
+ msgstr "Širina"
233
+
234
+ #: modules/widgets/facebook-likebox.php:138
235
+ msgid "Height"
236
+ msgstr "Visina"
237
+
238
+ #: modules/widgets/facebook-likebox.php:157
239
+ msgid "Show Faces"
240
+ msgstr "Prikaži lica"
241
+
242
+ #: modules/widgets/facebook-likebox.php:159
243
+ msgid "Show profile photos in the plugin."
244
+ msgstr "Prikazuje fotografije profila u pluginu."
245
+
246
+ #: modules/widgets/facebook-likebox.php:166
247
+ msgid "Show Stream"
248
+ msgstr "Prikaži novosti"
249
+
250
+ #: modules/widgets/facebook-likebox.php:168
251
+ msgid "Show the profile stream for the public profile."
252
+ msgstr "Prikazuje novosti sa vašeg javnog profila."
253
+
254
+ #: modules/widgets/facebook-likebox.php:175
255
+ msgid "Show Wall"
256
+ msgstr "Prikaži zid"
257
+
258
+ #: modules/widgets/facebook-likebox.php:177
259
+ msgid "Show the wall for a Places page rather than friend activity."
260
+ msgstr "Prikazuje zid za stranice mjesta umjesto aktivnosti prijatelja."
261
+
262
+ #: modules/widgets/gravatar-profile.php:19
263
+ msgid "Gravatar Profile"
264
+ msgstr "Gravatar profil"
265
+
266
+ #: modules/widgets/gravatar-profile.php:21
267
+ msgid "Display a mini version of your Gravatar Profile"
268
+ msgstr "Prikažite mini verziju vašeg Gravatar profila"
269
+
270
+ #: modules/widgets/gravatar-profile.php:37
271
+ msgid "You need to select what to show in this <a href=\"%s\">Gravatar Profile widget</a>."
272
+ msgstr ""
273
+
274
+ #: modules/widgets/gravatar-profile.php:91
275
+ msgid "View Full Profile &rarr;"
276
+ msgstr "Pregledaj cijeli profil &rarr;"
277
+
278
+ #: modules/widgets/gravatar-profile.php:99
279
+ msgid "Error loading profile"
280
+ msgstr "Greška pri učitavanju profila"
281
+
282
+ #: modules/widgets/gravatar-profile.php:111
283
+ msgid "Personal Links"
284
+ msgstr "Lični linkovi"
285
+
286
+ #: modules/widgets/gravatar-profile.php:131
287
+ msgid "Verified Services"
288
+ msgstr "Verificirani servisi"
289
+
290
+ #: modules/widgets/gravatar-profile.php:142
291
+ msgctxt "1: User Name, 2: Service Name (Facebook, Twitter, ...)"
292
+ msgid "%1$s on %2$s"
293
+ msgstr "%1$s na %2$s"
294
+
295
+ #: modules/widgets/gravatar-profile.php:170
296
+ msgid "Select a user or pick \"custom\" and enter a custom email address."
297
+ msgstr "Odaberite korisnika ili \"ostalo\" nakon čega je potrebno da upišete korisničku email adresu."
298
+
299
+ #: modules/widgets/gravatar-profile.php:174
300
+ msgid "Custom"
301
+ msgstr "Korisnički"
302
+
303
+ #: modules/widgets/gravatar-profile.php:184
304
+ msgid "Custom Email Address"
305
+ msgstr "Korisnička email adresa"
306
+
307
+ #: modules/widgets/gravatar-profile.php:192
308
+ msgid "Show Personal Links"
309
+ msgstr "Prikaži lične linkove"
310
+
311
+ #: modules/widgets/gravatar-profile.php:194
312
+ msgid "Links to your websites, blogs, or any other sites that help describe who you are."
313
+ msgstr "Linkovi ka vašoj web stranici, blogovima ili bilo kojim drugim stranicama koje vas opisuju."
314
+
315
+ #: modules/widgets/gravatar-profile.php:201
316
+ msgid "Show Account Links"
317
+ msgstr "Prikaži linkove računa"
318
+
319
+ #: modules/widgets/gravatar-profile.php:203
320
+ msgid "Links to services that you use across the web."
321
+ msgstr "Linkovi ka servisima koje koristite širom weba."
322
+
323
+ #: modules/widgets/gravatar-profile.php:207
324
+ msgid "Opens in new window"
325
+ msgstr "Otvara se u novom prozoru"
326
+
327
+ #: modules/widgets/gravatar-profile.php:207
328
+ msgid "Edit Your Profile"
329
+ msgstr "Uredite vaš profil"
330
+
331
+ #: modules/widgets/gravatar-profile.php:207
332
+ msgid "What's a Gravatar?"
333
+ msgstr "Šta je Gravatar?"
334
+
335
+ #: modules/widgets/image-widget.php:12
336
+ msgid "Display an image in your sidebar"
337
+ msgstr "Prikažite sliku vašoj bočnoj traci"
338
+
339
+ #: modules/widgets/image-widget.php:14
340
+ msgid "Image (Jetpack)"
341
+ msgstr "Slike (Jetpack)"
342
+
343
+ #: modules/widgets/image-widget.php:110
344
+ msgid "Image URL:"
345
+ msgstr "URL slike:"
346
+
347
+ #: modules/widgets/image-widget.php:113
348
+ msgid "Alternate text:"
349
+ msgstr "Alternativni tekst:"
350
+
351
+ #: modules/widgets/image-widget.php:116
352
+ msgid "Image title:"
353
+ msgstr "Naziv slike:"
354
+
355
+ #: modules/widgets/image-widget.php:119
356
+ msgid "Caption:"
357
+ msgstr "Naslov:"
358
+
359
+ #: modules/widgets/image-widget.php:124
360
+ msgid "None"
361
+ msgstr "Ništa"
362
+
363
+ #: modules/widgets/image-widget.php:125
364
+ msgid "Left"
365
+ msgstr "Lijevo"
366
+
367
+ #: modules/widgets/image-widget.php:126
368
+ msgid "Center"
369
+ msgstr "Centrirano"
370
+
371
+ #: modules/widgets/image-widget.php:127
372
+ msgid "Right"
373
+ msgstr "Desno"
374
+
375
+ #: modules/widgets/image-widget.php:129
376
+ msgid "Image Alignment:"
377
+ msgstr "Poravnanje slike:"
378
+
379
+ #: modules/widgets/image-widget.php:139
380
+ msgid "Width:"
381
+ msgstr "Širina:"
382
+
383
+ #: modules/widgets/image-widget.php:142
384
+ msgid "Height:"
385
+ msgstr "Visina:"
386
+
387
+ #: modules/widgets/image-widget.php:145
388
+ msgid "If empty, we will attempt to determine the image size."
389
+ msgstr "Ako je ovo prazno, mi ćemo pokušati utvrditi dimenzije slike."
390
+
391
+ #: modules/widgets/image-widget.php:146
392
+ msgid "Link URL (when the image is clicked):"
393
+ msgstr "URL linka (kada se klikne na sliku):"
394
+
395
+ #: modules/widgets/rsslinks-widget.php:12
396
+ msgid "Links to your blog's RSS feeds"
397
+ msgstr "Linkovi ka RSS kanalima vašeg bloga"
398
+
399
+ #: modules/widgets/rsslinks-widget.php:13
400
+ msgid "RSS Links (Jetpack)"
401
+ msgstr "RSS linkovi (Jetpack)"
402
+
403
+ #: modules/widgets/rsslinks-widget.php:62 modules/widgets/top-posts.php:73
404
+ #: modules/widgets/twitter.php:258
405
+ msgid "Title:"
406
+ msgstr "Naslov:"
407
+
408
+ #: modules/widgets/rsslinks-widget.php:67
409
+ #: modules/widgets/rsslinks-widget.php:133
410
+ msgid "Posts"
411
+ msgstr "Članci"
412
+
413
+ #: modules/widgets/rsslinks-widget.php:68
414
+ #: modules/widgets/rsslinks-widget.php:136
415
+ msgid "Comments"
416
+ msgstr "Komentari"
417
+
418
+ #: modules/widgets/rsslinks-widget.php:69
419
+ msgid "Posts & Comments"
420
+ msgstr "Članci i komentari"
421
+
422
+ #: modules/widgets/rsslinks-widget.php:71
423
+ msgid "Feed(s) to Display:"
424
+ msgstr "Kanal(i) za prikaz:"
425
+
426
+ #: modules/widgets/rsslinks-widget.php:81
427
+ msgid "Text Link"
428
+ msgstr "Tekstualni link"
429
+
430
+ #: modules/widgets/rsslinks-widget.php:82
431
+ msgid "Image Link"
432
+ msgstr "Link slike"
433
+
434
+ #: modules/widgets/rsslinks-widget.php:83
435
+ msgid "Text & Image Links"
436
+ msgstr "Linkovi sa tekstom i slikom"
437
+
438
+ #: modules/widgets/rsslinks-widget.php:85
439
+ msgid "Format:"
440
+ msgstr "Format:"
441
+
442
+ #: modules/widgets/rsslinks-widget.php:96
443
+ msgid "Image Settings:"
444
+ msgstr "Postavke slike:"
445
+
446
+ #: modules/widgets/rsslinks-widget.php:99
447
+ msgid "Small"
448
+ msgstr "Malo"
449
+
450
+ #: modules/widgets/rsslinks-widget.php:100
451
+ msgid "Medium"
452
+ msgstr "Srednje"
453
+
454
+ #: modules/widgets/rsslinks-widget.php:101
455
+ msgid "Large"
456
+ msgstr "Veliko"
457
+
458
+ #: modules/widgets/rsslinks-widget.php:103
459
+ msgid "Image Size:"
460
+ msgstr "Veličina slike:"
461
+
462
+ #: modules/stats.php:527
463
+ msgid "Hide the stats smiley face image."
464
+ msgstr "Sakrij smajli koji prikazuje statistika."
465
+
466
+ #: modules/stats.php:527
467
+ msgid "The image helps collect stats and <strong>makes the world a better place</strong> but should still work when hidden"
468
+ msgstr "Slika pomaže u prikupljanju statistike i <strong>čini svijet bolji mjestom</strong>, ali sve će raditi i kada je sakrivena"
469
+
470
+ #: modules/stats.php:527
471
+ msgid "Smiley face"
472
+ msgstr "Smajli"
473
+
474
+ #: modules/stats.php:528
475
+ msgid "Report visibility"
476
+ msgstr "Vidljivost izvještaja"
477
+
478
+ #: modules/stats.php:530
479
+ msgid "Select the roles that will be able to view stats reports."
480
+ msgstr "Odaberite korisničke uloge koje će imati mogućnost pregleda statistike."
481
+
482
+ #: modules/stats.php:541
483
+ msgid "Save configuration"
484
+ msgstr "Sačuvaj konfiguraciju"
485
+
486
+ #: modules/stats.php:597
487
+ msgid "Stats"
488
+ msgstr "Statistika"
489
+
490
+ #: modules/stats.php:599
491
+ msgid "Views over 48 hours. Click for more Site Stats."
492
+ msgstr "Pregledi u zadnjih 48 sati. Kliknite za proširenu statistiku stranice."
493
+
494
+ #: modules/stats.php:666
495
+ msgid "day"
496
+ msgstr "dan"
497
+
498
+ #: modules/stats.php:667
499
+ msgid "week"
500
+ msgstr "sedmica"
501
+
502
+ #: modules/stats.php:668
503
+ msgid "month"
504
+ msgstr "mjesec"
505
+
506
+ #: modules/stats.php:671
507
+ msgid "the past day"
508
+ msgstr "jučer"
509
+
510
+ #: modules/stats.php:672
511
+ msgid "the past week"
512
+ msgstr "prošla sedmica"
513
+
514
+ #: modules/stats.php:673
515
+ msgid "the past month"
516
+ msgstr "prošli mjesec"
517
+
518
+ #: modules/stats.php:674
519
+ msgid "the past quarter"
520
+ msgstr "prošli kvartal"
521
+
522
+ #: modules/stats.php:675
523
+ msgid "the past year"
524
+ msgstr "prošla godina"
525
+
526
+ #: modules/stats.php:697
527
+ msgid "Chart stats by"
528
+ msgstr "Dijagram statistika od"
529
+
530
+ #: modules/stats.php:710
531
+ msgid "Show top posts over"
532
+ msgstr "Istakni najpopularnije članke"
533
+
534
+ #: modules/stats.php:723
535
+ msgid "Show top search terms over"
536
+ msgstr "Istakni najpopularnije pretrage"
537
+
538
+ #: modules/stats.php:882
539
+ msgid "%1$s %2$s Views"
540
+ msgstr "%1$s %2$s pregleda"
541
+
542
+ #: modules/stats.php:895
543
+ msgid "View All"
544
+ msgstr "Pregledaj sve"
545
+
546
+ #: modules/stats.php:899
547
+ msgid "Top Posts"
548
+ msgstr "Najpopularniji članci"
549
+
550
+ #: modules/stats.php:903 modules/stats.php:927
551
+ msgid "Sorry, nothing to report."
552
+ msgstr "Žao nam je, ništa za prijaviti."
553
+
554
+ #: modules/stats.php:923
555
+ msgid "Top Searches"
556
+ msgstr "Najpopularnije pretrage"
557
+
558
+ #: modules/stats.php:946
559
+ msgid "We were unable to get your stats just now. Please reload this page to try again. If this error persists, please <a href=\"%1$s\">contact support</a>. In your report please include the information below."
560
+ msgstr ""
561
+
562
+ #: modules/subscriptions.php:108
563
+ msgid "Jetpack Subscriptions Settings"
564
+ msgstr "Postavke Jetpack pretplate"
565
+
566
+ #: modules/subscriptions.php:117
567
+ msgid "Follow Blog"
568
+ msgstr "Prati blog"
569
+
570
+ #: modules/subscriptions.php:132
571
+ msgid "Follow Comments"
572
+ msgstr "Praćenje komentara"
573
+
574
+ #: modules/subscriptions.php:153
575
+ msgid "Follower Settings"
576
+ msgstr "Postavke pretplatnika"
577
+
578
+ #: modules/subscriptions.php:160
579
+ msgid "Blog follow email text"
580
+ msgstr ""
581
+
582
+ #: modules/subscriptions.php:168
583
+ msgid "Comment follow email text"
584
+ msgstr ""
585
+
586
+ #: modules/subscriptions.php:182
587
+ msgid "Change whether your visitors can subscribe to your posts or comments or both."
588
+ msgstr "Odaberite da li želite da se posjetioci mogu pretplatiti na vaše članke ili komentare."
589
+
590
+ #: modules/subscriptions.php:197
591
+ msgid "Show a <em>'follow blog'</em> option in the comment form"
592
+ msgstr "Prikaži opciju <em>'za praćenje bloga'</em> u obrascu za komentarisanje"
593
+
594
+ #: modules/subscriptions.php:212
595
+ msgid "Show a <em>'follow comments'</em> option in the comment form"
596
+ msgstr "Prikaži opciju <em>'za praćenje komentara'</em> u obrascu za komentarisanje"
597
+
598
+ #: modules/subscriptions.php:237
599
+ msgid "These settings change emails sent from your blog to followers."
600
+ msgstr ""
601
+
602
+ #: modules/subscriptions.php:243
603
+ msgid "Introduction text sent when someone follows your blog. (Site and confirmation details will be automatically added for you.)"
604
+ msgstr ""
605
+
606
+ #: modules/subscriptions.php:249
607
+ msgid "Introduction text sent when someone follows a post on your blog. (Site and confirmation details will be automatically added for you.)"
608
+ msgstr ""
609
+
610
+ #: modules/subscriptions.php:254
611
+ msgid ""
612
+ "Howdy.\n"
613
+ "\n"
614
+ "You recently followed this blog's posts. This means you will receive each new post by email.\n"
615
+ "\n"
616
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
617
+ msgstr ""
618
+
619
+ #: modules/subscriptions.php:255
620
+ msgid ""
621
+ "Howdy.\n"
622
+ "\n"
623
+ "You recently followed one of my posts. This means you will receive an email when new comments are posted.\n"
624
+ "\n"
625
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
626
+ msgstr ""
627
+
628
+ #: modules/subscriptions.php:447
629
+ msgid "Notify me of follow-up comments by email."
630
+ msgstr "Obavijesti me o narednim komentarima putem emaila."
631
+
632
+ #: modules/subscriptions.php:454
633
+ msgid "Notify me of new posts by email."
634
+ msgstr "Obavijesti me o novim člancima pomoću emaila."
635
+
636
+ #: modules/subscriptions.php:520
637
+ msgid "Add an email signup form to allow people to subscribe to your blog."
638
+ msgstr "Dodaje obrazac za email registraciju kako bi se druge osobe mogle pretplatiti na vaš blog."
639
+
640
+ #: modules/subscriptions.php:523
641
+ msgid "Blog Subscriptions (Jetpack)"
642
+ msgstr "Blog pretplate (Jetpack)"
643
+
644
+ #: modules/subscriptions.php:554
645
+ msgid "An email was just sent to confirm your subscription. Please find the email now and click activate to start subscribing."
646
+ msgstr "Poslali smo vam email koji je potrebno da potvrdite pretplatu. Molimo vas da pronađete email i kliknete na aktivacijski link unatar njega kako biste aktivirali pretplatu."
647
+
648
+ #: modules/subscriptions.php:564
649
+ msgid "The email you entered was invalid, please check and try again."
650
+ msgstr "Email koji ste upisali nije ispravan. Molimo vas da ga provjerite i pokušate ponovo."
651
+
652
+ #: modules/subscriptions.php:567
653
+ msgid "You have already subscribed to this site, please check your inbox."
654
+ msgstr "Već ste se pretplatili na ovu stranicu, molimo vas da provjerite vaš email."
655
+
656
+ #: modules/subscriptions.php:574
657
+ msgid "There was an error when subscribing, please try again."
658
+ msgstr "Desila se greška prilikom pretplaćivanja, molimo vas da pokušate ponovo."
659
+
660
+ #: modules/subscriptions.php:592
661
+ msgid "Join %s other subscriber"
662
+ msgid_plural "Join %s other subscribers"
663
+ msgstr[0] "Pridružite se ostalim pretplatnicima (%s)"
664
+ msgstr[1] "Pridružite se ostalim pretplatnicima (%s)"
665
+ msgstr[2] "Pridružite se ostalim pretplatnicima (%s)"
666
+
667
+ #: modules/subscriptions.php:671
668
+ msgid "Subscribe to Blog via Email"
669
+ msgstr "Pretplati se na blogu pomoću emaila"
670
+
671
+ #: modules/subscriptions.php:672
672
+ msgid "Enter your email address to subscribe to this blog and receive notifications of new posts by email."
673
+ msgstr "Upišite vašu email adresu da biste se pretplatili na email obavijesti o novim člancima na ovom blogu."
674
+
675
+ #: modules/subscriptions.php:674
676
+ msgid "Click to subscribe to this blog and receive notifications of new posts by email."
677
+ msgstr "Klinite da biste se pretplatili i na vašu email adresu dobijali obavijesti o novim člancima na ovom blogu."
678
+
679
+ #: modules/subscriptions.php:690
680
+ msgid "%s: %s"
681
+ msgstr "%s: %s"
682
+
683
+ #: modules/subscriptions.php:698 modules/widgets/image-widget.php:107
684
+ msgid "Widget title:"
685
+ msgstr "Naslov dodatka:"
686
+
687
+ #: modules/subscriptions.php:704
688
+ msgid "Optional text to display to your readers:"
689
+ msgstr "Neobavezni tekst koji će se prikazivati vašim čitaocima:"
690
+
691
+ #: modules/subscriptions.php:710
692
+ msgid "Subscribe Button:"
693
+ msgstr "Dugme za pretplatu:"
694
+
695
+ #: modules/subscriptions.php:717
696
+ msgid "Show total number of subscribers? (%s subscriber)"
697
+ msgid_plural "Show total number of subscribers? (%s subscribers)"
698
+ msgstr[0] "Prikazati ukupan broj pretplatnika? (%s pretplatnik)"
699
+ msgstr[1] "Prikazati ukupan broj pretplatnika? (%s pretplatnika)"
700
+ msgstr[2] "Prikazati ukupan broj pretplatnika? (%s pretplatnika)"
701
+
702
+ #: modules/vaultpress.php:22
703
+ msgid "Active"
704
+ msgstr "Aktivna"
705
+
706
+ #: modules/widgets/facebook-likebox.php:29
707
+ msgid "Facebook Like Box"
708
+ msgstr "Facebook Like okvir"
709
+
710
+ #: modules/widgets/facebook-likebox.php:29
711
+ msgid "Display a Facebook Like Box to connect visitors to your Facebook Page"
712
+ msgstr "Prikažite Facebook Like okvir za povezivanje posjetitelja s vašom Facebook stranicom"
713
+
714
+ #: modules/widgets/facebook-likebox.php:41
715
+ msgid "It looks like your Facebook URL is incorrectly configured. Please check it in your <a href=\"%s\">widget settings</a>."
716
+ msgstr ""
717
+
718
+ #: modules/sharedaddy/sharing.php:300
719
+ msgid "Button style"
720
+ msgstr "Stil dugmeta"
721
+
722
+ #: modules/sharedaddy/sharing.php:303
723
+ msgid "Icon + text"
724
+ msgstr "Ikona + tekst"
725
+
726
+ #: modules/sharedaddy/sharing.php:304
727
+ msgid "Icon only"
728
+ msgstr "Samo ikona"
729
+
730
+ #: modules/sharedaddy/sharing.php:305
731
+ msgid "Text only"
732
+ msgstr "Samo tekst"
733
+
734
+ #: modules/sharedaddy/sharing.php:306
735
+ msgid "Official buttons"
736
+ msgstr "Oficijelna dugmad"
737
+
738
+ #: modules/sharedaddy/sharing.php:311
739
+ msgid "Sharing label"
740
+ msgstr "Naslov za dijeljenje"
741
+
742
+ #: modules/sharedaddy/sharing.php:317
743
+ msgid "Open links in"
744
+ msgstr "Otvori linkove u"
745
+
746
+ #: modules/sharedaddy/sharing.php:320
747
+ msgid "New window"
748
+ msgstr "Novom prozoru"
749
+
750
+ #: modules/sharedaddy/sharing.php:321
751
+ msgid "Same window"
752
+ msgstr "Istom prozoru"
753
+
754
+ #: modules/sharedaddy/sharing.php:326
755
+ msgid "Show buttons on"
756
+ msgstr "Prikaži dugmad na"
757
+
758
+ #: modules/sharedaddy/sharing.php:332
759
+ msgid "Front Page, Archive Pages, and Search Results"
760
+ msgstr "Početna stranica, arhiva i rezultati pretrage"
761
+
762
+ #: modules/sharedaddy/sharing.php:348
763
+ msgid "Save Changes"
764
+ msgstr "Sačuvaj promjene"
765
+
766
+ #: modules/sharedaddy/sharing.php:359
767
+ msgid "Service name"
768
+ msgstr "Ime servisa"
769
+
770
+ #: modules/sharedaddy/sharing.php:365
771
+ msgid "Sharing URL"
772
+ msgstr "URL za dijeljenje"
773
+
774
+ #: modules/sharedaddy/sharing.php:369
775
+ msgid "You can add the following variables to your service sharing URL:"
776
+ msgstr "Možete dodati sljedeće promjenjive u URL vašeg servisa za dijeljenje:"
777
+
778
+ #: modules/sharedaddy/sharing.php:374
779
+ msgid "Icon URL"
780
+ msgstr "URL ikone"
781
+
782
+ #: modules/sharedaddy/sharing.php:377
783
+ msgid "Enter the URL of a 16x16px icon you want to use for this service."
784
+ msgstr "Unesite URL ikone (veličine 16x16px) koju želite koristiti za ovaj servis."
785
+
786
+ #: modules/sharedaddy/sharing.php:383
787
+ msgid "Create Share Button"
788
+ msgstr "Kreiraj dugme za dijeljenje"
789
+
790
+ #: modules/sharedaddy/sharing.php:395
791
+ msgid "An error occurred creating your new sharing service - please check you gave valid details."
792
+ msgstr "Desila se greška prilikom kreiranja vašeg novog servisa za dijeljenje - molimo vas da provjerite da li ste unijeli ispravne informacije."
793
+
794
+ #: modules/shortcodes/archives.php:50
795
+ msgid "Your blog does not currently have any published posts."
796
+ msgstr "Vaš blog trenutno nema objavljenih članaka."
797
+
798
+ #: modules/shortcodes/audio.php:180
799
+ msgid "Download: <a href=\"%s\">%s</a><br />"
800
+ msgstr "Preuzmi: <a href=\"%s\">%s</a><br />"
801
+
802
+ #: modules/shortcodes/videopress.php:616
803
+ msgid "The VideoPress plugin could not communicate with the VideoPress servers. This error is most likely caused by a misconfigured plugin. Please reinstall or upgrade."
804
+ msgstr "VideoPress plugin ne može komunicirati sa VideoPress serverima. Ovakva greška je obično rezultat nepravilne konfiguracije plugina. Molimo vas da plugin ponovo instalirate ili nadogradite."
805
+
806
+ #: modules/shortcodes/videopress.php:618
807
+ msgid "<strong>%s</strong> is not an allowed embed site."
808
+ msgstr "<strong>%s</strong> nije dozvoljena stranica za ugradnju."
809
+
810
+ #: modules/shortcodes/videopress.php:618
811
+ msgid "Publisher limits playback of video embeds."
812
+ msgstr "Objavljivač ograničava reprodukciju ugrađenih video datoteka."
813
+
814
+ #: modules/shortcodes/videopress.php:620
815
+ msgid "No data found for VideoPress identifier: <strong>%s</strong>."
816
+ msgstr "Nema pronađenih podataka za VideoPress identifikator: <strong>%s</strong>."
817
+
818
+ #: modules/shortcodes/videopress.php:837
819
+ msgid "%s Error"
820
+ msgstr "%s greška"
821
+
822
+ #: modules/shortcodes/videopress.php:871
823
+ msgid "This video is intended for mature audiences."
824
+ msgstr "Ovaj video je namijenjen zreloj publici."
825
+
826
+ #: modules/shortcodes/videopress.php:871
827
+ msgid "Please verify your birthday."
828
+ msgstr "Molimo vas da potvrdite vaš rođendan."
829
+
830
+ #: modules/shortcodes/videopress.php:887
831
+ msgid "January"
832
+ msgstr "Januar"
833
+
834
+ #: modules/shortcodes/videopress.php:887
835
+ msgid "February"
836
+ msgstr "Februar"
837
+
838
+ #: modules/shortcodes/videopress.php:887
839
+ msgid "March"
840
+ msgstr "Mart"
841
+
842
+ #: modules/shortcodes/videopress.php:887
843
+ msgid "April"
844
+ msgstr "April"
845
+
846
+ #: modules/shortcodes/videopress.php:887
847
+ msgid "May"
848
+ msgstr "Maj"
849
+
850
+ #: modules/shortcodes/videopress.php:887
851
+ msgid "June"
852
+ msgstr "Juni"
853
+
854
+ #: modules/shortcodes/videopress.php:887
855
+ msgid "July"
856
+ msgstr "Juli"
857
+
858
+ #: modules/shortcodes/videopress.php:887
859
+ msgid "August"
860
+ msgstr "August"
861
+
862
+ #: modules/shortcodes/videopress.php:887
863
+ msgid "September"
864
+ msgstr "Septembar"
865
+
866
+ #: modules/shortcodes/videopress.php:887
867
+ msgid "October"
868
+ msgstr "Oktobar"
869
+
870
+ #: modules/shortcodes/videopress.php:887
871
+ msgid "November"
872
+ msgstr "Novembar"
873
+
874
+ #: modules/shortcodes/videopress.php:887
875
+ msgid "December"
876
+ msgstr "Decembar"
877
+
878
+ #: modules/shortcodes/videopress.php:923
879
+ msgid "Submit"
880
+ msgstr "Pošalji"
881
+
882
+ #: modules/shortcodes/videopress.php:969
883
+ msgid "You do not have sufficient <a rel=\"nofollow\" href=\"%s\">freedom levels</a> to view this video. Support free software and upgrade."
884
+ msgstr "Nemate potrebni <a rel=\"nofollow\" href=\"%s\">nivo slobode</a> za pregled ovog videa. Podržite slobodni softver i izvršite nadogradnju."
885
+
886
+ #: modules/shortcodes/videopress.php:1027
887
+ msgctxt "watch a video title"
888
+ msgid "Watch: %s"
889
+ msgstr "Pregledaj: %s"
890
+
891
+ #: modules/shortcodes/videopress.php:1123
892
+ #: modules/shortcodes/videopress.php:1145
893
+ msgid "this video"
894
+ msgstr "ovaj video"
895
+
896
+ #: modules/shortcodes/videopress.php:1152
897
+ msgctxt "Play as in playback or view a movie"
898
+ msgid "JavaScript required to play %s."
899
+ msgstr "Javascript je neophodan za reprodukciju %s."
900
+
901
+ #: modules/shortcodes/videopress.php:1299
902
+ msgid "This video requires <a rel=\"nofollow\" href=\"%s\">Adobe Flash</a> for playback."
903
+ msgstr "Di biste pregledali ovaj video, potreban vam je <a rel=\"nofollow\" href=\"%s\">Adobe Flash</a>."
904
+
905
+ #: modules/shortcodes/videopress.php:1306
906
+ msgid "Loading video..."
907
+ msgstr "Učitavam video..."
908
+
909
+ #: modules/stats.php:252 modules/stats.php:645
910
+ msgid "Site Stats"
911
+ msgstr "Statistika stranice"
912
+
913
+ #: modules/stats.php:343
914
+ msgid "Loading&hellip;"
915
+ msgstr "Učitavam&hellip;"
916
+
917
+ #: modules/stats.php:344
918
+ msgid "Your Site Stats work better with Javascript enabled."
919
+ msgstr "Statistike vaše stranice radit će bolje ako omogućite Javascript."
920
+
921
+ #: modules/stats.php:345
922
+ msgid "View Site Stats without Javascript"
923
+ msgstr "Pregledaj statistike stranice bez Javascripta"
924
+
925
+ #: modules/stats.php:517
926
+ msgid "Visit <a href=\"%s\">Site Stats</a> to see your stats."
927
+ msgstr "Za pregled posjeta posjetite <a href=\"%s\">statistiku stranice</a>."
928
+
929
+ #: modules/stats.php:522
930
+ msgid "Admin bar"
931
+ msgstr "Administratorska traka"
932
+
933
+ #: modules/stats.php:523
934
+ msgid "Put a chart showing 48 hours of views in the admin bar."
935
+ msgstr "Ubaci dijagram pregleda u zadnjih 48 sati u administratorsku traku."
936
+
937
+ #: modules/stats.php:524
938
+ msgid "Registered users"
939
+ msgstr "Registrovani korisnici"
940
+
941
+ #: modules/stats.php:525
942
+ msgid "Count the page views of registered users who are logged in."
943
+ msgstr "Broji preglede stranica registrovanih korisnika koji su prijavljeni."
944
+
945
+ #: modules/stats.php:526
946
+ msgid "Smiley"
947
+ msgstr "Smajli"
948
+
949
+ #: modules/sharedaddy/sharing-sources.php:279
950
+ msgid "Send to Email Address"
951
+ msgstr "Pošalji na email adresu"
952
+
953
+ #: modules/sharedaddy/sharing-sources.php:287
954
+ msgid "Your Name"
955
+ msgstr "Vaše ime"
956
+
957
+ #: modules/sharedaddy/sharing-sources.php:290
958
+ msgid "Your Email Address"
959
+ msgstr "Vaša email adresa"
960
+
961
+ #: modules/sharedaddy/sharing-sources.php:298
962
+ msgid "Send Email"
963
+ msgstr "Pošalji email"
964
+
965
+ #: modules/sharedaddy/sharing-sources.php:299
966
+ msgid "Cancel"
967
+ msgstr "Poništi"
968
+
969
+ #: modules/sharedaddy/sharing-sources.php:302
970
+ msgid "Post was not sent - check your email addresses!"
971
+ msgstr "Članak nije poslan - provjerite vašu email adresu!"
972
+
973
+ #: modules/sharedaddy/sharing-sources.php:306
974
+ msgid "Email check failed, please try again"
975
+ msgstr "Provjera emaila nije uspjela, molimo vas da pokušate ponovo"
976
+
977
+ #: modules/sharedaddy/sharing-sources.php:310
978
+ msgid "Sorry, your blog cannot share posts by email."
979
+ msgstr "Žao nam je, vaš blog ne može dijeliti članke pomoću emaila."
980
+
981
+ #: modules/sharedaddy/sharing-sources.php:330 modules/widgets/twitter.php:22
982
+ msgid "Twitter"
983
+ msgstr "Twitter"
984
+
985
+ #: modules/sharedaddy/sharing-sources.php:376
986
+ msgctxt "share to"
987
+ msgid "Twitter"
988
+ msgstr "Twitter"
989
+
990
+ #: modules/sharedaddy/sharing-sources.php:376
991
+ msgid "Click to share on Twitter"
992
+ msgstr "Kliknite ovdje za dijeljenje na Twitteru"
993
+
994
+ #: modules/sharedaddy/sharing-sources.php:451
995
+ msgid "StumbleUpon"
996
+ msgstr "StumbleUpon"
997
+
998
+ #: modules/sharedaddy/sharing-sources.php:462
999
+ msgctxt "share to"
1000
+ msgid "StumbleUpon"
1001
+ msgstr "StumbleUpon"
1002
+
1003
+ #: modules/sharedaddy/sharing-sources.php:462
1004
+ msgid "Click to share on StumbleUpon"
1005
+ msgstr "Kliknite za dijeljenje na StumbleUponu"
1006
+
1007
+ #: modules/sharedaddy/sharing-sources.php:489
1008
+ #: modules/sharedaddy/sharing-sources.php:496
1009
+ msgid "Reddit"
1010
+ msgstr "Reddit"
1011
+
1012
+ #: modules/sharedaddy/sharing-sources.php:496
1013
+ msgid "Click to share on Reddit"
1014
+ msgstr "Kliknite za dijeljenje na Redditu"
1015
+
1016
+ #: modules/sharedaddy/sharing-sources.php:523
1017
+ msgid "Digg"
1018
+ msgstr "Digg"
1019
+
1020
+ #: modules/sharedaddy/sharing-sources.php:532
1021
+ #: modules/sharedaddy/sharing-sources.php:535
1022
+ msgid "Click to Digg this post"
1023
+ msgstr "Kliknite za dijeljenje ovog članka na Diggu"
1024
+
1025
+ #: modules/sharedaddy/sharing-sources.php:535
1026
+ msgctxt "share to"
1027
+ msgid "Digg"
1028
+ msgstr "Digg"
1029
+
1030
+ #: modules/sharedaddy/sharing-sources.php:579
1031
+ msgid "LinkedIn"
1032
+ msgstr "LinkedIn"
1033
+
1034
+ #: modules/sharedaddy/sharing-sources.php:593
1035
+ msgctxt "share to"
1036
+ msgid "LinkedIn"
1037
+ msgstr "LinkedIn"
1038
+
1039
+ #: modules/sharedaddy/sharing-sources.php:593
1040
+ msgid "Click to share on LinkedIn"
1041
+ msgstr "Klik za razmjenu na LinkedInu"
1042
+
1043
+ #: modules/sharedaddy/sharing-sources.php:659
1044
+ msgid "Facebook"
1045
+ msgstr "Facebook"
1046
+
1047
+ #: modules/sharedaddy/sharing-sources.php:734
1048
+ msgctxt "share to"
1049
+ msgid "Facebook"
1050
+ msgstr "Facebook"
1051
+
1052
+ #: modules/sharedaddy/sharing-sources.php:734
1053
+ msgid "Share on Facebook"
1054
+ msgstr "Podijeli na Facebooku"
1055
+
1056
+ #: modules/sharedaddy/sharing-sources.php:765
1057
+ msgid "Print"
1058
+ msgstr "Štampanje"
1059
+
1060
+ #: modules/sharedaddy/sharing-sources.php:769
1061
+ msgctxt "share to"
1062
+ msgid "Print"
1063
+ msgstr "Štampaj"
1064
+
1065
+ #: modules/sharedaddy/sharing-sources.php:769
1066
+ msgid "Click to print"
1067
+ msgstr "Kliknite za štampanje"
1068
+
1069
+ #: modules/sharedaddy/sharing-sources.php:785
1070
+ msgid "Press This"
1071
+ msgstr "Objavi ovo"
1072
+
1073
+ #: modules/sharedaddy/sharing-sources.php:813
1074
+ msgctxt "share to"
1075
+ msgid "Press This"
1076
+ msgstr "Objavi ovo"
1077
+
1078
+ #: modules/sharedaddy/sharing-sources.php:813
1079
+ msgid "Click to Press This!"
1080
+ msgstr "Kliknite za objavljivanje!"
1081
+
1082
+ #: modules/sharedaddy/sharing-sources.php:831
1083
+ msgid "Google +1"
1084
+ msgstr "Google +1"
1085
+
1086
+ #: modules/sharedaddy/sharing-sources.php:846
1087
+ msgctxt "share to"
1088
+ msgid "Google +1"
1089
+ msgstr ""
1090
+
1091
+ #: modules/sharedaddy/sharing-sources.php:846
1092
+ msgid "Click to share on Google+"
1093
+ msgstr ""
1094
+
1095
+ #: modules/sharedaddy/sharing-sources.php:935
1096
+ msgid "Click to share"
1097
+ msgstr "Kliknite za dijeljenje"
1098
+
1099
+ #: modules/sharedaddy/sharing-sources.php:990
1100
+ msgid "URL"
1101
+ msgstr "URL"
1102
+
1103
+ #: modules/sharedaddy/sharing-sources.php:995
1104
+ msgid "Icon"
1105
+ msgstr "Ikona"
1106
+
1107
+ #: modules/sharedaddy/sharing-sources.php:1002
1108
+ msgid "Save"
1109
+ msgstr "Sačuvaj"
1110
+
1111
+ #: modules/sharedaddy/sharing-sources.php:1003
1112
+ msgid "Remove Service"
1113
+ msgstr "Ukloni servis"
1114
+
1115
+ #: modules/sharedaddy/sharing-sources.php:1082
1116
+ msgid "Tumblr"
1117
+ msgstr "Tumblr"
1118
+
1119
+ #: modules/sharedaddy/sharing-sources.php:1093
1120
+ msgctxt "share to"
1121
+ msgid "Tumblr"
1122
+ msgstr "Tumblr"
1123
+
1124
+ #: modules/sharedaddy/sharing-sources.php:1093
1125
+ msgid "Click to share on Tumblr"
1126
+ msgstr "Kliknite da podijelite na Tumblru"
1127
+
1128
+ #: modules/sharedaddy/sharing-sources.php:1129
1129
+ msgid "Pinterest"
1130
+ msgstr "Pinterest"
1131
+
1132
+ #: modules/sharedaddy/sharing-sources.php:1159
1133
+ msgid "Pin It"
1134
+ msgstr "Pin It"
1135
+
1136
+ #: modules/sharedaddy/sharing-sources.php:1161
1137
+ msgctxt "share to"
1138
+ msgid "Pinterest"
1139
+ msgstr "Pinterest"
1140
+
1141
+ #: modules/sharedaddy/sharing-sources.php:1161
1142
+ msgid "Click to share on Pinterest"
1143
+ msgstr "Kliknite da podijelite na Pinterestu"
1144
+
1145
+ #: modules/sharedaddy/sharing.php:153
1146
+ msgid "Warning! Multibyte support missing!"
1147
+ msgstr "Upozorenje! Nedostaje Multibyte podrška!"
1148
+
1149
+ #: modules/sharedaddy/sharing.php:154
1150
+ msgid "This plugin will work without it, but multibyte support is used <a href=\"%s\">if available</a>. You may see minor problems with Tweets and other sharing services."
1151
+ msgstr "Ovaj plugin će raditi i bez nje, ali multibyte podrška se koristi uvijek kada je <a href=\"%s\">dostupna</a>. Moguće je da ćete imati sitne probleme sa vašim tweetovima i drugim servisima za dijeljenje."
1152
+
1153
+ #: modules/sharedaddy/sharing.php:158
1154
+ msgid "Settings have been saved"
1155
+ msgstr "Postavke su sačuvane"
1156
+
1157
+ #: modules/sharedaddy/sharing.php:169
1158
+ msgid "Sharing Buttons"
1159
+ msgstr "Dugmad za dijeljenje"
1160
+
1161
+ #: modules/sharedaddy/sharing.php:170
1162
+ msgid "Add sharing buttons to your blog and allow your visitors to share posts with their friends."
1163
+ msgstr ""
1164
+
1165
+ #: modules/sharedaddy/sharing.php:176
1166
+ msgid "Available Services"
1167
+ msgstr "Dostupni servisi"
1168
+
1169
+ #: modules/sharedaddy/sharing.php:177
1170
+ msgid "Drag and drop the services you'd like to enable into the box below."
1171
+ msgstr "Dovucite servise koje želite omogućiti u okvir ispod."
1172
+
1173
+ #: modules/sharedaddy/sharing.php:178
1174
+ msgid "Add a new service"
1175
+ msgstr "Dodaj novi servis"
1176
+
1177
+ #: modules/sharedaddy/sharing.php:198
1178
+ msgid "Enabled Services"
1179
+ msgstr "Omogućeni servisi"
1180
+
1181
+ #: modules/sharedaddy/sharing.php:201
1182
+ msgid "Services dragged here will appear individually."
1183
+ msgstr "Servisi dovučeni ovdje će se prikazivati samostalno."
1184
+
1185
+ #: modules/sharedaddy/sharing.php:204
1186
+ msgid "Drag and drop available services here."
1187
+ msgstr "Ovdje dovucite i pustite dostupne servise."
1188
+
1189
+ #: modules/sharedaddy/sharing.php:215
1190
+ msgid "Services dragged here will be hidden behind a share button."
1191
+ msgstr "Servisi dovučeni ovdje će biti sakriveni unutar dugmeta za dijeljenje."
1192
+
1193
+ #: modules/sharedaddy/sharing.php:230
1194
+ msgid "Live Preview"
1195
+ msgstr "Pregled uživo"
1196
+
1197
+ #: modules/sharedaddy/sharing.php:233
1198
+ msgid "Sharing is off. Add services above to enable."
1199
+ msgstr "Dijeljenje je isključeno. Dodajte servise kako biste ga omogućili."
1200
+
1201
+ #: modules/module-info.php:638
1202
+ msgid "When you write great content, all you really want is people to find it, right?"
1203
+ msgstr ""
1204
+
1205
+ #: modules/module-info.php:640
1206
+ msgid "With the Infinite Scroll module and a supported theme, that's exactly what happens. Instead of the old way of navigating down a page by scrolling and then clicking a link to get to the next page, waiting for a page refresh&mdash;the document model of the web&mdash;infinite scrolling pulls the next set of posts automatically into view when the reader approaches the bottom of the page, more like an application."
1207
+ msgstr ""
1208
+
1209
+ #: modules/module-info.php:643
1210
+ msgid "At this time, your theme, %s, doesn't support Infinite Scroll. Unlike other Jetpack modules, Infinite Scroll needs information from your theme to function properly."
1211
+ msgstr ""
1212
+
1213
+ #: modules/module-info.php:645
1214
+ msgid "Until your theme supports Infinite Scroll, you won't be able to activate this module."
1215
+ msgstr ""
1216
+
1217
+ #: modules/module-info.php:655
1218
+ msgid "There is an update available for your theme. You may wish to check if this update adds Infinite Scroll support by visiting the <a href=\"%s\">WordPress Updates</a> page."
1219
+ msgstr ""
1220
+
1221
+ #: modules/module-info.php:675 modules/module-info.php:678
1222
+ #: modules/post-by-email.php:89
1223
+ msgid "Post by Email"
1224
+ msgstr "Objavljivanje pomoću emaila"
1225
+
1226
+ #: modules/module-info.php:680
1227
+ msgid "Post by Email is a way of publishing posts on your blog by email. Any email client can be used to send the email, allowing you to publish quickly and easily from devices such as cell phones."
1228
+ msgstr ""
1229
+
1230
+ #: modules/module-info.php:684
1231
+ msgid "Manage your Post By Email address from your <a href=\"%s\">profile settings</a>."
1232
+ msgstr ""
1233
+
1234
+ #: modules/module-info.php:688
1235
+ msgid "More information on sending emails, attachments, and customizing your posts."
1236
+ msgstr ""
1237
+
1238
+ #: modules/module-info.php:708
1239
+ msgid "Photon"
1240
+ msgstr ""
1241
+
1242
+ #: modules/module-info.php:710
1243
+ msgid "Give your site a boost by loading images in post and posts' featured images from the WordPress.com content delivery network. We cache your images and serve them from our super-fast network, reducing the burden on your web host with the click of a button."
1244
+ msgstr ""
1245
+
1246
+ #: modules/post-by-email.php:92 modules/subscriptions.php:596
1247
+ msgid "Email Address"
1248
+ msgstr "Email adresa"
1249
+
1250
+ #: modules/post-by-email.php:107
1251
+ msgid "Enable Post By Email"
1252
+ msgstr ""
1253
+
1254
+ #: modules/post-by-email.php:111 modules/shortcodes/videopress.php:926
1255
+ msgid "More information"
1256
+ msgstr "Više informacija"
1257
+
1258
+ #: modules/post-by-email.php:114
1259
+ msgid "Regenerate Address"
1260
+ msgstr ""
1261
+
1262
+ #: modules/post-by-email.php:115
1263
+ msgid "Disable Post By Email"
1264
+ msgstr ""
1265
+
1266
+ #: modules/post-by-email.php:123
1267
+ msgid "To use Post By Email, you need to link your %s account to your WordPress.com account."
1268
+ msgstr ""
1269
+
1270
+ #: modules/post-by-email.php:126 modules/publicize/publicize-jetpack.php:58
1271
+ msgid "If you don't have a WordPress.com account yet, you can sign up for free in just a few seconds."
1272
+ msgstr ""
1273
+
1274
+ #: modules/post-by-email.php:167 modules/post-by-email.php:176
1275
+ msgid "Unable to create your Post By Email address. Please try again later."
1276
+ msgstr ""
1277
+
1278
+ #: modules/post-by-email.php:195 modules/post-by-email.php:204
1279
+ msgid "Unable to regenerate your Post By Email address. Please try again later."
1280
+ msgstr ""
1281
+
1282
+ #: modules/post-by-email.php:223 modules/post-by-email.php:232
1283
+ msgid "Unable to disable your Post By Email address. Please try again later."
1284
+ msgstr ""
1285
+
1286
+ #: modules/publicize/publicize-jetpack.php:55
1287
+ msgid "To use Publicize, you'll need to link your %s account to your WordPress.com account using the button to the right."
1288
+ msgstr ""
1289
+
1290
+ #: modules/publicize/publicize-jetpack.php:165
1291
+ msgid "There was a problem connecting to %s to create an authorized connection. Please try again in a moment."
1292
+ msgstr ""
1293
+
1294
+ #: modules/publicize/publicize-jetpack.php:167
1295
+ msgid "There was a problem connecting with Publicize. Please try again in a moment."
1296
+ msgstr ""
1297
+
1298
+ #: modules/publicize/publicize-jetpack.php:313
1299
+ #: modules/publicize/publicize-jetpack.php:329
1300
+ #: modules/publicize/publicize-jetpack.php:453
1301
+ msgid "Publicize to my %s:"
1302
+ msgstr ""
1303
+
1304
+ #: modules/publicize/publicize-jetpack.php:314
1305
+ msgid "Facebook Wall"
1306
+ msgstr ""
1307
+
1308
+ #: modules/publicize/publicize-jetpack.php:330
1309
+ msgid "Facebook Page"
1310
+ msgstr ""
1311
+
1312
+ #: modules/publicize/publicize-jetpack.php:361
1313
+ #: modules/publicize/publicize-jetpack.php:473 modules/publicize/ui.php:214
1314
+ msgid "OK"
1315
+ msgstr "Uredu"
1316
+
1317
+ #: modules/publicize/publicize-jetpack.php:454
1318
+ msgid "Tumblr blog"
1319
+ msgstr ""
1320
+
1321
+ #: modules/publicize/ui.php:35 modules/publicize/ui.php:45
1322
+ #: modules/sharedaddy/sharing.php:57 modules/sharedaddy/sharing.php:163
1323
+ msgid "Sharing Settings"
1324
+ msgstr "Postavke dijeljenja"
1325
+
1326
+ #: modules/publicize/ui.php:76
1327
+ msgid "You have successfully connected your blog with your %s account."
1328
+ msgstr ""
1329
+
1330
+ #: modules/publicize/ui.php:91
1331
+ msgid "Connect your blog to popular social networking sites and automatically share new posts with your friends."
1332
+ msgstr "Povežite vaš blog sa popularnim društvenim mrežama i automatski dijelite nove članke sa vašim prijateljima."
1333
+
1334
+ #: modules/publicize/ui.php:92
1335
+ msgid "You can make a connection for just yourself or for all users on your blog. Shared connections are marked with the (Shared) text."
1336
+ msgstr ""
1337
+
1338
+ #: modules/publicize/ui.php:153
1339
+ msgid "Shared"
1340
+ msgstr ""
1341
+
1342
+ #: modules/publicize/ui.php:156 modules/publicize/ui.php:160
1343
+ msgid "Disconnect"
1344
+ msgstr ""
1345
+
1346
+ #: modules/publicize/ui.php:169
1347
+ msgid "Add new %s connection."
1348
+ msgstr ""
1349
+
1350
+ #: modules/publicize/ui.php:185
1351
+ msgid "Make this connection available to all users of this blog?"
1352
+ msgstr ""
1353
+
1354
+ #: modules/publicize/ui.php:193
1355
+ msgid "There was a problem connecting to %s. Please disconnect and try again."
1356
+ msgstr ""
1357
+
1358
+ #: modules/publicize/ui.php:383
1359
+ msgid "Publicize:"
1360
+ msgstr "Publikacija:"
1361
+
1362
+ #: modules/publicize/ui.php:429
1363
+ msgctxt "Service: Account connected as"
1364
+ msgid "%1$s: %2$s"
1365
+ msgstr ""
1366
+
1367
+ #: modules/publicize/ui.php:464
1368
+ msgid "Custom Message:"
1369
+ msgstr "Korisnička poruka:"
1370
+
1371
+ #: modules/publicize/ui.php:469 modules/publicize/ui.php:498
1372
+ #: modules/publicize/ui.php:500
1373
+ msgid "Hide"
1374
+ msgstr "Sakrij"
1375
+
1376
+ #: modules/publicize/ui.php:478
1377
+ msgid "Not Connected"
1378
+ msgstr ""
1379
+
1380
+ #: modules/publicize/ui.php:485
1381
+ msgid "Connect to"
1382
+ msgstr ""
1383
+
1384
+ #: modules/publicize/ui.php:490
1385
+ msgid "Connect and share your posts on %s"
1386
+ msgstr ""
1387
+
1388
+ #: modules/publicize/ui.php:513
1389
+ msgid "Show"
1390
+ msgstr "Prikaži"
1391
+
1392
+ #: modules/publicize.php:87
1393
+ msgctxt "word count: words or characters?"
1394
+ msgid "words"
1395
+ msgstr "words"
1396
+
1397
+ #: modules/sharedaddy/sharedaddy.php:18
1398
+ msgid "Shared Post"
1399
+ msgstr "Podijeljeni članak"
1400
+
1401
+ #: modules/sharedaddy/sharedaddy.php:35
1402
+ msgid "Show sharing buttons."
1403
+ msgstr ""
1404
+
1405
+ #: modules/sharedaddy/sharedaddy.php:112
1406
+ msgid "Disable CSS and JS"
1407
+ msgstr "Onemogući CSS i JS"
1408
+
1409
+ #: modules/sharedaddy/sharedaddy.php:114
1410
+ msgid "Advanced. If this option is checked, you must include these files in your theme manually for the sharing links to work."
1411
+ msgstr "Napredno. Ako je ova opcija uključena, ove datoteke morate ručnu ubaciti u vašu temu da bi linkovi za razmjenjivanje funkcionisali."
1412
+
1413
+ #: modules/sharedaddy/sharing-service.php:12
1414
+ msgid "Share this:"
1415
+ msgstr "Podijeli ovo:"
1416
+
1417
+ #: modules/sharedaddy/sharing-service.php:523
1418
+ #: modules/sharedaddy/sharing.php:245 modules/sharedaddy/sharing.php:278
1419
+ msgid "More"
1420
+ msgstr "Više"
1421
+
1422
+ #: modules/sharedaddy/sharing-service.php:525
1423
+ msgid "Share"
1424
+ msgstr "Podijeli"
1425
+
1426
+ #: modules/sharedaddy/sharing-sources.php:242
1427
+ msgid "This post has been shared!"
1428
+ msgstr "Ovaj članak je podijeljen!"
1429
+
1430
+ #: modules/sharedaddy/sharing-sources.php:243
1431
+ msgid "You have shared this post with %s"
1432
+ msgstr "Podijelili ste ovaj članak sa %s"
1433
+
1434
+ #: modules/sharedaddy/sharing-sources.php:244
1435
+ msgid "Close"
1436
+ msgstr "Zatvori"
1437
+
1438
+ #: modules/sharedaddy/sharing-sources.php:266
1439
+ msgctxt "share to"
1440
+ msgid "Email"
1441
+ msgstr "Email"
1442
+
1443
+ #: modules/sharedaddy/sharing-sources.php:266
1444
+ msgid "Click to email this to a friend"
1445
+ msgstr "Kliknite za slanje emaila prijatelju"
1446
+
1447
+ #: modules/module-info.php:315 modules/module-info.php:318
1448
+ #: modules/module-info.php:339 modules/publicize/ui.php:35
1449
+ #: modules/sharedaddy/sharedaddy.php:25 modules/sharedaddy/sharing.php:57
1450
+ msgid "Sharing"
1451
+ msgstr "Dijeljenje"
1452
+
1453
+ #: modules/module-info.php:319
1454
+ msgid "Share your posts with Twitter, Facebook, and a host of other services. You can configure services to appear as icons, text, or both. Some services have additional options to display smart buttons, such as Twitter, which will update the number of times the post has been shared."
1455
+ msgstr "Podijelite vaše članke na Twitteru, Facebooku i mnogo drugih servisa. Možete konfigurisati servise da se prikazuju kao ikone, tekst ili oboje. Neki servisi imaju dodatne opcije za prikaz pametnih dugmadi, npr. Twitter, koji će vršiti ažuriranja broja dijeljenja nekog članka."
1456
+
1457
+ #: modules/module-info.php:323
1458
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, Print, and Email."
1459
+ msgstr "Uključeni su sljedeći servisi: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, štampanje i email."
1460
+
1461
+ #: modules/module-info.php:325
1462
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, Print, and Email."
1463
+ msgstr "Omogućeni su sljedeći servisi: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, štampanje i email."
1464
+
1465
+ #: modules/module-info.php:329
1466
+ msgid "Additionally you can define your own custom services."
1467
+ msgstr "Možete definisati i vaše vlastite servise."
1468
+
1469
+ #: modules/module-info.php:344
1470
+ msgid "To configure your sharing settings, go to the Settings &rarr; <a href=\"%s\">Sharing</a> menu."
1471
+ msgstr "Da konfigurišete postavke dijeljenja, otvorite Postavke &rarr; <a href=\"%s\">Dijeljenje</a>."
1472
+
1473
+ #: modules/module-info.php:345
1474
+ msgid "Drag and drop sharing services into the enabled section to have them show up on your site, and drag them into the hidden section to have them hidden behind a button."
1475
+ msgstr "Dovucite servise za dijeljenje u sekciju za omogućavanje da biste ih prikazali na vašoj stranici, a možete ih odvući i u sekciju za sakrivene servise kako biste ih maskirali unutar dugmeta."
1476
+
1477
+ #: modules/module-info.php:351
1478
+ msgid "Full details can be found on the <a href=\"%s\">Sharing support page</a>. This video also gives a swish run-down of how to use the Sharing feature. Watch it in HD for extra snazz!"
1479
+ msgstr "Više informacija možete pronaći na <a href=\"%s\">stranici podrške za dijeljenje</a>. Ovaj video vam također daje brzi pregled načina korištenja mogućnosti za dijeljenje. Pogledajte ga u HD-u za dodatni užitak!"
1480
+
1481
+ #: modules/module-info.php:366 modules/module-info.php:370
1482
+ msgid "Spelling and Grammar"
1483
+ msgstr "Pravopis i gramatika"
1484
+
1485
+ #: modules/module-info.php:372
1486
+ msgid "The <a href='%s'>After&nbsp;the&nbsp;Deadline</a> Proofreading service improves your writing by using artificial intelligence to find your errors and offer smart suggestions."
1487
+ msgstr "<a href='%s'>After&nbsp;the&nbsp;Deadline</a> poboljšava vaše pisanje korištenjem umjetne inteligencije da pronađe greške u vašem tekstu i ponudi vam dobre prijedloge."
1488
+
1489
+ #: modules/module-info.php:373
1490
+ msgid "After the Deadline provides a number of <a href=\"%s\">customization options</a>, which you can edit in your profile."
1491
+ msgstr "After the Deadline ima mnogo <a href=\"%s\">opcija za prilagođavanje</a> koje možete uređivati u vašem profilu."
1492
+
1493
+ #: modules/module-info.php:387 modules/module-info.php:401
1494
+ msgid "Widgets Screenshot"
1495
+ msgstr "Slike dodataka"
1496
+
1497
+ #: modules/module-info.php:390 modules/module-info.php:404
1498
+ msgid "Extra Sidebar Widgets"
1499
+ msgstr "Dodatni dodaci za bočnu traku"
1500
+
1501
+ #: modules/module-info.php:392
1502
+ msgid "The RSS Links Widget "
1503
+ msgstr "Dodatak za RSS linkove"
1504
+
1505
+ #: modules/module-info.php:392
1506
+ msgid "allows you to add links to your blog&#8217;s post and comment RSS feeds in your sidebar. This makes it easy for your readers to stay updated when you post new content or receive new comments."
1507
+ msgstr "omogućava vam dodavanje linkova ka RSS kanalima za članke i komentare u vašu bočnu traku. Ovim ćete olakšati snalaženje vašim posjetiocima i pružiti im jedinstveno mjesto na kojem će moći vidjeti sve novosti vezane za vašu stranicu."
1508
+
1509
+ #: modules/module-info.php:393
1510
+ msgid "The Twitter Widget "
1511
+ msgstr "Twitter dodatak"
1512
+
1513
+ #: modules/module-info.php:393
1514
+ msgid "shows your latest tweets within a sidebar on your theme. It&#8217;s an easy way to add more activity to your site. There are also a number of customization options."
1515
+ msgstr "prikazuje najnovije tweetove u bočnoj traci vaše teme. Ovo je jednostavan način da povećate aktivnost na vašoj stranici. Postoji i nekoliko opcija za prilagođavanje. "
1516
+
1517
+ #: modules/module-info.php:393
1518
+ msgid "The Facebook Like Box Widget "
1519
+ msgstr "Dodatak za Facebook Like okvir"
1520
+
1521
+ #: modules/module-info.php:393
1522
+ msgid "shows your Facebook Like Box within a sidebar on your theme. It&#8217;s a great way to let your readers show their support."
1523
+ msgstr "prikazuje Facebook Like okvir u bočnoj traci vaše teme. Ovo je odličan način da svojim čitaocima dozvolite da iskažu svoju podršku vašem radu."
1524
+
1525
+ #: modules/module-info.php:393
1526
+ msgid "The Image Widget "
1527
+ msgstr "Dodatak za slike"
1528
+
1529
+ #: modules/module-info.php:393
1530
+ msgid "allows you to easily add images to widget areas in your theme. It&#8217;s an easy way to add more visual interest to your site."
1531
+ msgstr "omogućava vam jednostavno dodavanje slika u bočne trake vaše teme. Ovo je jednostavan način da svoju stranicu učinite vizuelno interesantnijom."
1532
+
1533
+ #: modules/module-info.php:406
1534
+ msgid "The RSS Links Widget"
1535
+ msgstr "Dodatak za RSS linkove"
1536
+
1537
+ #: modules/module-info.php:406
1538
+ msgid "lets you easily add post and comment RSS feeds to a sidebar on your theme."
1539
+ msgstr "omogućava vam jednostavno dodavanje RSS kanala za članke i komentare u bočnu traku vaše teme."
1540
+
1541
+ #: modules/module-info.php:407
1542
+ msgid "The Twitter Widget"
1543
+ msgstr "Twitter dodatak"
1544
+
1545
+ #: modules/module-info.php:407
1546
+ msgid "shows your latest tweets within a sidebar on your theme."
1547
+ msgstr "prikazuje najnovije tweetove u bočnoj traci vaše teme."
1548
+
1549
+ #: modules/module-info.php:408
1550
+ msgid "The Facebook Like Box Widget"
1551
+ msgstr "Dodatak za Facebook Like okvir "
1552
+
1553
+ #: modules/module-info.php:408
1554
+ msgid "shows your Facebook Like Box within a sidebar on your theme."
1555
+ msgstr "prikazuje Facebook Like okvir u bočnoj traci vaše teme."
1556
+
1557
+ #: modules/module-info.php:409
1558
+ msgid "The Image Widget"
1559
+ msgstr "Dodatak za slike"
1560
+
1561
+ #: modules/module-info.php:409
1562
+ msgid "lets you easily add images to a sidebar on your theme."
1563
+ msgstr "omogućava vam jednostavno dodavanje slika u bočnu traku vaše teme."
1564
+
1565
+ #: modules/module-info.php:411
1566
+ msgid "Each of these widgets has a number of customization options."
1567
+ msgstr "Svaki od ovih dodataka ima nekoliko opcija za prilagođavanje."
1568
+
1569
+ #: modules/module-info.php:411
1570
+ msgid "To use the widgets, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag them into one of your sidebars and configure away."
1571
+ msgstr "Za korištenje ovog dodatka, otvorite Izgled&#8594; <a href=\"%s\">Dodaci</a>. Prebacite dodatak u jednu od vaših bočnih traka i izvršite potrebna podešavanja. "
1572
+
1573
+ #: modules/module-info.php:424
1574
+ msgid "Subsriptions Screenshot"
1575
+ msgstr "Slika pretplata"
1576
+
1577
+ #: modules/module-info.php:427
1578
+ msgid "Subscriptions"
1579
+ msgstr "Pretplate"
1580
+
1581
+ #: modules/module-info.php:429
1582
+ msgid "Easily allow any visitor to subscribe to all of your posts via email through a widget in your blog&#8217;s sidebar. Every time you publish a post, WordPress.com will send a notification to all your subscribers."
1583
+ msgstr "Omogućite vašim korisnicima jednostavnu pretplatu na vaše članke pomoću emaila koristeći se dodatkom u vašoj bočnoj traci. Svaki put kada objavite članak, WordPress.com će poslati obavijest svim vašim pretplatnicima."
1584
+
1585
+ #: modules/module-info.php:430
1586
+ msgid "When leaving comments, your visitors can also subscribe to a post&#8217;s comments to keep up with the conversation."
1587
+ msgstr "Prilikom pisanja komentara, posjetioci na vašoj stranici će imati opciju da se pretplate na komentare kako bi bili obaviješteni o razvoju diskusije na pojedinom članku."
1588
+
1589
+ #: modules/module-info.php:435
1590
+ msgid "To use the Subscriptions widget, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag the widget labeled &#8220;Blog Subscriptions (Jetpack)&#8221; into one of your sidebars and configure away."
1591
+ msgstr "Za korištenje dodatka za pretplate, otvorite Izgled&#8594; <a href=\"%s\">Dodaci</a>. Prebacite dodatak pod imenom &#8220;Blog pretplate (Jetpack) &#8221; u jednu od vaših bočnih traka i izvršite potrebna podešavanja."
1592
+
1593
+ #: modules/module-info.php:436
1594
+ msgid "You can also make changes to your Subscription settings at the bottom of the <a href=\"%s\">Discussion Settings</a> page."
1595
+ msgstr ""
1596
+
1597
+ #: modules/module-info.php:449
1598
+ msgid "Enhanced Distribution"
1599
+ msgstr "Poboljšana distribucija"
1600
+
1601
+ #: modules/module-info.php:451
1602
+ msgid "Jetpack will automatically take the great published content from your blog or website and share it instantly with third party services like search engines, increasing your reach and traffic."
1603
+ msgstr "Jetpack će automatski sakupljati vaš objavljeni sadržaj i trenutno ga slati pretraživačima kako biste povećali saobraćaj na vašoj stranici i proširili njen uticaj."
1604
+
1605
+ #: modules/module-info.php:466
1606
+ msgid "JSON API"
1607
+ msgstr "JSON API"
1608
+
1609
+ #: modules/module-info.php:468
1610
+ msgid "Jetpack will allow you to authorize applications and services to securely connect to your blog and allow them to use your content in new ways and offer you new functionality."
1611
+ msgstr ""
1612
+
1613
+ #: modules/module-info.php:470
1614
+ msgid "Developers can use WordPress.com's <a href='http://developer.wordpress.com/docs/oauth2/'>OAuth2</a> authentication system and <a href='http://developer.wordpress.com/docs/api/'>WordPress.com REST API</a> to manage and access your site's content."
1615
+ msgstr ""
1616
+
1617
+ #: modules/module-info.php:498
1618
+ msgid "A contact form is a great way to offer your readers the ability to get in touch, without giving out your personal email address."
1619
+ msgstr "Obrazac za kontakt je dobar način da omogućite vašim čitateljima da vas kontaktiraju bez objavljivanja vaše lične email adrese."
1620
+
1621
+ #: modules/module-info.php:501
1622
+ msgid "Each contact form can easily be customized to fit your needs. When a user submits your contact form, the feedback will be filtered through <a href=\"http://akismet.com/\">Akismet</a> (if it is active on your site) to make sure it’s not spam. Any legitimate feedback will then be emailed to you, and added to your feedback management area."
1623
+ msgstr "Svaki obrazac za kontakt moguće je prilagoditi vašim potrebama. Kada korisnik pošalje podatke pomoću obrasca, oni će biti filtrirani pomoću <a href=\"http://akismet.com/\">Akismet</a> (ako je ovaj plugin aktiviran na vašoj stranici) da bi se utvrdilo da li se radi o spamu. Nakon toga, svaka poruka koja nije spam će vam biti proslijeđena na vašu email adresu i dodana u oblast za upravljanje porukama iz obrasca za kontakt."
1624
+
1625
+ #: modules/module-info.php:518
1626
+ msgid "Jetpack Comments Screenshot"
1627
+ msgstr "Slika za Jetpack komentare"
1628
+
1629
+ #: modules/module-info.php:523
1630
+ msgid "Jetpack Comments enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site."
1631
+ msgstr "Jetpack komentari omogućavaju vašim korisnicima da koriste svoje WordPress.com, Twitter ili Facebook račune prilikom komentarisanja na vašoj stranici."
1632
+
1633
+ #: modules/module-info.php:528
1634
+ msgid "Jetpack tries to match your site's color scheme automatically, but you can make manual adjustments at the bottom of the <a href='%s'>Discussion Settings</a> page."
1635
+ msgstr "Jetpack će pokušati da automatski izabere odgovarajuću šemu boja. Također, vi možete napraviti i ručne izmjene pomoću postavki na dnu stranice za <a href='%s'>raspravu</a>."
1636
+
1637
+ #: modules/module-info.php:549
1638
+ msgid "Gallery Carousel Screenshot"
1639
+ msgstr ""
1640
+
1641
+ #: modules/module-info.php:552
1642
+ msgid "Carousel"
1643
+ msgstr "Carousel"
1644
+
1645
+ #: modules/module-info.php:554
1646
+ msgid "With Carousel active, any standard WordPress galleries you have embedded in posts or pages will launch a gorgeous full-screen photo browsing experience with comments and EXIF metadata."
1647
+ msgstr ""
1648
+
1649
+ #: modules/module-info.php:567 modules/module-info.php:570
1650
+ msgid "Custom CSS"
1651
+ msgstr "Korisnički CSS"
1652
+
1653
+ #: modules/module-info.php:571
1654
+ msgid "The Custom CSS editor gives you the ability to add to or replace your theme's CSS, all while supplying syntax coloring, auto-indentation, and immediate feedback on the validity of the CSS you're writing."
1655
+ msgstr ""
1656
+
1657
+ #: modules/module-info.php:572
1658
+ msgid "To use the CSS editor, go to Appearance &#8594; <a href=\"%s\">Edit CSS</a>."
1659
+ msgstr ""
1660
+
1661
+ #: modules/module-info.php:589 modules/module-info.php:592
1662
+ msgid "Mobile Theme"
1663
+ msgstr ""
1664
+
1665
+ #: modules/module-info.php:593
1666
+ msgid "There's a good chance that visitors to your site will be using a smartphone, and it's important to provide them with a great reading experience while on the small screen."
1667
+ msgstr ""
1668
+
1669
+ #: modules/module-info.php:594
1670
+ msgid "Jetpack's mobile theme is optimized for small screens. It uses the header image, background, and widgets from your current theme for a great custom look. Post format support is included, so your photos and galleries will look fantastic on a smartphone."
1671
+ msgstr ""
1672
+
1673
+ #: modules/module-info.php:595
1674
+ msgid "Visitors on iPhone, Android, Windows Phone, and other mobile devices will automatically see the mobile theme, with the option to view the full site. You can enable or disable the mobile theme by clicking the \"Activate\" or \"Deactive\" button above."
1675
+ msgstr ""
1676
+
1677
+ #: modules/module-info.php:611 modules/module-info.php:614
1678
+ msgid "Mobile Push Notifications"
1679
+ msgstr ""
1680
+
1681
+ #: modules/module-info.php:616
1682
+ msgid "If you have your blog added to the <a href=\"http://ios.wordpress.org/\">WordPress for iOS app</a>, you’ll now be able to opt in to receive push notifications of new comments, which makes it easier than ever to keep up with your readers and moderate comments on the go."
1683
+ msgstr ""
1684
+
1685
+ #: modules/module-info.php:635
1686
+ msgid "Infinite Scroll"
1687
+ msgstr ""
1688
+
1689
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:70
1690
+ msgid "Your comment is awaiting moderation."
1691
+ msgstr "Vaš komentar čeka na moderaciju."
1692
+
1693
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:79
1694
+ msgid "Reply <span>&darr;</span>"
1695
+ msgstr "Odgovori <span>&darr;</span>"
1696
+
1697
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:93
1698
+ msgid "<span class=\"entry-date\"><a href=\"%1$s\" title=\"%2$s\" rel=\"bookmark\"><time datetime=\"%3$s\" pubdate>%4$s</time></a></span>"
1699
+ msgstr ""
1700
+
1701
+ #: modules/minileven/theme/pub/minileven/index.php:23
1702
+ msgid "Daily Archives: %s"
1703
+ msgstr "Dnevne arhive: %s"
1704
+
1705
+ #: modules/minileven/theme/pub/minileven/index.php:25
1706
+ msgid "Monthly Archives: %s"
1707
+ msgstr "Mjesečne arhive: %s"
1708
+
1709
+ #: modules/minileven/theme/pub/minileven/index.php:27
1710
+ msgid "Yearly Archives: %s"
1711
+ msgstr "Godišnje arhive: %s"
1712
+
1713
+ #: modules/minileven/theme/pub/minileven/index.php:29
1714
+ msgid "Posted in %s"
1715
+ msgstr "Objavljeno u %s"
1716
+
1717
+ #: modules/minileven/theme/pub/minileven/index.php:31
1718
+ msgid "Tagged with %s"
1719
+ msgstr ""
1720
+
1721
+ #: modules/minileven/theme/pub/minileven/index.php:33
1722
+ msgid "Posted by"
1723
+ msgstr "Objavio/la"
1724
+
1725
+ #: modules/minileven/theme/pub/minileven/index.php:35
1726
+ msgid "Blog Archives"
1727
+ msgstr "Arhive bloga"
1728
+
1729
+ #: modules/minileven/theme/pub/minileven/index.php:43
1730
+ msgid "Search Results for: %s"
1731
+ msgstr "Rezultati pretrage za: %s"
1732
+
1733
+ #: modules/minileven/theme/pub/minileven/index.php:57
1734
+ msgid "Nothing Found"
1735
+ msgstr "Ništa nije pronađeno"
1736
+
1737
+ #: modules/minileven/theme/pub/minileven/index.php:61
1738
+ msgid "Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post."
1739
+ msgstr "Žao nam je, nema rezultata za prikaz iz zahtjevane arhive. Možda će vam pretraga pomoći u pronalasku željenog članka."
1740
+
1741
+ #: modules/minileven/theme/pub/minileven/searchform.php:9
1742
+ #: modules/minileven/theme/pub/minileven/searchform.php:10
1743
+ #: modules/minileven/theme/pub/minileven/searchform.php:11
1744
+ msgid "Search"
1745
+ msgstr "Pretraga"
1746
+
1747
+ #: modules/minileven.php:48
1748
+ msgid "Excerpts"
1749
+ msgstr ""
1750
+
1751
+ #: modules/minileven.php:52
1752
+ msgid "Enable excerpts on front page and on archive pages"
1753
+ msgstr ""
1754
+
1755
+ #: modules/minileven.php:57
1756
+ msgid "Show full posts on front page and on archive pages"
1757
+ msgstr ""
1758
+
1759
+ #: modules/minileven.php:62
1760
+ msgid "Mobile App Promos"
1761
+ msgstr ""
1762
+
1763
+ #: modules/minileven.php:66
1764
+ msgid "Show a promo for the WordPress mobile apps in the footer of the mobile theme."
1765
+ msgstr ""
1766
+
1767
+ #: modules/minileven.php:75
1768
+ msgid "Mobile Apps"
1769
+ msgstr ""
1770
+
1771
+ #: modules/minileven.php:76
1772
+ msgid "Take WordPress with you."
1773
+ msgstr ""
1774
+
1775
+ #: modules/minileven.php:78
1776
+ msgid "We have apps for <a href=\"%s\">iOS (iPhone, iPad, iPod Touch)</a>, <a href=\"%s\">Android</a>, <a href=\"%s\">BlackBerry</a>, <a href=\"%s\">Windows Phone</a>, and <a href=\"%s\">more</a>!"
1777
+ msgstr ""
1778
+
1779
+ #: modules/module-info.php:22 modules/module-info.php:26
1780
+ msgid "VaultPress"
1781
+ msgstr "VaultPress"
1782
+
1783
+ #: modules/module-info.php:28
1784
+ msgid "Your WordPress installation is currently being protected with the world&#8217;s best security, backup, and support."
1785
+ msgstr "Vašu WordPress instalaciju trenutno štitu najbolja svjetska sigurnosna zaštita, backup i podrška."
1786
+
1787
+ #: modules/module-info.php:29
1788
+ msgctxt "Visit your _VaultPress_dashboard_."
1789
+ msgid "To check your backups, see any security alerts, or check your VaultPress Vitality, visit your %s."
1790
+ msgstr "Da provjerite backupe, pogledate ima li sigurnosnih upozorenja ili da provjerite vašu VaultPress vitalnost, posjetite %s."
1791
+
1792
+ #: modules/module-info.php:29
1793
+ msgid "VaultPress dashboard"
1794
+ msgstr "VaultPress kontrolna ploča"
1795
+
1796
+ #: modules/module-info.php:31
1797
+ msgid "With a monthly subscription, the VaultPress plugin will backup your site&#8217;s content, themes, and plugins in real-time, as well as perform regular security scans for common threats and attacks."
1798
+ msgstr "Zasnovan na mjesečnoj pretplati, VaultPress plugin će vršiti backup, u realnom vremenu, sadržaja vaše stranice, tema i plugina, a istovremeno će vršiti i redovne sigurnosne provjere u cilju pronalaska uobičajenih prijetnji i metoda napada na vašu stranicu."
1799
+
1800
+ #: modules/module-info.php:32
1801
+ msgctxt "View _Plans_&_Pricing_. (VaultPress)"
1802
+ msgid "View %s."
1803
+ msgstr "Pregledajte %s."
1804
+
1805
+ #: modules/module-info.php:32
1806
+ msgid "Plans & Pricing"
1807
+ msgstr "Planovi i cijene"
1808
+
1809
+ #: modules/module-info.php:53 modules/module-info.php:68
1810
+ msgid "Gravatar Hovercard"
1811
+ msgstr "Gravatar istaknuta kartica"
1812
+
1813
+ #: modules/module-info.php:58 modules/module-info.php:73
1814
+ msgid "What&#8217;s a Hovercard?"
1815
+ msgstr "Šta je istaknuta kartica?"
1816
+
1817
+ #: modules/module-info.php:59
1818
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services they use on the web like Twitter, Facebook, or LinkedIn."
1819
+ msgstr "Istaknute kartice poboljšavaju obične slike Gravatara sa informacijama o osobi: ime, biografija, slika, kontakt informacije i drugi servisi koje dotična osoba koristi kao što su Twitter, Facebook ili Linkedln."
1820
+
1821
+ #: modules/module-info.php:60
1822
+ msgid "Hovercards offer a great way to show your internet presence and help people find your own blog."
1823
+ msgstr "Isktanute kartice su odličan način za prikazivanje vašeg internet prisustva i pomoć drugim osobama da pronađu vaš vlastiti blog."
1824
+
1825
+ #: modules/module-info.php:74
1826
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services."
1827
+ msgstr "Istaknute kartice poboljšavaju obične slike Gravatara sa informacijama o osobi: ime, biografija, slika, kontakt informacije i drugi servisi koje dotična osoba koristi."
1828
+
1829
+ #: modules/module-info.php:75
1830
+ msgid "To see hovercards, look at any blog post on your blog that has comments. If the commenter has a hovercard associated with their gravatar, mouse over their image and the hovercard will appear. To turn hovercards off, click the Deactivate button above."
1831
+ msgstr "Da biste vidjeli istaknute kartice, otvorite bilo koji članak na vašem blogu koji ima komentare. Ako osoba koja je napisala komentar ima uključen gravatar, ciljanjem miša na sliku te osobe aktivirat ćete istaknutu karticu. Za isključivanje istaknutih kartica, kliknite na dugme za deaktiviranje."
1832
+
1833
+ #: modules/module-info.php:90 modules/module-info.php:94
1834
+ #: modules/module-info.php:103 modules/module-info.php:107
1835
+ msgid "Shortcode Embeds"
1836
+ msgstr "Ugrađivanje kratkih kodova"
1837
+
1838
+ #: modules/module-info.php:95 modules/module-info.php:108
1839
+ msgid "Shortcodes allow you to easily and safely embed media from other places in your site. With just one simple code, you can tell WordPress to embed YouTube, Flickr, and other media."
1840
+ msgstr "Kratki kodovi omogućavaju vam jednostavno i sigurno ugrađivanje multimedije sa drugih lokacija na vašu stranicu. Pomoću jednog jednostavnog koda, možete reći WordPressu da ugradi Youtube, Flickr i drugu multimediju."
1841
+
1842
+ #: modules/module-info.php:109
1843
+ msgid "Enter a shortcode directly into the Post/Page editor to embed media. For specific instructions follow the links below."
1844
+ msgstr "Unesite kratki kod direktno u uređivač članka/stranice kako biste ugradili multimediju. Za detaljne instrukcije pogledajte linkove ispod."
1845
+
1846
+ #: modules/module-info.php:132
1847
+ msgid "Available shortcodes are: %l."
1848
+ msgstr "Dostupni kratki kodovi: %l."
1849
+
1850
+ #: modules/module-info.php:147 modules/module-info.php:151
1851
+ #: modules/module-info.php:161 modules/module-info.php:165
1852
+ msgid "WP.me Shortlinks"
1853
+ msgstr "WP.me kratki linkovi"
1854
+
1855
+ #: modules/module-info.php:152 modules/module-info.php:166
1856
+ msgid "Instead of typing or copy-pasting long URLs, you can now get a short and simple link to your posts and pages. This uses the super compact wp.me domain name, and gives you a unique URL you can use that will be safe and reliable."
1857
+ msgstr "Umjesto da unosite ili ubacujete duge URL-ove sada možete dobiti kratki i jednostavni link ka vašem članku ili stranici. Ova mogućnost koristi kompaktnu wm.me domenu i daje vam na korištenje unikatni URL koji je siguran i pouzdan."
1858
+
1859
+ #: modules/module-info.php:153
1860
+ msgid "It&#8217;s perfect for use on Twitter, Facebook, and cell phone text messages where every character counts."
1861
+ msgstr "Ovo je savršeno za upotrebu na Twitteru, Facebooku i u mobilnim tekst porukama gdje se broji svaki znak."
1862
+
1863
+ #: modules/module-info.php:167
1864
+ msgid "To use shortlinks, go to any already published post (or publish something new!). A &#8220;Get Shortlink&#8221; button will be visible under the Post title. When you click it, a dialog box will appear with the shortlink and you can copy and paste to Twitter, Facebook or wherever your heart desires."
1865
+ msgstr "Da biste počeli koristiti kratke linkove, otvorite bilo koji objavljeni članak (ili napišite novi!). Vidjet ćete dugme &#8220;Dobij kratki link&#8221; ispod naslova članka. Nakon što kliknete na to dugme, pojavit će se okvir sa vašim kratkim linkom koji možete kopirati i zalijepiti na vaš Twitter, Facebook ili na bilo koju drugu stranicu."
1866
+
1867
+ #: modules/module-info.php:182 modules/module-info.php:186
1868
+ #: modules/module-info.php:195 modules/module-info.php:199
1869
+ msgid "WordPress.com Stats"
1870
+ msgstr "WordPress.com statistika"
1871
+
1872
+ #: modules/module-info.php:187 modules/module-info.php:200
1873
+ msgid "There are many plugins and services that provide statistics, but data can be overwhelming. WordPress.com Stats makes the most popular metrics easy to understand through a clear and attractive interface."
1874
+ msgstr "Postoji mnogo plugina i servisa koji pružaju statističke podatke ali količina tih podataka često može biti problem. WordPress.com statistika daje vam najpopularnije podatke na vrlo jednostavan način u preglednom i atraktivnom interfejsu."
1875
+
1876
+ #: modules/module-info.php:201
1877
+ msgid "You can <a href=\"%s\">view your stats dashboard here</a>."
1878
+ msgstr "<a href=\"%s\">Ovdje možete pogledati</a> kontrolnu ploču vaše statistike."
1879
+
1880
+ #: modules/module-info.php:215 modules/module-info.php:219
1881
+ #: modules/publicize/ui.php:89
1882
+ msgid "Publicize"
1883
+ msgstr "Objaviti"
1884
+
1885
+ #: modules/module-info.php:220
1886
+ msgid "Publicize allows you to connect your blog to popular social networking sites and automatically share new posts with your friends.\t You can make a connection for just yourself or for all users on your blog."
1887
+ msgstr ""
1888
+
1889
+ #: modules/module-info.php:221
1890
+ msgid "Publicize allows you to share your posts on Facebook, Twitter, Tumblr, Yahoo!, and Linkedin."
1891
+ msgstr ""
1892
+
1893
+ #: modules/module-info.php:225
1894
+ msgid "Manage your <a href=\"%s\">Publicize settings</a>."
1895
+ msgstr ""
1896
+
1897
+ #: modules/module-info.php:229 modules/publicize/ui.php:102
1898
+ msgid "More information on using Publicize."
1899
+ msgstr ""
1900
+
1901
+ #: modules/module-info.php:245 modules/module-info.php:249
1902
+ #: modules/module-info.php:258 modules/module-info.php:262
1903
+ #: modules/notes.php:106
1904
+ msgid "Notifications"
1905
+ msgstr "Obavijesti"
1906
+
1907
+ #: modules/module-info.php:250 modules/module-info.php:263
1908
+ msgid "Keep up with the latest happenings on all your WordPress sites and interact with other WordPress.com users."
1909
+ msgstr ""
1910
+
1911
+ #: modules/module-info.php:264
1912
+ msgid "You can view your notifications in the Toolbar and <a href=\"%s\">on WordPress.com</a>."
1913
+ msgstr ""
1914
+
1915
+ #: modules/module-info.php:279 modules/module-info.php:294
1916
+ msgid "LaTeX"
1917
+ msgstr "LaTeX"
1918
+
1919
+ #: modules/module-info.php:284 modules/module-info.php:299
1920
+ msgid "%s is a powerful markup language for writing complex mathematical equations, formulas, etc."
1921
+ msgstr "%s je moćni markup jezik za pisanje komplikovanih matematičnih jednačina, formula itd."
1922
+
1923
+ #: modules/module-info.php:285
1924
+ msgid "Jetpack combines the power of %s and the simplicity of WordPress to give you the ultimate in math blogging platforms."
1925
+ msgstr "Jetpack kombinuje %s snagu i jednostavnost WordPressa kako bi vam dao ultimativnu matematičku blog platformu."
1926
+
1927
+ #: modules/module-info.php:286
1928
+ msgid "Wow, that sounds nerdy."
1929
+ msgstr "To zvuči štreberski."
1930
+
1931
+ #: modules/module-info.php:300
1932
+ msgid "Use <code>$latex your latex code here$</code> or <code>[latex]your latex code here[/latex]</code> to include %s in your posts and comments. There are <a href=\"%s\" target=\"_blank\">all sorts of options</a> available."
1933
+ msgstr "Koristite <code>$latex vaš latex kod ovdje$</code> ili <code>[latex]vaš latex kod ovdje[/latex]</code> da ubacite %s u vaše članke i komentare. Dostupno je mnogo <a href=\"%s\" target=\"_blank\">raznoraznih opcija</a>."
1934
+
1935
+ #: modules/custom-css/custom-css.php:865
1936
+ msgid "Preview"
1937
+ msgstr "Pregled"
1938
+
1939
+ #: modules/custom-css/custom-css.php:866
1940
+ msgid "Save Stylesheet &amp; Buy Upgrade"
1941
+ msgstr "Sačuvaj predložak i kupi nadogradnju"
1942
+
1943
+ #: modules/custom-css/custom-css.php:866
1944
+ msgid "Save Stylesheet"
1945
+ msgstr "Sačuvaj predložak"
1946
+
1947
+ #: modules/custom-css/custom-css.php:871
1948
+ msgid "CSS Settings"
1949
+ msgstr "CSS postavke"
1950
+
1951
+ #: modules/custom-css/custom-css.php:878
1952
+ msgid "CSS Revisions"
1953
+ msgstr "CSS revizija"
1954
+
1955
+ #: modules/custom-css/custom-css.php:916
1956
+ msgid "Add my CSS to <strong>%s&apos;s</strong> CSS stylesheet."
1957
+ msgstr "Dodaj moj CSS u <strong>%s&apos;s</strong> CSS predložak."
1958
+
1959
+ #: modules/custom-css/custom-css.php:917
1960
+ msgid "Don&apos;t use <strong>%s&apos;s</strong> CSS, and replace everything with my own CSS."
1961
+ msgstr ""
1962
+
1963
+ #: modules/custom-css/custom-css.php:919
1964
+ msgid "<a href=\"%s\">View the original stylesheet</a> for the %s theme. Use this as a reference and do not copy and paste all of it into the CSS Editor."
1965
+ msgstr ""
1966
+
1967
+ #: modules/gravatar-hovercards.php:44 modules/module-info.php:57
1968
+ #: modules/module-info.php:72
1969
+ msgid "Gravatar Hovercards"
1970
+ msgstr "Gravatar istaknute kartice"
1971
+
1972
+ #: modules/gravatar-hovercards.php:56
1973
+ msgid "View people's profiles when you mouse over their Gravatars"
1974
+ msgstr "Pregledajte informacije o osobama kada naciljate miša na njihove Gravatare"
1975
+
1976
+ #: modules/gravatar-hovercards.php:83
1977
+ msgid "Put your mouse over your Gravatar to check out your profile."
1978
+ msgstr "Naciljajte miša na Gravatara da biste pogledali vaš profil."
1979
+
1980
+ #: modules/infinite-scroll/infinity.php:238
1981
+ msgid "To infinity and beyond"
1982
+ msgstr ""
1983
+
1984
+ #: modules/infinite-scroll/infinity.php:247
1985
+ msgid "We've disabled this option for you since you have footer widgets in Appearance &rarr; Widgets, or because your theme does not support infinite scroll."
1986
+ msgstr ""
1987
+
1988
+ #: modules/infinite-scroll/infinity.php:253
1989
+ msgid "Scroll Infinitely"
1990
+ msgstr ""
1991
+
1992
+ #: modules/infinite-scroll/infinity.php:253
1993
+ msgid "(Shows %s posts on each load)"
1994
+ msgstr ""
1995
+
1996
+ #: modules/infinite-scroll/infinity.php:442
1997
+ msgid "Load more posts"
1998
+ msgstr ""
1999
+
2000
+ #: modules/infinite-scroll/infinity.php:443
2001
+ msgid "Scroll back to top"
2002
+ msgstr ""
2003
+
2004
+ #: modules/infinite-scroll/infinity.php:813
2005
+ msgid "Theme: %1$s."
2006
+ msgstr "Tema: %1$s."
2007
+
2008
+ #: modules/infinite-scroll.php:79
2009
+ msgid "Use Google Analytics with Infinite Scroll"
2010
+ msgstr ""
2011
+
2012
+ #: modules/infinite-scroll.php:90
2013
+ msgid "Track each Infinite Scroll post load as a page view in Google Analytics"
2014
+ msgstr ""
2015
+
2016
+ #: modules/infinite-scroll.php:90
2017
+ msgid "By checking the box above, each new set of posts loaded via Infinite Scroll will be recorded as a page view in Google Analytics."
2018
+ msgstr ""
2019
+
2020
+ #: modules/minileven/minileven.php:90
2021
+ msgid "View Mobile Site"
2022
+ msgstr "Pregledaj mobilnu stranicu"
2023
+
2024
+ #: modules/minileven/minileven.php:254
2025
+ msgid "Apply this CSS to the Mobile Theme"
2026
+ msgstr "Primijeni ovaj CSS na mobilnu temu"
2027
+
2028
+ #: modules/minileven/theme/pub/minileven/comments.php:15
2029
+ msgid "This post is password protected. Enter the password to view any comments."
2030
+ msgstr "Ovaj članak je zaštićen šifrom. Unesite šifru da biste vidjeli eventualne komentare."
2031
+
2032
+ #: modules/minileven/theme/pub/minileven/comments.php:45
2033
+ msgid "Comment navigation"
2034
+ msgstr "Navigacija komentara"
2035
+
2036
+ #: modules/minileven/theme/pub/minileven/comments.php:46
2037
+ msgid "&larr; Older Comments"
2038
+ msgstr "&larr; Stariji komentari"
2039
+
2040
+ #: modules/minileven/theme/pub/minileven/comments.php:47
2041
+ msgid "Newer Comments &rarr;"
2042
+ msgstr "Noviji komentari &rarr;"
2043
+
2044
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:14
2045
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:58
2046
+ #: modules/minileven/theme/pub/minileven/content.php:13
2047
+ #: modules/minileven/theme/pub/minileven/content.php:17
2048
+ msgid "Permalink to %s"
2049
+ msgstr "Trajni link ka %s"
2050
+
2051
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:15
2052
+ msgid "Gallery"
2053
+ msgstr "Galerija"
2054
+
2055
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:21
2056
+ #: modules/minileven/theme/pub/minileven/content.php:36
2057
+ #: modules/minileven/theme/pub/minileven/inc/tweaks.php:26
2058
+ msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
2059
+ msgstr "Nastavi čitati <span class=\"meta-nav\">&rarr;</span>"
2060
+
2061
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:57
2062
+ msgid "This gallery contains <a %1$s>%2$s photo</a>."
2063
+ msgid_plural "This gallery contains <a %1$s>%2$s photos</a>."
2064
+ msgstr[0] "Ova galerija sadrži <a %1$s>%2$s fotografiju</a>."
2065
+ msgstr[1] "Ova galerija sadrži <a %1$s>%2$s fotografije</a>."
2066
+ msgstr[2] "Ova galerija sadrži <a %1$s>%2$s fotografija</a>."
2067
+
2068
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:65
2069
+ #: modules/minileven/theme/pub/minileven/content.php:38
2070
+ #: modules/minileven/theme/pub/minileven/image.php:64
2071
+ #: modules/minileven/theme/pub/minileven/page.php:27
2072
+ msgid "Pages:"
2073
+ msgstr "Stranice:"
2074
+
2075
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2076
+ #: modules/minileven/theme/pub/minileven/content.php:46
2077
+ #: modules/minileven/theme/pub/minileven/image.php:80
2078
+ msgid "<b>1</b> Reply"
2079
+ msgstr "<b>1</b> odgovor"
2080
+
2081
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2082
+ #: modules/minileven/theme/pub/minileven/content.php:46
2083
+ #: modules/minileven/theme/pub/minileven/image.php:80
2084
+ msgid "<b>%</b> Replies"
2085
+ msgstr "<b>%</b> odgovora"
2086
+
2087
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:74
2088
+ #: modules/minileven/theme/pub/minileven/content.php:48
2089
+ #: modules/minileven/theme/pub/minileven/image.php:82
2090
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:66
2091
+ #: modules/minileven/theme/pub/minileven/page.php:31
2092
+ #: modules/publicize/ui.php:511
2093
+ msgid "Edit"
2094
+ msgstr "Uredi"
2095
+
2096
+ #: modules/minileven/theme/pub/minileven/content.php:14
2097
+ msgid "Featured"
2098
+ msgstr "Istaknuto"
2099
+
2100
+ #: modules/minileven/theme/pub/minileven/content.php:23
2101
+ msgid "Posted by "
2102
+ msgstr ""
2103
+
2104
+ #: modules/minileven/theme/pub/minileven/content.php:25
2105
+ msgid "%s"
2106
+ msgstr "%s"
2107
+
2108
+ #: modules/minileven/theme/pub/minileven/content.php:46
2109
+ #: modules/minileven/theme/pub/minileven/image.php:80
2110
+ msgid "Leave a reply"
2111
+ msgstr "Komentarišite"
2112
+
2113
+ #: modules/minileven/theme/pub/minileven/content.php:54
2114
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:19
2115
+ msgid "Post navigation"
2116
+ msgstr "Navigacija članaka"
2117
+
2118
+ #: modules/minileven/theme/pub/minileven/content.php:55
2119
+ msgid "&laquo; Previous"
2120
+ msgstr "&laquo; Prethodna"
2121
+
2122
+ #: modules/minileven/theme/pub/minileven/content.php:56
2123
+ msgid "Next &raquo;"
2124
+ msgstr "Sljedeća &raquo;"
2125
+
2126
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2127
+ msgid "http://wordpress.org/"
2128
+ msgstr "http://bs.wordpress.org/"
2129
+
2130
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2131
+ msgid "Semantic Personal Publishing Platform"
2132
+ msgstr "Semantička platforma za objavljivanje"
2133
+
2134
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2135
+ msgid "Proudly powered by %s"
2136
+ msgstr "Pokreće %s"
2137
+
2138
+ #: modules/minileven/theme/pub/minileven/functions.php:54
2139
+ msgid "Primary Menu"
2140
+ msgstr "Glavni meni"
2141
+
2142
+ #: modules/minileven/theme/pub/minileven/functions.php:92
2143
+ msgid "Main Sidebar"
2144
+ msgstr "Glavna bočna traka"
2145
+
2146
+ #: modules/minileven/theme/pub/minileven/header.php:32
2147
+ msgid "Page %s"
2148
+ msgstr "Stranica %s"
2149
+
2150
+ #: modules/minileven/theme/pub/minileven/header.php:50
2151
+ msgid "Menu"
2152
+ msgstr "Meni"
2153
+
2154
+ #: modules/minileven/theme/pub/minileven/header.php:53
2155
+ msgid "Skip to primary content"
2156
+ msgstr "Preskoči do primarnog sadržaja"
2157
+
2158
+ #: modules/minileven/theme/pub/minileven/image.php:73
2159
+ msgid "<span class=\"entry-gallery\">&laquo; <a href=\"%1$s\" title=\"Back to %2$s\" rel=\"gallery\">Back to Gallery</a></span>"
2160
+ msgstr ""
2161
+
2162
+ #: modules/minileven/theme/pub/minileven/image.php:87
2163
+ msgid "Image navigation"
2164
+ msgstr "Navigacija za slike"
2165
+
2166
+ #: modules/minileven/theme/pub/minileven/image.php:88
2167
+ msgid "&raquo; Previous"
2168
+ msgstr ""
2169
+
2170
+ #: modules/minileven/theme/pub/minileven/image.php:89
2171
+ msgid "Next &raquo; "
2172
+ msgstr ""
2173
+
2174
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:20
2175
+ msgid "<span class=\"meta-nav\">&laquo;</span> Older"
2176
+ msgstr ""
2177
+
2178
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:21
2179
+ msgid "Newer <span class=\"meta-nav\">&raquo;</span>"
2180
+ msgstr ""
2181
+
2182
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:38
2183
+ msgid "Pingback:"
2184
+ msgstr "Povratni ping:"
2185
+
2186
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:55
2187
+ msgid "%1$s on %2$s"
2188
+ msgstr "%1$s u %2$s"
2189
+
2190
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:61
2191
+ msgid "%1$s at %2$s"
2192
+ msgstr "%1$s u %2$s"
2193
+
2194
+ #: modules/contact-form/grunion-contact-form.php:1242
2195
+ msgid "%s is required"
2196
+ msgstr "%s je neophodno"
2197
+
2198
+ #: modules/contact-form/grunion-contact-form.php:1289
2199
+ #: modules/contact-form/grunion-contact-form.php:1295
2200
+ #: modules/contact-form/grunion-contact-form.php:1300
2201
+ #: modules/contact-form/grunion-contact-form.php:1314
2202
+ #: modules/contact-form/grunion-contact-form.php:1320
2203
+ #: modules/contact-form/grunion-contact-form.php:1333
2204
+ msgid "(required)"
2205
+ msgstr "(neophodno)"
2206
+
2207
+ #: modules/contact-form/grunion-contact-form.php:1313
2208
+ msgid "Yes"
2209
+ msgstr "Da"
2210
+
2211
+ #: modules/contact-form/grunion-form-view.php:8
2212
+ msgctxt "Label for HTML form \"Name\" field in contact form builder"
2213
+ msgid "Name"
2214
+ msgstr "Ime i prezime"
2215
+
2216
+ #: modules/contact-form/grunion-form-view.php:9
2217
+ msgctxt "Label for HTML form \"Email\" field in contact form builder"
2218
+ msgid "Email"
2219
+ msgstr "Email"
2220
+
2221
+ #: modules/contact-form/grunion-form-view.php:10
2222
+ msgctxt "Label for HTML form \"URL/Website\" field in contact form builder"
2223
+ msgid "Website"
2224
+ msgstr "Web stranica"
2225
+
2226
+ #: modules/contact-form/grunion-form-view.php:11
2227
+ msgctxt "Label for HTML form \"Comment/Response\" field in contact form builder"
2228
+ msgid "Comment"
2229
+ msgstr "Komentar"
2230
+
2231
+ #: modules/contact-form/grunion-form-view.php:12
2232
+ msgctxt "Default label for new HTML form field in contact form builder"
2233
+ msgid "New Field"
2234
+ msgstr "Novo polje"
2235
+
2236
+ #: modules/contact-form/grunion-form-view.php:13
2237
+ msgctxt "Label for the set of options to be included in a user-created dropdown in contact form builder"
2238
+ msgid "Options"
2239
+ msgstr "Opcije"
2240
+
2241
+ #: modules/contact-form/grunion-form-view.php:14
2242
+ msgctxt "Label for an option to be included in a user-created dropdown in contact form builder"
2243
+ msgid "Option"
2244
+ msgstr "Opcija"
2245
+
2246
+ #: modules/contact-form/grunion-form-view.php:15
2247
+ msgctxt "Default label for the first option to be included in a user-created dropdown in contact form builder"
2248
+ msgid "First option"
2249
+ msgstr "Prva opcija"
2250
+
2251
+ #: modules/contact-form/grunion-form-view.php:16
2252
+ msgctxt "error message in contact form builder"
2253
+ msgid "Oops, there was a problem generating your form. You'll likely need to try again."
2254
+ msgstr "Ups, desio se problem prilikom generisanja ovog obrasca. Najvjerovatnije biste trebali pokušati ponovo."
2255
+
2256
+ #: modules/contact-form/grunion-form-view.php:17
2257
+ msgid ""
2258
+ "Drag up or down\n"
2259
+ "to re-arrange"
2260
+ msgstr ""
2261
+ "Povlačite gore ili dolje\n"
2262
+ "da promijenite raspored"
2263
+
2264
+ #: modules/contact-form/grunion-form-view.php:18
2265
+ msgctxt "Label to drag HTML form fields around to change their order in contact form builder"
2266
+ msgid "move"
2267
+ msgstr "premjesti"
2268
+
2269
+ #: modules/contact-form/grunion-form-view.php:19
2270
+ msgctxt "Link to edit an HTML form field in contact form builder"
2271
+ msgid "edit"
2272
+ msgstr "uredi"
2273
+
2274
+ #: modules/contact-form/grunion-form-view.php:20
2275
+ msgid "Saved successfully"
2276
+ msgstr "Uspješno sačuvano"
2277
+
2278
+ #: modules/contact-form/grunion-form-view.php:21
2279
+ msgctxt "This HTML form field is marked as required by the user in contact form builder"
2280
+ msgid "(required)"
2281
+ msgstr "(neophodno)"
2282
+
2283
+ #: modules/contact-form/grunion-form-view.php:22
2284
+ msgid "Are you sure you want to exit the form editor without saving? Any changes you have made will be lost."
2285
+ msgstr "Jeste li sigurni da želite zatvoriti uređivač obrasca bez snimanja? Bilo kakve promjene koje ste napravili će biti izgubljene."
2286
+
2287
+ #: modules/contact-form/grunion-form-view.php:30 modules/module-info.php:491
2288
+ #: modules/module-info.php:495
2289
+ msgid "Contact Form"
2290
+ msgstr "Obrazac za kontakt"
2291
+
2292
+ #: modules/contact-form/grunion-form-view.php:118
2293
+ msgid "Your new field was saved successfully"
2294
+ msgstr "Vaše novo polje je uspješno sačuvano"
2295
+
2296
+ #: modules/contact-form/grunion-form-view.php:120
2297
+ msgid "Form builder"
2298
+ msgstr "Kreiranje obrasca"
2299
+
2300
+ #: modules/contact-form/grunion-form-view.php:121
2301
+ msgid "Email notifications"
2302
+ msgstr "Email obavijesti"
2303
+
2304
+ #: modules/contact-form/grunion-form-view.php:126
2305
+ msgid "How does this work?"
2306
+ msgstr "Kako ovo funkcioniše?"
2307
+
2308
+ #: modules/contact-form/grunion-form-view.php:127
2309
+ msgid "By adding a contact form, your readers will be able to submit feedback to you. All feedback is automatically scanned for spam, and the legitimate feedback will be emailed to you."
2310
+ msgstr "Dodavanjem obrasca za kontakt, vaši čitaoci će vam moći slati komentare i druge informacije. Sve ovo će se automatski skenirati radi spama i samo će poruke koje nisu spam biti proslijeđene na vaš email."
2311
+
2312
+ #: modules/contact-form/grunion-form-view.php:128
2313
+ msgid "Can I add more fields?"
2314
+ msgstr "Mogu li dodati još polja?"
2315
+
2316
+ #: modules/contact-form/grunion-form-view.php:130
2317
+ msgctxt "%1$s = \"Click here\" in an HTML link"
2318
+ msgid "Sure thing. %1$s to add a new text box, textarea, radio, checkbox, or dropdown field."
2319
+ msgstr "Naravno. %1$s da dodate novi tekstualni okvir, radio dugme, dugme za označavanje ili padajuću listu."
2320
+
2321
+ #: modules/contact-form/grunion-form-view.php:131
2322
+ msgid "Click here"
2323
+ msgstr "Kliknite ovdje"
2324
+
2325
+ #: modules/contact-form/grunion-form-view.php:133
2326
+ msgid "Can I view my feedback within WordPress?"
2327
+ msgstr "Mogu li pregledati povratne informacije unutar WordPressa?"
2328
+
2329
+ #: modules/contact-form/grunion-form-view.php:135
2330
+ msgctxt "%1$s = \"Feedbacks\" in an HTML link"
2331
+ msgid "Yep, you can read your feedback at any time by clicking the \"%1$s\" link in the admin menu."
2332
+ msgstr "Da, povratne informacije možete pročitati bilo kada klikom na link \"%1$s\" u administracijskom meniju."
2333
+
2334
+ #: modules/contact-form/grunion-form-view.php:141
2335
+ msgid "Do I need to fill this out?"
2336
+ msgstr "Moram li ovo popuniti?"
2337
+
2338
+ #: modules/contact-form/grunion-form-view.php:142
2339
+ msgid "Nope. However, if you&#8217;d like to modify where your feedback is sent, or the subject line you can. If you don&#8217;t make any changes here, feedback will be sent to the author of the page/post and the subject will be the name of this page/post."
2340
+ msgstr "Ne. Ipak, ako želite modificirati lokaciju na koju se šalju ove informacije ili naslov, onda je moguće. Ako ovdje ne napravite nikakve izmjene, povratne informacije će se slati autoru stranice/članka, a naslov će biti ime ove stranice/članka."
2341
+
2342
+ #: modules/contact-form/grunion-form-view.php:146
2343
+ msgid "Edit this new field"
2344
+ msgstr "Uredi ovo novo polje"
2345
+
2346
+ #: modules/contact-form/grunion-form-view.php:148
2347
+ #: modules/sharedaddy/sharing-sources.php:985
2348
+ msgid "Label"
2349
+ msgstr "Naslov"
2350
+
2351
+ #: modules/contact-form/grunion-form-view.php:149
2352
+ msgid "New field"
2353
+ msgstr "Novo polje"
2354
+
2355
+ #: modules/contact-form/grunion-form-view.php:151
2356
+ msgid "Field type"
2357
+ msgstr "Vrsta polja"
2358
+
2359
+ #: modules/contact-form/grunion-form-view.php:153
2360
+ msgid "Checkbox"
2361
+ msgstr "Dugme za oznaku"
2362
+
2363
+ #: modules/contact-form/grunion-form-view.php:154
2364
+ msgid "Drop down"
2365
+ msgstr "Padajuća lista"
2366
+
2367
+ #: modules/contact-form/grunion-form-view.php:157
2368
+ msgid "Radio"
2369
+ msgstr "Radio dugme"
2370
+
2371
+ #: modules/contact-form/grunion-form-view.php:158
2372
+ msgid "Text"
2373
+ msgstr "Tekst"
2374
+
2375
+ #: modules/contact-form/grunion-form-view.php:159
2376
+ msgid "Textarea"
2377
+ msgstr "Oblast za tekst"
2378
+
2379
+ #: modules/contact-form/grunion-form-view.php:166
2380
+ msgid "Options"
2381
+ msgstr "Opcije"
2382
+
2383
+ #: modules/contact-form/grunion-form-view.php:167
2384
+ msgid "First option"
2385
+ msgstr "Prva opcija"
2386
+
2387
+ #: modules/contact-form/grunion-form-view.php:170
2388
+ msgid "Add another option"
2389
+ msgstr "Dodaj još jednu opciju"
2390
+
2391
+ #: modules/contact-form/grunion-form-view.php:177
2392
+ msgid "Required?"
2393
+ msgstr "Neophodno?"
2394
+
2395
+ #: modules/contact-form/grunion-form-view.php:182
2396
+ msgid "Save this field"
2397
+ msgstr "Sačuvaj ovo polje"
2398
+
2399
+ #: modules/contact-form/grunion-form-view.php:187
2400
+ msgid "Here&#8217;s what your form will look like"
2401
+ msgstr "Vaš obrazac će izgledati ovako"
2402
+
2403
+ #: modules/contact-form/grunion-form-view.php:192
2404
+ msgid "Add a new field"
2405
+ msgstr "Dodaj novo polje"
2406
+
2407
+ #: modules/contact-form/grunion-form-view.php:194
2408
+ msgid "Add this form to my post"
2409
+ msgstr "Dodaj ovaj obrazac u moj članak"
2410
+
2411
+ #: modules/contact-form/grunion-form-view.php:197
2412
+ msgid "Email settings"
2413
+ msgstr "Email postavke"
2414
+
2415
+ #: modules/contact-form/grunion-form-view.php:199
2416
+ msgid "Enter your email address"
2417
+ msgstr "Upišite vašu email adresu"
2418
+
2419
+ #: modules/contact-form/grunion-form-view.php:202
2420
+ msgid "What should the subject line be?"
2421
+ msgstr "Šta bi trebalo upisati kao naslov?"
2422
+
2423
+ #: modules/contact-form/grunion-form-view.php:205
2424
+ msgid "Save and go back to form builder"
2425
+ msgstr "Sačuvaj i vrati se na kreiranje obrasca"
2426
+
2427
+ #: modules/custom-css/custom-css.php:486
2428
+ msgid ""
2429
+ "Welcome to Custom CSS!\n"
2430
+ "\n"
2431
+ "CSS (Cascading Style Sheets) is a kind of code that tells the browser how to render a web page. You may delete these comments and get started with your customizations.\n"
2432
+ "\n"
2433
+ "By default, your stylesheet will be loaded after the theme stylesheets, which means that your rules can take precedence and override the theme CSS rules. Just write here what you want to change, you don't need to copy all your theme's stylesheet content."
2434
+ msgstr ""
2435
+
2436
+ #: modules/custom-css/custom-css.php:595
2437
+ msgid "Preview: changes must be saved or they will be lost"
2438
+ msgstr "Pregled: izmjene moraju biti sačuvane ili će biti izgubljene"
2439
+
2440
+ #: modules/custom-css/custom-css.php:623
2441
+ msgid "Edit CSS"
2442
+ msgstr "Uredi CSS"
2443
+
2444
+ #: modules/custom-css/custom-css.php:637
2445
+ msgid "CSS"
2446
+ msgstr "CSS"
2447
+
2448
+ #: modules/custom-css/custom-css.php:676
2449
+ msgid "Custom CSS Stylesheet"
2450
+ msgstr "Korisnički CSS predložak"
2451
+
2452
+ #: modules/custom-css/custom-css.php:836
2453
+ msgid "Stylesheet saved."
2454
+ msgstr "Predložak je sačuvan."
2455
+
2456
+ #: modules/custom-css/custom-css.php:844
2457
+ msgid "CSS Stylesheet Editor"
2458
+ msgstr "Uređivač CSS predložaka"
2459
+
2460
+ #: modules/custom-css/custom-css.php:845
2461
+ msgid ""
2462
+ "New to CSS? Start with a <a href=\"http://www.htmldog.com/guides/cssbeginner/\">beginner tutorial</a>. Questions?\n"
2463
+ "\tAsk in the <a href=\"http://wordpress.org/support/forum/themes-and-templates\">Themes and Templates forum</a>."
2464
+ msgstr ""
2465
+
2466
+ #: modules/carousel/jetpack-carousel.php:443
2467
+ msgid "White"
2468
+ msgstr "Bijela"
2469
+
2470
+ #: modules/carousel/jetpack-carousel.php:451
2471
+ msgid "Display images in full-size carousel slideshow."
2472
+ msgstr "Prikaži slideshow preko cijelog ekrana."
2473
+
2474
+ #: modules/comments/admin.php:50 modules/comments/comments.php:178
2475
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2476
+ msgid "Leave a Reply"
2477
+ msgstr "Odgovori"
2478
+
2479
+ #: modules/comments/admin.php:54 modules/widgets/facebook-likebox.php:147
2480
+ msgid "Light"
2481
+ msgstr "Svijetla"
2482
+
2483
+ #: modules/comments/admin.php:55 modules/widgets/facebook-likebox.php:148
2484
+ msgid "Dark"
2485
+ msgstr "Tamna"
2486
+
2487
+ #: modules/comments/admin.php:56
2488
+ msgid "Transparent"
2489
+ msgstr "Providno"
2490
+
2491
+ #: modules/comments/admin.php:72 modules/module-info.php:521
2492
+ msgid "Jetpack Comments"
2493
+ msgstr "Jetpack komentari"
2494
+
2495
+ #: modules/comments/admin.php:81
2496
+ msgid "Greeting Text"
2497
+ msgstr "Pozdravni tekst"
2498
+
2499
+ #: modules/comments/admin.php:97 modules/comments/admin.php:168
2500
+ #: modules/widgets/facebook-likebox.php:145
2501
+ msgid "Color Scheme"
2502
+ msgstr "Šema boja"
2503
+
2504
+ #: modules/comments/admin.php:118
2505
+ msgid "Adjust your Jetpack Comments form with a clever greeting and color-scheme."
2506
+ msgstr "Prilagodite obrazac vaših Jetpack komentara dodajući poruku dobrodošlice i mijenjajući šemu boja."
2507
+
2508
+ #: modules/comments/admin.php:134
2509
+ msgid "A few catchy words to motivate your readers to comment"
2510
+ msgstr "Nekoliko riječi kojima ćete motivirati vaše čitatelje da komentarišu"
2511
+
2512
+ #: modules/comments/base.php:84
2513
+ msgid "Invalid request"
2514
+ msgstr "Neispravan zahtjev"
2515
+
2516
+ #: modules/comments/base.php:231
2517
+ msgid "Error: please fill the required fields (name, email)."
2518
+ msgstr "Greška: molimo vas da popunite neophodna polja (ime, email)."
2519
+
2520
+ #: modules/comments/base.php:233
2521
+ msgid "Error: please enter a valid email address."
2522
+ msgstr "Greška: molimo vas da unesete ispravnu email adresu."
2523
+
2524
+ #: modules/comments/comments.php:154
2525
+ msgid "You must <a href=\"%s\">log in</a> to post a comment."
2526
+ msgstr "Morate se <a href=\"%s\">prijaviti</a> da biste mogli objaviti komentar."
2527
+
2528
+ #: modules/comments/comments.php:217
2529
+ msgid "Cancel Reply"
2530
+ msgstr "Poništi odgovor"
2531
+
2532
+ #: modules/comments/comments.php:351
2533
+ msgid "Invalid security token."
2534
+ msgstr "Netačan sigurnosni token."
2535
+
2536
+ #: modules/comments/comments.php:412 modules/comments/comments.php:463
2537
+ msgid "Submitting Comment%s"
2538
+ msgstr "Šaljem komentar%s"
2539
+
2540
+ #: modules/contact-form/admin.php:27
2541
+ msgid "Add a custom form"
2542
+ msgstr "Dodaj korisnički obrazac"
2543
+
2544
+ #: modules/contact-form/admin.php:129
2545
+ msgid "From"
2546
+ msgstr "Od"
2547
+
2548
+ #: modules/contact-form/admin.php:130
2549
+ #: modules/contact-form/grunion-contact-form.php:556
2550
+ msgid "Message"
2551
+ msgstr "Poruka"
2552
+
2553
+ #: modules/contact-form/admin.php:131
2554
+ msgid "Date"
2555
+ msgstr "Datum"
2556
+
2557
+ #: modules/contact-form/admin.php:201
2558
+ msgid "Restore this item from the Trash"
2559
+ msgstr "Vrati ovu stavku iz smeća"
2560
+
2561
+ #: modules/contact-form/admin.php:203
2562
+ msgid "Restore"
2563
+ msgstr "Vrati"
2564
+
2565
+ #: modules/contact-form/admin.php:206 modules/contact-form/admin.php:305
2566
+ msgid "Delete this item permanently"
2567
+ msgstr "Trajno obriši ovu stavku"
2568
+
2569
+ #: modules/contact-form/admin.php:208 modules/contact-form/admin.php:307
2570
+ msgid "Delete Permanently"
2571
+ msgstr "Trajno obriši"
2572
+
2573
+ #: modules/contact-form/admin.php:239
2574
+ msgid "Mark this message as spam"
2575
+ msgstr "Označi ovu poruku kao spam"
2576
+
2577
+ #: modules/contact-form/admin.php:246 modules/contact-form/admin.php:248
2578
+ #: modules/contact-form/admin.php:540
2579
+ msgid "Trash"
2580
+ msgstr "Smeće"
2581
+
2582
+ #: modules/contact-form/admin.php:299
2583
+ msgid "Mark this message as NOT spam"
2584
+ msgstr "Ova poruka NIJE spam"
2585
+
2586
+ #: modules/contact-form/admin.php:338
2587
+ msgid "Y-m-d @ g:i:s A"
2588
+ msgstr "d.m.Y. @ H:i:s"
2589
+
2590
+ #: modules/contact-form/admin.php:462
2591
+ msgid "You are not allowed to manage this item."
2592
+ msgstr "Nije vam dozvoljeno upravljanje ovom stavkom."
2593
+
2594
+ #: modules/contact-form/admin.php:496
2595
+ msgid "You are not allowed to move this item out of the Trash."
2596
+ msgstr "Nemate dozvolu za izbacivanje ove stavke iz smeća."
2597
+
2598
+ #: modules/contact-form/admin.php:499
2599
+ msgid "Error in restoring from Trash."
2600
+ msgstr "Greška pri vraćanju iz smeća."
2601
+
2602
+ #: modules/contact-form/admin.php:503
2603
+ msgid "You are not allowed to move this item to the Trash."
2604
+ msgstr "Nije vam dozvoljeno prebacivanje ove stavke u smeće."
2605
+
2606
+ #: modules/contact-form/admin.php:506
2607
+ msgid "Error in moving to Trash."
2608
+ msgstr "Greška pri slanju u smeće."
2609
+
2610
+ #: modules/contact-form/admin.php:530
2611
+ msgid "Messages"
2612
+ msgstr "Poruke"
2613
+
2614
+ #: modules/contact-form/admin.php:553
2615
+ msgid "Spam"
2616
+ msgstr "Spam"
2617
+
2618
+ #: modules/contact-form/grunion-contact-form.php:73
2619
+ #: modules/contact-form/grunion-form-view.php:136
2620
+ msgid "Feedbacks"
2621
+ msgstr "Povratne informacije"
2622
+
2623
+ #: modules/contact-form/grunion-contact-form.php:74
2624
+ msgid "Feedback"
2625
+ msgstr "Povratne informacije"
2626
+
2627
+ #: modules/contact-form/grunion-contact-form.php:75
2628
+ msgid "Search Feedback"
2629
+ msgstr "Pretraga povratnih informacija"
2630
+
2631
+ #: modules/contact-form/grunion-contact-form.php:76
2632
+ #: modules/contact-form/grunion-contact-form.php:77
2633
+ msgid "No feedback found"
2634
+ msgstr "Nema pronađenih povratnih informacija"
2635
+
2636
+ #: modules/contact-form/grunion-contact-form.php:94
2637
+ msgid "Spam <span class=\"count\">(%s)</span>"
2638
+ msgid_plural "Spam <span class=\"count\">(%s)</span>"
2639
+ msgstr[0] "Spam <span class=\"count\">(%s)</span>"
2640
+ msgstr[1] "Spam <span class=\"count\">(%s)</span>"
2641
+ msgstr[2] "Spam <span class=\"count\">(%s)</span>"
2642
+
2643
+ #: modules/contact-form/grunion-contact-form.php:514
2644
+ msgctxt "%1$s = blog name"
2645
+ msgid "%1$s Sidebar"
2646
+ msgstr "%1$s - bočna traka"
2647
+
2648
+ #: modules/contact-form/grunion-contact-form.php:521
2649
+ msgctxt "%1$s = blog name, %2$s = post title"
2650
+ msgid "%1$s %2$s"
2651
+ msgstr "%1$s - %2$s"
2652
+
2653
+ #: modules/contact-form/grunion-contact-form.php:546
2654
+ #: modules/contact-form/grunion-form-view.php:156
2655
+ msgid "Name"
2656
+ msgstr "Ime"
2657
+
2658
+ #: modules/contact-form/grunion-contact-form.php:547
2659
+ #: modules/contact-form/grunion-form-view.php:155
2660
+ #: modules/sharedaddy/sharing-sources.php:200
2661
+ msgid "Email"
2662
+ msgstr "Email"
2663
+
2664
+ #: modules/contact-form/grunion-contact-form.php:552
2665
+ msgid "Subject"
2666
+ msgstr "Tema"
2667
+
2668
+ #: modules/contact-form/grunion-contact-form.php:633
2669
+ msgid "Error!"
2670
+ msgstr "Greška!"
2671
+
2672
+ #: modules/contact-form/grunion-contact-form.php:647
2673
+ msgid "Message Sent"
2674
+ msgstr "Poruka poslana"
2675
+
2676
+ #: modules/contact-form/grunion-contact-form.php:648
2677
+ msgid "go back"
2678
+ msgstr "idi nazad"
2679
+
2680
+ #: modules/contact-form/grunion-contact-form.php:683
2681
+ #: modules/contact-form/grunion-contact-form.php:699
2682
+ msgctxt "%1$s = form field label, %2$s = form field value"
2683
+ msgid "%1$s: %2$s"
2684
+ msgstr "%1$s: %2$s"
2685
+
2686
+ #: modules/contact-form/grunion-contact-form.php:729
2687
+ msgid "Submit &#187;"
2688
+ msgstr "Pošalji &#187;"
2689
+
2690
+ #: modules/contact-form/grunion-contact-form.php:971
2691
+ msgid "l F j, Y \\a\\t g:i a"
2692
+ msgstr "l, j. F Y. u H:i"
2693
+
2694
+ #: modules/contact-form/grunion-contact-form.php:991
2695
+ msgid "Time:"
2696
+ msgstr "Vrijeme:"
2697
+
2698
+ #: modules/contact-form/grunion-contact-form.php:992
2699
+ msgid "IP Address:"
2700
+ msgstr "IP adresa:"
2701
+
2702
+ #: modules/contact-form/grunion-contact-form.php:993
2703
+ msgid "Contact Form URL:"
2704
+ msgstr "URL obrasca za kontakt:"
2705
+
2706
+ #: modules/contact-form/grunion-contact-form.php:999
2707
+ msgid "Sent by a verified %s user."
2708
+ msgstr "Poslano od strane provjerenog %s korisnika."
2709
+
2710
+ #: modules/contact-form/grunion-contact-form.php:1003
2711
+ msgid "Sent by an unverified visitor to your site."
2712
+ msgstr "Poslano od strane neprovjerenog korisnika."
2713
+
2714
+ #: modules/contact-form/grunion-contact-form.php:1236
2715
+ msgid "%s requires a valid email address"
2716
+ msgstr "%s zahtjeva ispravnu email adresu"
2717
+
2718
+ #: modules/after-the-deadline/atd-l10n.php:34
2719
+ msgid ""
2720
+ "The proofreader has suggestions for this post. Are you sure you want to update it?\n"
2721
+ "\n"
2722
+ "Press OK to update your post, or Cancel to view the suggestions and edit your post."
2723
+ msgstr ""
2724
+ "Postoje prijedlozi za lektorisanje ovog članka. Jeste li sugurni da ga želite ažurirati?\n"
2725
+ "\n"
2726
+ "Pritisnite U redu za ažuriranje članka, ili Poništi za pregled prijedloga i uređivanje vašeg članka."
2727
+
2728
+ #: modules/after-the-deadline/config-options.php:48
2729
+ msgid "Proofreading"
2730
+ msgstr "Lektorisanje"
2731
+
2732
+ #: modules/after-the-deadline/config-options.php:50
2733
+ msgid "Automatically proofread content when:"
2734
+ msgstr "Automatski radi lektorisanje sadržaja kada:"
2735
+
2736
+ #: modules/after-the-deadline/config-options.php:53
2737
+ msgid "a post or page is first published"
2738
+ msgstr "članak ili stranica se objavljuju prvi put"
2739
+
2740
+ #: modules/after-the-deadline/config-options.php:55
2741
+ msgid "a post or page is updated"
2742
+ msgstr "članak ili stranica se ažuriraju"
2743
+
2744
+ #: modules/after-the-deadline/config-options.php:58
2745
+ msgid "English Options"
2746
+ msgstr "Engleske opcije"
2747
+
2748
+ #: modules/after-the-deadline/config-options.php:60
2749
+ msgid "Enable proofreading for the following grammar and style rules when writing posts and pages:"
2750
+ msgstr "Omogući lektorisanje za sljedeća gramatička i stilska pravila pri pisanju članaka i stranica:"
2751
+
2752
+ #: modules/after-the-deadline/config-options.php:63
2753
+ msgid "Bias Language"
2754
+ msgstr "Vulgaran jezik"
2755
+
2756
+ #: modules/after-the-deadline/config-options.php:65
2757
+ msgid "Clich&eacute;s"
2758
+ msgstr "Klišei"
2759
+
2760
+ #: modules/after-the-deadline/config-options.php:67
2761
+ msgid "Complex Phrases"
2762
+ msgstr "Kompleksne fraze"
2763
+
2764
+ #: modules/after-the-deadline/config-options.php:69
2765
+ msgid "Diacritical Marks"
2766
+ msgstr "Dijakritičke oznake"
2767
+
2768
+ #: modules/after-the-deadline/config-options.php:71
2769
+ msgid "Double Negatives"
2770
+ msgstr "Dvostruka negacija"
2771
+
2772
+ #: modules/after-the-deadline/config-options.php:73
2773
+ msgid "Hidden Verbs"
2774
+ msgstr "Sakriveni glagoli"
2775
+
2776
+ #: modules/after-the-deadline/config-options.php:75
2777
+ msgid "Jargon"
2778
+ msgstr "Žargon"
2779
+
2780
+ #: modules/after-the-deadline/config-options.php:77
2781
+ msgid "Passive Voice"
2782
+ msgstr "Pasiv"
2783
+
2784
+ #: modules/after-the-deadline/config-options.php:79
2785
+ msgid "Phrases to Avoid"
2786
+ msgstr "Fraze koje bi se trebale izbjegavati"
2787
+
2788
+ #: modules/after-the-deadline/config-options.php:81
2789
+ msgid "Redundant Phrases"
2790
+ msgstr "Suvišne fraze"
2791
+
2792
+ #: modules/after-the-deadline/config-options.php:83
2793
+ msgid "<a href=\"%s\">Learn more</a> about these options."
2794
+ msgstr "<a href=\"%s\">Saznajte više</a> o ovim opcijama."
2795
+
2796
+ #: modules/after-the-deadline/config-options.php:86
2797
+ msgid "Language"
2798
+ msgstr "Jezik"
2799
+
2800
+ #: modules/after-the-deadline/config-options.php:89
2801
+ msgctxt "%1$s = http://codex.wordpress.org/Installing_WordPress_in_Your_Language, %2$s = WPLANG"
2802
+ msgid "The proofreader supports English, French, German, Portuguese, and Spanish. Your <a href=\"%1$s\">%2$s</a> value is the default proofreading language."
2803
+ msgstr ""
2804
+
2805
+ #: modules/after-the-deadline/config-options.php:95
2806
+ msgid "Use automatically detected language to proofread posts and pages"
2807
+ msgstr "Koristi automatski detektovani jezik za lektorisanje članaka i stranica"
2808
+
2809
+ #: modules/after-the-deadline/config-unignore.php:126
2810
+ msgid "Ignored Phrases"
2811
+ msgstr "Zanemarene fraze"
2812
+
2813
+ #: modules/after-the-deadline/config-unignore.php:128
2814
+ msgid "Identify words and phrases to ignore while proofreading your posts and pages:"
2815
+ msgstr "Identifikacija ignorisanih riječi i fraza prilikom lektorisanja vaših članaka i stranica:"
2816
+
2817
+ #: modules/after-the-deadline/config-unignore.php:130
2818
+ msgid "Add"
2819
+ msgstr "Dodaj"
2820
+
2821
+ #: modules/after-the-deadline/config-unignore.php:135
2822
+ msgid "Be sure to click \"Update Profile\" at the bottom of the screen to save your changes."
2823
+ msgstr "Ne zaboravite kliknuti na \"Ažuriraj profil\" u dnu stranice da biste sačuvali promjene."
2824
+
2825
+ #: modules/carousel/jetpack-carousel.php:103
2826
+ msgid "Comment"
2827
+ msgstr "komentar"
2828
+
2829
+ #: modules/carousel/jetpack-carousel.php:104
2830
+ msgid "Post Comment"
2831
+ msgstr "Objavi komentar"
2832
+
2833
+ #: modules/carousel/jetpack-carousel.php:105
2834
+ msgid "Loading Comments..."
2835
+ msgstr "Učitavam komentare..."
2836
+
2837
+ #: modules/carousel/jetpack-carousel.php:106
2838
+ msgid "View full size <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
2839
+ msgstr "Prikaži punu veličinu <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
2840
+
2841
+ #: modules/carousel/jetpack-carousel.php:107
2842
+ msgid "Please be sure to submit some text with your comment."
2843
+ msgstr "Molimo vas da ne zaboravite upisati tekst vašeg komentara."
2844
+
2845
+ #: modules/carousel/jetpack-carousel.php:108
2846
+ msgid "Please provide an email address to comment."
2847
+ msgstr "Molimo vas da upišete vašu email adresu."
2848
+
2849
+ #: modules/carousel/jetpack-carousel.php:109
2850
+ msgid "Please provide your name to comment."
2851
+ msgstr "Molimo vas da upišete vaše ime."
2852
+
2853
+ #: modules/carousel/jetpack-carousel.php:110
2854
+ msgid "Sorry, but there was an error posting your comment. Please try again later."
2855
+ msgstr "Žao nam je, desila se greška prilikom objavljivanja vašeg komentara. Molimo vas da kasnije pokušate ponovo."
2856
+
2857
+ #: modules/carousel/jetpack-carousel.php:111
2858
+ msgid "Your comment was approved."
2859
+ msgstr "Vaš komentar je odobren."
2860
+
2861
+ #: modules/carousel/jetpack-carousel.php:112
2862
+ msgid "Your comment is in moderation."
2863
+ msgstr "Vaš komentar čeka na moderaciju."
2864
+
2865
+ #: modules/carousel/jetpack-carousel.php:113
2866
+ msgid "Camera"
2867
+ msgstr "Kamera"
2868
+
2869
+ #: modules/carousel/jetpack-carousel.php:114
2870
+ msgid "Aperture"
2871
+ msgstr "Otvor blende"
2872
+
2873
+ #: modules/carousel/jetpack-carousel.php:115
2874
+ msgid "Shutter Speed"
2875
+ msgstr "Brzina okidanja"
2876
+
2877
+ #: modules/carousel/jetpack-carousel.php:116
2878
+ msgid "Focal Length"
2879
+ msgstr "Fokalna dužina"
2880
+
2881
+ #: modules/carousel/jetpack-carousel.php:123
2882
+ msgid "Commenting as %s"
2883
+ msgstr "Komentarišete kao %s"
2884
+
2885
+ #: modules/carousel/jetpack-carousel.php:126
2886
+ msgid "Email (Required)"
2887
+ msgstr "Email (neophodno)"
2888
+
2889
+ #: modules/carousel/jetpack-carousel.php:128
2890
+ msgid "Name (Required)"
2891
+ msgstr "Ime (neophodno)"
2892
+
2893
+ #: modules/carousel/jetpack-carousel.php:130
2894
+ #: modules/contact-form/grunion-contact-form.php:548
2895
+ #: modules/contact-form/grunion-form-view.php:160
2896
+ msgid "Website"
2897
+ msgstr "Web stranica"
2898
+
2899
+ #: modules/carousel/jetpack-carousel.php:246
2900
+ msgid "Missing attachment ID."
2901
+ msgstr "Nedostaje ID priloga."
2902
+
2903
+ #: modules/carousel/jetpack-carousel.php:284
2904
+ msgid "Nonce verification failed."
2905
+ msgstr "Verifikacija za nonce nije uspjela."
2906
+
2907
+ #: modules/carousel/jetpack-carousel.php:291
2908
+ msgid "Missing target blog ID."
2909
+ msgstr "Nedostaje ID odredišnog bloga."
2910
+
2911
+ #: modules/carousel/jetpack-carousel.php:294
2912
+ msgid "Missing target post ID."
2913
+ msgstr "Nedostaje ID odredišnog člaka."
2914
+
2915
+ #: modules/carousel/jetpack-carousel.php:297
2916
+ msgid "No comment text was submitted."
2917
+ msgstr "Niste upisali tekst komentara."
2918
+
2919
+ #: modules/carousel/jetpack-carousel.php:309
2920
+ msgid "Comments on this post are closed."
2921
+ msgstr "Komentari su isključeni za ovaj članak."
2922
+
2923
+ #: modules/carousel/jetpack-carousel.php:319
2924
+ msgid "Sorry, but we could not authenticate your request."
2925
+ msgstr "Žao nam je, nismo mogli izvršiti autentifikaciju vašeg zahtjeva."
2926
+
2927
+ #: modules/carousel/jetpack-carousel.php:327
2928
+ msgid "Please provide your name."
2929
+ msgstr "Molimo vas da upišete vaše ime."
2930
+
2931
+ #: modules/carousel/jetpack-carousel.php:330
2932
+ msgid "Please provide an email address."
2933
+ msgstr "Molimo vas da upišete email adresu."
2934
+
2935
+ #: modules/carousel/jetpack-carousel.php:333
2936
+ msgid "Please provide a valid email address."
2937
+ msgstr "Molimo vas da upišete ispravnu email adresu."
2938
+
2939
+ #: modules/carousel/jetpack-carousel.php:360
2940
+ msgid "Image Gallery Carousel"
2941
+ msgstr "Slike iz galerije"
2942
+
2943
+ #: modules/carousel/jetpack-carousel.php:363
2944
+ msgid "Enable carousel"
2945
+ msgstr "Omogući prikaz slika"
2946
+
2947
+ #: modules/carousel/jetpack-carousel.php:367
2948
+ msgid "Background color"
2949
+ msgstr "Boja pozadine"
2950
+
2951
+ #: modules/carousel/jetpack-carousel.php:370
2952
+ msgid "Metadata"
2953
+ msgstr "Meta podaci"
2954
+
2955
+ #: modules/carousel/jetpack-carousel.php:427
2956
+ msgid "Show photo metadata (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) in carousel, when available."
2957
+ msgstr "Ako su dostupni, prikaži meta podatke za fotografije (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) u galeriji."
2958
+
2959
+ #: modules/carousel/jetpack-carousel.php:435
2960
+ msgid "Show map of photo location in carousel, when available."
2961
+ msgstr "Ako je moguće, prikaži mapu lokacije fotografije u galeriji."
2962
+
2963
+ #: modules/carousel/jetpack-carousel.php:443
2964
+ msgid "Black"
2965
+ msgstr "Crna"
2966
+
2967
+ #: jetpack.php:2233
2968
+ msgid "User linked to WordPress.com"
2969
+ msgstr ""
2970
+
2971
+ #: jetpack.php:2233
2972
+ msgid "Unlink user from WordPress.com"
2973
+ msgstr ""
2974
+
2975
+ #: jetpack.php:2249
2976
+ msgid "Jetpack is network activated and notices can not be dismissed."
2977
+ msgstr "Jetpack je aktiviran na mreži i napomene ne mogu biti zatvorene."
2978
+
2979
+ #: jetpack.php:2260
2980
+ msgid "Dismiss this notice."
2981
+ msgstr "Zatvori ovu napomenu."
2982
+
2983
+ #: jetpack.php:2265
2984
+ msgid "To enable all of the Jetpack features you&#8217;ll need to connect your website to WordPress.com using the button to the right. Once you&#8217;ve made the connection you&#8217;ll activate all the delightful features below."
2985
+ msgstr "Da omogućite sve Jetpackove mogućnosti morate povezati vašu web stranicu na WordPress.com pomoću dugmeta desno. Jednom kada uspostavite konekciju aktivirat ćete sve mogućnosti ispod."
2986
+
2987
+ #: jetpack.php:2280
2988
+ msgid "To enable all of the Jetpack features you&#8217;ll need to link your account here to your WordPress.com account using the button to the right."
2989
+ msgstr ""
2990
+
2991
+ #: jetpack.php:2284 modules/post-by-email.php:129
2992
+ #: modules/publicize/publicize-jetpack.php:62
2993
+ msgid "Link account with WordPress.com"
2994
+ msgstr "Povežite račun sa WordPress.com"
2995
+
2996
+ #: jetpack.php:2306
2997
+ msgid "Have feedback on Jetpack?"
2998
+ msgstr "Imate komentar vezan za Jetpack?"
2999
+
3000
+ #: jetpack.php:2308
3001
+ msgid "Answer a short survey to let us know how we&#8217;re doing and what to add in the future."
3002
+ msgstr "Popunite kratku anketu i napišite vaše mišljenje o pluginu i dajte nam savjet o tome na čemu da radimo u budućnosti."
3003
+
3004
+ #: jetpack.php:2311
3005
+ msgid "Take Survey"
3006
+ msgstr "Ispunite anketu"
3007
+
3008
+ #: jetpack.php:2317
3009
+ msgid "Checking email updates status&hellip;"
3010
+ msgstr "Provjeravam status email novosti&hellip;"
3011
+
3012
+ #: jetpack.php:2323
3013
+ msgctxt "%s = Unsubscribe link"
3014
+ msgid "You are currently subscribed to email updates. %s"
3015
+ msgstr "Trenutno ste pretplaćeni na email novosti. %s"
3016
+
3017
+ #: jetpack.php:2324
3018
+ msgid "Unsubscribe"
3019
+ msgstr "Ukloni pretplatu"
3020
+
3021
+ #: jetpack.php:2328
3022
+ msgctxt "%s = Subscribe link"
3023
+ msgid "Want to receive updates about Jetpack by email? %s"
3024
+ msgstr "Želite dobijati novosti o Jetpacku na vaš email? %s"
3025
+
3026
+ #: jetpack.php:2329 modules/subscriptions.php:673
3027
+ msgid "Subscribe"
3028
+ msgstr "Pretplati se"
3029
+
3030
+ #: jetpack.php:2336
3031
+ msgid "You have been subscribed to receive email updates."
3032
+ msgstr "Uspješno ste se pretplatili na email novosti."
3033
+
3034
+ #: jetpack.php:2338
3035
+ msgid "You will no longer receive email updates about Jetpack."
3036
+ msgstr "Više nećete dobijati email novosti o Jetpacku."
3037
+
3038
+ #: jetpack.php:2351
3039
+ msgid "An <span>Automattic</span> Airline"
3040
+ msgstr "<span>Automattic</span> Airline"
3041
+
3042
+ #: jetpack.php:2354
3043
+ msgid "Privacy Policy"
3044
+ msgstr "Polica privatnosti"
3045
+
3046
+ #: jetpack.php:2355
3047
+ msgid "Terms of Service"
3048
+ msgstr "Uslovi servisa"
3049
+
3050
+ #: jetpack.php:2357
3051
+ msgid "Debug"
3052
+ msgstr "Debugovanje"
3053
+
3054
+ #: jetpack.php:2359 modules/sharedaddy/sharedaddy.php:82
3055
+ msgid "Support"
3056
+ msgstr "Podrška"
3057
+
3058
+ #: jetpack.php:2379
3059
+ msgid "This is sensitive information. Please do not post your BLOG_TOKEN or USER_TOKEN publicly; they are like passwords."
3060
+ msgstr "Ovo su osjetljive informacije. Molimo vas da javno ne objavljujete vaš BLOG_TOKEN ili USER_TOKEN; ovi podaci su ekvivalent vašoj šifri."
3061
+
3062
+ #: jetpack.php:2423
3063
+ msgid "Configure %s"
3064
+ msgstr "Konfiguriši %s"
3065
+
3066
+ #: jetpack.php:2482
3067
+ msgid "Deactivate"
3068
+ msgstr "Deaktiviraj"
3069
+
3070
+ #: jetpack.php:2492
3071
+ msgid "Activate"
3072
+ msgstr "Aktiviraj"
3073
+
3074
+ #: jetpack.php:2509
3075
+ msgid "Free"
3076
+ msgstr "Besplatno"
3077
+
3078
+ #: jetpack.php:2509
3079
+ msgid "Purchase"
3080
+ msgstr "Kupi"
3081
+
3082
+ #: jetpack.php:2517
3083
+ msgid "New"
3084
+ msgstr "Novo"
3085
+
3086
+ #: jetpack.php:2520
3087
+ msgid "Updated"
3088
+ msgstr "Ažurirano"
3089
+
3090
+ #: jetpack.php:2548
3091
+ msgid "Configure"
3092
+ msgstr "Prilagodi"
3093
+
3094
+ #: jetpack.php:2582
3095
+ msgid "Coming soon&#8230;"
3096
+ msgstr "Uskoro"
3097
+
3098
+ #: jetpack.php:2735 jetpack.php:2737 jetpack.php:2739 jetpack.php:2742
3099
+ #: jetpack.php:3673
3100
+ msgid "Error Details: %s"
3101
+ msgstr "Detalji greške: %s"
3102
+
3103
+ #: jetpack.php:2898
3104
+ msgid "Jetpack Plugin Version"
3105
+ msgstr ""
3106
+
3107
+ #: jetpack.php:2904
3108
+ msgid "The Client ID/WP.com Blog ID of this site"
3109
+ msgstr ""
3110
+
3111
+ #: jetpack.php:3156
3112
+ msgid "You must connect your Jetpack plugin to WordPress.com to use this feature."
3113
+ msgstr "Morate povezati vaš Jetpack plugin sa WordPress.com stranicom da biste mogli koristiti ovu mogućnost."
3114
+
3115
+ #: jetpack.php:3159
3116
+ msgid "Someone may be trying to trick you into giving them access to your site. Or it could be you just encountered a bug :). Either way, please close this window."
3117
+ msgstr ""
3118
+
3119
+ #: jetpack.php:3187
3120
+ msgid "The authorization process expired. Please go back and try again."
3121
+ msgstr "Autorizacijski proces je istekao. Molimo vas da se vratite nazad i pokušate ponovo."
3122
+
3123
+ #: jetpack.php:3227
3124
+ msgid "%s wants to access your site&#8217;s data. Log in to authorize that access."
3125
+ msgstr ""
3126
+
3127
+ #: jetpack.php:3626
3128
+ msgid "An administrator for this blog must set up the Jetpack connection."
3129
+ msgstr "Administrator ovog bloga mora postaviti Jetpack konekciju."
3130
+
3131
+ #: jetpack.php:3631
3132
+ msgid "You need to register your Jetpack before connecting it."
3133
+ msgstr "Morate registrovati vaš Jetpack prije nego ga konektujete."
3134
+
3135
+ #: locales.php:29
3136
+ msgctxt "locales"
3137
+ msgid "%1$s/%2$s"
3138
+ msgstr "%1$s/%2$s"
3139
+
3140
+ #: modules/after-the-deadline/atd-l10n.php:12
3141
+ msgid "Spelling"
3142
+ msgstr "Provjera pravopisa"
3143
+
3144
+ #: modules/after-the-deadline/atd-l10n.php:13
3145
+ msgid "Repeated Word"
3146
+ msgstr "Ponovljena riječ"
3147
+
3148
+ #: modules/after-the-deadline/atd-l10n.php:15
3149
+ msgid "No suggestions"
3150
+ msgstr "Nema prijedloga"
3151
+
3152
+ #: modules/after-the-deadline/atd-l10n.php:17
3153
+ msgid "Explain..."
3154
+ msgstr "Objasni..."
3155
+
3156
+ #: modules/after-the-deadline/atd-l10n.php:18
3157
+ msgid "Ignore suggestion"
3158
+ msgstr "Ignoriši prijedlog"
3159
+
3160
+ #: modules/after-the-deadline/atd-l10n.php:19
3161
+ msgid "Ignore always"
3162
+ msgstr "Uvijek zanemaruj"
3163
+
3164
+ #: modules/after-the-deadline/atd-l10n.php:20
3165
+ msgid "Ignore all"
3166
+ msgstr "Zanemari sve"
3167
+
3168
+ #: modules/after-the-deadline/atd-l10n.php:22
3169
+ msgid "Edit Selection..."
3170
+ msgstr "Uredi selekciju..."
3171
+
3172
+ #: modules/after-the-deadline/atd-l10n.php:24
3173
+ msgid "proofread"
3174
+ msgstr "lektorisanje"
3175
+
3176
+ #: modules/after-the-deadline/atd-l10n.php:25
3177
+ msgid "edit text"
3178
+ msgstr "uredi tekst"
3179
+
3180
+ #: modules/after-the-deadline/atd-l10n.php:26
3181
+ #: modules/after-the-deadline.php:224
3182
+ msgid "Proofread Writing"
3183
+ msgstr "Lektoriši napisano"
3184
+
3185
+ #: modules/after-the-deadline/atd-l10n.php:28
3186
+ msgid "No writing errors were found."
3187
+ msgstr "Nisu pronađene greške u pisanju."
3188
+
3189
+ #: modules/after-the-deadline/atd-l10n.php:29
3190
+ msgid "There was a problem communicating with the Proofreading service. Try again in one minute."
3191
+ msgstr "Desio se problem pri komunikaciji sa servisom za provjeru pravopisa i gramatike. Pokušajte ponovo za par minuta."
3192
+
3193
+ #: modules/after-the-deadline/atd-l10n.php:30
3194
+ msgid "There was an error communicating with the proofreading service."
3195
+ msgstr "Desila se greška pri komunikaciji sa servisom za lektorisanje."
3196
+
3197
+ #: modules/after-the-deadline/atd-l10n.php:32
3198
+ msgid "Replace selection with:"
3199
+ msgstr "Zamijeni selekciju sa:"
3200
+
3201
+ #: modules/after-the-deadline/atd-l10n.php:33
3202
+ msgid ""
3203
+ "The proofreader has suggestions for this post. Are you sure you want to publish it?\n"
3204
+ "\n"
3205
+ "Press OK to publish your post, or Cancel to view the suggestions and edit your post."
3206
+ msgstr ""
3207
+ "Postoje prijedlozi za lektorisanje ovog članka. Jeste li sugurni da ga želite objaviti?\n"
3208
+ "\n"
3209
+ "Pritisnite U redu za ažuriranje članka, ili Poništi za pregled prijedloga i uređivanje vašeg članka."
3210
+
3211
+ #: functions.opengraph.php:74
3212
+ msgid "(no title)"
3213
+ msgstr "(bez naslova)"
3214
+
3215
+ #: jetpack.php:1050
3216
+ msgid "Jetpack requires WordPress version %s or later."
3217
+ msgstr "Jetpack zahtjeva WordPress %s ili noviji."
3218
+
3219
+ #: jetpack.php:1246 jetpack.php:1262
3220
+ msgid "Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin."
3221
+ msgstr "Jetpack sadrži najnoviju verziju starog &#8220;%1$s&#8221; plugina."
3222
+
3223
+ #: jetpack.php:1283
3224
+ msgid "One New Jetpack Module"
3225
+ msgid_plural "%s New Jetpack Modules"
3226
+ msgstr[0] "%s novi Jetpack modul"
3227
+ msgstr[1] "%s nova Jetpack modula"
3228
+ msgstr[2] "%s novih Jetpack modula"
3229
+
3230
+ #: jetpack.php:1286
3231
+ msgid "Jetpack"
3232
+ msgstr "Jetpack"
3233
+
3234
+ #: jetpack.php:1438 jetpack.php:1462 jetpack.php:1473 jetpack.php:2238
3235
+ #: jetpack.php:2422
3236
+ msgid "Jetpack by WordPress.com"
3237
+ msgstr "WordPress.com Jetpack"
3238
+
3239
+ #: jetpack.php:1439 jetpack.php:1463 jetpack.php:2241
3240
+ msgid "Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com."
3241
+ msgstr "Jetpack daje vašoj WordPress stranici vrhunske WordPress.com mogućnosti."
3242
+
3243
+ #: jetpack.php:1440 jetpack.php:1464
3244
+ msgid "On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed."
3245
+ msgstr "Na ovoj stranici možete vidjeti module koji su dostupni u Jetpacku, saznati više o njima i aktivirati/deaktivirati ih po potrebi."
3246
+
3247
+ #: jetpack.php:1441
3248
+ msgid "Jetpack Module Options"
3249
+ msgstr "Opcije Jetpack modula"
3250
+
3251
+ #: jetpack.php:1442
3252
+ msgid "<strong>To Activate/Deactivate a Module</strong> - Click on Learn More. An Activate or Deactivate button will now appear next to the Learn More button. Click the Activate/Deactivate button."
3253
+ msgstr "<strong>Aktivacija/Deaktivacija modula</strong> - Kliknite na Saznaj vipe. Dugme za aktivaciju ili deaktivaciju će se pojaviti pored dugmeta Saznaj više. Kliknite na dugme za aktivaciju/deaktivaciju."
3254
+
3255
+ #: jetpack.php:1443 jetpack.php:1486
3256
+ msgid "For more information:"
3257
+ msgstr "Za više informacija:"
3258
+
3259
+ #: jetpack.php:1444 jetpack.php:1487
3260
+ msgid "Jetpack FAQ"
3261
+ msgstr "Jetpack FAQ"
3262
+
3263
+ #: jetpack.php:1445 jetpack.php:1488
3264
+ msgid "Jetpack Support"
3265
+ msgstr "Jetpack podrška"
3266
+
3267
+ #: jetpack.php:1460
3268
+ msgid "Overview"
3269
+ msgstr "Pregled"
3270
+
3271
+ #: jetpack.php:1471
3272
+ msgid "Modules"
3273
+ msgstr "Moduli"
3274
+
3275
+ #: jetpack.php:1474
3276
+ msgid "You can activate or deactivate individual Jetpack modules to suit your needs."
3277
+ msgstr "Možete aktivirati ili deaktivirati bilo koji Jetpackov modul."
3278
+
3279
+ #: jetpack.php:1476
3280
+ msgid "Find the component you want to manage"
3281
+ msgstr "Pronađite komponente koje želite mijenjati"
3282
+
3283
+ #: jetpack.php:1477
3284
+ msgid "Click on Learn More"
3285
+ msgstr "Kliknite na Saznaj više"
3286
+
3287
+ #: jetpack.php:1478
3288
+ msgid "An Activate or Deactivate button will appear"
3289
+ msgstr "Pojavit će se link za aktivaciju ili deaktivaciju"
3290
+
3291
+ #: jetpack.php:1479
3292
+ msgid "If additional settings are available, a link to them will appear"
3293
+ msgstr "Ako su dostupne dodatne opcije, pojavit će se link ka tim opcijama"
3294
+
3295
+ #: jetpack.php:1557 modules/publicize/ui.php:511
3296
+ #: modules/sharedaddy/sharedaddy.php:74 modules/sharedaddy/sharedaddy.php:81
3297
+ msgid "Settings"
3298
+ msgstr "Postavke"
3299
+
3300
+ #: jetpack.php:1574
3301
+ msgid "Dismiss this notice and deactivate Jetpack."
3302
+ msgstr "Zatvori ovu napomenu i deaktiviraj Jetpack."
3303
+
3304
+ #: jetpack.php:1580
3305
+ msgid "<strong>Your Jetpack is almost ready</strong> &#8211; A connection to WordPress.com is needed to enable features like Comments, Stats, Contact Forms, and Subscriptions. Connect now to get fueled up!"
3306
+ msgstr "<strong>Vaš Jetpack je skoro spreman </strong> &#8211; Konekcija sa WordPress.com stranicom je neophodna kako biste omogućili servise kao što su Komentari, Statistika, Obrasci za kontakt i Pretplate. Povežite se odmah i započnite s korištenjem!"
3307
+
3308
+ #: jetpack.php:1582
3309
+ msgid "<strong>Jetpack is installed</strong> and ready to bring awesome, WordPress.com cloud-powered features to your site."
3310
+ msgstr "<strong>Jetpack je instaliran</strong> i spreman je da vam ponudi vrhunske WordPress.com cloud mogućnosti na vašoj stranici."
3311
+
3312
+ #: jetpack.php:1588 jetpack.php:2269
3313
+ msgid "Connect to WordPress.com"
3314
+ msgstr "Poveži se na WordPress.com"
3315
+
3316
+ #: jetpack.php:1590 modules/module-info.php:45 modules/module-info.php:81
3317
+ #: modules/module-info.php:138 modules/module-info.php:173
3318
+ #: modules/module-info.php:207 modules/module-info.php:237
3319
+ #: modules/module-info.php:270 modules/module-info.php:306
3320
+ #: modules/module-info.php:357 modules/module-info.php:379
3321
+ #: modules/module-info.php:417 modules/module-info.php:442
3322
+ #: modules/module-info.php:460 modules/module-info.php:479
3323
+ #: modules/module-info.php:485 modules/module-info.php:512
3324
+ #: modules/module-info.php:543 modules/module-info.php:578
3325
+ #: modules/module-info.php:600 modules/module-info.php:622
3326
+ #: modules/module-info.php:666 modules/module-info.php:694
3327
+ #: modules/module-info.php:722
3328
+ msgid "Learn More"
3329
+ msgstr "Saznaj više"
3330
+
3331
+ #: jetpack.php:1603
3332
+ msgid "<strong>Jetpack is activated!</strong> Each site on your network must be connected individually by an admin on that site."
3333
+ msgstr "<strong>Jetpack je aktiviran!</strong> Administrator mora posebno povezati svaku stranicu u vašoj mreži."
3334
+
3335
+ #: jetpack.php:1630
3336
+ msgid "Jetpack now includes Jetpack Comments, which enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site. To activate Jetpack Comments, <a href=\"%s\">%s</a>."
3337
+ msgstr "Jetpack sada sadrži Jetpack komentare koji omogućavaju vašim posjetiocima da koriste svoje WordPress.com, Twitter ili Facebook račune prilikom komentarisanja na vašoj stranici. Da aktivirate Jetpack komentare, <a href=\"%s\">%s</a>."
3338
+
3339
+ #: jetpack.php:1638
3340
+ msgid "click here"
3341
+ msgstr "kliknite ovdje"
3342
+
3343
+ #: jetpack.php:1769
3344
+ msgid "You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features."
3345
+ msgstr "Morate izvršiti autorizaciju Jetpack konekcije između vaše i WordPress.com stranice da biste omogućili vrhunske mogućnosti koje vam Jetpack pruža."
3346
+
3347
+ #: jetpack.php:1772
3348
+ msgid "Don&#8217;t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack."
3349
+ msgstr "Morate biti prijavljeni na vaš WordPress blog prilikom autorizacije Jetpacka."
3350
+
3351
+ #: jetpack.php:1776
3352
+ msgid "Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one."
3353
+ msgstr "Vrati pošiljaocu. Izgleda da se dobili pogrešan Jetpack u emailu; izvršite deaktivaciju i ponovnu aktivaciju Jetpack plugina da biste dobili novi email."
3354
+
3355
+ #: jetpack.php:1779
3356
+ msgid "Wrong size. Hm&#8230; it seems your Jetpack doesn&#8217;t quite fit. Have you lost weight? Click &#8220;Connect to WordPress.com&#8221; again to get your Jetpack adjusted."
3357
+ msgstr "Neispravna veličina. Izgleda da se Jetpack se može ispravno uklopiti. Kliknite ponovo na &#8220;Poveži se na WordPress.com&#8221; za prilagođavanje vašeg Jetpacka."
3358
+
3359
+ #: jetpack.php:1783
3360
+ msgid "Your website needs to be publicly accessible to use Jetpack: %s"
3361
+ msgstr "Vaša stranica mora biti javno dostupna da bi mogla koristiti Jetpack: %s"
3362
+
3363
+ #: jetpack.php:1788
3364
+ msgid "%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3365
+ msgstr "%s nije mogao biti aktiviran zbog toga što je prouzrokovao <strong>fatalnu grešku</strong>. Možda postoji konflikt sa drugim instaliranim pluginima?"
3366
+
3367
+ #: jetpack.php:1790
3368
+ msgid "Do you still have the %s plugin installed?"
3369
+ msgstr "Da li još imate instaliran plugin %s?"
3370
+
3371
+ #: jetpack.php:1793
3372
+ msgid "Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3373
+ msgstr "Modul nije mogao biti aktiviran zbog toga što je prouzrokovao <strong>fatalnu grešku</strong>. Možda postoji konflikt sa drugim instaliranim pluginima?"
3374
+
3375
+ #: jetpack.php:1801
3376
+ msgid "<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost)."
3377
+ msgstr "<strong>Vaš Jetpack ima problem.</strong> Povezivanje ove stranice sa WordPress.com stranicom nije moguće. Ovo obično znači da vaša stranica nije javno dostupna (localhost)."
3378
+
3379
+ #: jetpack.php:1807
3380
+ msgid "WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later."
3381
+ msgstr "WordPress.com trenutno ima neke probleme i nije u mogućnosti da aktivira vaš Jetpack. Molimo vas da pokušate kasnije."
3382
+
3383
+ #: jetpack.php:1811
3384
+ msgid "Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host."
3385
+ msgstr "Jetpack nije mogao kontaktirati WordPress.com: %s. Ovo je obično uzrokovano neispravnim postavkama vašeg web hostinga."
3386
+
3387
+ #: jetpack.php:1851
3388
+ msgid "<strong>Your Jetpack has a glitch.</strong> Something went wrong that&#8217;s never supposed to happen. Guess you&#8217;re just lucky: %s"
3389
+ msgstr "<strong>Vaš Jetpack ima problem.</strong> Desilo se nešto što se ne bi trebalo dešavati. Izgleda da se jednostavno sretni: %s"
3390
+
3391
+ #: jetpack.php:1854
3392
+ msgid "Try connecting again."
3393
+ msgstr "Pokušajte se konektovati sada."
3394
+
3395
+ #: jetpack.php:1878
3396
+ msgid "Welcome to <strong>Jetpack %s</strong>!"
3397
+ msgstr "Dobro došli u <strong>Jetpack %s</strong>!"
3398
+
3399
+ #: jetpack.php:1890
3400
+ msgid "The following new modules have been activated: %l."
3401
+ msgstr "Aktivirani su sljedeći novi moduli: %l."
3402
+
3403
+ #: jetpack.php:1902
3404
+ msgid "The following modules have been updated: %l."
3405
+ msgstr "Sljedeći moduli su ažurirani: %l."
3406
+
3407
+ #: jetpack.php:1911
3408
+ msgid "<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card."
3409
+ msgstr "<strong>%s aktiviran!</strong> Možete ga deaktivirati bilo kada klikom na Saznaj više a potom na modul za deaktivaciju."
3410
+
3411
+ #: jetpack.php:1937
3412
+ msgctxt "%l = list of Jetpack module/feature names"
3413
+ msgid "<strong>%l Deactivated!</strong> You can activate it again at any time using the activate button on the module card."
3414
+ msgid_plural "<strong>%l Deactivated!</strong> You can activate them again at any time using the activate buttons on their module cards."
3415
+ msgstr[0] ""
3416
+ msgstr[1] ""
3417
+ msgstr[2] ""
3418
+
3419
+ #: jetpack.php:1949
3420
+ msgid "<strong>Module settings were saved.</strong> "
3421
+ msgstr "<strong>Opcije modula su sačuvane.</strong> "
3422
+
3423
+ #: jetpack.php:1953
3424
+ msgid "<strong>Your Jetpack is already connected.</strong> "
3425
+ msgstr "<strong>Vaš Jetpack je već povezan.</strong> "
3426
+
3427
+ #: jetpack.php:1957 jetpack.php:1964
3428
+ msgid "<strong>You&#8217;re fueled up and ready to go.</strong> "
3429
+ msgstr "<strong>Sve je spremno. Možete započeti sa radom.</strong> "
3430
+
3431
+ #: jetpack.php:1959
3432
+ msgid "The features below are now active. Click the learn more buttons to explore each feature."
3433
+ msgstr "Mogućnosti ispod su sada aktivirane. Kliknite na dugme Saznaj više za pregled svake od mogućnosti."
3434
+
3435
+ #: jetpack.php:1970
3436
+ msgid "<strong>You have unlinked your account (%s) from WordPress.com.</strong>"
3437
+ msgstr ""
3438
+
3439
+ #: jetpack.php:1992
3440
+ msgid "Jetpack contains the most recent version of the old %l plugin."
3441
+ msgid_plural "Jetpack contains the most recent versions of the old %l plugins."
3442
+ msgstr[0] "Jetpack ima najnoviju verziju %l starog plugina."
3443
+ msgstr[1] "Jetpack ima najnoviju verziju %l stara plugina."
3444
+ msgstr[2] "Jetpack ima najnoviju verziju %l starih plugina."
3445
+
3446
+ #: jetpack.php:2001
3447
+ msgid "The old version has been deactivated and can be removed from your site."
3448
+ msgid_plural "The old versions have been deactivated and can be removed from your site."
3449
+ msgstr[0] "Stare verzije su deaktivirane i mogu biti uklonjene sa stranice."
3450
+ msgstr[1] "Stare verzije su deaktivirane i mogu biti uklonjene sa stranice."
3451
+ msgstr[2] "Stare verzije su deaktivirane i mogu biti uklonjene sa stranice."
3452
+
3453
+ #: jetpack.php:2067
3454
+ msgid "Is this site private?"
3455
+ msgstr "Je li ova stranica privatna?"
3456
+
3457
+ #: jetpack.php:2070
3458
+ msgctxt "%l = list of Jetpack module/feature names"
3459
+ msgid "Like your site's RSS feeds, %l allows access to your posts and other content to third parties."
3460
+ msgid_plural "Like your site's RSS feeds, %l allow access to your posts and other content to third parties."
3461
+ msgstr[0] ""
3462
+ msgstr[1] ""
3463
+ msgstr[2] ""
3464
+
3465
+ #: jetpack.php:2083
3466
+ msgctxt "%1$s = deactivation URL, %2$s = \"Deactivate {list of Jetpack module/feature names}"
3467
+ msgid "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating this feature</a>."
3468
+ msgid_plural "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating these features</a>."
3469
+ msgstr[0] ""
3470
+ msgstr[1] ""
3471
+ msgstr[2] ""
3472
+
3473
+ #: jetpack.php:2097
3474
+ msgctxt "%l = list of Jetpack module/feature names"
3475
+ msgid "Deactivate %l"
3476
+ msgstr "Deaktiviraj %l"
3477
+
3478
+ #: jetpack.php:2228
3479
+ msgid "Connected to WordPress.com"
3480
+ msgstr "Konektovan na WordPress.com"
3481
+
3482
+ #: jetpack.php:2228
3483
+ msgid "Disconnect from WordPress.com"
3484
+ msgstr "Diskonektuj se sa WordPress.com"
3485
+
3486
+ #: class.json-api-endpoints.php:1113
3487
+ msgid "This post is password protected."
3488
+ msgstr "Ovaj članak je zaštićen šifrom."
3489
+
3490
+ #: class.json-api-endpoints.php:2633
3491
+ msgid "Comment cache problem?"
3492
+ msgstr ""
languages/jetpack-ca.mo ADDED
Binary file
languages/jetpack-ca.po ADDED
@@ -0,0 +1,3043 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of 1.8 in Catalan
2
+ # This file is distributed under the same license as the 1.8 package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2012-09-27 14:25:52+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: 1.8\n"
12
+
13
+ #: jetpack.php:2597
14
+ msgid "Jetpack Plugin Version"
15
+ msgstr ""
16
+
17
+ #: jetpack.php:2603
18
+ msgid "The Client ID/WP.com Blog ID of this site"
19
+ msgstr ""
20
+
21
+ #: jetpack.php:1031
22
+ msgid "Jetpack requires WordPress version %s or later."
23
+ msgstr "El JetPack requereix la versió %s del WordPress o superior."
24
+
25
+ #: jetpack.php:1224 jetpack.php:1240
26
+ msgid "Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin."
27
+ msgstr "El JetPack conté la versió més recent de l'antiga extensió &#8220;%1$s&#8221;."
28
+
29
+ #: jetpack.php:1261
30
+ msgid "One New Jetpack Module"
31
+ msgid_plural "%s New Jetpack Modules"
32
+ msgstr[0] "Un mòdul nou del Jetpack"
33
+ msgstr[1] "%s mòduls nous del Jetpack"
34
+
35
+ #: jetpack.php:1264
36
+ msgid "Jetpack"
37
+ msgstr "Jetpack"
38
+
39
+ #: jetpack.php:1296 jetpack.php:1320 jetpack.php:1330 jetpack.php:1987
40
+ #: jetpack.php:2166
41
+ msgid "Jetpack by WordPress.com"
42
+ msgstr "El Jetpack gràcies a WordPress.com"
43
+
44
+ #: jetpack.php:1297 jetpack.php:1321 jetpack.php:1990
45
+ msgid "Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com."
46
+ msgstr "El JetPack recarrega el vostre lloc web fet amb el WordPress amb el poder meravellós del núvol de WordPress.com"
47
+
48
+ #: jetpack.php:1298 jetpack.php:1322
49
+ msgid "On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed."
50
+ msgstr "En aquesta pàgina, podeu veure els mòduls disponibles al JetPack, aprendre més sobre ells, i activar i desactivar-los quan ho necessiteu."
51
+
52
+ #: jetpack.php:1299
53
+ msgid "Jetpack Module Options"
54
+ msgstr "Opcions del mòdul JetPack"
55
+
56
+ #: jetpack.php:1300
57
+ msgid "<strong>To Activate/Deactivate a Module</strong> - Click on Learn More. An Activate or Deactivate button will now appear next to the Learn More button. Click the Activate/Deactivate button."
58
+ msgstr "<strong>Per activar/desactivar un mòdul</strong> - Feu clic a Aprèn més. Un botó Activa o Desactiva apareixerà ara prop del botó Aprèn més. Feu clic al botó Activa/Desactiva."
59
+
60
+ #: jetpack.php:1301 jetpack.php:1342
61
+ msgid "For more information:"
62
+ msgstr "Per a més informació:"
63
+
64
+ #: jetpack.php:1302 jetpack.php:1343
65
+ msgid "Jetpack FAQ"
66
+ msgstr "PMF del JetPack"
67
+
68
+ #: jetpack.php:1303 jetpack.php:1344
69
+ msgid "Jetpack Support"
70
+ msgstr "Suport del Jetpack"
71
+
72
+ #: jetpack.php:1318
73
+ msgid "Overview"
74
+ msgstr "Resum"
75
+
76
+ #: jetpack.php:1328
77
+ msgid "Modules"
78
+ msgstr "Mòduls"
79
+
80
+ #: jetpack.php:1331
81
+ msgid "You can activate or deactivate individual Jetpack modules to suit your needs."
82
+ msgstr "Podeu activar i desactivar els mòduls del Jetpack de manera individual per adaptar-lo a les vostres necessitats."
83
+
84
+ #: jetpack.php:1333
85
+ msgid "Find the component you want to manage"
86
+ msgstr "Troba el component que vols gestionar"
87
+
88
+ #: jetpack.php:1334
89
+ msgid "Click on Learn More"
90
+ msgstr "Fes clic a Aprèn més"
91
+
92
+ #: jetpack.php:1335
93
+ msgid "An Activate or Deactivate button will appear"
94
+ msgstr "Pot aparèixer un botó per activar o desactivar"
95
+
96
+ #: jetpack.php:1336
97
+ msgid "If additional settings are available, a link to them will appear"
98
+ msgstr "Si hi ha paràmetres addicionals, apareixerà un enllaç a ells"
99
+
100
+ #: jetpack.php:1413 modules/sharedaddy/sharedaddy.php:74
101
+ #: modules/sharedaddy/sharedaddy.php:81
102
+ msgid "Settings"
103
+ msgstr "Opcions"
104
+
105
+ #: jetpack.php:1430
106
+ msgid "Dismiss this notice and deactivate Jetpack."
107
+ msgstr "Rebutja aquest avís i desactiva el Jetpack."
108
+
109
+ #: jetpack.php:1436
110
+ msgid "<strong>Your Jetpack is almost ready</strong> &#8211; A connection to WordPress.com is needed to enable features like Comments, Stats, Contact Forms, and Subscriptions. Connect now to get fueled up!"
111
+ msgstr "<strong>El Jetpack quasi està llest</strong> &#8211; Cal una connexió a WordPress.com per activar les funcionalitats com ara comentaris, estadístiques, formularis de contacte i subscripcions. Connecta ara i prem l'accelerador!"
112
+
113
+ #: jetpack.php:1438
114
+ msgid "<strong>Jetpack is installed</strong> and ready to bring awesome, WordPress.com cloud-powered features to your site."
115
+ msgstr "<strong>S'ha instal·lat el JetPack</strong> i està llest per donar-vos magnífiques característiques del núvol del WordPress al vostre lloc web."
116
+
117
+ #: jetpack.php:1444 jetpack.php:2018
118
+ msgid "Connect to WordPress.com"
119
+ msgstr "Connectat amb WordPress.com"
120
+
121
+ #: jetpack.php:1446 modules/module-info.php:45 modules/module-info.php:81
122
+ #: modules/module-info.php:138 modules/module-info.php:173
123
+ #: modules/module-info.php:207 modules/module-info.php:243
124
+ #: modules/module-info.php:294 modules/module-info.php:316
125
+ #: modules/module-info.php:354 modules/module-info.php:379
126
+ #: modules/module-info.php:397 modules/module-info.php:403
127
+ #: modules/module-info.php:430 modules/module-info.php:461
128
+ #: modules/module-info.php:496 modules/module-info.php:518
129
+ msgid "Learn More"
130
+ msgstr "Apreneu més"
131
+
132
+ #: jetpack.php:1459
133
+ msgid "<strong>Jetpack is activated!</strong> Each site on your network must be connected individually by an admin on that site."
134
+ msgstr "<strong>S'ha activat el JetPack!</strong> Cada lloc web de la xarxa ha d'estar connectat individualment per un administrador d'aquest lloc web."
135
+
136
+ #: jetpack.php:1486
137
+ msgid "Jetpack now includes Jetpack Comments, which enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site. To activate Jetpack Comments, <a href=\"%s\">%s</a>."
138
+ msgstr "El Jetpack ara inclou els comentaris Jetpack, que possibilita als vostres visitants l'ús del seus comptes del WordPress, Twitter o Facebook quan comenten a la pàgina web. Per activar els comentaris Jetpack, <a href=\"%s\">%s</a>."
139
+
140
+ #: jetpack.php:1494
141
+ msgid "click here"
142
+ msgstr "feu clic aquí"
143
+
144
+ #: jetpack.php:1608
145
+ msgid "You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features."
146
+ msgstr "Necessiteu autoritzar la connexió del JetPack entre la vostra web i WordPress.com per activar les meravelloses funcionalitats."
147
+
148
+ #: jetpack.php:1611
149
+ msgid "Don&#8217;t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack."
150
+ msgstr "No feu això! Necessiteu estar identificats al vostre bloc del WordPress mentre s'autoritza el JetPack."
151
+
152
+ #: jetpack.php:1615
153
+ msgid "Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one."
154
+ msgstr "Torna al remitent. Buff! Sembla que teniu el JetPack incorrecte al correu; desactiveu-lo i aleshores torneu a activar l'extensió del JetPack per aconseguir altre."
155
+
156
+ #: jetpack.php:1618
157
+ msgid "Wrong size. Hm&#8230; it seems your Jetpack doesn&#8217;t quite fit. Have you lost weight? Click &#8220;Connect to WordPress.com&#8221; again to get your Jetpack adjusted."
158
+ msgstr "Grandària incorrecta. Hm&#8230; sembla que el JetPack no s'acaba d'ajustar. Has perdut pes? feu clic de nou a &#8220;Connecta amb WordsPress.com&#8221; per aconseguir que el JetPack s'ajusti."
159
+
160
+ #: jetpack.php:1622
161
+ msgid "Your website needs to be publicly accessible to use Jetpack: %s"
162
+ msgstr "La pàgina web necessita ser accessible públicament per fer servir el JetPack: %s"
163
+
164
+ #: jetpack.php:1627
165
+ msgid "%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
166
+ msgstr "%s no es pot activar perquè s'ha llançat un <strong>error fatal</strong>. Potser hi ha algun conflicte amb alguna extensió que heu instal·lat?"
167
+
168
+ #: jetpack.php:1629
169
+ msgid "Do you still have the %s plugin installed?"
170
+ msgstr "Encara teniu l'extensió %s instal·lada?"
171
+
172
+ #: jetpack.php:1632
173
+ msgid "Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
174
+ msgstr "El mòdul no es pot activar perquè a llançat un <strong>error fatal</strong>. Potser hi ha un conflicte amb altra extensió que teniu instal·lada?"
175
+
176
+ #: jetpack.php:1640
177
+ msgid "<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost)."
178
+ msgstr "<strong>El JetPack té un problema tècnic.</strong> La connexió d'aquest lloc amb WordPress.com no és possible. Això significa normalment que el vostre lloc no és accessible públicament (localhost)."
179
+
180
+ #: jetpack.php:1646
181
+ msgid "WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later."
182
+ msgstr "WordPress.com està tenint problemes ara mateix i no pot donar-li canya al teu JetPack. Torneu-ho a provar més tard."
183
+
184
+ #: jetpack.php:1650
185
+ msgid "Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host."
186
+ msgstr "El JetPack no ha pogut contactar amb WordPress.com: %s. Això normalment significa que alguna cosa està mal configurada al vostre servidor web."
187
+
188
+ #: jetpack.php:1690
189
+ msgid "<strong>Your Jetpack has a glitch.</strong> Something went wrong that&#8217;s never supposed to happen. Guess you&#8217;re just lucky: %s"
190
+ msgstr "<strong>El JetPack té un problema tècnic.</strong> Alguna cosa que no hauria d'haver succeït, ha anat malament. Suposem que teniu sort: %s"
191
+
192
+ #: jetpack.php:1693
193
+ msgid "Try connecting again."
194
+ msgstr "Proveu a connectar-vos de nou."
195
+
196
+ #: jetpack.php:1717
197
+ msgid "Welcome to <strong>Jetpack %s</strong>!"
198
+ msgstr "Benvingut al <strong>Jetpack %s</strong>!"
199
+
200
+ #: jetpack.php:1729
201
+ msgid "The following new modules have been activated: %l."
202
+ msgstr "S'han activat els següents mòduls: %l."
203
+
204
+ #: jetpack.php:1741
205
+ msgid "The following modules have been updated: %l."
206
+ msgstr "S'han actualitzat els mòduls següents: %l."
207
+
208
+ #: jetpack.php:1750
209
+ msgid "<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card."
210
+ msgstr "<strong>S'ha activar %s!</strong> Podeu desactivar-lo en qualsevol moment en fer clic a Aprèn més i aleshores desactivar la tarja del mòdul."
211
+
212
+ #: jetpack.php:1757
213
+ msgid "<strong>%s Deactivated!</strong> You can activate it again at any time using the activate button on the module card."
214
+ msgstr "<strong>Desactivat %s!</strong> Podeu activar-lo de nou en qualsevol moment fent servir el botó d'activació a la targeta del mòdul."
215
+
216
+ #: jetpack.php:1763
217
+ msgid "<strong>Module settings were saved.</strong> "
218
+ msgstr "<strong>S'ha desat la configuració del mòdul</strong> "
219
+
220
+ #: jetpack.php:1767
221
+ msgid "<strong>Your Jetpack is already connected.</strong> "
222
+ msgstr "<strong>El JetPack ja està connectat.</strong> "
223
+
224
+ #: jetpack.php:1771 jetpack.php:1778
225
+ msgid "<strong>You&#8217;re fueled up and ready to go.</strong> "
226
+ msgstr "<strong>Està llest i preparat per menjar-te el món.</strong> "
227
+
228
+ #: jetpack.php:1773
229
+ msgid "The features below are now active. Click the learn more buttons to explore each feature."
230
+ msgstr "Les funcionalitats d'aquí sota estan actives ara. Feu clic als botons aprèn més per explorar cada funcionalitat."
231
+
232
+ #: jetpack.php:1784
233
+ msgid "<strong>You have unlinked your account (%s) from WordPress.com.</strong>"
234
+ msgstr ""
235
+
236
+ #: jetpack.php:1806
237
+ msgid "Jetpack contains the most recent version of the old %l plugin."
238
+ msgid_plural "Jetpack contains the most recent versions of the old %l plugins."
239
+ msgstr[0] "El JetPack conté la versió més recent de l'antiga extensió %l."
240
+ msgstr[1] "El JetPack conté les versions més recent de les antigues extensions %l."
241
+
242
+ #: jetpack.php:1815
243
+ msgid "The old version has been deactivated and can be removed from your site."
244
+ msgid_plural "The old versions have been deactivated and can be removed from your site."
245
+ msgstr[0] "La versió antiga s'ha desactivat i es pot suprimir del lloc web."
246
+ msgstr[1] "Les versions antigues s'han desactivat i es poden suprimir del lloc web."
247
+
248
+ #: jetpack.php:1978
249
+ msgid "Connected to WordPress.com"
250
+ msgstr "Connectat amb WordPress.com"
251
+
252
+ #: jetpack.php:1978
253
+ msgid "Disconnect from WordPress.com"
254
+ msgstr "Desconnectat de WordPress.com"
255
+
256
+ #: jetpack.php:1982
257
+ msgid "User linked to WordPress.com"
258
+ msgstr ""
259
+
260
+ #: jetpack.php:1982
261
+ msgid "Unlink user from WordPress.com"
262
+ msgstr ""
263
+
264
+ #: jetpack.php:1998
265
+ msgid "Jetpack is network activated and notices can not be dismissed."
266
+ msgstr "El Jetpack té activada la xarxa i els avisos no es poden rebutjar."
267
+
268
+ #: jetpack.php:2009
269
+ msgid "Dismiss this notice."
270
+ msgstr "Rebutja aquest avís"
271
+
272
+ #: jetpack.php:2014
273
+ msgid "To enable all of the Jetpack features you&#8217;ll need to connect your website to WordPress.com using the button to the right. Once you&#8217;ve made the connection you&#8217;ll activate all the delightful features below."
274
+ msgstr "Per activar totes les funcions del JetPack necessiteu connectar la vostra pàgina web amb WordPress.com fent servir el botó de la dreta. Una vegada establiu la connexió, s'activaran totes les encantadores funcionalitats d'aquí sota."
275
+
276
+ #: jetpack.php:2029
277
+ msgid "To enable all of the Jetpack features you&#8217;ll need to link your account here to your WordPress.com account using the button to the right."
278
+ msgstr ""
279
+
280
+ #: jetpack.php:2033
281
+ msgid "Link accounts with WordPress.com"
282
+ msgstr ""
283
+
284
+ #: jetpack.php:2055
285
+ msgid "Have feedback on Jetpack?"
286
+ msgstr "Vols opinions sobre el JetPack?"
287
+
288
+ #: jetpack.php:2057
289
+ msgid "Answer a short survey to let us know how we&#8217;re doing and what to add in the future."
290
+ msgstr "Respon una enquesta curta per fer-nos saber què estem fent i què afegir en un futur."
291
+
292
+ #: jetpack.php:2060
293
+ msgid "Take Survey"
294
+ msgstr "Fes la enquesta"
295
+
296
+ #: jetpack.php:2066
297
+ msgid "Checking email updates status&hellip;"
298
+ msgstr "S'estan comprovant l'estat de les actualitzacions per correu electrònic&hellip;"
299
+
300
+ #: jetpack.php:2072
301
+ msgctxt "%s = Unsubscribe link"
302
+ msgid "You are currently subscribed to email updates. %s"
303
+ msgstr "Ara mateix esteu subscrit a les actualitzacions per correu electrònic. %s"
304
+
305
+ #: jetpack.php:2073
306
+ msgid "Unsubscribe"
307
+ msgstr "Dóna'm de baixa "
308
+
309
+ #: jetpack.php:2077
310
+ msgctxt "%s = Subscribe link"
311
+ msgid "Want to receive updates about Jetpack by email? %s"
312
+ msgstr "Voleu rebre actualitzacions del Jetpack per correu electrònic? %s"
313
+
314
+ #: jetpack.php:2078 modules/subscriptions.php:664
315
+ msgid "Subscribe"
316
+ msgstr "Subscriure's"
317
+
318
+ #: jetpack.php:2085
319
+ msgid "You have been subscribed to receive email updates."
320
+ msgstr "Us haveu subscrit per rebre actualitzacions per correu electrònic."
321
+
322
+ #: jetpack.php:2087
323
+ msgid "You will no longer receive email updates about Jetpack."
324
+ msgstr "No rebreu més actualitzacions per correu electrònic sobre el JetPack."
325
+
326
+ #: jetpack.php:2100
327
+ msgid "An <span>Automattic</span> Airline"
328
+ msgstr "Una línia aèria <span>Automattic</span>"
329
+
330
+ #: jetpack.php:2103
331
+ msgid "Privacy Policy"
332
+ msgstr "Política de privacitat"
333
+
334
+ #: jetpack.php:2104
335
+ msgid "Terms of Service"
336
+ msgstr "Condicions de Servei"
337
+
338
+ #: jetpack.php:2105
339
+ msgid "Debug"
340
+ msgstr "Depura"
341
+
342
+ #: jetpack.php:2106 modules/sharedaddy/sharedaddy.php:82
343
+ msgid "Support"
344
+ msgstr "Suport"
345
+
346
+ #: jetpack.php:2124
347
+ msgid "This is sensitive information. Please do not post your BLOG_TOKEN or USER_TOKEN publicly; they are like passwords."
348
+ msgstr "Açò és informació sensible. No feu públic el BLOG_TOKEN o el USER_TOKEN; són com contrasenyes. "
349
+
350
+ #: jetpack.php:2167
351
+ msgid "Configure %s"
352
+ msgstr "Configura %s"
353
+
354
+ #: jetpack.php:2226
355
+ msgid "Deactivate"
356
+ msgstr "Desactiva"
357
+
358
+ #: jetpack.php:2236
359
+ msgid "Activate"
360
+ msgstr "Activa"
361
+
362
+ #: jetpack.php:2253
363
+ msgid "Free"
364
+ msgstr "Gratuït "
365
+
366
+ #: jetpack.php:2253
367
+ msgid "Purchase"
368
+ msgstr "Compra"
369
+
370
+ #: jetpack.php:2261
371
+ msgid "New"
372
+ msgstr "Noves"
373
+
374
+ #: jetpack.php:2264
375
+ msgid "Updated"
376
+ msgstr "Actualitzat"
377
+
378
+ #: jetpack.php:2292
379
+ msgid "Configure"
380
+ msgstr "Configura"
381
+
382
+ #: jetpack.php:2326
383
+ msgid "Coming soon&#8230;"
384
+ msgstr "Molt aviat&#8230;"
385
+
386
+ #: jetpack.php:2479 jetpack.php:2481 jetpack.php:2483 jetpack.php:2486
387
+ #: jetpack.php:3183
388
+ msgid "Error Details: %s"
389
+ msgstr "Detalls de l'error: %s"
390
+
391
+ #: jetpack.php:3139
392
+ msgid "An administrator for this blog must set up the Jetpack connection."
393
+ msgstr "Un administrador d'aquest bloc deu configurar la connexió del JetPack."
394
+
395
+ #: jetpack.php:3144
396
+ msgid "You need to register your Jetpack before connecting it."
397
+ msgstr "Heu de registrar el Jetpack abans de connectar-lo."
398
+
399
+ #: locales.php:29
400
+ msgctxt "locales"
401
+ msgid "%1$s/%2$s"
402
+ msgstr "s%1$s/%2$s"
403
+
404
+ #: modules/after-the-deadline/atd-l10n.php:12
405
+ msgid "Spelling"
406
+ msgstr "Ortografia"
407
+
408
+ #: modules/after-the-deadline/atd-l10n.php:13
409
+ msgid "Repeated Word"
410
+ msgstr "Paraula repetida"
411
+
412
+ #: modules/after-the-deadline/atd-l10n.php:15
413
+ msgid "No suggestions"
414
+ msgstr "Cap suggeriment"
415
+
416
+ #: modules/after-the-deadline/atd-l10n.php:17
417
+ msgid "Explain..."
418
+ msgstr "Explica..."
419
+
420
+ #: modules/after-the-deadline/atd-l10n.php:18
421
+ msgid "Ignore suggestion"
422
+ msgstr "Ignora el suggeriment"
423
+
424
+ #: modules/after-the-deadline/atd-l10n.php:19
425
+ msgid "Ignore always"
426
+ msgstr "Ignora sempre"
427
+
428
+ #: modules/after-the-deadline/atd-l10n.php:20
429
+ msgid "Ignore all"
430
+ msgstr "Ignora-ho tot"
431
+
432
+ #: modules/after-the-deadline/atd-l10n.php:22
433
+ msgid "Edit Selection..."
434
+ msgstr "Edita la selecció..."
435
+
436
+ #: modules/after-the-deadline/atd-l10n.php:24
437
+ msgid "proofread"
438
+ msgstr "corregeix"
439
+
440
+ #: modules/after-the-deadline/atd-l10n.php:25
441
+ msgid "edit text"
442
+ msgstr "edita el text"
443
+
444
+ #: modules/after-the-deadline/atd-l10n.php:26
445
+ #: modules/after-the-deadline.php:224
446
+ msgid "Proofread Writing"
447
+ msgstr "Corregeix l'escriptura"
448
+
449
+ #: modules/after-the-deadline/atd-l10n.php:28
450
+ msgid "No writing errors were found."
451
+ msgstr "No s'han trobat errors d'escriptura."
452
+
453
+ #: modules/after-the-deadline/atd-l10n.php:29
454
+ msgid "There was a problem communicating with the Proofreading service. Try again in one minute."
455
+ msgstr "S'ha produït un problema en comunicar-se amb el servei de correcció. Torneu-ho a provar en un minut."
456
+
457
+ #: modules/after-the-deadline/atd-l10n.php:30
458
+ msgid "There was an error communicating with the proofreading service."
459
+ msgstr "S'ha produït un error en comunicar-se amb el servei de correcció."
460
+
461
+ #: modules/after-the-deadline/atd-l10n.php:32
462
+ msgid "Replace selection with:"
463
+ msgstr "Substitueix la selecció amb:"
464
+
465
+ #: modules/after-the-deadline/atd-l10n.php:33
466
+ msgid ""
467
+ "The proofreader has suggestions for this post. Are you sure you want to publish it?\n"
468
+ "\n"
469
+ "Press OK to publish your post, or Cancel to view the suggestions and edit your post."
470
+ msgstr ""
471
+ "El corrector té suggeriments per a aquesta entrada. Segur que voleu publicar-la?\n"
472
+ "\n"
473
+ "Premeu Sí per publicar l'entrada o Cancel·la per veure els suggeriments i editar l'entrada."
474
+
475
+ #: modules/after-the-deadline/atd-l10n.php:34
476
+ msgid ""
477
+ "The proofreader has suggestions for this post. Are you sure you want to update it?\n"
478
+ "\n"
479
+ "Press OK to update your post, or Cancel to view the suggestions and edit your post."
480
+ msgstr ""
481
+ "El corrector té suggeriments per a aquesta entrada. Segur que voleu actualitzar-la?\n"
482
+ "\n"
483
+ "Premeu Sí per actualitzar l'entrada, o Cancel·la per veure els suggeriments i editar l'entrada."
484
+
485
+ #: modules/after-the-deadline/config-options.php:48
486
+ msgid "Proofreading"
487
+ msgstr "S'està corregint"
488
+
489
+ #: modules/after-the-deadline/config-options.php:50
490
+ msgid "Automatically proofread content when:"
491
+ msgstr "Corregeix el contingut automàticament quan:"
492
+
493
+ #: modules/after-the-deadline/config-options.php:53
494
+ msgid "a post or page is first published"
495
+ msgstr "una entrada o pàgina es publica primer"
496
+
497
+ #: modules/after-the-deadline/config-options.php:55
498
+ msgid "a post or page is updated"
499
+ msgstr "s'ha actualitzat una entrada o pàgina"
500
+
501
+ #: modules/after-the-deadline/config-options.php:58
502
+ msgid "English Options"
503
+ msgstr "Opcions de l'anglès"
504
+
505
+ #: modules/after-the-deadline/config-options.php:60
506
+ msgid "Enable proofreading for the following grammar and style rules when writing posts and pages:"
507
+ msgstr "Activa la correcció per a les següents gramàtiques i regles d'estil quan s'escriguin entrades i pàgines:"
508
+
509
+ #: modules/after-the-deadline/config-options.php:63
510
+ msgid "Bias Language"
511
+ msgstr "Llengua "
512
+
513
+ #: modules/after-the-deadline/config-options.php:65
514
+ msgid "Clich&eacute;s"
515
+ msgstr "Clix&eacute;s"
516
+
517
+ #: modules/after-the-deadline/config-options.php:67
518
+ msgid "Complex Phrases"
519
+ msgstr "Frases complexes"
520
+
521
+ #: modules/after-the-deadline/config-options.php:69
522
+ msgid "Diacritical Marks"
523
+ msgstr "Signes diacrítics"
524
+
525
+ #: modules/after-the-deadline/config-options.php:71
526
+ msgid "Double Negatives"
527
+ msgstr "Doble negacions"
528
+
529
+ #: modules/after-the-deadline/config-options.php:73
530
+ msgid "Hidden Verbs"
531
+ msgstr "Verbs ocults"
532
+
533
+ #: modules/after-the-deadline/config-options.php:75
534
+ msgid "Jargon"
535
+ msgstr "Jargon"
536
+
537
+ #: modules/after-the-deadline/config-options.php:77
538
+ msgid "Passive Voice"
539
+ msgstr "Veu passiva"
540
+
541
+ #: modules/after-the-deadline/config-options.php:79
542
+ msgid "Phrases to Avoid"
543
+ msgstr "Frases a evitar"
544
+
545
+ #: modules/after-the-deadline/config-options.php:81
546
+ msgid "Redundant Phrases"
547
+ msgstr "Frases redundants"
548
+
549
+ #: modules/after-the-deadline/config-options.php:83
550
+ msgid "<a href=\"%s\">Learn more</a> about these options."
551
+ msgstr "<a href=\"%s\">Aprén més</a> sobre aquestes opcions."
552
+
553
+ #: modules/after-the-deadline/config-options.php:86
554
+ msgid "Language"
555
+ msgstr "Llengua "
556
+
557
+ #: modules/after-the-deadline/config-options.php:89
558
+ msgctxt "%1$s = http://codex.wordpress.org/Installing_WordPress_in_Your_Language, %2$s = WPLANG"
559
+ msgid "The proofreader supports English, French, German, Portuguese, and Spanish. Your <a href=\"%1$s\">%2$s</a> value is the default proofreading language."
560
+ msgstr ""
561
+
562
+ #: modules/after-the-deadline/config-options.php:95
563
+ msgid "Use automatically detected language to proofread posts and pages"
564
+ msgstr "Fes servir la detecció automàtica de l'idioma per a corregir les entrades i pàgines."
565
+
566
+ #: modules/after-the-deadline/config-unignore.php:126
567
+ msgid "Ignored Phrases"
568
+ msgstr "Frases ignorades"
569
+
570
+ #: modules/after-the-deadline/config-unignore.php:128
571
+ msgid "Identify words and phrases to ignore while proofreading your posts and pages:"
572
+ msgstr "Identifica les paraules i frases que cal ignorar quan corregiu les entrades i pàgines:"
573
+
574
+ #: modules/after-the-deadline/config-unignore.php:130
575
+ msgid "Add"
576
+ msgstr "Afegeix"
577
+
578
+ #: modules/after-the-deadline/config-unignore.php:135
579
+ msgid "Be sure to click \"Update Profile\" at the bottom of the screen to save your changes."
580
+ msgstr "Assegureu-vos que feu clic al botó \"Actualitza el perfil\" del peu de la pàgina per desar els canvis."
581
+
582
+ #: modules/carousel/jetpack-carousel.php:110
583
+ msgid "Comment"
584
+ msgstr "Comentari"
585
+
586
+ #: modules/carousel/jetpack-carousel.php:111
587
+ msgid "Post Comment"
588
+ msgstr "Envia un comentari"
589
+
590
+ #: modules/carousel/jetpack-carousel.php:112
591
+ msgid "Loading Comments..."
592
+ msgstr "S'estan carregant els comentaris..."
593
+
594
+ #: modules/carousel/jetpack-carousel.php:113
595
+ msgid "View full size <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
596
+ msgstr "Visualitza a mida completa <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
597
+
598
+ #: modules/carousel/jetpack-carousel.php:114
599
+ msgid "Please be sure to submit some text with your comment."
600
+ msgstr "Assegureu-vos d'enviar algun text amb el comentari."
601
+
602
+ #: modules/carousel/jetpack-carousel.php:115
603
+ msgid "Please provide an email address to comment."
604
+ msgstr "Proporcioneu una adreça de correu electrònic per comentar."
605
+
606
+ #: modules/carousel/jetpack-carousel.php:116
607
+ msgid "Please provide your name to comment."
608
+ msgstr "Proporcioneu el nom per comentar."
609
+
610
+ #: modules/carousel/jetpack-carousel.php:117
611
+ msgid "Sorry, but there was an error posting your comment. Please try again later."
612
+ msgstr "S'ha produït un error en publicar el comentari. Torneu a intentar-ho més tard."
613
+
614
+ #: modules/carousel/jetpack-carousel.php:118
615
+ msgid "Your comment was approved."
616
+ msgstr "El comentari s'ha aprovat."
617
+
618
+ #: modules/carousel/jetpack-carousel.php:119
619
+ msgid "Your comment is in moderation."
620
+ msgstr "El comentari està en moderació."
621
+
622
+ #: modules/carousel/jetpack-carousel.php:120
623
+ msgid "Camera"
624
+ msgstr "Càmera"
625
+
626
+ #: modules/carousel/jetpack-carousel.php:121
627
+ msgid "Aperture"
628
+ msgstr "Apertura"
629
+
630
+ #: modules/carousel/jetpack-carousel.php:122
631
+ msgid "Shutter Speed"
632
+ msgstr "Velocitat de l'obturador"
633
+
634
+ #: modules/carousel/jetpack-carousel.php:123
635
+ msgid "Focal Length"
636
+ msgstr "Longitud focal"
637
+
638
+ #: modules/carousel/jetpack-carousel.php:130
639
+ msgid "Commenting as %s"
640
+ msgstr "S'està comentant com a %s"
641
+
642
+ #: modules/carousel/jetpack-carousel.php:133
643
+ msgid "Email (Required)"
644
+ msgstr "Correu electrònic (necessari)"
645
+
646
+ #: modules/carousel/jetpack-carousel.php:135
647
+ msgid "Name (Required)"
648
+ msgstr "Nom (necessari)"
649
+
650
+ #: modules/carousel/jetpack-carousel.php:137
651
+ #: modules/contact-form/grunion-contact-form.php:36
652
+ #: modules/contact-form/grunion-form-view.php:160
653
+ msgid "Website"
654
+ msgstr "Lloc web"
655
+
656
+ #: modules/carousel/jetpack-carousel.php:246
657
+ msgid "Missing attachment ID."
658
+ msgstr "Falta l'identificador adjunt."
659
+
660
+ #: modules/carousel/jetpack-carousel.php:284
661
+ msgid "Nonce verification failed."
662
+ msgstr "No ha fallat cap verificació."
663
+
664
+ #: modules/carousel/jetpack-carousel.php:291
665
+ msgid "Missing target blog ID."
666
+ msgstr "Falta l'identificador del bloc de destí."
667
+
668
+ #: modules/carousel/jetpack-carousel.php:294
669
+ msgid "Missing target post ID."
670
+ msgstr "Falta l'identificador de l'entrada de destinació."
671
+
672
+ #: modules/carousel/jetpack-carousel.php:297
673
+ msgid "No comment text was submitted."
674
+ msgstr "No s'ha enviat text del comentari."
675
+
676
+ #: modules/carousel/jetpack-carousel.php:309
677
+ msgid "Comments on this post are closed."
678
+ msgstr "Els comentaris d'aquesta entrada estan tancats."
679
+
680
+ #: modules/carousel/jetpack-carousel.php:319
681
+ msgid "Sorry, but we could not authenticate your request."
682
+ msgstr "Ho sentim, però no podem autenticar la sol·licitud."
683
+
684
+ #: modules/carousel/jetpack-carousel.php:327
685
+ msgid "Please provide your name."
686
+ msgstr "Proporcioneu el vostre nom."
687
+
688
+ #: modules/carousel/jetpack-carousel.php:330
689
+ msgid "Please provide an email address."
690
+ msgstr "Proporcioneu una adreça de correu electrònic."
691
+
692
+ #: modules/carousel/jetpack-carousel.php:333
693
+ msgid "Please provide a valid email address."
694
+ msgstr "Proporcioneu una adreça de correu electrònic vàlid."
695
+
696
+ #: modules/carousel/jetpack-carousel.php:360
697
+ msgid "Image Gallery Carousel"
698
+ msgstr "Carrusel de la galeria d'imatges"
699
+
700
+ #: modules/carousel/jetpack-carousel.php:363
701
+ msgid "Enable carousel"
702
+ msgstr "Activar el carrusel"
703
+
704
+ #: modules/carousel/jetpack-carousel.php:367
705
+ msgid "Background color"
706
+ msgstr "Color de fons"
707
+
708
+ #: modules/carousel/jetpack-carousel.php:370
709
+ msgid "Metadata"
710
+ msgstr "Metadada"
711
+
712
+ #: modules/carousel/jetpack-carousel.php:427
713
+ msgid "Show photo metadata (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) in carousel, when available."
714
+ msgstr "Mostra metadades (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) de la foto al carrousel, quan hi hagi"
715
+
716
+ #: modules/carousel/jetpack-carousel.php:435
717
+ msgid "Show map of photo location in carousel, when available."
718
+ msgstr "Mostra el mapa de localització de la foto al carrusel, quan hi hagi"
719
+
720
+ #: modules/carousel/jetpack-carousel.php:443
721
+ msgid "Black"
722
+ msgstr "Negre"
723
+
724
+ #: modules/carousel/jetpack-carousel.php:443
725
+ msgid "White"
726
+ msgstr "Blanc"
727
+
728
+ #: modules/carousel/jetpack-carousel.php:451
729
+ msgid "Display images in full-size carousel slideshow."
730
+ msgstr "Mostra les imatges a mida completa a les diapositives del carrusel."
731
+
732
+ #: modules/comments/admin.php:50 modules/comments/comments.php:178
733
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
734
+ msgid "Leave a Reply"
735
+ msgstr "Deixa un comentari"
736
+
737
+ #: modules/comments/admin.php:54 modules/widgets/facebook-likebox.php:147
738
+ msgid "Light"
739
+ msgstr "Clar"
740
+
741
+ #: modules/comments/admin.php:55 modules/widgets/facebook-likebox.php:148
742
+ msgid "Dark"
743
+ msgstr "Obscur"
744
+
745
+ #: modules/comments/admin.php:56
746
+ msgid "Transparent"
747
+ msgstr "Transparent"
748
+
749
+ #: modules/comments/admin.php:72 modules/module-info.php:439
750
+ msgid "Jetpack Comments"
751
+ msgstr "Comentaris del Jetpack"
752
+
753
+ #: modules/comments/admin.php:81
754
+ msgid "Greeting Text"
755
+ msgstr "Text de salutació"
756
+
757
+ #: modules/comments/admin.php:97 modules/comments/admin.php:168
758
+ #: modules/widgets/facebook-likebox.php:145
759
+ msgid "Color Scheme"
760
+ msgstr "Esquema de color"
761
+
762
+ #: modules/comments/admin.php:118
763
+ msgid "Adjust your Jetpack Comments form with a clever greeting and color-scheme."
764
+ msgstr "Ajusta el formulari dels comentaris del Jetpack amb una salutació i esquema de color intel·ligents."
765
+
766
+ #: modules/comments/admin.php:134
767
+ msgid "A few catchy words to motivate your readers to comment"
768
+ msgstr "Unes poques paraules enganxoses que motivin els lectors a comentar"
769
+
770
+ #: modules/comments/base.php:84
771
+ msgid "Invalid request"
772
+ msgstr "Sol·licitud no vàlida"
773
+
774
+ #: modules/comments/base.php:231
775
+ msgid "Error: please fill the required fields (name, email)."
776
+ msgstr "Error: completeu els camps necessaris (nom, correu electrònic)."
777
+
778
+ #: modules/comments/base.php:233
779
+ msgid "Error: please enter a valid email address."
780
+ msgstr "Error: introdueix una adreça de correu electrònic vàlid."
781
+
782
+ #: modules/comments/comments.php:154
783
+ msgid "You must <a href=\"%s\">log in</a> to post a comment."
784
+ msgstr "Heu d'a href=\"%s\">entrar</a> per publicar un comentari."
785
+
786
+ #: modules/comments/comments.php:217
787
+ msgid "Cancel Reply"
788
+ msgstr "Cancel·la la resposta"
789
+
790
+ #: modules/comments/comments.php:351
791
+ msgid "Invalid security token."
792
+ msgstr "El testimoni de seguretat no és vàlid."
793
+
794
+ #: modules/comments/comments.php:411 modules/comments/comments.php:462
795
+ msgid "Submitting Comment%s"
796
+ msgstr "S'esta enviant el comentari %s"
797
+
798
+ #: modules/contact-form/admin.php:90
799
+ msgid "From"
800
+ msgstr "Des de"
801
+
802
+ #: modules/contact-form/admin.php:91
803
+ #: modules/contact-form/grunion-contact-form.php:42
804
+ msgid "Message"
805
+ msgstr "Missatge"
806
+
807
+ #: modules/contact-form/admin.php:92
808
+ msgid "Date"
809
+ msgstr "Data"
810
+
811
+ #: modules/contact-form/admin.php:162
812
+ msgid "Restore this item from the Trash"
813
+ msgstr "Restaura aquest element de la paperera"
814
+
815
+ #: modules/contact-form/admin.php:164
816
+ msgid "Restore"
817
+ msgstr "Restaura"
818
+
819
+ #: modules/contact-form/admin.php:167 modules/contact-form/admin.php:266
820
+ msgid "Delete this item permanently"
821
+ msgstr "Elimina aquest element permanentment"
822
+
823
+ #: modules/contact-form/admin.php:169 modules/contact-form/admin.php:268
824
+ msgid "Delete Permanently"
825
+ msgstr "Suprimeix definitivament"
826
+
827
+ #: modules/contact-form/admin.php:200
828
+ msgid "Mark this message as spam"
829
+ msgstr "Marca aquest missatge com a brossa"
830
+
831
+ #: modules/contact-form/admin.php:207 modules/contact-form/admin.php:209
832
+ #: modules/contact-form/admin.php:496
833
+ msgid "Trash"
834
+ msgstr "Paperera"
835
+
836
+ #: modules/contact-form/admin.php:260
837
+ msgid "Mark this message as NOT spam"
838
+ msgstr "Marca el missatge com a legítim"
839
+
840
+ #: modules/contact-form/admin.php:299
841
+ msgid "Y-m-d @ g:i:s A"
842
+ msgstr "d-m-Y a les g:i"
843
+
844
+ #: modules/contact-form/admin.php:418
845
+ msgid "You are not allowed to manage this item."
846
+ msgstr "No teniu autorització per gestionar aquest element."
847
+
848
+ #: modules/contact-form/admin.php:452
849
+ msgid "You are not allowed to move this item out of the Trash."
850
+ msgstr "No teniu autorització per treure aquest element de la paperera."
851
+
852
+ #: modules/contact-form/admin.php:455
853
+ msgid "Error in restoring from Trash."
854
+ msgstr "Error en restaurar de la paperera."
855
+
856
+ #: modules/contact-form/admin.php:459
857
+ msgid "You are not allowed to move this item to the Trash."
858
+ msgstr "No teniu permís per moure aquest element a la paperera."
859
+
860
+ #: modules/contact-form/admin.php:462
861
+ msgid "Error in moving to Trash."
862
+ msgstr "S'ha produït un error en moure a la paperera."
863
+
864
+ #: modules/contact-form/admin.php:486
865
+ msgid "Messages"
866
+ msgstr "Missatges"
867
+
868
+ #: modules/contact-form/admin.php:509
869
+ msgid "Spam"
870
+ msgstr "Correu brossa"
871
+
872
+ #: modules/contact-form/grunion-contact-form.php:34
873
+ #: modules/contact-form/grunion-form-view.php:156
874
+ msgid "Name"
875
+ msgstr "Nom"
876
+
877
+ #: modules/contact-form/grunion-contact-form.php:35
878
+ #: modules/contact-form/grunion-form-view.php:155
879
+ #: modules/sharedaddy/sharing-sources.php:196
880
+ msgid "Email"
881
+ msgstr "Correu electrònic"
882
+
883
+ #: modules/contact-form/grunion-contact-form.php:39
884
+ msgid "Subject"
885
+ msgstr "Assumpte"
886
+
887
+ #: modules/contact-form/grunion-contact-form.php:79
888
+ #: modules/contact-form/grunion-contact-form.php:84
889
+ #: modules/contact-form/grunion-contact-form.php:88
890
+ #: modules/contact-form/grunion-contact-form.php:100
891
+ #: modules/contact-form/grunion-contact-form.php:105
892
+ #: modules/contact-form/grunion-contact-form.php:119
893
+ msgid "(required)"
894
+ msgstr "(necessari)"
895
+
896
+ #: modules/contact-form/grunion-contact-form.php:99
897
+ msgid "Yes"
898
+ msgstr "Sí"
899
+
900
+ #: modules/contact-form/grunion-contact-form.php:140
901
+ msgid "%s requires a valid email address"
902
+ msgstr "%s necessita un correu electrònic vàlid"
903
+
904
+ #: modules/contact-form/grunion-contact-form.php:147
905
+ msgid "%s is required"
906
+ msgstr "Es necessita %s"
907
+
908
+ #: modules/contact-form/grunion-contact-form.php:280
909
+ #: modules/contact-form/grunion-contact-form.php:328
910
+ msgid "Error!"
911
+ msgstr "Error"
912
+
913
+ #: modules/contact-form/grunion-contact-form.php:290
914
+ msgid "Submit &#187;"
915
+ msgstr "Envia &#187;"
916
+
917
+ #: modules/contact-form/grunion-contact-form.php:333
918
+ msgid "Message Sent"
919
+ msgstr "Missatge enviat"
920
+
921
+ #: modules/contact-form/grunion-contact-form.php:469
922
+ msgid "l F j, Y \\a\\t g:i a"
923
+ msgstr "d-m-Y \\a \\l\\e\\s G:i"
924
+
925
+ #: modules/contact-form/grunion-contact-form.php:489
926
+ msgid "Time:"
927
+ msgstr "Hora:"
928
+
929
+ #: modules/contact-form/grunion-contact-form.php:490
930
+ msgid "IP Address:"
931
+ msgstr "Adreça IP:"
932
+
933
+ #: modules/contact-form/grunion-contact-form.php:491
934
+ msgid "Contact Form URL:"
935
+ msgstr "URl del formulari de contacte:"
936
+
937
+ #: modules/contact-form/grunion-contact-form.php:514
938
+ msgid "Sent by a verified %s user."
939
+ msgstr "S'ha enviat per un usuari %s verificat."
940
+
941
+ #: modules/contact-form/grunion-contact-form.php:518
942
+ msgid "Sent by an unverified visitor to your site."
943
+ msgstr "Enviat per un/a visitant no verificat a la teva web."
944
+
945
+ #: modules/contact-form/grunion-contact-form.php:681
946
+ #: modules/contact-form/grunion-form-view.php:136
947
+ msgid "Feedbacks"
948
+ msgstr "Opinions"
949
+
950
+ #: modules/contact-form/grunion-contact-form.php:682
951
+ msgid "Feedback"
952
+ msgstr "Opinions (en anglès)"
953
+
954
+ #: modules/contact-form/grunion-contact-form.php:683
955
+ msgid "Search Feedback"
956
+ msgstr "Cerca opinions"
957
+
958
+ #: modules/contact-form/grunion-contact-form.php:684
959
+ #: modules/contact-form/grunion-contact-form.php:685
960
+ msgid "No feedback found"
961
+ msgstr "No s'han trobat opinions"
962
+
963
+ #: modules/contact-form/grunion-contact-form.php:701
964
+ msgid "Spam <span class=\"count\">(%s)</span>"
965
+ msgid_plural "Spam <span class=\"count\">(%s)</span>"
966
+ msgstr[0] "Brossa <span class=\"count\">(%s)</span>"
967
+ msgstr[1] "Brosses <span class=\"count\">(%s)</span>"
968
+
969
+ #: modules/contact-form/grunion-contact-form.php:725
970
+ msgid "Add a custom form"
971
+ msgstr "Afegeix un formulari personalitzat"
972
+
973
+ #: modules/contact-form/grunion-form-view.php:8
974
+ msgctxt "Label for HTML form \"Name\" field in contact form builder"
975
+ msgid "Name"
976
+ msgstr "Nom"
977
+
978
+ #: modules/contact-form/grunion-form-view.php:9
979
+ msgctxt "Label for HTML form \"Email\" field in contact form builder"
980
+ msgid "Email"
981
+ msgstr "Correu electrònic"
982
+
983
+ #: modules/contact-form/grunion-form-view.php:10
984
+ msgctxt "Label for HTML form \"URL/Website\" field in contact form builder"
985
+ msgid "Website"
986
+ msgstr "Lloc web"
987
+
988
+ #: modules/contact-form/grunion-form-view.php:11
989
+ msgctxt "Label for HTML form \"Comment/Response\" field in contact form builder"
990
+ msgid "Comment"
991
+ msgstr "Comentari"
992
+
993
+ #: modules/contact-form/grunion-form-view.php:12
994
+ msgctxt "Default label for new HTML form field in contact form builder"
995
+ msgid "New Field"
996
+ msgstr "Camp nou"
997
+
998
+ #: modules/contact-form/grunion-form-view.php:13
999
+ msgctxt "Label for the set of options to be included in a user-created dropdown in contact form builder"
1000
+ msgid "Options"
1001
+ msgstr "Opcions"
1002
+
1003
+ #: modules/contact-form/grunion-form-view.php:14
1004
+ msgctxt "Label for an option to be included in a user-created dropdown in contact form builder"
1005
+ msgid "Option"
1006
+ msgstr "Opció"
1007
+
1008
+ #: modules/contact-form/grunion-form-view.php:15
1009
+ msgctxt "Default label for the first option to be included in a user-created dropdown in contact form builder"
1010
+ msgid "First option"
1011
+ msgstr "Primera opció"
1012
+
1013
+ #: modules/contact-form/grunion-form-view.php:16
1014
+ msgctxt "error message in contact form builder"
1015
+ msgid "Oops, there was a problem generating your form. You'll likely need to try again."
1016
+ msgstr "Buf, s'ha produït un problema en generar el formulari. Probablement haureu d'intentar-ho de nou."
1017
+
1018
+ #: modules/contact-form/grunion-form-view.php:17
1019
+ msgid ""
1020
+ "Drag up or down\n"
1021
+ "to re-arrange"
1022
+ msgstr ""
1023
+ "Arrossega i desa\n"
1024
+ "per tornar a organitzar"
1025
+
1026
+ #: modules/contact-form/grunion-form-view.php:18
1027
+ msgctxt "Label to drag HTML form fields around to change their order in contact form builder"
1028
+ msgid "move"
1029
+ msgstr "mou"
1030
+
1031
+ #: modules/contact-form/grunion-form-view.php:19
1032
+ msgctxt "Link to edit an HTML form field in contact form builder"
1033
+ msgid "edit"
1034
+ msgstr "edita"
1035
+
1036
+ #: modules/contact-form/grunion-form-view.php:20
1037
+ msgid "Saved successfully"
1038
+ msgstr "S'ha desat correctament."
1039
+
1040
+ #: modules/contact-form/grunion-form-view.php:21
1041
+ msgctxt "This HTML form field is marked as required by the user in contact form builder"
1042
+ msgid "(required)"
1043
+ msgstr "(necessari)"
1044
+
1045
+ #: modules/contact-form/grunion-form-view.php:22
1046
+ msgid "Are you sure you want to exit the form editor without saving? Any changes you have made will be lost."
1047
+ msgstr "Segur que voleu sortir de l'editor del formulari sense desar? Qualsevol canvi que hàgiu fet es perdrà."
1048
+
1049
+ #: modules/contact-form/grunion-form-view.php:30 modules/module-info.php:409
1050
+ #: modules/module-info.php:413
1051
+ msgid "Contact Form"
1052
+ msgstr "Formulari de contacte"
1053
+
1054
+ #: modules/contact-form/grunion-form-view.php:118
1055
+ msgid "Your new field was saved successfully"
1056
+ msgstr "S'ha desat correctament el camp nou"
1057
+
1058
+ #: modules/contact-form/grunion-form-view.php:120
1059
+ msgid "Form builder"
1060
+ msgstr "Constructor de formularis"
1061
+
1062
+ #: modules/contact-form/grunion-form-view.php:121
1063
+ msgid "Email notifications"
1064
+ msgstr "Notificacions per correu electrònic"
1065
+
1066
+ #: modules/contact-form/grunion-form-view.php:126
1067
+ msgid "How does this work?"
1068
+ msgstr "Com funciona açò?"
1069
+
1070
+ #: modules/contact-form/grunion-form-view.php:127
1071
+ msgid "By adding a contact form, your readers will be able to submit feedback to you. All feedback is automatically scanned for spam, and the legitimate feedback will be emailed to you."
1072
+ msgstr "En afegir un formulari de contacte, els lectors podran enviar-vos opinions. Totes les opinions s'escanegen automàticament per trobar-hi brossa, i les opinions legítimes s'us enviaran per correu electrònic.s"
1073
+
1074
+ #: modules/contact-form/grunion-form-view.php:128
1075
+ msgid "Can I add more fields?"
1076
+ msgstr "Puc afegir més camps?"
1077
+
1078
+ #: modules/contact-form/grunion-form-view.php:130
1079
+ msgctxt "%1$s = \"Click here\" in an HTML link"
1080
+ msgid "Sure thing. %1$s to add a new text box, textarea, radio, checkbox, or dropdown field."
1081
+ msgstr "Segur que sí. %1$s per afegir un caixa de text nova, una àrea de text, un botó d'opció, una casella de selecció o un desplegable."
1082
+
1083
+ #: modules/contact-form/grunion-form-view.php:131
1084
+ msgid "Click here"
1085
+ msgstr "Feu clic aquí"
1086
+
1087
+ #: modules/contact-form/grunion-form-view.php:133
1088
+ msgid "Can I view my feedback within WordPress?"
1089
+ msgstr "Puc veure la meva opinió al WordPress?"
1090
+
1091
+ #: modules/contact-form/grunion-form-view.php:135
1092
+ msgctxt "%1$s = \"Feedbacks\" in an HTML link"
1093
+ msgid "Yep, you can read your feedback at any time by clicking the \"%1$s\" link in the admin menu."
1094
+ msgstr "Sí, podeu llegir les opinions en qualsevol moment si feu clic a l'enllaç \"%1$s\" al menú de l'administrador."
1095
+
1096
+ #: modules/contact-form/grunion-form-view.php:141
1097
+ msgid "Do I need to fill this out?"
1098
+ msgstr "He d'omplir això?"
1099
+
1100
+ #: modules/contact-form/grunion-form-view.php:142
1101
+ msgid "Nope. However, if you&#8217;d like to modify where your feedback is sent, or the subject line you can. If you don&#8217;t make any changes here, feedback will be sent to the author of the page/post and the subject will be the name of this page/post."
1102
+ msgstr "No. Però si us agrada modificar on s'envien o l'assumpte de les opinions, podeu. Si no feu cap canvi aquí, les opinions s'enviaran a l'autor de la pàgina o de l'entrada i l'assumpte del missatge serà el nom de la pàgina o de l'entrada."
1103
+
1104
+ #: modules/contact-form/grunion-form-view.php:146
1105
+ msgid "Edit this new field"
1106
+ msgstr "Edita aquest camp nou"
1107
+
1108
+ #: modules/contact-form/grunion-form-view.php:148
1109
+ #: modules/sharedaddy/sharing-sources.php:972
1110
+ msgid "Label"
1111
+ msgstr "Etiqueta"
1112
+
1113
+ #: modules/contact-form/grunion-form-view.php:149
1114
+ msgid "New field"
1115
+ msgstr "Camp nou"
1116
+
1117
+ #: modules/contact-form/grunion-form-view.php:151
1118
+ msgid "Field type"
1119
+ msgstr "Tipus de camp"
1120
+
1121
+ #: modules/contact-form/grunion-form-view.php:153
1122
+ msgid "Checkbox"
1123
+ msgstr "Casella de selecció"
1124
+
1125
+ #: modules/contact-form/grunion-form-view.php:154
1126
+ msgid "Drop down"
1127
+ msgstr "Desplega"
1128
+
1129
+ #: modules/contact-form/grunion-form-view.php:157
1130
+ msgid "Radio"
1131
+ msgstr "Botó d'opció"
1132
+
1133
+ #: modules/contact-form/grunion-form-view.php:158
1134
+ msgid "Text"
1135
+ msgstr "Text"
1136
+
1137
+ #: modules/contact-form/grunion-form-view.php:159
1138
+ msgid "Textarea"
1139
+ msgstr "Àrea de text"
1140
+
1141
+ #: modules/contact-form/grunion-form-view.php:166
1142
+ msgid "Options"
1143
+ msgstr "Opcions"
1144
+
1145
+ #: modules/contact-form/grunion-form-view.php:167
1146
+ msgid "First option"
1147
+ msgstr "Primera opció"
1148
+
1149
+ #: modules/contact-form/grunion-form-view.php:170
1150
+ msgid "Add another option"
1151
+ msgstr "Afegeix altra opció"
1152
+
1153
+ #: modules/contact-form/grunion-form-view.php:177
1154
+ msgid "Required?"
1155
+ msgstr "Necessari?"
1156
+
1157
+ #: modules/contact-form/grunion-form-view.php:182
1158
+ msgid "Save this field"
1159
+ msgstr "S'ha desat aquest camp"
1160
+
1161
+ #: modules/contact-form/grunion-form-view.php:187
1162
+ msgid "Here&#8217;s what your form will look like"
1163
+ msgstr "Així és com el formulari es veurà"
1164
+
1165
+ #: modules/contact-form/grunion-form-view.php:192
1166
+ msgid "Add a new field"
1167
+ msgstr "Afegeix un camp nou"
1168
+
1169
+ #: modules/contact-form/grunion-form-view.php:194
1170
+ msgid "Add this form to my post"
1171
+ msgstr "Afegeix aquest formulari a l'entrada"
1172
+
1173
+ #: modules/contact-form/grunion-form-view.php:197
1174
+ msgid "Email settings"
1175
+ msgstr "Paràmetres del correu electrònic"
1176
+
1177
+ #: modules/contact-form/grunion-form-view.php:199
1178
+ msgid "Enter your email address"
1179
+ msgstr "Introduïu el vostre correu electrònic"
1180
+
1181
+ #: modules/contact-form/grunion-form-view.php:202
1182
+ msgid "What should the subject line be?"
1183
+ msgstr "Quina hauria de ser la línia de l'assumpte?"
1184
+
1185
+ #: modules/contact-form/grunion-form-view.php:205
1186
+ msgid "Save and go back to form builder"
1187
+ msgstr "Desa i torna al constructor de formularis"
1188
+
1189
+ #: modules/custom-css/custom-css.php:501
1190
+ msgid "Preview: changes must be saved or they will be lost"
1191
+ msgstr "Vista prèvia: els canvis s'ha de guardar o es perdran"
1192
+
1193
+ #: modules/custom-css/custom-css.php:529
1194
+ msgid "Edit CSS"
1195
+ msgstr "Editar CSS"
1196
+
1197
+ #: modules/custom-css/custom-css.php:543
1198
+ msgid "CSS"
1199
+ msgstr "CSS"
1200
+
1201
+ #: modules/custom-css/custom-css.php:582
1202
+ msgid "Custom CSS Stylesheet"
1203
+ msgstr "Fulles d'estil CSS personalitzades"
1204
+
1205
+ #: modules/custom-css/custom-css.php:742
1206
+ msgid "Stylesheet saved."
1207
+ msgstr "Full d'estil guardat."
1208
+
1209
+ #: modules/custom-css/custom-css.php:750
1210
+ msgid "CSS Stylesheet Editor"
1211
+ msgstr "Editor de les fulles d'estill CSS"
1212
+
1213
+ #: modules/custom-css/custom-css.php:751
1214
+ msgid ""
1215
+ "New to CSS? Start with a <a href=\"http://www.htmldog.com/guides/cssbeginner/\">beginner tutorial</a>. Questions?\n"
1216
+ "\tAsk in the <a href=\"http://wordpress.org/support/forum/themes-and-templates\">Themes and Templates forum</a>."
1217
+ msgstr ""
1218
+
1219
+ #: modules/custom-css/custom-css.php:771
1220
+ msgid "Preview"
1221
+ msgstr "Previsualitza"
1222
+
1223
+ #: modules/custom-css/custom-css.php:772
1224
+ msgid "Save Stylesheet &amp; Buy Upgrade"
1225
+ msgstr "Desa la fulla d'estil &amp; Compra una actualització"
1226
+
1227
+ #: modules/custom-css/custom-css.php:772
1228
+ msgid "Save Stylesheet"
1229
+ msgstr "Desa la fulla d'estil"
1230
+
1231
+ #: modules/custom-css/custom-css.php:777
1232
+ msgid "CSS Settings"
1233
+ msgstr "Configuració de CSS"
1234
+
1235
+ #: modules/custom-css/custom-css.php:784
1236
+ msgid "CSS Revisions"
1237
+ msgstr "Revisions de CSS"
1238
+
1239
+ #: modules/custom-css/custom-css.php:816
1240
+ msgid "Add my CSS to <strong>%s&apos;s</strong> CSS stylesheet."
1241
+ msgstr "Afegeix el CSS a la fulla d'estil <strong>%s</strong>"
1242
+
1243
+ #: modules/custom-css/custom-css.php:817
1244
+ msgid "Don&apos;t use <strong>%s&apos;s</strong> CSS, and replace everything with my own CSS."
1245
+ msgstr "No feu servir la fulla d'estil CSS <strong>%s</strong>, i reemplaceu tot per les meves fulles d'estil CSS."
1246
+
1247
+ #: modules/custom-css/custom-css.php:819
1248
+ msgid "<a href=\"%s\">View the original stylesheet</a> for the %s theme. Use this as a reference and do not copy and paste all of it into the CSS Editor."
1249
+ msgstr "<a href=\"%s\">Visualitza la fulla d'estil original</a> del tema %s. Utilitzeu-la com a referència i no copieu i enganxeu tot a l'editor CSS."
1250
+
1251
+ #: modules/custom-css/custom-css.php:821
1252
+ msgid "Limit width to"
1253
+ msgstr "Limita l'amplada a"
1254
+
1255
+ #: modules/custom-css/custom-css.php:821
1256
+ msgid "pixels for videos, full size images, and other shortcodes. (<a href=\"%s\">More info</a>.)"
1257
+ msgstr "píxels per als vídeos, imatges a mida completa, i altres trossos de codi. (<a href=\"%s\">Més informació</a>.)"
1258
+
1259
+ #: modules/custom-css/custom-css.php:822
1260
+ msgid "The default content width for the %s theme is %d pixels."
1261
+ msgstr "L'amplada predeterminada del contingut per al tema %s és de %d píxels."
1262
+
1263
+ #: modules/gravatar-hovercards.php:44 modules/module-info.php:57
1264
+ #: modules/module-info.php:72
1265
+ msgid "Gravatar Hovercards"
1266
+ msgstr "Logo de les targes contextuals"
1267
+
1268
+ #: modules/gravatar-hovercards.php:56
1269
+ msgid "View people's profiles when you mouse over their Gravatars"
1270
+ msgstr "Visualitza els perfils de la gent quan passeu el ratolí per sobre dels seus Gravatars."
1271
+
1272
+ #: modules/gravatar-hovercards.php:83
1273
+ msgid "Put your mouse over your Gravatar to check out your profile."
1274
+ msgstr "Passeu el ratolí per sobre del Gravatar per revisar el vostre perfil."
1275
+
1276
+ #: modules/minileven/minileven.php:90
1277
+ msgid "View Mobile Site"
1278
+ msgstr ""
1279
+
1280
+ #: modules/minileven/theme/pub/minileven/comments.php:15
1281
+ msgid "This post is password protected. Enter the password to view any comments."
1282
+ msgstr "Aquesta entrada està protegida amb contrasenya. Introduïu la contrasenya per veure'n els comentaris."
1283
+
1284
+ #: modules/minileven/theme/pub/minileven/comments.php:45
1285
+ msgid "Comment navigation"
1286
+ msgstr ""
1287
+
1288
+ #: modules/minileven/theme/pub/minileven/comments.php:46
1289
+ msgid "&larr; Older Comments"
1290
+ msgstr ""
1291
+
1292
+ #: modules/minileven/theme/pub/minileven/comments.php:47
1293
+ msgid "Newer Comments &rarr;"
1294
+ msgstr ""
1295
+
1296
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:14
1297
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:58
1298
+ #: modules/minileven/theme/pub/minileven/content.php:13
1299
+ #: modules/minileven/theme/pub/minileven/content.php:17
1300
+ msgid "Permalink to %s"
1301
+ msgstr "Enllaç permanent a %s"
1302
+
1303
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:15
1304
+ msgid "Gallery"
1305
+ msgstr "Galeria"
1306
+
1307
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:21
1308
+ #: modules/minileven/theme/pub/minileven/content.php:36
1309
+ #: modules/minileven/theme/pub/minileven/inc/tweaks.php:26
1310
+ msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
1311
+ msgstr "Continua llegint <span class=\"meta-nav\">&rarr;</span>"
1312
+
1313
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:57
1314
+ msgid "This gallery contains <a %1$s>%2$s photo</a>."
1315
+ msgid_plural "This gallery contains <a %1$s>%2$s photos</a>."
1316
+ msgstr[0] "Aquesta galeria conté <a %1$s>%2$s fotografia</a>."
1317
+ msgstr[1] "Aquesta galeria conté <a %1$s>%2$s fotografies</a>."
1318
+
1319
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:65
1320
+ #: modules/minileven/theme/pub/minileven/content.php:38
1321
+ #: modules/minileven/theme/pub/minileven/image.php:64
1322
+ #: modules/minileven/theme/pub/minileven/page.php:27
1323
+ msgid "Pages:"
1324
+ msgstr "Pàgines:"
1325
+
1326
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
1327
+ #: modules/minileven/theme/pub/minileven/content.php:46
1328
+ #: modules/minileven/theme/pub/minileven/image.php:80
1329
+ msgid "<b>1</b> Reply"
1330
+ msgstr ""
1331
+
1332
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
1333
+ #: modules/minileven/theme/pub/minileven/content.php:46
1334
+ #: modules/minileven/theme/pub/minileven/image.php:80
1335
+ msgid "<b>%</b> Replies"
1336
+ msgstr ""
1337
+
1338
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:74
1339
+ #: modules/minileven/theme/pub/minileven/content.php:48
1340
+ #: modules/minileven/theme/pub/minileven/image.php:82
1341
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:66
1342
+ #: modules/minileven/theme/pub/minileven/page.php:31
1343
+ msgid "Edit"
1344
+ msgstr "Edita"
1345
+
1346
+ #: modules/minileven/theme/pub/minileven/content.php:14
1347
+ msgid "Featured"
1348
+ msgstr "Destacades"
1349
+
1350
+ #: modules/minileven/theme/pub/minileven/content.php:23
1351
+ msgid "Posted by "
1352
+ msgstr ""
1353
+
1354
+ #: modules/minileven/theme/pub/minileven/content.php:25
1355
+ msgid "%s"
1356
+ msgstr "%s"
1357
+
1358
+ #: modules/minileven/theme/pub/minileven/content.php:46
1359
+ #: modules/minileven/theme/pub/minileven/image.php:80
1360
+ msgid "Leave a reply"
1361
+ msgstr ""
1362
+
1363
+ #: modules/minileven/theme/pub/minileven/content.php:54
1364
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:19
1365
+ msgid "Post navigation"
1366
+ msgstr ""
1367
+
1368
+ #: modules/minileven/theme/pub/minileven/content.php:55
1369
+ msgid "&laquo; Previous"
1370
+ msgstr "&laquo; Entrades anteriors"
1371
+
1372
+ #: modules/minileven/theme/pub/minileven/content.php:56
1373
+ msgid "Next &raquo;"
1374
+ msgstr "Entrades següents &raquo;"
1375
+
1376
+ #: modules/minileven/theme/pub/minileven/footer.php:22
1377
+ msgid "http://wordpress.org/"
1378
+ msgstr "http://wordpress.org/"
1379
+
1380
+ #: modules/minileven/theme/pub/minileven/footer.php:22
1381
+ msgid "Semantic Personal Publishing Platform"
1382
+ msgstr "Plataforma de publicació personal i semàntica."
1383
+
1384
+ #: modules/minileven/theme/pub/minileven/footer.php:22
1385
+ msgid "Proudly powered by %s"
1386
+ msgstr ""
1387
+
1388
+ #: modules/minileven/theme/pub/minileven/functions.php:54
1389
+ msgid "Primary Menu"
1390
+ msgstr ""
1391
+
1392
+ #: modules/minileven/theme/pub/minileven/functions.php:92
1393
+ msgid "Main Sidebar"
1394
+ msgstr "Barra lateral principal"
1395
+
1396
+ #: modules/minileven/theme/pub/minileven/header.php:32
1397
+ msgid "Page %s"
1398
+ msgstr "Pàgina %s"
1399
+
1400
+ #: modules/minileven/theme/pub/minileven/header.php:50
1401
+ msgid "Menu"
1402
+ msgstr ""
1403
+
1404
+ #: modules/minileven/theme/pub/minileven/header.php:53
1405
+ msgid "Skip to primary content"
1406
+ msgstr ""
1407
+
1408
+ #: modules/minileven/theme/pub/minileven/image.php:73
1409
+ msgid "<span class=\"entry-gallery\">&laquo; <a href=\"%1$s\" title=\"Back to %2$s\" rel=\"gallery\">Back to Gallery</a></span>"
1410
+ msgstr ""
1411
+
1412
+ #: modules/minileven/theme/pub/minileven/image.php:87
1413
+ msgid "Image navigation"
1414
+ msgstr ""
1415
+
1416
+ #: modules/minileven/theme/pub/minileven/image.php:88
1417
+ msgid "&raquo; Previous"
1418
+ msgstr ""
1419
+
1420
+ #: modules/minileven/theme/pub/minileven/image.php:89
1421
+ msgid "Next &raquo; "
1422
+ msgstr ""
1423
+
1424
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:20
1425
+ msgid "<span class=\"meta-nav\">&laquo;</span> Older"
1426
+ msgstr ""
1427
+
1428
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:21
1429
+ msgid "Newer <span class=\"meta-nav\">&raquo;</span>"
1430
+ msgstr ""
1431
+
1432
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:38
1433
+ msgid "Pingback:"
1434
+ msgstr "Retroenllaç:"
1435
+
1436
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:55
1437
+ msgid "%1$s on %2$s"
1438
+ msgstr "%1$s en %2$s"
1439
+
1440
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:61
1441
+ msgid "%1$s at %2$s"
1442
+ msgstr "%1$s a les %2$s"
1443
+
1444
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:70
1445
+ msgid "Your comment is awaiting moderation."
1446
+ msgstr "El comentari està esperant moderació."
1447
+
1448
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:79
1449
+ msgid "Reply <span>&darr;</span>"
1450
+ msgstr ""
1451
+
1452
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:93
1453
+ msgid "<span class=\"entry-date\"><a href=\"%1$s\" title=\"%2$s\" rel=\"bookmark\"><time datetime=\"%3$s\" pubdate>%4$s</time></a></span>"
1454
+ msgstr ""
1455
+
1456
+ #: modules/minileven/theme/pub/minileven/index.php:23
1457
+ msgid "Daily Archives: %s"
1458
+ msgstr "Arxius diaris: %s"
1459
+
1460
+ #: modules/minileven/theme/pub/minileven/index.php:25
1461
+ msgid "Monthly Archives: %s"
1462
+ msgstr "Arxius mensuals: %s"
1463
+
1464
+ #: modules/minileven/theme/pub/minileven/index.php:27
1465
+ msgid "Yearly Archives: %s"
1466
+ msgstr "Arxiu anual: %s"
1467
+
1468
+ #: modules/minileven/theme/pub/minileven/index.php:29
1469
+ msgid "Posted in %s"
1470
+ msgstr "Arxivat a %s"
1471
+
1472
+ #: modules/minileven/theme/pub/minileven/index.php:31
1473
+ msgid "Tagged with %s"
1474
+ msgstr ""
1475
+
1476
+ #: modules/minileven/theme/pub/minileven/index.php:33
1477
+ msgid "Posted by"
1478
+ msgstr "Publicat per"
1479
+
1480
+ #: modules/minileven/theme/pub/minileven/index.php:35
1481
+ msgid "Blog Archives"
1482
+ msgstr "Arxiu del Bloc"
1483
+
1484
+ #: modules/minileven/theme/pub/minileven/index.php:43
1485
+ msgid "Search Results for: %s"
1486
+ msgstr "Resultats de la cerca per a: %s"
1487
+
1488
+ #: modules/minileven/theme/pub/minileven/index.php:57
1489
+ msgid "Nothing Found"
1490
+ msgstr "No s'ha trobat res"
1491
+
1492
+ #: modules/minileven/theme/pub/minileven/index.php:61
1493
+ msgid "Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post."
1494
+ msgstr "No hi ha cap resultat per l'arxiu sol·licitat. Potser cercar us ajudarà a trobar una entrada relacionada."
1495
+
1496
+ #: modules/minileven/theme/pub/minileven/searchform.php:9
1497
+ #: modules/minileven/theme/pub/minileven/searchform.php:10
1498
+ #: modules/minileven/theme/pub/minileven/searchform.php:11
1499
+ msgid "Search"
1500
+ msgstr "Cerca"
1501
+
1502
+ #: modules/minileven.php:42
1503
+ msgid "Excerpts"
1504
+ msgstr ""
1505
+
1506
+ #: modules/minileven.php:46
1507
+ msgid "Enable excerpts on front page and on archive pages"
1508
+ msgstr ""
1509
+
1510
+ #: modules/minileven.php:51
1511
+ msgid "Show full posts on front page and on archive pages"
1512
+ msgstr ""
1513
+
1514
+ #: modules/minileven.php:60
1515
+ msgid "Mobile Apps"
1516
+ msgstr ""
1517
+
1518
+ #: modules/minileven.php:61
1519
+ msgid "Take WordPress with you."
1520
+ msgstr ""
1521
+
1522
+ #: modules/minileven.php:63
1523
+ msgid "We have apps for <a href=\"%s\">iOS (iPhone, iPad, iPod Touch)</a>, <a href=\"%s\">Android</a>, <a href=\"%s\">BlackBerry</a>, <a href=\"%s\">Windows Phone</a>, and <a href=\"%s\">more</a>!"
1524
+ msgstr ""
1525
+
1526
+ #: modules/module-info.php:22 modules/module-info.php:26
1527
+ msgid "VaultPress"
1528
+ msgstr "VaultPress"
1529
+
1530
+ #: modules/module-info.php:28
1531
+ msgid "Your WordPress installation is currently being protected with the world&#8217;s best security, backup, and support."
1532
+ msgstr "La instal·lació del WordPress està sent protegida actualment amb la millor seguretat del món, còpia de seguretat i suport."
1533
+
1534
+ #: modules/module-info.php:29
1535
+ msgctxt "Visit your _VaultPress_dashboard_."
1536
+ msgid "To check your backups, see any security alerts, or check your VaultPress Vitality, visit your %s."
1537
+ msgstr "Per comprovar les còpies de seguretat, veure qualsevol alerta de seguretat o comprovar la vitalitat del VaultPress, visiteu %s."
1538
+
1539
+ #: modules/module-info.php:29
1540
+ msgid "VaultPress dashboard"
1541
+ msgstr "Tauler de control del VaultPress"
1542
+
1543
+ #: modules/module-info.php:31
1544
+ msgid "With a monthly subscription, the VaultPress plugin will backup your site&#8217;s content, themes, and plugins in real-time, as well as perform regular security scans for common threats and attacks."
1545
+ msgstr "Amb una subscripció mensual, l'extensió VaultPress farà una còpia de seguretat del contingut de la web, dels temes i de les extensions en temps real, així també realitzarà escanejos de seguretat regulars per trobar les amenaces i atacs més comuns."
1546
+
1547
+ #: modules/module-info.php:32
1548
+ msgctxt "View _Plans_&_Pricing_. (VaultPress)"
1549
+ msgid "View %s."
1550
+ msgstr "Mostra %s."
1551
+
1552
+ #: modules/module-info.php:32
1553
+ msgid "Plans & Pricing"
1554
+ msgstr "Plans i preus"
1555
+
1556
+ #: modules/module-info.php:53 modules/module-info.php:68
1557
+ msgid "Gravatar Hovercard"
1558
+ msgstr "Gravatar de la tarja contextual"
1559
+
1560
+ #: modules/module-info.php:58 modules/module-info.php:73
1561
+ msgid "What&#8217;s a Hovercard?"
1562
+ msgstr "Què és una tarja contextual?"
1563
+
1564
+ #: modules/module-info.php:59
1565
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services they use on the web like Twitter, Facebook, or LinkedIn."
1566
+ msgstr "Les targes emergents milloren les imatges Gravatar amb informació sobre una persona: nom, biografia, fotos, informació de contacte, i altres serveis que fa servir en la web, com ara el Twitter, Facebook, o LinkedIn."
1567
+
1568
+ #: modules/module-info.php:60
1569
+ msgid "Hovercards offer a great way to show your internet presence and help people find your own blog."
1570
+ msgstr "Les targes emergents ofereixen una gran manera de mostrar la vostra presència a internet i ajudar a la gent a trobar el vostre bloc."
1571
+
1572
+ #: modules/module-info.php:74
1573
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services."
1574
+ msgstr "Les targes emergents potencien les imatges Gravatar planes amb information sobre una persona: nom, biografia, fotos, informació de contacte i altres serveis."
1575
+
1576
+ #: modules/module-info.php:75
1577
+ msgid "To see hovercards, look at any blog post on your blog that has comments. If the commenter has a hovercard associated with their gravatar, mouse over their image and the hovercard will appear. To turn hovercards off, click the Deactivate button above."
1578
+ msgstr "Per veure les targes emergents, cerqueu en qualsevol entrada del bloc que tingui comentaris. Si qui comenta té una tarja emergent associada amb el seu gravatar, passeu el ratolí per sobre la seva imatge i la tarja emergent apareixerà. Per tancar la tarja emergent, feu clic en el botó de desactivació de la part superior."
1579
+
1580
+ #: modules/module-info.php:90 modules/module-info.php:94
1581
+ #: modules/module-info.php:103 modules/module-info.php:107
1582
+ msgid "Shortcode Embeds"
1583
+ msgstr "Incrusta el codi"
1584
+
1585
+ #: modules/module-info.php:95 modules/module-info.php:108
1586
+ msgid "Shortcodes allow you to easily and safely embed media from other places in your site. With just one simple code, you can tell WordPress to embed YouTube, Flickr, and other media."
1587
+ msgstr "Els trossos de codi us permeten incrustar mèdia des d'altres llocs de manera fàcil i amb seguretat al vostre lloc web. Amb un simple codi, podeu dir-li al WordPress que incrusti YouTube, Flickr i altres mèdia."
1588
+
1589
+ #: modules/module-info.php:109
1590
+ msgid "Enter a shortcode directly into the Post/Page editor to embed media. For specific instructions follow the links below."
1591
+ msgstr "Introduïu un tros de codi directament a l'editor de l'entrada/pàgina per incrustar mèdia. Si voleu instruccions més específiques seguiu els enllaços següents."
1592
+
1593
+ #: modules/module-info.php:132
1594
+ msgid "Available shortcodes are: %l."
1595
+ msgstr "Els codis curts disponibles són: %l."
1596
+
1597
+ #: modules/module-info.php:147 modules/module-info.php:151
1598
+ #: modules/module-info.php:161 modules/module-info.php:165
1599
+ msgid "WP.me Shortlinks"
1600
+ msgstr "Enllaços curts de WP.me"
1601
+
1602
+ #: modules/module-info.php:152 modules/module-info.php:166
1603
+ msgid "Instead of typing or copy-pasting long URLs, you can now get a short and simple link to your posts and pages. This uses the super compact wp.me domain name, and gives you a unique URL you can use that will be safe and reliable."
1604
+ msgstr "En lloc de teclejar o copiar i pegar URLs llargues, podeu ara aconseguir un simple i curt enllaç a les vostres entrades i pàgines. Això fa servir el super compacte nom de domini wp.me, i us dona una URL única que serà segura i fiable."
1605
+
1606
+ #: modules/module-info.php:153
1607
+ msgid "It&#8217;s perfect for use on Twitter, Facebook, and cell phone text messages where every character counts."
1608
+ msgstr "És perfecte per fer servir al Twitter, Facebook i missatges de text per mòbils on cada caràcter compta."
1609
+
1610
+ #: modules/module-info.php:167
1611
+ msgid "To use shortlinks, go to any already published post (or publish something new!). A &#8220;Get Shortlink&#8221; button will be visible under the Post title. When you click it, a dialog box will appear with the shortlink and you can copy and paste to Twitter, Facebook or wherever your heart desires."
1612
+ msgstr "Per fer servir enllaços curts, aneu a qualsevol entrada publicada (o publiqueu quelcom nou!). El botó &#8220;Aconsegueix un enllaç curt&#8221; es visualitzarà a la part inferior del títol de l'entrada. Quan feu clic en ell, un quadre de diàleg apareixerà amb l'enllaç curt i podeu copiar i pegar al Twitter, al Facebook o a qualsevol lloc on vulgueu."
1613
+
1614
+ #: modules/module-info.php:182 modules/module-info.php:186
1615
+ #: modules/module-info.php:195 modules/module-info.php:199
1616
+ msgid "WordPress.com Stats"
1617
+ msgstr "Estadístiques de WordPress.com"
1618
+
1619
+ #: modules/module-info.php:187 modules/module-info.php:200
1620
+ msgid "There are many plugins and services that provide statistics, but data can be overwhelming. WordPress.com Stats makes the most popular metrics easy to understand through a clear and attractive interface."
1621
+ msgstr "Hi ha un munt d'extensions i serveis que proporcionen estadístiques, però les dades poden ser aclaparadores. Les estadístiques de WordPress.com fan que les mètriques més populars siguin fàcil d'entendre gràcies a una interfície atractiva i clara."
1622
+
1623
+ #: modules/module-info.php:201
1624
+ msgid "You can <a href=\"%s\">view your stats dashboard here</a>."
1625
+ msgstr "Podeu <a href=\"%s\">visualitzar les estadístiques del tauler aquí</a>."
1626
+
1627
+ #: modules/module-info.php:216 modules/module-info.php:231
1628
+ msgid "LaTeX"
1629
+ msgstr "LaTeX"
1630
+
1631
+ #: modules/module-info.php:221 modules/module-info.php:236
1632
+ msgid "%s is a powerful markup language for writing complex mathematical equations, formulas, etc."
1633
+ msgstr "%s és un potent llenguatge de marques per escriure complexes equacions matemàtiques, fórmules, etc."
1634
+
1635
+ #: modules/module-info.php:222
1636
+ msgid "Jetpack combines the power of %s and the simplicity of WordPress to give you the ultimate in math blogging platforms."
1637
+ msgstr "El JetPack combina el pdoer de %s i la simplicitat del WordPress per a donar-vos l'últim en plataformes de bloc matemàtiques."
1638
+
1639
+ #: modules/module-info.php:223
1640
+ msgid "Wow, that sounds nerdy."
1641
+ msgstr "Uau, això sona molt lleig."
1642
+
1643
+ #: modules/module-info.php:237
1644
+ msgid "Use <code>$latex your latex code here$</code> or <code>[latex]your latex code here[/latex]</code> to include %s in your posts and comments. There are <a href=\"%s\" target=\"_blank\">all sorts of options</a> available."
1645
+ msgstr "Useu <code>$latex el vostre codi latex aquí$</code> o <code>[latex]el vostre codi latex aquí[/latex]</code> per incloure %s en les entrades i comentaris. Hi ha disponibles <a href=\"%s\" target=\"_blank\">tot tipus d'opcions</a>."
1646
+
1647
+ #: modules/module-info.php:252 modules/module-info.php:255
1648
+ #: modules/module-info.php:276 modules/sharedaddy/sharedaddy.php:25
1649
+ #: modules/sharedaddy/sharing.php:51
1650
+ msgid "Sharing"
1651
+ msgstr "Compartint"
1652
+
1653
+ #: modules/module-info.php:256
1654
+ msgid "Share your posts with Twitter, Facebook, and a host of other services. You can configure services to appear as icons, text, or both. Some services have additional options to display smart buttons, such as Twitter, which will update the number of times the post has been shared."
1655
+ msgstr "Comparteix les entrades amb el Twitter, el Facebook, i un munt d'altres serveis. Podeu configurar els serveis perquè apareguin com a icones, text o ambdues opcions. Alguns serveis tenen opcions addicionals a mostrar-se com a botons intel·ligents, com ara el Twitter, que actualitzarà el nombre de vegades que l'entrada s'ha compartit."
1656
+
1657
+ #: modules/module-info.php:260
1658
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, Print, and Email."
1659
+ msgstr "Els següents serveis estan inclosos: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, Print, i Email."
1660
+
1661
+ #: modules/module-info.php:262
1662
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, Print, and Email."
1663
+ msgstr "Estan inclosos els següents serveis: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, Print, i Email."
1664
+
1665
+ #: modules/module-info.php:266
1666
+ msgid "Additionally you can define your own custom services."
1667
+ msgstr "De manera addicional podeu definir els vostres propis serveis."
1668
+
1669
+ #: modules/module-info.php:281
1670
+ msgid "To configure your sharing settings, go to the Settings &rarr; <a href=\"%s\">Sharing</a> menu."
1671
+ msgstr "Per configurar les opcions de compartició, aneu al menú de les opcions &rarr; <a href=\"%s\">de compartició</a>."
1672
+
1673
+ #: modules/module-info.php:282
1674
+ msgid "Drag and drop sharing services into the enabled section to have them show up on your site, and drag them into the hidden section to have them hidden behind a button."
1675
+ msgstr "Arrossega i deixa anar els serveis de compartició en la secció activa per activar-les al lloc web, i arrossega-les en les seccions ocultes per tenir-les ocultes darrere d'un botó."
1676
+
1677
+ #: modules/module-info.php:288
1678
+ msgid "Full details can be found on the <a href=\"%s\">Sharing support page</a>. This video also gives a swish run-down of how to use the Sharing feature. Watch it in HD for extra snazz!"
1679
+ msgstr "Tots els detalls es poden trobar a la <a href=\"%s\">pàgina de suport de compartició</a>. Aquest vídeo també dóna una pinzellada sobre com fer servir la característica de compartició. Mireu-lo en alta definició!"
1680
+
1681
+ #: modules/module-info.php:303 modules/module-info.php:307
1682
+ msgid "Spelling and Grammar"
1683
+ msgstr "Ortografia i gramàtica"
1684
+
1685
+ #: modules/module-info.php:309
1686
+ msgid "The <a href='%s'>After&nbsp;the&nbsp;Deadline</a> Proofreading service improves your writing by using artificial intelligence to find your errors and offer smart suggestions."
1687
+ msgstr "El servei de correcció <a href='%s'>After&nbsp;the&nbsp;Deadline</a> millora l'escriptura en fer servir intel·ligència artificial per trobar errors i oferir suggeriments intel·ligents."
1688
+
1689
+ #: modules/module-info.php:310
1690
+ msgid "After the Deadline provides a number of <a href=\"%s\">customization options</a>, which you can edit in your profile."
1691
+ msgstr "After the Deadline proporciona un nombre d'<a href=\"%s\">opcions de personalització</a>, que podeu editar al vostre perfil."
1692
+
1693
+ #: modules/module-info.php:324 modules/module-info.php:338
1694
+ msgid "Widgets Screenshot"
1695
+ msgstr "Captura dels ginys"
1696
+
1697
+ #: modules/module-info.php:327 modules/module-info.php:341
1698
+ msgid "Extra Sidebar Widgets"
1699
+ msgstr "Ginys extra de la barra lateral"
1700
+
1701
+ #: modules/module-info.php:329
1702
+ msgid "The RSS Links Widget "
1703
+ msgstr "El giny d'enllaços RSS"
1704
+
1705
+ #: modules/module-info.php:329
1706
+ msgid "allows you to add links to your blog&#8217;s post and comment RSS feeds in your sidebar. This makes it easy for your readers to stay updated when you post new content or receive new comments."
1707
+ msgstr "us permet afegir enllaços als canals RSS de les entrades i comentaris a la barra lateral. Això fa fàcil per als vostres lectors estar actualitzats quan publiqueu nou contingut o rebeu nous comentaris."
1708
+
1709
+ #: modules/module-info.php:330
1710
+ msgid "The Twitter Widget "
1711
+ msgstr "El giny del Twitter"
1712
+
1713
+ #: modules/module-info.php:330
1714
+ msgid "shows your latest tweets within a sidebar on your theme. It&#8217;s an easy way to add more activity to your site. There are also a number of customization options."
1715
+ msgstr "mostra les darreres piulades en la barra lateral del tema. És una manera senzilla d'afegir més activitat al vostre lloc web. També hi ha un munt d'opcions de personalització."
1716
+
1717
+ #: modules/module-info.php:330
1718
+ msgid "The Facebook Like Box Widget "
1719
+ msgstr "Giny M'agrada del Facebook"
1720
+
1721
+ #: modules/module-info.php:330
1722
+ msgid "shows your Facebook Like Box within a sidebar on your theme. It&#8217;s a great way to let your readers show their support."
1723
+ msgstr "mostra la caixa M'agrada del Facebook a la barra lateral del tema. És una gran forma de deixar que els vostres lectors mostrin el seu suport."
1724
+
1725
+ #: modules/module-info.php:330
1726
+ msgid "The Image Widget "
1727
+ msgstr "El giny d'imatge"
1728
+
1729
+ #: modules/module-info.php:330
1730
+ msgid "allows you to easily add images to widget areas in your theme. It&#8217;s an easy way to add more visual interest to your site."
1731
+ msgstr "us permet afegir fàcilment imatges a les àrees de ginys del tema. És una manera senzilla d'afegir interès visual a la vostra pàgina web."
1732
+
1733
+ #: modules/module-info.php:343
1734
+ msgid "The RSS Links Widget"
1735
+ msgstr "El giny d'enllaços RSS"
1736
+
1737
+ #: modules/module-info.php:343
1738
+ msgid "lets you easily add post and comment RSS feeds to a sidebar on your theme."
1739
+ msgstr "us permet afegir fàcilment canals RSS de les entrades i comentaris a una barra lateral del tema."
1740
+
1741
+ #: modules/module-info.php:344
1742
+ msgid "The Twitter Widget"
1743
+ msgstr "El giny del Twitter"
1744
+
1745
+ #: modules/module-info.php:344
1746
+ msgid "shows your latest tweets within a sidebar on your theme."
1747
+ msgstr "mostra les darreres piulades a la barra lateral del tema."
1748
+
1749
+ #: modules/module-info.php:345
1750
+ msgid "The Facebook Like Box Widget"
1751
+ msgstr "El giny de la caixa M'agrada del Facebook"
1752
+
1753
+ #: modules/module-info.php:345
1754
+ msgid "shows your Facebook Like Box within a sidebar on your theme."
1755
+ msgstr "mostra la caixa M'agrada del Facebook a la barra lateral del tema."
1756
+
1757
+ #: modules/module-info.php:346
1758
+ msgid "The Image Widget"
1759
+ msgstr "El giny d'imatge"
1760
+
1761
+ #: modules/module-info.php:346
1762
+ msgid "lets you easily add images to a sidebar on your theme."
1763
+ msgstr "us permet afegir imatges fàcilment a la barra lateral del tema."
1764
+
1765
+ #: modules/module-info.php:348
1766
+ msgid "Each of these widgets has a number of customization options."
1767
+ msgstr "Cadascun d'aquestos ginys tenen un nombre d'opcions personalitzades."
1768
+
1769
+ #: modules/module-info.php:348
1770
+ msgid "To use the widgets, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag them into one of your sidebars and configure away."
1771
+ msgstr "Per fer servir els ginys, aneu a Aparença &#8594; <a href=\"%s\">Ginys</a>. Arrossegueu-los a les barres laterals i configureu-los."
1772
+
1773
+ #: modules/module-info.php:361
1774
+ msgid "Subsriptions Screenshot"
1775
+ msgstr "Captura de subscripcions"
1776
+
1777
+ #: modules/module-info.php:364
1778
+ msgid "Subscriptions"
1779
+ msgstr "Subscripcions"
1780
+
1781
+ #: modules/module-info.php:366
1782
+ msgid "Easily allow any visitor to subscribe to all of your posts via email through a widget in your blog&#8217;s sidebar. Every time you publish a post, WordPress.com will send a notification to all your subscribers."
1783
+ msgstr "Permet fàcilment a qualsevol visitant subscriure's a totes les entrades per correu electrònic gràcies a un giny en la barra lateral del bloc. Cada vegada que publiqueu una entrada, WordPress.com enviarà una notificació a tots els vostres subscriptors."
1784
+
1785
+ #: modules/module-info.php:367
1786
+ msgid "When leaving comments, your visitors can also subscribe to a post&#8217;s comments to keep up with the conversation."
1787
+ msgstr "Quan facin comentaris, els vostres visitants poden també subscriure's als comentaris de l'entrada per a mantindre's en la conversa."
1788
+
1789
+ #: modules/module-info.php:372
1790
+ msgid "To use the Subscriptions widget, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag the widget labeled &#8220;Blog Subscriptions (Jetpack)&#8221; into one of your sidebars and configure away."
1791
+ msgstr "Per fer servir el giny de subscripcions, aneu a Aparença &#8594; <a href=\"%s\">Ginys</a>. Arrossegueu el giny etiquetat com a &#8220;Subscripcions al Bloc (Jetpack)&#8221; a una de les barres laterals i configureu-lo."
1792
+
1793
+ #: modules/module-info.php:373
1794
+ msgid "You can also make changes to your Subscription settings at the bottom of the <a href=\"%s\">Discussion Settings</a> page."
1795
+ msgstr ""
1796
+
1797
+ #: modules/module-info.php:386
1798
+ msgid "Enhanced Distribution"
1799
+ msgstr "Distribució millorada"
1800
+
1801
+ #: modules/module-info.php:388
1802
+ msgid "Jetpack will automatically take the great published content from your blog or website and share it instantly with third party services like search engines, increasing your reach and traffic."
1803
+ msgstr "El JetPack agafarà automàticament el meravellós contingut del bloc o pàgina web i el compartirà instantàniament amb serveis de tercers com ara motors de cerca, i augmentar l'abast i trànsit. "
1804
+
1805
+ #: modules/module-info.php:416
1806
+ msgid "A contact form is a great way to offer your readers the ability to get in touch, without giving out your personal email address."
1807
+ msgstr "Un formulari de contacte és una gran manera d'oferir als vostres lectors la possibilitat de contactar amb vosaltres, sense que doneu el correu electrònic."
1808
+
1809
+ #: modules/module-info.php:419
1810
+ msgid "Each contact form can easily be customized to fit your needs. When a user submits your contact form, the feedback will be filtered through <a href=\"http://akismet.com/\">Akismet</a> (if it is active on your site) to make sure it’s not spam. Any legitimate feedback will then be emailed to you, and added to your feedback management area."
1811
+ msgstr "Cada formulari de contacte es pot fàcilment adaptar a les vostres necessitats. Quan un usuari envia el formulari de contacte, l'opinió es filtrarà mitjançant l'<a href=\"http://akismet.com/\">Akismet</a> (si està activat a la pàgina web) per assegurar-nos que no és brossa. Qualsevol opinió legítima s'us enviarà per correu electrònic, i s'afegirà a l'àrea de gestió de les opinions."
1812
+
1813
+ #: modules/module-info.php:436
1814
+ msgid "Jetpack Comments Screenshot"
1815
+ msgstr "Captura de pantalla dels comentaris del Jetpack"
1816
+
1817
+ #: modules/module-info.php:441
1818
+ msgid "Jetpack Comments enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site."
1819
+ msgstr "Els comentaris del Jetpack permet als vostres visitants fer servir els seus comptes de WordPress, Twitter o Facebook per comentar a la pàgina web."
1820
+
1821
+ #: modules/module-info.php:446
1822
+ msgid "Jetpack tries to match your site's color scheme automatically, but you can make manual adjustments at the bottom of the <a href='%s'>Discussion Settings</a> page."
1823
+ msgstr "El Jetpack tracta d'ajustar l'esquema de color de la pàgina web automàticament, però podeu fer manualment els ajustos a la part inferior de la pàgina de <a href='%s'>configuració de les discussions</a>."
1824
+
1825
+ #: modules/module-info.php:467
1826
+ msgid "Gallery Carousel Screenshot"
1827
+ msgstr "Captura de pantalla del carrusel de la galeria"
1828
+
1829
+ #: modules/module-info.php:470
1830
+ msgid "Carousel"
1831
+ msgstr "Carrusel"
1832
+
1833
+ #: modules/module-info.php:472
1834
+ msgid "With Carousel active, any standard WordPress galleries you have embedded in posts or pages will launch a gorgeous full-screen photo browsing experience with comments and EXIF metadata."
1835
+ msgstr "Amb el carrusel actiu, qualsevol galeria estàndard del WordPress que incrusteu a les entrades o pàgines, llançarà una bella experiència de navegació per les fotos a pantalla completa amb comentaris i metadades EXIF."
1836
+
1837
+ #: modules/module-info.php:485 modules/module-info.php:488
1838
+ msgid "Custom CSS"
1839
+ msgstr "CSS personalitzat"
1840
+
1841
+ #: modules/module-info.php:489
1842
+ msgid "The Custom CSS editor gives you the ability to add to or replace your theme's CSS, all while supplying syntax coloring, auto-indentation, and immediate feedback on the validity of the CSS you're writing."
1843
+ msgstr "L'editor de CSS personalitzat us dóna la possibilitat d'afegir o reemplaçar els CSS del tema, alhora que subministra coloració de la sintaxi, auto indexació, i comprovació immediata de la validació del CSS mentre escriviu."
1844
+
1845
+ #: modules/module-info.php:490
1846
+ msgid "To use the CSS editor, go to Appearance &#8594; <a href=\"%s\">Edit CSS</a>."
1847
+ msgstr "Per fer servir l'editor CSS, aneu a Aparença &#8594; <a href=\"%s\">Edita el CSS</a>."
1848
+
1849
+ #: modules/module-info.php:507 modules/module-info.php:510
1850
+ msgid "Mobile Theme"
1851
+ msgstr ""
1852
+
1853
+ #: modules/module-info.php:511
1854
+ msgid "There's a good chance that visitors to your site will be using a smartphone, and it's important to provide them with a great reading experience while on the small screen."
1855
+ msgstr ""
1856
+
1857
+ #: modules/module-info.php:512
1858
+ msgid "Jetpack's mobile theme is optimized for small screens. It uses the header image, background, and widgets from your current theme for a great custom look. Post format support is included, so your photos and galleries will look fantastic on a smartphone."
1859
+ msgstr ""
1860
+
1861
+ #: modules/module-info.php:513
1862
+ msgid "Visitors on iPhone, Android, Windows Phone, and other mobile devices will automatically see the mobile theme, with the option to view the full site. You can enable or disable the mobile theme by clicking the \"Activate\" or \"Deactive\" button above."
1863
+ msgstr ""
1864
+
1865
+ #: modules/sharedaddy/sharedaddy.php:18
1866
+ msgid "Shared Post"
1867
+ msgstr "Entrada compartida"
1868
+
1869
+ #: modules/sharedaddy/sharedaddy.php:35
1870
+ msgid "Show sharing buttons."
1871
+ msgstr ""
1872
+
1873
+ #: modules/sharedaddy/sharedaddy.php:112
1874
+ msgid "Disable CSS and JS"
1875
+ msgstr "Desactiva CSS i JS"
1876
+
1877
+ #: modules/sharedaddy/sharedaddy.php:114
1878
+ msgid "Advanced. If this option is checked, you must include these files in your theme manually for the sharing links to work."
1879
+ msgstr "Avançat. Si aquesta opció està marcada, heu d'incloure aquests fitxers en el tema manualment perquè els enllaços de compartició funcionin."
1880
+
1881
+ #: modules/sharedaddy/sharing-service.php:12
1882
+ msgid "Share this:"
1883
+ msgstr "Comparteix això:"
1884
+
1885
+ #: modules/sharedaddy/sharing-service.php:523
1886
+ #: modules/sharedaddy/sharing.php:245 modules/sharedaddy/sharing.php:278
1887
+ msgid "More"
1888
+ msgstr "Més"
1889
+
1890
+ #: modules/sharedaddy/sharing-service.php:525
1891
+ msgid "Share"
1892
+ msgstr "Comparteix"
1893
+
1894
+ #: modules/sharedaddy/sharing-sources.php:238
1895
+ msgid "This post has been shared!"
1896
+ msgstr "S'ha compartit aquesta entrada!"
1897
+
1898
+ #: modules/sharedaddy/sharing-sources.php:239
1899
+ msgid "You have shared this post with %s"
1900
+ msgstr "Heu compartit l'entrada amb %s"
1901
+
1902
+ #: modules/sharedaddy/sharing-sources.php:240
1903
+ msgid "Close"
1904
+ msgstr "Tanca"
1905
+
1906
+ #: modules/sharedaddy/sharing-sources.php:262
1907
+ msgctxt "share to"
1908
+ msgid "Email"
1909
+ msgstr "Correu electrònic"
1910
+
1911
+ #: modules/sharedaddy/sharing-sources.php:262
1912
+ msgid "Click to email this to a friend"
1913
+ msgstr "Feu clic per enviar un correu electrònic a un amic"
1914
+
1915
+ #: modules/sharedaddy/sharing-sources.php:275
1916
+ msgid "Send to Email Address"
1917
+ msgstr "Enviaeu a l'adreá de correu electrònic"
1918
+
1919
+ #: modules/sharedaddy/sharing-sources.php:283
1920
+ msgid "Your Name"
1921
+ msgstr "El teu nom"
1922
+
1923
+ #: modules/sharedaddy/sharing-sources.php:286
1924
+ msgid "Your Email Address"
1925
+ msgstr "L'adreça de correu electrònic"
1926
+
1927
+ #: modules/sharedaddy/sharing-sources.php:294
1928
+ msgid "Send Email"
1929
+ msgstr "Envia el correu electrònic"
1930
+
1931
+ #: modules/sharedaddy/sharing-sources.php:295
1932
+ msgid "Cancel"
1933
+ msgstr "Cancel·la"
1934
+
1935
+ #: modules/sharedaddy/sharing-sources.php:298
1936
+ msgid "Post was not sent - check your email addresses!"
1937
+ msgstr "L'entrada no s'havia enviat, comproveu les vostres adreces electròniques!"
1938
+
1939
+ #: modules/sharedaddy/sharing-sources.php:302
1940
+ msgid "Email check failed, please try again"
1941
+ msgstr "Ha fallat la comprovació del correu electrònic, torne-ho a provar"
1942
+
1943
+ #: modules/sharedaddy/sharing-sources.php:306
1944
+ msgid "Sorry, your blog cannot share posts by email."
1945
+ msgstr "Ho sentim, el bloc no pot compartir entrades per correu."
1946
+
1947
+ #: modules/sharedaddy/sharing-sources.php:326 modules/widgets/twitter.php:22
1948
+ msgid "Twitter"
1949
+ msgstr "Twitter "
1950
+
1951
+ #: modules/sharedaddy/sharing-sources.php:372
1952
+ msgctxt "share to"
1953
+ msgid "Twitter"
1954
+ msgstr "Twitter"
1955
+
1956
+ #: modules/sharedaddy/sharing-sources.php:372
1957
+ msgid "Click to share on Twitter"
1958
+ msgstr "Feu clic per compartir al Twitter"
1959
+
1960
+ #: modules/sharedaddy/sharing-sources.php:447
1961
+ msgid "StumbleUpon"
1962
+ msgstr "StumbleUpon"
1963
+
1964
+ #: modules/sharedaddy/sharing-sources.php:458
1965
+ msgctxt "share to"
1966
+ msgid "StumbleUpon"
1967
+ msgstr "StumbleUpon"
1968
+
1969
+ #: modules/sharedaddy/sharing-sources.php:458
1970
+ msgid "Click to share on StumbleUpon"
1971
+ msgstr "Feu clic per compartir a SutmbleUpon"
1972
+
1973
+ #: modules/sharedaddy/sharing-sources.php:485
1974
+ #: modules/sharedaddy/sharing-sources.php:492
1975
+ msgid "Reddit"
1976
+ msgstr "Reddit"
1977
+
1978
+ #: modules/sharedaddy/sharing-sources.php:492
1979
+ msgid "Click to share on Reddit"
1980
+ msgstr "Fes clic per compartir al Reddit"
1981
+
1982
+ #: modules/sharedaddy/sharing-sources.php:519
1983
+ msgid "Digg"
1984
+ msgstr "Digg"
1985
+
1986
+ #: modules/sharedaddy/sharing-sources.php:528
1987
+ #: modules/sharedaddy/sharing-sources.php:531
1988
+ msgid "Click to Digg this post"
1989
+ msgstr "Fes clic per enviar l'entrada al Digg"
1990
+
1991
+ #: modules/sharedaddy/sharing-sources.php:531
1992
+ msgctxt "share to"
1993
+ msgid "Digg"
1994
+ msgstr "Digg"
1995
+
1996
+ #: modules/sharedaddy/sharing-sources.php:575
1997
+ msgid "LinkedIn"
1998
+ msgstr "LinkedIn"
1999
+
2000
+ #: modules/sharedaddy/sharing-sources.php:589
2001
+ msgctxt "share to"
2002
+ msgid "LinkedIn"
2003
+ msgstr "LinkedIn"
2004
+
2005
+ #: modules/sharedaddy/sharing-sources.php:589
2006
+ msgid "Click to share on LinkedIn"
2007
+ msgstr "Fes clic per compartir al Linkedin"
2008
+
2009
+ #: modules/sharedaddy/sharing-sources.php:655
2010
+ msgid "Facebook"
2011
+ msgstr "Facebook"
2012
+
2013
+ #: modules/sharedaddy/sharing-sources.php:730
2014
+ msgctxt "share to"
2015
+ msgid "Facebook"
2016
+ msgstr "Facebook"
2017
+
2018
+ #: modules/sharedaddy/sharing-sources.php:730
2019
+ msgid "Share on Facebook"
2020
+ msgstr "Comparteix al Facebook"
2021
+
2022
+ #: modules/sharedaddy/sharing-sources.php:761
2023
+ msgid "Print"
2024
+ msgstr "Imprimeix"
2025
+
2026
+ #: modules/sharedaddy/sharing-sources.php:765
2027
+ msgctxt "share to"
2028
+ msgid "Print"
2029
+ msgstr "Imprimeix"
2030
+
2031
+ #: modules/sharedaddy/sharing-sources.php:765
2032
+ msgid "Click to print"
2033
+ msgstr "Feu clic per imprimir"
2034
+
2035
+ #: modules/sharedaddy/sharing-sources.php:781
2036
+ msgid "Press This"
2037
+ msgstr "Premeu això"
2038
+
2039
+ #: modules/sharedaddy/sharing-sources.php:809
2040
+ msgctxt "share to"
2041
+ msgid "Press This"
2042
+ msgstr "Publica Això"
2043
+
2044
+ #: modules/sharedaddy/sharing-sources.php:809
2045
+ msgid "Click to Press This!"
2046
+ msgstr "Feu clic per publicar això!"
2047
+
2048
+ #: modules/sharedaddy/sharing-sources.php:827
2049
+ msgid "Google +1"
2050
+ msgstr "Google +1"
2051
+
2052
+ #: modules/sharedaddy/sharing-sources.php:922
2053
+ msgid "Click to share"
2054
+ msgstr "Feu clic per compartir"
2055
+
2056
+ #: modules/sharedaddy/sharing-sources.php:977
2057
+ msgid "URL"
2058
+ msgstr "URL"
2059
+
2060
+ #: modules/sharedaddy/sharing-sources.php:982
2061
+ msgid "Icon"
2062
+ msgstr "Icona"
2063
+
2064
+ #: modules/sharedaddy/sharing-sources.php:989
2065
+ msgid "Save"
2066
+ msgstr "Desa"
2067
+
2068
+ #: modules/sharedaddy/sharing-sources.php:990
2069
+ msgid "Remove Service"
2070
+ msgstr "Suprimeix el servei"
2071
+
2072
+ #: modules/sharedaddy/sharing-sources.php:1069
2073
+ msgid "Tumblr"
2074
+ msgstr "Tumblr"
2075
+
2076
+ #: modules/sharedaddy/sharing-sources.php:1076
2077
+ msgctxt "share to"
2078
+ msgid "Tumblr"
2079
+ msgstr "Tumblr"
2080
+
2081
+ #: modules/sharedaddy/sharing-sources.php:1076
2082
+ msgid "Click to share on Tumblr"
2083
+ msgstr "Feu clic per compartir a Tumblr"
2084
+
2085
+ #: modules/sharedaddy/sharing-sources.php:1111
2086
+ msgid "Pinterest"
2087
+ msgstr "Pinterest"
2088
+
2089
+ #: modules/sharedaddy/sharing-sources.php:1141
2090
+ msgid "Pin It"
2091
+ msgstr "Publica a Pinterest"
2092
+
2093
+ #: modules/sharedaddy/sharing-sources.php:1143
2094
+ msgctxt "share to"
2095
+ msgid "Pinterest"
2096
+ msgstr "Pinterest"
2097
+
2098
+ #: modules/sharedaddy/sharing-sources.php:1143
2099
+ msgid "Click to share on Pinterest"
2100
+ msgstr "Feu clic per compartir a Pinterest"
2101
+
2102
+ #: modules/sharedaddy/sharing.php:51 modules/sharedaddy/sharing.php:163
2103
+ msgid "Sharing Settings"
2104
+ msgstr "Opcions de compartició"
2105
+
2106
+ #: modules/sharedaddy/sharing.php:153
2107
+ msgid "Warning! Multibyte support missing!"
2108
+ msgstr "Atenció! S'ha perdut el suport multibyte!"
2109
+
2110
+ #: modules/sharedaddy/sharing.php:154
2111
+ msgid "This plugin will work without it, but multibyte support is used <a href=\"%s\">if available</a>. You may see minor problems with Tweets and other sharing services."
2112
+ msgstr "Aquesta extensió funcionarà sense suport per a múltiples bytes, per s'usarà <a href=\"%s\">si està disponible</a>. Potser observeu problemes menors amb les piulades i altres serveis de compartició."
2113
+
2114
+ #: modules/sharedaddy/sharing.php:158
2115
+ msgid "Settings have been saved"
2116
+ msgstr "S'ha desat la configuració"
2117
+
2118
+ #: modules/sharedaddy/sharing.php:169
2119
+ msgid "Sharing Buttons"
2120
+ msgstr "Botons per compartir"
2121
+
2122
+ #: modules/sharedaddy/sharing.php:170
2123
+ msgid "Add sharing buttons to your blog and allow your visitors to share posts with their friends."
2124
+ msgstr "Afegiu botons per compartir al bloc i permeteu que els visitants comparteixin les entrades amb els seus amics."
2125
+
2126
+ #: modules/sharedaddy/sharing.php:176
2127
+ msgid "Available Services"
2128
+ msgstr "Serveis disponibles"
2129
+
2130
+ #: modules/sharedaddy/sharing.php:177
2131
+ msgid "Drag and drop the services you'd like to enable into the box below."
2132
+ msgstr "Arrossega i deixa anar els serveis que voleu habilitar a la caixa de sota."
2133
+
2134
+ #: modules/sharedaddy/sharing.php:178
2135
+ msgid "Add a new service"
2136
+ msgstr "Afegeix un servei nou"
2137
+
2138
+ #: modules/sharedaddy/sharing.php:198
2139
+ msgid "Enabled Services"
2140
+ msgstr "Serveis actius"
2141
+
2142
+ #: modules/sharedaddy/sharing.php:201
2143
+ msgid "Services dragged here will appear individually."
2144
+ msgstr "Els serveis arrossegats aquí apareixeran individualment."
2145
+
2146
+ #: modules/sharedaddy/sharing.php:204
2147
+ msgid "Drag and drop available services here."
2148
+ msgstr "Arrossegueu i desa els serveis disponibles aquí."
2149
+
2150
+ #: modules/sharedaddy/sharing.php:215
2151
+ msgid "Services dragged here will be hidden behind a share button."
2152
+ msgstr "Els serveis arrossegats i deixats aquí, s'ocultaran darrere d'un botó de compartició."
2153
+
2154
+ #: modules/sharedaddy/sharing.php:230
2155
+ msgid "Live Preview"
2156
+ msgstr "Previsualització "
2157
+
2158
+ #: modules/sharedaddy/sharing.php:233
2159
+ msgid "Sharing is off. Add services above to enable."
2160
+ msgstr "La compartició està desactivada. Afegiu els serveis de la part superior per activar."
2161
+
2162
+ #: modules/sharedaddy/sharing.php:300
2163
+ msgid "Button style"
2164
+ msgstr "Estil del botó"
2165
+
2166
+ #: modules/sharedaddy/sharing.php:303
2167
+ msgid "Icon + text"
2168
+ msgstr "Icona + text"
2169
+
2170
+ #: modules/sharedaddy/sharing.php:304
2171
+ msgid "Icon only"
2172
+ msgstr "Només icones"
2173
+
2174
+ #: modules/sharedaddy/sharing.php:305
2175
+ msgid "Text only"
2176
+ msgstr "Només text"
2177
+
2178
+ #: modules/sharedaddy/sharing.php:306
2179
+ msgid "Official buttons"
2180
+ msgstr "Botons oficials"
2181
+
2182
+ #: modules/sharedaddy/sharing.php:311
2183
+ msgid "Sharing label"
2184
+ msgstr "Etiqueta de compartició"
2185
+
2186
+ #: modules/sharedaddy/sharing.php:317
2187
+ msgid "Open links in"
2188
+ msgstr "Obre els enllaços a"
2189
+
2190
+ #: modules/sharedaddy/sharing.php:320
2191
+ msgid "New window"
2192
+ msgstr "Finestra nova"
2193
+
2194
+ #: modules/sharedaddy/sharing.php:321
2195
+ msgid "Same window"
2196
+ msgstr "A la mateixa finestra"
2197
+
2198
+ #: modules/sharedaddy/sharing.php:326
2199
+ msgid "Show buttons on"
2200
+ msgstr "Mostra els botons"
2201
+
2202
+ #: modules/sharedaddy/sharing.php:332
2203
+ msgid "Front Page, Archive Pages, and Search Results"
2204
+ msgstr "Pàgina principal, pàgines d'arxiu, i resultats de la cerca."
2205
+
2206
+ #: modules/sharedaddy/sharing.php:348
2207
+ msgid "Save Changes"
2208
+ msgstr "Desa els canvis"
2209
+
2210
+ #: modules/sharedaddy/sharing.php:359
2211
+ msgid "Service name"
2212
+ msgstr "Nom del servei"
2213
+
2214
+ #: modules/sharedaddy/sharing.php:365
2215
+ msgid "Sharing URL"
2216
+ msgstr "S'està compartint la URL"
2217
+
2218
+ #: modules/sharedaddy/sharing.php:369
2219
+ msgid "You can add the following variables to your service sharing URL:"
2220
+ msgstr "Podeu afegir les següents variables al servei de compartició d'URL:"
2221
+
2222
+ #: modules/sharedaddy/sharing.php:374
2223
+ msgid "Icon URL"
2224
+ msgstr "URL de la icona"
2225
+
2226
+ #: modules/sharedaddy/sharing.php:377
2227
+ msgid "Enter the URL of a 16x16px icon you want to use for this service."
2228
+ msgstr "Introduïu la URL d'una icona de 16x16 píxels que voleu fer servir per aquest servei."
2229
+
2230
+ #: modules/sharedaddy/sharing.php:383
2231
+ msgid "Create Share Button"
2232
+ msgstr "Crea un botó per compartir"
2233
+
2234
+ #: modules/sharedaddy/sharing.php:395
2235
+ msgid "An error occurred creating your new sharing service - please check you gave valid details."
2236
+ msgstr "S'ha produït un error en crear el vostre nou serveu de compartició - comproveu que doneu els detalls correctes."
2237
+
2238
+ #: modules/shortcodes/archives.php:50
2239
+ msgid "Your blog does not currently have any published posts."
2240
+ msgstr "El bloc no té cap entrada publicada actualment."
2241
+
2242
+ #: modules/shortcodes/audio.php:180
2243
+ msgid "Download: <a href=\"%s\">%s</a><br />"
2244
+ msgstr "Baixa: <a href=\"%s\">%s</a><br />"
2245
+
2246
+ #: modules/shortcodes/videopress.php:608
2247
+ msgid "The VideoPress plugin could not communicate with the VideoPress servers. This error is most likely caused by a misconfigured plugin. Please reinstall or upgrade."
2248
+ msgstr "L'extensió VideoPress no es pot comunicar amb els servidors de VideoPress. Aquest error la majoria de vegades és culpa d'un error en la configuració de l'extensió. Reinstal·leu o actualitzeu."
2249
+
2250
+ #: modules/shortcodes/videopress.php:610
2251
+ msgid "<strong>%s</strong> is not an allowed embed site."
2252
+ msgstr "<strong>%s</strong> no és un lloc incrustat permès."
2253
+
2254
+ #: modules/shortcodes/videopress.php:610
2255
+ msgid "Publisher limits playback of video embeds."
2256
+ msgstr "dEl publicador limita la reproducció de vídeos incrustats."
2257
+
2258
+ #: modules/shortcodes/videopress.php:612
2259
+ msgid "No data found for VideoPress identifier: <strong>%s</strong>."
2260
+ msgstr "No s'ha trobat informació per a l'identificador del VideoPress: <strong>%s</strong>."
2261
+
2262
+ #: modules/shortcodes/videopress.php:829
2263
+ msgid "%s Error"
2264
+ msgstr "%s error"
2265
+
2266
+ #: modules/shortcodes/videopress.php:863
2267
+ msgid "This video is intended for mature audiences."
2268
+ msgstr "Aquest vídeo està destinat al públic adult."
2269
+
2270
+ #: modules/shortcodes/videopress.php:863
2271
+ msgid "Please verify your birthday."
2272
+ msgstr "Verifiqueu el vostre aniversari."
2273
+
2274
+ #: modules/shortcodes/videopress.php:879
2275
+ msgid "January"
2276
+ msgstr "gener"
2277
+
2278
+ #: modules/shortcodes/videopress.php:879
2279
+ msgid "February"
2280
+ msgstr "febrer"
2281
+
2282
+ #: modules/shortcodes/videopress.php:879
2283
+ msgid "March"
2284
+ msgstr "març"
2285
+
2286
+ #: modules/shortcodes/videopress.php:879
2287
+ msgid "April"
2288
+ msgstr "abril"
2289
+
2290
+ #: modules/shortcodes/videopress.php:879
2291
+ msgid "May"
2292
+ msgstr "maig"
2293
+
2294
+ #: modules/shortcodes/videopress.php:879
2295
+ msgid "June"
2296
+ msgstr "juny"
2297
+
2298
+ #: modules/shortcodes/videopress.php:879
2299
+ msgid "July"
2300
+ msgstr "juliol"
2301
+
2302
+ #: modules/shortcodes/videopress.php:879
2303
+ msgid "August"
2304
+ msgstr "agost"
2305
+
2306
+ #: modules/shortcodes/videopress.php:879
2307
+ msgid "September"
2308
+ msgstr "setembre"
2309
+
2310
+ #: modules/shortcodes/videopress.php:879
2311
+ msgid "October"
2312
+ msgstr "octubre"
2313
+
2314
+ #: modules/shortcodes/videopress.php:879
2315
+ msgid "November"
2316
+ msgstr "novembre"
2317
+
2318
+ #: modules/shortcodes/videopress.php:879
2319
+ msgid "December"
2320
+ msgstr "desembre"
2321
+
2322
+ #: modules/shortcodes/videopress.php:915
2323
+ msgid "Submit"
2324
+ msgstr "Envia"
2325
+
2326
+ #: modules/shortcodes/videopress.php:918
2327
+ msgid "More information"
2328
+ msgstr "Més informació"
2329
+
2330
+ #: modules/shortcodes/videopress.php:961
2331
+ msgid "You do not have sufficient <a rel=\"nofollow\" href=\"%s\">freedom levels</a> to view this video. Support free software and upgrade."
2332
+ msgstr "No teniu suficients <a rel=\"nofollow\" href=\"%s\">nivells de llibertat</a> per veure aquest vídeo. Doneu suport al programari lliure i actualitzeu."
2333
+
2334
+ #: modules/shortcodes/videopress.php:1019
2335
+ msgctxt "watch a video title"
2336
+ msgid "Watch: %s"
2337
+ msgstr "MIreu: %s"
2338
+
2339
+ #: modules/shortcodes/videopress.php:1114
2340
+ #: modules/shortcodes/videopress.php:1136
2341
+ msgid "this video"
2342
+ msgstr "aquest vídeo"
2343
+
2344
+ #: modules/shortcodes/videopress.php:1143
2345
+ msgctxt "Play as in playback or view a movie"
2346
+ msgid "JavaScript required to play %s."
2347
+ msgstr "Es requereix el JavaScript per a jugar a %s."
2348
+
2349
+ #: modules/shortcodes/videopress.php:1290
2350
+ msgid "This video requires <a rel=\"nofollow\" href=\"%s\">Adobe Flash</a> for playback."
2351
+ msgstr "Aquest vídeo requereix l'<a rel=\"nofollow\" href=\"%s\">Adobe Flash</a> per reproduir-se."
2352
+
2353
+ #: modules/shortcodes/videopress.php:1297
2354
+ msgid "Loading video..."
2355
+ msgstr "S'està carregant el vídeo..."
2356
+
2357
+ #: modules/stats.php:246 modules/stats.php:680
2358
+ msgid "Site Stats"
2359
+ msgstr "Estadístiques del lloc web"
2360
+
2361
+ #: modules/stats.php:337
2362
+ msgid "Loading&hellip;"
2363
+ msgstr "S'està carregant&hellip;"
2364
+
2365
+ #: modules/stats.php:338
2366
+ msgid "Your Site Stats work better with Javascript enabled."
2367
+ msgstr "Les estadístiques del lloc web funcionen millor si teniu activat el Javascript."
2368
+
2369
+ #: modules/stats.php:339
2370
+ msgid "View Site Stats without Javascript"
2371
+ msgstr "Visualitza les estadístiques del lloc sense Javascript"
2372
+
2373
+ #: modules/stats.php:412 modules/stats.php:908
2374
+ msgid "We were unable to get your stats just now (too many redirects). Please try again."
2375
+ msgstr "Ha estat impossible aconseguir les estadístiques ara mateix (massa redireccionaments). Torneu-ho a provar."
2376
+
2377
+ #: modules/stats.php:414 modules/stats.php:910
2378
+ msgid "We were unable to get your stats just now. Please try again."
2379
+ msgstr "No hem pogut aconseguir les estadístiques ara mateix. Torneu-ho a provar."
2380
+
2381
+ #: modules/stats.php:517
2382
+ msgid "Visit <a href=\"%s\">Site Stats</a> to see your stats."
2383
+ msgstr "Visiteu les <a href=\"%s\">estadístiques del lloc</a> per veure les vostres estadístiques."
2384
+
2385
+ #: modules/stats.php:522
2386
+ msgid "Admin bar"
2387
+ msgstr "Barra d'administració"
2388
+
2389
+ #: modules/stats.php:523
2390
+ msgid "Put a chart showing 48 hours of views in the admin bar."
2391
+ msgstr "Posa un gràfic que mostri 48 hores de visualitzacions a la barra d'administració."
2392
+
2393
+ #: modules/stats.php:524
2394
+ msgid "Registered users"
2395
+ msgstr "Usuaris registrats"
2396
+
2397
+ #: modules/stats.php:525
2398
+ msgid "Count the page views of registered users who are logged in."
2399
+ msgstr "Compta les pàgines vistes dels usuaris registrats que s'han identificat."
2400
+
2401
+ #: modules/stats.php:526
2402
+ msgid "Smiley"
2403
+ msgstr "Smiley"
2404
+
2405
+ #: modules/stats.php:527
2406
+ msgid "Hide the stats smiley face image."
2407
+ msgstr "Amaga la imatge de la cara somrient de les estadístiques."
2408
+
2409
+ #: modules/stats.php:527
2410
+ msgid "The image helps collect stats and <strong>makes the world a better place</strong> but should still work when hidden"
2411
+ msgstr "La imatge ajuda a recollir les estadístiques i <strong>fa del món un millor lloc</strong> però hauria de funciona quan està oculta."
2412
+
2413
+ #: modules/stats.php:527
2414
+ msgid "Smiley face"
2415
+ msgstr "Cara somrient"
2416
+
2417
+ #: modules/stats.php:528
2418
+ msgid "Report visibility"
2419
+ msgstr "Informa de la visibilitat"
2420
+
2421
+ #: modules/stats.php:530
2422
+ msgid "Select the roles that will be able to view stats reports."
2423
+ msgstr "Selecciona els rols que podran veure les estadístiques."
2424
+
2425
+ #: modules/stats.php:541
2426
+ msgid "Save configuration"
2427
+ msgstr "Desa la configuració"
2428
+
2429
+ #: modules/stats.php:597
2430
+ msgid "Stats"
2431
+ msgstr "Estadístiques"
2432
+
2433
+ #: modules/stats.php:599
2434
+ msgid "Views over 48 hours. Click for more Site Stats."
2435
+ msgstr "Visualitzacions durant 48 hores. Feu clic per veure més estadístiques del lloc."
2436
+
2437
+ #: modules/stats.php:701
2438
+ msgid "day"
2439
+ msgstr "dia"
2440
+
2441
+ #: modules/stats.php:702
2442
+ msgid "week"
2443
+ msgstr "setmana"
2444
+
2445
+ #: modules/stats.php:703
2446
+ msgid "month"
2447
+ msgstr "mes"
2448
+
2449
+ #: modules/stats.php:706
2450
+ msgid "the past day"
2451
+ msgstr "el dia passat"
2452
+
2453
+ #: modules/stats.php:707
2454
+ msgid "the past week"
2455
+ msgstr "la setmana passada"
2456
+
2457
+ #: modules/stats.php:708
2458
+ msgid "the past month"
2459
+ msgstr "el mes passat"
2460
+
2461
+ #: modules/stats.php:709
2462
+ msgid "the past quarter"
2463
+ msgstr "el quart passat"
2464
+
2465
+ #: modules/stats.php:710
2466
+ msgid "the past year"
2467
+ msgstr "l'any passat"
2468
+
2469
+ #: modules/stats.php:732
2470
+ msgid "Chart stats by"
2471
+ msgstr "Gràfic d'estadístiques per"
2472
+
2473
+ #: modules/stats.php:745
2474
+ msgid "Show top posts over"
2475
+ msgstr "Mostra els fils més visitats"
2476
+
2477
+ #: modules/stats.php:758
2478
+ msgid "Show top search terms over"
2479
+ msgstr "Mostra els termes més cercats sobre"
2480
+
2481
+ #: modules/stats.php:923
2482
+ msgid "%1$s %2$s Views"
2483
+ msgstr "%1$s %2$s visualitzacions"
2484
+
2485
+ #: modules/stats.php:936
2486
+ msgid "View All"
2487
+ msgstr "Mostra-ho tot"
2488
+
2489
+ #: modules/stats.php:940
2490
+ msgid "Top Posts"
2491
+ msgstr "Entrades més vistes"
2492
+
2493
+ #: modules/stats.php:944 modules/stats.php:968
2494
+ msgid "Sorry, nothing to report."
2495
+ msgstr "Ho sentim, res a dir."
2496
+
2497
+ #: modules/stats.php:964
2498
+ msgid "Top Searches"
2499
+ msgstr "Cerques més populars"
2500
+
2501
+ #: modules/subscriptions.php:175
2502
+ msgid "Jetpack Subscriptions Settings"
2503
+ msgstr "Configuració de les subscripcions del Jetpack"
2504
+
2505
+ #: modules/subscriptions.php:184
2506
+ msgid "Follow Blog"
2507
+ msgstr "Segueix el bloc"
2508
+
2509
+ #: modules/subscriptions.php:199
2510
+ msgid "Follow Comments"
2511
+ msgstr "Segueix els comentaris"
2512
+
2513
+ #: modules/subscriptions.php:218
2514
+ msgid "Change whether your visitors can subscribe to your posts or comments or both."
2515
+ msgstr "Canvia si els visitants poden subscriure's a les entrades, als comentaris o a tots dos."
2516
+
2517
+ #: modules/subscriptions.php:233
2518
+ msgid "Show a <em>'follow blog'</em> option in the comment form"
2519
+ msgstr "Mostra una opció <em>'segueix el bloc'</em> al formulari dels comentaris"
2520
+
2521
+ #: modules/subscriptions.php:248
2522
+ msgid "Show a <em>'follow comments'</em> option in the comment form"
2523
+ msgstr "Mostra una opció <em>'segueix els comentaris'</em> al formulari de comentaris"
2524
+
2525
+ #: modules/subscriptions.php:438
2526
+ msgid "Notify me of follow-up comments by email."
2527
+ msgstr "Aviseu-me del seguiment dels comentaris per correu."
2528
+
2529
+ #: modules/subscriptions.php:445
2530
+ msgid "Notify me of new posts by email."
2531
+ msgstr "Notifica'm per correu electrònic si hi ha entrades noves."
2532
+
2533
+ #: modules/subscriptions.php:511
2534
+ msgid "Add an email signup form to allow people to subscribe to your blog."
2535
+ msgstr "Afegeix un formulari de registre de correu electrònic per permetre a la gent subscriure's al vostre bloc."
2536
+
2537
+ #: modules/subscriptions.php:514
2538
+ msgid "Blog Subscriptions (Jetpack)"
2539
+ msgstr "Subscripcions del bloc (Jetpack)"
2540
+
2541
+ #: modules/subscriptions.php:545
2542
+ msgid "An email was just sent to confirm your subscription. Please find the email now and click activate to start subscribing."
2543
+ msgstr "S'acaba d'enviar un correu electrònic perquè confirmeu la subscripció. Cerqueu ara el correu electrònic i feu clic a activa per iniciar la subscripció."
2544
+
2545
+ #: modules/subscriptions.php:555
2546
+ msgid "The email you entered was invalid, please check and try again."
2547
+ msgstr "El correu electrònic que heu introduït és incorrecte, comproveu-ho i torneu-ho a provar."
2548
+
2549
+ #: modules/subscriptions.php:558
2550
+ msgid "You have already subscribed to this site, please check your inbox."
2551
+ msgstr "Ja esteu subscrits a aquest lloc, comproveu la safata d'entrada."
2552
+
2553
+ #: modules/subscriptions.php:565
2554
+ msgid "There was an error when subscribing, please try again."
2555
+ msgstr "S'ha produït un error en subscriure, torneu-ho a provar."
2556
+
2557
+ #: modules/subscriptions.php:583
2558
+ msgid "Join %s other subscriber"
2559
+ msgid_plural "Join %s other subscribers"
2560
+ msgstr[0] "Uneix %s altre subscriptor"
2561
+ msgstr[1] "Uneix altres %s subscriptors"
2562
+
2563
+ #: modules/subscriptions.php:587
2564
+ msgid "Email Address"
2565
+ msgstr "Adreça electrònica"
2566
+
2567
+ #: modules/subscriptions.php:662
2568
+ msgid "Subscribe to Blog via Email"
2569
+ msgstr "Subscriu al bloc per correu electrònic"
2570
+
2571
+ #: modules/subscriptions.php:663
2572
+ msgid "Enter your email address to subscribe to this blog and receive notifications of new posts by email."
2573
+ msgstr "Introduïu el vostre correu electrònic per subscriure-vos a aquest bloc i rebre notificacions d'entrades noves per correu electrònic."
2574
+
2575
+ #: modules/subscriptions.php:665
2576
+ msgid "Click to subscribe to this blog and receive notifications of new posts by email."
2577
+ msgstr "Feu clic per subscriure-vos a aquest bloc i rebre notificacions per correu electrònic d'entrades noves."
2578
+
2579
+ #: modules/subscriptions.php:681
2580
+ msgid "%s: %s"
2581
+ msgstr "%s: %s"
2582
+
2583
+ #: modules/subscriptions.php:689 modules/widgets/image-widget.php:107
2584
+ msgid "Widget title:"
2585
+ msgstr "Títol del giny"
2586
+
2587
+ #: modules/subscriptions.php:695
2588
+ msgid "Optional text to display to your readers:"
2589
+ msgstr "Text opcional a mostrar als lectors:"
2590
+
2591
+ #: modules/subscriptions.php:701
2592
+ msgid "Subscribe Button:"
2593
+ msgstr "Botó de subscripció:"
2594
+
2595
+ #: modules/subscriptions.php:708
2596
+ msgid "Show total number of subscribers? (%s subscriber)"
2597
+ msgid_plural "Show total number of subscribers? (%s subscribers)"
2598
+ msgstr[0] "Mostra el nombre total de subscriptors? (%s subscriptor)"
2599
+ msgstr[1] "Mostra el nombre total de subscriptors? (%s subscriptors)"
2600
+
2601
+ #: modules/vaultpress.php:22
2602
+ msgid "Active"
2603
+ msgstr "Actiu"
2604
+
2605
+ #: modules/widgets/facebook-likebox.php:29
2606
+ msgid "Facebook Like Box"
2607
+ msgstr "Caixa M'agrada del Facebook"
2608
+
2609
+ #: modules/widgets/facebook-likebox.php:29
2610
+ msgid "Display a Facebook Like Box to connect visitors to your Facebook Page"
2611
+ msgstr "Mostra una caixa M'agrada del Facebook per connectar els visitants a la seva pàgina del Facebook"
2612
+
2613
+ #: modules/widgets/facebook-likebox.php:41
2614
+ msgid "It looks like your Facebook URL is incorrectly configured. Please check it in your <a href=\"%s\">widget settings</a>."
2615
+ msgstr "Sembla que l'URL del Facebook no està configurada correctament. Comproveu-ho en la <a href=\"%s\">configuració del giny</a>."
2616
+
2617
+ #: modules/widgets/facebook-likebox.php:115
2618
+ #: modules/widgets/gravatar-profile.php:155
2619
+ msgid "Title"
2620
+ msgstr "Títol"
2621
+
2622
+ #: modules/widgets/facebook-likebox.php:122
2623
+ msgid "Facebook Page URL"
2624
+ msgstr "URL de la pàgina del Facebook"
2625
+
2626
+ #: modules/widgets/facebook-likebox.php:125
2627
+ msgid "The Like Box only works with <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook Pages</a>."
2628
+ msgstr "La caixa M'agrada solament funciona amb les <a href=\"http://www.facebook.com/help/?faq=174987089221178\">pàgines del Facebook</a>."
2629
+
2630
+ #: modules/widgets/facebook-likebox.php:131
2631
+ msgid "Width"
2632
+ msgstr "Amplada"
2633
+
2634
+ #: modules/widgets/facebook-likebox.php:138
2635
+ msgid "Height"
2636
+ msgstr "Alçada"
2637
+
2638
+ #: modules/widgets/facebook-likebox.php:157
2639
+ msgid "Show Faces"
2640
+ msgstr "Mostra les cares"
2641
+
2642
+ #: modules/widgets/facebook-likebox.php:159
2643
+ msgid "Show profile photos in the plugin."
2644
+ msgstr "Mostra fotografies del perfil a l'extensió"
2645
+
2646
+ #: modules/widgets/facebook-likebox.php:166
2647
+ msgid "Show Stream"
2648
+ msgstr "Mostra el flux"
2649
+
2650
+ #: modules/widgets/facebook-likebox.php:168
2651
+ msgid "Show the profile stream for the public profile."
2652
+ msgstr "Mostra el flux del perfil per al perfil públic."
2653
+
2654
+ #: modules/widgets/facebook-likebox.php:175
2655
+ msgid "Show Wall"
2656
+ msgstr "Mostra el mur"
2657
+
2658
+ #: modules/widgets/facebook-likebox.php:177
2659
+ msgid "Show the wall for a Places page rather than friend activity."
2660
+ msgstr "Mostra el mur de la pàgina de llocs en lloc de l'activitat de l'amic."
2661
+
2662
+ #: modules/widgets/gravatar-profile.php:18
2663
+ msgid "Gravatar Profile"
2664
+ msgstr "Perfil del gravatar"
2665
+
2666
+ #: modules/widgets/gravatar-profile.php:20
2667
+ msgid "Display a mini version of your Gravatar Profile"
2668
+ msgstr "Mostra una versió mini del perfil del gravatar"
2669
+
2670
+ #: modules/widgets/gravatar-profile.php:36
2671
+ msgid "You need to select what to show in this <a href=\"%s\">Gravatar Profile widget</a>."
2672
+ msgstr "Necessiteu seleccionar què cal mostrar en aquest <a href=\"%s\">giny del perfil del Gravatar</a>."
2673
+
2674
+ #: modules/widgets/gravatar-profile.php:82
2675
+ msgid "View Full Profile &rarr;"
2676
+ msgstr "Mostra el perfil complet &rarr;"
2677
+
2678
+ #: modules/widgets/gravatar-profile.php:90
2679
+ msgid "Error loading profile"
2680
+ msgstr "S'ha produït un error en carregar el perfil"
2681
+
2682
+ #: modules/widgets/gravatar-profile.php:102
2683
+ msgid "Personal Links"
2684
+ msgstr "Enllaços personals"
2685
+
2686
+ #: modules/widgets/gravatar-profile.php:122
2687
+ msgid "Verified Services"
2688
+ msgstr "serveis verificats"
2689
+
2690
+ #: modules/widgets/gravatar-profile.php:133
2691
+ msgctxt "1: User Name, 2: Service Name (Facebook, Twitter, ...)"
2692
+ msgid "%1$s on %2$s"
2693
+ msgstr "%1$s al %2$s"
2694
+
2695
+ #: modules/widgets/gravatar-profile.php:161
2696
+ msgid "Select a user or pick \"custom\" and enter a custom email address."
2697
+ msgstr "Seleccioneu un usuari o feu clic a \"personalitzat\" i entreu una adreça de correu electrònic personalitzada."
2698
+
2699
+ #: modules/widgets/gravatar-profile.php:165
2700
+ msgid "Custom"
2701
+ msgstr "Personalitzat"
2702
+
2703
+ #: modules/widgets/gravatar-profile.php:175
2704
+ msgid "Custom Email Address"
2705
+ msgstr "Adreça de correu electrònic personalitzada"
2706
+
2707
+ #: modules/widgets/gravatar-profile.php:183
2708
+ msgid "Show Personal Links"
2709
+ msgstr "Mostra els enllaços personals"
2710
+
2711
+ #: modules/widgets/gravatar-profile.php:185
2712
+ msgid "Links to your websites, blogs, or any other sites that help describe who you are."
2713
+ msgstr "Enllaça amb les vostres pàgines web, blocs, o altres llocs webs que puguen ajudar a descriure com sou."
2714
+
2715
+ #: modules/widgets/gravatar-profile.php:192
2716
+ msgid "Show Account Links"
2717
+ msgstr "Mostra els enllaços del compte"
2718
+
2719
+ #: modules/widgets/gravatar-profile.php:194
2720
+ msgid "Links to services that you use across the web."
2721
+ msgstr "Enllaça als serveis que useu al llarg del web."
2722
+
2723
+ #: modules/widgets/gravatar-profile.php:198
2724
+ msgid "Opens in new window"
2725
+ msgstr "Obre in una finestra nova"
2726
+
2727
+ #: modules/widgets/gravatar-profile.php:198
2728
+ msgid "Edit Your Profile"
2729
+ msgstr "Editeu el perfil"
2730
+
2731
+ #: modules/widgets/gravatar-profile.php:198
2732
+ msgid "What's a Gravatar?"
2733
+ msgstr "Què és un Gravatar?"
2734
+
2735
+ #: modules/widgets/image-widget.php:12
2736
+ msgid "Display an image in your sidebar"
2737
+ msgstr "Mostra una imatge en la barra lateral"
2738
+
2739
+ #: modules/widgets/image-widget.php:14
2740
+ msgid "Image (Jetpack)"
2741
+ msgstr "Imatge (Jetpack)"
2742
+
2743
+ #: modules/widgets/image-widget.php:110
2744
+ msgid "Image URL:"
2745
+ msgstr "URL de la imatge:"
2746
+
2747
+ #: modules/widgets/image-widget.php:113
2748
+ msgid "Alternate text:"
2749
+ msgstr "Text alternatiu:"
2750
+
2751
+ #: modules/widgets/image-widget.php:116
2752
+ msgid "Image title:"
2753
+ msgstr "Títol de la imatge:"
2754
+
2755
+ #: modules/widgets/image-widget.php:119
2756
+ msgid "Caption:"
2757
+ msgstr "Títol:"
2758
+
2759
+ #: modules/widgets/image-widget.php:124
2760
+ msgid "None"
2761
+ msgstr "Cap"
2762
+
2763
+ #: modules/widgets/image-widget.php:125
2764
+ msgid "Left"
2765
+ msgstr "Esquerra"
2766
+
2767
+ #: modules/widgets/image-widget.php:126
2768
+ msgid "Center"
2769
+ msgstr "Centrat"
2770
+
2771
+ #: modules/widgets/image-widget.php:127
2772
+ msgid "Right"
2773
+ msgstr "Dreta"
2774
+
2775
+ #: modules/widgets/image-widget.php:129
2776
+ msgid "Image Alignment:"
2777
+ msgstr "Alineació de la imatge:"
2778
+
2779
+ #: modules/widgets/image-widget.php:139
2780
+ msgid "Width:"
2781
+ msgstr "Amplada:"
2782
+
2783
+ #: modules/widgets/image-widget.php:142
2784
+ msgid "Height:"
2785
+ msgstr "Alçada:"
2786
+
2787
+ #: modules/widgets/image-widget.php:145
2788
+ msgid "If empty, we will attempt to determine the image size."
2789
+ msgstr "Si està buit, intentarem determinar la grandària de la imatge."
2790
+
2791
+ #: modules/widgets/image-widget.php:146
2792
+ msgid "Link URL (when the image is clicked):"
2793
+ msgstr "URL de l'enllaç (quan es fa clic a la imatge):"
2794
+
2795
+ #: modules/widgets/rsslinks-widget.php:12
2796
+ msgid "Links to your blog's RSS feeds"
2797
+ msgstr "Enllaços al canal de subscripció RSS del bloc"
2798
+
2799
+ #: modules/widgets/rsslinks-widget.php:13
2800
+ msgid "RSS Links (Jetpack)"
2801
+ msgstr "Enllaços RSS (Jetpack)"
2802
+
2803
+ #: modules/widgets/rsslinks-widget.php:62 modules/widgets/top-posts.php:58
2804
+ #: modules/widgets/twitter.php:283
2805
+ msgid "Title:"
2806
+ msgstr "Títol:"
2807
+
2808
+ #: modules/widgets/rsslinks-widget.php:67
2809
+ #: modules/widgets/rsslinks-widget.php:133
2810
+ msgid "Posts"
2811
+ msgstr "Entrades"
2812
+
2813
+ #: modules/widgets/rsslinks-widget.php:68
2814
+ #: modules/widgets/rsslinks-widget.php:136
2815
+ msgid "Comments"
2816
+ msgstr "Comentaris"
2817
+
2818
+ #: modules/widgets/rsslinks-widget.php:69
2819
+ msgid "Posts & Comments"
2820
+ msgstr "Entrades i comentaris"
2821
+
2822
+ #: modules/widgets/rsslinks-widget.php:71
2823
+ msgid "Feed(s) to Display:"
2824
+ msgstr "Fil(s) de subscripció a mostrar:"
2825
+
2826
+ #: modules/widgets/rsslinks-widget.php:81
2827
+ msgid "Text Link"
2828
+ msgstr "Enllaç de text"
2829
+
2830
+ #: modules/widgets/rsslinks-widget.php:82
2831
+ msgid "Image Link"
2832
+ msgstr "Enllaç d'Imatge"
2833
+
2834
+ #: modules/widgets/rsslinks-widget.php:83
2835
+ msgid "Text & Image Links"
2836
+ msgstr "Enllaços de text i imatge"
2837
+
2838
+ #: modules/widgets/rsslinks-widget.php:85
2839
+ msgid "Format:"
2840
+ msgstr "Format:"
2841
+
2842
+ #: modules/widgets/rsslinks-widget.php:96
2843
+ msgid "Image Settings:"
2844
+ msgstr "Configuració de la imatge:"
2845
+
2846
+ #: modules/widgets/rsslinks-widget.php:99
2847
+ msgid "Small"
2848
+ msgstr "Petit"
2849
+
2850
+ #: modules/widgets/rsslinks-widget.php:100
2851
+ msgid "Medium"
2852
+ msgstr "Mitjana"
2853
+
2854
+ #: modules/widgets/rsslinks-widget.php:101
2855
+ msgid "Large"
2856
+ msgstr "Gran"
2857
+
2858
+ #: modules/widgets/rsslinks-widget.php:103
2859
+ msgid "Image Size:"
2860
+ msgstr "Mida de la imatge:"
2861
+
2862
+ #: modules/widgets/rsslinks-widget.php:113
2863
+ msgid "Red"
2864
+ msgstr "Vermell"
2865
+
2866
+ #: modules/widgets/rsslinks-widget.php:114
2867
+ msgid "Orange"
2868
+ msgstr "Taronja"
2869
+
2870
+ #: modules/widgets/rsslinks-widget.php:115
2871
+ msgid "Green"
2872
+ msgstr "Verd"
2873
+
2874
+ #: modules/widgets/rsslinks-widget.php:116
2875
+ msgid "Blue"
2876
+ msgstr "Blau"
2877
+
2878
+ #: modules/widgets/rsslinks-widget.php:117
2879
+ msgid "Purple"
2880
+ msgstr "Violeta"
2881
+
2882
+ #: modules/widgets/rsslinks-widget.php:118
2883
+ msgid "Pink"
2884
+ msgstr "Rosa"
2885
+
2886
+ #: modules/widgets/rsslinks-widget.php:119
2887
+ msgid "Silver"
2888
+ msgstr "Plata"
2889
+
2890
+ #: modules/widgets/rsslinks-widget.php:121
2891
+ msgid "Image Color:"
2892
+ msgstr "Color de la imatge:"
2893
+
2894
+ #: modules/widgets/rsslinks-widget.php:140
2895
+ msgid "Subscribe to %s"
2896
+ msgstr "Subscriu-me a %s"
2897
+
2898
+ #: modules/widgets/top-posts.php:20 modules/widgets/top-posts.php:26
2899
+ msgid "Top Posts &amp; Pages"
2900
+ msgstr "Pàgines amb els millors Fils"
2901
+
2902
+ #: modules/widgets/top-posts.php:22
2903
+ msgid "Shows your most viewed posts and pages."
2904
+ msgstr ""
2905
+
2906
+ #: modules/widgets/top-posts.php:63
2907
+ msgid "Number of posts to show:"
2908
+ msgstr "Nombre d'entrades que cal mostrar:"
2909
+
2910
+ #: modules/widgets/top-posts.php:68
2911
+ msgid "Display as:"
2912
+ msgstr ""
2913
+
2914
+ #: modules/widgets/top-posts.php:70
2915
+ msgid "Text List"
2916
+ msgstr ""
2917
+
2918
+ #: modules/widgets/top-posts.php:71
2919
+ msgid "Image List"
2920
+ msgstr ""
2921
+
2922
+ #: modules/widgets/top-posts.php:72
2923
+ msgid "Image Grid"
2924
+ msgstr ""
2925
+
2926
+ #: modules/widgets/top-posts.php:76
2927
+ msgid "Top Posts &amp; Pages by views are calculated from 24-48 hours of stats. They take a while to change."
2928
+ msgstr ""
2929
+
2930
+ #: modules/widgets/top-posts.php:149
2931
+ msgid "There are no posts to display. <a href=\"%s\">Want more traffic?</a>"
2932
+ msgstr ""
2933
+
2934
+ #: modules/widgets/twitter.php:22
2935
+ msgid "Display your Tweets from Twitter"
2936
+ msgstr ""
2937
+
2938
+ #: modules/widgets/twitter.php:31
2939
+ msgid "Please configure your Twitter username for the <a href=\"%s\">Twitter Widget</a>."
2940
+ msgstr ""
2941
+
2942
+ #: modules/widgets/twitter.php:41
2943
+ msgid "Twitter Updates"
2944
+ msgstr "Actualitzacions del Twitter"
2945
+
2946
+ #: modules/widgets/twitter.php:186 modules/widgets/twitter.php:207
2947
+ msgid "Error: Twitter did not respond. Please wait a few minutes and refresh this page."
2948
+ msgstr "Error: el Twitter no respon. Espereu uns pocs minuts i refresqueu aquesta pàgina. "
2949
+
2950
+ #: modules/widgets/twitter.php:200
2951
+ msgid "Error: Please make sure the Twitter account is <a href=\"%s\">public</a>."
2952
+ msgstr "Error: comproveu que el compte del Twitter és <a href=\"%s\">públic</a>."
2953
+
2954
+ #: modules/widgets/twitter.php:290
2955
+ msgid "Twitter username:"
2956
+ msgstr "Nom d'usuari del Twitter:"
2957
+
2958
+ #: modules/widgets/twitter.php:297
2959
+ msgid "Maximum number of Tweets to show:"
2960
+ msgstr ""
2961
+
2962
+ #: modules/widgets/twitter.php:311
2963
+ msgid "Hide replies"
2964
+ msgstr "Amaga les respostes"
2965
+
2966
+ #: modules/widgets/twitter.php:318
2967
+ msgid "Hide Tweets pushed by Publicize"
2968
+ msgstr ""
2969
+
2970
+ #: modules/widgets/twitter.php:325
2971
+ msgid "Include retweets"
2972
+ msgstr "Inclou repiulades"
2973
+
2974
+ #: modules/widgets/twitter.php:332
2975
+ msgid "Display Follow Button"
2976
+ msgstr ""
2977
+
2978
+ #: modules/widgets/twitter.php:338
2979
+ msgid "Text to display between Tweet and timestamp:"
2980
+ msgstr ""
2981
+
2982
+ msgid "http://wordpress.org/extend/plugins/jetpack/"
2983
+ msgstr "http://wordpress.org/extend/plugins/jetpack/"
2984
+
2985
+ msgid "Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users."
2986
+ msgstr "Porta el poder del núvol de WordPress.com al vostre WordPress. El JetPack us permet connectar el vostre bloc amb un compre de WordPress.com per fer servir les potents funcionalitats que normalment solament estan disponibles per a usuaris de WordPress.com."
2987
+
2988
+ msgid "Automattic"
2989
+ msgstr "Automattic"
2990
+
2991
+ msgid "http://jetpack.me"
2992
+ msgstr "http://jetpack.me"
2993
+
2994
+ msgid "Improve your spelling, style, and grammar with the <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> Proofreading service."
2995
+ msgstr "Millora l'ortografia, l'estil, i la gramàtica amb el servei de correcció <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a>."
2996
+
2997
+ msgid "Transform your standard image galleries into an immersive full-screen experience."
2998
+ msgstr "Transforma les vostres galerias d'imatges en una experiència immersiva a pantalla completa."
2999
+
3000
+ msgid "A new comment system that has integrated social media login options."
3001
+ msgstr "Un sistema de comentaris nou que té integrat opcions per identificar-se mitjançant xares socials."
3002
+
3003
+ msgid "Easily insert a contact form any where on your site."
3004
+ msgstr "Insereix fàcilment un formulari de contacte en qualsevol lloc de la pàgina web."
3005
+
3006
+ msgid "Customize the appearance of your site using CSS but without modifying your theme."
3007
+ msgstr "Personalitzeu l'aparença del vostre lloc web fent servir CSS però sense modificar el tema."
3008
+
3009
+ msgid "Share your public posts and comments to search engines and other services in real-time."
3010
+ msgstr "Comparteix les teves entrades i comentaris públics amb els motors de cerca i altres serveis en tems real."
3011
+
3012
+ msgid "Show a pop-up business card of your users' gravatar profiles in comments."
3013
+ msgstr "Mostra una tarja professional emergent dels perfils del usuaris en els comentaris. "
3014
+
3015
+ msgid "Beautiful Math"
3016
+ msgstr "Matemàtiques maques"
3017
+
3018
+ msgid "Mark up your posts with the <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> markup language, perfect for complex mathematical equations and other &#252;ber-geekery."
3019
+ msgstr "Marca les entrades amb el llenguatge de marques <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"Logo de LaTeX\" title=\"LaTeX\" style=\"vertical-align: -25%\" />, perfecte per a equacions matemàtiques complexes i altres herbes."
3020
+
3021
+ msgid "Automatically optimize your site for mobile devices."
3022
+ msgstr ""
3023
+
3024
+ msgid "The most super duper sharing tool on the interwebs. Share content with Facebook, Twitter, and many more."
3025
+ msgstr "La millor eina per compartir en la web. Comparteix contingut amb el Facebook, el Twitter, i molts més."
3026
+
3027
+ msgid "Easily embed videos and more from sites like YouTube, Vimeo, and SlideShare."
3028
+ msgstr "Incrusta vídeos fàcilment i més des de llocs webs com ara YouTube, Vimeo, i SlideShare."
3029
+
3030
+ msgid "Enable WP.me-powered shortlinks for all of your Posts and Pages for easier sharing."
3031
+ msgstr "Activeu els enllaços curts de WP.me per a totes les entrades i pàgines i així compartir més fàcilment."
3032
+
3033
+ msgid "Simple, concise site stats with no additional load on your server."
3034
+ msgstr "Estadístiques del lloc simples i concises sense càrrega addicional del servidor."
3035
+
3036
+ msgid "Allow users to subscribe to your posts and comments to receive a notification via email."
3037
+ msgstr "Permet als usuaris subscriure's a les vostres entrades i comentaris per rebre una notificació per correu electrònic."
3038
+
3039
+ msgid "Realtime backup and security scanning for your WordPress site."
3040
+ msgstr "Còpia de seguretat i escaneig de seguretat en temps real per al lloc web del WordPress."
3041
+
3042
+ msgid "Easily add images, Twitter updates, and your site's RSS links to your theme's sidebar."
3043
+ msgstr "Afegeix fàcilment imatges, actualitzacions del Twitter i enllaços RSS a la barra lateral del tema."
languages/jetpack-cs_CZ.mo ADDED
Binary file
languages/jetpack-cs_CZ.po ADDED
@@ -0,0 +1,3484 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of 2.0 in Czech
2
+ # This file is distributed under the same license as the 2.0 package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2012-11-20 20:02:04+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: 2.0\n"
12
+
13
+ #: modules/widgets/rsslinks-widget.php:113
14
+ msgid "Red"
15
+ msgstr "Červená"
16
+
17
+ #: modules/widgets/rsslinks-widget.php:114
18
+ msgid "Orange"
19
+ msgstr "Oranžová"
20
+
21
+ #: modules/widgets/rsslinks-widget.php:115
22
+ msgid "Green"
23
+ msgstr "Zelená"
24
+
25
+ #: modules/widgets/rsslinks-widget.php:116
26
+ msgid "Blue"
27
+ msgstr "Modrá"
28
+
29
+ #: modules/widgets/rsslinks-widget.php:117
30
+ msgid "Purple"
31
+ msgstr "Purpurová"
32
+
33
+ #: modules/widgets/rsslinks-widget.php:118
34
+ msgid "Pink"
35
+ msgstr "Růžová"
36
+
37
+ #: modules/widgets/rsslinks-widget.php:119
38
+ msgid "Silver"
39
+ msgstr "Stříbrná"
40
+
41
+ #: modules/widgets/rsslinks-widget.php:121
42
+ msgid "Image Color:"
43
+ msgstr ""
44
+
45
+ #: modules/widgets/rsslinks-widget.php:140
46
+ msgid "Subscribe to %s"
47
+ msgstr ""
48
+
49
+ #: modules/widgets/top-posts.php:35 modules/widgets/top-posts.php:41
50
+ msgid "Top Posts &amp; Pages"
51
+ msgstr "Nejlepší příspěvky &amp; Stránky"
52
+
53
+ #: modules/widgets/top-posts.php:37
54
+ msgid "Shows your most viewed posts and pages."
55
+ msgstr ""
56
+
57
+ #: modules/widgets/top-posts.php:78
58
+ msgid "Number of posts to show:"
59
+ msgstr "Počet zobrazených příspěvků:"
60
+
61
+ #: modules/widgets/top-posts.php:83
62
+ msgid "Display as:"
63
+ msgstr ""
64
+
65
+ #: modules/widgets/top-posts.php:85
66
+ msgid "Text List"
67
+ msgstr ""
68
+
69
+ #: modules/widgets/top-posts.php:86
70
+ msgid "Image List"
71
+ msgstr ""
72
+
73
+ #: modules/widgets/top-posts.php:87
74
+ msgid "Image Grid"
75
+ msgstr ""
76
+
77
+ #: modules/widgets/top-posts.php:91
78
+ msgid "Top Posts &amp; Pages by views are calculated from 24-48 hours of stats. They take a while to change."
79
+ msgstr ""
80
+
81
+ #: modules/widgets/top-posts.php:164
82
+ msgid "There are no posts to display. <a href=\"%s\">Want more traffic?</a>"
83
+ msgstr ""
84
+
85
+ #: modules/widgets/twitter.php:22
86
+ msgid "Display your Tweets from Twitter"
87
+ msgstr ""
88
+
89
+ #: modules/widgets/twitter.php:31
90
+ msgid "Please configure your Twitter username for the <a href=\"%s\">Twitter Widget</a>."
91
+ msgstr ""
92
+
93
+ #: modules/widgets/twitter.php:41
94
+ msgid "Twitter Updates"
95
+ msgstr "Aktualizace Twitteru"
96
+
97
+ #: modules/widgets/twitter.php:182 modules/widgets/twitter.php:203
98
+ msgid "Error: Twitter did not respond. Please wait a few minutes and refresh this page."
99
+ msgstr ""
100
+
101
+ #: modules/widgets/twitter.php:196
102
+ msgid "Error: Please make sure the Twitter account is %1$spublic%2$s."
103
+ msgstr ""
104
+
105
+ #: modules/widgets/twitter.php:265
106
+ msgid "Twitter username:"
107
+ msgstr ""
108
+
109
+ #: modules/widgets/twitter.php:272
110
+ msgid "Maximum number of Tweets to show:"
111
+ msgstr ""
112
+
113
+ #: modules/widgets/twitter.php:286
114
+ msgid "Hide replies"
115
+ msgstr ""
116
+
117
+ #: modules/widgets/twitter.php:293
118
+ msgid "Hide Tweets pushed by Publicize"
119
+ msgstr ""
120
+
121
+ #: modules/widgets/twitter.php:300
122
+ msgid "Include retweets"
123
+ msgstr ""
124
+
125
+ #: modules/widgets/twitter.php:307
126
+ msgid "Display Follow Button"
127
+ msgstr ""
128
+
129
+ #: modules/widgets/twitter.php:313
130
+ msgid "Text to display between Tweet and timestamp:"
131
+ msgstr ""
132
+
133
+ msgid "http://wordpress.org/extend/plugins/jetpack/"
134
+ msgstr ""
135
+
136
+ msgid "Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users."
137
+ msgstr ""
138
+
139
+ msgid "Automattic"
140
+ msgstr ""
141
+
142
+ msgid "http://jetpack.me"
143
+ msgstr ""
144
+
145
+ msgid "Improve your spelling, style, and grammar with the <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> Proofreading service."
146
+ msgstr ""
147
+
148
+ msgid "Transform your standard image galleries into an immersive full-screen experience."
149
+ msgstr ""
150
+
151
+ msgid "A new comment system that has integrated social media login options."
152
+ msgstr ""
153
+
154
+ msgid "Easily insert a contact form any where on your site."
155
+ msgstr ""
156
+
157
+ msgid "Customize the appearance of your site using CSS but without modifying your theme."
158
+ msgstr ""
159
+
160
+ msgid "Share your public posts and comments to search engines and other services in real-time."
161
+ msgstr ""
162
+
163
+ msgid "Show a pop-up business card of your users' gravatar profiles in comments."
164
+ msgstr ""
165
+
166
+ msgid "Automatically pull the next set of posts into view when the reader approaches the bottom of the page."
167
+ msgstr ""
168
+
169
+ msgid "Allow applications to securely access your content through the cloud."
170
+ msgstr ""
171
+
172
+ msgid "Beautiful Math"
173
+ msgstr ""
174
+
175
+ msgid "Mark up your posts with the <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> markup language, perfect for complex mathematical equations and other &#252;ber-geekery."
176
+ msgstr ""
177
+
178
+ msgid "Automatically optimize your site for mobile devices."
179
+ msgstr ""
180
+
181
+ msgid "Receive notifications on your Apple device."
182
+ msgstr ""
183
+
184
+ msgid "Monitor and manage your site's activity with Notifications in your Toolbar and on WordPress.com."
185
+ msgstr ""
186
+
187
+ msgid "Give your site a boost by loading images from the WordPress.com content delivery network."
188
+ msgstr ""
189
+
190
+ msgid "Publish posts to your blog directly from your personal email account."
191
+ msgstr ""
192
+
193
+ msgid "Connect your site to popular social networks and automatically share new posts with your friends."
194
+ msgstr ""
195
+
196
+ msgid "The most super duper sharing tool on the interwebs. Share content with Facebook, Twitter, and many more."
197
+ msgstr ""
198
+
199
+ msgid "Easily embed videos and more from sites like YouTube, Vimeo, and SlideShare."
200
+ msgstr ""
201
+
202
+ msgid "Enable WP.me-powered shortlinks for all of your Posts and Pages for easier sharing."
203
+ msgstr ""
204
+
205
+ msgid "Simple, concise site stats with no additional load on your server."
206
+ msgstr ""
207
+
208
+ msgid "Allow users to subscribe to your posts and comments to receive a notification via email."
209
+ msgstr ""
210
+
211
+ msgid "Realtime backup and security scanning for your WordPress site."
212
+ msgstr ""
213
+
214
+ msgid "Easily add images, Twitter updates, and your site's RSS links to your theme's sidebar."
215
+ msgstr ""
216
+
217
+ #: modules/widgets/facebook-likebox.php:115
218
+ #: modules/widgets/gravatar-profile.php:164
219
+ msgid "Title"
220
+ msgstr "Název"
221
+
222
+ #: modules/widgets/facebook-likebox.php:122
223
+ msgid "Facebook Page URL"
224
+ msgstr ""
225
+
226
+ #: modules/widgets/facebook-likebox.php:125
227
+ msgid "The Like Box only works with <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook Pages</a>."
228
+ msgstr ""
229
+
230
+ #: modules/widgets/facebook-likebox.php:131
231
+ msgid "Width"
232
+ msgstr "Šířka"
233
+
234
+ #: modules/widgets/facebook-likebox.php:138
235
+ msgid "Height"
236
+ msgstr "Výška"
237
+
238
+ #: modules/widgets/facebook-likebox.php:157
239
+ msgid "Show Faces"
240
+ msgstr ""
241
+
242
+ #: modules/widgets/facebook-likebox.php:159
243
+ msgid "Show profile photos in the plugin."
244
+ msgstr ""
245
+
246
+ #: modules/widgets/facebook-likebox.php:166
247
+ msgid "Show Stream"
248
+ msgstr ""
249
+
250
+ #: modules/widgets/facebook-likebox.php:168
251
+ msgid "Show the profile stream for the public profile."
252
+ msgstr ""
253
+
254
+ #: modules/widgets/facebook-likebox.php:175
255
+ msgid "Show Wall"
256
+ msgstr ""
257
+
258
+ #: modules/widgets/facebook-likebox.php:177
259
+ msgid "Show the wall for a Places page rather than friend activity."
260
+ msgstr ""
261
+
262
+ #: modules/widgets/gravatar-profile.php:19
263
+ msgid "Gravatar Profile"
264
+ msgstr ""
265
+
266
+ #: modules/widgets/gravatar-profile.php:21
267
+ msgid "Display a mini version of your Gravatar Profile"
268
+ msgstr ""
269
+
270
+ #: modules/widgets/gravatar-profile.php:37
271
+ msgid "You need to select what to show in this <a href=\"%s\">Gravatar Profile widget</a>."
272
+ msgstr ""
273
+
274
+ #: modules/widgets/gravatar-profile.php:91
275
+ msgid "View Full Profile &rarr;"
276
+ msgstr ""
277
+
278
+ #: modules/widgets/gravatar-profile.php:99
279
+ msgid "Error loading profile"
280
+ msgstr ""
281
+
282
+ #: modules/widgets/gravatar-profile.php:111
283
+ msgid "Personal Links"
284
+ msgstr ""
285
+
286
+ #: modules/widgets/gravatar-profile.php:131
287
+ msgid "Verified Services"
288
+ msgstr ""
289
+
290
+ #: modules/widgets/gravatar-profile.php:142
291
+ msgctxt "1: User Name, 2: Service Name (Facebook, Twitter, ...)"
292
+ msgid "%1$s on %2$s"
293
+ msgstr ""
294
+
295
+ #: modules/widgets/gravatar-profile.php:170
296
+ msgid "Select a user or pick \"custom\" and enter a custom email address."
297
+ msgstr ""
298
+
299
+ #: modules/widgets/gravatar-profile.php:174
300
+ msgid "Custom"
301
+ msgstr "Uživatelský odkaz"
302
+
303
+ #: modules/widgets/gravatar-profile.php:184
304
+ msgid "Custom Email Address"
305
+ msgstr ""
306
+
307
+ #: modules/widgets/gravatar-profile.php:192
308
+ msgid "Show Personal Links"
309
+ msgstr ""
310
+
311
+ #: modules/widgets/gravatar-profile.php:194
312
+ msgid "Links to your websites, blogs, or any other sites that help describe who you are."
313
+ msgstr ""
314
+
315
+ #: modules/widgets/gravatar-profile.php:201
316
+ msgid "Show Account Links"
317
+ msgstr ""
318
+
319
+ #: modules/widgets/gravatar-profile.php:203
320
+ msgid "Links to services that you use across the web."
321
+ msgstr ""
322
+
323
+ #: modules/widgets/gravatar-profile.php:207
324
+ msgid "Opens in new window"
325
+ msgstr ""
326
+
327
+ #: modules/widgets/gravatar-profile.php:207
328
+ msgid "Edit Your Profile"
329
+ msgstr ""
330
+
331
+ #: modules/widgets/gravatar-profile.php:207
332
+ msgid "What's a Gravatar?"
333
+ msgstr ""
334
+
335
+ #: modules/widgets/image-widget.php:12
336
+ msgid "Display an image in your sidebar"
337
+ msgstr ""
338
+
339
+ #: modules/widgets/image-widget.php:14
340
+ msgid "Image (Jetpack)"
341
+ msgstr ""
342
+
343
+ #: modules/widgets/image-widget.php:110
344
+ msgid "Image URL:"
345
+ msgstr ""
346
+
347
+ #: modules/widgets/image-widget.php:113
348
+ msgid "Alternate text:"
349
+ msgstr ""
350
+
351
+ #: modules/widgets/image-widget.php:116
352
+ msgid "Image title:"
353
+ msgstr ""
354
+
355
+ #: modules/widgets/image-widget.php:119
356
+ msgid "Caption:"
357
+ msgstr ""
358
+
359
+ #: modules/widgets/image-widget.php:124
360
+ msgid "None"
361
+ msgstr "Žádné"
362
+
363
+ #: modules/widgets/image-widget.php:125
364
+ msgid "Left"
365
+ msgstr "Doleva"
366
+
367
+ #: modules/widgets/image-widget.php:126
368
+ msgid "Center"
369
+ msgstr "Center"
370
+
371
+ #: modules/widgets/image-widget.php:127
372
+ msgid "Right"
373
+ msgstr "Doprava"
374
+
375
+ #: modules/widgets/image-widget.php:129
376
+ msgid "Image Alignment:"
377
+ msgstr ""
378
+
379
+ #: modules/widgets/image-widget.php:139
380
+ msgid "Width:"
381
+ msgstr ""
382
+
383
+ #: modules/widgets/image-widget.php:142
384
+ msgid "Height:"
385
+ msgstr ""
386
+
387
+ #: modules/widgets/image-widget.php:145
388
+ msgid "If empty, we will attempt to determine the image size."
389
+ msgstr ""
390
+
391
+ #: modules/widgets/image-widget.php:146
392
+ msgid "Link URL (when the image is clicked):"
393
+ msgstr ""
394
+
395
+ #: modules/widgets/rsslinks-widget.php:12
396
+ msgid "Links to your blog's RSS feeds"
397
+ msgstr ""
398
+
399
+ #: modules/widgets/rsslinks-widget.php:13
400
+ msgid "RSS Links (Jetpack)"
401
+ msgstr ""
402
+
403
+ #: modules/widgets/rsslinks-widget.php:62 modules/widgets/top-posts.php:73
404
+ #: modules/widgets/twitter.php:258
405
+ msgid "Title:"
406
+ msgstr "Název:"
407
+
408
+ #: modules/widgets/rsslinks-widget.php:67
409
+ #: modules/widgets/rsslinks-widget.php:133
410
+ msgid "Posts"
411
+ msgstr "Příspěvky"
412
+
413
+ #: modules/widgets/rsslinks-widget.php:68
414
+ #: modules/widgets/rsslinks-widget.php:136
415
+ msgid "Comments"
416
+ msgstr "Komentáře"
417
+
418
+ #: modules/widgets/rsslinks-widget.php:69
419
+ msgid "Posts & Comments"
420
+ msgstr ""
421
+
422
+ #: modules/widgets/rsslinks-widget.php:71
423
+ msgid "Feed(s) to Display:"
424
+ msgstr ""
425
+
426
+ #: modules/widgets/rsslinks-widget.php:81
427
+ msgid "Text Link"
428
+ msgstr ""
429
+
430
+ #: modules/widgets/rsslinks-widget.php:82
431
+ msgid "Image Link"
432
+ msgstr ""
433
+
434
+ #: modules/widgets/rsslinks-widget.php:83
435
+ msgid "Text & Image Links"
436
+ msgstr ""
437
+
438
+ #: modules/widgets/rsslinks-widget.php:85
439
+ msgid "Format:"
440
+ msgstr ""
441
+
442
+ #: modules/widgets/rsslinks-widget.php:96
443
+ msgid "Image Settings:"
444
+ msgstr ""
445
+
446
+ #: modules/widgets/rsslinks-widget.php:99
447
+ msgid "Small"
448
+ msgstr ""
449
+
450
+ #: modules/widgets/rsslinks-widget.php:100
451
+ msgid "Medium"
452
+ msgstr "Střední velikost"
453
+
454
+ #: modules/widgets/rsslinks-widget.php:101
455
+ msgid "Large"
456
+ msgstr "Velký obrázek"
457
+
458
+ #: modules/widgets/rsslinks-widget.php:103
459
+ msgid "Image Size:"
460
+ msgstr ""
461
+
462
+ #: modules/stats.php:527
463
+ msgid "Hide the stats smiley face image."
464
+ msgstr ""
465
+
466
+ #: modules/stats.php:527
467
+ msgid "The image helps collect stats and <strong>makes the world a better place</strong> but should still work when hidden"
468
+ msgstr ""
469
+
470
+ #: modules/stats.php:527
471
+ msgid "Smiley face"
472
+ msgstr ""
473
+
474
+ #: modules/stats.php:528
475
+ msgid "Report visibility"
476
+ msgstr ""
477
+
478
+ #: modules/stats.php:530
479
+ msgid "Select the roles that will be able to view stats reports."
480
+ msgstr ""
481
+
482
+ #: modules/stats.php:541
483
+ msgid "Save configuration"
484
+ msgstr ""
485
+
486
+ #: modules/stats.php:597
487
+ msgid "Stats"
488
+ msgstr "Statistiky"
489
+
490
+ #: modules/stats.php:599
491
+ msgid "Views over 48 hours. Click for more Site Stats."
492
+ msgstr ""
493
+
494
+ #: modules/stats.php:666
495
+ msgid "day"
496
+ msgstr "den"
497
+
498
+ #: modules/stats.php:667
499
+ msgid "week"
500
+ msgstr "týden"
501
+
502
+ #: modules/stats.php:668
503
+ msgid "month"
504
+ msgstr "měsíc"
505
+
506
+ #: modules/stats.php:671
507
+ msgid "the past day"
508
+ msgstr "v předchozích dnech"
509
+
510
+ #: modules/stats.php:672
511
+ msgid "the past week"
512
+ msgstr "poslední týden"
513
+
514
+ #: modules/stats.php:673
515
+ msgid "the past month"
516
+ msgstr "poslední měsíc"
517
+
518
+ #: modules/stats.php:674
519
+ msgid "the past quarter"
520
+ msgstr "poslední čtvrtletí"
521
+
522
+ #: modules/stats.php:675
523
+ msgid "the past year"
524
+ msgstr "poslední rok"
525
+
526
+ #: modules/stats.php:697
527
+ msgid "Chart stats by"
528
+ msgstr "Seřaď statistiky podle"
529
+
530
+ #: modules/stats.php:710
531
+ msgid "Show top posts over"
532
+ msgstr "Zobrazit nejlepší příspěvky nahoře"
533
+
534
+ #: modules/stats.php:723
535
+ msgid "Show top search terms over"
536
+ msgstr ""
537
+
538
+ #: modules/stats.php:882
539
+ msgid "%1$s %2$s Views"
540
+ msgstr ""
541
+
542
+ #: modules/stats.php:895
543
+ msgid "View All"
544
+ msgstr "Zobrazit vše"
545
+
546
+ #: modules/stats.php:899
547
+ msgid "Top Posts"
548
+ msgstr "Nejlepší příspěvky"
549
+
550
+ #: modules/stats.php:903 modules/stats.php:927
551
+ msgid "Sorry, nothing to report."
552
+ msgstr ""
553
+
554
+ #: modules/stats.php:923
555
+ msgid "Top Searches"
556
+ msgstr "Nejčastěji hledané termíny"
557
+
558
+ #: modules/stats.php:946
559
+ msgid "We were unable to get your stats just now. Please reload this page to try again. If this error persists, please <a href=\"%1$s\">contact support</a>. In your report please include the information below."
560
+ msgstr ""
561
+
562
+ #: modules/subscriptions.php:108
563
+ msgid "Jetpack Subscriptions Settings"
564
+ msgstr ""
565
+
566
+ #: modules/subscriptions.php:117
567
+ msgid "Follow Blog"
568
+ msgstr ""
569
+
570
+ #: modules/subscriptions.php:132
571
+ msgid "Follow Comments"
572
+ msgstr ""
573
+
574
+ #: modules/subscriptions.php:153
575
+ msgid "Follower Settings"
576
+ msgstr ""
577
+
578
+ #: modules/subscriptions.php:160
579
+ msgid "Blog follow email text"
580
+ msgstr ""
581
+
582
+ #: modules/subscriptions.php:168
583
+ msgid "Comment follow email text"
584
+ msgstr ""
585
+
586
+ #: modules/subscriptions.php:182
587
+ msgid "Change whether your visitors can subscribe to your posts or comments or both."
588
+ msgstr ""
589
+
590
+ #: modules/subscriptions.php:197
591
+ msgid "Show a <em>'follow blog'</em> option in the comment form"
592
+ msgstr ""
593
+
594
+ #: modules/subscriptions.php:212
595
+ msgid "Show a <em>'follow comments'</em> option in the comment form"
596
+ msgstr ""
597
+
598
+ #: modules/subscriptions.php:237
599
+ msgid "These settings change emails sent from your blog to followers."
600
+ msgstr ""
601
+
602
+ #: modules/subscriptions.php:243
603
+ msgid "Introduction text sent when someone follows your blog. (Site and confirmation details will be automatically added for you.)"
604
+ msgstr ""
605
+
606
+ #: modules/subscriptions.php:249
607
+ msgid "Introduction text sent when someone follows a post on your blog. (Site and confirmation details will be automatically added for you.)"
608
+ msgstr ""
609
+
610
+ #: modules/subscriptions.php:254
611
+ msgid ""
612
+ "Howdy.\n"
613
+ "\n"
614
+ "You recently followed this blog's posts. This means you will receive each new post by email.\n"
615
+ "\n"
616
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
617
+ msgstr ""
618
+
619
+ #: modules/subscriptions.php:255
620
+ msgid ""
621
+ "Howdy.\n"
622
+ "\n"
623
+ "You recently followed one of my posts. This means you will receive an email when new comments are posted.\n"
624
+ "\n"
625
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
626
+ msgstr ""
627
+
628
+ #: modules/subscriptions.php:447
629
+ msgid "Notify me of follow-up comments by email."
630
+ msgstr ""
631
+
632
+ #: modules/subscriptions.php:454
633
+ msgid "Notify me of new posts by email."
634
+ msgstr ""
635
+
636
+ #: modules/subscriptions.php:520
637
+ msgid "Add an email signup form to allow people to subscribe to your blog."
638
+ msgstr ""
639
+
640
+ #: modules/subscriptions.php:523
641
+ msgid "Blog Subscriptions (Jetpack)"
642
+ msgstr ""
643
+
644
+ #: modules/subscriptions.php:554
645
+ msgid "An email was just sent to confirm your subscription. Please find the email now and click activate to start subscribing."
646
+ msgstr ""
647
+
648
+ #: modules/subscriptions.php:564
649
+ msgid "The email you entered was invalid, please check and try again."
650
+ msgstr ""
651
+
652
+ #: modules/subscriptions.php:567
653
+ msgid "You have already subscribed to this site, please check your inbox."
654
+ msgstr ""
655
+
656
+ #: modules/subscriptions.php:574
657
+ msgid "There was an error when subscribing, please try again."
658
+ msgstr ""
659
+
660
+ #: modules/subscriptions.php:592
661
+ msgid "Join %s other subscriber"
662
+ msgid_plural "Join %s other subscribers"
663
+ msgstr[0] ""
664
+ msgstr[1] ""
665
+ msgstr[2] ""
666
+
667
+ #: modules/subscriptions.php:671
668
+ msgid "Subscribe to Blog via Email"
669
+ msgstr ""
670
+
671
+ #: modules/subscriptions.php:672
672
+ msgid "Enter your email address to subscribe to this blog and receive notifications of new posts by email."
673
+ msgstr ""
674
+
675
+ #: modules/subscriptions.php:674
676
+ msgid "Click to subscribe to this blog and receive notifications of new posts by email."
677
+ msgstr ""
678
+
679
+ #: modules/subscriptions.php:690
680
+ msgid "%s: %s"
681
+ msgstr ""
682
+
683
+ #: modules/subscriptions.php:698 modules/widgets/image-widget.php:107
684
+ msgid "Widget title:"
685
+ msgstr "Jméno Widgetu:"
686
+
687
+ #: modules/subscriptions.php:704
688
+ msgid "Optional text to display to your readers:"
689
+ msgstr ""
690
+
691
+ #: modules/subscriptions.php:710
692
+ msgid "Subscribe Button:"
693
+ msgstr ""
694
+
695
+ #: modules/subscriptions.php:717
696
+ msgid "Show total number of subscribers? (%s subscriber)"
697
+ msgid_plural "Show total number of subscribers? (%s subscribers)"
698
+ msgstr[0] ""
699
+ msgstr[1] ""
700
+ msgstr[2] ""
701
+
702
+ #: modules/vaultpress.php:22
703
+ msgid "Active"
704
+ msgstr "Aktivní"
705
+
706
+ #: modules/widgets/facebook-likebox.php:29
707
+ msgid "Facebook Like Box"
708
+ msgstr ""
709
+
710
+ #: modules/widgets/facebook-likebox.php:29
711
+ msgid "Display a Facebook Like Box to connect visitors to your Facebook Page"
712
+ msgstr ""
713
+
714
+ #: modules/widgets/facebook-likebox.php:41
715
+ msgid "It looks like your Facebook URL is incorrectly configured. Please check it in your <a href=\"%s\">widget settings</a>."
716
+ msgstr ""
717
+
718
+ #: modules/sharedaddy/sharing.php:300
719
+ msgid "Button style"
720
+ msgstr ""
721
+
722
+ #: modules/sharedaddy/sharing.php:303
723
+ msgid "Icon + text"
724
+ msgstr ""
725
+
726
+ #: modules/sharedaddy/sharing.php:304
727
+ msgid "Icon only"
728
+ msgstr ""
729
+
730
+ #: modules/sharedaddy/sharing.php:305
731
+ msgid "Text only"
732
+ msgstr ""
733
+
734
+ #: modules/sharedaddy/sharing.php:306
735
+ msgid "Official buttons"
736
+ msgstr ""
737
+
738
+ #: modules/sharedaddy/sharing.php:311
739
+ msgid "Sharing label"
740
+ msgstr ""
741
+
742
+ #: modules/sharedaddy/sharing.php:317
743
+ msgid "Open links in"
744
+ msgstr ""
745
+
746
+ #: modules/sharedaddy/sharing.php:320
747
+ msgid "New window"
748
+ msgstr ""
749
+
750
+ #: modules/sharedaddy/sharing.php:321
751
+ msgid "Same window"
752
+ msgstr ""
753
+
754
+ #: modules/sharedaddy/sharing.php:326
755
+ msgid "Show buttons on"
756
+ msgstr ""
757
+
758
+ #: modules/sharedaddy/sharing.php:332
759
+ msgid "Front Page, Archive Pages, and Search Results"
760
+ msgstr ""
761
+
762
+ #: modules/sharedaddy/sharing.php:348
763
+ msgid "Save Changes"
764
+ msgstr "Uložit změny"
765
+
766
+ #: modules/sharedaddy/sharing.php:359
767
+ msgid "Service name"
768
+ msgstr ""
769
+
770
+ #: modules/sharedaddy/sharing.php:365
771
+ msgid "Sharing URL"
772
+ msgstr ""
773
+
774
+ #: modules/sharedaddy/sharing.php:369
775
+ msgid "You can add the following variables to your service sharing URL:"
776
+ msgstr ""
777
+
778
+ #: modules/sharedaddy/sharing.php:374
779
+ msgid "Icon URL"
780
+ msgstr ""
781
+
782
+ #: modules/sharedaddy/sharing.php:377
783
+ msgid "Enter the URL of a 16x16px icon you want to use for this service."
784
+ msgstr ""
785
+
786
+ #: modules/sharedaddy/sharing.php:383
787
+ msgid "Create Share Button"
788
+ msgstr ""
789
+
790
+ #: modules/sharedaddy/sharing.php:395
791
+ msgid "An error occurred creating your new sharing service - please check you gave valid details."
792
+ msgstr ""
793
+
794
+ #: modules/shortcodes/archives.php:50
795
+ msgid "Your blog does not currently have any published posts."
796
+ msgstr ""
797
+
798
+ #: modules/shortcodes/audio.php:180
799
+ msgid "Download: <a href=\"%s\">%s</a><br />"
800
+ msgstr ""
801
+
802
+ #: modules/shortcodes/videopress.php:616
803
+ msgid "The VideoPress plugin could not communicate with the VideoPress servers. This error is most likely caused by a misconfigured plugin. Please reinstall or upgrade."
804
+ msgstr ""
805
+
806
+ #: modules/shortcodes/videopress.php:618
807
+ msgid "<strong>%s</strong> is not an allowed embed site."
808
+ msgstr ""
809
+
810
+ #: modules/shortcodes/videopress.php:618
811
+ msgid "Publisher limits playback of video embeds."
812
+ msgstr ""
813
+
814
+ #: modules/shortcodes/videopress.php:620
815
+ msgid "No data found for VideoPress identifier: <strong>%s</strong>."
816
+ msgstr ""
817
+
818
+ #: modules/shortcodes/videopress.php:837
819
+ msgid "%s Error"
820
+ msgstr ""
821
+
822
+ #: modules/shortcodes/videopress.php:871
823
+ msgid "This video is intended for mature audiences."
824
+ msgstr ""
825
+
826
+ #: modules/shortcodes/videopress.php:871
827
+ msgid "Please verify your birthday."
828
+ msgstr ""
829
+
830
+ #: modules/shortcodes/videopress.php:887
831
+ msgid "January"
832
+ msgstr "Leden"
833
+
834
+ #: modules/shortcodes/videopress.php:887
835
+ msgid "February"
836
+ msgstr "Únor"
837
+
838
+ #: modules/shortcodes/videopress.php:887
839
+ msgid "March"
840
+ msgstr "Březen"
841
+
842
+ #: modules/shortcodes/videopress.php:887
843
+ msgid "April"
844
+ msgstr "Duben"
845
+
846
+ #: modules/shortcodes/videopress.php:887
847
+ msgid "May"
848
+ msgstr "Květen"
849
+
850
+ #: modules/shortcodes/videopress.php:887
851
+ msgid "June"
852
+ msgstr "Červen"
853
+
854
+ #: modules/shortcodes/videopress.php:887
855
+ msgid "July"
856
+ msgstr "Červenec"
857
+
858
+ #: modules/shortcodes/videopress.php:887
859
+ msgid "August"
860
+ msgstr "Srpen"
861
+
862
+ #: modules/shortcodes/videopress.php:887
863
+ msgid "September"
864
+ msgstr "Září"
865
+
866
+ #: modules/shortcodes/videopress.php:887
867
+ msgid "October"
868
+ msgstr "Říjen"
869
+
870
+ #: modules/shortcodes/videopress.php:887
871
+ msgid "November"
872
+ msgstr "Listopad"
873
+
874
+ #: modules/shortcodes/videopress.php:887
875
+ msgid "December"
876
+ msgstr "Prosinec"
877
+
878
+ #: modules/shortcodes/videopress.php:923
879
+ msgid "Submit"
880
+ msgstr "Potvrdit"
881
+
882
+ #: modules/shortcodes/videopress.php:969
883
+ msgid "You do not have sufficient <a rel=\"nofollow\" href=\"%s\">freedom levels</a> to view this video. Support free software and upgrade."
884
+ msgstr ""
885
+
886
+ #: modules/shortcodes/videopress.php:1027
887
+ msgctxt "watch a video title"
888
+ msgid "Watch: %s"
889
+ msgstr ""
890
+
891
+ #: modules/shortcodes/videopress.php:1123
892
+ #: modules/shortcodes/videopress.php:1145
893
+ msgid "this video"
894
+ msgstr ""
895
+
896
+ #: modules/shortcodes/videopress.php:1152
897
+ msgctxt "Play as in playback or view a movie"
898
+ msgid "JavaScript required to play %s."
899
+ msgstr ""
900
+
901
+ #: modules/shortcodes/videopress.php:1299
902
+ msgid "This video requires <a rel=\"nofollow\" href=\"%s\">Adobe Flash</a> for playback."
903
+ msgstr ""
904
+
905
+ #: modules/shortcodes/videopress.php:1306
906
+ msgid "Loading video..."
907
+ msgstr ""
908
+
909
+ #: modules/stats.php:252 modules/stats.php:645
910
+ msgid "Site Stats"
911
+ msgstr ""
912
+
913
+ #: modules/stats.php:343
914
+ msgid "Loading&hellip;"
915
+ msgstr ""
916
+
917
+ #: modules/stats.php:344
918
+ msgid "Your Site Stats work better with Javascript enabled."
919
+ msgstr ""
920
+
921
+ #: modules/stats.php:345
922
+ msgid "View Site Stats without Javascript"
923
+ msgstr ""
924
+
925
+ #: modules/stats.php:517
926
+ msgid "Visit <a href=\"%s\">Site Stats</a> to see your stats."
927
+ msgstr ""
928
+
929
+ #: modules/stats.php:522
930
+ msgid "Admin bar"
931
+ msgstr ""
932
+
933
+ #: modules/stats.php:523
934
+ msgid "Put a chart showing 48 hours of views in the admin bar."
935
+ msgstr ""
936
+
937
+ #: modules/stats.php:524
938
+ msgid "Registered users"
939
+ msgstr ""
940
+
941
+ #: modules/stats.php:525
942
+ msgid "Count the page views of registered users who are logged in."
943
+ msgstr ""
944
+
945
+ #: modules/stats.php:526
946
+ msgid "Smiley"
947
+ msgstr ""
948
+
949
+ #: modules/sharedaddy/sharing-sources.php:279
950
+ msgid "Send to Email Address"
951
+ msgstr ""
952
+
953
+ #: modules/sharedaddy/sharing-sources.php:287
954
+ msgid "Your Name"
955
+ msgstr "Vaše jméno"
956
+
957
+ #: modules/sharedaddy/sharing-sources.php:290
958
+ msgid "Your Email Address"
959
+ msgstr ""
960
+
961
+ #: modules/sharedaddy/sharing-sources.php:298
962
+ msgid "Send Email"
963
+ msgstr ""
964
+
965
+ #: modules/sharedaddy/sharing-sources.php:299
966
+ msgid "Cancel"
967
+ msgstr "Zrušit"
968
+
969
+ #: modules/sharedaddy/sharing-sources.php:302
970
+ msgid "Post was not sent - check your email addresses!"
971
+ msgstr ""
972
+
973
+ #: modules/sharedaddy/sharing-sources.php:306
974
+ msgid "Email check failed, please try again"
975
+ msgstr ""
976
+
977
+ #: modules/sharedaddy/sharing-sources.php:310
978
+ msgid "Sorry, your blog cannot share posts by email."
979
+ msgstr ""
980
+
981
+ #: modules/sharedaddy/sharing-sources.php:330 modules/widgets/twitter.php:22
982
+ msgid "Twitter"
983
+ msgstr ""
984
+
985
+ #: modules/sharedaddy/sharing-sources.php:376
986
+ msgctxt "share to"
987
+ msgid "Twitter"
988
+ msgstr ""
989
+
990
+ #: modules/sharedaddy/sharing-sources.php:376
991
+ msgid "Click to share on Twitter"
992
+ msgstr ""
993
+
994
+ #: modules/sharedaddy/sharing-sources.php:451
995
+ msgid "StumbleUpon"
996
+ msgstr ""
997
+
998
+ #: modules/sharedaddy/sharing-sources.php:462
999
+ msgctxt "share to"
1000
+ msgid "StumbleUpon"
1001
+ msgstr ""
1002
+
1003
+ #: modules/sharedaddy/sharing-sources.php:462
1004
+ msgid "Click to share on StumbleUpon"
1005
+ msgstr ""
1006
+
1007
+ #: modules/sharedaddy/sharing-sources.php:489
1008
+ #: modules/sharedaddy/sharing-sources.php:496
1009
+ msgid "Reddit"
1010
+ msgstr ""
1011
+
1012
+ #: modules/sharedaddy/sharing-sources.php:496
1013
+ msgid "Click to share on Reddit"
1014
+ msgstr ""
1015
+
1016
+ #: modules/sharedaddy/sharing-sources.php:523
1017
+ msgid "Digg"
1018
+ msgstr ""
1019
+
1020
+ #: modules/sharedaddy/sharing-sources.php:532
1021
+ #: modules/sharedaddy/sharing-sources.php:535
1022
+ msgid "Click to Digg this post"
1023
+ msgstr ""
1024
+
1025
+ #: modules/sharedaddy/sharing-sources.php:535
1026
+ msgctxt "share to"
1027
+ msgid "Digg"
1028
+ msgstr ""
1029
+
1030
+ #: modules/sharedaddy/sharing-sources.php:579
1031
+ msgid "LinkedIn"
1032
+ msgstr ""
1033
+
1034
+ #: modules/sharedaddy/sharing-sources.php:593
1035
+ msgctxt "share to"
1036
+ msgid "LinkedIn"
1037
+ msgstr ""
1038
+
1039
+ #: modules/sharedaddy/sharing-sources.php:593
1040
+ msgid "Click to share on LinkedIn"
1041
+ msgstr ""
1042
+
1043
+ #: modules/sharedaddy/sharing-sources.php:659
1044
+ msgid "Facebook"
1045
+ msgstr ""
1046
+
1047
+ #: modules/sharedaddy/sharing-sources.php:734
1048
+ msgctxt "share to"
1049
+ msgid "Facebook"
1050
+ msgstr ""
1051
+
1052
+ #: modules/sharedaddy/sharing-sources.php:734
1053
+ msgid "Share on Facebook"
1054
+ msgstr ""
1055
+
1056
+ #: modules/sharedaddy/sharing-sources.php:765
1057
+ msgid "Print"
1058
+ msgstr "Tisk"
1059
+
1060
+ #: modules/sharedaddy/sharing-sources.php:769
1061
+ msgctxt "share to"
1062
+ msgid "Print"
1063
+ msgstr ""
1064
+
1065
+ #: modules/sharedaddy/sharing-sources.php:769
1066
+ msgid "Click to print"
1067
+ msgstr ""
1068
+
1069
+ #: modules/sharedaddy/sharing-sources.php:785
1070
+ msgid "Press This"
1071
+ msgstr "Kliknout a publikovat"
1072
+
1073
+ #: modules/sharedaddy/sharing-sources.php:813
1074
+ msgctxt "share to"
1075
+ msgid "Press This"
1076
+ msgstr ""
1077
+
1078
+ #: modules/sharedaddy/sharing-sources.php:813
1079
+ msgid "Click to Press This!"
1080
+ msgstr ""
1081
+
1082
+ #: modules/sharedaddy/sharing-sources.php:831
1083
+ msgid "Google +1"
1084
+ msgstr ""
1085
+
1086
+ #: modules/sharedaddy/sharing-sources.php:846
1087
+ msgctxt "share to"
1088
+ msgid "Google +1"
1089
+ msgstr ""
1090
+
1091
+ #: modules/sharedaddy/sharing-sources.php:846
1092
+ msgid "Click to share on Google+"
1093
+ msgstr ""
1094
+
1095
+ #: modules/sharedaddy/sharing-sources.php:935
1096
+ msgid "Click to share"
1097
+ msgstr ""
1098
+
1099
+ #: modules/sharedaddy/sharing-sources.php:990
1100
+ msgid "URL"
1101
+ msgstr "URL"
1102
+
1103
+ #: modules/sharedaddy/sharing-sources.php:995
1104
+ msgid "Icon"
1105
+ msgstr ""
1106
+
1107
+ #: modules/sharedaddy/sharing-sources.php:1002
1108
+ msgid "Save"
1109
+ msgstr "Uložit"
1110
+
1111
+ #: modules/sharedaddy/sharing-sources.php:1003
1112
+ msgid "Remove Service"
1113
+ msgstr ""
1114
+
1115
+ #: modules/sharedaddy/sharing-sources.php:1082
1116
+ msgid "Tumblr"
1117
+ msgstr ""
1118
+
1119
+ #: modules/sharedaddy/sharing-sources.php:1093
1120
+ msgctxt "share to"
1121
+ msgid "Tumblr"
1122
+ msgstr ""
1123
+
1124
+ #: modules/sharedaddy/sharing-sources.php:1093
1125
+ msgid "Click to share on Tumblr"
1126
+ msgstr ""
1127
+
1128
+ #: modules/sharedaddy/sharing-sources.php:1129
1129
+ msgid "Pinterest"
1130
+ msgstr ""
1131
+
1132
+ #: modules/sharedaddy/sharing-sources.php:1159
1133
+ msgid "Pin It"
1134
+ msgstr ""
1135
+
1136
+ #: modules/sharedaddy/sharing-sources.php:1161
1137
+ msgctxt "share to"
1138
+ msgid "Pinterest"
1139
+ msgstr ""
1140
+
1141
+ #: modules/sharedaddy/sharing-sources.php:1161
1142
+ msgid "Click to share on Pinterest"
1143
+ msgstr ""
1144
+
1145
+ #: modules/sharedaddy/sharing.php:153
1146
+ msgid "Warning! Multibyte support missing!"
1147
+ msgstr ""
1148
+
1149
+ #: modules/sharedaddy/sharing.php:154
1150
+ msgid "This plugin will work without it, but multibyte support is used <a href=\"%s\">if available</a>. You may see minor problems with Tweets and other sharing services."
1151
+ msgstr ""
1152
+
1153
+ #: modules/sharedaddy/sharing.php:158
1154
+ msgid "Settings have been saved"
1155
+ msgstr ""
1156
+
1157
+ #: modules/sharedaddy/sharing.php:169
1158
+ msgid "Sharing Buttons"
1159
+ msgstr ""
1160
+
1161
+ #: modules/sharedaddy/sharing.php:170
1162
+ msgid "Add sharing buttons to your blog and allow your visitors to share posts with their friends."
1163
+ msgstr ""
1164
+
1165
+ #: modules/sharedaddy/sharing.php:176
1166
+ msgid "Available Services"
1167
+ msgstr ""
1168
+
1169
+ #: modules/sharedaddy/sharing.php:177
1170
+ msgid "Drag and drop the services you'd like to enable into the box below."
1171
+ msgstr ""
1172
+
1173
+ #: modules/sharedaddy/sharing.php:178
1174
+ msgid "Add a new service"
1175
+ msgstr ""
1176
+
1177
+ #: modules/sharedaddy/sharing.php:198
1178
+ msgid "Enabled Services"
1179
+ msgstr ""
1180
+
1181
+ #: modules/sharedaddy/sharing.php:201
1182
+ msgid "Services dragged here will appear individually."
1183
+ msgstr ""
1184
+
1185
+ #: modules/sharedaddy/sharing.php:204
1186
+ msgid "Drag and drop available services here."
1187
+ msgstr ""
1188
+
1189
+ #: modules/sharedaddy/sharing.php:215
1190
+ msgid "Services dragged here will be hidden behind a share button."
1191
+ msgstr ""
1192
+
1193
+ #: modules/sharedaddy/sharing.php:230
1194
+ msgid "Live Preview"
1195
+ msgstr ""
1196
+
1197
+ #: modules/sharedaddy/sharing.php:233
1198
+ msgid "Sharing is off. Add services above to enable."
1199
+ msgstr ""
1200
+
1201
+ #: modules/module-info.php:638
1202
+ msgid "When you write great content, all you really want is people to find it, right?"
1203
+ msgstr ""
1204
+
1205
+ #: modules/module-info.php:640
1206
+ msgid "With the Infinite Scroll module and a supported theme, that's exactly what happens. Instead of the old way of navigating down a page by scrolling and then clicking a link to get to the next page, waiting for a page refresh&mdash;the document model of the web&mdash;infinite scrolling pulls the next set of posts automatically into view when the reader approaches the bottom of the page, more like an application."
1207
+ msgstr ""
1208
+
1209
+ #: modules/module-info.php:643
1210
+ msgid "At this time, your theme, %s, doesn't support Infinite Scroll. Unlike other Jetpack modules, Infinite Scroll needs information from your theme to function properly."
1211
+ msgstr ""
1212
+
1213
+ #: modules/module-info.php:645
1214
+ msgid "Until your theme supports Infinite Scroll, you won't be able to activate this module."
1215
+ msgstr ""
1216
+
1217
+ #: modules/module-info.php:655
1218
+ msgid "There is an update available for your theme. You may wish to check if this update adds Infinite Scroll support by visiting the <a href=\"%s\">WordPress Updates</a> page."
1219
+ msgstr ""
1220
+
1221
+ #: modules/module-info.php:675 modules/module-info.php:678
1222
+ #: modules/post-by-email.php:89
1223
+ msgid "Post by Email"
1224
+ msgstr ""
1225
+
1226
+ #: modules/module-info.php:680
1227
+ msgid "Post by Email is a way of publishing posts on your blog by email. Any email client can be used to send the email, allowing you to publish quickly and easily from devices such as cell phones."
1228
+ msgstr ""
1229
+
1230
+ #: modules/module-info.php:684
1231
+ msgid "Manage your Post By Email address from your <a href=\"%s\">profile settings</a>."
1232
+ msgstr ""
1233
+
1234
+ #: modules/module-info.php:688
1235
+ msgid "More information on sending emails, attachments, and customizing your posts."
1236
+ msgstr ""
1237
+
1238
+ #: modules/module-info.php:708
1239
+ msgid "Photon"
1240
+ msgstr ""
1241
+
1242
+ #: modules/module-info.php:710
1243
+ msgid "Give your site a boost by loading images in post and posts' featured images from the WordPress.com content delivery network. We cache your images and serve them from our super-fast network, reducing the burden on your web host with the click of a button."
1244
+ msgstr ""
1245
+
1246
+ #: modules/post-by-email.php:92 modules/subscriptions.php:596
1247
+ msgid "Email Address"
1248
+ msgstr "Emailová adresa"
1249
+
1250
+ #: modules/post-by-email.php:107
1251
+ msgid "Enable Post By Email"
1252
+ msgstr ""
1253
+
1254
+ #: modules/post-by-email.php:111 modules/shortcodes/videopress.php:926
1255
+ msgid "More information"
1256
+ msgstr ""
1257
+
1258
+ #: modules/post-by-email.php:114
1259
+ msgid "Regenerate Address"
1260
+ msgstr ""
1261
+
1262
+ #: modules/post-by-email.php:115
1263
+ msgid "Disable Post By Email"
1264
+ msgstr ""
1265
+
1266
+ #: modules/post-by-email.php:123
1267
+ msgid "To use Post By Email, you need to link your %s account to your WordPress.com account."
1268
+ msgstr ""
1269
+
1270
+ #: modules/post-by-email.php:126 modules/publicize/publicize-jetpack.php:58
1271
+ msgid "If you don't have a WordPress.com account yet, you can sign up for free in just a few seconds."
1272
+ msgstr ""
1273
+
1274
+ #: modules/post-by-email.php:167 modules/post-by-email.php:176
1275
+ msgid "Unable to create your Post By Email address. Please try again later."
1276
+ msgstr ""
1277
+
1278
+ #: modules/post-by-email.php:195 modules/post-by-email.php:204
1279
+ msgid "Unable to regenerate your Post By Email address. Please try again later."
1280
+ msgstr ""
1281
+
1282
+ #: modules/post-by-email.php:223 modules/post-by-email.php:232
1283
+ msgid "Unable to disable your Post By Email address. Please try again later."
1284
+ msgstr ""
1285
+
1286
+ #: modules/publicize/publicize-jetpack.php:55
1287
+ msgid "To use Publicize, you'll need to link your %s account to your WordPress.com account using the button to the right."
1288
+ msgstr ""
1289
+
1290
+ #: modules/publicize/publicize-jetpack.php:165
1291
+ msgid "There was a problem connecting to %s to create an authorized connection. Please try again in a moment."
1292
+ msgstr ""
1293
+
1294
+ #: modules/publicize/publicize-jetpack.php:167
1295
+ msgid "There was a problem connecting with Publicize. Please try again in a moment."
1296
+ msgstr ""
1297
+
1298
+ #: modules/publicize/publicize-jetpack.php:313
1299
+ #: modules/publicize/publicize-jetpack.php:329
1300
+ #: modules/publicize/publicize-jetpack.php:453
1301
+ msgid "Publicize to my %s:"
1302
+ msgstr ""
1303
+
1304
+ #: modules/publicize/publicize-jetpack.php:314
1305
+ msgid "Facebook Wall"
1306
+ msgstr ""
1307
+
1308
+ #: modules/publicize/publicize-jetpack.php:330
1309
+ msgid "Facebook Page"
1310
+ msgstr ""
1311
+
1312
+ #: modules/publicize/publicize-jetpack.php:361
1313
+ #: modules/publicize/publicize-jetpack.php:473 modules/publicize/ui.php:214
1314
+ msgid "OK"
1315
+ msgstr "OK"
1316
+
1317
+ #: modules/publicize/publicize-jetpack.php:454
1318
+ msgid "Tumblr blog"
1319
+ msgstr ""
1320
+
1321
+ #: modules/publicize/ui.php:35 modules/publicize/ui.php:45
1322
+ #: modules/sharedaddy/sharing.php:57 modules/sharedaddy/sharing.php:163
1323
+ msgid "Sharing Settings"
1324
+ msgstr ""
1325
+
1326
+ #: modules/publicize/ui.php:76
1327
+ msgid "You have successfully connected your blog with your %s account."
1328
+ msgstr ""
1329
+
1330
+ #: modules/publicize/ui.php:91
1331
+ msgid "Connect your blog to popular social networking sites and automatically share new posts with your friends."
1332
+ msgstr ""
1333
+
1334
+ #: modules/publicize/ui.php:92
1335
+ msgid "You can make a connection for just yourself or for all users on your blog. Shared connections are marked with the (Shared) text."
1336
+ msgstr ""
1337
+
1338
+ #: modules/publicize/ui.php:153
1339
+ msgid "Shared"
1340
+ msgstr ""
1341
+
1342
+ #: modules/publicize/ui.php:156 modules/publicize/ui.php:160
1343
+ msgid "Disconnect"
1344
+ msgstr ""
1345
+
1346
+ #: modules/publicize/ui.php:169
1347
+ msgid "Add new %s connection."
1348
+ msgstr ""
1349
+
1350
+ #: modules/publicize/ui.php:185
1351
+ msgid "Make this connection available to all users of this blog?"
1352
+ msgstr ""
1353
+
1354
+ #: modules/publicize/ui.php:193
1355
+ msgid "There was a problem connecting to %s. Please disconnect and try again."
1356
+ msgstr ""
1357
+
1358
+ #: modules/publicize/ui.php:383
1359
+ msgid "Publicize:"
1360
+ msgstr ""
1361
+
1362
+ #: modules/publicize/ui.php:429
1363
+ msgctxt "Service: Account connected as"
1364
+ msgid "%1$s: %2$s"
1365
+ msgstr ""
1366
+
1367
+ #: modules/publicize/ui.php:464
1368
+ msgid "Custom Message:"
1369
+ msgstr ""
1370
+
1371
+ #: modules/publicize/ui.php:469 modules/publicize/ui.php:498
1372
+ #: modules/publicize/ui.php:500
1373
+ msgid "Hide"
1374
+ msgstr "Skrýt"
1375
+
1376
+ #: modules/publicize/ui.php:478
1377
+ msgid "Not Connected"
1378
+ msgstr ""
1379
+
1380
+ #: modules/publicize/ui.php:485
1381
+ msgid "Connect to"
1382
+ msgstr ""
1383
+
1384
+ #: modules/publicize/ui.php:490
1385
+ msgid "Connect and share your posts on %s"
1386
+ msgstr ""
1387
+
1388
+ #: modules/publicize/ui.php:513
1389
+ msgid "Show"
1390
+ msgstr "Zobrazit"
1391
+
1392
+ #: modules/publicize.php:87
1393
+ msgctxt "word count: words or characters?"
1394
+ msgid "words"
1395
+ msgstr ""
1396
+
1397
+ #: modules/sharedaddy/sharedaddy.php:18
1398
+ msgid "Shared Post"
1399
+ msgstr ""
1400
+
1401
+ #: modules/sharedaddy/sharedaddy.php:35
1402
+ msgid "Show sharing buttons."
1403
+ msgstr ""
1404
+
1405
+ #: modules/sharedaddy/sharedaddy.php:112
1406
+ msgid "Disable CSS and JS"
1407
+ msgstr ""
1408
+
1409
+ #: modules/sharedaddy/sharedaddy.php:114
1410
+ msgid "Advanced. If this option is checked, you must include these files in your theme manually for the sharing links to work."
1411
+ msgstr ""
1412
+
1413
+ #: modules/sharedaddy/sharing-service.php:12
1414
+ msgid "Share this:"
1415
+ msgstr ""
1416
+
1417
+ #: modules/sharedaddy/sharing-service.php:523
1418
+ #: modules/sharedaddy/sharing.php:245 modules/sharedaddy/sharing.php:278
1419
+ msgid "More"
1420
+ msgstr ""
1421
+
1422
+ #: modules/sharedaddy/sharing-service.php:525
1423
+ msgid "Share"
1424
+ msgstr ""
1425
+
1426
+ #: modules/sharedaddy/sharing-sources.php:242
1427
+ msgid "This post has been shared!"
1428
+ msgstr ""
1429
+
1430
+ #: modules/sharedaddy/sharing-sources.php:243
1431
+ msgid "You have shared this post with %s"
1432
+ msgstr ""
1433
+
1434
+ #: modules/sharedaddy/sharing-sources.php:244
1435
+ msgid "Close"
1436
+ msgstr "Zavřít"
1437
+
1438
+ #: modules/sharedaddy/sharing-sources.php:266
1439
+ msgctxt "share to"
1440
+ msgid "Email"
1441
+ msgstr ""
1442
+
1443
+ #: modules/sharedaddy/sharing-sources.php:266
1444
+ msgid "Click to email this to a friend"
1445
+ msgstr ""
1446
+
1447
+ #: modules/module-info.php:315 modules/module-info.php:318
1448
+ #: modules/module-info.php:339 modules/publicize/ui.php:35
1449
+ #: modules/sharedaddy/sharedaddy.php:25 modules/sharedaddy/sharing.php:57
1450
+ msgid "Sharing"
1451
+ msgstr ""
1452
+
1453
+ #: modules/module-info.php:319
1454
+ msgid "Share your posts with Twitter, Facebook, and a host of other services. You can configure services to appear as icons, text, or both. Some services have additional options to display smart buttons, such as Twitter, which will update the number of times the post has been shared."
1455
+ msgstr ""
1456
+
1457
+ #: modules/module-info.php:323
1458
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, PressThis, Digg, LinkedIn, Google +1, Print, and Email."
1459
+ msgstr ""
1460
+
1461
+ #: modules/module-info.php:325
1462
+ msgid "The following services are included: Twitter, Facebook, Reddit, StumbleUpon, Digg, LinkedIn, Google +1, Print, and Email."
1463
+ msgstr ""
1464
+
1465
+ #: modules/module-info.php:329
1466
+ msgid "Additionally you can define your own custom services."
1467
+ msgstr ""
1468
+
1469
+ #: modules/module-info.php:344
1470
+ msgid "To configure your sharing settings, go to the Settings &rarr; <a href=\"%s\">Sharing</a> menu."
1471
+ msgstr ""
1472
+
1473
+ #: modules/module-info.php:345
1474
+ msgid "Drag and drop sharing services into the enabled section to have them show up on your site, and drag them into the hidden section to have them hidden behind a button."
1475
+ msgstr ""
1476
+
1477
+ #: modules/module-info.php:351
1478
+ msgid "Full details can be found on the <a href=\"%s\">Sharing support page</a>. This video also gives a swish run-down of how to use the Sharing feature. Watch it in HD for extra snazz!"
1479
+ msgstr ""
1480
+
1481
+ #: modules/module-info.php:366 modules/module-info.php:370
1482
+ msgid "Spelling and Grammar"
1483
+ msgstr ""
1484
+
1485
+ #: modules/module-info.php:372
1486
+ msgid "The <a href='%s'>After&nbsp;the&nbsp;Deadline</a> Proofreading service improves your writing by using artificial intelligence to find your errors and offer smart suggestions."
1487
+ msgstr ""
1488
+
1489
+ #: modules/module-info.php:373
1490
+ msgid "After the Deadline provides a number of <a href=\"%s\">customization options</a>, which you can edit in your profile."
1491
+ msgstr ""
1492
+
1493
+ #: modules/module-info.php:387 modules/module-info.php:401
1494
+ msgid "Widgets Screenshot"
1495
+ msgstr ""
1496
+
1497
+ #: modules/module-info.php:390 modules/module-info.php:404
1498
+ msgid "Extra Sidebar Widgets"
1499
+ msgstr ""
1500
+
1501
+ #: modules/module-info.php:392
1502
+ msgid "The RSS Links Widget "
1503
+ msgstr ""
1504
+
1505
+ #: modules/module-info.php:392
1506
+ msgid "allows you to add links to your blog&#8217;s post and comment RSS feeds in your sidebar. This makes it easy for your readers to stay updated when you post new content or receive new comments."
1507
+ msgstr ""
1508
+
1509
+ #: modules/module-info.php:393
1510
+ msgid "The Twitter Widget "
1511
+ msgstr ""
1512
+
1513
+ #: modules/module-info.php:393
1514
+ msgid "shows your latest tweets within a sidebar on your theme. It&#8217;s an easy way to add more activity to your site. There are also a number of customization options."
1515
+ msgstr ""
1516
+
1517
+ #: modules/module-info.php:393
1518
+ msgid "The Facebook Like Box Widget "
1519
+ msgstr ""
1520
+
1521
+ #: modules/module-info.php:393
1522
+ msgid "shows your Facebook Like Box within a sidebar on your theme. It&#8217;s a great way to let your readers show their support."
1523
+ msgstr ""
1524
+
1525
+ #: modules/module-info.php:393
1526
+ msgid "The Image Widget "
1527
+ msgstr ""
1528
+
1529
+ #: modules/module-info.php:393
1530
+ msgid "allows you to easily add images to widget areas in your theme. It&#8217;s an easy way to add more visual interest to your site."
1531
+ msgstr ""
1532
+
1533
+ #: modules/module-info.php:406
1534
+ msgid "The RSS Links Widget"
1535
+ msgstr ""
1536
+
1537
+ #: modules/module-info.php:406
1538
+ msgid "lets you easily add post and comment RSS feeds to a sidebar on your theme."
1539
+ msgstr ""
1540
+
1541
+ #: modules/module-info.php:407
1542
+ msgid "The Twitter Widget"
1543
+ msgstr ""
1544
+
1545
+ #: modules/module-info.php:407
1546
+ msgid "shows your latest tweets within a sidebar on your theme."
1547
+ msgstr ""
1548
+
1549
+ #: modules/module-info.php:408
1550
+ msgid "The Facebook Like Box Widget"
1551
+ msgstr ""
1552
+
1553
+ #: modules/module-info.php:408
1554
+ msgid "shows your Facebook Like Box within a sidebar on your theme."
1555
+ msgstr ""
1556
+
1557
+ #: modules/module-info.php:409
1558
+ msgid "The Image Widget"
1559
+ msgstr ""
1560
+
1561
+ #: modules/module-info.php:409
1562
+ msgid "lets you easily add images to a sidebar on your theme."
1563
+ msgstr ""
1564
+
1565
+ #: modules/module-info.php:411
1566
+ msgid "Each of these widgets has a number of customization options."
1567
+ msgstr ""
1568
+
1569
+ #: modules/module-info.php:411
1570
+ msgid "To use the widgets, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag them into one of your sidebars and configure away."
1571
+ msgstr ""
1572
+
1573
+ #: modules/module-info.php:424
1574
+ msgid "Subsriptions Screenshot"
1575
+ msgstr ""
1576
+
1577
+ #: modules/module-info.php:427
1578
+ msgid "Subscriptions"
1579
+ msgstr ""
1580
+
1581
+ #: modules/module-info.php:429
1582
+ msgid "Easily allow any visitor to subscribe to all of your posts via email through a widget in your blog&#8217;s sidebar. Every time you publish a post, WordPress.com will send a notification to all your subscribers."
1583
+ msgstr ""
1584
+
1585
+ #: modules/module-info.php:430
1586
+ msgid "When leaving comments, your visitors can also subscribe to a post&#8217;s comments to keep up with the conversation."
1587
+ msgstr ""
1588
+
1589
+ #: modules/module-info.php:435
1590
+ msgid "To use the Subscriptions widget, go to Appearance &#8594; <a href=\"%s\">Widgets</a>. Drag the widget labeled &#8220;Blog Subscriptions (Jetpack)&#8221; into one of your sidebars and configure away."
1591
+ msgstr ""
1592
+
1593
+ #: modules/module-info.php:436
1594
+ msgid "You can also make changes to your Subscription settings at the bottom of the <a href=\"%s\">Discussion Settings</a> page."
1595
+ msgstr ""
1596
+
1597
+ #: modules/module-info.php:449
1598
+ msgid "Enhanced Distribution"
1599
+ msgstr ""
1600
+
1601
+ #: modules/module-info.php:451
1602
+ msgid "Jetpack will automatically take the great published content from your blog or website and share it instantly with third party services like search engines, increasing your reach and traffic."
1603
+ msgstr ""
1604
+
1605
+ #: modules/module-info.php:466
1606
+ msgid "JSON API"
1607
+ msgstr ""
1608
+
1609
+ #: modules/module-info.php:468
1610
+ msgid "Jetpack will allow you to authorize applications and services to securely connect to your blog and allow them to use your content in new ways and offer you new functionality."
1611
+ msgstr ""
1612
+
1613
+ #: modules/module-info.php:470
1614
+ msgid "Developers can use WordPress.com's <a href='http://developer.wordpress.com/docs/oauth2/'>OAuth2</a> authentication system and <a href='http://developer.wordpress.com/docs/api/'>WordPress.com REST API</a> to manage and access your site's content."
1615
+ msgstr ""
1616
+
1617
+ #: modules/module-info.php:498
1618
+ msgid "A contact form is a great way to offer your readers the ability to get in touch, without giving out your personal email address."
1619
+ msgstr ""
1620
+
1621
+ #: modules/module-info.php:501
1622
+ msgid "Each contact form can easily be customized to fit your needs. When a user submits your contact form, the feedback will be filtered through <a href=\"http://akismet.com/\">Akismet</a> (if it is active on your site) to make sure it’s not spam. Any legitimate feedback will then be emailed to you, and added to your feedback management area."
1623
+ msgstr ""
1624
+
1625
+ #: modules/module-info.php:518
1626
+ msgid "Jetpack Comments Screenshot"
1627
+ msgstr ""
1628
+
1629
+ #: modules/module-info.php:523
1630
+ msgid "Jetpack Comments enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site."
1631
+ msgstr ""
1632
+
1633
+ #: modules/module-info.php:528
1634
+ msgid "Jetpack tries to match your site's color scheme automatically, but you can make manual adjustments at the bottom of the <a href='%s'>Discussion Settings</a> page."
1635
+ msgstr ""
1636
+
1637
+ #: modules/module-info.php:549
1638
+ msgid "Gallery Carousel Screenshot"
1639
+ msgstr ""
1640
+
1641
+ #: modules/module-info.php:552
1642
+ msgid "Carousel"
1643
+ msgstr ""
1644
+
1645
+ #: modules/module-info.php:554
1646
+ msgid "With Carousel active, any standard WordPress galleries you have embedded in posts or pages will launch a gorgeous full-screen photo browsing experience with comments and EXIF metadata."
1647
+ msgstr ""
1648
+
1649
+ #: modules/module-info.php:567 modules/module-info.php:570
1650
+ msgid "Custom CSS"
1651
+ msgstr ""
1652
+
1653
+ #: modules/module-info.php:571
1654
+ msgid "The Custom CSS editor gives you the ability to add to or replace your theme's CSS, all while supplying syntax coloring, auto-indentation, and immediate feedback on the validity of the CSS you're writing."
1655
+ msgstr ""
1656
+
1657
+ #: modules/module-info.php:572
1658
+ msgid "To use the CSS editor, go to Appearance &#8594; <a href=\"%s\">Edit CSS</a>."
1659
+ msgstr ""
1660
+
1661
+ #: modules/module-info.php:589 modules/module-info.php:592
1662
+ msgid "Mobile Theme"
1663
+ msgstr ""
1664
+
1665
+ #: modules/module-info.php:593
1666
+ msgid "There's a good chance that visitors to your site will be using a smartphone, and it's important to provide them with a great reading experience while on the small screen."
1667
+ msgstr ""
1668
+
1669
+ #: modules/module-info.php:594
1670
+ msgid "Jetpack's mobile theme is optimized for small screens. It uses the header image, background, and widgets from your current theme for a great custom look. Post format support is included, so your photos and galleries will look fantastic on a smartphone."
1671
+ msgstr ""
1672
+
1673
+ #: modules/module-info.php:595
1674
+ msgid "Visitors on iPhone, Android, Windows Phone, and other mobile devices will automatically see the mobile theme, with the option to view the full site. You can enable or disable the mobile theme by clicking the \"Activate\" or \"Deactive\" button above."
1675
+ msgstr ""
1676
+
1677
+ #: modules/module-info.php:611 modules/module-info.php:614
1678
+ msgid "Mobile Push Notifications"
1679
+ msgstr ""
1680
+
1681
+ #: modules/module-info.php:616
1682
+ msgid "If you have your blog added to the <a href=\"http://ios.wordpress.org/\">WordPress for iOS app</a>, you’ll now be able to opt in to receive push notifications of new comments, which makes it easier than ever to keep up with your readers and moderate comments on the go."
1683
+ msgstr ""
1684
+
1685
+ #: modules/module-info.php:635
1686
+ msgid "Infinite Scroll"
1687
+ msgstr ""
1688
+
1689
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:70
1690
+ msgid "Your comment is awaiting moderation."
1691
+ msgstr "Komentář čeká na schválení."
1692
+
1693
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:79
1694
+ msgid "Reply <span>&darr;</span>"
1695
+ msgstr ""
1696
+
1697
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:93
1698
+ msgid "<span class=\"entry-date\"><a href=\"%1$s\" title=\"%2$s\" rel=\"bookmark\"><time datetime=\"%3$s\" pubdate>%4$s</time></a></span>"
1699
+ msgstr ""
1700
+
1701
+ #: modules/minileven/theme/pub/minileven/index.php:23
1702
+ msgid "Daily Archives: %s"
1703
+ msgstr "Denní archívy: %s"
1704
+
1705
+ #: modules/minileven/theme/pub/minileven/index.php:25
1706
+ msgid "Monthly Archives: %s"
1707
+ msgstr "Měsíční archivy: %s"
1708
+
1709
+ #: modules/minileven/theme/pub/minileven/index.php:27
1710
+ msgid "Yearly Archives: %s"
1711
+ msgstr "Roční archívy: %s"
1712
+
1713
+ #: modules/minileven/theme/pub/minileven/index.php:29
1714
+ msgid "Posted in %s"
1715
+ msgstr "Zasláno do %s"
1716
+
1717
+ #: modules/minileven/theme/pub/minileven/index.php:31
1718
+ msgid "Tagged with %s"
1719
+ msgstr ""
1720
+
1721
+ #: modules/minileven/theme/pub/minileven/index.php:33
1722
+ msgid "Posted by"
1723
+ msgstr ""
1724
+
1725
+ #: modules/minileven/theme/pub/minileven/index.php:35
1726
+ msgid "Blog Archives"
1727
+ msgstr "Archiv"
1728
+
1729
+ #: modules/minileven/theme/pub/minileven/index.php:43
1730
+ msgid "Search Results for: %s"
1731
+ msgstr "Výsledky vyhledávání pro: %s"
1732
+
1733
+ #: modules/minileven/theme/pub/minileven/index.php:57
1734
+ msgid "Nothing Found"
1735
+ msgstr "Nenalezeno"
1736
+
1737
+ #: modules/minileven/theme/pub/minileven/index.php:61
1738
+ msgid "Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post."
1739
+ msgstr "Omlouváme se, ale pro vybraný archiv nebyl nalezen žádný příspěvek. Možná se vám ale podaří najít nějaký související příspěvek pomocí vyhledávání."
1740
+
1741
+ #: modules/minileven/theme/pub/minileven/searchform.php:9
1742
+ #: modules/minileven/theme/pub/minileven/searchform.php:10
1743
+ #: modules/minileven/theme/pub/minileven/searchform.php:11
1744
+ msgid "Search"
1745
+ msgstr "Hledat"
1746
+
1747
+ #: modules/minileven.php:48
1748
+ msgid "Excerpts"
1749
+ msgstr ""
1750
+
1751
+ #: modules/minileven.php:52
1752
+ msgid "Enable excerpts on front page and on archive pages"
1753
+ msgstr ""
1754
+
1755
+ #: modules/minileven.php:57
1756
+ msgid "Show full posts on front page and on archive pages"
1757
+ msgstr ""
1758
+
1759
+ #: modules/minileven.php:62
1760
+ msgid "Mobile App Promos"
1761
+ msgstr ""
1762
+
1763
+ #: modules/minileven.php:66
1764
+ msgid "Show a promo for the WordPress mobile apps in the footer of the mobile theme."
1765
+ msgstr ""
1766
+
1767
+ #: modules/minileven.php:75
1768
+ msgid "Mobile Apps"
1769
+ msgstr ""
1770
+
1771
+ #: modules/minileven.php:76
1772
+ msgid "Take WordPress with you."
1773
+ msgstr ""
1774
+
1775
+ #: modules/minileven.php:78
1776
+ msgid "We have apps for <a href=\"%s\">iOS (iPhone, iPad, iPod Touch)</a>, <a href=\"%s\">Android</a>, <a href=\"%s\">BlackBerry</a>, <a href=\"%s\">Windows Phone</a>, and <a href=\"%s\">more</a>!"
1777
+ msgstr ""
1778
+
1779
+ #: modules/module-info.php:22 modules/module-info.php:26
1780
+ msgid "VaultPress"
1781
+ msgstr ""
1782
+
1783
+ #: modules/module-info.php:28
1784
+ msgid "Your WordPress installation is currently being protected with the world&#8217;s best security, backup, and support."
1785
+ msgstr ""
1786
+
1787
+ #: modules/module-info.php:29
1788
+ msgctxt "Visit your _VaultPress_dashboard_."
1789
+ msgid "To check your backups, see any security alerts, or check your VaultPress Vitality, visit your %s."
1790
+ msgstr ""
1791
+
1792
+ #: modules/module-info.php:29
1793
+ msgid "VaultPress dashboard"
1794
+ msgstr ""
1795
+
1796
+ #: modules/module-info.php:31
1797
+ msgid "With a monthly subscription, the VaultPress plugin will backup your site&#8217;s content, themes, and plugins in real-time, as well as perform regular security scans for common threats and attacks."
1798
+ msgstr ""
1799
+
1800
+ #: modules/module-info.php:32
1801
+ msgctxt "View _Plans_&_Pricing_. (VaultPress)"
1802
+ msgid "View %s."
1803
+ msgstr ""
1804
+
1805
+ #: modules/module-info.php:32
1806
+ msgid "Plans & Pricing"
1807
+ msgstr ""
1808
+
1809
+ #: modules/module-info.php:53 modules/module-info.php:68
1810
+ msgid "Gravatar Hovercard"
1811
+ msgstr ""
1812
+
1813
+ #: modules/module-info.php:58 modules/module-info.php:73
1814
+ msgid "What&#8217;s a Hovercard?"
1815
+ msgstr ""
1816
+
1817
+ #: modules/module-info.php:59
1818
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services they use on the web like Twitter, Facebook, or LinkedIn."
1819
+ msgstr ""
1820
+
1821
+ #: modules/module-info.php:60
1822
+ msgid "Hovercards offer a great way to show your internet presence and help people find your own blog."
1823
+ msgstr ""
1824
+
1825
+ #: modules/module-info.php:74
1826
+ msgid "Hovercards enhance plain Gravatar images with information about a person: name, bio, pictures, their contact info, and other services."
1827
+ msgstr ""
1828
+
1829
+ #: modules/module-info.php:75
1830
+ msgid "To see hovercards, look at any blog post on your blog that has comments. If the commenter has a hovercard associated with their gravatar, mouse over their image and the hovercard will appear. To turn hovercards off, click the Deactivate button above."
1831
+ msgstr ""
1832
+
1833
+ #: modules/module-info.php:90 modules/module-info.php:94
1834
+ #: modules/module-info.php:103 modules/module-info.php:107
1835
+ msgid "Shortcode Embeds"
1836
+ msgstr ""
1837
+
1838
+ #: modules/module-info.php:95 modules/module-info.php:108
1839
+ msgid "Shortcodes allow you to easily and safely embed media from other places in your site. With just one simple code, you can tell WordPress to embed YouTube, Flickr, and other media."
1840
+ msgstr ""
1841
+
1842
+ #: modules/module-info.php:109
1843
+ msgid "Enter a shortcode directly into the Post/Page editor to embed media. For specific instructions follow the links below."
1844
+ msgstr ""
1845
+
1846
+ #: modules/module-info.php:132
1847
+ msgid "Available shortcodes are: %l."
1848
+ msgstr ""
1849
+
1850
+ #: modules/module-info.php:147 modules/module-info.php:151
1851
+ #: modules/module-info.php:161 modules/module-info.php:165
1852
+ msgid "WP.me Shortlinks"
1853
+ msgstr ""
1854
+
1855
+ #: modules/module-info.php:152 modules/module-info.php:166
1856
+ msgid "Instead of typing or copy-pasting long URLs, you can now get a short and simple link to your posts and pages. This uses the super compact wp.me domain name, and gives you a unique URL you can use that will be safe and reliable."
1857
+ msgstr ""
1858
+
1859
+ #: modules/module-info.php:153
1860
+ msgid "It&#8217;s perfect for use on Twitter, Facebook, and cell phone text messages where every character counts."
1861
+ msgstr ""
1862
+
1863
+ #: modules/module-info.php:167
1864
+ msgid "To use shortlinks, go to any already published post (or publish something new!). A &#8220;Get Shortlink&#8221; button will be visible under the Post title. When you click it, a dialog box will appear with the shortlink and you can copy and paste to Twitter, Facebook or wherever your heart desires."
1865
+ msgstr ""
1866
+
1867
+ #: modules/module-info.php:182 modules/module-info.php:186
1868
+ #: modules/module-info.php:195 modules/module-info.php:199
1869
+ msgid "WordPress.com Stats"
1870
+ msgstr ""
1871
+
1872
+ #: modules/module-info.php:187 modules/module-info.php:200
1873
+ msgid "There are many plugins and services that provide statistics, but data can be overwhelming. WordPress.com Stats makes the most popular metrics easy to understand through a clear and attractive interface."
1874
+ msgstr ""
1875
+
1876
+ #: modules/module-info.php:201
1877
+ msgid "You can <a href=\"%s\">view your stats dashboard here</a>."
1878
+ msgstr ""
1879
+
1880
+ #: modules/module-info.php:215 modules/module-info.php:219
1881
+ #: modules/publicize/ui.php:89
1882
+ msgid "Publicize"
1883
+ msgstr ""
1884
+
1885
+ #: modules/module-info.php:220
1886
+ msgid "Publicize allows you to connect your blog to popular social networking sites and automatically share new posts with your friends.\t You can make a connection for just yourself or for all users on your blog."
1887
+ msgstr ""
1888
+
1889
+ #: modules/module-info.php:221
1890
+ msgid "Publicize allows you to share your posts on Facebook, Twitter, Tumblr, Yahoo!, and Linkedin."
1891
+ msgstr ""
1892
+
1893
+ #: modules/module-info.php:225
1894
+ msgid "Manage your <a href=\"%s\">Publicize settings</a>."
1895
+ msgstr ""
1896
+
1897
+ #: modules/module-info.php:229 modules/publicize/ui.php:102
1898
+ msgid "More information on using Publicize."
1899
+ msgstr ""
1900
+
1901
+ #: modules/module-info.php:245 modules/module-info.php:249
1902
+ #: modules/module-info.php:258 modules/module-info.php:262
1903
+ #: modules/notes.php:106
1904
+ msgid "Notifications"
1905
+ msgstr ""
1906
+
1907
+ #: modules/module-info.php:250 modules/module-info.php:263
1908
+ msgid "Keep up with the latest happenings on all your WordPress sites and interact with other WordPress.com users."
1909
+ msgstr ""
1910
+
1911
+ #: modules/module-info.php:264
1912
+ msgid "You can view your notifications in the Toolbar and <a href=\"%s\">on WordPress.com</a>."
1913
+ msgstr ""
1914
+
1915
+ #: modules/module-info.php:279 modules/module-info.php:294
1916
+ msgid "LaTeX"
1917
+ msgstr ""
1918
+
1919
+ #: modules/module-info.php:284 modules/module-info.php:299
1920
+ msgid "%s is a powerful markup language for writing complex mathematical equations, formulas, etc."
1921
+ msgstr ""
1922
+
1923
+ #: modules/module-info.php:285
1924
+ msgid "Jetpack combines the power of %s and the simplicity of WordPress to give you the ultimate in math blogging platforms."
1925
+ msgstr ""
1926
+
1927
+ #: modules/module-info.php:286
1928
+ msgid "Wow, that sounds nerdy."
1929
+ msgstr ""
1930
+
1931
+ #: modules/module-info.php:300
1932
+ msgid "Use <code>$latex your latex code here$</code> or <code>[latex]your latex code here[/latex]</code> to include %s in your posts and comments. There are <a href=\"%s\" target=\"_blank\">all sorts of options</a> available."
1933
+ msgstr ""
1934
+
1935
+ #: modules/custom-css/custom-css.php:865
1936
+ msgid "Preview"
1937
+ msgstr "Náhled"
1938
+
1939
+ #: modules/custom-css/custom-css.php:866
1940
+ msgid "Save Stylesheet &amp; Buy Upgrade"
1941
+ msgstr ""
1942
+
1943
+ #: modules/custom-css/custom-css.php:866
1944
+ msgid "Save Stylesheet"
1945
+ msgstr ""
1946
+
1947
+ #: modules/custom-css/custom-css.php:871
1948
+ msgid "CSS Settings"
1949
+ msgstr ""
1950
+
1951
+ #: modules/custom-css/custom-css.php:878
1952
+ msgid "CSS Revisions"
1953
+ msgstr ""
1954
+
1955
+ #: modules/custom-css/custom-css.php:916
1956
+ msgid "Add my CSS to <strong>%s&apos;s</strong> CSS stylesheet."
1957
+ msgstr ""
1958
+
1959
+ #: modules/custom-css/custom-css.php:917
1960
+ msgid "Don&apos;t use <strong>%s&apos;s</strong> CSS, and replace everything with my own CSS."
1961
+ msgstr ""
1962
+
1963
+ #: modules/custom-css/custom-css.php:919
1964
+ msgid "<a href=\"%s\">View the original stylesheet</a> for the %s theme. Use this as a reference and do not copy and paste all of it into the CSS Editor."
1965
+ msgstr ""
1966
+
1967
+ #: modules/gravatar-hovercards.php:44 modules/module-info.php:57
1968
+ #: modules/module-info.php:72
1969
+ msgid "Gravatar Hovercards"
1970
+ msgstr ""
1971
+
1972
+ #: modules/gravatar-hovercards.php:56
1973
+ msgid "View people's profiles when you mouse over their Gravatars"
1974
+ msgstr ""
1975
+
1976
+ #: modules/gravatar-hovercards.php:83
1977
+ msgid "Put your mouse over your Gravatar to check out your profile."
1978
+ msgstr ""
1979
+
1980
+ #: modules/infinite-scroll/infinity.php:238
1981
+ msgid "To infinity and beyond"
1982
+ msgstr ""
1983
+
1984
+ #: modules/infinite-scroll/infinity.php:247
1985
+ msgid "We've disabled this option for you since you have footer widgets in Appearance &rarr; Widgets, or because your theme does not support infinite scroll."
1986
+ msgstr ""
1987
+
1988
+ #: modules/infinite-scroll/infinity.php:253
1989
+ msgid "Scroll Infinitely"
1990
+ msgstr ""
1991
+
1992
+ #: modules/infinite-scroll/infinity.php:253
1993
+ msgid "(Shows %s posts on each load)"
1994
+ msgstr ""
1995
+
1996
+ #: modules/infinite-scroll/infinity.php:442
1997
+ msgid "Load more posts"
1998
+ msgstr ""
1999
+
2000
+ #: modules/infinite-scroll/infinity.php:443
2001
+ msgid "Scroll back to top"
2002
+ msgstr ""
2003
+
2004
+ #: modules/infinite-scroll/infinity.php:813
2005
+ msgid "Theme: %1$s."
2006
+ msgstr "Šablona: %1$s."
2007
+
2008
+ #: modules/infinite-scroll.php:79
2009
+ msgid "Use Google Analytics with Infinite Scroll"
2010
+ msgstr ""
2011
+
2012
+ #: modules/infinite-scroll.php:90
2013
+ msgid "Track each Infinite Scroll post load as a page view in Google Analytics"
2014
+ msgstr ""
2015
+
2016
+ #: modules/infinite-scroll.php:90
2017
+ msgid "By checking the box above, each new set of posts loaded via Infinite Scroll will be recorded as a page view in Google Analytics."
2018
+ msgstr ""
2019
+
2020
+ #: modules/minileven/minileven.php:90
2021
+ msgid "View Mobile Site"
2022
+ msgstr ""
2023
+
2024
+ #: modules/minileven/minileven.php:254
2025
+ msgid "Apply this CSS to the Mobile Theme"
2026
+ msgstr ""
2027
+
2028
+ #: modules/minileven/theme/pub/minileven/comments.php:15
2029
+ msgid "This post is password protected. Enter the password to view any comments."
2030
+ msgstr "Tento příspěvek je chráněn heslem. Pokud chcete zobrazit jeho komentáře, zadejte prosím heslo."
2031
+
2032
+ #: modules/minileven/theme/pub/minileven/comments.php:45
2033
+ msgid "Comment navigation"
2034
+ msgstr ""
2035
+
2036
+ #: modules/minileven/theme/pub/minileven/comments.php:46
2037
+ msgid "&larr; Older Comments"
2038
+ msgstr ""
2039
+
2040
+ #: modules/minileven/theme/pub/minileven/comments.php:47
2041
+ msgid "Newer Comments &rarr;"
2042
+ msgstr ""
2043
+
2044
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:14
2045
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:58
2046
+ #: modules/minileven/theme/pub/minileven/content.php:13
2047
+ #: modules/minileven/theme/pub/minileven/content.php:17
2048
+ msgid "Permalink to %s"
2049
+ msgstr "Trvalý odkaz pro %s"
2050
+
2051
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:15
2052
+ msgid "Gallery"
2053
+ msgstr "Galerie"
2054
+
2055
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:21
2056
+ #: modules/minileven/theme/pub/minileven/content.php:36
2057
+ #: modules/minileven/theme/pub/minileven/inc/tweaks.php:26
2058
+ msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
2059
+ msgstr "Celý příspěvek <span class=\"meta-nav\">&rarr;</span>"
2060
+
2061
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:57
2062
+ msgid "This gallery contains <a %1$s>%2$s photo</a>."
2063
+ msgid_plural "This gallery contains <a %1$s>%2$s photos</a>."
2064
+ msgstr[0] ""
2065
+ msgstr[1] ""
2066
+ msgstr[2] ""
2067
+
2068
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:65
2069
+ #: modules/minileven/theme/pub/minileven/content.php:38
2070
+ #: modules/minileven/theme/pub/minileven/image.php:64
2071
+ #: modules/minileven/theme/pub/minileven/page.php:27
2072
+ msgid "Pages:"
2073
+ msgstr "Stránky:"
2074
+
2075
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2076
+ #: modules/minileven/theme/pub/minileven/content.php:46
2077
+ #: modules/minileven/theme/pub/minileven/image.php:80
2078
+ msgid "<b>1</b> Reply"
2079
+ msgstr ""
2080
+
2081
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2082
+ #: modules/minileven/theme/pub/minileven/content.php:46
2083
+ #: modules/minileven/theme/pub/minileven/image.php:80
2084
+ msgid "<b>%</b> Replies"
2085
+ msgstr ""
2086
+
2087
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:74
2088
+ #: modules/minileven/theme/pub/minileven/content.php:48
2089
+ #: modules/minileven/theme/pub/minileven/image.php:82
2090
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:66
2091
+ #: modules/minileven/theme/pub/minileven/page.php:31
2092
+ #: modules/publicize/ui.php:511
2093
+ msgid "Edit"
2094
+ msgstr "Upravit"
2095
+
2096
+ #: modules/minileven/theme/pub/minileven/content.php:14
2097
+ msgid "Featured"
2098
+ msgstr ""
2099
+
2100
+ #: modules/minileven/theme/pub/minileven/content.php:23
2101
+ msgid "Posted by "
2102
+ msgstr ""
2103
+
2104
+ #: modules/minileven/theme/pub/minileven/content.php:25
2105
+ msgid "%s"
2106
+ msgstr "%s"
2107
+
2108
+ #: modules/minileven/theme/pub/minileven/content.php:46
2109
+ #: modules/minileven/theme/pub/minileven/image.php:80
2110
+ msgid "Leave a reply"
2111
+ msgstr ""
2112
+
2113
+ #: modules/minileven/theme/pub/minileven/content.php:54
2114
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:19
2115
+ msgid "Post navigation"
2116
+ msgstr ""
2117
+
2118
+ #: modules/minileven/theme/pub/minileven/content.php:55
2119
+ msgid "&laquo; Previous"
2120
+ msgstr "&laquo; Předchozí"
2121
+
2122
+ #: modules/minileven/theme/pub/minileven/content.php:56
2123
+ msgid "Next &raquo;"
2124
+ msgstr "Další &raquo;"
2125
+
2126
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2127
+ msgid "http://wordpress.org/"
2128
+ msgstr "http://cs.wordpress.org/"
2129
+
2130
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2131
+ msgid "Semantic Personal Publishing Platform"
2132
+ msgstr "Sémantický osobní redakční systém"
2133
+
2134
+ #: modules/minileven/theme/pub/minileven/footer.php:22
2135
+ msgid "Proudly powered by %s"
2136
+ msgstr ""
2137
+
2138
+ #: modules/minileven/theme/pub/minileven/functions.php:54
2139
+ msgid "Primary Menu"
2140
+ msgstr ""
2141
+
2142
+ #: modules/minileven/theme/pub/minileven/functions.php:92
2143
+ msgid "Main Sidebar"
2144
+ msgstr ""
2145
+
2146
+ #: modules/minileven/theme/pub/minileven/header.php:32
2147
+ msgid "Page %s"
2148
+ msgstr "%s. stránka"
2149
+
2150
+ #: modules/minileven/theme/pub/minileven/header.php:50
2151
+ msgid "Menu"
2152
+ msgstr "Menu"
2153
+
2154
+ #: modules/minileven/theme/pub/minileven/header.php:53
2155
+ msgid "Skip to primary content"
2156
+ msgstr ""
2157
+
2158
+ #: modules/minileven/theme/pub/minileven/image.php:73
2159
+ msgid "<span class=\"entry-gallery\">&laquo; <a href=\"%1$s\" title=\"Back to %2$s\" rel=\"gallery\">Back to Gallery</a></span>"
2160
+ msgstr ""
2161
+
2162
+ #: modules/minileven/theme/pub/minileven/image.php:87
2163
+ msgid "Image navigation"
2164
+ msgstr ""
2165
+
2166
+ #: modules/minileven/theme/pub/minileven/image.php:88
2167
+ msgid "&raquo; Previous"
2168
+ msgstr ""
2169
+
2170
+ #: modules/minileven/theme/pub/minileven/image.php:89
2171
+ msgid "Next &raquo; "
2172
+ msgstr ""
2173
+
2174
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:20
2175
+ msgid "<span class=\"meta-nav\">&laquo;</span> Older"
2176
+ msgstr ""
2177
+
2178
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:21
2179
+ msgid "Newer <span class=\"meta-nav\">&raquo;</span>"
2180
+ msgstr ""
2181
+
2182
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:38
2183
+ msgid "Pingback:"
2184
+ msgstr "Pingback:"
2185
+
2186
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:55
2187
+ msgid "%1$s on %2$s"
2188
+ msgstr "%1$s na %2$s"
2189
+
2190
+ #: modules/minileven/theme/pub/minileven/inc/template-tags.php:61
2191
+ msgid "%1$s at %2$s"
2192
+ msgstr "%1$s v %2$s"
2193
+
2194
+ #: modules/contact-form/grunion-contact-form.php:1242
2195
+ msgid "%s is required"
2196
+ msgstr ""
2197
+
2198
+ #: modules/contact-form/grunion-contact-form.php:1289
2199
+ #: modules/contact-form/grunion-contact-form.php:1295
2200
+ #: modules/contact-form/grunion-contact-form.php:1300
2201
+ #: modules/contact-form/grunion-contact-form.php:1314
2202
+ #: modules/contact-form/grunion-contact-form.php:1320
2203
+ #: modules/contact-form/grunion-contact-form.php:1333
2204
+ msgid "(required)"
2205
+ msgstr "(vyžadováno)"
2206
+
2207
+ #: modules/contact-form/grunion-contact-form.php:1313
2208
+ msgid "Yes"
2209
+ msgstr "Ano"
2210
+
2211
+ #: modules/contact-form/grunion-form-view.php:8
2212
+ msgctxt "Label for HTML form \"Name\" field in contact form builder"
2213
+ msgid "Name"
2214
+ msgstr ""
2215
+
2216
+ #: modules/contact-form/grunion-form-view.php:9
2217
+ msgctxt "Label for HTML form \"Email\" field in contact form builder"
2218
+ msgid "Email"
2219
+ msgstr ""
2220
+
2221
+ #: modules/contact-form/grunion-form-view.php:10
2222
+ msgctxt "Label for HTML form \"URL/Website\" field in contact form builder"
2223
+ msgid "Website"
2224
+ msgstr ""
2225
+
2226
+ #: modules/contact-form/grunion-form-view.php:11
2227
+ msgctxt "Label for HTML form \"Comment/Response\" field in contact form builder"
2228
+ msgid "Comment"
2229
+ msgstr ""
2230
+
2231
+ #: modules/contact-form/grunion-form-view.php:12
2232
+ msgctxt "Default label for new HTML form field in contact form builder"
2233
+ msgid "New Field"
2234
+ msgstr ""
2235
+
2236
+ #: modules/contact-form/grunion-form-view.php:13
2237
+ msgctxt "Label for the set of options to be included in a user-created dropdown in contact form builder"
2238
+ msgid "Options"
2239
+ msgstr ""
2240
+
2241
+ #: modules/contact-form/grunion-form-view.php:14
2242
+ msgctxt "Label for an option to be included in a user-created dropdown in contact form builder"
2243
+ msgid "Option"
2244
+ msgstr ""
2245
+
2246
+ #: modules/contact-form/grunion-form-view.php:15
2247
+ msgctxt "Default label for the first option to be included in a user-created dropdown in contact form builder"
2248
+ msgid "First option"
2249
+ msgstr ""
2250
+
2251
+ #: modules/contact-form/grunion-form-view.php:16
2252
+ msgctxt "error message in contact form builder"
2253
+ msgid "Oops, there was a problem generating your form. You'll likely need to try again."
2254
+ msgstr ""
2255
+
2256
+ #: modules/contact-form/grunion-form-view.php:17
2257
+ msgid ""
2258
+ "Drag up or down\n"
2259
+ "to re-arrange"
2260
+ msgstr ""
2261
+
2262
+ #: modules/contact-form/grunion-form-view.php:18
2263
+ msgctxt "Label to drag HTML form fields around to change their order in contact form builder"
2264
+ msgid "move"
2265
+ msgstr ""
2266
+
2267
+ #: modules/contact-form/grunion-form-view.php:19
2268
+ msgctxt "Link to edit an HTML form field in contact form builder"
2269
+ msgid "edit"
2270
+ msgstr ""
2271
+
2272
+ #: modules/contact-form/grunion-form-view.php:20
2273
+ msgid "Saved successfully"
2274
+ msgstr ""
2275
+
2276
+ #: modules/contact-form/grunion-form-view.php:21
2277
+ msgctxt "This HTML form field is marked as required by the user in contact form builder"
2278
+ msgid "(required)"
2279
+ msgstr ""
2280
+
2281
+ #: modules/contact-form/grunion-form-view.php:22
2282
+ msgid "Are you sure you want to exit the form editor without saving? Any changes you have made will be lost."
2283
+ msgstr ""
2284
+
2285
+ #: modules/contact-form/grunion-form-view.php:30 modules/module-info.php:491
2286
+ #: modules/module-info.php:495
2287
+ msgid "Contact Form"
2288
+ msgstr ""
2289
+
2290
+ #: modules/contact-form/grunion-form-view.php:118
2291
+ msgid "Your new field was saved successfully"
2292
+ msgstr ""
2293
+
2294
+ #: modules/contact-form/grunion-form-view.php:120
2295
+ msgid "Form builder"
2296
+ msgstr ""
2297
+
2298
+ #: modules/contact-form/grunion-form-view.php:121
2299
+ msgid "Email notifications"
2300
+ msgstr ""
2301
+
2302
+ #: modules/contact-form/grunion-form-view.php:126
2303
+ msgid "How does this work?"
2304
+ msgstr ""
2305
+
2306
+ #: modules/contact-form/grunion-form-view.php:127
2307
+ msgid "By adding a contact form, your readers will be able to submit feedback to you. All feedback is automatically scanned for spam, and the legitimate feedback will be emailed to you."
2308
+ msgstr ""
2309
+
2310
+ #: modules/contact-form/grunion-form-view.php:128
2311
+ msgid "Can I add more fields?"
2312
+ msgstr ""
2313
+
2314
+ #: modules/contact-form/grunion-form-view.php:130
2315
+ msgctxt "%1$s = \"Click here\" in an HTML link"
2316
+ msgid "Sure thing. %1$s to add a new text box, textarea, radio, checkbox, or dropdown field."
2317
+ msgstr ""
2318
+
2319
+ #: modules/contact-form/grunion-form-view.php:131
2320
+ msgid "Click here"
2321
+ msgstr ""
2322
+
2323
+ #: modules/contact-form/grunion-form-view.php:133
2324
+ msgid "Can I view my feedback within WordPress?"
2325
+ msgstr ""
2326
+
2327
+ #: modules/contact-form/grunion-form-view.php:135
2328
+ msgctxt "%1$s = \"Feedbacks\" in an HTML link"
2329
+ msgid "Yep, you can read your feedback at any time by clicking the \"%1$s\" link in the admin menu."
2330
+ msgstr ""
2331
+
2332
+ #: modules/contact-form/grunion-form-view.php:141
2333
+ msgid "Do I need to fill this out?"
2334
+ msgstr ""
2335
+
2336
+ #: modules/contact-form/grunion-form-view.php:142
2337
+ msgid "Nope. However, if you&#8217;d like to modify where your feedback is sent, or the subject line you can. If you don&#8217;t make any changes here, feedback will be sent to the author of the page/post and the subject will be the name of this page/post."
2338
+ msgstr ""
2339
+
2340
+ #: modules/contact-form/grunion-form-view.php:146
2341
+ msgid "Edit this new field"
2342
+ msgstr ""
2343
+
2344
+ #: modules/contact-form/grunion-form-view.php:148
2345
+ #: modules/sharedaddy/sharing-sources.php:985
2346
+ msgid "Label"
2347
+ msgstr "Text"
2348
+
2349
+ #: modules/contact-form/grunion-form-view.php:149
2350
+ msgid "New field"
2351
+ msgstr ""
2352
+
2353
+ #: modules/contact-form/grunion-form-view.php:151
2354
+ msgid "Field type"
2355
+ msgstr ""
2356
+
2357
+ #: modules/contact-form/grunion-form-view.php:153
2358
+ msgid "Checkbox"
2359
+ msgstr ""
2360
+
2361
+ #: modules/contact-form/grunion-form-view.php:154
2362
+ msgid "Drop down"
2363
+ msgstr ""
2364
+
2365
+ #: modules/contact-form/grunion-form-view.php:157
2366
+ msgid "Radio"
2367
+ msgstr ""
2368
+
2369
+ #: modules/contact-form/grunion-form-view.php:158
2370
+ msgid "Text"
2371
+ msgstr "Text"
2372
+
2373
+ #: modules/contact-form/grunion-form-view.php:159
2374
+ msgid "Textarea"
2375
+ msgstr ""
2376
+
2377
+ #: modules/contact-form/grunion-form-view.php:166
2378
+ msgid "Options"
2379
+ msgstr "Nastavení"
2380
+
2381
+ #: modules/contact-form/grunion-form-view.php:167
2382
+ msgid "First option"
2383
+ msgstr ""
2384
+
2385
+ #: modules/contact-form/grunion-form-view.php:170
2386
+ msgid "Add another option"
2387
+ msgstr ""
2388
+
2389
+ #: modules/contact-form/grunion-form-view.php:177
2390
+ msgid "Required?"
2391
+ msgstr ""
2392
+
2393
+ #: modules/contact-form/grunion-form-view.php:182
2394
+ msgid "Save this field"
2395
+ msgstr ""
2396
+
2397
+ #: modules/contact-form/grunion-form-view.php:187
2398
+ msgid "Here&#8217;s what your form will look like"
2399
+ msgstr ""
2400
+
2401
+ #: modules/contact-form/grunion-form-view.php:192
2402
+ msgid "Add a new field"
2403
+ msgstr ""
2404
+
2405
+ #: modules/contact-form/grunion-form-view.php:194
2406
+ msgid "Add this form to my post"
2407
+ msgstr ""
2408
+
2409
+ #: modules/contact-form/grunion-form-view.php:197
2410
+ msgid "Email settings"
2411
+ msgstr ""
2412
+
2413
+ #: modules/contact-form/grunion-form-view.php:199
2414
+ msgid "Enter your email address"
2415
+ msgstr ""
2416
+
2417
+ #: modules/contact-form/grunion-form-view.php:202
2418
+ msgid "What should the subject line be?"
2419
+ msgstr ""
2420
+
2421
+ #: modules/contact-form/grunion-form-view.php:205
2422
+ msgid "Save and go back to form builder"
2423
+ msgstr ""
2424
+
2425
+ #: modules/custom-css/custom-css.php:486
2426
+ msgid ""
2427
+ "Welcome to Custom CSS!\n"
2428
+ "\n"
2429
+ "CSS (Cascading Style Sheets) is a kind of code that tells the browser how to render a web page. You may delete these comments and get started with your customizations.\n"
2430
+ "\n"
2431
+ "By default, your stylesheet will be loaded after the theme stylesheets, which means that your rules can take precedence and override the theme CSS rules. Just write here what you want to change, you don't need to copy all your theme's stylesheet content."
2432
+ msgstr ""
2433
+
2434
+ #: modules/custom-css/custom-css.php:595
2435
+ msgid "Preview: changes must be saved or they will be lost"
2436
+ msgstr "Náhled: změny musí být uloženy nebo budou ztraceny"
2437
+
2438
+ #: modules/custom-css/custom-css.php:623
2439
+ msgid "Edit CSS"
2440
+ msgstr "Upravit CSS"
2441
+
2442
+ #: modules/custom-css/custom-css.php:637
2443
+ msgid "CSS"
2444
+ msgstr ""
2445
+
2446
+ #: modules/custom-css/custom-css.php:676
2447
+ msgid "Custom CSS Stylesheet"
2448
+ msgstr ""
2449
+
2450
+ #: modules/custom-css/custom-css.php:836
2451
+ msgid "Stylesheet saved."
2452
+ msgstr "Styl uložen."
2453
+
2454
+ #: modules/custom-css/custom-css.php:844
2455
+ msgid "CSS Stylesheet Editor"
2456
+ msgstr ""
2457
+
2458
+ #: modules/custom-css/custom-css.php:845
2459
+ msgid ""
2460
+ "New to CSS? Start with a <a href=\"http://www.htmldog.com/guides/cssbeginner/\">beginner tutorial</a>. Questions?\n"
2461
+ "\tAsk in the <a href=\"http://wordpress.org/support/forum/themes-and-templates\">Themes and Templates forum</a>."
2462
+ msgstr ""
2463
+
2464
+ #: modules/carousel/jetpack-carousel.php:443
2465
+ msgid "White"
2466
+ msgstr "Bílá"
2467
+
2468
+ #: modules/carousel/jetpack-carousel.php:451
2469
+ msgid "Display images in full-size carousel slideshow."
2470
+ msgstr ""
2471
+
2472
+ #: modules/comments/admin.php:50 modules/comments/comments.php:178
2473
+ #: modules/minileven/theme/pub/minileven/content-gallery.php:71
2474
+ msgid "Leave a Reply"
2475
+ msgstr "Napsat komentář"
2476
+
2477
+ #: modules/comments/admin.php:54 modules/widgets/facebook-likebox.php:147
2478
+ msgid "Light"
2479
+ msgstr "Světlá"
2480
+
2481
+ #: modules/comments/admin.php:55 modules/widgets/facebook-likebox.php:148
2482
+ msgid "Dark"
2483
+ msgstr "Tmavá"
2484
+
2485
+ #: modules/comments/admin.php:56
2486
+ msgid "Transparent"
2487
+ msgstr ""
2488
+
2489
+ #: modules/comments/admin.php:72 modules/module-info.php:521
2490
+ msgid "Jetpack Comments"
2491
+ msgstr ""
2492
+
2493
+ #: modules/comments/admin.php:81
2494
+ msgid "Greeting Text"
2495
+ msgstr ""
2496
+
2497
+ #: modules/comments/admin.php:97 modules/comments/admin.php:168
2498
+ #: modules/widgets/facebook-likebox.php:145
2499
+ msgid "Color Scheme"
2500
+ msgstr "Barevné schéma"
2501
+
2502
+ #: modules/comments/admin.php:118
2503
+ msgid "Adjust your Jetpack Comments form with a clever greeting and color-scheme."
2504
+ msgstr ""
2505
+
2506
+ #: modules/comments/admin.php:134
2507
+ msgid "A few catchy words to motivate your readers to comment"
2508
+ msgstr ""
2509
+
2510
+ #: modules/comments/base.php:84
2511
+ msgid "Invalid request"
2512
+ msgstr ""
2513
+
2514
+ #: modules/comments/base.php:231
2515
+ msgid "Error: please fill the required fields (name, email)."
2516
+ msgstr "Chyba: Zadejte prosím požadované údaje (jméno, email)."
2517
+
2518
+ #: modules/comments/base.php:233
2519
+ msgid "Error: please enter a valid email address."
2520
+ msgstr "Chyba: Zadejte prosím správnou emailovou adresu."
2521
+
2522
+ #: modules/comments/comments.php:154
2523
+ msgid "You must <a href=\"%s\">log in</a> to post a comment."
2524
+ msgstr ""
2525
+
2526
+ #: modules/comments/comments.php:217
2527
+ msgid "Cancel Reply"
2528
+ msgstr ""
2529
+
2530
+ #: modules/comments/comments.php:351
2531
+ msgid "Invalid security token."
2532
+ msgstr ""
2533
+
2534
+ #: modules/comments/comments.php:412 modules/comments/comments.php:463
2535
+ msgid "Submitting Comment%s"
2536
+ msgstr ""
2537
+
2538
+ #: modules/contact-form/admin.php:27
2539
+ msgid "Add a custom form"
2540
+ msgstr ""
2541
+
2542
+ #: modules/contact-form/admin.php:129
2543
+ msgid "From"
2544
+ msgstr ""
2545
+
2546
+ #: modules/contact-form/admin.php:130
2547
+ #: modules/contact-form/grunion-contact-form.php:556
2548
+ msgid "Message"
2549
+ msgstr "Zpráva"
2550
+
2551
+ #: modules/contact-form/admin.php:131
2552
+ msgid "Date"
2553
+ msgstr "Datum"
2554
+
2555
+ #: modules/contact-form/admin.php:201
2556
+ msgid "Restore this item from the Trash"
2557
+ msgstr "Obnovit tuto položku z koše"
2558
+
2559
+ #: modules/contact-form/admin.php:203
2560
+ msgid "Restore"
2561
+ msgstr "Obnovit"
2562
+
2563
+ #: modules/contact-form/admin.php:206 modules/contact-form/admin.php:305
2564
+ msgid "Delete this item permanently"
2565
+ msgstr "Nenávratně smazat tuto položku"
2566
+
2567
+ #: modules/contact-form/admin.php:208 modules/contact-form/admin.php:307
2568
+ msgid "Delete Permanently"
2569
+ msgstr "Smazat"
2570
+
2571
+ #: modules/contact-form/admin.php:239
2572
+ msgid "Mark this message as spam"
2573
+ msgstr ""
2574
+
2575
+ #: modules/contact-form/admin.php:246 modules/contact-form/admin.php:248
2576
+ #: modules/contact-form/admin.php:540
2577
+ msgid "Trash"
2578
+ msgstr "Odstranit"
2579
+
2580
+ #: modules/contact-form/admin.php:299
2581
+ msgid "Mark this message as NOT spam"
2582
+ msgstr ""
2583
+
2584
+ #: modules/contact-form/admin.php:338
2585
+ msgid "Y-m-d @ g:i:s A"
2586
+ msgstr ""
2587
+
2588
+ #: modules/contact-form/admin.php:462
2589
+ msgid "You are not allowed to manage this item."
2590
+ msgstr ""
2591
+
2592
+ #: modules/contact-form/admin.php:496
2593
+ msgid "You are not allowed to move this item out of the Trash."
2594
+ msgstr "Nemáte dostatečné oprávnění pro obnovení této položky z koše."
2595
+
2596
+ #: modules/contact-form/admin.php:499
2597
+ msgid "Error in restoring from Trash."
2598
+ msgstr "Během obnovování z koše se objevila chyba."
2599
+
2600
+ #: modules/contact-form/admin.php:503
2601
+ msgid "You are not allowed to move this item to the Trash."
2602
+ msgstr "Nemáte dostatečné oprávnění pro přesunutí této položky do koše."
2603
+
2604
+ #: modules/contact-form/admin.php:506
2605
+ msgid "Error in moving to Trash."
2606
+ msgstr "Během přesunování do koše se objevila chyba."
2607
+
2608
+ #: modules/contact-form/admin.php:530
2609
+ msgid "Messages"
2610
+ msgstr ""
2611
+
2612
+ #: modules/contact-form/admin.php:553
2613
+ msgid "Spam"
2614
+ msgstr "Spam"
2615
+
2616
+ #: modules/contact-form/grunion-contact-form.php:73
2617
+ #: modules/contact-form/grunion-form-view.php:136
2618
+ msgid "Feedbacks"
2619
+ msgstr ""
2620
+
2621
+ #: modules/contact-form/grunion-contact-form.php:74
2622
+ msgid "Feedback"
2623
+ msgstr ""
2624
+
2625
+ #: modules/contact-form/grunion-contact-form.php:75
2626
+ msgid "Search Feedback"
2627
+ msgstr ""
2628
+
2629
+ #: modules/contact-form/grunion-contact-form.php:76
2630
+ #: modules/contact-form/grunion-contact-form.php:77
2631
+ msgid "No feedback found"
2632
+ msgstr ""
2633
+
2634
+ #: modules/contact-form/grunion-contact-form.php:94
2635
+ msgid "Spam <span class=\"count\">(%s)</span>"
2636
+ msgid_plural "Spam <span class=\"count\">(%s)</span>"
2637
+ msgstr[0] ""
2638
+ msgstr[1] ""
2639
+ msgstr[2] ""
2640
+
2641
+ #: modules/contact-form/grunion-contact-form.php:514
2642
+ msgctxt "%1$s = blog name"
2643
+ msgid "%1$s Sidebar"
2644
+ msgstr ""
2645
+
2646
+ #: modules/contact-form/grunion-contact-form.php:521
2647
+ msgctxt "%1$s = blog name, %2$s = post title"
2648
+ msgid "%1$s %2$s"
2649
+ msgstr ""
2650
+
2651
+ #: modules/contact-form/grunion-contact-form.php:546
2652
+ #: modules/contact-form/grunion-form-view.php:156
2653
+ msgid "Name"
2654
+ msgstr "Jméno"
2655
+
2656
+ #: modules/contact-form/grunion-contact-form.php:547
2657
+ #: modules/contact-form/grunion-form-view.php:155
2658
+ #: modules/sharedaddy/sharing-sources.php:200
2659
+ msgid "Email"
2660
+ msgstr "Emailová adresa"
2661
+
2662
+ #: modules/contact-form/grunion-contact-form.php:552
2663
+ msgid "Subject"
2664
+ msgstr "Použití"
2665
+
2666
+ #: modules/contact-form/grunion-contact-form.php:633
2667
+ msgid "Error!"
2668
+ msgstr "Chyba!"
2669
+
2670
+ #: modules/contact-form/grunion-contact-form.php:647
2671
+ msgid "Message Sent"
2672
+ msgstr "Vzkaz odeslán"
2673
+
2674
+ #: modules/contact-form/grunion-contact-form.php:648
2675
+ msgid "go back"
2676
+ msgstr ""
2677
+
2678
+ #: modules/contact-form/grunion-contact-form.php:683
2679
+ #: modules/contact-form/grunion-contact-form.php:699
2680
+ msgctxt "%1$s = form field label, %2$s = form field value"
2681
+ msgid "%1$s: %2$s"
2682
+ msgstr ""
2683
+
2684
+ #: modules/contact-form/grunion-contact-form.php:729
2685
+ msgid "Submit &#187;"
2686
+ msgstr "Potvrdit &#187;"
2687
+
2688
+ #: modules/contact-form/grunion-contact-form.php:971
2689
+ msgid "l F j, Y \\a\\t g:i a"
2690
+ msgstr ""
2691
+
2692
+ #: modules/contact-form/grunion-contact-form.php:991
2693
+ msgid "Time:"
2694
+ msgstr "Čas"
2695
+
2696
+ #: modules/contact-form/grunion-contact-form.php:992
2697
+ msgid "IP Address:"
2698
+ msgstr "IP Adresa:"
2699
+
2700
+ #: modules/contact-form/grunion-contact-form.php:993
2701
+ msgid "Contact Form URL:"
2702
+ msgstr ""
2703
+
2704
+ #: modules/contact-form/grunion-contact-form.php:999
2705
+ msgid "Sent by a verified %s user."
2706
+ msgstr ""
2707
+
2708
+ #: modules/contact-form/grunion-contact-form.php:1003
2709
+ msgid "Sent by an unverified visitor to your site."
2710
+ msgstr "Posláno neověřeným návštěvníkem vašich stránek."
2711
+
2712
+ #: modules/contact-form/grunion-contact-form.php:1236
2713
+ msgid "%s requires a valid email address"
2714
+ msgstr ""
2715
+
2716
+ #: modules/after-the-deadline/atd-l10n.php:34
2717
+ msgid ""
2718
+ "The proofreader has suggestions for this post. Are you sure you want to update it?\n"
2719
+ "\n"
2720
+ "Press OK to update your post, or Cancel to view the suggestions and edit your post."
2721
+ msgstr ""
2722
+
2723
+ #: modules/after-the-deadline/config-options.php:48
2724
+ msgid "Proofreading"
2725
+ msgstr ""
2726
+
2727
+ #: modules/after-the-deadline/config-options.php:50
2728
+ msgid "Automatically proofread content when:"
2729
+ msgstr ""
2730
+
2731
+ #: modules/after-the-deadline/config-options.php:53
2732
+ msgid "a post or page is first published"
2733
+ msgstr ""
2734
+
2735
+ #: modules/after-the-deadline/config-options.php:55
2736
+ msgid "a post or page is updated"
2737
+ msgstr ""
2738
+
2739
+ #: modules/after-the-deadline/config-options.php:58
2740
+ msgid "English Options"
2741
+ msgstr ""
2742
+
2743
+ #: modules/after-the-deadline/config-options.php:60
2744
+ msgid "Enable proofreading for the following grammar and style rules when writing posts and pages:"
2745
+ msgstr ""
2746
+
2747
+ #: modules/after-the-deadline/config-options.php:63
2748
+ msgid "Bias Language"
2749
+ msgstr ""
2750
+
2751
+ #: modules/after-the-deadline/config-options.php:65
2752
+ msgid "Clich&eacute;s"
2753
+ msgstr ""
2754
+
2755
+ #: modules/after-the-deadline/config-options.php:67
2756
+ msgid "Complex Phrases"
2757
+ msgstr ""
2758
+
2759
+ #: modules/after-the-deadline/config-options.php:69
2760
+ msgid "Diacritical Marks"
2761
+ msgstr ""
2762
+
2763
+ #: modules/after-the-deadline/config-options.php:71
2764
+ msgid "Double Negatives"
2765
+ msgstr ""
2766
+
2767
+ #: modules/after-the-deadline/config-options.php:73
2768
+ msgid "Hidden Verbs"
2769
+ msgstr ""
2770
+
2771
+ #: modules/after-the-deadline/config-options.php:75
2772
+ msgid "Jargon"
2773
+ msgstr ""
2774
+
2775
+ #: modules/after-the-deadline/config-options.php:77
2776
+ msgid "Passive Voice"
2777
+ msgstr ""
2778
+
2779
+ #: modules/after-the-deadline/config-options.php:79
2780
+ msgid "Phrases to Avoid"
2781
+ msgstr ""
2782
+
2783
+ #: modules/after-the-deadline/config-options.php:81
2784
+ msgid "Redundant Phrases"
2785
+ msgstr ""
2786
+
2787
+ #: modules/after-the-deadline/config-options.php:83
2788
+ msgid "<a href=\"%s\">Learn more</a> about these options."
2789
+ msgstr ""
2790
+
2791
+ #: modules/after-the-deadline/config-options.php:86
2792
+ msgid "Language"
2793
+ msgstr "Jazyk"
2794
+
2795
+ #: modules/after-the-deadline/config-options.php:89
2796
+ msgctxt "%1$s = http://codex.wordpress.org/Installing_WordPress_in_Your_Language, %2$s = WPLANG"
2797
+ msgid "The proofreader supports English, French, German, Portuguese, and Spanish. Your <a href=\"%1$s\">%2$s</a> value is the default proofreading language."
2798
+ msgstr ""
2799
+
2800
+ #: modules/after-the-deadline/config-options.php:95
2801
+ msgid "Use automatically detected language to proofread posts and pages"
2802
+ msgstr ""
2803
+
2804
+ #: modules/after-the-deadline/config-unignore.php:126
2805
+ msgid "Ignored Phrases"
2806
+ msgstr ""
2807
+
2808
+ #: modules/after-the-deadline/config-unignore.php:128
2809
+ msgid "Identify words and phrases to ignore while proofreading your posts and pages:"
2810
+ msgstr ""
2811
+
2812
+ #: modules/after-the-deadline/config-unignore.php:130
2813
+ msgid "Add"
2814
+ msgstr "Vytvořit"
2815
+
2816
+ #: modules/after-the-deadline/config-unignore.php:135
2817
+ msgid "Be sure to click \"Update Profile\" at the bottom of the screen to save your changes."
2818
+ msgstr ""
2819
+
2820
+ #: modules/carousel/jetpack-carousel.php:103
2821
+ msgid "Comment"
2822
+ msgstr ""
2823
+
2824
+ #: modules/carousel/jetpack-carousel.php:104
2825
+ msgid "Post Comment"
2826
+ msgstr "Odeslat komentář"
2827
+
2828
+ #: modules/carousel/jetpack-carousel.php:105
2829
+ msgid "Loading Comments..."
2830
+ msgstr ""
2831
+
2832
+ #: modules/carousel/jetpack-carousel.php:106
2833
+ msgid "View full size <span class=\"photo-size\">%1$s<span class=\"photo-size-times\">&times;</span>%2$s</span>"
2834
+ msgstr ""
2835
+
2836
+ #: modules/carousel/jetpack-carousel.php:107
2837
+ msgid "Please be sure to submit some text with your comment."
2838
+ msgstr ""
2839
+
2840
+ #: modules/carousel/jetpack-carousel.php:108
2841
+ msgid "Please provide an email address to comment."
2842
+ msgstr ""
2843
+
2844
+ #: modules/carousel/jetpack-carousel.php:109
2845
+ msgid "Please provide your name to comment."
2846
+ msgstr ""
2847
+
2848
+ #: modules/carousel/jetpack-carousel.php:110
2849
+ msgid "Sorry, but there was an error posting your comment. Please try again later."
2850
+ msgstr ""
2851
+
2852
+ #: modules/carousel/jetpack-carousel.php:111
2853
+ msgid "Your comment was approved."
2854
+ msgstr ""
2855
+
2856
+ #: modules/carousel/jetpack-carousel.php:112
2857
+ msgid "Your comment is in moderation."
2858
+ msgstr ""
2859
+
2860
+ #: modules/carousel/jetpack-carousel.php:113
2861
+ msgid "Camera"
2862
+ msgstr ""
2863
+
2864
+ #: modules/carousel/jetpack-carousel.php:114
2865
+ msgid "Aperture"
2866
+ msgstr ""
2867
+
2868
+ #: modules/carousel/jetpack-carousel.php:115
2869
+ msgid "Shutter Speed"
2870
+ msgstr ""
2871
+
2872
+ #: modules/carousel/jetpack-carousel.php:116
2873
+ msgid "Focal Length"
2874
+ msgstr ""
2875
+
2876
+ #: modules/carousel/jetpack-carousel.php:123
2877
+ msgid "Commenting as %s"
2878
+ msgstr ""
2879
+
2880
+ #: modules/carousel/jetpack-carousel.php:126
2881
+ msgid "Email (Required)"
2882
+ msgstr ""
2883
+
2884
+ #: modules/carousel/jetpack-carousel.php:128
2885
+ msgid "Name (Required)"
2886
+ msgstr ""
2887
+
2888
+ #: modules/carousel/jetpack-carousel.php:130
2889
+ #: modules/contact-form/grunion-contact-form.php:548
2890
+ #: modules/contact-form/grunion-form-view.php:160
2891
+ msgid "Website"
2892
+ msgstr "Webová stránka"
2893
+
2894
+ #: modules/carousel/jetpack-carousel.php:246
2895
+ msgid "Missing attachment ID."
2896
+ msgstr ""
2897
+
2898
+ #: modules/carousel/jetpack-carousel.php:284
2899
+ msgid "Nonce verification failed."
2900
+ msgstr ""
2901
+
2902
+ #: modules/carousel/jetpack-carousel.php:291
2903
+ msgid "Missing target blog ID."
2904
+ msgstr ""
2905
+
2906
+ #: modules/carousel/jetpack-carousel.php:294
2907
+ msgid "Missing target post ID."
2908
+ msgstr ""
2909
+
2910
+ #: modules/carousel/jetpack-carousel.php:297
2911
+ msgid "No comment text was submitted."
2912
+ msgstr ""
2913
+
2914
+ #: modules/carousel/jetpack-carousel.php:309
2915
+ msgid "Comments on this post are closed."
2916
+ msgstr ""
2917
+
2918
+ #: modules/carousel/jetpack-carousel.php:319
2919
+ msgid "Sorry, but we could not authenticate your request."
2920
+ msgstr ""
2921
+
2922
+ #: modules/carousel/jetpack-carousel.php:327
2923
+ msgid "Please provide your name."
2924
+ msgstr ""
2925
+
2926
+ #: modules/carousel/jetpack-carousel.php:330
2927
+ msgid "Please provide an email address."
2928
+ msgstr ""
2929
+
2930
+ #: modules/carousel/jetpack-carousel.php:333
2931
+ msgid "Please provide a valid email address."
2932
+ msgstr ""
2933
+
2934
+ #: modules/carousel/jetpack-carousel.php:360
2935
+ msgid "Image Gallery Carousel"
2936
+ msgstr ""
2937
+
2938
+ #: modules/carousel/jetpack-carousel.php:363
2939
+ msgid "Enable carousel"
2940
+ msgstr ""
2941
+
2942
+ #: modules/carousel/jetpack-carousel.php:367
2943
+ msgid "Background color"
2944
+ msgstr ""
2945
+
2946
+ #: modules/carousel/jetpack-carousel.php:370
2947
+ msgid "Metadata"
2948
+ msgstr ""
2949
+
2950
+ #: modules/carousel/jetpack-carousel.php:427
2951
+ msgid "Show photo metadata (<a href=\"http://en.wikipedia.org/wiki/Exchangeable_image_file_format\" target=\"_blank\">Exif</a>) in carousel, when available."
2952
+ msgstr ""
2953
+
2954
+ #: modules/carousel/jetpack-carousel.php:435
2955
+ msgid "Show map of photo location in carousel, when available."
2956
+ msgstr ""
2957
+
2958
+ #: modules/carousel/jetpack-carousel.php:443
2959
+ msgid "Black"
2960
+ msgstr "Černá"
2961
+
2962
+ #: jetpack.php:2233
2963
+ msgid "User linked to WordPress.com"
2964
+ msgstr ""
2965
+
2966
+ #: jetpack.php:2233
2967
+ msgid "Unlink user from WordPress.com"
2968
+ msgstr ""
2969
+
2970
+ #: jetpack.php:2249
2971
+ msgid "Jetpack is network activated and notices can not be dismissed."
2972
+ msgstr ""
2973
+
2974
+ #: jetpack.php:2260
2975
+ msgid "Dismiss this notice."
2976
+ msgstr ""
2977
+
2978
+ #: jetpack.php:2265
2979
+ msgid "To enable all of the Jetpack features you&#8217;ll need to connect your website to WordPress.com using the button to the right. Once you&#8217;ve made the connection you&#8217;ll activate all the delightful features below."
2980
+ msgstr ""
2981
+
2982
+ #: jetpack.php:2280
2983
+ msgid "To enable all of the Jetpack features you&#8217;ll need to link your account here to your WordPress.com account using the button to the right."
2984
+ msgstr ""
2985
+
2986
+ #: jetpack.php:2284 modules/post-by-email.php:129
2987
+ #: modules/publicize/publicize-jetpack.php:62
2988
+ msgid "Link account with WordPress.com"
2989
+ msgstr ""
2990
+
2991
+ #: jetpack.php:2306
2992
+ msgid "Have feedback on Jetpack?"
2993
+ msgstr ""
2994
+
2995
+ #: jetpack.php:2308
2996
+ msgid "Answer a short survey to let us know how we&#8217;re doing and what to add in the future."
2997
+ msgstr ""
2998
+
2999
+ #: jetpack.php:2311
3000
+ msgid "Take Survey"
3001
+ msgstr ""
3002
+
3003
+ #: jetpack.php:2317
3004
+ msgid "Checking email updates status&hellip;"
3005
+ msgstr ""
3006
+
3007
+ #: jetpack.php:2323
3008
+ msgctxt "%s = Unsubscribe link"
3009
+ msgid "You are currently subscribed to email updates. %s"
3010
+ msgstr ""
3011
+
3012
+ #: jetpack.php:2324
3013
+ msgid "Unsubscribe"
3014
+ msgstr "Zrušit odběr"
3015
+
3016
+ #: jetpack.php:2328
3017
+ msgctxt "%s = Subscribe link"
3018
+ msgid "Want to receive updates about Jetpack by email? %s"
3019
+ msgstr ""
3020
+
3021
+ #: jetpack.php:2329 modules/subscriptions.php:673
3022
+ msgid "Subscribe"
3023
+ msgstr "Přihlásit se k odběru"
3024
+
3025
+ #: jetpack.php:2336
3026
+ msgid "You have been subscribed to receive email updates."
3027
+ msgstr ""
3028
+
3029
+ #: jetpack.php:2338
3030
+ msgid "You will no longer receive email updates about Jetpack."
3031
+ msgstr ""
3032
+
3033
+ #: jetpack.php:2351
3034
+ msgid "An <span>Automattic</span> Airline"
3035
+ msgstr ""
3036
+
3037
+ #: jetpack.php:2354
3038
+ msgid "Privacy Policy"
3039
+ msgstr ""
3040
+
3041
+ #: jetpack.php:2355
3042
+ msgid "Terms of Service"
3043
+ msgstr "Podmínky používání služby"
3044
+
3045
+ #: jetpack.php:2357
3046
+ msgid "Debug"
3047
+ msgstr ""
3048
+
3049
+ #: jetpack.php:2359 modules/sharedaddy/sharedaddy.php:82
3050
+ msgid "Support"
3051
+ msgstr "Podpora"
3052
+
3053
+ #: jetpack.php:2379
3054
+ msgid "This is sensitive information. Please do not post your BLOG_TOKEN or USER_TOKEN publicly; they are like passwords."
3055
+ msgstr ""
3056
+
3057
+ #: jetpack.php:2423
3058
+ msgid "Configure %s"
3059
+ msgstr ""
3060
+
3061
+ #: jetpack.php:2482
3062
+ msgid "Deactivate"
3063
+ msgstr "Deaktivovat"
3064
+
3065
+ #: jetpack.php:2492
3066
+ msgid "Activate"
3067
+ msgstr "Aktivovat"
3068
+
3069
+ #: jetpack.php:2509
3070
+ msgid "Free"
3071
+ msgstr ""
3072
+
3073
+ #: jetpack.php:2509
3074
+ msgid "Purchase"
3075
+ msgstr ""
3076
+
3077
+ #: jetpack.php:2517
3078
+ msgid "New"
3079
+ msgstr ""
3080
+
3081
+ #: jetpack.php:2520
3082
+ msgid "Updated"
3083
+ msgstr ""
3084
+
3085
+ #: jetpack.php:2548
3086
+ msgid "Configure"
3087
+ msgstr "Nastavení"
3088
+
3089
+ #: jetpack.php:2582
3090
+ msgid "Coming soon&#8230;"
3091
+ msgstr ""
3092
+
3093
+ #: jetpack.php:2735 jetpack.php:2737 jetpack.php:2739 jetpack.php:2742
3094
+ #: jetpack.php:3673
3095
+ msgid "Error Details: %s"
3096
+ msgstr ""
3097
+
3098
+ #: jetpack.php:2898
3099
+ msgid "Jetpack Plugin Version"
3100
+ msgstr ""
3101
+
3102
+ #: jetpack.php:2904
3103
+ msgid "The Client ID/WP.com Blog ID of this site"
3104
+ msgstr ""
3105
+
3106
+ #: jetpack.php:3156
3107
+ msgid "You must connect your Jetpack plugin to WordPress.com to use this feature."
3108
+ msgstr ""
3109
+
3110
+ #: jetpack.php:3159
3111
+ msgid "Someone may be trying to trick you into giving them access to your site. Or it could be you just encountered a bug :). Either way, please close this window."
3112
+ msgstr ""
3113
+
3114
+ #: jetpack.php:3187
3115
+ msgid "The authorization process expired. Please go back and try again."
3116
+ msgstr ""
3117
+
3118
+ #: jetpack.php:3227
3119
+ msgid "%s wants to access your site&#8217;s data. Log in to authorize that access."
3120
+ msgstr ""
3121
+
3122
+ #: jetpack.php:3626
3123
+ msgid "An administrator for this blog must set up the Jetpack connection."
3124
+ msgstr ""
3125
+
3126
+ #: jetpack.php:3631
3127
+ msgid "You need to register your Jetpack before connecting it."
3128
+ msgstr ""
3129
+
3130
+ #: locales.php:29
3131
+ msgctxt "locales"
3132
+ msgid "%1$s/%2$s"
3133
+ msgstr ""
3134
+
3135
+ #: modules/after-the-deadline/atd-l10n.php:12
3136
+ msgid "Spelling"
3137
+ msgstr ""
3138
+
3139
+ #: modules/after-the-deadline/atd-l10n.php:13
3140
+ msgid "Repeated Word"
3141
+ msgstr ""
3142
+
3143
+ #: modules/after-the-deadline/atd-l10n.php:15
3144
+ msgid "No suggestions"
3145
+ msgstr "Žádné návrhy"
3146
+
3147
+ #: modules/after-the-deadline/atd-l10n.php:17
3148
+ msgid "Explain..."
3149
+ msgstr ""
3150
+
3151
+ #: modules/after-the-deadline/atd-l10n.php:18
3152
+ msgid "Ignore suggestion"
3153
+ msgstr ""
3154
+
3155
+ #: modules/after-the-deadline/atd-l10n.php:19
3156
+ msgid "Ignore always"
3157
+ msgstr ""
3158
+
3159
+ #: modules/after-the-deadline/atd-l10n.php:20
3160
+ msgid "Ignore all"
3161
+ msgstr "Přeskočit vše"
3162
+
3163
+ #: modules/after-the-deadline/atd-l10n.php:22
3164
+ msgid "Edit Selection..."
3165
+ msgstr ""
3166
+
3167
+ #: modules/after-the-deadline/atd-l10n.php:24
3168
+ msgid "proofread"
3169
+ msgstr ""
3170
+
3171
+ #: modules/after-the-deadline/atd-l10n.php:25
3172
+ msgid "edit text"
3173
+ msgstr ""
3174
+
3175
+ #: modules/after-the-deadline/atd-l10n.php:26
3176
+ #: modules/after-the-deadline.php:224
3177
+ msgid "Proofread Writing"
3178
+ msgstr ""
3179
+
3180
+ #: modules/after-the-deadline/atd-l10n.php:28
3181
+ msgid "No writing errors were found."
3182
+ msgstr ""
3183
+
3184
+ #: modules/after-the-deadline/atd-l10n.php:29
3185
+ msgid "There was a problem communicating with the Proofreading service. Try again in one minute."
3186
+ msgstr ""
3187
+
3188
+ #: modules/after-the-deadline/atd-l10n.php:30
3189
+ msgid "There was an error communicating with the proofreading service."
3190
+ msgstr ""
3191
+
3192
+ #: modules/after-the-deadline/atd-l10n.php:32
3193
+ msgid "Replace selection with:"
3194
+ msgstr ""
3195
+
3196
+ #: modules/after-the-deadline/atd-l10n.php:33
3197
+ msgid ""
3198
+ "The proofreader has suggestions for this post. Are you sure you want to publish it?\n"
3199
+ "\n"
3200
+ "Press OK to publish your post, or Cancel to view the suggestions and edit your post."
3201
+ msgstr ""
3202
+
3203
+ #: functions.opengraph.php:74
3204
+ msgid "(no title)"
3205
+ msgstr "(bez názvu)"
3206
+
3207
+ #: jetpack.php:1050
3208
+ msgid "Jetpack requires WordPress version %s or later."
3209
+ msgstr ""
3210
+
3211
+ #: jetpack.php:1246 jetpack.php:1262
3212
+ msgid "Jetpack contains the most recent version of the old &#8220;%1$s&#8221; plugin."
3213
+ msgstr ""
3214
+
3215
+ #: jetpack.php:1283
3216
+ msgid "One New Jetpack Module"
3217
+ msgid_plural "%s New Jetpack Modules"
3218
+ msgstr[0] ""
3219
+ msgstr[1] ""
3220
+ msgstr[2] ""
3221
+
3222
+ #: jetpack.php:1286
3223
+ msgid "Jetpack"
3224
+ msgstr ""
3225
+
3226
+ #: jetpack.php:1438 jetpack.php:1462 jetpack.php:1473 jetpack.php:2238
3227
+ #: jetpack.php:2422
3228
+ msgid "Jetpack by WordPress.com"
3229
+ msgstr ""
3230
+
3231
+ #: jetpack.php:1439 jetpack.php:1463 jetpack.php:2241
3232
+ msgid "Jetpack supercharges your self-hosted WordPress site with the awesome cloud power of WordPress.com."
3233
+ msgstr ""
3234
+
3235
+ #: jetpack.php:1440 jetpack.php:1464
3236
+ msgid "On this page, you are able to view the modules available within Jetpack, learn more about them, and activate or deactivate them as needed."
3237
+ msgstr ""
3238
+
3239
+ #: jetpack.php:1441
3240
+ msgid "Jetpack Module Options"
3241
+ msgstr ""
3242
+
3243
+ #: jetpack.php:1442
3244
+ msgid "<strong>To Activate/Deactivate a Module</strong> - Click on Learn More. An Activate or Deactivate button will now appear next to the Learn More button. Click the Activate/Deactivate button."
3245
+ msgstr ""
3246
+
3247
+ #: jetpack.php:1443 jetpack.php:1486
3248
+ msgid "For more information:"
3249
+ msgstr "Další informace:"
3250
+
3251
+ #: jetpack.php:1444 jetpack.php:1487
3252
+ msgid "Jetpack FAQ"
3253
+ msgstr ""
3254
+
3255
+ #: jetpack.php:1445 jetpack.php:1488
3256
+ msgid "Jetpack Support"
3257
+ msgstr ""
3258
+
3259
+ #: jetpack.php:1460
3260
+ msgid "Overview"
3261
+ msgstr ""
3262
+
3263
+ #: jetpack.php:1471
3264
+ msgid "Modules"
3265
+ msgstr ""
3266
+
3267
+ #: jetpack.php:1474
3268
+ msgid "You can activate or deactivate individual Jetpack modules to suit your needs."
3269
+ msgstr ""
3270
+
3271
+ #: jetpack.php:1476
3272
+ msgid "Find the component you want to manage"
3273
+ msgstr ""
3274
+
3275
+ #: jetpack.php:1477
3276
+ msgid "Click on Learn More"
3277
+ msgstr ""
3278
+
3279
+ #: jetpack.php:1478
3280
+ msgid "An Activate or Deactivate button will appear"
3281
+ msgstr ""
3282
+
3283
+ #: jetpack.php:1479
3284
+ msgid "If additional settings are available, a link to them will appear"
3285
+ msgstr ""
3286
+
3287
+ #: jetpack.php:1557 modules/publicize/ui.php:511
3288
+ #: modules/sharedaddy/sharedaddy.php:74 modules/sharedaddy/sharedaddy.php:81
3289
+ msgid "Settings"
3290
+ msgstr "Nastavení"
3291
+
3292
+ #: jetpack.php:1574
3293
+ msgid "Dismiss this notice and deactivate Jetpack."
3294
+ msgstr ""
3295
+
3296
+ #: jetpack.php:1580
3297
+ msgid "<strong>Your Jetpack is almost ready</strong> &#8211; A connection to WordPress.com is needed to enable features like Comments, Stats, Contact Forms, and Subscriptions. Connect now to get fueled up!"
3298
+ msgstr ""
3299
+
3300
+ #: jetpack.php:1582
3301
+ msgid "<strong>Jetpack is installed</strong> and ready to bring awesome, WordPress.com cloud-powered features to your site."
3302
+ msgstr ""
3303
+
3304
+ #: jetpack.php:1588 jetpack.php:2269
3305
+ msgid "Connect to WordPress.com"
3306
+ msgstr ""
3307
+
3308
+ #: jetpack.php:1590 modules/module-info.php:45 modules/module-info.php:81
3309
+ #: modules/module-info.php:138 modules/module-info.php:173
3310
+ #: modules/module-info.php:207 modules/module-info.php:237
3311
+ #: modules/module-info.php:270 modules/module-info.php:306
3312
+ #: modules/module-info.php:357 modules/module-info.php:379
3313
+ #: modules/module-info.php:417 modules/module-info.php:442
3314
+ #: modules/module-info.php:460 modules/module-info.php:479
3315
+ #: modules/module-info.php:485 modules/module-info.php:512
3316
+ #: modules/module-info.php:543 modules/module-info.php:578
3317
+ #: modules/module-info.php:600 modules/module-info.php:622
3318
+ #: modules/module-info.php:666 modules/module-info.php:694
3319
+ #: modules/module-info.php:722
3320
+ msgid "Learn More"
3321
+ msgstr ""
3322
+
3323
+ #: jetpack.php:1603
3324
+ msgid "<strong>Jetpack is activated!</strong> Each site on your network must be connected individually by an admin on that site."
3325
+ msgstr ""
3326
+
3327
+ #: jetpack.php:1630
3328
+ msgid "Jetpack now includes Jetpack Comments, which enables your visitors to use their WordPress.com, Twitter, or Facebook accounts when commenting on your site. To activate Jetpack Comments, <a href=\"%s\">%s</a>."
3329
+ msgstr ""
3330
+
3331
+ #: jetpack.php:1638
3332
+ msgid "click here"
3333
+ msgstr ""
3334
+
3335
+ #: jetpack.php:1769
3336
+ msgid "You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features."
3337
+ msgstr ""
3338
+
3339
+ #: jetpack.php:1772
3340
+ msgid "Don&#8217;t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack."
3341
+ msgstr ""
3342
+
3343
+ #: jetpack.php:1776
3344
+ msgid "Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one."
3345
+ msgstr ""
3346
+
3347
+ #: jetpack.php:1779
3348
+ msgid "Wrong size. Hm&#8230; it seems your Jetpack doesn&#8217;t quite fit. Have you lost weight? Click &#8220;Connect to WordPress.com&#8221; again to get your Jetpack adjusted."
3349
+ msgstr ""
3350
+
3351
+ #: jetpack.php:1783
3352
+ msgid "Your website needs to be publicly accessible to use Jetpack: %s"
3353
+ msgstr ""
3354
+
3355
+ #: jetpack.php:1788
3356
+ msgid "%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3357
+ msgstr ""
3358
+
3359
+ #: jetpack.php:1790
3360
+ msgid "Do you still have the %s plugin installed?"
3361
+ msgstr ""
3362
+
3363
+ #: jetpack.php:1793
3364
+ msgid "Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?"
3365
+ msgstr ""
3366
+
3367
+ #: jetpack.php:1801
3368
+ msgid "<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost)."
3369
+ msgstr ""
3370
+
3371
+ #: jetpack.php:1807
3372
+ msgid "WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later."
3373
+ msgstr ""
3374
+
3375
+ #: jetpack.php:1811
3376
+ msgid "Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host."
3377
+ msgstr ""
3378
+
3379
+ #: jetpack.php:1851
3380
+ msgid "<strong>Your Jetpack has a glitch.</strong> Something went wrong that&#8217;s never supposed to happen. Guess you&#8217;re just lucky: %s"
3381
+ msgstr ""
3382
+
3383
+ #: jetpack.php:1854
3384
+ msgid "Try connecting again."
3385
+ msgstr ""
3386
+
3387
+ #: jetpack.php:1878
3388
+ msgid "Welcome to <strong>Jetpack %s</strong>!"
3389
+ msgstr ""
3390
+
3391
+ #: jetpack.php:1890
3392
+ msgid "The following new modules have been activated: %l."
3393
+ msgstr ""
3394
+
3395
+ #: jetpack.php:1902
3396
+ msgid "The following modules have been updated: %l."
3397
+ msgstr ""
3398
+
3399
+ #: jetpack.php:1911
3400
+ msgid "<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card."
3401
+ msgstr ""
3402
+
3403
+ #: jetpack.php:1937
3404
+ msgctxt "%l = list of Jetpack module/feature names"
3405
+ msgid "<strong>%l Deactivated!</strong> You can activate it again at any time using the activate button on the module card."
3406
+ msgid_plural "<strong>%l Deactivated!</strong> You can activate them again at any time using the activate buttons on their module cards."
3407
+ msgstr[0] ""
3408
+ msgstr[1] ""
3409
+ msgstr[2] ""
3410
+
3411
+ #: jetpack.php:1949
3412
+ msgid "<strong>Module settings were saved.</strong> "
3413
+ msgstr ""
3414
+
3415
+ #: jetpack.php:1953
3416
+ msgid "<strong>Your Jetpack is already connected.</strong> "
3417
+ msgstr ""
3418
+
3419
+ #: jetpack.php:1957 jetpack.php:1964
3420
+ msgid "<strong>You&#8217;re fueled up and ready to go.</strong> "
3421
+ msgstr ""
3422
+
3423
+ #: jetpack.php:1959
3424
+ msgid "The features below are now active. Click the learn more buttons to explore each feature."
3425
+ msgstr ""
3426
+
3427
+ #: jetpack.php:1970
3428
+ msgid "<strong>You have unlinked your account (%s) from WordPress.com.</strong>"
3429
+ msgstr ""
3430
+
3431
+ #: jetpack.php:1992
3432
+ msgid "Jetpack contains the most recent version of the old %l plugin."
3433
+ msgid_plural "Jetpack contains the most recent versions of the old %l plugins."
3434
+ msgstr[0] ""
3435
+ msgstr[1] ""
3436
+ msgstr[2] ""
3437
+
3438
+ #: jetpack.php:2001
3439
+ msgid "The old version has been deactivated and can be removed from your site."
3440
+ msgid_plural "The old versions have been deactivated and can be removed from your site."
3441
+ msgstr[0] ""
3442
+ msgstr[1] ""
3443
+ msgstr[2] ""
3444
+
3445
+ #: jetpack.php:2067
3446
+ msgid "Is this site private?"
3447
+ msgstr ""
3448
+
3449
+ #: jetpack.php:2070
3450
+ msgctxt "%l = list of Jetpack module/feature names"
3451
+ msgid "Like your site's RSS feeds, %l allows access to your posts and other content to third parties."
3452
+ msgid_plural "Like your site's RSS feeds, %l allow access to your posts and other content to third parties."
3453
+ msgstr[0] ""
3454
+ msgstr[1] ""
3455
+ msgstr[2] ""
3456
+
3457
+ #: jetpack.php:2083
3458
+ msgctxt "%1$s = deactivation URL, %2$s = \"Deactivate {list of Jetpack module/feature names}"
3459
+ msgid "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating this feature</a>."
3460
+ msgid_plural "If your site is not publicly accessible, consider <a href=\"%1$s\" title=\"%2$s\">deactivating these features</a>."
3461
+ msgstr[0] ""
3462
+ msgstr[1] ""
3463
+ msgstr[2] ""
3464
+
3465
+ #: jetpack.php:2097
3466
+ msgctxt "%l = list of Jetpack module/feature names"
3467
+ msgid "Deactivate %l"
3468
+ msgstr ""
3469
+
3470
+ #: jetpack.php:2228
3471
+ msgid "Connected to WordPress.com"
3472
+ msgstr ""
3473
+
3474
+ #: jetpack.php:2228
3475
+ msgid "Disconnect from WordPress.com"
3476
+ msgstr ""
3477
+
3478
+ #: class.json-api-endpoints.php:1113
3479
+ msgid "This post is password protected."
3480
+ msgstr "Tento příspěvek je chráněn heslem."
3481
+
3482
+ #: class.json-api-endpoints.php:2633
3483
+ msgid "Comment cache problem?"
3484
+ msgstr ""
languages/jetpack-da_DK.mo ADDED
Binary file
languages/jetpack-da_DK.po ADDED
@@ -0,0 +1,3480 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of 2.0 in Danish
2
+ # This file is distributed under the same license as the 2.0 package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2012-11-20 20:01:58+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: 2.0\n"
12
+
13
+ #: modules/widgets/rsslinks-widget.php:113
14
+ msgid "Red"
15
+ msgstr "R&#248;d"
16
+
17
+ #: modules/widgets/rsslinks-widget.php:114
18
+ msgid "Orange"
19
+ msgstr "Orange"
20
+
21
+ #: modules/widgets/rsslinks-widget.php:115
22
+ msgid "Green"
23
+ msgstr "Gr&#248;n"
24
+
25
+ #: modules/widgets/rsslinks-widget.php:116
26
+ msgid "Blue"
27
+ msgstr "Bl&#229;"
28
+
29
+ #: modules/widgets/rsslinks-widget.php:117
30
+ msgid "Purple"
31
+ msgstr "Lilla"
32
+
33
+ #: modules/widgets/rsslinks-widget.php:118
34
+ msgid "Pink"
35
+ msgstr "Pink"
36
+
37
+ #: modules/widgets/rsslinks-widget.php:119
38
+ msgid "Silver"
39
+ msgstr "S&#248;lv"
40
+
41
+ #: modules/widgets/rsslinks-widget.php:121
42
+ msgid "Image Color:"
43
+ msgstr "Billedfarve:"
44
+
45
+ #: modules/widgets/rsslinks-widget.php:140
46
+ msgid "Subscribe to %s"
47
+ msgstr "Tilmeld til %s"
48
+
49
+ #: modules/widgets/top-posts.php:35 modules/widgets/top-posts.php:41
50
+ msgid "Top Posts &amp; Pages"
51
+ msgstr ""
52
+
53
+ #: modules/widgets/top-posts.php:37
54
+ msgid "Shows your most viewed posts and pages."
55
+ msgstr ""
56
+
57
+ #: modules/widgets/top-posts.php:78
58
+ msgid "Number of posts to show:"
59
+ msgstr "Antal indlæg der skal vises:"
60
+
61
+ #: modules/widgets/top-posts.php:83
62
+ msgid "Display as:"
63
+ msgstr ""
64
+
65
+ #: modules/widgets/top-posts.php:85
66
+ msgid "Text List"
67
+ msgstr ""
68
+
69
+ #: modules/widgets/top-posts.php:86
70
+ msgid "Image List"
71
+ msgstr ""
72
+
73
+ #: modules/widgets/top-posts.php:87
74
+ msgid "Image Grid"
75
+ msgstr ""
76
+
77
+ #: modules/widgets/top-posts.php:91
78
+ msgid "Top Posts &amp; Pages by views are calculated from 24-48 hours of stats. They take a while to change."
79
+ msgstr ""
80
+
81
+ #: modules/widgets/top-posts.php:164
82
+ msgid "There are no posts to display. <a href=\"%s\">Want more traffic?</a>"
83
+ msgstr ""
84
+
85
+ #: modules/widgets/twitter.php:22
86
+ msgid "Display your Tweets from Twitter"
87
+ msgstr ""
88
+
89
+ #: modules/widgets/twitter.php:31
90
+ msgid "Please configure your Twitter username for the <a href=\"%s\">Twitter Widget</a>."
91
+ msgstr ""
92
+
93
+ #: modules/widgets/twitter.php:41
94
+ msgid "Twitter Updates"
95
+ msgstr "Twitter-opdateringer"
96
+
97
+ #: modules/widgets/twitter.php:182 modules/widgets/twitter.php:203
98
+ msgid "Error: Twitter did not respond. Please wait a few minutes and refresh this page."
99
+ msgstr "Fejl: Twitter svarede ikke. Vent et par minutter og opdater derefter denne side."
100
+
101
+ #: modules/widgets/twitter.php:196
102
+ msgid "Error: Please make sure the Twitter account is %1$spublic%2$s."
103
+ msgstr ""
104
+
105
+ #: modules/widgets/twitter.php:265
106
+ msgid "Twitter username:"
107
+ msgstr "Twitter brugernavn:"
108
+
109
+ #: modules/widgets/twitter.php:272
110
+ msgid "Maximum number of Tweets to show:"
111
+ msgstr ""
112
+
113
+ #: modules/widgets/twitter.php:286
114
+ msgid "Hide replies"
115
+ msgstr "Skjul svar"
116
+
117
+ #: modules/widgets/twitter.php:293
118
+ msgid "Hide Tweets pushed by Publicize"
119
+ msgstr ""
120
+
121
+ #: modules/widgets/twitter.php:300
122
+ msgid "Include retweets"
123
+ msgstr "Medtag retweets"
124
+
125
+ #: modules/widgets/twitter.php:307
126
+ msgid "Display Follow Button"
127
+ msgstr ""
128
+
129
+ #: modules/widgets/twitter.php:313
130
+ msgid "Text to display between Tweet and timestamp:"
131
+ msgstr ""
132
+
133
+ msgid "http://wordpress.org/extend/plugins/jetpack/"
134
+ msgstr "http://wordpress.org/extend/plugins/jetpack/"
135
+
136
+ msgid "Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users."
137
+ msgstr "Overfør kraften fra WordPress.com skyen til din selv-hostede WordPress. Jetpack giver dig mulighed for at forbinde dit websted til en WordPress.com-konto og udnytte de kraftfulde funktioner som kun WordPress.com-brugere normalt har adgang til."
138
+
139
+ msgid "Automattic"
140
+ msgstr "Automattic"
141
+
142
+ msgid "http://jetpack.me"
143
+ msgstr "http://jetpack.me"
144
+
145
+ msgid "Improve your spelling, style, and grammar with the <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> Proofreading service."
146
+ msgstr "Prøv at forbedre din stavning, sproglige stil og grammatik med <a href=\"http://www.afterthedeadline.com/\">After&nbsp;the&nbsp;Deadline</a> korrekturlæsningstjenesten."
147
+
148
+ msgid "Transform your standard image galleries into an immersive full-screen experience."
149
+ msgstr ""
150
+
151
+ msgid "A new comment system that has integrated social media login options."
152
+ msgstr ""
153
+
154
+ msgid "Easily insert a contact form any where on your site."
155
+ msgstr ""
156
+
157
+ msgid "Customize the appearance of your site using CSS but without modifying your theme."
158
+ msgstr ""
159
+
160
+ msgid "Share your public posts and comments to search engines and other services in real-time."
161
+ msgstr ""
162
+
163
+ msgid "Show a pop-up business card of your users' gravatar profiles in comments."
164
+ msgstr "Vis et popup-visitkort af dine brugeres gravatar profil i kommentarer."
165
+
166
+ msgid "Automatically pull the next set of posts into view when the reader approaches the bottom of the page."
167
+ msgstr ""
168
+
169
+ msgid "Allow applications to securely access your content through the cloud."
170
+ msgstr ""
171
+
172
+ msgid "Beautiful Math"
173
+ msgstr "Skøn matematik"
174
+
175
+ msgid "Mark up your posts with the <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> markup language, perfect for complex mathematical equations and other &#252;ber-geekery."
176
+ msgstr "Marker dine indlæg med <img src=\"http://l.wordpress.com/latex.php?latex=%5CLaTeX&amp;bg=transparent&amp;fg=000&amp;s=-2\" alt=\"LaTeX logo\" title=\"LaTeX\" style=\"vertical-align: -25%\" /> formatteringsværktøj, perfekt til komplekse matematiske ligninger og andet nørderi. "
177
+
178
+ msgid "Automatically optimize your site for mobile devices."
179
+ msgstr ""
180
+
181
+ msgid "Receive notifications on your Apple device."
182
+ msgstr ""
183
+
184
+ msgid "Monitor and manage your site's activity with Notifications in your Toolbar and on WordPress.com."
185
+ msgstr ""
186
+
187
+ msgid "Give your site a boost by loading images from the WordPress.com content delivery network."
188
+ msgstr ""
189
+
190
+ msgid "Publish posts to your blog directly from your personal email account."
191
+ msgstr ""
192
+
193
+ msgid "Connect your site to popular social networks and automatically share new posts with your friends."
194
+ msgstr ""
195
+
196
+ msgid "The most super duper sharing tool on the interwebs. Share content with Facebook, Twitter, and many more."
197
+ msgstr "Det mest fantastiske delingsværktøj på internettet. Del indhold på Facebook, Twitter og mange andre tjenester."
198
+
199
+ msgid "Easily embed videos and more from sites like YouTube, Vimeo, and SlideShare."
200
+ msgstr "Du kan nemt indlejre videoer og andet fra websteder som YouTube, Vimeo og Slideshare."
201
+
202
+ msgid "Enable WP.me-powered shortlinks for all of your Posts and Pages for easier sharing."
203
+ msgstr "Aktiver WP.me-drevne kortlinks til alle indlæg og sider for at gøre deling nemmere."
204
+
205
+ msgid "Simple, concise site stats with no additional load on your server."
206
+ msgstr "Simpel, kortfattet statistik for webstedet uden ekstra belastning af din egen server."
207
+
208
+ msgid "Allow users to subscribe to your posts and comments to receive a notification via email."
209
+ msgstr "Tillad brugere at abonnere på påmindelser om nye indlæg og kommentarer via e-mail."
210
+
211
+ msgid "Realtime backup and security scanning for your WordPress site."
212
+ msgstr "Realtid backup og sikkerhedsskanninger til dit WordPress websted."
213
+
214
+ msgid "Easily add images, Twitter updates, and your site's RSS links to your theme's sidebar."
215
+ msgstr ""
216
+
217
+ #: modules/widgets/facebook-likebox.php:115
218
+ #: modules/widgets/gravatar-profile.php:164
219
+ msgid "Title"
220
+ msgstr "Titel"
221
+
222
+ #: modules/widgets/facebook-likebox.php:122
223
+ msgid "Facebook Page URL"
224
+ msgstr ""
225
+
226
+ #: modules/widgets/facebook-likebox.php:125
227
+ msgid "The Like Box only works with <a href=\"http://www.facebook.com/help/?faq=174987089221178\">Facebook Pages</a>."
228
+ msgstr ""
229
+
230
+ #: modules/widgets/facebook-likebox.php:131
231
+ msgid "Width"
232
+ msgstr "Bredde"
233
+
234
+ #: modules/widgets/facebook-likebox.php:138
235
+ msgid "Height"
236
+ msgstr "H&#248;jde"
237
+
238
+ #: modules/widgets/facebook-likebox.php:157
239
+ msgid "Show Faces"
240
+ msgstr ""
241
+
242
+ #: modules/widgets/facebook-likebox.php:159
243
+ msgid "Show profile photos in the plugin."
244
+ msgstr ""
245
+
246
+ #: modules/widgets/facebook-likebox.php:166
247
+ msgid "Show Stream"
248
+ msgstr ""
249
+
250
+ #: modules/widgets/facebook-likebox.php:168
251
+ msgid "Show the profile stream for the public profile."
252
+ msgstr ""
253
+
254
+ #: modules/widgets/facebook-likebox.php:175
255
+ msgid "Show Wall"
256
+ msgstr ""
257
+
258
+ #: modules/widgets/facebook-likebox.php:177
259
+ msgid "Show the wall for a Places page rather than friend activity."
260
+ msgstr ""
261
+
262
+ #: modules/widgets/gravatar-profile.php:19
263
+ msgid "Gravatar Profile"
264
+ msgstr ""
265
+
266
+ #: modules/widgets/gravatar-profile.php:21
267
+ msgid "Display a mini version of your Gravatar Profile"
268
+ msgstr ""
269
+
270
+ #: modules/widgets/gravatar-profile.php:37
271
+ msgid "You need to select what to show in this <a href=\"%s\">Gravatar Profile widget</a>."
272
+ msgstr ""
273
+
274
+ #: modules/widgets/gravatar-profile.php:91
275
+ msgid "View Full Profile &rarr;"
276
+ msgstr ""
277
+
278
+ #: modules/widgets/gravatar-profile.php:99
279
+ msgid "Error loading profile"
280
+ msgstr ""
281
+
282
+ #: modules/widgets/gravatar-profile.php:111
283
+ msgid "Personal Links"
284
+ msgstr ""
285
+
286
+ #: modules/widgets/gravatar-profile.php:131
287
+ msgid "Verified Services"
288
+ msgstr ""
289
+
290
+ #: modules/widgets/gravatar-profile.php:142
291
+ msgctxt "1: User Name, 2: Service Name (Facebook, Twitter, ...)"
292
+ msgid "%1$s on %2$s"
293
+ msgstr ""
294
+
295
+ #: modules/widgets/gravatar-profile.php:170
296
+ msgid "Select a user or pick \"custom\" and enter a custom email address."
297
+ msgstr ""
298
+
299
+ #: modules/widgets/gravatar-profile.php:174
300
+ msgid "Custom"
301
+ msgstr "Brugerdefineret"
302
+
303
+ #: modules/widgets/gravatar-profile.php:184
304
+ msgid "Custom Email Address"
305
+ msgstr ""
306
+
307
+ #: modules/widgets/gravatar-profile.php:192
308
+ msgid "Show Personal Links"
309
+ msgstr ""
310
+
311
+ #: modules/widgets/gravatar-profile.php:194
312
+ msgid "Links to your websites, blogs, or any other sites that help describe who you are."
313
+ msgstr ""
314
+
315
+ #: modules/widgets/gravatar-profile.php:201
316
+ msgid "Show Account Links"
317
+ msgstr ""
318
+
319
+ #: modules/widgets/gravatar-profile.php:203
320
+ msgid "Links to services that you use across the web."
321
+ msgstr ""
322
+
323
+ #: modules/widgets/gravatar-profile.php:207
324
+ msgid "Opens in new window"
325
+ msgstr ""
326
+
327
+ #: modules/widgets/gravatar-profile.php:207
328
+ msgid "Edit Your Profile"
329
+ msgstr ""
330
+
331
+ #: modules/widgets/gravatar-profile.php:207
332
+ msgid "What's a Gravatar?"
333
+ msgstr ""
334
+
335
+ #: modules/widgets/image-widget.php:12
336
+ msgid "Display an image in your sidebar"
337
+ msgstr "Vis et billede i din sidebar"
338
+
339
+ #: modules/widgets/image-widget.php:14
340
+ msgid "Image (Jetpack)"
341
+ msgstr "Billede (Jetpack)"
342
+
343
+ #: modules/widgets/image-widget.php:110
344
+ msgid "Image URL:"
345
+ msgstr "Billed-url:"
346
+
347
+ #: modules/widgets/image-widget.php:113
348
+ msgid "Alternate text:"
349
+ msgstr "Alternativ tekst"
350
+
351
+ #: modules/widgets/image-widget.php:116
352
+ msgid "Image title:"
353
+ msgstr "Billedtitel:"
354
+
355
+ #: modules/widgets/image-widget.php:119
356
+ msgid "Caption:"
357
+ msgstr "Billedtekst:"
358
+
359
+ #: modules/widgets/image-widget.php:124
360
+ msgid "None"
361
+ msgstr "Ingen"
362
+
363
+ #: modules/widgets/image-widget.php:125
364
+ msgid "Left"
365
+ msgstr "Venstre"
366
+
367
+ #: modules/widgets/image-widget.php:126
368
+ msgid "Center"
369
+ msgstr "Center"
370
+
371
+ #: modules/widgets/image-widget.php:127
372
+ msgid "Right"
373
+ msgstr "H&#248;jre"
374
+
375
+ #: modules/widgets/image-widget.php:129
376
+ msgid "Image Alignment:"
377
+ msgstr "Billedjustering:"
378
+
379
+ #: modules/widgets/image-widget.php:139
380
+ msgid "Width:"
381
+ msgstr "Bredde:"
382
+
383
+ #: modules/widgets/image-widget.php:142
384
+ msgid "Height:"
385
+ msgstr "Højde:"
386
+
387
+ #: modules/widgets/image-widget.php:145
388
+ msgid "If empty, we will attempt to determine the image size."
389
+ msgstr "Hvis tomt forsøger vi at finde billedets størrelse."
390
+
391
+ #: modules/widgets/image-widget.php:146
392
+ msgid "Link URL (when the image is clicked):"
393
+ msgstr "Link URL (Når der bliver klikket på billedet):"
394
+
395
+ #: modules/widgets/rsslinks-widget.php:12
396
+ msgid "Links to your blog's RSS feeds"
397
+ msgstr "Links til dit websteds RSS feeds"
398
+
399
+ #: modules/widgets/rsslinks-widget.php:13
400
+ msgid "RSS Links (Jetpack)"
401
+ msgstr "RSS links (Jetpack)"
402
+
403
+ #: modules/widgets/rsslinks-widget.php:62 modules/widgets/top-posts.php:73
404
+ #: modules/widgets/twitter.php:258
405
+ msgid "Title:"
406
+ msgstr "Titel:"
407
+
408
+ #: modules/widgets/rsslinks-widget.php:67
409
+ #: modules/widgets/rsslinks-widget.php:133
410
+ msgid "Posts"
411
+ msgstr "Indl&#230;g"
412
+
413
+ #: modules/widgets/rsslinks-widget.php:68
414
+ #: modules/widgets/rsslinks-widget.php:136
415
+ msgid "Comments"
416
+ msgstr "Kommentarer"
417
+
418
+ #: modules/widgets/rsslinks-widget.php:69
419
+ msgid "Posts & Comments"
420
+ msgstr "Indlæg & kommentarer"
421
+
422
+ #: modules/widgets/rsslinks-widget.php:71
423
+ msgid "Feed(s) to Display:"
424
+ msgstr "Feed(s) som skal vises:"
425
+
426
+ #: modules/widgets/rsslinks-widget.php:81
427
+ msgid "Text Link"
428
+ msgstr "Tekstlink"
429
+
430
+ #: modules/widgets/rsslinks-widget.php:82
431
+ msgid "Image Link"
432
+ msgstr "Billedlink"
433
+
434
+ #: modules/widgets/rsslinks-widget.php:83
435
+ msgid "Text & Image Links"
436
+ msgstr "Tekst- & billedlinks"
437
+
438
+ #: modules/widgets/rsslinks-widget.php:85
439
+ msgid "Format:"
440
+ msgstr "Format:"
441
+
442
+ #: modules/widgets/rsslinks-widget.php:96
443
+ msgid "Image Settings:"
444
+ msgstr "Billedindstillinger:"
445
+
446
+ #: modules/widgets/rsslinks-widget.php:99
447
+ msgid "Small"
448
+ msgstr "Lille"
449
+
450
+ #: modules/widgets/rsslinks-widget.php:100
451
+ msgid "Medium"
452
+ msgstr "Medium"
453
+
454
+ #: modules/widgets/rsslinks-widget.php:101
455
+ msgid "Large"
456
+ msgstr "Stor"
457
+
458
+ #: modules/widgets/rsslinks-widget.php:103
459
+ msgid "Image Size:"
460
+ msgstr "Billedstørrelse:"
461
+
462
+ #: modules/stats.php:527
463
+ msgid "Hide the stats smiley face image."
464
+ msgstr ""
465
+
466
+ #: modules/stats.php:527
467
+ msgid "The image helps collect stats and <strong>makes the world a better place</strong> but should still work when hidden"
468
+ msgstr ""
469
+
470
+ #: modules/stats.php:527
471
+ msgid "Smiley face"
472
+ msgstr ""
473
+
474
+ #: modules/stats.php:528
475
+ msgid "Report visibility"
476
+ msgstr "Rapportsynlighed"
477
+
478
+ #: modules/stats.php:530
479
+ msgid "Select the roles that will be able to view stats reports."
480
+ msgstr "Vælg de roller, som vil være i stand til at se statistikrapporter."
481
+
482
+ #: modules/stats.php:541
483
+ msgid "Save configuration"
484
+ msgstr "Gem indstillinger"
485
+
486
+ #: modules/stats.php:597
487
+ msgid "Stats"
488
+ msgstr ""
489
+
490
+ #: modules/stats.php:599
491
+ msgid "Views over 48 hours. Click for more Site Stats."
492
+ msgstr "Visninger de seneste 48 timer. Klik her for mere webstedsstatistik."
493
+
494
+ #: modules/stats.php:666
495
+ msgid "day"
496
+ msgstr "dag"
497
+
498
+ #: modules/stats.php:667
499
+ msgid "week"
500
+ msgstr "uge"
501
+
502
+ #: modules/stats.php:668
503
+ msgid "month"
504
+ msgstr "måned"
505
+
506
+ #: modules/stats.php:671
507
+ msgid "the past day"
508
+ msgstr "den seneste dag"
509
+
510
+ #: modules/stats.php:672
511
+ msgid "the past week"
512
+ msgstr "den sidste uge"
513
+
514
+ #: modules/stats.php:673
515
+ msgid "the past month"
516
+ msgstr "den seneste måned"
517
+
518
+ #: modules/stats.php:674
519
+ msgid "the past quarter"
520
+ msgstr "det seneste kvartal"
521
+
522
+ #: modules/stats.php:675
523
+ msgid "the past year"
524
+ msgstr "det seneste år"
525
+
526
+ #: modules/stats.php:697
527
+ msgid "Chart stats by"
528
+ msgstr "Figurstatistikker af"
529
+
530
+ #: modules/stats.php:710
531
+ msgid "Show top posts over"
532
+ msgstr "Vis mest besøgte indlæg i"
533
+
534
+ #: modules/stats.php:723
535
+ msgid "Show top search terms over"
536
+ msgstr "Vis populæreste søgetermer over"
537
+
538
+ #: modules/stats.php:882
539
+ msgid "%1$s %2$s Views"
540
+ msgstr "%1$s %2$s visninger"
541
+
542
+ #: modules/stats.php:895
543
+ msgid "View All"
544
+ msgstr "Se alle"
545
+
546
+ #: modules/stats.php:899
547
+ msgid "Top Posts"
548
+ msgstr "Top Indlæg"
549
+
550
+ #: modules/stats.php:903 modules/stats.php:927
551
+ msgid "Sorry, nothing to report."
552
+ msgstr "Beklager, intet at rapportere."
553
+
554
+ #: modules/stats.php:923
555
+ msgid "Top Searches"
556
+ msgstr "Mest populære søgninger"
557
+
558
+ #: modules/stats.php:946
559
+ msgid "We were unable to get your stats just now. Please reload this page to try again. If this error persists, please <a href=\"%1$s\">contact support</a>. In your report please include the information below."
560
+ msgstr ""
561
+
562
+ #: modules/subscriptions.php:108
563
+ msgid "Jetpack Subscriptions Settings"
564
+ msgstr ""
565
+
566
+ #: modules/subscriptions.php:117
567
+ msgid "Follow Blog"
568
+ msgstr ""
569
+
570
+ #: modules/subscriptions.php:132
571
+ msgid "Follow Comments"
572
+ msgstr ""
573
+
574
+ #: modules/subscriptions.php:153
575
+ msgid "Follower Settings"
576
+ msgstr ""
577
+
578
+ #: modules/subscriptions.php:160
579
+ msgid "Blog follow email text"
580
+ msgstr ""
581
+
582
+ #: modules/subscriptions.php:168
583
+ msgid "Comment follow email text"
584
+ msgstr ""
585
+
586
+ #: modules/subscriptions.php:182
587
+ msgid "Change whether your visitors can subscribe to your posts or comments or both."
588
+ msgstr ""
589
+
590
+ #: modules/subscriptions.php:197
591
+ msgid "Show a <em>'follow blog'</em> option in the comment form"
592
+ msgstr ""
593
+
594
+ #: modules/subscriptions.php:212
595
+ msgid "Show a <em>'follow comments'</em> option in the comment form"
596
+ msgstr ""
597
+
598
+ #: modules/subscriptions.php:237
599
+ msgid "These settings change emails sent from your blog to followers."
600
+ msgstr ""
601
+
602
+ #: modules/subscriptions.php:243
603
+ msgid "Introduction text sent when someone follows your blog. (Site and confirmation details will be automatically added for you.)"
604
+ msgstr ""
605
+
606
+ #: modules/subscriptions.php:249
607
+ msgid "Introduction text sent when someone follows a post on your blog. (Site and confirmation details will be automatically added for you.)"
608
+ msgstr ""
609
+
610
+ #: modules/subscriptions.php:254
611
+ msgid ""
612
+ "Howdy.\n"
613
+ "\n"
614
+ "You recently followed this blog's posts. This means you will receive each new post by email.\n"
615
+ "\n"
616
+ "To activate, click confirm below. If you believe this is an error, ignore this message and we'll never bother you again."
617
+ msgstr ""
618
+
619
+ #: modules/subscriptions.php:255
620
+ msgid ""
621
+ "Howdy.\n"
622
+ "\n"
623
+ "You recently followed one of my posts. This means you will receive an email when new comments are posted.\n"
624
+ "\n"
625
+ "To activate, click confirm