├── .gitmodules ├── LICENSE ├── assets ├── images │ ├── screenshot-1.png │ ├── screenshot-2.png │ ├── screenshot-3.png │ └── screenshot-4.png └── js │ └── wp-tweet-feed-widget.js ├── languages ├── twitter-widget-pro-ar.mo ├── twitter-widget-pro-ar.po ├── twitter-widget-pro-da_DK.mo ├── twitter-widget-pro-da_DK.po ├── twitter-widget-pro-de_DE.mo ├── twitter-widget-pro-de_DE.po ├── twitter-widget-pro-es_ES.mo ├── twitter-widget-pro-es_ES.po ├── twitter-widget-pro-it_IT.mo ├── twitter-widget-pro-it_IT.po ├── twitter-widget-pro-nl_NL.mo ├── twitter-widget-pro-nl_NL.po ├── twitter-widget-pro-sv_SE.mo ├── twitter-widget-pro-sv_SE.po └── twitter-widget-pro.pot ├── lib ├── oauth-util.php └── wp-twitter.php ├── readme.md ├── readme.txt ├── tlc-transients.php ├── twitter-plugin-framework.php └── wp-twitter-widget.php /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "loklak_php_api"] 2 | path = loklak_php_api 3 | url = https://github.com/loklak/loklak_php_api 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | WordPress plugin that enables background updates for major releases 294 | Copyright (C) 2013 Range 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /assets/images/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/assets/images/screenshot-1.png -------------------------------------------------------------------------------- /assets/images/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/assets/images/screenshot-2.png -------------------------------------------------------------------------------- /assets/images/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/assets/images/screenshot-3.png -------------------------------------------------------------------------------- /assets/images/screenshot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/assets/images/screenshot-4.png -------------------------------------------------------------------------------- /assets/js/wp-tweet-feed-widget.js: -------------------------------------------------------------------------------- 1 | function twp_update_twitter_auth(arg) { 2 | if (arg == true) { 3 | jQuery("#tweet-feed-widget-general-settings").addClass("closed"); 4 | jQuery(".twp_username_input").show(); 5 | jQuery(".twp_username_select").hide(); 6 | } 7 | else { 8 | jQuery("#tweet-feed-widget-general-settings").removeClass("closed"); 9 | jQuery(".twp_username_input").hide(); 10 | jQuery(".twp_username_select").show(); 11 | } 12 | 13 | jQuery("#tweet-feed-widget-general-settings .handlediv").attr('aria-expanded', arg); 14 | } 15 | 16 | 17 | jQuery(function() { 18 | if(jQuery("#twp_loklak_api").prop('checked')){ 19 | jQuery(".twp_username_input").show(); 20 | twp_update_twitter_auth(true); 21 | } 22 | 23 | jQuery("#twp_loklak_api").live('change', function() { 24 | if(jQuery(this).is(':checked')){ 25 | twp_update_twitter_auth(true); 26 | } 27 | else { 28 | twp_update_twitter_auth(false); 29 | } 30 | }); 31 | 32 | }); -------------------------------------------------------------------------------- /languages/twitter-widget-pro-ar.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-ar.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-ar.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2010 2 | # This file is distributed under the same license as the package. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: Twitter Widget Pro 1.4.5 - AR\n" 6 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 7 | "POT-Creation-Date: 2011-09-01 20:20:51+00:00\n" 8 | "MIME-Version: 1.0\n" 9 | "Content-Type: text/plain; charset=UTF-8\n" 10 | "Content-Transfer-Encoding: 8bit\n" 11 | "PO-Revision-Date: 2011-09-23 22:57+0400\n" 12 | "Last-Translator: Yaser Maadan \n" 13 | "Language-Team: Englize.com - Yaser Maadan \n" 14 | "X-Poedit-Language: Arabic\n" 15 | "X-Poedit-Country: UNITED ARAB EMIRATES\n" 16 | "Plural-Forms: nplurals=2;plural=n != 1;\n" 17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 18 | "X-Poedit-SourceCharset: utf-8\n" 19 | 20 | #: wp-twitter-widget.php:43 21 | msgid "Follow a Twitter Feed" 22 | msgstr "تابع تحديثات تويتر" 23 | 24 | #: wp-twitter-widget.php:50 25 | #: wp-twitter-widget.php:195 26 | msgid "Twitter Widget Pro" 27 | msgstr "صندوق تويتر برو" 28 | 29 | #: wp-twitter-widget.php:65 30 | #: wp-twitter-widget.php:239 31 | msgid "Twitter username:" 32 | msgstr "أسم المستخدم في تويتر:" 33 | 34 | #: wp-twitter-widget.php:69 35 | #: wp-twitter-widget.php:247 36 | msgid "Give the feed a title ( optional ):" 37 | msgstr "ضع عنوان للتغذية (اختياري):" 38 | 39 | #: wp-twitter-widget.php:73 40 | #: wp-twitter-widget.php:255 41 | msgid "How many items would you like to display?" 42 | msgstr "كم عدد التغريدات التي تود عرضها؟" 43 | 44 | #: wp-twitter-widget.php:83 45 | #: wp-twitter-widget.php:269 46 | msgid "Display profile image?" 47 | msgstr "عرض صورة ملفك الشخصي؟" 48 | 49 | #: wp-twitter-widget.php:85 50 | #: wp-twitter-widget.php:273 51 | msgid "Do not show" 52 | msgstr "لا تعرض" 53 | 54 | #: wp-twitter-widget.php:86 55 | #: wp-twitter-widget.php:274 56 | msgid "Mini - 24px by 24px" 57 | msgstr "صغيرة - 24×24 بكسل" 58 | 59 | #: wp-twitter-widget.php:87 60 | #: wp-twitter-widget.php:275 61 | msgid "Normal - 48px by 48px" 62 | msgstr "متوسطة - 48×48 بكسل" 63 | 64 | #: wp-twitter-widget.php:88 65 | #: wp-twitter-widget.php:276 66 | msgid "Bigger - 73px by 73px" 67 | msgstr "كبيرة - 73×73 بكسل" 68 | 69 | #: wp-twitter-widget.php:89 70 | #: wp-twitter-widget.php:277 71 | msgid "Original" 72 | msgstr "الأصلي" 73 | 74 | #: wp-twitter-widget.php:94 75 | #: wp-twitter-widget.php:327 76 | msgid "Include retweets" 77 | msgstr "يتضمن التغريدات المعاد نشرها" 78 | 79 | #: wp-twitter-widget.php:98 80 | #: wp-twitter-widget.php:330 81 | msgid "Hide @replies" 82 | msgstr "إخفاء @الردود" 83 | 84 | #: wp-twitter-widget.php:102 85 | #: wp-twitter-widget.php:333 86 | msgid "Hide sending applications" 87 | msgstr "إخفاء نوع التطبيق المُرسل" 88 | 89 | #: wp-twitter-widget.php:107 90 | #: wp-twitter-widget.php:337 91 | msgid "Show Tweet Intents (reply, retweet, favorite)" 92 | msgstr "عرض غرض التغريدة (رد، إعادة تغريد، مفضلة)" 93 | 94 | #: wp-twitter-widget.php:112 95 | #: wp-twitter-widget.php:341 96 | msgid "Show Follow Link" 97 | msgstr "عرض رابط التتبع" 98 | 99 | #: wp-twitter-widget.php:115 100 | #: wp-twitter-widget.php:283 101 | msgid "What to display when Twitter is down ( optional ):" 102 | msgstr "ماذا تريد أن تعرض إذا كان هناك عطلاً ما في تويتر (اختياري):" 103 | 104 | #: wp-twitter-widget.php:119 105 | #: wp-twitter-widget.php:291 106 | msgid "Number of seconds to wait for a response from Twitter ( default 2 ):" 107 | msgstr "عدد ثواني انتظار الرد من تويتر (الافتراضي 2):" 108 | 109 | #: wp-twitter-widget.php:123 110 | #: wp-twitter-widget.php:299 111 | msgid "Show date/time of Tweet ( rather than 2 ____ ago ):" 112 | msgstr "عرض التاريخ/الوقت للتغريدة (بدلاً من 2____مضى):" 113 | 114 | #: wp-twitter-widget.php:125 115 | #: wp-twitter-widget.php:303 116 | msgid "Always" 117 | msgstr "دائماً" 118 | 119 | #: wp-twitter-widget.php:126 120 | #: wp-twitter-widget.php:304 121 | msgid "If over an hour old" 122 | msgstr "إذا زاد عن ساعة" 123 | 124 | #: wp-twitter-widget.php:127 125 | #: wp-twitter-widget.php:305 126 | msgid "If over a day old" 127 | msgstr "إذا زاد عن يوم" 128 | 129 | #: wp-twitter-widget.php:128 130 | #: wp-twitter-widget.php:306 131 | msgid "If over a week old" 132 | msgstr "إذا زاد عن أسبوع" 133 | 134 | #: wp-twitter-widget.php:129 135 | #: wp-twitter-widget.php:307 136 | msgid "If over a month old" 137 | msgstr "إذا زاد عن شهر" 138 | 139 | #: wp-twitter-widget.php:130 140 | #: wp-twitter-widget.php:308 141 | msgid "If over a year old" 142 | msgstr "إذا زاد عن سنة" 143 | 144 | #: wp-twitter-widget.php:131 145 | #: wp-twitter-widget.php:309 146 | msgid "Never" 147 | msgstr "كلا" 148 | 149 | #: wp-twitter-widget.php:135 150 | #: wp-twitter-widget.php:315 151 | msgid "Format to dispaly the date in, uses PHP date() format:" 152 | msgstr "صيغة عرض التاريخ، بإستخدام دالة data() وصيغها:" 153 | 154 | #: wp-twitter-widget.php:140 155 | #: wp-twitter-widget.php:344 156 | msgid "Open links in a new window" 157 | msgstr "فتح الروابط في صفحة جديدة" 158 | 159 | #: wp-twitter-widget.php:144 160 | #: wp-twitter-widget.php:347 161 | msgid "Show Link to Twitter Widget Pro" 162 | msgstr "عرض رابط لـ تويتر برو" 163 | 164 | #: wp-twitter-widget.php:196 165 | msgid "Twitter Widget" 166 | msgstr "صندوق تويتر الجانبي" 167 | 168 | #: wp-twitter-widget.php:231 169 | msgid "General Settings" 170 | msgstr "الإعدادات العامة" 171 | 172 | #: wp-twitter-widget.php:323 173 | msgid "Other Setting:" 174 | msgstr "الإعدادات الأخرى:" 175 | 176 | #: wp-twitter-widget.php:503 177 | msgid "No Tweets Available" 178 | msgstr "لا توجد تغريدات" 179 | 180 | #: wp-twitter-widget.php:521 181 | msgid "from %s" 182 | msgstr "من %s" 183 | 184 | #: wp-twitter-widget.php:525 185 | msgid "in reply to %s" 186 | msgstr "رداً على %s" 187 | 188 | #: wp-twitter-widget.php:539 189 | msgid "Reply" 190 | msgstr "رد" 191 | 192 | #: wp-twitter-widget.php:547 193 | msgid "Retweet" 194 | msgstr "إعادة تغريد" 195 | 196 | #: wp-twitter-widget.php:555 197 | msgid "Favorite" 198 | msgstr "المفضلة" 199 | 200 | #: wp-twitter-widget.php:578 201 | msgid "Follow %s" 202 | msgstr "متابعة %s" 203 | 204 | #: wp-twitter-widget.php:588 205 | msgid "Brought to you by Xavisys - A WordPress development company" 206 | msgstr "مقدم لكم من قبل Xavisys - شركة تطوير برمجيات ووردبريس." 207 | 208 | #: wp-twitter-widget.php:590 209 | msgid "Powered by" 210 | msgstr "مشغل بواسطة" 211 | 212 | #: wp-twitter-widget.php:639 213 | msgid "Invalid Twitter Response." 214 | msgstr "خطأ في استجابة تويتر" 215 | 216 | #: wp-twitter-widget.php:649 217 | msgid "Could not connect to Twitter" 218 | msgstr "لا يستطيع الإتصال بتويتر" 219 | 220 | #: wp-twitter-widget.php:731 221 | msgid "about %s year ago" 222 | msgid_plural "about %s years ago" 223 | msgstr[0] "منذ %s سنة مضت" 224 | msgstr[1] "منذ %s سنوات مضت" 225 | 226 | #: wp-twitter-widget.php:732 227 | msgid "about %s month ago" 228 | msgid_plural "about %s months ago" 229 | msgstr[0] "منذ %s شهر مضى" 230 | msgstr[1] "منذ %s أشهر مضت" 231 | 232 | #: wp-twitter-widget.php:733 233 | msgid "about %s week ago" 234 | msgid_plural "about %s weeks ago" 235 | msgstr[0] "منذ %s اسبوع مضى" 236 | msgstr[1] "منذ %s أسابيع مضت" 237 | 238 | #: wp-twitter-widget.php:734 239 | msgid "about %s day ago" 240 | msgid_plural "about %s days ago" 241 | msgstr[0] "منذ %s يوم مضى" 242 | msgstr[1] "منذ %s أيام مضت" 243 | 244 | #: wp-twitter-widget.php:735 245 | msgid "about %s hour ago" 246 | msgid_plural "about %s hours ago" 247 | msgstr[0] "منذ %s ساعة مضت" 248 | msgstr[1] "منذ %s ساعات مضت" 249 | 250 | #: wp-twitter-widget.php:736 251 | msgid "about %s minute ago" 252 | msgid_plural "about %s minutes ago" 253 | msgstr[0] "منذ %s دقيقة مضت" 254 | msgstr[1] "منذ %s دقائق مضت" 255 | 256 | #: wp-twitter-widget.php:737 257 | msgid "about %s second ago" 258 | msgid_plural "about %s seconds ago" 259 | msgstr[0] "منذ %s ثانية مضت" 260 | msgstr[1] "منذ %s ثواني مضت" 261 | 262 | #: wp-twitter-widget.php:789 263 | #: wp-twitter-widget.php:862 264 | msgid "h:i:s A F d, Y" 265 | msgstr "h:i:s A F d, Y" 266 | 267 | #: xavisys-plugin-framework.php:245 268 | msgid "Update Options »" 269 | msgstr "تحديث الخيارات »" 270 | 271 | #: xavisys-plugin-framework.php:292 272 | msgid "Donate" 273 | msgstr "تبرّع" 274 | 275 | #: xavisys-plugin-framework.php:299 276 | msgid "Support Forum" 277 | msgstr "منتديات الدعم" 278 | 279 | #: xavisys-plugin-framework.php:307 280 | msgid "Donate to show your appreciation." 281 | msgstr "تبرع تقديراً لمجهودنا" 282 | 283 | #: xavisys-plugin-framework.php:318 284 | msgid "Settings" 285 | msgstr "الإعدادات" 286 | 287 | #: xavisys-plugin-framework.php:336 288 | msgid "Like this Plugin?" 289 | msgstr "أعجبتك هذه الإضافة؟" 290 | 291 | #: xavisys-plugin-framework.php:339 292 | msgid "Need Support?" 293 | msgstr "تريد المساعدة؟" 294 | 295 | #: xavisys-plugin-framework.php:342 296 | msgid "Latest news from Xavisys" 297 | msgstr "آخر الأخبار من Xavisys" 298 | 299 | #: xavisys-plugin-framework.php:348 300 | msgid "Then please do any or all of the following:" 301 | msgstr "رجاءاً قم بعمل أحد الأشياء النالية:" 302 | 303 | #: xavisys-plugin-framework.php:353 304 | msgid "Link to it so others can find out about it." 305 | msgstr "أربطنا معك لكي يستطيع الكل العثور علينا." 306 | 307 | #: xavisys-plugin-framework.php:358 308 | msgid "Give it a good rating on WordPress.org." 309 | msgstr "أعطنا تقييم جيد في Wordpress.org." 310 | 311 | #: xavisys-plugin-framework.php:368 312 | msgid "If you have any problems with this plugin or ideas for improvements or enhancements, please use the Xavisys Support Forums." 313 | msgstr "إذا كانت لديك أي مشكلة مع هذه الإضافة أو لديك أي افكار تود مشاركتها معنا لتطوير أو تعزيز هذه الإضافة، الرجاء الذهاب إلى منتديات Xavisysالخاصة بالدعم." 314 | 315 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro-da_DK.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-da_DK.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-da_DK.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter Widget Pro 1.4.5\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2009-07-18 00:03+0100\n" 6 | "PO-Revision-Date: \n" 7 | "Last-Translator: Team Blogos \n" 8 | "Language-Team: Team Blogos \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=2;plural=n != 1;\n" 13 | "X-Poedit-Language: Danish\n" 14 | "X-Poedit-Country: DENMARK\n" 15 | "X-Poedit-SourceCharset: utf-8\n" 16 | "X-Poedit-KeywordsList: __;_c;_e;__ngettext:1,2;__ngettext_noop:1,2\n" 17 | "X-Poedit-Basepath: d:\\wordpress\\plugins\\twitter-widget-pro\n" 18 | "X-Poedit-SearchPath-0: d:\\wordpress\\plugins\\twitter-widget-pro\n" 19 | 20 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:67 21 | msgid "Twitter Widget Pro" 22 | msgstr "Twitter Widget Pro" 23 | 24 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:83 25 | msgid "Twitter Widget Pro Options" 26 | msgstr "Indstiller for Twitter Widget Pro" 27 | 28 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:89 29 | msgid "Click for Help!" 30 | msgstr "Klik for hjælp" 31 | 32 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:90 33 | msgid "System Information:" 34 | msgstr "System Information:" 35 | 36 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:95 37 | msgid "I agree to send anonymous system information" 38 | msgstr "Jeg accepterer at sende anonyme system-informationer" 39 | 40 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:97 41 | msgid "You can help by sending anonymous system information that will help Xavisys make better decisions about new features." 42 | msgstr "Du kan hjælpe ved at sende anonyme system-informationer, som vil hjælpe Xavisys med at træffe bedre beslutninger om nye funktioner." 43 | 44 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:98 45 | msgid "The information will be sent anonymously, but a unique identifier will be sent to prevent duplicate entries from the same installation." 46 | msgstr "Informationerne sendes anonymt, men en unik id vil blive sendt med for at sikre, at alle registreringer fra samme installation er unikke." 47 | 48 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:104 49 | msgid "Update Options »" 50 | msgstr "Opdatér indstillinger »" 51 | 52 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:142 53 | msgid "Could not connect to Twitter" 54 | msgstr "Kunne ikke få forbindelse til Twitter" 55 | 56 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:301 57 | msgid "Syndicate this content" 58 | msgstr "Følg dette indhold via RSS" 59 | 60 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:314 61 | msgid "No Tweets Available" 62 | msgstr "Ingen tilgængelige Tweets" 63 | 64 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:335 65 | #, php-format 66 | msgid "from %s" 67 | msgstr "fra %s" 68 | 69 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:339 70 | #, php-format 71 | msgid "in reply to %s" 72 | msgstr "som svar på %s" 73 | 74 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:359 75 | #, php-format 76 | msgid "Powered by WordPress Twitter Widget Pro" 77 | msgstr "Kører på WordPress-Twitter Widget Pro" 78 | 79 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:473 80 | msgid "Follow a Twitter Feed" 81 | msgstr "Følg et Twitter-feed" 82 | 83 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:475 84 | msgid "Twitter Feed" 85 | msgstr "Twitter-feed" 86 | 87 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:517 88 | msgid "Twitter username:" 89 | msgstr "Twitter-brugernavn:" 90 | 91 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:521 92 | msgid "Give the feed a title (optional):" 93 | msgstr "Giv feedet en titel (valgfri):" 94 | 95 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:525 96 | msgid "How many items would you like to display?" 97 | msgstr "Hvor mange tweets vil du vise?" 98 | 99 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:535 100 | msgid "What to display when Twitter is down (optional):" 101 | msgstr "Hvad skal der vises, hvis Twitter er nede (valgfri):" 102 | 103 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:539 104 | msgid "Number of seconds to wait for a response from Twitter (default 2):" 105 | msgstr "Antal sekunder at vente på svar fra Twitter (standard: 2):" 106 | 107 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:543 108 | msgid "Show date/time of Tweet (rather than 2 ____ ago):" 109 | msgstr "Vis Tweetets dato/klokkeslæt (i st. f. 2 ___ siden):" 110 | 111 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:545 112 | msgid "Always" 113 | msgstr "Altid" 114 | 115 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:546 116 | msgid "If over an hour old" 117 | msgstr "Hvis over end en time gammelt" 118 | 119 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:547 120 | msgid "If over a day old" 121 | msgstr "Hvis over en dag gammelt" 122 | 123 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:548 124 | msgid "If over a week old" 125 | msgstr "Hvis over en uge gammelt" 126 | 127 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:549 128 | msgid "If over a month old" 129 | msgstr "Hvis over en måned gammelt" 130 | 131 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:550 132 | msgid "If over a year old" 133 | msgstr "Hvis over et år gammelt" 134 | 135 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:551 136 | msgid "Never" 137 | msgstr "Aldrig" 138 | 139 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:555 140 | msgid "Hide RSS Icon and Link" 141 | msgstr "Skjul RSS-ikon og -link" 142 | 143 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:558 144 | msgid "Show Profile Image" 145 | msgstr "Vis profilbillede" 146 | 147 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:562 148 | msgid "Show Link to Twitter Widget Pro" 149 | msgstr "Vis link til Twitter Widget Pro" 150 | 151 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:592 152 | msgid "h:i:s A F d, Y" 153 | msgstr "j. F Y H.i.s" 154 | 155 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:603 156 | #, php-format 157 | msgid "about %s year ago" 158 | msgid_plural "about %s years ago" 159 | msgstr[0] "ca. %s år siden" 160 | msgstr[1] "ca. %s år siden" 161 | 162 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:604 163 | #, php-format 164 | msgid "about %s month ago" 165 | msgid_plural "about %s months ago" 166 | msgstr[0] "ca %s måned siden" 167 | msgstr[1] "ca. %s måneder siden" 168 | 169 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:605 170 | #, php-format 171 | msgid "about %s week ago" 172 | msgid_plural "about %s weeks ago" 173 | msgstr[0] "ca. %s uge siden" 174 | msgstr[1] "ca. %s uger siden" 175 | 176 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:606 177 | #, php-format 178 | msgid "about %s day ago" 179 | msgid_plural "about %s days ago" 180 | msgstr[0] "ca. %s dag siden" 181 | msgstr[1] "ca. %s dage siden" 182 | 183 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:607 184 | #, php-format 185 | msgid "about %s hour ago" 186 | msgid_plural "about %s hours ago" 187 | msgstr[0] "ca. %s time siden" 188 | msgstr[1] "ca. %s timer siden" 189 | 190 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:608 191 | #, php-format 192 | msgid "about %s minute ago" 193 | msgid_plural "about %s minutes ago" 194 | msgstr[0] "ca. %s minut siden" 195 | msgstr[1] "ca. %s minutter siden" 196 | 197 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:609 198 | #, php-format 199 | msgid "about %s second ago" 200 | msgid_plural "about %s seconds ago" 201 | msgstr[0] "ca. %s sekund siden" 202 | msgstr[1] "ca. %s sekunder siden" 203 | 204 | #: d:\wordpress\plugins\twitter-widget-pro/wp-twitter-widget.php:677 205 | msgid "Settings" 206 | msgstr "Indstillinger" 207 | 208 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro-de_DE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-de_DE.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-de_DE.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2012 2 | # This file is distributed under the same license as the package. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: Twitter Widget Pro - German 0.1\n" 6 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 7 | "POT-Creation-Date: 2012-10-11 14:15:52+00:00\n" 8 | "PO-Revision-Date: 2012-10-24 17:37+0100\n" 9 | "Last-Translator: Lioman \n" 10 | "Language-Team: Lioman - http://www.lioman.de \n" 11 | "Language: \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "X-Poedit-Language: German\n" 16 | "X-Poedit-Country: GERMANY\n" 17 | "Plural-Forms: nplurals=2;plural=n != 1\n" 18 | 19 | #: range-plugin-framework.php:251 20 | msgid "Update Options »" 21 | msgstr "Optionen aktualisieren" 22 | 23 | #: range-plugin-framework.php:297 24 | msgid "Rate Plugin" 25 | msgstr "Bewerte das Plugin" 26 | 27 | #: range-plugin-framework.php:303 28 | msgid "Support" 29 | msgstr "Support" 30 | 31 | #: range-plugin-framework.php:311 32 | msgid "Donate to show your appreciation." 33 | msgstr "Spende etwas, um die Entwicklung zu unterstützen" 34 | 35 | #: range-plugin-framework.php:322 36 | msgid "Give it a good rating on WordPress.org." 37 | msgstr "Bewerte das Plugin auf WordPress.org" 38 | 39 | #: range-plugin-framework.php:332 40 | msgid "Settings" 41 | msgstr "Einstellungen" 42 | 43 | #: range-plugin-framework.php:361 44 | msgid "Like this Plugin?" 45 | msgstr "Du magst das Plugin?" 46 | 47 | #: range-plugin-framework.php:364 48 | msgid "Need Support?" 49 | msgstr "Brauchst du Unterstützung?" 50 | 51 | #: range-plugin-framework.php:367 52 | msgid "Latest news from Range" 53 | msgstr "Neuigkeiten von Range" 54 | 55 | #: range-plugin-framework.php:372 56 | msgid "Then please do any or all of the following:" 57 | msgstr "Dann tue doch eines oder mehrere der folgenden Dinge:" 58 | 59 | #: range-plugin-framework.php:377 60 | msgid "Link to it so others can find out about it." 61 | msgstr "Verlinke das Plugin, damit andere davon erfahren" 62 | 63 | #: range-plugin-framework.php:389 64 | msgid "If you have any problems with this plugin or ideas for improvements or enhancements, please use the Support Forums." 65 | msgstr "Falls es irgendwelche Probleme mit dem Plugin gibt oderdu Vorschläge zu dessen Verbesserung hast, nutze doch das Support Forum" 66 | 67 | #: wp-twitter-widget.php:44 68 | msgid "Follow a Twitter Feed" 69 | msgstr "Folge einem Twitterfeed" 70 | 71 | #: wp-twitter-widget.php:51 72 | #: wp-twitter-widget.php:197 73 | msgid "Twitter Widget Pro" 74 | msgstr "Twitter Widget Pro" 75 | 76 | #: wp-twitter-widget.php:66 77 | #: wp-twitter-widget.php:340 78 | msgid "Twitter username:" 79 | msgstr "Benutzername bei Twitter:" 80 | 81 | #: wp-twitter-widget.php:70 82 | #: wp-twitter-widget.php:348 83 | msgid "Give the feed a title ( optional ):" 84 | msgstr "Gib dem Feed einen Titel ( optional ):" 85 | 86 | #: wp-twitter-widget.php:74 87 | #: wp-twitter-widget.php:356 88 | msgid "How many items would you like to display?" 89 | msgstr "Wie viele Einträge sollen angezeigt werden?" 90 | 91 | #: wp-twitter-widget.php:84 92 | #: wp-twitter-widget.php:370 93 | msgid "Display profile image?" 94 | msgstr "Soll das Profilbild angezeigt werden?" 95 | 96 | #: wp-twitter-widget.php:86 97 | #: wp-twitter-widget.php:374 98 | msgid "Do not show" 99 | msgstr "nicht anzeigen" 100 | 101 | #: wp-twitter-widget.php:87 102 | #: wp-twitter-widget.php:375 103 | msgid "Mini - 24px by 24px" 104 | msgstr "Mini - 24px x 24px" 105 | 106 | #: wp-twitter-widget.php:88 107 | #: wp-twitter-widget.php:376 108 | msgid "Normal - 48px by 48px" 109 | msgstr "Normal - 48px x 48px" 110 | 111 | #: wp-twitter-widget.php:89 112 | #: wp-twitter-widget.php:377 113 | msgid "Bigger - 73px by 73px" 114 | msgstr "Groß - 73px x 73px" 115 | 116 | #: wp-twitter-widget.php:90 117 | #: wp-twitter-widget.php:378 118 | msgid "Original" 119 | msgstr "Original" 120 | 121 | #: wp-twitter-widget.php:96 122 | #: wp-twitter-widget.php:429 123 | msgid "Include retweets" 124 | msgstr "Retweets mit anzeigen" 125 | 126 | #: wp-twitter-widget.php:100 127 | #: wp-twitter-widget.php:432 128 | msgid "Hide @replies" 129 | msgstr "Erwähnungen ausblenden" 130 | 131 | #: wp-twitter-widget.php:104 132 | #: wp-twitter-widget.php:435 133 | msgid "Hide sending applications" 134 | msgstr "Verstecke sendende Applikationen (via)" 135 | 136 | #: wp-twitter-widget.php:109 137 | #: wp-twitter-widget.php:439 138 | msgid "Show Tweet Intents (reply, retweet, favorite)" 139 | msgstr "Zeige Tweetaktionen (Erwähnung, RT, Favorisierung)" 140 | 141 | #: wp-twitter-widget.php:114 142 | #: wp-twitter-widget.php:443 143 | msgid "Show Follow Link" 144 | msgstr "Followlink anzeigen" 145 | 146 | #: wp-twitter-widget.php:117 147 | #: wp-twitter-widget.php:384 148 | msgid "What to display when Twitter is down ( optional ):" 149 | msgstr "Was soll angezeigt werden, wenn Twitter nicht erreichbar ist ( optional ):" 150 | 151 | #: wp-twitter-widget.php:121 152 | #: wp-twitter-widget.php:392 153 | msgid "Number of seconds to wait for a response from Twitter ( default 2 ):" 154 | msgstr "Sekunden, die auf Antwort von Twitter gewartet werden soll (Stanard 2)" 155 | 156 | #: wp-twitter-widget.php:125 157 | #: wp-twitter-widget.php:400 158 | msgid "Show date/time of Tweet ( rather than 2 ____ ago ):" 159 | msgstr "Datum und Zeit des Tweets anzeigen ( statt vor ??s):" 160 | 161 | #: wp-twitter-widget.php:127 162 | #: wp-twitter-widget.php:404 163 | msgid "Always" 164 | msgstr "Immer" 165 | 166 | #: wp-twitter-widget.php:128 167 | #: wp-twitter-widget.php:405 168 | msgid "If over an hour old" 169 | msgstr "Wenn länger als eine Stunde her" 170 | 171 | #: wp-twitter-widget.php:129 172 | #: wp-twitter-widget.php:406 173 | msgid "If over a day old" 174 | msgstr "Wenn länger als ein Tag her" 175 | 176 | #: wp-twitter-widget.php:130 177 | #: wp-twitter-widget.php:407 178 | msgid "If over a week old" 179 | msgstr "Wenn länger als eine Woche her" 180 | 181 | #: wp-twitter-widget.php:131 182 | #: wp-twitter-widget.php:408 183 | msgid "If over a month old" 184 | msgstr "Wenn länger als einen Monat her" 185 | 186 | #: wp-twitter-widget.php:132 187 | #: wp-twitter-widget.php:409 188 | msgid "If over a year old" 189 | msgstr "Wenn länger als ein Jahr her" 190 | 191 | #: wp-twitter-widget.php:133 192 | #: wp-twitter-widget.php:410 193 | msgid "Never" 194 | msgstr "Nie" 195 | 196 | #: wp-twitter-widget.php:137 197 | #: wp-twitter-widget.php:416 198 | msgid "Format to display the date in, uses PHP date() format:" 199 | msgstr "Datumsformat, nutzt PHP date():" 200 | 201 | #: wp-twitter-widget.php:142 202 | #: wp-twitter-widget.php:446 203 | msgid "Open links in a new window" 204 | msgstr "Links in einem neuen Fenster öffnen" 205 | 206 | #: wp-twitter-widget.php:146 207 | #: wp-twitter-widget.php:449 208 | msgid "Show Link to Twitter Widget Pro" 209 | msgstr "Link zu Twitter Widget Pro anzeigen" 210 | 211 | #: wp-twitter-widget.php:198 212 | msgid "Twitter Widget" 213 | msgstr "Twitter Widget" 214 | 215 | #: wp-twitter-widget.php:262 216 | msgid "There were no locks to clear!" 217 | msgstr "Es gab keine Zugriffssperren zum Löschen!" 218 | 219 | #: wp-twitter-widget.php:264 220 | msgid "Successfully cleared %d lock." 221 | msgid_plural "Successfully cleared %d locks." 222 | msgstr[0] "Erfolgreich %d Sperre gelöscht" 223 | msgstr[1] "Erfolgreich %d Sperren gelöscht" 224 | 225 | #: wp-twitter-widget.php:270 226 | msgid "General Settings" 227 | msgstr "Allgemeine Einstellungen" 228 | 229 | #: wp-twitter-widget.php:271 230 | msgid "Default Settings for Shortcodes" 231 | msgstr "Vorgaben für Shortcodes" 232 | 233 | #: wp-twitter-widget.php:280 234 | msgid "HTTP vs HTTPS" 235 | msgstr "HTTP vs HTTPS" 236 | 237 | #: wp-twitter-widget.php:284 238 | msgid "Use Twitter API via HTTPS" 239 | msgstr "Benutze Twitter API via HTTPS" 240 | 241 | #: wp-twitter-widget.php:287 242 | msgid "Use Twitter API via HTTP" 243 | msgstr "Benutze Twitter API via HTTP" 244 | 245 | #: wp-twitter-widget.php:289 246 | msgid "Some servers seem to have issues connecting via HTTPS. If you're experiencing issues with your feed not updating, try setting this to HTTP." 247 | msgstr "Manche Server haben Probleme mit HTTPS. Falls das Feed nicht aktualisiert wird, stelle hier HTTP ein" 248 | 249 | #: wp-twitter-widget.php:294 250 | #: wp-twitter-widget.php:297 251 | msgid "Clear Update Locks" 252 | msgstr "Updatesperren löschen" 253 | 254 | #: wp-twitter-widget.php:298 255 | msgid "A small percentage of servers seem to have issues where an update lock isn't getting cleared. If you're experiencing issues with your feed not updating, try clearing the update locks." 256 | msgstr "Weinige Server scheinen Probleme zu haben, wenn die Updatesperren nicht gelöscht werden. Wenn das Feed nicht aktualisiert wird versuche diese hier zu löschen." 257 | 258 | #: wp-twitter-widget.php:303 259 | msgid "Current API Usage" 260 | msgstr "Derzeitige API Benutzung" 261 | 262 | #: wp-twitter-widget.php:314 263 | msgid "Used: %d" 264 | msgstr "Benutzt: %d" 265 | 266 | #: wp-twitter-widget.php:315 267 | msgid "Remaining: %d" 268 | msgstr "Verbleibend: %d" 269 | 270 | #: wp-twitter-widget.php:318 271 | msgid "Limits reset in: %d minutes" 272 | msgid_plural "Limits reset in: %d minutes" 273 | msgstr[0] "Limitierung werden in %d Minute zurückgesetzt" 274 | msgstr[1] "Limitierung werden in %d Minuten zurückgesetzt" 275 | 276 | #: wp-twitter-widget.php:320 277 | msgid "This is overall usage, not just usage from Twitter Widget Pro" 278 | msgstr "Dies ist die Gesamtnutzung, nicht nur die durch Twwitter Widget Pro" 279 | 280 | #: wp-twitter-widget.php:325 281 | msgid "There was an error checking your rate limit." 282 | msgstr "Es ist ein Fehler beim testen deiner Limits aufgetreten" 283 | 284 | #: wp-twitter-widget.php:336 285 | msgid "These settings are the default for the shortcodes and all of them can be overridden by specifying a different value in the shortcode itself. All settings for widgets are locate in the individual widget." 286 | msgstr "Diese Einstellungen sind die vorgegebenen für die Shortcodes und alle können auf einen Beliebigen Wert geändert werden. Alle Widgeteinstellungen befinden sich in einem eigenen Widget" 287 | 288 | #: wp-twitter-widget.php:424 289 | msgid "Other Setting:" 290 | msgstr "Sonstige Einstellungen" 291 | 292 | #: wp-twitter-widget.php:637 293 | msgid "No Tweets Available" 294 | msgstr "Keine Tweets vorhanden" 295 | 296 | #: wp-twitter-widget.php:655 297 | msgid "from %s" 298 | msgstr "von &s" 299 | 300 | #: wp-twitter-widget.php:659 301 | msgid "in reply to %s" 302 | msgstr "in Antwort auf %s" 303 | 304 | #: wp-twitter-widget.php:676 305 | msgid "Reply" 306 | msgstr "Antwort" 307 | 308 | #: wp-twitter-widget.php:682 309 | msgid "Retweet" 310 | msgstr "Retweet" 311 | 312 | #: wp-twitter-widget.php:688 313 | msgid "Favorite" 314 | msgstr "Favourit" 315 | 316 | #: wp-twitter-widget.php:709 317 | msgid "Follow %s" 318 | msgstr "Folge %s" 319 | 320 | #: wp-twitter-widget.php:723 321 | msgid "Brought to you by Range - A WordPress design and development company" 322 | msgstr "Entwickelt von Range - WordPress Design und Entwicklung" 323 | 324 | #: wp-twitter-widget.php:725 325 | msgid "Powered by" 326 | msgstr "Powered by" 327 | 328 | #: wp-twitter-widget.php:794 329 | msgid "Invalid Twitter Response." 330 | msgstr "Ungültige Twitterantwort" 331 | 332 | #: wp-twitter-widget.php:804 333 | msgid "Could not connect to Twitter" 334 | msgstr "Keine Verbindung zu Twitter" 335 | 336 | #: wp-twitter-widget.php:886 337 | msgid "about %s year ago" 338 | msgid_plural "about %s years ago" 339 | msgstr[0] "ungefähr %s Jahr her" 340 | msgstr[1] "ungefähr %s Jahre her" 341 | 342 | #: wp-twitter-widget.php:887 343 | msgid "about %s month ago" 344 | msgid_plural "about %s months ago" 345 | msgstr[0] "ungefähr %s Monat her" 346 | msgstr[1] "ungefähr %s Monate her" 347 | 348 | #: wp-twitter-widget.php:888 349 | msgid "about %s week ago" 350 | msgid_plural "about %s weeks ago" 351 | msgstr[0] "ungefähr %s Woche her" 352 | msgstr[1] "ungefähr %s Wochen her" 353 | 354 | #: wp-twitter-widget.php:889 355 | msgid "about %s day ago" 356 | msgid_plural "about %s days ago" 357 | msgstr[0] "ungefähr %s Tag her" 358 | msgstr[1] "ungefähr %s Tage her" 359 | 360 | #: wp-twitter-widget.php:890 361 | msgid "about %s hour ago" 362 | msgid_plural "about %s hours ago" 363 | msgstr[0] "ungefähr %s Stunde her" 364 | msgstr[1] "ungefähr %s Stunden her" 365 | 366 | #: wp-twitter-widget.php:891 367 | msgid "about %s minute ago" 368 | msgid_plural "about %s minutes ago" 369 | msgstr[0] "ungefähr %s Minute her" 370 | msgstr[1] "ungefähr %s Minuten her" 371 | 372 | #: wp-twitter-widget.php:892 373 | msgid "about %s second ago" 374 | msgid_plural "about %s seconds ago" 375 | msgstr[0] "ungefähr %s Sekunde her" 376 | msgstr[1] "ungefähr %s Sekunden her" 377 | 378 | #: wp-twitter-widget.php:944 379 | #: wp-twitter-widget.php:1018 380 | msgid "h:i:s A F d, Y" 381 | msgstr "h:i:s A F d, Y" 382 | 383 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro-es_ES.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-es_ES.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-es_ES.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # This file is put in the public domain. 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 9 | "POT-Creation-Date: 2009-06-25 16:28+0000\n" 10 | "PO-Revision-Date: 2009-06-26 11:11+0100\n" 11 | "Last-Translator: Rafael Poveda \n" 12 | "Language-Team: LANGUAGE \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=utf-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" 17 | 18 | #: wp-twitter-widget.php:48 19 | msgid "Twitter Widget Pro" 20 | msgstr "Twitter Widget Pro" 21 | 22 | #: wp-twitter-widget.php:64 23 | msgid "Twitter Widget Pro Options" 24 | msgstr "Twitter Widget Pro - Opciones" 25 | 26 | #: wp-twitter-widget.php:70 27 | msgid "Click for Help!" 28 | msgstr "¡Ayuda!" 29 | 30 | #: wp-twitter-widget.php:71 31 | msgid "System Information:" 32 | msgstr "Información del sistema:" 33 | 34 | #: wp-twitter-widget.php:75 35 | msgid "I agree to send anonymous system information" 36 | msgstr "Estoy de acuerdo con enviar información anónima de mi sistema" 37 | 38 | #: wp-twitter-widget.php:77 39 | msgid "You can help by sending anonymous system information that will help Xavisys make better decisions about new features." 40 | msgstr "Puedes ayudar enviando información anónima acerca de su sitema que ayudará a Xavisys en la toma de decisiones de las nuevas características" 41 | 42 | #: wp-twitter-widget.php:78 43 | msgid "The information will be sent anonymously, but a unique identifier will be sent to prevent duplicate entries from the same installation." 44 | msgstr "La información será enviada de forma anónima, pero con un identificador único para prevenir información duplicada proveniente de la misma instalación." 45 | 46 | #: wp-twitter-widget.php:84 47 | msgid "Update Options »" 48 | msgstr "Actualizar opciones »" 49 | 50 | #: wp-twitter-widget.php:113 51 | msgid "Could not connect to Twitter" 52 | msgstr "No se puede conectar a Twitter" 53 | 54 | #: wp-twitter-widget.php:272 55 | msgid "Syndicate this content" 56 | msgstr "Sindica este contenido" 57 | 58 | #: wp-twitter-widget.php:285 59 | msgid "No Tweets Available" 60 | msgstr "No hay tweets" 61 | 62 | #: wp-twitter-widget.php:306 63 | #, php-format 64 | msgid "from %s" 65 | msgstr "desde %s" 66 | 67 | #: wp-twitter-widget.php:310 68 | #, php-format 69 | msgid "in reply to %s" 70 | msgstr "en respuesta a %s" 71 | 72 | #: wp-twitter-widget.php:330 73 | #, php-format 74 | msgid "Powered by WordPress Twitter Widget Pro" 75 | msgstr "Powered by WordPress Twitter Widget Pro" 76 | 77 | #: wp-twitter-widget.php:440 78 | msgid "Follow a Twitter Feed" 79 | msgstr "Sigue un feed de Twitter" 80 | 81 | #: wp-twitter-widget.php:442 82 | msgid "Twitter Feed" 83 | msgstr "Twitter Feed" 84 | 85 | #: wp-twitter-widget.php:484 86 | msgid "Twitter username:" 87 | msgstr "Nombre de usuario:" 88 | 89 | #: wp-twitter-widget.php:488 90 | msgid "Give the feed a title (optional):" 91 | msgstr "Ponle un título (opcional):" 92 | 93 | #: wp-twitter-widget.php:492 94 | msgid "How many items would you like to display?" 95 | msgstr "¿Cuántos elementos quieres mostrar?" 96 | 97 | #: wp-twitter-widget.php:502 98 | msgid "What to display when Twitter is down (optional):" 99 | msgstr "Qué mostrar cuando Twitter no está disponible (opcional):" 100 | 101 | #: wp-twitter-widget.php:506 102 | msgid "Number of seconds to wait for a response from Twitter (default 2):" 103 | msgstr "Número de segundos a esperar para que Twitter responda (por defecto 2):" 104 | 105 | #: wp-twitter-widget.php:510 106 | msgid "Show date/time of Tweet (rather than 2 ____ ago):" 107 | msgstr "Mostrar fecha/hora del Tweet (en vez de 'hace 2 ____'):" 108 | 109 | #: wp-twitter-widget.php:512 110 | msgid "Always" 111 | msgstr "Siempre" 112 | 113 | #: wp-twitter-widget.php:513 114 | msgid "If over an hour old" 115 | msgstr "Si tiene más de una hora" 116 | 117 | #: wp-twitter-widget.php:514 118 | msgid "If over a day old" 119 | msgstr "Si tiene más de un día" 120 | 121 | #: wp-twitter-widget.php:515 122 | msgid "If over a week old" 123 | msgstr "Si tiene más de una semana" 124 | 125 | #: wp-twitter-widget.php:516 126 | msgid "If over a month old" 127 | msgstr "Si tiene más de un mes" 128 | 129 | #: wp-twitter-widget.php:517 130 | msgid "If over a year old" 131 | msgstr "Si tiene más de un año" 132 | 133 | #: wp-twitter-widget.php:518 134 | msgid "Never" 135 | msgstr "Nunca" 136 | 137 | #: wp-twitter-widget.php:522 138 | msgid "Hide RSS Icon and Link" 139 | msgstr "No mostrar el icono RSS y el enlace" 140 | 141 | #: wp-twitter-widget.php:525 142 | msgid "Show Profile Image" 143 | msgstr "Mostrar imagen de perfil" 144 | 145 | #: wp-twitter-widget.php:529 146 | msgid "Show Link to Twitter Widget Pro" 147 | msgstr "Mostrar enlace a Twitter Widget Pro" 148 | 149 | #: wp-twitter-widget.php:570 150 | #, php-format 151 | msgid "about %s year ago" 152 | msgid_plural "about %s years ago" 153 | msgstr[0] "hace %s año" 154 | msgstr[1] "hace %s años" 155 | 156 | #: wp-twitter-widget.php:571 157 | #, php-format 158 | msgid "about %s month ago" 159 | msgid_plural "about %s months ago" 160 | msgstr[0] "hace %s mes" 161 | msgstr[1] "hace %s meses" 162 | 163 | #: wp-twitter-widget.php:572 164 | #, php-format 165 | msgid "about %s week ago" 166 | msgid_plural "about %s weeks ago" 167 | msgstr[0] "hace %s semana" 168 | msgstr[1] "hace %s semanas" 169 | 170 | #: wp-twitter-widget.php:573 171 | #, php-format 172 | msgid "about %s day ago" 173 | msgid_plural "about %s days ago" 174 | msgstr[0] "hace %s día" 175 | msgstr[1] "hace %s días" 176 | 177 | #: wp-twitter-widget.php:574 178 | #, php-format 179 | msgid "about %s hour ago" 180 | msgid_plural "about %s hours ago" 181 | msgstr[0] "hace %s hora" 182 | msgstr[1] "hace %s horas" 183 | 184 | #: wp-twitter-widget.php:575 185 | #, php-format 186 | msgid "about %s minute ago" 187 | msgid_plural "about %s minutes ago" 188 | msgstr[0] "hace %s minuto" 189 | msgstr[1] "hace %s minutos" 190 | 191 | #: wp-twitter-widget.php:576 192 | #, php-format 193 | msgid "about %s second ago" 194 | msgid_plural "about %s seconds ago" 195 | msgstr[0] "hace %s segundo" 196 | msgstr[1] "hace %s segundos" 197 | 198 | #: wp-twitter-widget.php:673 199 | msgid "Settings" 200 | msgstr "Opciones" 201 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro-it_IT.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-it_IT.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-it_IT.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # This file is put in the public domain. 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: Twitter Widget Pro in italiano\n" 8 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 9 | "POT-Creation-Date: 2011-09-01 20:20:51+00:00\n" 10 | "PO-Revision-Date: 2011-09-02 18:48+0100\n" 11 | "Last-Translator: Gianni Diurno (aka gidibao) \n" 12 | "Language-Team: Gianni Diurno | gidibao.net & charmingpress.com\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Plural-Forms: nplurals=2;plural=n != 1;\n" 17 | "X-Poedit-Language: Italian\n" 18 | "X-Poedit-Country: ITALY\n" 19 | "X-Poedit-KeywordsList: __;_e\n" 20 | "X-Poedit-Basepath: ../\n" 21 | "X-Poedit-SearchPath-0: .\n" 22 | 23 | #: wp-twitter-widget.php:43 24 | msgid "Follow a Twitter Feed" 25 | msgstr "Segui un feed di Twitter" 26 | 27 | #: wp-twitter-widget.php:50 28 | #: wp-twitter-widget.php:195 29 | msgid "Twitter Widget Pro" 30 | msgstr "Twitter Widget Pro" 31 | 32 | #: wp-twitter-widget.php:65 33 | #: wp-twitter-widget.php:239 34 | msgid "Twitter username:" 35 | msgstr "Nome utente Twitter:" 36 | 37 | #: wp-twitter-widget.php:69 38 | #: wp-twitter-widget.php:247 39 | msgid "Give the feed a title ( optional ):" 40 | msgstr "Nome per il feed ( facoltativo ):" 41 | 42 | #: wp-twitter-widget.php:73 43 | #: wp-twitter-widget.php:255 44 | msgid "How many items would you like to display?" 45 | msgstr "Quanti messaggi desideri mostrare?" 46 | 47 | #: wp-twitter-widget.php:83 48 | #: wp-twitter-widget.php:269 49 | msgid "Display profile image?" 50 | msgstr "Mostra immagine profilo" 51 | 52 | #: wp-twitter-widget.php:85 53 | #: wp-twitter-widget.php:273 54 | msgid "Do not show" 55 | msgstr "non mostrare" 56 | 57 | #: wp-twitter-widget.php:86 58 | #: wp-twitter-widget.php:274 59 | msgid "Mini - 24px by 24px" 60 | msgstr "Mini - 24px per 24px" 61 | 62 | #: wp-twitter-widget.php:87 63 | #: wp-twitter-widget.php:275 64 | msgid "Normal - 48px by 48px" 65 | msgstr "Normale - 48px per 48px" 66 | 67 | #: wp-twitter-widget.php:88 68 | #: wp-twitter-widget.php:276 69 | msgid "Bigger - 73px by 73px" 70 | msgstr "Grande - 73px per 73px" 71 | 72 | #: wp-twitter-widget.php:89 73 | #: wp-twitter-widget.php:277 74 | msgid "Original" 75 | msgstr "Originale" 76 | 77 | #: wp-twitter-widget.php:94 78 | #: wp-twitter-widget.php:327 79 | msgid "Include retweets" 80 | msgstr "includi i retweet" 81 | 82 | #: wp-twitter-widget.php:98 83 | #: wp-twitter-widget.php:330 84 | msgid "Hide @replies" 85 | msgstr "nascondi @replies" 86 | 87 | #: wp-twitter-widget.php:102 88 | #: wp-twitter-widget.php:333 89 | msgid "Hide sending applications" 90 | msgstr "nascondi invio applicazioni" 91 | 92 | #: wp-twitter-widget.php:107 93 | #: wp-twitter-widget.php:337 94 | msgid "Show Tweet Intents (reply, retweet, favorite)" 95 | msgstr "mostra Tweet Intents (reply, retweet, favorite)" 96 | 97 | #: wp-twitter-widget.php:112 98 | #: wp-twitter-widget.php:341 99 | msgid "Show Follow Link" 100 | msgstr "mostra link follow" 101 | 102 | #: wp-twitter-widget.php:115 103 | #: wp-twitter-widget.php:283 104 | msgid "What to display when Twitter is down ( optional ):" 105 | msgstr "Mostra quando Twitter é fuori servizio ( facoltativo ):" 106 | 107 | #: wp-twitter-widget.php:119 108 | #: wp-twitter-widget.php:291 109 | msgid "Number of seconds to wait for a response from Twitter ( default 2 ):" 110 | msgstr "Secondi di attesa per una risposta da Twitter ( predefinito 2 ):" 111 | 112 | #: wp-twitter-widget.php:123 113 | #: wp-twitter-widget.php:299 114 | msgid "Show date/time of Tweet ( rather than 2 ____ ago ):" 115 | msgstr "Mostra data/ora del messaggio ( piuttosto che 2 ____ fa):" 116 | 117 | #: wp-twitter-widget.php:125 118 | #: wp-twitter-widget.php:303 119 | msgid "Always" 120 | msgstr "sempre" 121 | 122 | #: wp-twitter-widget.php:126 123 | #: wp-twitter-widget.php:304 124 | msgid "If over an hour old" 125 | msgstr "se più di un'ora" 126 | 127 | #: wp-twitter-widget.php:127 128 | #: wp-twitter-widget.php:305 129 | msgid "If over a day old" 130 | msgstr "se più di un giorno" 131 | 132 | #: wp-twitter-widget.php:128 133 | #: wp-twitter-widget.php:306 134 | msgid "If over a week old" 135 | msgstr "se più di una settimana" 136 | 137 | #: wp-twitter-widget.php:129 138 | #: wp-twitter-widget.php:307 139 | msgid "If over a month old" 140 | msgstr "se più di un mese" 141 | 142 | #: wp-twitter-widget.php:130 143 | #: wp-twitter-widget.php:308 144 | msgid "If over a year old" 145 | msgstr "se più di un anno" 146 | 147 | #: wp-twitter-widget.php:131 148 | #: wp-twitter-widget.php:309 149 | msgid "Never" 150 | msgstr "mai" 151 | 152 | #: wp-twitter-widget.php:135 153 | #: wp-twitter-widget.php:315 154 | msgid "Format to dispaly the date in, uses PHP date() format:" 155 | msgstr "Qualora decidessi di mostrare la data, utilizza il formato PHP date():" 156 | 157 | #: wp-twitter-widget.php:140 158 | #: wp-twitter-widget.php:344 159 | msgid "Open links in a new window" 160 | msgstr "apri i link in una nuova finestra" 161 | 162 | #: wp-twitter-widget.php:144 163 | #: wp-twitter-widget.php:347 164 | msgid "Show Link to Twitter Widget Pro" 165 | msgstr "mostra il link a Twitter Widget Pro" 166 | 167 | #: wp-twitter-widget.php:196 168 | msgid "Twitter Widget" 169 | msgstr "Twitter Widget" 170 | 171 | #: wp-twitter-widget.php:231 172 | msgid "General Settings" 173 | msgstr "Impostazioni generali" 174 | 175 | #: wp-twitter-widget.php:323 176 | msgid "Other Setting:" 177 | msgstr "Altre impostazioni:" 178 | 179 | #: wp-twitter-widget.php:503 180 | msgid "No Tweets Available" 181 | msgstr "Nessun messaggio disponibile" 182 | 183 | #: wp-twitter-widget.php:521 184 | msgid "from %s" 185 | msgstr "da %s" 186 | 187 | #: wp-twitter-widget.php:525 188 | msgid "in reply to %s" 189 | msgstr "in risposta a %s" 190 | 191 | #: wp-twitter-widget.php:539 192 | msgid "Reply" 193 | msgstr "Rispondi" 194 | 195 | #: wp-twitter-widget.php:547 196 | msgid "Retweet" 197 | msgstr "Retweet" 198 | 199 | #: wp-twitter-widget.php:555 200 | msgid "Favorite" 201 | msgstr "Preferiti" 202 | 203 | #: wp-twitter-widget.php:578 204 | msgid "Follow %s" 205 | msgstr "Segui %s" 206 | 207 | #: wp-twitter-widget.php:588 208 | msgid "Brought to you by Xavisys - A WordPress development company" 209 | msgstr "Brought to you by Xavisys - A WordPress development company" 210 | 211 | #: wp-twitter-widget.php:590 212 | msgid "Powered by" 213 | msgstr "Powered by" 214 | 215 | #: wp-twitter-widget.php:639 216 | msgid "Invalid Twitter Response." 217 | msgstr "Risposta da Twitter non valida." 218 | 219 | #: wp-twitter-widget.php:649 220 | msgid "Could not connect to Twitter" 221 | msgstr "Non é stato possibile connettersi a Twitter" 222 | 223 | #: wp-twitter-widget.php:731 224 | msgid "about %s year ago" 225 | msgid_plural "about %s years ago" 226 | msgstr[0] "circa %s anno fa" 227 | msgstr[1] "circa %s anni fa" 228 | 229 | #: wp-twitter-widget.php:732 230 | msgid "about %s month ago" 231 | msgid_plural "about %s months ago" 232 | msgstr[0] "circa %s mese fa" 233 | msgstr[1] "circa %s mesi fa" 234 | 235 | #: wp-twitter-widget.php:733 236 | msgid "about %s week ago" 237 | msgid_plural "about %s weeks ago" 238 | msgstr[0] "circa %s settimana fa" 239 | msgstr[1] "circa %s settimane fa" 240 | 241 | #: wp-twitter-widget.php:734 242 | msgid "about %s day ago" 243 | msgid_plural "about %s days ago" 244 | msgstr[0] "circa %s giorno fa" 245 | msgstr[1] "circa %s giorni fa" 246 | 247 | #: wp-twitter-widget.php:735 248 | msgid "about %s hour ago" 249 | msgid_plural "about %s hours ago" 250 | msgstr[0] "circa %s ora fa" 251 | msgstr[1] "circa %s ore fa" 252 | 253 | #: wp-twitter-widget.php:736 254 | msgid "about %s minute ago" 255 | msgid_plural "about %s minutes ago" 256 | msgstr[0] "circa %s minunto fa" 257 | msgstr[1] "circa %s minunti fa" 258 | 259 | #: wp-twitter-widget.php:737 260 | msgid "about %s second ago" 261 | msgid_plural "about %s seconds ago" 262 | msgstr[0] "circa %s secondo fa" 263 | msgstr[1] "circa %s secondi fa" 264 | 265 | #: wp-twitter-widget.php:789 266 | #: wp-twitter-widget.php:862 267 | msgid "h:i:s A F d, Y" 268 | msgstr "H:i:s F d Y" 269 | 270 | #: xavisys-plugin-framework.php:245 271 | msgid "Update Options »" 272 | msgstr "Aggiorna le opzioni »" 273 | 274 | #: xavisys-plugin-framework.php:292 275 | msgid "Donate" 276 | msgstr "Donazioni" 277 | 278 | #: xavisys-plugin-framework.php:299 279 | msgid "Support Forum" 280 | msgstr "Forum di supporto" 281 | 282 | #: xavisys-plugin-framework.php:307 283 | msgid "Donate to show your appreciation." 284 | msgstr "Effettua una donazione per mostrare il tuo gradimento del plugin." 285 | 286 | #: xavisys-plugin-framework.php:318 287 | msgid "Settings" 288 | msgstr "Impostazioni" 289 | 290 | #: xavisys-plugin-framework.php:336 291 | msgid "Like this Plugin?" 292 | msgstr "Ti é piaciuto il plugin?" 293 | 294 | #: xavisys-plugin-framework.php:339 295 | msgid "Need Support?" 296 | msgstr "Serve aiuto?" 297 | 298 | #: xavisys-plugin-framework.php:342 299 | msgid "Latest news from Xavisys" 300 | msgstr "Ultime notizie da Xavisys" 301 | 302 | #: xavisys-plugin-framework.php:348 303 | msgid "Then please do any or all of the following:" 304 | msgstr "Quindi, fai quanto segue:" 305 | 306 | #: xavisys-plugin-framework.php:353 307 | msgid "Link to it so others can find out about it." 308 | msgstr "Pubblica una recensione sul plugin." 309 | 310 | #: xavisys-plugin-framework.php:358 311 | msgid "Give it a good rating on WordPress.org." 312 | msgstr "Vota il plugin su WordPress.org." 313 | 314 | #: xavisys-plugin-framework.php:368 315 | msgid "If you have any problems with this plugin or ideas for improvements or enhancements, please use the Xavisys Support Forums." 316 | msgstr "In caso di problemi, suggerimenti e segnalazioni di bug, visitare il forum di supporto Xavisys." 317 | 318 | #~ msgid "username" 319 | #~ msgstr "Nome utente" 320 | 321 | #~ msgid "title" 322 | #~ msgstr "Titolo" 323 | 324 | #~ msgid "errmsg" 325 | #~ msgstr "errmsg" 326 | 327 | #~ msgid "fetchTimeOut" 328 | #~ msgstr "fetchTimeOut" 329 | 330 | #~ msgid "dateFormat" 331 | #~ msgstr "formato data" 332 | 333 | #~ msgid "Hide RSS Icon and Link" 334 | #~ msgstr "nascondi icona e link RSS" 335 | 336 | #~ msgid "twp" 337 | #~ msgstr "twp" 338 | 339 | #~ msgid "Syndicate this content" 340 | #~ msgstr "Abbonati a questo contenuto" 341 | 342 | #~ msgid "Get Twitter Widget for your WordPress site" 343 | #~ msgstr "Usa Twitter Widget per il tuo sito WordPress" 344 | 345 | #~ msgid "Manage Widgets" 346 | #~ msgstr "Gestione widget" 347 | 348 | #~ msgid "" 349 | #~ "Powered by WordPress Twitter Widget Pro" 351 | #~ msgstr "" 352 | #~ "Powered by WordPress Twitter Widget Pro" 354 | 355 | #~ msgid "Twitter Widget Pro Options" 356 | #~ msgstr "Opzioni Twitter Widget Pro" 357 | 358 | #~ msgid "Click for Help!" 359 | #~ msgstr "Supporto!" 360 | 361 | #~ msgid "System Information:" 362 | #~ msgstr "Informazioni sul sistema:" 363 | 364 | #~ msgid "I agree to send anonymous system information" 365 | #~ msgstr "Acconsento l'invio di informazioni anonime sul mio sistema" 366 | 367 | #~ msgid "" 368 | #~ "You can help by sending anonymous system information that will help " 369 | #~ "Xavisys make better decisions about new features." 370 | #~ msgstr "" 371 | #~ "L'invio di informazioni anonime sul sistema sarà di aiuto a Xavisys in " 372 | #~ "modo tale che possa sviluppare al meglio il plugin." 373 | 374 | #~ msgid "" 375 | #~ "The information will be sent anonymously, but a unique identifier will be " 376 | #~ "sent to prevent duplicate entries from the same installation." 377 | #~ msgstr "" 378 | #~ "Le informazioni verrano inviate in forma anonima. Un identificatore unico " 379 | #~ "sarà comunque inviato affinché non siano presi in considerazione i " 380 | #~ "duplicati provenienti dalla stessa installazione." 381 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro-nl_NL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-nl_NL.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-nl_NL.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2012 2 | # This file is distributed under the same license as the package. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: Twitter Widget Pro in dutch\n" 6 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 7 | "POT-Creation-Date: 2012-10-10 18:44:11+00:00\n" 8 | "MIME-Version: 1.0\n" 9 | "Content-Type: text/plain; charset=UTF-8\n" 10 | "Content-Transfer-Encoding: 8bit\n" 11 | "Plural-Forms: nplurals=2;plural=n != 1;\n" 12 | "PO-Revision-Date: 2012-10-11 11:18+0100\n" 13 | "Last-Translator: \n" 14 | "Language-Team: Marko Heijnen \n" 15 | "X-Generator: Poedit 1.5.4\n" 16 | "Language: Dutch\n" 17 | 18 | #: range-plugin-framework.php:251 19 | msgid "Update Options »" 20 | msgstr "Bewerk opties »" 21 | 22 | #: range-plugin-framework.php:297 23 | msgid "Rate Plugin" 24 | msgstr "Beoordeel Plugin" 25 | 26 | #: range-plugin-framework.php:303 27 | msgid "Support" 28 | msgstr "Support" 29 | 30 | #: range-plugin-framework.php:311 31 | msgid "Donate to show your appreciation." 32 | msgstr "Doneer om jouw waardering te tonen." 33 | 34 | #: range-plugin-framework.php:322 35 | msgid "Give it a good rating on WordPress.org." 36 | msgstr "Geef het een goede beoordeling op WordPress.org." 37 | 38 | #: range-plugin-framework.php:332 39 | msgid "Settings" 40 | msgstr "Instellingen" 41 | 42 | #: range-plugin-framework.php:361 43 | msgid "Like this Plugin?" 44 | msgstr "Vind je deze plugin leuk?" 45 | 46 | #: range-plugin-framework.php:364 47 | msgid "Need Support?" 48 | msgstr "Support nodig?" 49 | 50 | #: range-plugin-framework.php:367 51 | msgid "Latest news from Range" 52 | msgstr "Laatste nieuws van Range" 53 | 54 | #: range-plugin-framework.php:372 55 | msgid "Then please do any or all of the following:" 56 | msgstr "Dan zou je de één van de volgende kunnen doen: " 57 | 58 | #: range-plugin-framework.php:377 59 | msgid "Link to it so others can find out about it." 60 | msgstr "Link naar het zodat andere het kunnen vinden." 61 | 62 | #: range-plugin-framework.php:389 63 | msgid "" 64 | "If you have any problems with this plugin or ideas for improvements or " 65 | "enhancements, please use the Support Forums." 66 | msgstr "" 67 | "Als je problemen hebt met deze plugin of ideeën hebt voor verbeteringen of " 68 | "uitbreidingen, gebruik dan de Support Forums." 69 | 70 | #: wp-twitter-widget.php:44 71 | msgid "Follow a Twitter Feed" 72 | msgstr "Volg een Twitter Feed" 73 | 74 | #: wp-twitter-widget.php:51 wp-twitter-widget.php:197 75 | msgid "Twitter Widget Pro" 76 | msgstr "Twitter Widget Pro" 77 | 78 | #: wp-twitter-widget.php:66 wp-twitter-widget.php:340 79 | msgid "Twitter username:" 80 | msgstr "Twitter gebruikersnaam:" 81 | 82 | #: wp-twitter-widget.php:70 wp-twitter-widget.php:348 83 | msgid "Give the feed a title ( optional ):" 84 | msgstr "Geef de feed een titel ( optioneel ):" 85 | 86 | #: wp-twitter-widget.php:74 wp-twitter-widget.php:356 87 | msgid "How many items would you like to display?" 88 | msgstr "Hoeveel regels wil je weergeven?" 89 | 90 | #: wp-twitter-widget.php:84 wp-twitter-widget.php:370 91 | msgid "Display profile image?" 92 | msgstr "Toon profielafbeelding?" 93 | 94 | #: wp-twitter-widget.php:86 wp-twitter-widget.php:374 95 | msgid "Do not show" 96 | msgstr "Niet tonen" 97 | 98 | #: wp-twitter-widget.php:87 wp-twitter-widget.php:375 99 | msgid "Mini - 24px by 24px" 100 | msgstr "Klein - 24px by 24px" 101 | 102 | #: wp-twitter-widget.php:88 wp-twitter-widget.php:376 103 | msgid "Normal - 48px by 48px" 104 | msgstr "Normaal - 48px by 48px" 105 | 106 | #: wp-twitter-widget.php:89 wp-twitter-widget.php:377 107 | msgid "Bigger - 73px by 73px" 108 | msgstr "Groot - 73px by 73px" 109 | 110 | #: wp-twitter-widget.php:90 wp-twitter-widget.php:378 111 | msgid "Original" 112 | msgstr "Orgineel" 113 | 114 | #: wp-twitter-widget.php:96 wp-twitter-widget.php:429 115 | msgid "Include retweets" 116 | msgstr "Retweets tonen" 117 | 118 | #: wp-twitter-widget.php:100 wp-twitter-widget.php:432 119 | msgid "Hide @replies" 120 | msgstr "Verberg @replies" 121 | 122 | #: wp-twitter-widget.php:104 wp-twitter-widget.php:435 123 | msgid "Hide sending applications" 124 | msgstr "Verberg verstuur toepassing" 125 | 126 | #: wp-twitter-widget.php:109 wp-twitter-widget.php:439 127 | msgid "Show Tweet Intents (reply, retweet, favorite)" 128 | msgstr "Toon Tweet soort (antwoord, retweet, favoriet)" 129 | 130 | #: wp-twitter-widget.php:114 wp-twitter-widget.php:443 131 | msgid "Show Follow Link" 132 | msgstr "Toon volg link" 133 | 134 | #: wp-twitter-widget.php:117 wp-twitter-widget.php:384 135 | msgid "What to display when Twitter is down ( optional ):" 136 | msgstr "" 137 | "Wat moet er worden weergegeven wanneer Twitter offline is ( optioneel ):" 138 | 139 | #: wp-twitter-widget.php:121 wp-twitter-widget.php:392 140 | msgid "Number of seconds to wait for a response from Twitter ( default 2 ):" 141 | msgstr "" 142 | "Aantal seconden voor het wachten op een reactie van Twitter ( standaard 2 ):" 143 | 144 | #: wp-twitter-widget.php:125 wp-twitter-widget.php:400 145 | msgid "Show date/time of Tweet ( rather than 2 ____ ago ):" 146 | msgstr "Toon datum/tijd van een tweet ( meer dan 2 ____ geleden ):" 147 | 148 | #: wp-twitter-widget.php:127 wp-twitter-widget.php:404 149 | msgid "Always" 150 | msgstr "Altijd" 151 | 152 | #: wp-twitter-widget.php:128 wp-twitter-widget.php:405 153 | msgid "If over an hour old" 154 | msgstr "Indien meer dan een uur oud" 155 | 156 | #: wp-twitter-widget.php:129 wp-twitter-widget.php:406 157 | msgid "If over a day old" 158 | msgstr "Indien meer dan een dag oud" 159 | 160 | #: wp-twitter-widget.php:130 wp-twitter-widget.php:407 161 | msgid "If over a week old" 162 | msgstr "Indien meer dan een week oud" 163 | 164 | #: wp-twitter-widget.php:131 wp-twitter-widget.php:408 165 | msgid "If over a month old" 166 | msgstr "Indien meer dan een maand oud" 167 | 168 | #: wp-twitter-widget.php:132 wp-twitter-widget.php:409 169 | msgid "If over a year old" 170 | msgstr "Indien meer dan een jaar oud" 171 | 172 | #: wp-twitter-widget.php:133 wp-twitter-widget.php:410 173 | msgid "Never" 174 | msgstr "Nooit" 175 | 176 | #: wp-twitter-widget.php:137 wp-twitter-widget.php:416 177 | msgid "" 178 | "Format to dispaly the date in, uses PHP date() format:" 179 | msgstr "" 180 | "Opmaak om de datum te tonen, maakt gebruik van PHP date() " 181 | "formaat:" 182 | 183 | #: wp-twitter-widget.php:142 wp-twitter-widget.php:446 184 | msgid "Open links in a new window" 185 | msgstr "Open links in een nieuw venster" 186 | 187 | #: wp-twitter-widget.php:146 wp-twitter-widget.php:449 188 | msgid "Show Link to Twitter Widget Pro" 189 | msgstr "Toon link naar Twitter Widget Pro" 190 | 191 | #: wp-twitter-widget.php:198 192 | msgid "Twitter Widget" 193 | msgstr "Twitter Widget" 194 | 195 | #: wp-twitter-widget.php:262 196 | msgid "There were no locks to clear!" 197 | msgstr "Er waren geen blokkeringen om op te schonen" 198 | 199 | #: wp-twitter-widget.php:264 200 | msgid "Successfully cleared %d lock." 201 | msgid_plural "Successfully cleared %d locks." 202 | msgstr[0] "Succesvol %d blokkering verwijderd." 203 | msgstr[1] "Succesvol %d blokkeringen verwijderd." 204 | 205 | #: wp-twitter-widget.php:270 206 | msgid "General Settings" 207 | msgstr "Algemene instellingen" 208 | 209 | #: wp-twitter-widget.php:271 210 | msgid "Default Settings for Shortcodes" 211 | msgstr "Standaard instellingen voor shortcodes" 212 | 213 | #: wp-twitter-widget.php:280 214 | msgid "HTTP vs HTTPS:" 215 | msgstr "HTTP vs HTTPS:" 216 | 217 | #: wp-twitter-widget.php:284 218 | msgid "Use Twitter API via HTTPS" 219 | msgstr "Gebruik Twitter API over HTTPS" 220 | 221 | #: wp-twitter-widget.php:287 222 | msgid "Use Twitter API via HTTP" 223 | msgstr "Gebruik Twitter API over HTTP" 224 | 225 | #: wp-twitter-widget.php:289 226 | msgid "" 227 | "Some servers seem to have issues connecting via HTTPS. If you're " 228 | "experiencing issues with your feed not updating, try setting this to HTTP." 229 | msgstr "" 230 | "Sommige servers lijken problemen te hebben om via HTTPS te verbinden. Indien " 231 | "je problemen ondervindt dat je feed niet update, probeer dan HTTP." 232 | 233 | #: wp-twitter-widget.php:294 234 | msgid "Clear Update Locks:" 235 | msgstr "Schoon blokkeringen op:" 236 | 237 | #: wp-twitter-widget.php:297 238 | msgid "Clear Update Locks" 239 | msgstr "Schoon blokkeringen op" 240 | 241 | #: wp-twitter-widget.php:298 242 | msgid "" 243 | "A small perecntage of servers seem to have issues where an update lock isn't " 244 | "getting cleared. If you're experiencing issues with your feed not updating, " 245 | "try clearing the update locks." 246 | msgstr "" 247 | "Een klein percentage van servers lijkt problemen te hebben met een update " 248 | "blokkering die niet word gewist. Als u problemen ondervindt met dat je feed " 249 | "niet update, probeer dan zelf de update blokkeringen te wissen." 250 | 251 | #: wp-twitter-widget.php:303 252 | msgid "Current API Usage" 253 | msgstr "Huidige API gebruik" 254 | 255 | #: wp-twitter-widget.php:314 256 | msgid "Used: %d" 257 | msgstr "Gebruikt: %d" 258 | 259 | #: wp-twitter-widget.php:315 260 | msgid "Remaining: %d" 261 | msgstr "Resterende: %d" 262 | 263 | #: wp-twitter-widget.php:318 264 | msgid "Limits reset in: %d minutes" 265 | msgid_plural "Limits reset in: %d minutes" 266 | msgstr[0] "Limieten hersteld in: %d minuut" 267 | msgstr[1] "Limieten hersteld in: %d minuten" 268 | 269 | #: wp-twitter-widget.php:320 270 | msgid "This is overall usage, not just usage from Twitter Widget Pro" 271 | msgstr "" 272 | "Dit is het totale gebruik, niet alleen het gebruik van Twitter Widget Pro" 273 | 274 | #: wp-twitter-widget.php:325 275 | msgid "There was an error checking your rate limit." 276 | msgstr "Er was een fout tijdens het controleren van je rate limiet." 277 | 278 | #: wp-twitter-widget.php:336 279 | msgid "" 280 | "These settings are the default for the shortcodes and all of them can be " 281 | "overridden by specifying a different value in the shortcode itself. All " 282 | "settings for widgets are locate in the individual widget." 283 | msgstr "" 284 | "Deze instellingen zijn de standaard voor shortcodes en je kunt ze " 285 | "overschrijven door een andere waarde aan de shortcode mee te geven. Alle " 286 | "instellingen voor widgets zijn te vinden in de individuele widget." 287 | 288 | #: wp-twitter-widget.php:424 289 | msgid "Other Setting:" 290 | msgstr "Overige indelingen" 291 | 292 | #: wp-twitter-widget.php:637 293 | msgid "No Tweets Available" 294 | msgstr "Geen Tweets beschikbaar" 295 | 296 | #: wp-twitter-widget.php:655 297 | msgid "from %s" 298 | msgstr "van %s" 299 | 300 | #: wp-twitter-widget.php:659 301 | msgid "in reply to %s" 302 | msgstr "in reactie op %s" 303 | 304 | #: wp-twitter-widget.php:676 305 | msgid "Reply" 306 | msgstr "Reageer" 307 | 308 | #: wp-twitter-widget.php:682 309 | msgid "Retweet" 310 | msgstr "Retweet" 311 | 312 | #: wp-twitter-widget.php:688 313 | msgid "Favorite" 314 | msgstr "Favoriet" 315 | 316 | #: wp-twitter-widget.php:709 317 | msgid "Follow %s" 318 | msgstr "Volg %s" 319 | 320 | #: wp-twitter-widget.php:723 321 | msgid "Brought to you by Range - A WordPress design and development company" 322 | msgstr "Aangeboden door Range - Een WordPress ontwerp en ontwikkeling bedrijf" 323 | 324 | #: wp-twitter-widget.php:725 325 | msgid "Powered by" 326 | msgstr "Powered by" 327 | 328 | #: wp-twitter-widget.php:794 329 | msgid "Invalid Twitter Response." 330 | msgstr "Incorrecte Twitter reactie." 331 | 332 | #: wp-twitter-widget.php:804 333 | msgid "Could not connect to Twitter" 334 | msgstr "Kon niet met Twitter verbinden" 335 | 336 | #: wp-twitter-widget.php:886 337 | msgid "about %s year ago" 338 | msgid_plural "about %s years ago" 339 | msgstr[0] "ongeveer %s jaar geleden" 340 | msgstr[1] "ongeveer %s jaar geleden" 341 | 342 | #: wp-twitter-widget.php:887 343 | msgid "about %s month ago" 344 | msgid_plural "about %s months ago" 345 | msgstr[0] "ongeveer %s maand geleden" 346 | msgstr[1] "ongeveer %s maanden geleden" 347 | 348 | #: wp-twitter-widget.php:888 349 | msgid "about %s week ago" 350 | msgid_plural "about %s weeks ago" 351 | msgstr[0] "ongeveer %s week geleden" 352 | msgstr[1] "ongeveer %s weken geleden" 353 | 354 | #: wp-twitter-widget.php:889 355 | msgid "about %s day ago" 356 | msgid_plural "about %s days ago" 357 | msgstr[0] "ongeveer %s dag geleden" 358 | msgstr[1] "ongeveer %s dagen geleden" 359 | 360 | #: wp-twitter-widget.php:890 361 | msgid "about %s hour ago" 362 | msgid_plural "about %s hours ago" 363 | msgstr[0] "ongeveer %s uur geleden" 364 | msgstr[1] "ongeveer %s uur geleden" 365 | 366 | #: wp-twitter-widget.php:891 367 | msgid "about %s minute ago" 368 | msgid_plural "about %s minutes ago" 369 | msgstr[0] "ongeveer %s minuut geleden" 370 | msgstr[1] "ongeveer %s minuten geleden" 371 | 372 | #: wp-twitter-widget.php:892 373 | msgid "about %s second ago" 374 | msgid_plural "about %s seconds ago" 375 | msgstr[0] "ongeveer %s seconde geleden" 376 | msgstr[1] "ongeveer %s seconden geleden" 377 | 378 | #: wp-twitter-widget.php:944 wp-twitter-widget.php:1018 379 | msgid "h:i:s A F d, Y" 380 | msgstr "h:i:s j F Y" 381 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro-sv_SE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweet-feed-plugin/044ec7a0a9f61feb14c51b5c2188fee6e5c8ad97/languages/twitter-widget-pro-sv_SE.mo -------------------------------------------------------------------------------- /languages/twitter-widget-pro-sv_SE.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter Widget Pro 1.4.5\n" 4 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 5 | "POT-Creation-Date: 2009-07-07 22:39+0100\n" 6 | "PO-Revision-Date: \n" 7 | "Last-Translator: Hugo Krantz \n" 8 | "Language-Team: Hugo Krantz \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=2;plural=n != 1;\n" 13 | "X-Poedit-Language: Swedish\n" 14 | "X-Poedit-Country: SWEDEN\n" 15 | "X-Poedit-SourceCharset: utf-8\n" 16 | "X-Poedit-KeywordsList: __;_c;_e;__ngettext:1,2;__ngettext_noop:1,2\n" 17 | 18 | #: wp-twitter-widget.php:48 19 | msgid "Twitter Widget Pro" 20 | msgstr "Twitter Widget Pro" 21 | 22 | #: wp-twitter-widget.php:64 23 | msgid "Twitter Widget Pro Options" 24 | msgstr "Inställningar för Twitter Widget Pro" 25 | 26 | #: wp-twitter-widget.php:70 27 | msgid "Click for Help!" 28 | msgstr "Klicka för hjälp" 29 | 30 | #: wp-twitter-widget.php:71 31 | msgid "System Information:" 32 | msgstr "Systeminformation:" 33 | 34 | #: wp-twitter-widget.php:76 35 | msgid "I agree to send anonymous system information" 36 | msgstr "Jag accepterer att sända anonym systeminformation" 37 | 38 | #: wp-twitter-widget.php:78 39 | msgid "You can help by sending anonymous system information that will help Xavisys make better decisions about new features." 40 | msgstr "Du kan hjälpa genom att sända anonym systeminformation, som hjälper Xavisys att fatta bättre beslut om nya funktioner." 41 | 42 | #: wp-twitter-widget.php:79 43 | msgid "The information will be sent anonymously, but a unique identifier will be sent to prevent duplicate entries from the same installation." 44 | msgstr "Informationen sänds anonymt, men ett unikt id skickas med för att säkerställa att alla registreringar från samma installation är unika." 45 | 46 | #: wp-twitter-widget.php:85 47 | msgid "Update Options »" 48 | msgstr "Uppdatera inställningar »" 49 | 50 | #: wp-twitter-widget.php:114 51 | msgid "Could not connect to Twitter" 52 | msgstr "Kunde inte få förbindelse till Twitter" 53 | 54 | #: wp-twitter-widget.php:273 55 | msgid "Syndicate this content" 56 | msgstr "Följ detta innehåll via RSS" 57 | 58 | #: wp-twitter-widget.php:286 59 | msgid "No Tweets Available" 60 | msgstr "Inga Tweets tillgängliga" 61 | 62 | #: wp-twitter-widget.php:307 63 | #, php-format 64 | msgid "from %s" 65 | msgstr "via %s" 66 | 67 | #: wp-twitter-widget.php:311 68 | #, php-format 69 | msgid "in reply to %s" 70 | msgstr "som svar på %s" 71 | 72 | #: wp-twitter-widget.php:331 73 | #, php-format 74 | msgid "Powered by WordPress Twitter Widget Pro" 75 | msgstr "Använder WordPress-Twitter Widget Pro" 76 | 77 | #: wp-twitter-widget.php:441 78 | msgid "Follow a Twitter Feed" 79 | msgstr "Följ ett Twitter-flöde" 80 | 81 | #: wp-twitter-widget.php:443 82 | msgid "Twitter Feed" 83 | msgstr "Twitter-flöde" 84 | 85 | #: wp-twitter-widget.php:485 86 | msgid "Twitter username:" 87 | msgstr "Twitter-användarnamn:" 88 | 89 | #: wp-twitter-widget.php:489 90 | msgid "Give the feed a title (optional):" 91 | msgstr "Ge flödet en titel (valfritt):" 92 | 93 | #: wp-twitter-widget.php:493 94 | msgid "How many items would you like to display?" 95 | msgstr "Hur många tweets vill du visa?" 96 | 97 | #: wp-twitter-widget.php:503 98 | msgid "What to display when Twitter is down (optional):" 99 | msgstr "Vad skall visas om Twitter är nere (valfritt):" 100 | 101 | #: wp-twitter-widget.php:507 102 | msgid "Number of seconds to wait for a response from Twitter (default 2):" 103 | msgstr "Antal sekunder att vänta på svar från Twitter (standard: 2):" 104 | 105 | #: wp-twitter-widget.php:511 106 | msgid "Show date/time of Tweet (rather than 2 ____ ago):" 107 | msgstr "Visa Tweetens datum/klockslag (istf. 2 ___ sedan):" 108 | 109 | #: wp-twitter-widget.php:513 110 | msgid "Always" 111 | msgstr "Alltid" 112 | 113 | #: wp-twitter-widget.php:514 114 | msgid "If over an hour old" 115 | msgstr "Om över en timme gammalt" 116 | 117 | #: wp-twitter-widget.php:515 118 | msgid "If over a day old" 119 | msgstr "Om över en dag gammalt" 120 | 121 | #: wp-twitter-widget.php:516 122 | msgid "If over a week old" 123 | msgstr "Om över en vecka gammalt" 124 | 125 | #: wp-twitter-widget.php:517 126 | msgid "If over a month old" 127 | msgstr "Om över en månad gammalt" 128 | 129 | #: wp-twitter-widget.php:518 130 | msgid "If over a year old" 131 | msgstr "Om över ett år gammalt" 132 | 133 | #: wp-twitter-widget.php:519 134 | msgid "Never" 135 | msgstr "Aldrig" 136 | 137 | #: wp-twitter-widget.php:523 138 | msgid "Hide RSS Icon and Link" 139 | msgstr "Göm RSS-ikon och -länk" 140 | 141 | #: wp-twitter-widget.php:526 142 | msgid "Show Profile Image" 143 | msgstr "Visa profilbild" 144 | 145 | #: wp-twitter-widget.php:530 146 | msgid "Show Link to Twitter Widget Pro" 147 | msgstr "Visa länk till Twitter Widget Pro" 148 | 149 | #: wp-twitter-widget.php:571 150 | #, php-format 151 | msgid "about %s year ago" 152 | msgid_plural "about %s years ago" 153 | msgstr[0] "ca %s år sedan" 154 | msgstr[1] "ca %s år sedan" 155 | 156 | #: wp-twitter-widget.php:572 157 | #, php-format 158 | msgid "about %s month ago" 159 | msgid_plural "about %s months ago" 160 | msgstr[0] "ca %s månad sedan" 161 | msgstr[1] "ca %s månader sedan" 162 | 163 | #: wp-twitter-widget.php:573 164 | #, php-format 165 | msgid "about %s week ago" 166 | msgid_plural "about %s weeks ago" 167 | msgstr[0] "ca %s vecka sedan" 168 | msgstr[1] "ca %s veckor sedan" 169 | 170 | #: wp-twitter-widget.php:574 171 | #, php-format 172 | msgid "about %s day ago" 173 | msgid_plural "about %s days ago" 174 | msgstr[0] "ca %s dag sedan" 175 | msgstr[1] "ca %s dagar sedan" 176 | 177 | #: wp-twitter-widget.php:575 178 | #, php-format 179 | msgid "about %s hour ago" 180 | msgid_plural "about %s hours ago" 181 | msgstr[0] "ca %s timme sedan" 182 | msgstr[1] "ca %s timmar sedan" 183 | 184 | #: wp-twitter-widget.php:576 185 | #, php-format 186 | msgid "about %s minute ago" 187 | msgid_plural "about %s minutes ago" 188 | msgstr[0] "ca %s minut sedan" 189 | msgstr[1] "ca %s minuter sedan" 190 | 191 | #: wp-twitter-widget.php:577 192 | #, php-format 193 | msgid "about %s second ago" 194 | msgid_plural "about %s seconds ago" 195 | msgstr[0] "ca %s sekund sedan" 196 | msgstr[1] "ca %s sekunder sedan" 197 | 198 | #: wp-twitter-widget.php:645 199 | msgid "Settings" 200 | msgstr "Inställningar" 201 | 202 | -------------------------------------------------------------------------------- /languages/twitter-widget-pro.pot: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2012 2 | # This file is distributed under the same license as the package. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: \n" 6 | "Report-Msgid-Bugs-To: http://wordpress.org/tag/twitter-widget-pro\n" 7 | "POT-Creation-Date: 2012-10-11 14:15:52+00:00\n" 8 | "MIME-Version: 1.0\n" 9 | "Content-Type: text/plain; charset=UTF-8\n" 10 | "Content-Transfer-Encoding: 8bit\n" 11 | "PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n" 12 | "Last-Translator: FULL NAME \n" 13 | "Language-Team: LANGUAGE \n" 14 | 15 | #: range-plugin-framework.php:251 16 | msgid "Update Options »" 17 | msgstr "" 18 | 19 | #: range-plugin-framework.php:297 20 | msgid "Rate Plugin" 21 | msgstr "" 22 | 23 | #: range-plugin-framework.php:303 24 | msgid "Support" 25 | msgstr "" 26 | 27 | #: range-plugin-framework.php:311 28 | msgid "Donate to show your appreciation." 29 | msgstr "" 30 | 31 | #: range-plugin-framework.php:322 32 | msgid "Give it a good rating on WordPress.org." 33 | msgstr "" 34 | 35 | #: range-plugin-framework.php:332 36 | msgid "Settings" 37 | msgstr "" 38 | 39 | #: range-plugin-framework.php:361 40 | msgid "Like this Plugin?" 41 | msgstr "" 42 | 43 | #: range-plugin-framework.php:364 44 | msgid "Need Support?" 45 | msgstr "" 46 | 47 | #: range-plugin-framework.php:367 48 | msgid "Latest news from Range" 49 | msgstr "" 50 | 51 | #: range-plugin-framework.php:372 52 | msgid "Then please do any or all of the following:" 53 | msgstr "" 54 | 55 | #: range-plugin-framework.php:377 56 | msgid "Link to it so others can find out about it." 57 | msgstr "" 58 | 59 | #: range-plugin-framework.php:389 60 | msgid "" 61 | "If you have any problems with this plugin or ideas for improvements or " 62 | "enhancements, please use the Support Forums." 63 | msgstr "" 64 | 65 | #: wp-twitter-widget.php:44 66 | msgid "Follow a Twitter Feed" 67 | msgstr "" 68 | 69 | #: wp-twitter-widget.php:51 wp-twitter-widget.php:197 70 | msgid "Twitter Widget Pro" 71 | msgstr "" 72 | 73 | #: wp-twitter-widget.php:66 wp-twitter-widget.php:340 74 | msgid "Twitter username:" 75 | msgstr "" 76 | 77 | #: wp-twitter-widget.php:70 wp-twitter-widget.php:348 78 | msgid "Give the feed a title ( optional ):" 79 | msgstr "" 80 | 81 | #: wp-twitter-widget.php:74 wp-twitter-widget.php:356 82 | msgid "How many items would you like to display?" 83 | msgstr "" 84 | 85 | #: wp-twitter-widget.php:84 wp-twitter-widget.php:370 86 | msgid "Display profile image?" 87 | msgstr "" 88 | 89 | #: wp-twitter-widget.php:86 wp-twitter-widget.php:374 90 | msgid "Do not show" 91 | msgstr "" 92 | 93 | #: wp-twitter-widget.php:87 wp-twitter-widget.php:375 94 | msgid "Mini - 24px by 24px" 95 | msgstr "" 96 | 97 | #: wp-twitter-widget.php:88 wp-twitter-widget.php:376 98 | msgid "Normal - 48px by 48px" 99 | msgstr "" 100 | 101 | #: wp-twitter-widget.php:89 wp-twitter-widget.php:377 102 | msgid "Bigger - 73px by 73px" 103 | msgstr "" 104 | 105 | #: wp-twitter-widget.php:90 wp-twitter-widget.php:378 106 | msgid "Original" 107 | msgstr "" 108 | 109 | #: wp-twitter-widget.php:96 wp-twitter-widget.php:429 110 | msgid "Include retweets" 111 | msgstr "" 112 | 113 | #: wp-twitter-widget.php:100 wp-twitter-widget.php:432 114 | msgid "Hide @replies" 115 | msgstr "" 116 | 117 | #: wp-twitter-widget.php:104 wp-twitter-widget.php:435 118 | msgid "Hide sending applications" 119 | msgstr "" 120 | 121 | #: wp-twitter-widget.php:109 wp-twitter-widget.php:439 122 | msgid "Show Tweet Intents (reply, retweet, favorite)" 123 | msgstr "" 124 | 125 | #: wp-twitter-widget.php:114 wp-twitter-widget.php:443 126 | msgid "Show Follow Link" 127 | msgstr "" 128 | 129 | #: wp-twitter-widget.php:117 wp-twitter-widget.php:384 130 | msgid "What to display when Twitter is down ( optional ):" 131 | msgstr "" 132 | 133 | #: wp-twitter-widget.php:121 wp-twitter-widget.php:392 134 | msgid "Number of seconds to wait for a response from Twitter ( default 2 ):" 135 | msgstr "" 136 | 137 | #: wp-twitter-widget.php:125 wp-twitter-widget.php:400 138 | msgid "Show date/time of Tweet ( rather than 2 ____ ago ):" 139 | msgstr "" 140 | 141 | #: wp-twitter-widget.php:127 wp-twitter-widget.php:404 142 | msgid "Always" 143 | msgstr "" 144 | 145 | #: wp-twitter-widget.php:128 wp-twitter-widget.php:405 146 | msgid "If over an hour old" 147 | msgstr "" 148 | 149 | #: wp-twitter-widget.php:129 wp-twitter-widget.php:406 150 | msgid "If over a day old" 151 | msgstr "" 152 | 153 | #: wp-twitter-widget.php:130 wp-twitter-widget.php:407 154 | msgid "If over a week old" 155 | msgstr "" 156 | 157 | #: wp-twitter-widget.php:131 wp-twitter-widget.php:408 158 | msgid "If over a month old" 159 | msgstr "" 160 | 161 | #: wp-twitter-widget.php:132 wp-twitter-widget.php:409 162 | msgid "If over a year old" 163 | msgstr "" 164 | 165 | #: wp-twitter-widget.php:133 wp-twitter-widget.php:410 166 | msgid "Never" 167 | msgstr "" 168 | 169 | #: wp-twitter-widget.php:137 wp-twitter-widget.php:416 170 | msgid "" 171 | "Format to display the date in, uses PHP date() format:" 172 | msgstr "" 173 | 174 | #: wp-twitter-widget.php:142 wp-twitter-widget.php:446 175 | msgid "Open links in a new window" 176 | msgstr "" 177 | 178 | #: wp-twitter-widget.php:146 wp-twitter-widget.php:449 179 | msgid "Show Link to Twitter Widget Pro" 180 | msgstr "" 181 | 182 | #: wp-twitter-widget.php:198 183 | msgid "Twitter Widget" 184 | msgstr "" 185 | 186 | #: wp-twitter-widget.php:262 187 | msgid "There were no locks to clear!" 188 | msgstr "" 189 | 190 | #: wp-twitter-widget.php:264 191 | msgid "Successfully cleared %d lock." 192 | msgid_plural "Successfully cleared %d locks." 193 | msgstr[0] "" 194 | msgstr[1] "" 195 | 196 | #: wp-twitter-widget.php:270 197 | msgid "General Settings" 198 | msgstr "" 199 | 200 | #: wp-twitter-widget.php:271 201 | msgid "Default Settings for Shortcodes" 202 | msgstr "" 203 | 204 | #: wp-twitter-widget.php:280 205 | msgid "HTTP vs HTTPS" 206 | msgstr "" 207 | 208 | #: wp-twitter-widget.php:284 209 | msgid "Use Twitter API via HTTPS" 210 | msgstr "" 211 | 212 | #: wp-twitter-widget.php:287 213 | msgid "Use Twitter API via HTTP" 214 | msgstr "" 215 | 216 | #: wp-twitter-widget.php:289 217 | msgid "" 218 | "Some servers seem to have issues connecting via HTTPS. If you're " 219 | "experiencing issues with your feed not updating, try setting this to HTTP." 220 | msgstr "" 221 | 222 | #: wp-twitter-widget.php:294 wp-twitter-widget.php:297 223 | msgid "Clear Update Locks" 224 | msgstr "" 225 | 226 | #: wp-twitter-widget.php:298 227 | msgid "" 228 | "A small percentage of servers seem to have issues where an update lock isn't " 229 | "getting cleared. If you're experiencing issues with your feed not updating, " 230 | "try clearing the update locks." 231 | msgstr "" 232 | 233 | #: wp-twitter-widget.php:303 234 | msgid "Current API Usage" 235 | msgstr "" 236 | 237 | #: wp-twitter-widget.php:314 238 | msgid "Used: %d" 239 | msgstr "" 240 | 241 | #: wp-twitter-widget.php:315 242 | msgid "Remaining: %d" 243 | msgstr "" 244 | 245 | #: wp-twitter-widget.php:318 246 | msgid "Limits reset in: %d minutes" 247 | msgid_plural "Limits reset in: %d minutes" 248 | msgstr[0] "" 249 | msgstr[1] "" 250 | 251 | #: wp-twitter-widget.php:320 252 | msgid "This is overall usage, not just usage from Twitter Widget Pro" 253 | msgstr "" 254 | 255 | #: wp-twitter-widget.php:325 256 | msgid "There was an error checking your rate limit." 257 | msgstr "" 258 | 259 | #: wp-twitter-widget.php:336 260 | msgid "" 261 | "These settings are the default for the shortcodes and all of them can be " 262 | "overridden by specifying a different value in the shortcode itself. All " 263 | "settings for widgets are locate in the individual widget." 264 | msgstr "" 265 | 266 | #: wp-twitter-widget.php:424 267 | msgid "Other Setting:" 268 | msgstr "" 269 | 270 | #: wp-twitter-widget.php:637 271 | msgid "No Tweets Available" 272 | msgstr "" 273 | 274 | #: wp-twitter-widget.php:655 275 | msgid "from %s" 276 | msgstr "" 277 | 278 | #: wp-twitter-widget.php:659 279 | msgid "in reply to %s" 280 | msgstr "" 281 | 282 | #: wp-twitter-widget.php:676 283 | msgid "Reply" 284 | msgstr "" 285 | 286 | #: wp-twitter-widget.php:682 287 | msgid "Retweet" 288 | msgstr "" 289 | 290 | #: wp-twitter-widget.php:688 291 | msgid "Favorite" 292 | msgstr "" 293 | 294 | #: wp-twitter-widget.php:709 295 | msgid "Follow %s" 296 | msgstr "" 297 | 298 | #: wp-twitter-widget.php:723 299 | msgid "Brought to you by Range - A WordPress design and development company" 300 | msgstr "" 301 | 302 | #: wp-twitter-widget.php:725 303 | msgid "Powered by" 304 | msgstr "" 305 | 306 | #: wp-twitter-widget.php:794 307 | msgid "Invalid Twitter Response." 308 | msgstr "" 309 | 310 | #: wp-twitter-widget.php:804 311 | msgid "Could not connect to Twitter" 312 | msgstr "" 313 | 314 | #: wp-twitter-widget.php:886 315 | msgid "about %s year ago" 316 | msgid_plural "about %s years ago" 317 | msgstr[0] "" 318 | msgstr[1] "" 319 | 320 | #: wp-twitter-widget.php:887 321 | msgid "about %s month ago" 322 | msgid_plural "about %s months ago" 323 | msgstr[0] "" 324 | msgstr[1] "" 325 | 326 | #: wp-twitter-widget.php:888 327 | msgid "about %s week ago" 328 | msgid_plural "about %s weeks ago" 329 | msgstr[0] "" 330 | msgstr[1] "" 331 | 332 | #: wp-twitter-widget.php:889 333 | msgid "about %s day ago" 334 | msgid_plural "about %s days ago" 335 | msgstr[0] "" 336 | msgstr[1] "" 337 | 338 | #: wp-twitter-widget.php:890 339 | msgid "about %s hour ago" 340 | msgid_plural "about %s hours ago" 341 | msgstr[0] "" 342 | msgstr[1] "" 343 | 344 | #: wp-twitter-widget.php:891 345 | msgid "about %s minute ago" 346 | msgid_plural "about %s minutes ago" 347 | msgstr[0] "" 348 | msgstr[1] "" 349 | 350 | #: wp-twitter-widget.php:892 351 | msgid "about %s second ago" 352 | msgid_plural "about %s seconds ago" 353 | msgstr[0] "" 354 | msgstr[1] "" 355 | 356 | #: wp-twitter-widget.php:944 wp-twitter-widget.php:1018 357 | msgid "h:i:s A F d, Y" 358 | msgstr "" 359 | -------------------------------------------------------------------------------- /lib/oauth-util.php: -------------------------------------------------------------------------------- 1 | 0 ) { 27 | $match = $matches[0]; 28 | $header_name = $matches[2][0]; 29 | $header_content = ( isset( $matches[5] ) ) ? $matches[5][0] : $matches[4][0]; 30 | if ( preg_match( '/^oauth_/', $header_name ) || ! $only_allow_oauth_parameters ) 31 | $params[$header_name] = twpOAuthUtil::urldecode_rfc3986($header_content); 32 | 33 | $offset = $match[1] + strlen($match[0]); 34 | } 35 | 36 | if ( isset( $params['realm'] ) ) 37 | unset( $params['realm'] ); 38 | 39 | return $params; 40 | } 41 | 42 | // helper to try to sort out headers for people who aren't running apache 43 | public static function get_headers() { 44 | if ( function_exists( 'apache_request_headers' ) ) { 45 | // we need this to get the actual Authorization: header because apache 46 | // tends to tell us it doesn't exist 47 | $headers = apache_request_headers(); 48 | 49 | // sanitize the output of apache_request_headers because we always want 50 | // the keys to be Cased-Like-This and arh() returns the headers in the 51 | // same case as they are in the request 52 | $out = array(); 53 | foreach( $headers as $key => $value ) { 54 | $key = str_replace( ' ', '-', ucwords( strtolower( str_replace( '-', ' ', $key ) ) ) ); 55 | $out[$key] = $value; 56 | } 57 | } else { 58 | // otherwise we don't have apache and are just going to have to hope that 59 | // $_SERVER actually contains what we need 60 | $out = array(); 61 | if( isset( $_SERVER['CONTENT_TYPE'] ) ) 62 | $out['Content-Type'] = $_SERVER['CONTENT_TYPE']; 63 | if( isset( $_ENV['CONTENT_TYPE'] ) ) 64 | $out['Content-Type'] = $_ENV['CONTENT_TYPE']; 65 | 66 | foreach ( $_SERVER as $key => $value ) { 67 | if (substr($key, 0, 5) == "HTTP_") { 68 | // this is chaos, basically it is just there to capitalize the first 69 | // letter of every word that is not an initial HTTP and strip HTTP 70 | // code from przemek 71 | $key = str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $key, 5 ) ) ) ) ); 72 | $out[$key] = $value; 73 | } 74 | } 75 | } 76 | return $out; 77 | } 78 | 79 | // This function takes a input like a=b&a=c&d=e and returns the parsed 80 | // parameters like this array('a' => array('b','c'), 'd' => 'e') 81 | public static function parse_parameters( $input ) { 82 | if ( ! isset( $input ) || ! $input ) 83 | return array(); 84 | 85 | $pairs = explode( '&', $input ); 86 | 87 | $parsed_parameters = array(); 88 | foreach ( $pairs as $pair ) { 89 | $split = explode( '=', $pair, 2 ); 90 | $parameter = twpOAuthUtil::urldecode_rfc3986( $split[0] ); 91 | $value = isset( $split[1] ) ? twpOAuthUtil::urldecode_rfc3986( $split[1] ) : ''; 92 | 93 | if ( isset( $parsed_parameters[$parameter] ) ) { 94 | // We have already recieved parameter(s) with this name, so add to the 95 | // list of parameters with this name 96 | 97 | // This is the first duplicate, so transform scalar (string) into an 98 | // array so we can add the duplicates 99 | if ( is_scalar( $parsed_parameters[$parameter] ) ) 100 | $parsed_parameters[$parameter] = array( $parsed_parameters[$parameter] ); 101 | 102 | $parsed_parameters[$parameter][] = $value; 103 | } else { 104 | $parsed_parameters[$parameter] = $value; 105 | } 106 | } 107 | return $parsed_parameters; 108 | } 109 | 110 | public static function build_http_query($params) { 111 | if ( ! $params ) 112 | return ''; 113 | 114 | // Urlencode both keys and values 115 | $keys = twpOAuthUtil::urlencode_rfc3986( array_keys( $params ) ); 116 | $values = twpOAuthUtil::urlencode_rfc3986( array_values( $params ) ); 117 | $params = array_combine( $keys, $values ); 118 | 119 | // Parameters are sorted by name, using lexicographical byte value ordering. 120 | // Ref: Spec: 9.1.1 (1) 121 | uksort( $params, 'strcmp' ); 122 | 123 | $pairs = array(); 124 | foreach ( $params as $parameter => $value ) { 125 | if (is_array($value)) { 126 | // If two or more parameters share the same name, they are sorted by 127 | // their value Ref: Spec: 9.1.1 (1) 128 | natsort($value); 129 | foreach ($value as $duplicate_value) { 130 | $pairs[] = $parameter . '=' . $duplicate_value; 131 | } 132 | } else { 133 | $pairs[] = $parameter . '=' . $value; 134 | } 135 | } 136 | // For each parameter, the name is separated from the corresponding value by 137 | // an '=' character (ASCII code 61) Each name-value pair is separated by an 138 | // '&' character (ASCII code 38) 139 | return implode( '&', $pairs ); 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /lib/wp-twitter.php: -------------------------------------------------------------------------------- 1 | 'https://api.twitter.com/', 24 | ); 25 | $args = wp_parse_args( $args, $defaults ); 26 | $this->_consumer_key = $args['consumer-key']; 27 | $this->_consumer_secret = $args['consumer-secret']; 28 | self::$_api_url = $args['api-url']; 29 | if ( !empty( $args['token'] ) ) 30 | $this->_token = $args['token']; 31 | } 32 | 33 | public static function get_api_endpoint( $method, $format = 'json', $version = '1.1' ) { 34 | $method = preg_replace( '|[^\w/]|', '', $method ); 35 | if ( ! empty( $format ) ) 36 | $format = '.json'; 37 | if ( ! empty( $version ) ) 38 | $version .= '/'; 39 | 40 | return self::$_api_url . $version . $method . $format; 41 | } 42 | 43 | /** 44 | * Get a request_token from Twitter 45 | * 46 | * @returns a key/value array containing oauth_token and oauth_token_secret 47 | */ 48 | public function getRequestToken( $oauth_callback = null ) { 49 | $parameters = array( 50 | 'oauth_nonce' => md5( microtime() . mt_rand() ), 51 | ); 52 | if ( ! empty( $oauth_callback ) ) 53 | $parameters['oauth_callback'] = add_query_arg( array('nonce'=>$parameters['oauth_nonce']), $oauth_callback ); 54 | 55 | $request_url = self::get_api_endpoint( 'oauth/request_token', '', '' ); 56 | $this->_token = $this->send_authed_request( $request_url, 'GET', $parameters ); 57 | if ( ! is_wp_error( $this->_token ) ) 58 | $this->_token['nonce'] = $parameters['oauth_nonce']; 59 | return $this->_token; 60 | } 61 | 62 | private function _get_request_defaults() { 63 | $params = array( 64 | 'sslverify' => apply_filters( 'twp_sslverify', false ), 65 | 'body' => array( 66 | 'oauth_version' => '1.0', 67 | 'oauth_nonce' => md5( microtime() . mt_rand() ), 68 | 'oauth_timestamp' => time(), 69 | 'oauth_consumer_key' => $this->_consumer_key, 70 | ), 71 | ); 72 | 73 | if ( ! empty( $this->_token['oauth_token'] ) ) 74 | $params['body']['oauth_token'] = $this->_token['oauth_token']; 75 | 76 | return $params; 77 | } 78 | 79 | /** 80 | * Get the authorize URL 81 | * 82 | * @returns a string 83 | */ 84 | public function get_authorize_url( $screen_name = '' ) { 85 | if ( empty( $this->_token['oauth_token'] ) ) 86 | return false; 87 | 88 | $query_args = array( 89 | 'oauth_token' => $this->_token['oauth_token'] 90 | ); 91 | if ( !empty( $screen_name ) ) { 92 | $query_args['screen_name'] = $screen_name; 93 | $query_args['force_login'] = 'true'; 94 | } 95 | return add_query_arg( $query_args, self::get_api_endpoint( 'oauth/authorize', '', '' ) ); 96 | } 97 | 98 | /** 99 | * Format and sign an OAuth / API request 100 | */ 101 | public function send_authed_request( $request_url, $method, $body_parameters = array() ) { 102 | $parameters = $this->_get_request_defaults(); 103 | $parameters['body'] = wp_parse_args( $body_parameters, $parameters['body'] ); 104 | if ( ! filter_var( $request_url , FILTER_VALIDATE_URL ) ) 105 | $request_url = self::get_api_endpoint( $request_url ); 106 | $this->sign_request( $parameters, $request_url ); 107 | switch ($method) { 108 | case 'GET': 109 | $request_url = $this->get_normalized_http_url( $request_url ) . '?' . twpOAuthUtil::build_http_query( $parameters['body'] ); 110 | unset( $parameters['body'] ); 111 | $resp = wp_remote_get( $request_url, $parameters ); 112 | break; 113 | default: 114 | $parameters['method'] = $method; 115 | $resp = wp_remote_request( $request_url, $parameters ); 116 | } 117 | 118 | if ( !is_wp_error( $resp ) && $resp['response']['code'] >= 200 && $resp['response']['code'] < 300 ) { 119 | $decoded_response = json_decode( $resp['body'] ); 120 | /** 121 | * There is a problem with some versions of PHP that will cause 122 | * json_decode to return the string passed to it in certain cases 123 | * when the string isn't valid JSON. This is causing me all sorts 124 | * of pain. The solution so far is to check if the return isset() 125 | * which is the correct response if the string isn't JSON. Then 126 | * also check if a string is returned that has an = in it and if 127 | * that's the case assume it's a string that needs to fall back to 128 | * using wp_parse_args() 129 | * @see https://bugs.php.net/bug.php?id=45989 130 | * @see https://github.com/OpenRange/twitter-widget-pro/pull/8 131 | */ 132 | if ( ( ! isset( $decoded_response ) && ! empty( $resp['body'] ) ) || ( is_string( $decoded_response ) && false !== strpos( $resp['body'], '=' ) ) ) 133 | $decoded_response = wp_parse_args( $resp['body'] ); 134 | return $decoded_response; 135 | } else { 136 | if ( is_wp_error( $resp ) ) 137 | return $resp; 138 | return new WP_Error( $resp['response']['code'], 'Could not recognize the response from Twitter' ); 139 | } 140 | } 141 | 142 | /** 143 | * parses the url and rebuilds it to be 144 | * scheme://host/path 145 | */ 146 | public function get_normalized_http_url( $url ) { 147 | $parts = parse_url( $url ); 148 | 149 | $scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http'; 150 | $port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80'); 151 | $host = (isset($parts['host'])) ? strtolower($parts['host']) : ''; 152 | $path = (isset($parts['path'])) ? $parts['path'] : ''; 153 | 154 | if (($scheme == 'https' && $port != '443') || ($scheme == 'http' && $port != '80')) 155 | $host = "$host:$port"; 156 | 157 | return "$scheme://$host$path"; 158 | } 159 | 160 | public function sign_request( &$parameters, $request_url, $method = 'GET' ) { 161 | $parameters['body']['oauth_signature_method'] = 'HMAC-SHA1'; 162 | $parameters['body']['oauth_signature'] = $this->build_signature( $parameters['body'], $request_url, $method ); 163 | } 164 | 165 | /** 166 | * The request parameters, sorted and concatenated into a normalized string. 167 | * @return string 168 | */ 169 | public function get_signable_parameters( $parameters ) { 170 | // Remove oauth_signature if present 171 | // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.") 172 | if ( isset( $parameters['oauth_signature'] ) ) 173 | unset( $parameters['oauth_signature'] ); 174 | 175 | return twpOAuthUtil::build_http_query( $parameters ); 176 | } 177 | 178 | public function build_signature( $parameters, $request_url, $method = 'GET' ) { 179 | $parts = array( 180 | $method, 181 | $this->get_normalized_http_url( $request_url ), 182 | $this->get_signable_parameters( $parameters ) 183 | ); 184 | 185 | $parts = twpOAuthUtil::urlencode_rfc3986($parts); 186 | 187 | $base_string = implode('&', $parts); 188 | $token_secret = ''; 189 | 190 | if ( ! empty( $this->_token['oauth_token_secret'] ) ) 191 | $token_secret = $this->_token['oauth_token_secret']; 192 | 193 | $key_parts = array( 194 | $this->_consumer_secret, 195 | $token_secret, 196 | ); 197 | 198 | $key_parts = twpOAuthUtil::urlencode_rfc3986( $key_parts ); 199 | $key = implode( '&', $key_parts ); 200 | 201 | return base64_encode( hash_hmac( 'sha1', $base_string, $key, true ) ); 202 | } 203 | 204 | /** 205 | * Exchange request token and secret for an access token and 206 | * secret, to sign API calls. 207 | * 208 | * @returns array containing oauth_token, 209 | * oauth_token_secret, 210 | * user_id 211 | * screen_name 212 | */ 213 | function get_access_token( $oauth_verifier = false ) { 214 | $parameters = array( 215 | 'oauth_nonce' => md5( microtime() . mt_rand() ), 216 | ); 217 | if ( ! empty( $oauth_verifier ) ) 218 | $parameters['oauth_verifier'] = $oauth_verifier; 219 | 220 | $request_url = self::get_api_endpoint( 'oauth/access_token', '', '' ); 221 | $this->_token = $this->send_authed_request( $request_url, 'GET', $parameters ); 222 | return $this->_token; 223 | } 224 | 225 | public function set_token( $token ) { 226 | $this->_token = $token; 227 | } 228 | } 229 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | === Twitter Widget === 2 | 3 | Contributors: fossasia 4 | Tags: loklak, feed, tweet feed, loklak API, twitter, widget, feed 5 | Requires at least: 3.0 6 | Tested up to: 4.3 7 | Stable tag: 1.0 8 | 9 | A widget that properly handles twitter feeds, including parsing @username, #hashtags, and URLs into links. 10 | 11 | == Description == 12 | 13 | A widget that properly handles twitter feeds, including parsing @username, #hashtag, and URLs into links. It supports displaying profiles images, and even lets you control whether to display the time and date of a tweet or how log ago it happened (about 5 hours ago, etc). 14 | 15 | 16 | == Installation == 17 | 18 | 1. Use automatic installer to install and active the plugin. 19 | 1. You should see a notice appear in your admin that links you to the settings page. 20 | 1. Follow the instructions to setup your Twitter app and authenticate your account (an unfortunate step made necessary by Twitter's API changes). 21 | 1. In WordPress admin go to 'Appearance' -> 'Widgets' and add "Twitter Widget" to one of your widget-ready areas of your site 22 | 23 | == Frequently Asked Questions == 24 | 25 | = Can I follow more than one feed? = 26 | 27 | Absolutely, each instance of the widget can have different settings and track different feeds. 28 | 29 | = I get an error similar to "Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /.../wp-twitter-widget.php on line ##" when I try to activate the plugin. Is your plugin broke? = 30 | 31 | No. This error occurs because the plugin requires PHP 5 and you're running PHP 4. Most hosts offer PHP5 but sometimes you have to enable it in your control panel, through .htaccess, or by asking them. There may be instructions for your specific host in the Switching to PHP5 article in the codex. 32 | 33 | = How can I add this widget to a post or page? = 34 | 35 | You can now use the twitter-widget shortcode to embed this widget into a post or 36 | page. The simplest form of this would be `[twitter-widget username="yourTwitterUsername"]` 37 | 38 | = How exactly do you use the twitter-widget shortcode? = 39 | 40 | The simplest form of this would be `[twitter-widget username="yourTwitterUsername"]` 41 | However, there are more things you can control. 42 | 43 | * username - A Twitter username to pull a feed of Tweets from. The user needs to be authenticated. 44 | * list - A Twitter list id owned by one of the users you've authenticated. 45 | * before_widget - This is inserted before the widget. 46 | * after_widget - This is inserted after the widget, and is often used to close tags opened in before_widget 47 | * before_title - This is inserted before the title and defults to

48 | * after_title - This is inserted after the title and defults to

49 | * errmsg - This is the error message that displays if there's a problem connecting to Twitter 50 | * hiderss - set to true to hide the RSS icon (defaults to false) 51 | * hidereplies - set to true to hide @replies that are sent from the account (defaults to false) 52 | * hidefrom - set to true to hide the "from ____" link that shows the application the tweet was sent from (defaults to false) 53 | * avatar - set to one of the available sizes (mini, normal, bigger, or original) (defaults to none) 54 | * targetBlank - set to true to have all links open in a new window (defaults to false) 55 | * showXavisysLink - set to true to display a link to the Twitter Widget page. We greatly appreciate your support in linking to this page so others can find this useful plugin too! (defaults to false) 56 | * items - The number of items to display (defaults to 10) 57 | * fetchTimeOut - The number of seconds to wait for a response from Twitter (defaults to 2) 58 | * showts - Number of seconds old a tweet has to be to show ___ ago rather than a date/time (defaults to 86400 seconds which is 24 hours) 59 | * dateFormat - The format for dates (defaults to'h:i:s A F d, Y' or it's localization) 60 | * title - The title of the widget (defaults to 'Twitter: Username') 61 | * showretweets - set to true to show retweets, false to hide them (defaults to true) 62 | * showintents - set to true to show the reply, retweet, and favorite links for each tweet, false to hide them (defaults to true) 63 | * showfollow - set to true to show the follow button after tweets, false to hide it (defaults to true) 64 | 65 | You can see these put into action by trying something like: 66 | 67 | * `[twitter-widget username="wpinformer" before_widget="
" after_widget="
" before_title="

" after_title="

" errmsg="Uh oh!" hiderss="true" hidereplies="true" targetBlank="true" avatar="1" showXavisysLink="1" items="3" showts="60"]Your Title[/twitter-widget]` 68 | * `[twitter-widget username="wpinformer" before_widget="
" after_widget="
" before_title="

" after_title="

" errmsg="Uh oh!" hiderss="true" hidereplies="true" targetBlank="true" avatar="1" showXavisysLink="1" items="3" showts="60" title="Your Title"]` 69 | * `[twitter-widget username="wpinformer"]` 70 | 71 | = How can I style it to look nicer? = 72 | 73 | There are plenty of CSS classes throughout the HTML that is generated, and you can use those to style things. Here is some sample CSS that I use with the Essence Theme. You'll need to get the "Everything" sprite from Twitter's Image Resources. 74 | 75 | ``` 76 | .widget_twitter div { 77 | padding:0; 78 | } 79 | 80 | .widget_twitter ul li { 81 | margin-bottom:5px; 82 | } 83 | 84 | .widget_twitter .follow-button, 85 | .widget_twitter .xavisys-link { 86 | margin:0 10px 10px 25px; 87 | } 88 | 89 | .widget_twitter .entry-meta { 90 | display:block; 91 | font-size:80%; 92 | } 93 | 94 | .widget_twitter .intent-meta a { 95 | background: url(images/everything-spritev2.png); /** from Twitter ressources */ 96 | display: inline-block; 97 | height: 16px; 98 | text-indent: -9999px; 99 | width: 16px; 100 | } 101 | .widget_twitter .intent-meta a.in-reply-to { 102 | background-position: 0 center; 103 | } 104 | .widget_twitter .intent-meta a:hover.in-reply-to { 105 | background-position: -16px center; 106 | } 107 | .widget_twitter .intent-meta a.favorite { 108 | background-position: -32px center; 109 | } 110 | .widget_twitter .intent-meta a:hover.favorite { 111 | background-position: -48px center; 112 | } 113 | .widget_twitter .intent-meta a.retweet { 114 | background-position: -80px center; 115 | } 116 | .widget_twitter .intent-meta a:hover.retweet { 117 | background-position: -96px center; 118 | } 119 | ``` 120 | 121 | = Why can't I display a friends feed anymore? = 122 | 123 | Aparently the database queries required to display the friends feed was causing twitter to crash, so they removed it. Unfortunately, this is outside my control. 124 | 125 | == Screenshots == 126 | 127 | 1. To use the widget, go to Appearance -> Widgets and Add "Twitter Widget" widget. 128 | 129 | ![Widget Appearance](./assets/images/screenshot-1.png) 130 | 131 | 2. Each widget has settings that need to be set, so the next step is to click the down arrow on the right of the newly added widget and adjust all the settings. When you're done click "Save" 132 | 133 | ![Settings](./assets/images/screenshot-2.png) 134 | 135 | 3. This is what the widget looks like in the default theme with no added styles. 136 | 137 | ![Default Design](./assets/images/screenshot-3.png) 138 | 139 | 4. By using some (X)HTML in the title element and adding a few styles and a background image, you could make it look like this. 140 | 141 | ![Styling](./assets/images/screenshot-4.png) 142 | 143 | == Upgrade Notice == 144 | 145 | = 1.0 = 146 | A whole new version! 147 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Twitter Feed Plugin === 2 | Contributors: fossasia, sopankhosla 3 | Tags: twitter, widget, feed, loklak, loklak API 4 | Requires at least: 3.0 5 | Tested up to: 4.6.2 6 | Stable tag: 1.0 7 | 8 | A widget that properly handles twitter feeds, including parsing @username, #hashtags, and URLs into links. 9 | 10 | == Description == 11 | 12 | A widget that properly handles twitter feeds, including parsing @username, #hashtag, and URLs into links. It supports displaying profiles images, and even lets you control whether to display the time and date of a tweet or how log ago it happened (about 5 hours ago, etc). 13 | 14 | Tweet Feed Widget 15 | Brought to you by FOSSASIA 16 | 17 | == Installation == 18 | 19 | 1. Use automatic installer to install and active the plugin. 20 | 1. You should see a notice appear in your admin that links you to the settings page. 21 | 1. Use Loklak API or Follow the instructions to setup your Twitter app and authenticate your account (an unfortunate step made necessary by Twitter's API changes). 22 | 1. In WordPress admin go to 'Appearance' -> 'Widgets' and add "Tweet Feed Widget" to one of your widget-ready areas of your site 23 | 24 | == Frequently Asked Questions == 25 | 26 | = Can I follow more than one feed? = 27 | 28 | Absolutely, each instance of the widget can have different settings and track different feeds. 29 | 30 | = I get an error similar to "Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /.../wp-twitter-widget.php on line ##" when I try to activate the plugin. Is your plugin broke? = 31 | 32 | No. This error occurs because the plugin requires PHP 5 and you're running PHP 4. Most hosts offer PHP5 but sometimes you have to enable it in your control panel, through .htaccess, or by asking them. There may be instructions for your specific host in the Switching to PHP5 article in the codex. 33 | 34 | = How can I add this widget to a post or page? = 35 | 36 | You can now use the twitter-widget shortcode to embed this widget into a post or 37 | page. The simplest form of this would be `[twitter-widget username="yourTwitterUsername"]` 38 | 39 | = How exactly do you use the twitter-widget shortcode? = 40 | The simplest form of this would be `[twitter-widget username="yourTwitterUsername"]` 41 | However, there are more things you can control. 42 | 43 | * username - A Twitter username to pull a feed of Tweets from. The user needs to be authenticated. 44 | * list - A Twitter list id owned by one of the users you've authenticated. 45 | * before_widget - This is inserted before the widget. 46 | * after_widget - This is inserted after the widget, and is often used to close tags opened in before_widget 47 | * before_title - This is inserted before the title and defults to

48 | * after_title - This is inserted after the title and defults to

49 | * errmsg - This is the error message that displays if there's a problem connecting to Twitter 50 | * hiderss - set to true to hide the RSS icon (defaults to false) 51 | * hidereplies - set to true to hide @replies that are sent from the account (defaults to false) 52 | * hidefrom - set to true to hide the "from ____" link that shows the application the tweet was sent from (defaults to false) 53 | * avatar - set to one of the available sizes (mini, normal, bigger, or original) (defaults to none) 54 | * targetBlank - set to true to have all links open in a new window (defaults to false) 55 | * showXavisysLink - set to true to display a link to the Tweet Feed Widget page. We greatly appreciate your support in linking to this page so others can find this useful plugin too! (defaults to false) 56 | * items - The number of items to display (defaults to 10) 57 | * fetchTimeOut - The number of seconds to wait for a response from Twitter (defaults to 2) 58 | * showts - Number of seconds old a tweet has to be to show ___ ago rather than a date/time (defaults to 86400 seconds which is 24 hours) 59 | * dateFormat - The format for dates (defaults to'h:i:s A F d, Y' or it's localization) 60 | * title - The title of the widget (defaults to 'Twitter: Username') 61 | * showretweets - set to true to show retweets, false to hide them (defaults to true) 62 | * showintents - set to true to show the reply, retweet, and favorite links for each tweet, false to hide them (defaults to true) 63 | * showfollow - set to true to show the follow button after tweets, false to hide it (defaults to true) 64 | 65 | You can see these put into action by trying something like: 66 | 67 | * `[twitter-widget username="wpinformer" before_widget="
" after_widget="
" before_title="

" after_title="

" errmsg="Uh oh!" hiderss="true" hidereplies="true" targetBlank="true" avatar="1" showXavisysLink="1" items="3" showts="60"]Your Title[/twitter-widget]` 68 | * `[twitter-widget username="wpinformer" before_widget="
" after_widget="
" before_title="

" after_title="

" errmsg="Uh oh!" hiderss="true" hidereplies="true" targetBlank="true" avatar="1" showXavisysLink="1" items="3" showts="60" title="Your Title"]` 69 | * `[twitter-widget username="wpinformer"]` 70 | 71 | = How can I style it to look nicer? = 72 | 73 | There are plenty of CSS classes throughout the HTML that is generated, and you can use those to style things. Here is some sample CSS that I use with the Essence Theme. You'll need to get the "Everything" sprite from Twitter's Image Resources. 74 | ` 75 | .widget_twitter div { 76 | padding:0; 77 | } 78 | 79 | .widget_twitter ul li { 80 | margin-bottom:5px; 81 | } 82 | 83 | .widget_twitter .follow-button, 84 | .widget_twitter .xavisys-link { 85 | margin:0 10px 10px 25px; 86 | } 87 | 88 | .widget_twitter .entry-meta { 89 | display:block; 90 | font-size:80%; 91 | } 92 | 93 | .widget_twitter .intent-meta a { 94 | background: url(images/everything-spritev2.png); /** from Twitter ressources */ 95 | display: inline-block; 96 | height: 16px; 97 | text-indent: -9999px; 98 | width: 16px; 99 | } 100 | .widget_twitter .intent-meta a.in-reply-to { 101 | background-position: 0 center; 102 | } 103 | .widget_twitter .intent-meta a:hover.in-reply-to { 104 | background-position: -16px center; 105 | } 106 | .widget_twitter .intent-meta a.favorite { 107 | background-position: -32px center; 108 | } 109 | .widget_twitter .intent-meta a:hover.favorite { 110 | background-position: -48px center; 111 | } 112 | .widget_twitter .intent-meta a.retweet { 113 | background-position: -80px center; 114 | } 115 | .widget_twitter .intent-meta a:hover.retweet { 116 | background-position: -96px center; 117 | } 118 | ` 119 | 120 | = Why can't I display a friends feed anymore? = 121 | 122 | Aparently the database queries required to display the friends feed was causing twitter to crash, so they removed it. Unfortunately, this is outside my control. 123 | 124 | == Screenshots == 125 | 126 | 1. To use the widget, go to Appearance -> Widgets and Add "Tweet Feed Widget" widget. 127 | 2. Each widget has settings that need to be set, so the next step is to click the down arrow on the right of the newly added widget and adjust all the settings. When you're done click "Save" 128 | 3. This is what the widget looks like in the default theme with no added styles. 129 | 4. By using some (X)HTML in the title element and adding a few styles and a background image, you could make it look like this. 130 | 131 | == Upgrade Notice == 132 | 133 | First version of the plugin! 134 | 135 | == Changelog == 136 | 137 | = 1.0 = 138 | * Original Version 139 | -------------------------------------------------------------------------------- /tlc-transients.php: -------------------------------------------------------------------------------- 1 | expires_in( $update[2] ) 18 | ->extend_on_fail( $update[5] ) 19 | ->updates_with( $update[3], (array) $update[4] ) 20 | ->set_lock( $update[0] ) 21 | ->fetch_and_cache(); 22 | } 23 | exit(); 24 | } 25 | } 26 | } 27 | 28 | new TLC_Transient_Update_Server; 29 | } 30 | 31 | if ( !class_exists( 'TLC_Transient' ) ) { 32 | class TLC_Transient { 33 | public $key; 34 | public $raw_key; 35 | private $lock; 36 | private $callback; 37 | private $params; 38 | private $expiration = 0; 39 | private $extend_on_fail = 0; 40 | private $force_background_updates = false; 41 | 42 | public function __construct( $key ) { 43 | $this->raw_key = $key; 44 | $this->key = md5( $key ); 45 | } 46 | 47 | private function raw_get() { 48 | return get_transient( 'tlc__' . $this->key ); 49 | } 50 | 51 | public function get() { 52 | $data = $this->raw_get(); 53 | if ( false === $data ) { 54 | // Hard expiration 55 | if ( $this->force_background_updates ) { 56 | // In this mode, we never do a just-in-time update 57 | // We return false, and schedule a fetch on shutdown 58 | $this->schedule_background_fetch(); 59 | return false; 60 | } else { 61 | // Bill O'Reilly mode: "We'll do it live!" 62 | return $this->fetch_and_cache(); 63 | } 64 | } else { 65 | // Soft expiration 66 | if ( $data[0] !== 0 && $data[0] < time() ) 67 | $this->schedule_background_fetch(); 68 | return $data[1]; 69 | } 70 | } 71 | 72 | private function schedule_background_fetch() { 73 | if ( !$this->has_update_lock() ) { 74 | set_transient( 'tlc_up__' . $this->key, array( $this->new_update_lock(), $this->raw_key, $this->expiration, $this->callback, $this->params, $this->extend_on_fail ), 300 ); 75 | add_action( 'shutdown', array( $this, 'spawn_server' ) ); 76 | } 77 | return $this; 78 | } 79 | 80 | public function spawn_server() { 81 | $server_url = home_url( '/?tlc_transients_request' ); 82 | wp_remote_post( $server_url, array( 'body' => array( '_tlc_update' => $this->lock, 'key' => $this->raw_key ), 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) ); 83 | } 84 | 85 | public function fetch_and_cache() { 86 | // If you don't supply a callback, we can't update it for you! 87 | if ( empty( $this->callback ) ) 88 | return false; 89 | if ( $this->has_update_lock() && !$this->owns_update_lock() ) 90 | return; // Race... let the other process handle it 91 | try { 92 | $data = call_user_func_array( $this->callback, $this->params ); 93 | $this->set( $data ); 94 | } catch( Exception $e ) { 95 | if ( $this->extend_on_fail > 0 ) { 96 | $data = $this->raw_get(); 97 | if ( $data ) { 98 | $data = $data[1]; 99 | $old_expiration = $this->expiration; 100 | $this->expiration = $this->extend_on_fail; 101 | $this->set( $data ); 102 | $this->expiration = $old_expiration; 103 | } 104 | } else { 105 | $data = false; 106 | } 107 | } 108 | $this->release_update_lock(); 109 | return $data; 110 | } 111 | 112 | public function set( $data ) { 113 | // We set the timeout as part of the transient data. 114 | // The actual transient has a far-future TTL. This allows for soft expiration. 115 | $expiration = ( $this->expiration > 0 ) ? time() + $this->expiration : 0; 116 | $transient_expiration = ( $this->expiration > 0 ) ? $this->expiration + 31536000 : 0; // 31536000 = 60*60*24*365 ~= one year 117 | set_transient( 'tlc__' . $this->key, array( $expiration, $data ), $transient_expiration ); 118 | return $this; 119 | } 120 | 121 | public function updates_with( $callback, $params = array() ) { 122 | $this->callback = $callback; 123 | if ( is_array( $params ) ) 124 | $this->params = $params; 125 | return $this; 126 | } 127 | 128 | private function new_update_lock() { 129 | $this->lock = uniqid( 'tlc_lock_', true ); 130 | return $this->lock; 131 | } 132 | 133 | private function release_update_lock() { 134 | delete_transient( 'tlc_up__' . $this->key ); 135 | } 136 | 137 | private function get_update_lock() { 138 | $lock = get_transient( 'tlc_up__' . $this->key ); 139 | if ( $lock ) 140 | return $lock[0]; 141 | else 142 | return false; 143 | } 144 | 145 | private function has_update_lock() { 146 | return (bool) $this->get_update_lock(); 147 | } 148 | 149 | private function owns_update_lock() { 150 | return $this->lock == $this->get_update_lock(); 151 | } 152 | 153 | public function expires_in( $seconds ) { 154 | $this->expiration = (int) $seconds; 155 | return $this; 156 | } 157 | 158 | public function extend_on_fail( $seconds ) { 159 | $this->extend_on_fail = (int) $seconds; 160 | return $this; 161 | } 162 | 163 | public function set_lock( $lock ) { 164 | $this->lock = $lock; 165 | return $this; 166 | } 167 | 168 | public function background_only() { 169 | $this->force_background_updates = true; 170 | return $this; 171 | } 172 | } 173 | } 174 | 175 | // API so you don't have to use "new" 176 | if ( !function_exists( 'tlc_transient' ) ) { 177 | function tlc_transient( $key ) { 178 | $transient = new TLC_Transient( $key ); 179 | return $transient; 180 | } 181 | } 182 | 183 | // Example: 184 | /* 185 | function sample_fetch_and_append( $url, $append ) { 186 | $f = wp_remote_retrieve_body( wp_remote_get( $url, array( 'timeout' => 30 ) ) ); 187 | $f .= $append; 188 | return $f; 189 | } 190 | 191 | function test_tlc_transient() { 192 | $t = tlc_transient( 'foo' ) 193 | ->expires_in( 30 ) 194 | ->background_only() 195 | ->updates_with( 'sample_fetch_and_append', array( 'http://coveredwebservices.com/tools/long-running-request.php', ' appendfooparam ' ) ) 196 | ->get(); 197 | var_dump( $t ); 198 | if ( !$t ) 199 | echo "The request is false, because it isn't yet in the cache. It'll be there in about 10 seconds. Keep refreshing!"; 200 | } 201 | 202 | add_action( 'wp_footer', 'test_tlc_transient' ); 203 | */ 204 | -------------------------------------------------------------------------------- /twitter-plugin-framework.php: -------------------------------------------------------------------------------- 1 | _init(); 77 | 78 | $this->_get_settings(); 79 | if ( is_callable( array($this, '_post_settings_init') ) ) 80 | $this->_post_settings_init(); 81 | 82 | add_filter( 'init', array( $this, 'init_locale' ) ); 83 | add_action( 'admin_init', array( $this, 'register_options' ) ); 84 | add_filter( 'plugin_action_links', array( $this, 'add_plugin_page_links' ), 10, 2 ); 85 | add_filter( 'plugin_row_meta', array( $this, 'add_plugin_meta_links' ), 10, 2 ); 86 | add_action( 'admin_menu', array( $this, 'register_options_page' ) ); 87 | if ( is_callable(array( $this, 'add_options_meta_boxes' )) ) 88 | add_action( 'admin_init', array( $this, 'add_options_meta_boxes' ) ); 89 | 90 | //add_action( 'admin_init', array( $this, 'add_default_options_meta_boxes' ) ); 91 | add_action( 'admin_print_scripts', array( $this,'admin_print_scripts' ) ); 92 | add_action( 'admin_enqueue_scripts', array( $this,'admin_enqueue_scripts' ) ); 93 | 94 | add_action ( 'in_plugin_update_message-'.$this->_file , array ( $this , 'changelog' ), null, 2 ); 95 | add_action('admin_enqueue_scripts', array( $this, 'add_wp_twitter_widget_script' ) ); 96 | } 97 | 98 | public function init_locale() { 99 | $lang_dir = basename(dirname(__FILE__)) . '/languages'; 100 | load_plugin_textdomain( $this->_slug, 'wp-content/plugins/' . $lang_dir, $lang_dir); 101 | } 102 | 103 | protected function _get_settings() { 104 | foreach ( $this->_optionNames as $opt ) { 105 | $this->_settings[$opt] = apply_filters($this->_slug.'-opt-'.$opt, get_option($opt)); 106 | } 107 | } 108 | 109 | public function register_options() { 110 | foreach ( $this->_optionNames as $opt ) { 111 | if ( !empty($this->_optionCallbacks[$opt]) && is_callable( $this->_optionCallbacks[$opt] ) ) { 112 | $callback = $this->_optionCallbacks[$opt]; 113 | } else { 114 | $callback = ''; 115 | } 116 | register_setting( $this->_optionGroup, $opt, $callback ); 117 | } 118 | } 119 | 120 | public function changelog ($pluginData, $newPluginData) { 121 | require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); 122 | 123 | $plugin = plugins_api( 'plugin_information', array( 'slug' => $newPluginData->slug ) ); 124 | 125 | if ( !$plugin || is_wp_error( $plugin ) || empty( $plugin->sections['changelog'] ) ) { 126 | return; 127 | } 128 | 129 | $changes = $plugin->sections['changelog']; 130 | $pos = strpos( $changes, '

' . preg_replace('/[^\d\.]/', '', $pluginData['Version'] ) ); 131 | if ( $pos !== false ) { 132 | $changes = trim( substr( $changes, 0, $pos ) ); 133 | } 134 | 135 | $replace = array( 136 | '
    ' => '
      ', 137 | '

      ' => '

      ', 138 | ); 139 | echo str_replace( array_keys($replace), $replace, $changes ); 140 | } 141 | 142 | public function register_options_page() { 143 | if ( apply_filters( 'rpf-options_page-'.$this->_slug, true ) && is_callable( array( $this, 'options_page' ) ) ) 144 | add_options_page( $this->_pageTitle, $this->_menuTitle, $this->_accessLevel, $this->_hook, array( $this, 'options_page' ) ); 145 | } 146 | 147 | protected function _filter_boxes_main($boxName) { 148 | if ( 'main' == strtolower($boxName) ) 149 | return false; 150 | 151 | return $this->_filter_boxes_helper($boxName, 'main'); 152 | } 153 | 154 | protected function _filter_boxes_sidebar($boxName) { 155 | return $this->_filter_boxes_helper($boxName, 'sidebar'); 156 | } 157 | 158 | protected function _filter_boxes_helper($boxName, $test) { 159 | return ( strpos( strtolower($boxName), strtolower($test) ) !== false ); 160 | } 161 | 162 | public function options_page() { 163 | global $wp_meta_boxes; 164 | $allBoxes = array_keys( $wp_meta_boxes['twitter-'.$this->_slug] ); 165 | $mainBoxes = array_filter( $allBoxes, array( $this, '_filter_boxes_main' ) ); 166 | unset($mainBoxes['main']); 167 | sort($mainBoxes); 168 | $sidebarBoxes = array_filter( $allBoxes, array( $this, '_filter_boxes_sidebar' ) ); 169 | unset($sidebarBoxes['sidebar']); 170 | sort($sidebarBoxes); 171 | 172 | $main_width = empty( $sidebarBoxes )? '100%' : '75%'; 173 | ?> 174 |
      175 | screen_icon_link(); ?> 176 |

      _pageTitle); ?>

      177 |
      178 |
      179 | 183 |
      > 184 | _optionGroup ); 186 | do_meta_boxes( 'twitter-' . $this->_slug, 'main', '' ); 187 | if ( apply_filters( 'rpf-show-general-settings-submit'.$this->_slug, true ) ) { 188 | ?> 189 |

      190 | 191 |

      192 | 195 |
      196 | _slug, $context, '' ); 200 | } 201 | ?> 202 |
      203 | 206 |
      207 | _slug, $context, '' ); 210 | } 211 | ?> 212 |
      213 | 216 |
      217 |
      218 | _file ) { 223 | // Add Widget Page link to our plugin 224 | $link = $this->get_options_link(); 225 | array_unshift( $links, $link ); 226 | } 227 | return $links; 228 | } 229 | 230 | public function add_plugin_meta_links( $meta, $file ){ 231 | if ( $file == $this->_file ) 232 | $meta[] = $this->get_plugin_link(__('Rate Plugin')); 233 | return $meta; 234 | } 235 | 236 | public function get_plugin_link( $linkText = '' ) { 237 | if ( empty($linkText) ) 238 | $linkText = __( 'Give it a good rating on WordPress.org.', $this->_slug ); 239 | return "{$linkText}"; 240 | } 241 | 242 | public function get_plugin_url() { 243 | return 'http://wordpress.org/extend/plugins/' . $this->_slug; 244 | } 245 | 246 | public function get_options_link( $linkText = '' ) { 247 | if ( empty($linkText) ) { 248 | $linkText = __( 'Settings', $this->_slug ); 249 | } 250 | return '' . $linkText . ''; 251 | } 252 | 253 | public function get_options_url() { 254 | return admin_url( 'options-general.php?page=' . $this->_hook ); 255 | } 256 | 257 | public function admin_enqueue_scripts() { 258 | if (isset($_GET['page']) && $_GET['page'] == $this->_hook) { 259 | wp_enqueue_style('dashboard'); 260 | } 261 | } 262 | 263 | // public function add_default_options_meta_boxes() { 264 | // if ( apply_filters( 'show-twitter-like-this', true ) ) 265 | // add_meta_box( $this->_slug . '-like-this', __('Like this Plugin?', $this->_slug), array($this, 'like_this_meta_box'), 'twitter-' . $this->_slug, 'sidebar'); 266 | 267 | // if ( apply_filters( 'show-twitter-support', true ) ) 268 | // add_meta_box( $this->_slug . '-support', __('Need Support?', $this->_slug), array($this, 'support_meta_box'), 'twitter-' . $this->_slug, 'sidebar'); 269 | // if ( apply_filters( 'show-twitter-feed', true ) ) 270 | // add_meta_box( $this->_slug . '-twitter-feed', __('Latest news from twitter', $this->_slug), array($this, 'twitter_feed_meta_box'), 'twitter-' . $this->_slug, 'sidebar'); 271 | // } 272 | 273 | public function screen_icon_link($name = 'twitter') { 274 | $link = ''; 275 | if ( function_exists( 'get_screen_icon' ) ) { 276 | $link .= get_screen_icon( $name ); 277 | } else { 278 | ob_start(); 279 | screen_icon($name); 280 | $link .= ob_get_clean(); 281 | } 282 | $link .= ''; 283 | echo apply_filters('rpf-screen_icon_link', $link, $name ); 284 | } 285 | 286 | public function admin_print_scripts() { 287 | if (isset($_GET['page']) && $_GET['page'] == $this->_hook) { 288 | wp_enqueue_script('postbox'); 289 | wp_enqueue_script('dashboard'); 290 | } 291 | } 292 | 293 | public function add_wp_twitter_widget_script() { 294 | wp_register_script('twitter_widget_script', plugin_dir_url( __FILE__ ).'assets/js/wp-tweet-feed-widget.js', array('jquery')); 295 | wp_enqueue_script('twitter_widget_script'); 296 | 297 | } 298 | } 299 | } 300 | -------------------------------------------------------------------------------- /wp-twitter-widget.php: -------------------------------------------------------------------------------- 1 | _slug = 'tweet-feed-widget'; 40 | $wpTwitterWidget = wpTwitterWidget::getInstance(); 41 | $widget_ops = array( 42 | 'classname' => 'widget_twitter', 43 | 'description' => __( 'Follow a Twitter Feed', $wpTwitterWidget->get_slug() ) 44 | ); 45 | $control_ops = array( 46 | 'width' => 400, 47 | 'height' => 350, 48 | 'id_base' => 'twitter' 49 | ); 50 | $name = __( 'Tweet Feed Widget', $wpTwitterWidget->get_slug() ); 51 | 52 | parent::__construct( 'twitter', $name, $widget_ops, $control_ops ); 53 | } 54 | 55 | private function _getInstanceSettings ( $instance ) { 56 | $wpTwitterWidget = wpTwitterWidget::getInstance(); 57 | return $wpTwitterWidget->getSettings( $instance ); 58 | } 59 | 60 | public function form( $instance ) { 61 | $instance = $this->_getInstanceSettings( $instance ); 62 | 63 | $wpTwitterWidget = wpTwitterWidget::getInstance(); 64 | $users = $wpTwitterWidget->get_users_list( true ); 65 | $lists = $wpTwitterWidget->get_lists(); 66 | 67 | $default_settings = $wpTwitterWidget->getSettings( array() ); 68 | 69 | ?> 70 |

      71 | 72 | 75 | 76 | 80 | 93 | 96 |

      97 |

      98 | 99 | 113 |

      114 | 'authorize', 119 | 'screen_name' => $instance['username'], 120 | ); 121 | $authorize_user_url = wp_nonce_url( add_query_arg( $query_args, $wpTwitterWidget->get_options_url() ), 'authorize' ); 122 | ?> 123 |

      124 | 125 | _slug ); ?> 126 | 127 |

      128 | 132 |

      133 | 134 | 135 |

      136 |

      137 | 138 | 145 |

      146 |

      147 | 148 | 155 |

      156 |

      157 | 158 | /> 159 | 160 |

      161 |

      162 | 163 | /> 164 | 165 |

      166 |

      167 | 168 | /> 169 | 170 |

      171 |

      172 | 173 | /> 174 | 175 |

      176 |

      177 | 178 | /> 179 | 180 |

      181 |

      182 | 183 | 184 |

      185 |

      186 | 187 | 196 |

      197 |

      198 | 199 | 200 |

      201 |

      202 | 203 | /> 204 | 205 |

      206 |

      get_support_forum_link(); ?>

      207 | 215 | _getInstanceSettings( $new_instance ); 221 | 222 | // Clean up the free-form areas 223 | $instance['title'] = stripslashes( $new_instance['title'] ); 224 | $instance['errmsg'] = stripslashes( $new_instance['errmsg'] ); 225 | 226 | // If the current user isn't allowed to use unfiltered HTML, filter it 227 | if ( !current_user_can( 'unfiltered_html' ) ) { 228 | $instance['title'] = strip_tags( $new_instance['title'] ); 229 | $instance['errmsg'] = strip_tags( $new_instance['errmsg'] ); 230 | } 231 | 232 | return $instance; 233 | } 234 | 235 | public function flush_widget_cache() { 236 | wp_cache_delete( 'widget_twitter_widget', 'widget' ); 237 | } 238 | 239 | public function widget( $args, $instance ) { 240 | $instance = $this->_getInstanceSettings( $instance ); 241 | $wpTwitterWidget = wpTwitterWidget::getInstance(); 242 | echo $wpTwitterWidget->display( wp_parse_args( $instance, $args ) ); 243 | } 244 | } 245 | 246 | 247 | /** 248 | * wpTwitterWidget is the class that handles everything outside the widget. This 249 | * includes filters that modify tweet content for things like linked usernames. 250 | * It also helps us avoid name collisions. 251 | */ 252 | class wpTwitterWidget extends TwitterPlugin { 253 | /** 254 | * @var wpTwitter 255 | */ 256 | private $_wp_twitter_oauth; 257 | 258 | /** 259 | * @var wpTwitterWidget - Static property to hold our singleton instance 260 | */ 261 | static $instance = false; 262 | 263 | protected function _init() { 264 | require_once( 'lib/wp-twitter.php' ); 265 | 266 | $this->_hook = 'tweetFeedplugin'; 267 | $this->_file = plugin_basename( __FILE__ ); 268 | $this->_pageTitle = __( 'Tweet Feed Widget', $this->_slug ); 269 | $this->_menuTitle = __( 'Tweet Feed Widget', $this->_slug ); 270 | $this->_accessLevel = 'manage_options'; 271 | $this->_optionGroup = 'twp-options'; 272 | $this->_optionNames = array( 'twp' ); 273 | $this->_optionCallbacks = array( 'twp' => array($this, 'sanitize_settings') ); 274 | $this->_slug = 'tweet-feed-widget'; 275 | $this->_paypalButtonId = '9993090'; 276 | 277 | /** 278 | * Add filters and actions 279 | */ 280 | add_action( 'init', array( $this, 'init' ) ); 281 | add_action( 'admin_init', array( $this, 'handle_actions' ) ); 282 | add_action( 'admin_notices', array( $this, 'show_messages' ) ); 283 | add_action( 'widgets_init', array( $this, 'register' ), 11 ); 284 | add_filter( 'widget_twitter_content', array( $this, 'linkTwitterUsers' ) ); 285 | add_filter( 'widget_twitter_content', array( $this, 'linkUrls' ) ); 286 | add_filter( 'widget_twitter_content', array( $this, 'linkHashtags' ) ); 287 | add_filter( 'widget_twitter_content', 'convert_chars' ); 288 | add_filter( $this->_slug .'-opt-twp', array( $this, 'filterSettings' ) ); 289 | add_filter( $this->_slug .'-opt-twp-authed-users', array( $this, 'authed_users_option' ) ); 290 | add_shortcode( 'tweet-feed-widget', array( $this, 'handleShortcodes' ) ); 291 | 292 | $twp_version = get_option( 'twp_version' ); 293 | if ( TWP_VERSION != $twp_version ) 294 | update_option( 'twp_version', TWP_VERSION ); 295 | } 296 | 297 | protected function _post_settings_init() { 298 | $oauth_settings = array( 299 | 'consumer-key' => $this->_settings['twp']['consumer-key'], 300 | 'consumer-secret' => $this->_settings['twp']['consumer-secret'], 301 | ); 302 | $this->_wp_twitter_oauth = new wpTwitter( $oauth_settings ); 303 | 304 | // We want to fill 'twp-authed-users' but not overwrite them when saving 305 | $this->_settings['twp-authed-users'] = apply_filters($this->_slug.'-opt-twp-authed-users', get_option('twp-authed-users')); 306 | } 307 | 308 | /** 309 | * Function to instantiate our class and make it a singleton 310 | */ 311 | public static function getInstance() { 312 | if ( !self::$instance ) 313 | self::$instance = new self; 314 | 315 | return self::$instance; 316 | } 317 | 318 | public function get_slug() { 319 | return $this->_slug; 320 | } 321 | 322 | public function handle_actions() { 323 | if ( empty( $_GET['action'] ) || empty( $_GET['page'] ) || $_GET['page'] != $this->_hook ) 324 | return; 325 | 326 | if ( 'clear-locks' == $_GET['action'] ) { 327 | check_admin_referer( 'clear-locks' ); 328 | $redirect_args = array( 'message' => strtolower( $_GET['action'] ) ); 329 | global $wpdb; 330 | $locks_q = "DELETE FROM `{$wpdb->options}` WHERE `option_name` LIKE '_transient_tlc_up__twp%'"; 331 | $redirect_args['locks_cleared'] = $wpdb->query( $locks_q ); 332 | wp_safe_redirect( add_query_arg( $redirect_args, remove_query_arg( array( 'action', '_wpnonce' ) ) ) ); 333 | exit; 334 | } 335 | 336 | if ( 'remove' == $_GET['action'] ) { 337 | check_admin_referer( 'remove-' . $_GET['screen_name'] ); 338 | 339 | $redirect_args = array( 340 | 'message' => 'removed', 341 | 'removed' => '', 342 | ); 343 | unset( $this->_settings['twp-authed-users'][strtolower($_GET['screen_name'])] ); 344 | if ( update_option( 'twp-authed-users', $this->_settings['twp-authed-users'] ) ); 345 | $redirect_args['removed'] = $_GET['screen_name']; 346 | 347 | wp_safe_redirect( add_query_arg( $redirect_args, $this->get_options_url() ) ); 348 | exit; 349 | } 350 | if ( 'authorize' == $_GET['action'] ) { 351 | check_admin_referer( 'authorize' ); 352 | $auth_redirect = add_query_arg( array( 'action' => 'authorized' ), $this->get_options_url() ); 353 | $token = $this->_wp_twitter_oauth->getRequestToken( $auth_redirect ); 354 | if ( is_wp_error( $token ) ) { 355 | $this->_error = $token; 356 | return; 357 | } 358 | update_option( '_twp_request_token_'.$token['nonce'], $token ); 359 | $screen_name = empty( $_GET['screen_name'] )? '':$_GET['screen_name']; 360 | wp_redirect( $this->_wp_twitter_oauth->get_authorize_url( $screen_name ) ); 361 | exit; 362 | } 363 | if ( 'authorized' == $_GET['action'] ) { 364 | $redirect_args = array( 365 | 'message' => strtolower( $_GET['action'] ), 366 | 'authorized' => '', 367 | ); 368 | if ( empty( $_GET['oauth_verifier'] ) || empty( $_GET['nonce'] ) ) 369 | wp_safe_redirect( add_query_arg( $redirect_args, $this->get_options_url() ) ); 370 | 371 | $this->_wp_twitter_oauth->set_token( get_option( '_twp_request_token_'.$_GET['nonce'] ) ); 372 | delete_option( '_twp_request_token_'.$_GET['nonce'] ); 373 | 374 | $token = $this->_wp_twitter_oauth->get_access_token( $_GET['oauth_verifier'] ); 375 | if ( ! is_wp_error( $token ) ) { 376 | $this->_settings['twp-authed-users'][strtolower($token['screen_name'])] = $token; 377 | update_option( 'twp-authed-users', $this->_settings['twp-authed-users'] ); 378 | 379 | $redirect_args['authorized'] = $token['screen_name']; 380 | } 381 | wp_safe_redirect( add_query_arg( $redirect_args, $this->get_options_url() ) ); 382 | exit; 383 | } 384 | } 385 | 386 | public function show_messages() { 387 | if ( ! empty( $_GET['message'] ) ) { 388 | if ( 'clear-locks' == $_GET['message'] ) { 389 | if ( empty( $_GET['locks_cleared'] ) || 0 == $_GET['locks_cleared'] ) 390 | $msg = __( 'There were no locks to clear!', $this->_slug ); 391 | else 392 | $msg = sprintf( _n( 'Successfully cleared %d lock.', 'Successfully cleared %d locks.', $_GET['locks_cleared'], $this->_slug ), $_GET['locks_cleared'] ); 393 | } elseif ( 'authorized' == $_GET['message'] ) { 394 | if ( ! empty( $_GET['authorized'] ) ) 395 | $msg = sprintf( __( 'Successfully authorized @%s', $this->_slug ), $_GET['authorized'] ); 396 | else 397 | $msg = __( 'There was a problem authorizing your account.', $this->_slug ); 398 | } elseif ( 'removed' == $_GET['message'] ) { 399 | if ( ! empty( $_GET['removed'] ) ) 400 | $msg = sprintf( __( 'Successfully removed @%s', $this->_slug ), $_GET['removed'] ); 401 | else 402 | $msg = __( 'There was a problem removing your account.', $this->_slug ); 403 | } 404 | if ( ! empty( $msg ) ) 405 | echo "

      " . esc_html( $msg ) . '

      '; 406 | } 407 | 408 | if ( ! empty( $this->_error ) && is_wp_error( $this->_error ) ) { 409 | $msg = '

      ' . implode( '

      ', $this->_error->get_error_messages() ) . '

      '; 410 | echo '
      ' . $msg . '
      '; 411 | } 412 | 413 | if ( (empty( $this->_settings['twp']['consumer-key'] ) || empty( $this->_settings['twp']['consumer-secret'] ) ) && !$this->_settings['twp']['loklak_api'] ) { 414 | $msg = sprintf( __( 'You need to set up your Twitter app keys or use Loklak API to activate plugin functionality.', $this->_slug ), $this->get_options_url() ); 415 | echo '

      ' . $msg . '

      '; 416 | } 417 | 418 | if ( empty( $this->_settings['twp-authed-users'] ) && !$this->_settings['twp']['loklak_api']) { 419 | $msg = sprintf( __( 'You need to authorize your Twitter accounts.', $this->_slug ), $this->get_options_url() ); 420 | echo '

      ' . $msg . '

      '; 421 | } 422 | } 423 | 424 | public function add_options_meta_boxes() { 425 | add_meta_box( $this->_slug. '-loklak-api', __( 'Loklak API settings', $this->_slug ), array( $this, 'loklak_api_settings_meta_box' ), 'twitter-' . $this->_slug, 'main' ); 426 | add_meta_box( $this->_slug . '-oauth', __( 'Authenticated Twitter Accounts', $this->_slug ), array( $this, 'oauth_meta_box' ), 'twitter-' . $this->_slug, 'main' ); 427 | add_meta_box( $this->_slug . '-general-settings', __( 'General Settings', $this->_slug ), array( $this, 'general_settings_meta_box' ), 'twitter-' . $this->_slug, 'main' ); 428 | add_meta_box( $this->_slug . '-defaults', __( 'Default Settings for Shortcodes', $this->_slug ), array( $this, 'default_settings_meta_box' ), 'twitter-' . $this->_slug, 'main' ); 429 | } 430 | 431 | public function loklak_api_settings_meta_box() { 432 | ?> 433 | 434 | 435 | 438 | 441 | 442 |
      436 | 437 | 439 | _settings['twp']['loklak_api'], 'true' ); ?> />Use anonymous API of loklak.org and get plugin data through loklak (no registration and authentication required). Find out more 440 |
      443 | 'authorize' ) ), 'authorize' ); 448 | 449 | ?> 450 | 451 | 452 | 453 | 456 | 459 | 462 | 463 | 464 | _settings['twp-authed-users'] as $u ) { 466 | $this->_wp_twitter_oauth->set_token( $u ); 467 | $rates = $this->_wp_twitter_oauth->send_authed_request( 'application/rate_limit_status', 'GET', array( 'resources' => 'statuses,lists' ) ); 468 | $style = $auth_link = ''; 469 | if ( is_wp_error( $rates ) ) { 470 | $query_args = array( 471 | 'action' => 'authorize', 472 | 'screen_name' => $u['screen_name'], 473 | ); 474 | $authorize_user_url = wp_nonce_url( add_query_arg( $query_args ), 'authorize' ); 475 | $style = 'color:red;'; 476 | $auth_link = ' - ' . __( 'Reauthorize', $this->_slug ) . ''; 477 | } 478 | $query_args = array( 479 | 'action' => 'remove', 480 | 'screen_name' => $u['screen_name'], 481 | ); 482 | $remove_user_url = wp_nonce_url( add_query_arg( $query_args ), 'remove-' . $u['screen_name'] ); 483 | ?> 484 | 485 | 489 | _slug ) => $rates->resources->lists->{'/lists/statuses'}, 493 | __( 'Statuses', $this->_slug ) => $rates->resources->statuses->{'/statuses/user_timeline'}, 494 | ); 495 | foreach ( $display_rates as $title => $rate ) { 496 | ?> 497 | 509 | 513 | 516 | 519 | 522 | 523 | 526 |
      454 | _slug );?> 455 | 457 | _slug );?> 458 | 460 | _slug );?> 461 |
      486 | @ 487 |
      _slug ) ?> 488 |
      498 | 499 |

      500 | _slug ), $rate->limit - $rate->remaining ); ?>
      501 | _slug ), $rate->remaining ); ?>
      502 | reset - gmdate( 'U' ) ) / 60 ); 504 | echo sprintf( _n( 'Limits reset in: %d minutes', 'Limits reset in: %d minutes', $minutes, $this->_slug ), $minutes ); 505 | ?>
      506 | _slug ); ?> 507 |

      508 |
      514 |

      _slug ); ?>

      515 |
      517 |

      _slug ); ?>

      518 |
      527 | _settings['twp']['consumer-key'] ) || empty( $this->_settings['twp']['consumer-secret'] ) ) { 529 | ?> 530 |

      531 | _slug ) ?> 532 |

      533 | 536 |

      537 | _slug ); ?> 538 |

      539 | 'clear-locks' ) ), 'clear-locks' ); 544 | ?> 545 | 546 | 547 | 550 | 553 | 554 | 555 | 558 | 561 | 562 | _settings['twp']['consumer-key'] ) || empty( $this->_settings['twp']['consumer-secret'] ) ) { 564 | ?> 565 | 566 | 567 | 577 | 578 | 581 | 582 | 585 | 589 | 590 | 591 | 594 | 620 | 621 |
      548 | 549 | 551 | 552 |
      556 | 557 | 559 | 560 |
        568 | _slug ) ?> 569 |
        570 |
      1. _slug ) ?>
      2. 571 |
      3. 572 |
      4. 573 |
      5. 574 |
      6. 575 |
      576 |
      583 | _slug );?> 584 | 586 | _slug ); ?>
      587 | _slug ); ?> 588 |
      592 | _slug ); ?> 593 | 595 | array( '_twp-test-local-request' => 'test' ), 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) ); 601 | if ( !is_wp_error( $resp ) && $resp['response']['code'] >= 200 && $resp['response']['code'] < 300 ) { 602 | if ( 'success' === wp_remote_retrieve_body( $resp ) ) 603 | _e( '

      Local requests appear to be functioning normally.

      ', $this->_slug ); 604 | else 605 | _e( '

      The request went through, but an unexpected response was received.

      ', $this->_slug ); 606 | } else { 607 | printf( __( '

      Failed. Your server said: %s

      ', $this->_slug ), $resp['response']['message'] ); 608 | } 609 | } 610 | $query_args = array( 611 | 'action' => 'test-local-request', 612 | ); 613 | $test_local_url = wp_nonce_url( add_query_arg( $query_args, $this->get_options_url() ), 'test-local-request' ); 614 | ?> 615 | 616 | _slug ); ?> 617 |
      618 | _slug ); ?> 619 |
      622 | get_users_list( true ); 626 | $lists = $this->get_lists(); 627 | ?> 628 |

      _slug ) ?>

      629 | 630 | 631 | 634 | 667 | 668 | 669 | 672 | 688 | 689 | 690 | 693 | 696 | 697 | 698 | 701 | 710 | 711 | 712 | 715 | 724 | 725 | 726 | 729 | 732 | 733 | 734 | 737 | 748 | 749 | 750 | 753 | 756 | 757 | 758 | 761 | 786 | 787 |
      632 | 633 | 635 | 636 | 637 | 650 | _settings['twp']['username'] ) ) { 652 | $query_args = array( 653 | 'action' => 'authorize', 654 | 'screen_name' => $this->_settings['twp']['username'], 655 | ); 656 | $authorize_user_url = wp_nonce_url( add_query_arg( $query_args, $this->get_options_url() ), 'authorize' ); 657 | ?> 658 |

      659 | 660 | _slug ); ?> 661 | 662 |

      663 | 666 |
      670 | 671 | 673 | 687 |
      691 | 692 | 694 | 695 |
      699 | 700 | 702 | 709 |
      713 | 714 | 716 | 723 |
      727 | 728 | 730 | 731 |
      735 | 736 | 738 | 747 |
      751 | 752 | 754 | 755 |
      759 | _slug );?> 760 | 762 | 763 | _settings['twp']['showretweets'], 'true' ); ?> /> 764 | 765 |
      766 | 767 | _settings['twp']['hidereplies'], 'true' ); ?> /> 768 | 769 |
      770 | 771 | _settings['twp']['hidefrom'], 'true' ); ?> /> 772 | 773 |
      774 | 775 | _settings['twp']['showintents'], 'true' ); ?> /> 776 | 777 |
      778 | 779 | _settings['twp']['showfollow'], 'true' ); ?> /> 780 | 781 |
      782 | 783 | _settings['twp']['targetBlank'], 'true' ); ?> /> 784 | 785 |
      788 | 'http://twitter.com/' . urlencode( $matches[2] ), 805 | 'class' => 'twitter-user' 806 | ); 807 | return $matches[1] . $this->_buildLink( '@'.$matches[2], $linkAttrs ); 808 | } 809 | 810 | /** 811 | * Replace #hashtag with a link to twitter.com for that hashtag 812 | * 813 | * @param string $text - Tweet text 814 | * @return string - Tweet text with #hashtags linked 815 | */ 816 | public function linkHashtags( $text ) { 817 | $text = preg_replace_callback('/(^|\s)(#[\w\x{00C0}-\x{00D6}\x{00D8}-\x{00F6}\x{00F8}-\x{00FF}]+)/iu', array($this, '_linkHashtagsCallback'), $text); 818 | return $text; 819 | } 820 | 821 | /** 822 | * Replace #hashtag with a link to twitter.com for that hashtag 823 | * 824 | * @param array $matches - Tweet text 825 | * @return string - Tweet text with #hashtags linked 826 | */ 827 | private function _linkHashtagsCallback( $matches ) { 828 | $linkAttrs = array( 829 | 'href' => 'http://twitter.com/search?q=' . urlencode( $matches[2] ), 830 | 'class' => 'twitter-hashtag' 831 | ); 832 | return $matches[1] . $this->_buildLink( $matches[2], $linkAttrs ); 833 | } 834 | 835 | /** 836 | * Turn URLs into links 837 | * 838 | * @param string $text - Tweet text 839 | * @return string - Tweet text with URLs repalced with links 840 | */ 841 | public function linkUrls( $text ) { 842 | $text = " {$text} "; // Pad with whitespace to simplify the regexes 843 | 844 | $url_clickable = '~ 845 | ([\\s(<.,;:!?]) # 1: Leading whitespace, or punctuation 846 | ( # 2: URL 847 | [\\w]{1,20}+:// # Scheme and hier-part prefix 848 | (?=\S{1,2000}\s) # Limit to URLs less than about 2000 characters long 849 | [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]*+ # Non-punctuation URL character 850 | (?: # Unroll the Loop: Only allow puctuation URL character if followed by a non-punctuation URL character 851 | [\'.,;:!?)] # Punctuation URL character 852 | [\\w\\x80-\\xff#%\\~/@\\[\\]*(+=&$-]++ # Non-punctuation URL character 853 | )* 854 | ) 855 | (\)?) # 3: Trailing closing parenthesis (for parethesis balancing post processing) 856 | ~xS'; 857 | // The regex is a non-anchored pattern and does not have a single fixed starting character. 858 | // Tell PCRE to spend more time optimizing since, when used on a page load, it will probably be used several times. 859 | 860 | $text = preg_replace_callback( $url_clickable, array($this, '_make_url_clickable_cb'), $text ); 861 | 862 | $text = preg_replace_callback( '#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', array($this, '_make_web_ftp_clickable_cb' ), $text ); 863 | $text = preg_replace_callback( '#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', array($this, '_make_email_clickable_cb' ), $text ); 864 | 865 | $text = substr( $text, 1, -1 ); // Remove our whitespace padding. 866 | 867 | return $text; 868 | } 869 | 870 | function _make_web_ftp_clickable_cb($matches) { 871 | $ret = ''; 872 | $dest = $matches[2]; 873 | $dest = 'http://' . $dest; 874 | $dest = esc_url($dest); 875 | if ( empty($dest) ) 876 | return $matches[0]; 877 | 878 | // removed trailing [.,;:)] from URL 879 | if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) { 880 | $ret = substr($dest, -1); 881 | $dest = substr($dest, 0, strlen($dest)-1); 882 | } 883 | $linkAttrs = array( 884 | 'href' => $dest 885 | ); 886 | return $matches[1] . $this->_buildLink( $dest, $linkAttrs ) . $ret; 887 | } 888 | 889 | private function _make_email_clickable_cb( $matches ) { 890 | $email = $matches[2] . '@' . $matches[3]; 891 | $linkAttrs = array( 892 | 'href' => 'mailto:' . $email 893 | ); 894 | return $matches[1] . $this->_buildLink( $email, $linkAttrs ); 895 | } 896 | 897 | private function _make_url_clickable_cb ( $matches ) { 898 | $linkAttrs = array( 899 | 'href' => $matches[2] 900 | ); 901 | return $matches[1] . $this->_buildLink( $matches[2], $linkAttrs ); 902 | } 903 | 904 | private function _notEmpty( $v ) { 905 | return !( empty( $v ) ); 906 | } 907 | 908 | private function _buildLink( $text, $attributes = array(), $noFilter = false ) { 909 | $attributes = array_filter( wp_parse_args( $attributes ), array( $this, '_notEmpty' ) ); 910 | $attributes = apply_filters( 'widget_twitter_link_attributes', $attributes ); 911 | $attributes = wp_parse_args( $attributes ); 912 | 913 | $text = apply_filters( 'widget_twitter_link_text', $text ); 914 | $noFilter = apply_filters( 'widget_twitter_link_nofilter', $noFilter ); 915 | $link = ' $value ) { 917 | $link .= ' ' . esc_attr( $name ) . '="' . esc_attr( $value ) . '"'; 918 | } 919 | $link .= '>'; 920 | if ( $noFilter ) 921 | $link .= $text; 922 | else 923 | $link .= esc_html( $text ); 924 | 925 | $link .= ''; 926 | return $link; 927 | } 928 | 929 | public function register() { 930 | // Fix conflict with Jetpack by disabling their Tweet Feed Widget 931 | unregister_widget( 'Wickett_Twitter_Widget' ); 932 | register_widget( 'WP_Widget_Twitter' ); 933 | } 934 | 935 | public function targetBlank( $attributes ) { 936 | $attributes['target'] = '_blank'; 937 | return $attributes; 938 | } 939 | 940 | public function display( $args ) { 941 | $args = wp_parse_args( $args ); 942 | 943 | if ( 'true' == $args['targetBlank'] ) 944 | add_filter( 'widget_twitter_link_attributes', array( $this, 'targetBlank' ) ); 945 | 946 | // Validate our options 947 | $args['items'] = (int) $args['items']; 948 | if ( $args['items'] < 1 || 20 < $args['items'] ) 949 | $args['items'] = 10; 950 | 951 | if ( !isset( $args['showts'] ) ) 952 | $args['showts'] = 86400; 953 | 954 | if( $args['loklak_api'] == true ) { 955 | if(!class_exists('Loklak')) 956 | require_once('loklak_php_api/loklak.php'); 957 | 958 | $loklak = new Loklak(); 959 | $tweets = $loklak->search('', null, null, $args['username'], $args['items']); 960 | $tweets = json_decode($tweets, true); 961 | $tweets = json_decode($tweets['body'], true); 962 | $tweets = $tweets['statuses']; 963 | } 964 | else 965 | $tweets = $this->_getTweets( $args ); 966 | 967 | if ( false === $tweets ) 968 | return ''; 969 | 970 | $widgetContent = $args['before_widget'] . '
      '; 971 | 972 | if ( empty( $args['title'] ) ) 973 | $args['title'] = sprintf( __( 'Twitter: %s', $this->_slug ), $args['username'] ); 974 | 975 | $args['title'] = apply_filters( 'tweet-feed-widget-title', $args['title'], $args ); 976 | $args['title'] = "{$args['title']}"; 977 | $widgetContent .= $args['before_title'] . $args['title'] . $args['after_title']; 978 | if ( !empty( $tweets[0] ) && is_object( $tweets[0] ) && !empty( $args['avatar'] ) ) { 979 | $widgetContent .= ''; 982 | } 983 | $widgetContent .= '
        '; 984 | if ( ! is_array( $tweets ) || count( $tweets ) == 0 ) { 985 | $widgetContent .= '
      • ' . __( 'No Tweets Available', $this->_slug ) . '
      • '; 986 | } else { 987 | $count = 0; 988 | foreach ( $tweets as $tweet ) { 989 | $tweet = (object)$tweet; 990 | $tweet->user = (object)$tweet->user; 991 | // Set our "ago" string which converts the date to "# ___(s) ago" 992 | $tweet->ago = $this->_timeSince( strtotime( $tweet->created_at ), $args['showts'], $args['dateFormat'] ); 993 | $entryContent = apply_filters( 'widget_twitter_content', $tweet->text, $tweet ); 994 | $widgetContent .= '
      • '; 995 | $widgetContent .= "{$entryContent}"; 996 | $widgetContent .= " '; 1019 | 1020 | if ( 'true' == $args['showintents'] ) { 1021 | $widgetContent .= ' '; 1022 | $lang = $this->_getTwitterLang(); 1023 | if ( !empty( $lang ) ) 1024 | $linkAttrs['data-lang'] = $lang; 1025 | 1026 | $linkText = __( 'Reply', $this->_slug ); 1027 | $linkAttrs['href'] = "http://twitter.com/intent/tweet?in_reply_to={$tweet->id_str}"; 1028 | $linkAttrs['class'] = 'in-reply-to'; 1029 | $linkAttrs['title'] = $linkText; 1030 | $widgetContent .= $this->_buildLink( $linkText, $linkAttrs ); 1031 | 1032 | $linkText = __( 'Retweet', $this->_slug ); 1033 | $linkAttrs['href'] = "http://twitter.com/intent/retweet?tweet_id={$tweet->id_str}"; 1034 | $linkAttrs['class'] = 'retweet'; 1035 | $linkAttrs['title'] = $linkText; 1036 | $widgetContent .= $this->_buildLink( $linkText, $linkAttrs ); 1037 | 1038 | $linkText = __( 'Favorite', $this->_slug ); 1039 | $linkAttrs['href'] = "http://twitter.com/intent/favorite?tweet_id={$tweet->id_str}"; 1040 | $linkAttrs['class'] = 'favorite'; 1041 | $linkAttrs['title'] = $linkText; 1042 | $widgetContent .= $this->_buildLink( $linkText, $linkAttrs ); 1043 | $widgetContent .= ''; 1044 | } 1045 | $widgetContent .= '
      • '; 1046 | 1047 | if ( ++$count >= $args['items'] ) 1048 | break; 1049 | } 1050 | } 1051 | 1052 | $widgetContent .= '
      '; 1053 | if ( 'true' == $args['showfollow'] && ! empty( $args['username'] ) ) { 1054 | $widgetContent .= ''; 1067 | } 1068 | 1069 | $widgetContent .= '
      ' . $args['after_widget']; 1070 | 1071 | if ( 'true' == $args['showintents'] || 'true' == $args['showfollow'] ) { 1072 | $script = 'http://platform.twitter.com/widgets.js'; 1073 | if ( is_ssl() ) 1074 | $script = str_replace( 'http://', 'https://', $script ); 1075 | wp_enqueue_script( 'tweet-feed-widgets', $script, array(), '1.0.0', true ); 1076 | 1077 | if ( ! function_exists( '_wp_footer_scripts' ) ) { 1078 | // This means we can't just enqueue our script (fixes in WP 3.3) 1079 | add_action( 'wp_footer', array( $this, 'add_twitter_js' ) ); 1080 | } 1081 | } 1082 | return $widgetContent; 1083 | } 1084 | 1085 | private function _getTwitterLang() { 1086 | $valid_langs = array( 1087 | 'en', // English 1088 | 'it', // Italian 1089 | 'es', // Spanish 1090 | 'fr', // French 1091 | 'ko', // Korean 1092 | 'ja', // Japanese 1093 | ); 1094 | $locale = get_locale(); 1095 | $lang = strtolower( substr( get_locale(), 0, 2 ) ); 1096 | if ( in_array( $lang, $valid_langs ) ) 1097 | return $lang; 1098 | 1099 | return false; 1100 | } 1101 | 1102 | public function add_twitter_js() { 1103 | wp_print_scripts( 'tweet-feed-widgets' ); 1104 | } 1105 | 1106 | /** 1107 | * Gets tweets, from cache if possible 1108 | * 1109 | * @param array $widgetOptions - options needed to get feeds 1110 | * @return array - Array of objects 1111 | */ 1112 | private function _getTweets( $widgetOptions ) { 1113 | $key = 'twp_' . md5( maybe_serialize( $this->_get_feed_request_settings( $widgetOptions ) ) ); 1114 | return tlc_transient( $key ) 1115 | ->expires_in( 300 ) // cache for 5 minutes 1116 | ->extend_on_fail( 120 ) // On a failed call, don't try again for 2 minutes 1117 | ->updates_with( array( $this, 'parseFeed' ), array( $widgetOptions ) ) 1118 | ->get(); 1119 | } 1120 | 1121 | /** 1122 | * Pulls the JSON feed from Twitter and returns an array of objects 1123 | * 1124 | * @param array $widgetOptions - settings needed to get feed url, etc 1125 | * @return array 1126 | */ 1127 | public function parseFeed( $widgetOptions ) { 1128 | $parameters = $this->_get_feed_request_settings( $widgetOptions ); 1129 | $response = array(); 1130 | 1131 | if ( ! empty( $parameters['screen_name'] ) ) { 1132 | if ( empty( $this->_settings['twp-authed-users'][strtolower( $parameters['screen_name'] )] ) ) { 1133 | if ( empty( $widgetOptions['errmsg'] ) ) 1134 | $widgetOptions['errmsg'] = __( 'Account needs to be authorized', $this->_slug ); 1135 | } else { 1136 | $this->_wp_twitter_oauth->set_token( $this->_settings['twp-authed-users'][strtolower( $parameters['screen_name'] )] ); 1137 | $response = $this->_wp_twitter_oauth->send_authed_request( 'statuses/user_timeline', 'GET', $parameters ); 1138 | if ( ! is_wp_error( $response ) ) 1139 | return $response; 1140 | } 1141 | } elseif ( ! empty( $parameters['list_id'] ) ) { 1142 | $list_info = explode( '::', $widgetOptions['list'] ); 1143 | $user = array_shift( $list_info ); 1144 | $this->_wp_twitter_oauth->set_token( $this->_settings['twp-authed-users'][strtolower( $user )] ); 1145 | 1146 | $response = $this->_wp_twitter_oauth->send_authed_request( 'lists/statuses', 'GET', $parameters ); 1147 | if ( ! is_wp_error( $response ) ) 1148 | return $response; 1149 | } 1150 | 1151 | if ( empty( $widgetOptions['errmsg'] ) ) 1152 | $widgetOptions['errmsg'] = __( 'Invalid Twitter Response.', $this->_slug ); 1153 | do_action( 'widget_twitter_parsefeed_error', $response, $parameters, $widgetOptions ); 1154 | throw new Exception( $widgetOptions['errmsg'] ); 1155 | } 1156 | 1157 | /** 1158 | * Gets the parameters for the desired feed. 1159 | * 1160 | * @param array $widgetOptions - settings needed such as username, feet type, etc 1161 | * @return array - Parameters ready to pass to a Twitter request 1162 | */ 1163 | private function _get_feed_request_settings( $widgetOptions ) { 1164 | /** 1165 | * user_id 1166 | * screen_name * 1167 | * since_id 1168 | * count 1169 | * max_id 1170 | * page 1171 | * trim_user 1172 | * include_rts * 1173 | * include_entities 1174 | * exclude_replies * 1175 | * contributor_details 1176 | */ 1177 | 1178 | $parameters = array( 1179 | 'count' => $widgetOptions['items'], 1180 | ); 1181 | 1182 | if ( ! empty( $widgetOptions['username'] ) ) { 1183 | $parameters['screen_name'] = $widgetOptions['username']; 1184 | } elseif ( ! empty( $widgetOptions['list'] ) ) { 1185 | $list_info = explode( '::', $widgetOptions['list'] ); 1186 | $parameters['list_id'] = array_pop( $list_info ); 1187 | } 1188 | 1189 | if ( 'true' == $widgetOptions['hidereplies'] ) 1190 | $parameters['exclude_replies'] = 'true'; 1191 | 1192 | if ( 'true' != $widgetOptions['showretweets'] ) 1193 | $parameters['include_rts'] = 'false'; 1194 | 1195 | return $parameters; 1196 | 1197 | } 1198 | 1199 | /** 1200 | * Twitter displays all tweets that are less than 24 hours old with 1201 | * something like "about 4 hours ago" and ones older than 24 hours with a 1202 | * time and date. This function allows us to simulate that functionality, 1203 | * but lets us choose where the dividing line is. 1204 | * 1205 | * @param int $startTimestamp - The timestamp used to calculate time passed 1206 | * @param int $max - Max number of seconds to conver to "ago" messages. 0 for all, -1 for none 1207 | * @return string 1208 | */ 1209 | private function _timeSince( $startTimestamp, $max, $dateFormat ) { 1210 | // array of time period chunks 1211 | $chunks = array( 1212 | 'year' => 60 * 60 * 24 * 365, // 31,536,000 seconds 1213 | 'month' => 60 * 60 * 24 * 30, // 2,592,000 seconds 1214 | 'week' => 60 * 60 * 24 * 7, // 604,800 seconds 1215 | 'day' => 60 * 60 * 24, // 86,400 seconds 1216 | 'hour' => 60 * 60, // 3600 seconds 1217 | 'minute' => 60, // 60 seconds 1218 | 'second' => 1 // 1 second 1219 | ); 1220 | 1221 | $since = time() - $startTimestamp; 1222 | 1223 | if ( $max != '-1' && $since >= $max ) 1224 | return date_i18n( $dateFormat, $startTimestamp + get_option('gmt_offset') * 3600 ); 1225 | 1226 | 1227 | foreach ( $chunks as $key => $seconds ) { 1228 | // finding the biggest chunk ( if the chunk fits, break ) 1229 | if ( ( $count = floor( $since / $seconds ) ) != 0 ) 1230 | break; 1231 | } 1232 | 1233 | $messages = array( 1234 | 'year' => _n( 'about %s year ago', 'about %s years ago', $count, $this->_slug ), 1235 | 'month' => _n( 'about %s month ago', 'about %s months ago', $count, $this->_slug ), 1236 | 'week' => _n( 'about %s week ago', 'about %s weeks ago', $count, $this->_slug ), 1237 | 'day' => _n( 'about %s day ago', 'about %s days ago', $count, $this->_slug ), 1238 | 'hour' => _n( 'about %s hour ago', 'about %s hours ago', $count, $this->_slug ), 1239 | 'minute' => _n( 'about %s minute ago', 'about %s minutes ago', $count, $this->_slug ), 1240 | 'second' => _n( 'about %s second ago', 'about %s seconds ago', $count, $this->_slug ), 1241 | ); 1242 | 1243 | return sprintf( $messages[$key], $count ); 1244 | } 1245 | 1246 | /** 1247 | * Returns the Twitter user's profile image, linked to that user's profile 1248 | * 1249 | * @param object $user - Twitter User 1250 | * @param array $args - Widget Arguments 1251 | * @return string - Linked image ( XHTML ) 1252 | */ 1253 | private function _getProfileImage( $user, $args = array() ) { 1254 | $linkAttrs = array( 1255 | 'href' => "http://twitter.com/{$user->screen_name}", 1256 | 'title' => $user->name 1257 | ); 1258 | $replace = ( 'original' == $args['avatar'] )? '.':"_{$args['avatar']}."; 1259 | $img = str_replace( '_normal.', $replace, $user->profile_image_url_https ); 1260 | 1261 | return $this->_buildLink( "{$user->name}", $linkAttrs, true ); 1262 | } 1263 | 1264 | /** 1265 | * Replace our shortCode with the "widget" 1266 | * 1267 | * @param array $attr - array of attributes from the shortCode 1268 | * @param string $content - Content of the shortCode 1269 | * @return string - formatted XHTML replacement for the shortCode 1270 | */ 1271 | public function handleShortcodes( $attr, $content = '' ) { 1272 | $defaults = array( 1273 | 'before_widget' => '', 1274 | 'after_widget' => '', 1275 | 'before_title' => '

      ', 1276 | 'after_title' => '

      ', 1277 | 'title' => '', 1278 | 'errmsg' => '', 1279 | 'username' => '', 1280 | 'list' => '', 1281 | 'hidereplies' => 'false', 1282 | 'showretweets' => 'true', 1283 | 'hidefrom' => 'false', 1284 | 'showintents' => 'true', 1285 | 'showfollow' => 'true', 1286 | 'avatar' => '', 1287 | 'targetBlank' => 'false', 1288 | 'items' => 10, 1289 | 'showts' => 60 * 60 * 24, 1290 | 'dateFormat' => __( 'h:i:s A F d, Y', $this->_slug ), 1291 | ); 1292 | 1293 | /** 1294 | * Attribute names are strtolower'd, so we need to fix them to match 1295 | * the names used through the rest of the plugin 1296 | */ 1297 | if ( array_key_exists( 'targetblank', $attr ) ) { 1298 | $attr['targetBlank'] = $attr['targetblank']; 1299 | unset( $attr['targetblank'] ); 1300 | } 1301 | if ( array_key_exists( 'dateformat', $attr ) ) { 1302 | $attr['dateFormat'] = $attr['dateformat']; 1303 | unset( $attr['dateformat'] ); 1304 | } 1305 | 1306 | if ( !empty( $content ) && empty( $attr['title'] ) ) 1307 | $attr['title'] = $content; 1308 | 1309 | 1310 | $attr = shortcode_atts( $defaults, $attr ); 1311 | 1312 | if ( $attr['hidereplies'] && $attr['hidereplies'] != 'false' && $attr['hidereplies'] != '0' ) 1313 | $attr['hidereplies'] = 'true'; 1314 | 1315 | if ( $attr['showretweets'] && $attr['showretweets'] != 'false' && $attr['showretweets'] != '0' ) 1316 | $attr['showretweets'] = 'true'; 1317 | 1318 | if ( $attr['hidefrom'] && $attr['hidefrom'] != 'false' && $attr['hidefrom'] != '0' ) 1319 | $attr['hidefrom'] = 'true'; 1320 | 1321 | if ( $attr['showintents'] && $attr['showintents'] != 'true' && $attr['showintents'] != '1' ) 1322 | $attr['showintents'] = 'false'; 1323 | 1324 | if ( $attr['showfollow'] && $attr['showfollow'] != 'true' && $attr['showfollow'] != '1' ) 1325 | $attr['showfollow'] = 'false'; 1326 | 1327 | if ( !in_array( $attr['avatar'], array( 'bigger', 'normal', 'mini', 'original', '' ) ) ) 1328 | $attr['avatar'] = 'normal'; 1329 | 1330 | if ( $attr['targetBlank'] && $attr['targetBlank'] != 'false' && $attr['targetBlank'] != '0' ) 1331 | $attr['targetBlank'] = 'true'; 1332 | 1333 | return $this->display( $attr ); 1334 | } 1335 | 1336 | public function authed_users_option( $settings ) { 1337 | if ( ! is_array( $settings ) ) 1338 | return array(); 1339 | return $settings; 1340 | } 1341 | 1342 | public function filterSettings( $settings ) { 1343 | $defaultArgs = array( 1344 | 'loklak_api' => '', 1345 | 'consumer-key' => '', 1346 | 'consumer-secret' => '', 1347 | 'title' => '', 1348 | 'errmsg' => '', 1349 | 'username' => '', 1350 | 'list' => '', 1351 | 'http_vs_https' => 'https', 1352 | 'hidereplies' => 'false', 1353 | 'showretweets' => 'true', 1354 | 'hidefrom' => 'false', 1355 | 'showintents' => 'true', 1356 | 'showfollow' => 'true', 1357 | 'avatar' => '', 1358 | 'targetBlank' => 'false', 1359 | 'items' => 10, 1360 | 'showts' => 60 * 60 * 24, 1361 | 'dateFormat' => __( 'h:i:s A F d, Y', $this->_slug ), 1362 | ); 1363 | 1364 | return $this->fixAvatar( wp_parse_args( $settings, $defaultArgs ) ); 1365 | } 1366 | 1367 | public function sanitize_settings( $input ) { 1368 | if ( isset( $input['consumer-key'] ) ) 1369 | $input['consumer-key'] = sanitize_text_field( $input['consumer-key'] ); 1370 | if ( isset( $input['consumer-secret'] ) ) 1371 | $input['consumer-secret'] = sanitize_text_field( $input['consumer-secret'] ); 1372 | if ( isset( $input['title'] ) ) 1373 | $input['title'] = sanitize_text_field( $input['title'] ); 1374 | if ( isset( $input['errmsg'] ) ) 1375 | $input['errmsg'] = sanitize_text_field( $input['errmsg'] ); 1376 | if ( isset( $input['username'] ) ) 1377 | $input['username'] = sanitize_text_field( $input['username'] ); 1378 | if ( isset( $input['dateFormat'] ) ) 1379 | $input['dateFormat'] = sanitize_text_field( $input['dateFormat'] ); 1380 | 1381 | return $input; 1382 | } 1383 | 1384 | /** 1385 | * Now that we support all the profile image sizes we need to convert 1386 | * the old true/false to a size string 1387 | */ 1388 | private function fixAvatar( $settings ) { 1389 | if ( false === $settings['avatar'] ) 1390 | $settings['avatar'] = ''; 1391 | elseif ( !in_array( $settings['avatar'], array( 'bigger', 'normal', 'mini', 'original', false ) ) ) 1392 | $settings['avatar'] = 'normal'; 1393 | 1394 | return $settings; 1395 | } 1396 | 1397 | public function getSettings( $settings ) { 1398 | return $this->fixAvatar( wp_parse_args( $settings, $this->_settings['twp'] ) ); 1399 | } 1400 | 1401 | public function get_users_list( $authed = false ) { 1402 | $users = $this->_settings['twp-authed-users']; 1403 | if ( $authed ) { 1404 | if ( ! empty( $this->_authed_users ) ) 1405 | return $this->_authed_users; 1406 | foreach ( $users as $key => $u ) { 1407 | $this->_wp_twitter_oauth->set_token( $u ); 1408 | $rates = $this->_wp_twitter_oauth->send_authed_request( 'application/rate_limit_status', 'GET', array( 'resources' => 'statuses,lists' ) ); 1409 | if ( is_wp_error( $rates ) ) 1410 | unset( $users[$key] ); 1411 | } 1412 | $this->_authed_users = $users; 1413 | } 1414 | return $users; 1415 | } 1416 | 1417 | public function get_lists() { 1418 | if ( ! empty( $this->_lists ) ) 1419 | return $this->_lists; 1420 | $this->_lists = array(); 1421 | foreach ( $this->_settings['twp-authed-users'] as $key => $u ) { 1422 | $this->_wp_twitter_oauth->set_token( $u ); 1423 | $user_lists = $this->_wp_twitter_oauth->send_authed_request( 'lists/list', 'GET', array( 'resources' => 'statuses,lists' ) ); 1424 | 1425 | if ( ! empty( $user_lists ) && ! is_wp_error( $user_lists ) ) { 1426 | $this->_lists[$key] = array(); 1427 | foreach ( $user_lists as $l ) { 1428 | $this->_lists[$key][$l->id] = $l->name; 1429 | } 1430 | } 1431 | } 1432 | return $this->_lists; 1433 | } 1434 | 1435 | public function init() { 1436 | if ( isset( $_GET['twp-test-local-request'] ) && ! empty( $_POST['_twp-test-local-request'] ) && 'test' === $_POST['_twp-test-local-request'] ) { 1437 | die( 'success' ); 1438 | } 1439 | } 1440 | 1441 | } 1442 | // Instantiate our class 1443 | $wpTwitterWidget = wpTwitterWidget::getInstance(); 1444 | --------------------------------------------------------------------------------