├── .gitmodules ├── .svnignore ├── README.md ├── api └── wp-twitter-api │ ├── README.md │ ├── inc │ └── return-emoji.php │ ├── lang │ ├── README.md │ ├── extra │ │ ├── twitter-errors-de_DE.mo │ │ ├── twitter-errors-de_DE.po │ │ ├── twitter-errors-es_ES.mo │ │ ├── twitter-errors-es_ES.po │ │ ├── twitter-errors-nl_NL.mo │ │ ├── twitter-errors-nl_NL.po │ │ ├── twitter-errors-pt_BR.mo │ │ ├── twitter-errors-pt_BR.po │ │ ├── twitter-errors-ru_RU.mo │ │ ├── twitter-errors-ru_RU.po │ │ ├── twitter-errors.php │ │ └── twitter-errors.pot │ ├── merge.sh │ ├── twitter-api-de_DE.mo │ ├── twitter-api-de_DE.po │ ├── twitter-api-es_ES.mo │ ├── twitter-api-es_ES.po │ ├── twitter-api-nl_NL.mo │ ├── twitter-api-nl_NL.po │ ├── twitter-api-pt_BR.mo │ ├── twitter-api-pt_BR.po │ ├── twitter-api-ru_RU.mo │ ├── twitter-api-ru_RU.po │ ├── twitter-api.pot │ └── update.sh │ ├── lib │ ├── twitter-api-admin.php │ ├── twitter-api-core.php │ ├── twitter-api-unicode.php │ └── twitter-api-utils.php │ ├── test │ ├── bootstrap.php │ ├── phpunit.xml │ └── utils │ │ ├── EmojiTest.php │ │ ├── HtmlTest.php │ │ └── UnicodeTest.php │ └── twitter-api.php ├── assets ├── screenshot-1.png ├── screenshot-2.png └── screenshot-3.png ├── readme.txt └── tweets.php /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "loklak_php_api"] 2 | path = loklak_php_api 3 | url = git@github.com:loklak/loklak_php_api.git 4 | -------------------------------------------------------------------------------- /.svnignore: -------------------------------------------------------------------------------- 1 | .git* 2 | .DS* 3 | .svnignore 4 | .gitignore 5 | README.md 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tweets Wordpress Widget 2 | 3 | Gitified version of the Tweets Widget published in the official Wordpress plugin directory: 4 | [http://wordpress.org/plugins/tweets-widget/](http://wordpress.org/plugins/tweets-widget/) 5 | 6 | Please report issues in the Wordpress plugin directory support forum: 7 | [http://wordpress.org/support/plugin/tweets-widget](http://wordpress.org/support/plugin/tweets-widget) 8 | 9 | ## Installation 10 | 11 | Add the Loklak and Twitter APIs to this plugin via Git as follows: 12 | 13 | $ git submodule add https://github.com/timwhitlock/wp-twitter-api.git api 14 | $ git submodule add https://github.com/loklak/loklak_php_api.git loklak_php_api 15 | 16 | 17 | For further details on the plugin, please visit the [official plugin page](http://wordpress.org/plugins/tweets-widget/). 18 | -------------------------------------------------------------------------------- /api/wp-twitter-api/README.md: -------------------------------------------------------------------------------- 1 | # Twitter API WordPress Library 2 | 3 | This library exposes a fully authenticated Twitter API client for developing WordPress plugins. 4 | 5 | ## Features 6 | 7 | * Compatible with the new Twitter API 1.1 8 | * OAuth flow connects your Twitter account via WordPress admin 9 | * Access to a common Twitter API client that any plugin can use 10 | * Caching of API responses 11 | * Light-weight: uses WordPress utilities where possible 12 | 13 | 14 | ## Example plugin 15 | 16 | See the [Latest Tweets Widget](http://wordpress.org/extend/plugins/latest-tweets-widget/) for an example plugin using this library. 17 | 18 | 19 | ## Installation 20 | 21 | Clone this repo to where you will develop your plugin. e.g. 22 | 23 | git submodule add https://github.com/timwhitlock/wp-twitter-api.git \ 24 | wp-content/plugins/my-twitter-plugin/api 25 | 26 | To expose the library and its admin functions, bootstrap the library from your own plugin as follows: 27 | ```php 28 | /* 29 | * Plugin Name: My Twitter Plugin 30 | */ 31 | if( ! function_exists('twitter_api_get') ){ 32 | require dirname(__FILE__).'/api/twitter-api.php'; 33 | } 34 | ``` 35 | 36 | ## Authentication 37 | 38 | Once the plugin is installed and enabled, you can bind it to a Twitter account as follows: 39 | 40 | * Register a Twitter application at https://dev.twitter.com/apps 41 | * Note the Consumer key and Consumer secret under *OAuth settings* 42 | * Log into WordPress admin and go to *Settings > Twitter API* 43 | * Enter the consumer key and secret and click 'Save settings' 44 | * Click the 'Connect to Twitter' button and follow the prompts. 45 | 46 | Any WordPress plugin can now make fully authenticated calls to the Twitter API. The functions are documented below. 47 | 48 | 49 | ## Twitter Client 50 | 51 | To check whether the user has authenticated the plugin and configured the oAuth tokens you can use the following function. 52 | 53 | #### twitter_api_configured 54 | `bool twitter_api_configured ()` 55 | Returns True if the user has authenticated the plugin and configured oAuth tokens 56 | 57 | 58 | The following functions are available from anywhere as soon as the plugin is authenticated. 59 | They all operate as the Twitter account you connected in your admin area. 60 | 61 | #### twitter_api_get 62 | `array twitter_api_get ( string $path [, array $args ] )` 63 | GETs data from the Twitter API, returning the raw unserialized data. 64 | 65 | `$path` is any Twitter API method, e.g. `'users/show'` or `'statuses/user_timeline'` 66 | `$args` is an associative array of parameters, e.g. `array('screen_name'=>'timwhitlock')` 67 | 68 | Note that neither the path nor the arguments are validated. 69 | 70 | #### twitter_api_post 71 | `array twitter_api_post ( string $path [, array $args ] )` 72 | As above, but POSTs data to the Twitter API. 73 | 74 | #### twitter_api_enable_cache 75 | `TwitterApiClient twitter_api_enable_cache( int $ttl )` 76 | Enable caching of Twitter response data for `$ttl` seconds. 77 | 78 | #### twitter_api_disable_cache 79 | `TwitterApiClient twitter_api_disable_cache( )` 80 | Disables caching of responses. Caching is disabled by default. 81 | 82 | 83 | ## Custom OAuth flows 84 | 85 | The above functions work with a single authenticated Twitter account. 86 | If you want to authenticate multiple clients or create OAuth flows other than the one provided, you'll have to work directly with the `TwitterApiClient` class and roll your own OAuth user flows. 87 | 88 | The following utility functions will do some lifting for you, but please see [Twitter's own documentation](https://dev.twitter.com/docs/auth/obtaining-access-tokens) if you're not familiar with the process. 89 | 90 | #### twitter_api_oauth_request_token 91 | `TwitterOAuthToken twitter_api_oauth_request_token ( string $consumer_key, string $consumer_secret, string $oauth_callback )` 92 | Fetches an OAuth request token from Twitter: e.g. `{ key: 'your request key', secret: 'your request secret' }` 93 | 94 | #### twitter_api_oauth_access_token 95 | `TwitterOAuthToken twitter_api_oauth_access_token ( $consumer_key, $consumer_secret, $request_key, $request_secret, $oauth_verifier )` 96 | Exhanges a verified request token for an access token: e.g. `{ key: 'your access key', secret: 'your access secret' }` 97 | 98 | ### TwitterApiClient 99 | 100 | Once you have your own authentication credentials you can work directly with the API client. 101 | This example shows the main methods you might use: 102 | 103 | ```php 104 | try { 105 | if ( twitter_api_configured() ) { 106 | $Client = twitter_api_client('some client'); 107 | $Client->set_oauth( 'my consumer key', 'my consumer secret', 'their access key', 'their access secret' ); 108 | $user = $Client->call( 'users/show', array( 'screen_name' => 'timwhitlock' ), 'GET' ); 109 | var_dump( $user ); 110 | } 111 | } 112 | catch( TwitterApiRateLimitException $Ex ){ 113 | $info = $Client->last_rate_limit(); 114 | wp_die( 'Rate limit exceeded. Try again at '.date( 'H:i:s', $info['reset'] ) ); 115 | } 116 | catch( TwitterApiException $Ex ){ 117 | wp_die( 'Twitter responded with status '.$Ex->getStatus().', '.$Ex->getMessage() ); 118 | } 119 | catch( Exception $Ex ){ 120 | wp_die( 'Fatal error, '. $Ex->getMessage() ); 121 | } 122 | ``` 123 | -------------------------------------------------------------------------------- /api/wp-twitter-api/inc/return-emoji.php: -------------------------------------------------------------------------------- 1 | '1f601', 4 | "\xF0\x9F\x98\x82" => '1f602', 5 | "\xF0\x9F\x98\x83" => '1f603', 6 | "\xF0\x9F\x98\x84" => '1f604', 7 | "\xF0\x9F\x98\x85" => '1f605', 8 | "\xF0\x9F\x98\x86" => '1f606', 9 | "\xF0\x9F\x98\x89" => '1f609', 10 | "\xF0\x9F\x98\x8A" => '1f60a', 11 | "\xF0\x9F\x98\x8B" => '1f60b', 12 | "\xF0\x9F\x98\x8C" => '1f60c', 13 | "\xF0\x9F\x98\x8D" => '1f60d', 14 | "\xF0\x9F\x98\x8F" => '1f60f', 15 | "\xF0\x9F\x98\x92" => '1f612', 16 | "\xF0\x9F\x98\x93" => '1f613', 17 | "\xF0\x9F\x98\x94" => '1f614', 18 | "\xF0\x9F\x98\x96" => '1f616', 19 | "\xF0\x9F\x98\x98" => '1f618', 20 | "\xF0\x9F\x98\x9A" => '1f61a', 21 | "\xF0\x9F\x98\x9C" => '1f61c', 22 | "\xF0\x9F\x98\x9D" => '1f61d', 23 | "\xF0\x9F\x98\x9E" => '1f61e', 24 | "\xF0\x9F\x98\xA0" => '1f620', 25 | "\xF0\x9F\x98\xA1" => '1f621', 26 | "\xF0\x9F\x98\xA2" => '1f622', 27 | "\xF0\x9F\x98\xA3" => '1f623', 28 | "\xF0\x9F\x98\xA4" => '1f624', 29 | "\xF0\x9F\x98\xA5" => '1f625', 30 | "\xF0\x9F\x98\xA8" => '1f628', 31 | "\xF0\x9F\x98\xA9" => '1f629', 32 | "\xF0\x9F\x98\xAA" => '1f62a', 33 | "\xF0\x9F\x98\xAB" => '1f62b', 34 | "\xF0\x9F\x98\xAD" => '1f62d', 35 | "\xF0\x9F\x98\xB0" => '1f630', 36 | "\xF0\x9F\x98\xB1" => '1f631', 37 | "\xF0\x9F\x98\xB2" => '1f632', 38 | "\xF0\x9F\x98\xB3" => '1f633', 39 | "\xF0\x9F\x98\xB5" => '1f635', 40 | "\xF0\x9F\x98\xB7" => '1f637', 41 | "\xF0\x9F\x98\xB8" => '1f638', 42 | "\xF0\x9F\x98\xB9" => '1f639', 43 | "\xF0\x9F\x98\xBA" => '1f63a', 44 | "\xF0\x9F\x98\xBB" => '1f63b', 45 | "\xF0\x9F\x98\xBC" => '1f63c', 46 | "\xF0\x9F\x98\xBD" => '1f63d', 47 | "\xF0\x9F\x98\xBE" => '1f63e', 48 | "\xF0\x9F\x98\xBF" => '1f63f', 49 | "\xF0\x9F\x99\x80" => '1f640', 50 | "\xF0\x9F\x99\x85" => '1f645', 51 | "\xF0\x9F\x99\x86" => '1f646', 52 | "\xF0\x9F\x99\x87" => '1f647', 53 | "\xF0\x9F\x99\x88" => '1f648', 54 | "\xF0\x9F\x99\x89" => '1f649', 55 | "\xF0\x9F\x99\x8A" => '1f64a', 56 | "\xF0\x9F\x99\x8B" => '1f64b', 57 | "\xF0\x9F\x99\x8C" => '1f64c', 58 | "\xF0\x9F\x99\x8D" => '1f64d', 59 | "\xF0\x9F\x99\x8E" => '1f64e', 60 | "\xF0\x9F\x99\x8F" => '1f64f', 61 | "\xE2\x9C\x82" => '2702', 62 | "\xE2\x9C\x85" => '2705', 63 | "\xE2\x9C\x88" => '2708', 64 | "\xE2\x9C\x89" => '2709', 65 | "\xE2\x9C\x8A" => '270a', 66 | "\xE2\x9C\x8B" => '270b', 67 | "\xE2\x9C\x8C" => '270c', 68 | "\xE2\x9C\x8F" => '270f', 69 | "\xE2\x9C\x92" => '2712', 70 | "\xE2\x9C\x94" => '2714', 71 | "\xE2\x9C\x96" => '2716', 72 | "\xE2\x9C\xA8" => '2728', 73 | "\xE2\x9C\xB3" => '2733', 74 | "\xE2\x9C\xB4" => '2734', 75 | "\xE2\x9D\x84" => '2744', 76 | "\xE2\x9D\x87" => '2747', 77 | "\xE2\x9D\x8C" => '274c', 78 | "\xE2\x9D\x8E" => '274e', 79 | "\xE2\x9D\x93" => '2753', 80 | "\xE2\x9D\x94" => '2754', 81 | "\xE2\x9D\x95" => '2755', 82 | "\xE2\x9D\x97" => '2757', 83 | "\xE2\x9D\xA4" => '2764', 84 | "\xE2\x9E\x95" => '2795', 85 | "\xE2\x9E\x96" => '2796', 86 | "\xE2\x9E\x97" => '2797', 87 | "\xE2\x9E\xA1" => '27a1', 88 | "\xE2\x9E\xB0" => '27b0', 89 | "\xF0\x9F\x9A\x80" => '1f680', 90 | "\xF0\x9F\x9A\x83" => '1f683', 91 | "\xF0\x9F\x9A\x84" => '1f684', 92 | "\xF0\x9F\x9A\x85" => '1f685', 93 | "\xF0\x9F\x9A\x87" => '1f687', 94 | "\xF0\x9F\x9A\x89" => '1f689', 95 | "\xF0\x9F\x9A\x8C" => '1f68c', 96 | "\xF0\x9F\x9A\x8F" => '1f68f', 97 | "\xF0\x9F\x9A\x91" => '1f691', 98 | "\xF0\x9F\x9A\x92" => '1f692', 99 | "\xF0\x9F\x9A\x93" => '1f693', 100 | "\xF0\x9F\x9A\x95" => '1f695', 101 | "\xF0\x9F\x9A\x97" => '1f697', 102 | "\xF0\x9F\x9A\x99" => '1f699', 103 | "\xF0\x9F\x9A\x9A" => '1f69a', 104 | "\xF0\x9F\x9A\xA2" => '1f6a2', 105 | "\xF0\x9F\x9A\xA4" => '1f6a4', 106 | "\xF0\x9F\x9A\xA5" => '1f6a5', 107 | "\xF0\x9F\x9A\xA7" => '1f6a7', 108 | "\xF0\x9F\x9A\xA8" => '1f6a8', 109 | "\xF0\x9F\x9A\xA9" => '1f6a9', 110 | "\xF0\x9F\x9A\xAA" => '1f6aa', 111 | "\xF0\x9F\x9A\xAB" => '1f6ab', 112 | "\xF0\x9F\x9A\xAC" => '1f6ac', 113 | "\xF0\x9F\x9A\xAD" => '1f6ad', 114 | "\xF0\x9F\x9A\xB2" => '1f6b2', 115 | "\xF0\x9F\x9A\xB6" => '1f6b6', 116 | "\xF0\x9F\x9A\xB9" => '1f6b9', 117 | "\xF0\x9F\x9A\xBA" => '1f6ba', 118 | "\xF0\x9F\x9A\xBB" => '1f6bb', 119 | "\xF0\x9F\x9A\xBC" => '1f6bc', 120 | "\xF0\x9F\x9A\xBD" => '1f6bd', 121 | "\xF0\x9F\x9A\xBE" => '1f6be', 122 | "\xF0\x9F\x9B\x80" => '1f6c0', 123 | "\xE2\x93\x82" => '24c2', 124 | "\xF0\x9F\x85\xB0" => '1f170', 125 | "\xF0\x9F\x85\xB1" => '1f171', 126 | "\xF0\x9F\x85\xBE" => '1f17e', 127 | "\xF0\x9F\x85\xBF" => '1f17f', 128 | "\xF0\x9F\x86\x8E" => '1f18e', 129 | "\xF0\x9F\x86\x91" => '1f191', 130 | "\xF0\x9F\x86\x92" => '1f192', 131 | "\xF0\x9F\x86\x93" => '1f193', 132 | "\xF0\x9F\x86\x94" => '1f194', 133 | "\xF0\x9F\x86\x95" => '1f195', 134 | "\xF0\x9F\x86\x96" => '1f196', 135 | "\xF0\x9F\x86\x97" => '1f197', 136 | "\xF0\x9F\x86\x98" => '1f198', 137 | "\xF0\x9F\x86\x99" => '1f199', 138 | "\xF0\x9F\x86\x9A" => '1f19a', 139 | "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA" => '1f1e9-1f1ea', 140 | "\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7" => '1f1ec-1f1e7', 141 | "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3" => '1f1e8-1f1f3', 142 | "\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5" => '1f1ef-1f1f5', 143 | "\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7" => '1f1f0-1f1f7', 144 | "\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7" => '1f1eb-1f1f7', 145 | "\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8" => '1f1ea-1f1f8', 146 | "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9" => '1f1ee-1f1f9', 147 | "\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8" => '1f1fa-1f1f8', 148 | "\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA" => '1f1f7-1f1fa', 149 | "\xF0\x9F\x88\x81" => '1f201', 150 | "\xF0\x9F\x88\x82" => '1f202', 151 | "\xF0\x9F\x88\x9A" => '1f21a', 152 | "\xF0\x9F\x88\xAF" => '1f22f', 153 | "\xF0\x9F\x88\xB2" => '1f232', 154 | "\xF0\x9F\x88\xB3" => '1f233', 155 | "\xF0\x9F\x88\xB4" => '1f234', 156 | "\xF0\x9F\x88\xB5" => '1f235', 157 | "\xF0\x9F\x88\xB6" => '1f236', 158 | "\xF0\x9F\x88\xB7" => '1f237', 159 | "\xF0\x9F\x88\xB8" => '1f238', 160 | "\xF0\x9F\x88\xB9" => '1f239', 161 | "\xF0\x9F\x88\xBA" => '1f23a', 162 | "\xF0\x9F\x89\x90" => '1f250', 163 | "\xF0\x9F\x89\x91" => '1f251', 164 | "\xE2\x80\xBC" => '203c', 165 | "\xE2\x81\x89" => '2049', 166 | "\x38\xE2\x83\xA3" => '38-20e3', 167 | "\x39\xE2\x83\xA3" => '39-20e3', 168 | "\x37\xE2\x83\xA3" => '37-20e3', 169 | "\x36\xE2\x83\xA3" => '36-20e3', 170 | "\x31\xE2\x83\xA3" => '31-20e3', 171 | "\x30\xE2\x83\xA3" => '30-20e3', 172 | "\x32\xE2\x83\xA3" => '32-20e3', 173 | "\x33\xE2\x83\xA3" => '33-20e3', 174 | "\x35\xE2\x83\xA3" => '35-20e3', 175 | "\x34\xE2\x83\xA3" => '34-20e3', 176 | "\x23\xE2\x83\xA3" => '23-20e3', 177 | "\xE2\x84\xA2" => '2122', 178 | "\xE2\x84\xB9" => '2139', 179 | "\xE2\x86\x94" => '2194', 180 | "\xE2\x86\x95" => '2195', 181 | "\xE2\x86\x96" => '2196', 182 | "\xE2\x86\x97" => '2197', 183 | "\xE2\x86\x98" => '2198', 184 | "\xE2\x86\x99" => '2199', 185 | "\xE2\x86\xA9" => '21a9', 186 | "\xE2\x86\xAA" => '21aa', 187 | "\xE2\x8C\x9A" => '231a', 188 | "\xE2\x8C\x9B" => '231b', 189 | "\xE2\x8F\xA9" => '23e9', 190 | "\xE2\x8F\xAA" => '23ea', 191 | "\xE2\x8F\xAB" => '23eb', 192 | "\xE2\x8F\xAC" => '23ec', 193 | "\xE2\x8F\xB0" => '23f0', 194 | "\xE2\x8F\xB3" => '23f3', 195 | "\xE2\x96\xAA" => '25aa', 196 | "\xE2\x96\xAB" => '25ab', 197 | "\xE2\x96\xB6" => '25b6', 198 | "\xE2\x97\x80" => '25c0', 199 | "\xE2\x97\xBB" => '25fb', 200 | "\xE2\x97\xBC" => '25fc', 201 | "\xE2\x97\xBD" => '25fd', 202 | "\xE2\x97\xBE" => '25fe', 203 | "\xE2\x98\x80" => '2600', 204 | "\xE2\x98\x81" => '2601', 205 | "\xE2\x98\x8E" => '260e', 206 | "\xE2\x98\x91" => '2611', 207 | "\xE2\x98\x94" => '2614', 208 | "\xE2\x98\x95" => '2615', 209 | "\xE2\x98\x9D" => '261d', 210 | "\xE2\x98\xBA" => '263a', 211 | "\xE2\x99\x88" => '2648', 212 | "\xE2\x99\x89" => '2649', 213 | "\xE2\x99\x8A" => '264a', 214 | "\xE2\x99\x8B" => '264b', 215 | "\xE2\x99\x8C" => '264c', 216 | "\xE2\x99\x8D" => '264d', 217 | "\xE2\x99\x8E" => '264e', 218 | "\xE2\x99\x8F" => '264f', 219 | "\xE2\x99\x90" => '2650', 220 | "\xE2\x99\x91" => '2651', 221 | "\xE2\x99\x92" => '2652', 222 | "\xE2\x99\x93" => '2653', 223 | "\xE2\x99\xA0" => '2660', 224 | "\xE2\x99\xA3" => '2663', 225 | "\xE2\x99\xA5" => '2665', 226 | "\xE2\x99\xA6" => '2666', 227 | "\xE2\x99\xA8" => '2668', 228 | "\xE2\x99\xBB" => '267b', 229 | "\xE2\x99\xBF" => '267f', 230 | "\xE2\x9A\x93" => '2693', 231 | "\xE2\x9A\xA0" => '26a0', 232 | "\xE2\x9A\xA1" => '26a1', 233 | "\xE2\x9A\xAA" => '26aa', 234 | "\xE2\x9A\xAB" => '26ab', 235 | "\xE2\x9A\xBD" => '26bd', 236 | "\xE2\x9A\xBE" => '26be', 237 | "\xE2\x9B\x84" => '26c4', 238 | "\xE2\x9B\x85" => '26c5', 239 | "\xE2\x9B\x8E" => '26ce', 240 | "\xE2\x9B\x94" => '26d4', 241 | "\xE2\x9B\xAA" => '26ea', 242 | "\xE2\x9B\xB2" => '26f2', 243 | "\xE2\x9B\xB3" => '26f3', 244 | "\xE2\x9B\xB5" => '26f5', 245 | "\xE2\x9B\xBA" => '26fa', 246 | "\xE2\x9B\xBD" => '26fd', 247 | "\xE2\xA4\xB4" => '2934', 248 | "\xE2\xA4\xB5" => '2935', 249 | "\xE2\xAC\x85" => '2b05', 250 | "\xE2\xAC\x86" => '2b06', 251 | "\xE2\xAC\x87" => '2b07', 252 | "\xE2\xAC\x9B" => '2b1b', 253 | "\xE2\xAC\x9C" => '2b1c', 254 | "\xE2\xAD\x90" => '2b50', 255 | "\xE2\xAD\x95" => '2b55', 256 | "\xE3\x80\xB0" => '3030', 257 | "\xE3\x80\xBD" => '303d', 258 | "\xE3\x8A\x97" => '3297', 259 | "\xE3\x8A\x99" => '3299', 260 | "\xF0\x9F\x80\x84" => '1f004', 261 | "\xF0\x9F\x83\x8F" => '1f0cf', 262 | "\xF0\x9F\x8C\x80" => '1f300', 263 | "\xF0\x9F\x8C\x81" => '1f301', 264 | "\xF0\x9F\x8C\x82" => '1f302', 265 | "\xF0\x9F\x8C\x83" => '1f303', 266 | "\xF0\x9F\x8C\x84" => '1f304', 267 | "\xF0\x9F\x8C\x85" => '1f305', 268 | "\xF0\x9F\x8C\x86" => '1f306', 269 | "\xF0\x9F\x8C\x87" => '1f307', 270 | "\xF0\x9F\x8C\x88" => '1f308', 271 | "\xF0\x9F\x8C\x89" => '1f309', 272 | "\xF0\x9F\x8C\x8A" => '1f30a', 273 | "\xF0\x9F\x8C\x8B" => '1f30b', 274 | "\xF0\x9F\x8C\x8C" => '1f30c', 275 | "\xF0\x9F\x8C\x8F" => '1f30f', 276 | "\xF0\x9F\x8C\x91" => '1f311', 277 | "\xF0\x9F\x8C\x93" => '1f313', 278 | "\xF0\x9F\x8C\x94" => '1f314', 279 | "\xF0\x9F\x8C\x95" => '1f315', 280 | "\xF0\x9F\x8C\x99" => '1f319', 281 | "\xF0\x9F\x8C\x9B" => '1f31b', 282 | "\xF0\x9F\x8C\x9F" => '1f31f', 283 | "\xF0\x9F\x8C\xA0" => '1f320', 284 | "\xF0\x9F\x8C\xB0" => '1f330', 285 | "\xF0\x9F\x8C\xB1" => '1f331', 286 | "\xF0\x9F\x8C\xB4" => '1f334', 287 | "\xF0\x9F\x8C\xB5" => '1f335', 288 | "\xF0\x9F\x8C\xB7" => '1f337', 289 | "\xF0\x9F\x8C\xB8" => '1f338', 290 | "\xF0\x9F\x8C\xB9" => '1f339', 291 | "\xF0\x9F\x8C\xBA" => '1f33a', 292 | "\xF0\x9F\x8C\xBB" => '1f33b', 293 | "\xF0\x9F\x8C\xBC" => '1f33c', 294 | "\xF0\x9F\x8C\xBD" => '1f33d', 295 | "\xF0\x9F\x8C\xBE" => '1f33e', 296 | "\xF0\x9F\x8C\xBF" => '1f33f', 297 | "\xF0\x9F\x8D\x80" => '1f340', 298 | "\xF0\x9F\x8D\x81" => '1f341', 299 | "\xF0\x9F\x8D\x82" => '1f342', 300 | "\xF0\x9F\x8D\x83" => '1f343', 301 | "\xF0\x9F\x8D\x84" => '1f344', 302 | "\xF0\x9F\x8D\x85" => '1f345', 303 | "\xF0\x9F\x8D\x86" => '1f346', 304 | "\xF0\x9F\x8D\x87" => '1f347', 305 | "\xF0\x9F\x8D\x88" => '1f348', 306 | "\xF0\x9F\x8D\x89" => '1f349', 307 | "\xF0\x9F\x8D\x8A" => '1f34a', 308 | "\xF0\x9F\x8D\x8C" => '1f34c', 309 | "\xF0\x9F\x8D\x8D" => '1f34d', 310 | "\xF0\x9F\x8D\x8E" => '1f34e', 311 | "\xF0\x9F\x8D\x8F" => '1f34f', 312 | "\xF0\x9F\x8D\x91" => '1f351', 313 | "\xF0\x9F\x8D\x92" => '1f352', 314 | "\xF0\x9F\x8D\x93" => '1f353', 315 | "\xF0\x9F\x8D\x94" => '1f354', 316 | "\xF0\x9F\x8D\x95" => '1f355', 317 | "\xF0\x9F\x8D\x96" => '1f356', 318 | "\xF0\x9F\x8D\x97" => '1f357', 319 | "\xF0\x9F\x8D\x98" => '1f358', 320 | "\xF0\x9F\x8D\x99" => '1f359', 321 | "\xF0\x9F\x8D\x9A" => '1f35a', 322 | "\xF0\x9F\x8D\x9B" => '1f35b', 323 | "\xF0\x9F\x8D\x9C" => '1f35c', 324 | "\xF0\x9F\x8D\x9D" => '1f35d', 325 | "\xF0\x9F\x8D\x9E" => '1f35e', 326 | "\xF0\x9F\x8D\x9F" => '1f35f', 327 | "\xF0\x9F\x8D\xA0" => '1f360', 328 | "\xF0\x9F\x8D\xA1" => '1f361', 329 | "\xF0\x9F\x8D\xA2" => '1f362', 330 | "\xF0\x9F\x8D\xA3" => '1f363', 331 | "\xF0\x9F\x8D\xA4" => '1f364', 332 | "\xF0\x9F\x8D\xA5" => '1f365', 333 | "\xF0\x9F\x8D\xA6" => '1f366', 334 | "\xF0\x9F\x8D\xA7" => '1f367', 335 | "\xF0\x9F\x8D\xA8" => '1f368', 336 | "\xF0\x9F\x8D\xA9" => '1f369', 337 | "\xF0\x9F\x8D\xAA" => '1f36a', 338 | "\xF0\x9F\x8D\xAB" => '1f36b', 339 | "\xF0\x9F\x8D\xAC" => '1f36c', 340 | "\xF0\x9F\x8D\xAD" => '1f36d', 341 | "\xF0\x9F\x8D\xAE" => '1f36e', 342 | "\xF0\x9F\x8D\xAF" => '1f36f', 343 | "\xF0\x9F\x8D\xB0" => '1f370', 344 | "\xF0\x9F\x8D\xB1" => '1f371', 345 | "\xF0\x9F\x8D\xB2" => '1f372', 346 | "\xF0\x9F\x8D\xB3" => '1f373', 347 | "\xF0\x9F\x8D\xB4" => '1f374', 348 | "\xF0\x9F\x8D\xB5" => '1f375', 349 | "\xF0\x9F\x8D\xB6" => '1f376', 350 | "\xF0\x9F\x8D\xB7" => '1f377', 351 | "\xF0\x9F\x8D\xB8" => '1f378', 352 | "\xF0\x9F\x8D\xB9" => '1f379', 353 | "\xF0\x9F\x8D\xBA" => '1f37a', 354 | "\xF0\x9F\x8D\xBB" => '1f37b', 355 | "\xF0\x9F\x8E\x80" => '1f380', 356 | "\xF0\x9F\x8E\x81" => '1f381', 357 | "\xF0\x9F\x8E\x82" => '1f382', 358 | "\xF0\x9F\x8E\x83" => '1f383', 359 | "\xF0\x9F\x8E\x84" => '1f384', 360 | "\xF0\x9F\x8E\x85" => '1f385', 361 | "\xF0\x9F\x8E\x86" => '1f386', 362 | "\xF0\x9F\x8E\x87" => '1f387', 363 | "\xF0\x9F\x8E\x88" => '1f388', 364 | "\xF0\x9F\x8E\x89" => '1f389', 365 | "\xF0\x9F\x8E\x8A" => '1f38a', 366 | "\xF0\x9F\x8E\x8B" => '1f38b', 367 | "\xF0\x9F\x8E\x8C" => '1f38c', 368 | "\xF0\x9F\x8E\x8D" => '1f38d', 369 | "\xF0\x9F\x8E\x8E" => '1f38e', 370 | "\xF0\x9F\x8E\x8F" => '1f38f', 371 | "\xF0\x9F\x8E\x90" => '1f390', 372 | "\xF0\x9F\x8E\x91" => '1f391', 373 | "\xF0\x9F\x8E\x92" => '1f392', 374 | "\xF0\x9F\x8E\x93" => '1f393', 375 | "\xF0\x9F\x8E\xA0" => '1f3a0', 376 | "\xF0\x9F\x8E\xA1" => '1f3a1', 377 | "\xF0\x9F\x8E\xA2" => '1f3a2', 378 | "\xF0\x9F\x8E\xA3" => '1f3a3', 379 | "\xF0\x9F\x8E\xA4" => '1f3a4', 380 | "\xF0\x9F\x8E\xA5" => '1f3a5', 381 | "\xF0\x9F\x8E\xA6" => '1f3a6', 382 | "\xF0\x9F\x8E\xA7" => '1f3a7', 383 | "\xF0\x9F\x8E\xA8" => '1f3a8', 384 | "\xF0\x9F\x8E\xA9" => '1f3a9', 385 | "\xF0\x9F\x8E\xAA" => '1f3aa', 386 | "\xF0\x9F\x8E\xAB" => '1f3ab', 387 | "\xF0\x9F\x8E\xAC" => '1f3ac', 388 | "\xF0\x9F\x8E\xAD" => '1f3ad', 389 | "\xF0\x9F\x8E\xAE" => '1f3ae', 390 | "\xF0\x9F\x8E\xAF" => '1f3af', 391 | "\xF0\x9F\x8E\xB0" => '1f3b0', 392 | "\xF0\x9F\x8E\xB1" => '1f3b1', 393 | "\xF0\x9F\x8E\xB2" => '1f3b2', 394 | "\xF0\x9F\x8E\xB3" => '1f3b3', 395 | "\xF0\x9F\x8E\xB4" => '1f3b4', 396 | "\xF0\x9F\x8E\xB5" => '1f3b5', 397 | "\xF0\x9F\x8E\xB6" => '1f3b6', 398 | "\xF0\x9F\x8E\xB7" => '1f3b7', 399 | "\xF0\x9F\x8E\xB8" => '1f3b8', 400 | "\xF0\x9F\x8E\xB9" => '1f3b9', 401 | "\xF0\x9F\x8E\xBA" => '1f3ba', 402 | "\xF0\x9F\x8E\xBB" => '1f3bb', 403 | "\xF0\x9F\x8E\xBC" => '1f3bc', 404 | "\xF0\x9F\x8E\xBD" => '1f3bd', 405 | "\xF0\x9F\x8E\xBE" => '1f3be', 406 | "\xF0\x9F\x8E\xBF" => '1f3bf', 407 | "\xF0\x9F\x8F\x80" => '1f3c0', 408 | "\xF0\x9F\x8F\x81" => '1f3c1', 409 | "\xF0\x9F\x8F\x82" => '1f3c2', 410 | "\xF0\x9F\x8F\x83" => '1f3c3', 411 | "\xF0\x9F\x8F\x84" => '1f3c4', 412 | "\xF0\x9F\x8F\x86" => '1f3c6', 413 | "\xF0\x9F\x8F\x88" => '1f3c8', 414 | "\xF0\x9F\x8F\x8A" => '1f3ca', 415 | "\xF0\x9F\x8F\xA0" => '1f3e0', 416 | "\xF0\x9F\x8F\xA1" => '1f3e1', 417 | "\xF0\x9F\x8F\xA2" => '1f3e2', 418 | "\xF0\x9F\x8F\xA3" => '1f3e3', 419 | "\xF0\x9F\x8F\xA5" => '1f3e5', 420 | "\xF0\x9F\x8F\xA6" => '1f3e6', 421 | "\xF0\x9F\x8F\xA7" => '1f3e7', 422 | "\xF0\x9F\x8F\xA8" => '1f3e8', 423 | "\xF0\x9F\x8F\xA9" => '1f3e9', 424 | "\xF0\x9F\x8F\xAA" => '1f3ea', 425 | "\xF0\x9F\x8F\xAB" => '1f3eb', 426 | "\xF0\x9F\x8F\xAC" => '1f3ec', 427 | "\xF0\x9F\x8F\xAD" => '1f3ed', 428 | "\xF0\x9F\x8F\xAE" => '1f3ee', 429 | "\xF0\x9F\x8F\xAF" => '1f3ef', 430 | "\xF0\x9F\x8F\xB0" => '1f3f0', 431 | "\xF0\x9F\x90\x8C" => '1f40c', 432 | "\xF0\x9F\x90\x8D" => '1f40d', 433 | "\xF0\x9F\x90\x8E" => '1f40e', 434 | "\xF0\x9F\x90\x91" => '1f411', 435 | "\xF0\x9F\x90\x92" => '1f412', 436 | "\xF0\x9F\x90\x94" => '1f414', 437 | "\xF0\x9F\x90\x97" => '1f417', 438 | "\xF0\x9F\x90\x98" => '1f418', 439 | "\xF0\x9F\x90\x99" => '1f419', 440 | "\xF0\x9F\x90\x9A" => '1f41a', 441 | "\xF0\x9F\x90\x9B" => '1f41b', 442 | "\xF0\x9F\x90\x9C" => '1f41c', 443 | "\xF0\x9F\x90\x9D" => '1f41d', 444 | "\xF0\x9F\x90\x9E" => '1f41e', 445 | "\xF0\x9F\x90\x9F" => '1f41f', 446 | "\xF0\x9F\x90\xA0" => '1f420', 447 | "\xF0\x9F\x90\xA1" => '1f421', 448 | "\xF0\x9F\x90\xA2" => '1f422', 449 | "\xF0\x9F\x90\xA3" => '1f423', 450 | "\xF0\x9F\x90\xA4" => '1f424', 451 | "\xF0\x9F\x90\xA5" => '1f425', 452 | "\xF0\x9F\x90\xA6" => '1f426', 453 | "\xF0\x9F\x90\xA7" => '1f427', 454 | "\xF0\x9F\x90\xA8" => '1f428', 455 | "\xF0\x9F\x90\xA9" => '1f429', 456 | "\xF0\x9F\x90\xAB" => '1f42b', 457 | "\xF0\x9F\x90\xAC" => '1f42c', 458 | "\xF0\x9F\x90\xAD" => '1f42d', 459 | "\xF0\x9F\x90\xAE" => '1f42e', 460 | "\xF0\x9F\x90\xAF" => '1f42f', 461 | "\xF0\x9F\x90\xB0" => '1f430', 462 | "\xF0\x9F\x90\xB1" => '1f431', 463 | "\xF0\x9F\x90\xB2" => '1f432', 464 | "\xF0\x9F\x90\xB3" => '1f433', 465 | "\xF0\x9F\x90\xB4" => '1f434', 466 | "\xF0\x9F\x90\xB5" => '1f435', 467 | "\xF0\x9F\x90\xB6" => '1f436', 468 | "\xF0\x9F\x90\xB7" => '1f437', 469 | "\xF0\x9F\x90\xB8" => '1f438', 470 | "\xF0\x9F\x90\xB9" => '1f439', 471 | "\xF0\x9F\x90\xBA" => '1f43a', 472 | "\xF0\x9F\x90\xBB" => '1f43b', 473 | "\xF0\x9F\x90\xBC" => '1f43c', 474 | "\xF0\x9F\x90\xBD" => '1f43d', 475 | "\xF0\x9F\x90\xBE" => '1f43e', 476 | "\xF0\x9F\x91\x80" => '1f440', 477 | "\xF0\x9F\x91\x82" => '1f442', 478 | "\xF0\x9F\x91\x83" => '1f443', 479 | "\xF0\x9F\x91\x84" => '1f444', 480 | "\xF0\x9F\x91\x85" => '1f445', 481 | "\xF0\x9F\x91\x86" => '1f446', 482 | "\xF0\x9F\x91\x87" => '1f447', 483 | "\xF0\x9F\x91\x88" => '1f448', 484 | "\xF0\x9F\x91\x89" => '1f449', 485 | "\xF0\x9F\x91\x8A" => '1f44a', 486 | "\xF0\x9F\x91\x8B" => '1f44b', 487 | "\xF0\x9F\x91\x8C" => '1f44c', 488 | "\xF0\x9F\x91\x8D" => '1f44d', 489 | "\xF0\x9F\x91\x8E" => '1f44e', 490 | "\xF0\x9F\x91\x8F" => '1f44f', 491 | "\xF0\x9F\x91\x90" => '1f450', 492 | "\xF0\x9F\x91\x91" => '1f451', 493 | "\xF0\x9F\x91\x92" => '1f452', 494 | "\xF0\x9F\x91\x93" => '1f453', 495 | "\xF0\x9F\x91\x94" => '1f454', 496 | "\xF0\x9F\x91\x95" => '1f455', 497 | "\xF0\x9F\x91\x96" => '1f456', 498 | "\xF0\x9F\x91\x97" => '1f457', 499 | "\xF0\x9F\x91\x98" => '1f458', 500 | "\xF0\x9F\x91\x99" => '1f459', 501 | "\xF0\x9F\x91\x9A" => '1f45a', 502 | "\xF0\x9F\x91\x9B" => '1f45b', 503 | "\xF0\x9F\x91\x9C" => '1f45c', 504 | "\xF0\x9F\x91\x9D" => '1f45d', 505 | "\xF0\x9F\x91\x9E" => '1f45e', 506 | "\xF0\x9F\x91\x9F" => '1f45f', 507 | "\xF0\x9F\x91\xA0" => '1f460', 508 | "\xF0\x9F\x91\xA1" => '1f461', 509 | "\xF0\x9F\x91\xA2" => '1f462', 510 | "\xF0\x9F\x91\xA3" => '1f463', 511 | "\xF0\x9F\x91\xA4" => '1f464', 512 | "\xF0\x9F\x91\xA6" => '1f466', 513 | "\xF0\x9F\x91\xA7" => '1f467', 514 | "\xF0\x9F\x91\xA8" => '1f468', 515 | "\xF0\x9F\x91\xA9" => '1f469', 516 | "\xF0\x9F\x91\xAA" => '1f46a', 517 | "\xF0\x9F\x91\xAB" => '1f46b', 518 | "\xF0\x9F\x91\xAE" => '1f46e', 519 | "\xF0\x9F\x91\xAF" => '1f46f', 520 | "\xF0\x9F\x91\xB0" => '1f470', 521 | "\xF0\x9F\x91\xB1" => '1f471', 522 | "\xF0\x9F\x91\xB2" => '1f472', 523 | "\xF0\x9F\x91\xB3" => '1f473', 524 | "\xF0\x9F\x91\xB4" => '1f474', 525 | "\xF0\x9F\x91\xB5" => '1f475', 526 | "\xF0\x9F\x91\xB6" => '1f476', 527 | "\xF0\x9F\x91\xB7" => '1f477', 528 | "\xF0\x9F\x91\xB8" => '1f478', 529 | "\xF0\x9F\x91\xB9" => '1f479', 530 | "\xF0\x9F\x91\xBA" => '1f47a', 531 | "\xF0\x9F\x91\xBB" => '1f47b', 532 | "\xF0\x9F\x91\xBC" => '1f47c', 533 | "\xF0\x9F\x91\xBD" => '1f47d', 534 | "\xF0\x9F\x91\xBE" => '1f47e', 535 | "\xF0\x9F\x91\xBF" => '1f47f', 536 | "\xF0\x9F\x92\x80" => '1f480', 537 | "\xF0\x9F\x92\x81" => '1f481', 538 | "\xF0\x9F\x92\x82" => '1f482', 539 | "\xF0\x9F\x92\x83" => '1f483', 540 | "\xF0\x9F\x92\x84" => '1f484', 541 | "\xF0\x9F\x92\x85" => '1f485', 542 | "\xF0\x9F\x92\x86" => '1f486', 543 | "\xF0\x9F\x92\x87" => '1f487', 544 | "\xF0\x9F\x92\x88" => '1f488', 545 | "\xF0\x9F\x92\x89" => '1f489', 546 | "\xF0\x9F\x92\x8A" => '1f48a', 547 | "\xF0\x9F\x92\x8B" => '1f48b', 548 | "\xF0\x9F\x92\x8C" => '1f48c', 549 | "\xF0\x9F\x92\x8D" => '1f48d', 550 | "\xF0\x9F\x92\x8E" => '1f48e', 551 | "\xF0\x9F\x92\x8F" => '1f48f', 552 | "\xF0\x9F\x92\x90" => '1f490', 553 | "\xF0\x9F\x92\x91" => '1f491', 554 | "\xF0\x9F\x92\x92" => '1f492', 555 | "\xF0\x9F\x92\x93" => '1f493', 556 | "\xF0\x9F\x92\x94" => '1f494', 557 | "\xF0\x9F\x92\x95" => '1f495', 558 | "\xF0\x9F\x92\x96" => '1f496', 559 | "\xF0\x9F\x92\x97" => '1f497', 560 | "\xF0\x9F\x92\x98" => '1f498', 561 | "\xF0\x9F\x92\x99" => '1f499', 562 | "\xF0\x9F\x92\x9A" => '1f49a', 563 | "\xF0\x9F\x92\x9B" => '1f49b', 564 | "\xF0\x9F\x92\x9C" => '1f49c', 565 | "\xF0\x9F\x92\x9D" => '1f49d', 566 | "\xF0\x9F\x92\x9E" => '1f49e', 567 | "\xF0\x9F\x92\x9F" => '1f49f', 568 | "\xF0\x9F\x92\xA0" => '1f4a0', 569 | "\xF0\x9F\x92\xA1" => '1f4a1', 570 | "\xF0\x9F\x92\xA2" => '1f4a2', 571 | "\xF0\x9F\x92\xA3" => '1f4a3', 572 | "\xF0\x9F\x92\xA4" => '1f4a4', 573 | "\xF0\x9F\x92\xA5" => '1f4a5', 574 | "\xF0\x9F\x92\xA6" => '1f4a6', 575 | "\xF0\x9F\x92\xA7" => '1f4a7', 576 | "\xF0\x9F\x92\xA8" => '1f4a8', 577 | "\xF0\x9F\x92\xA9" => '1f4a9', 578 | "\xF0\x9F\x92\xAA" => '1f4aa', 579 | "\xF0\x9F\x92\xAB" => '1f4ab', 580 | "\xF0\x9F\x92\xAC" => '1f4ac', 581 | "\xF0\x9F\x92\xAE" => '1f4ae', 582 | "\xF0\x9F\x92\xAF" => '1f4af', 583 | "\xF0\x9F\x92\xB0" => '1f4b0', 584 | "\xF0\x9F\x92\xB1" => '1f4b1', 585 | "\xF0\x9F\x92\xB2" => '1f4b2', 586 | "\xF0\x9F\x92\xB3" => '1f4b3', 587 | "\xF0\x9F\x92\xB4" => '1f4b4', 588 | "\xF0\x9F\x92\xB5" => '1f4b5', 589 | "\xF0\x9F\x92\xB8" => '1f4b8', 590 | "\xF0\x9F\x92\xB9" => '1f4b9', 591 | "\xF0\x9F\x92\xBA" => '1f4ba', 592 | "\xF0\x9F\x92\xBB" => '1f4bb', 593 | "\xF0\x9F\x92\xBC" => '1f4bc', 594 | "\xF0\x9F\x92\xBD" => '1f4bd', 595 | "\xF0\x9F\x92\xBE" => '1f4be', 596 | "\xF0\x9F\x92\xBF" => '1f4bf', 597 | "\xF0\x9F\x93\x80" => '1f4c0', 598 | "\xF0\x9F\x93\x81" => '1f4c1', 599 | "\xF0\x9F\x93\x82" => '1f4c2', 600 | "\xF0\x9F\x93\x83" => '1f4c3', 601 | "\xF0\x9F\x93\x84" => '1f4c4', 602 | "\xF0\x9F\x93\x85" => '1f4c5', 603 | "\xF0\x9F\x93\x86" => '1f4c6', 604 | "\xF0\x9F\x93\x87" => '1f4c7', 605 | "\xF0\x9F\x93\x88" => '1f4c8', 606 | "\xF0\x9F\x93\x89" => '1f4c9', 607 | "\xF0\x9F\x93\x8A" => '1f4ca', 608 | "\xF0\x9F\x93\x8B" => '1f4cb', 609 | "\xF0\x9F\x93\x8C" => '1f4cc', 610 | "\xF0\x9F\x93\x8D" => '1f4cd', 611 | "\xF0\x9F\x93\x8E" => '1f4ce', 612 | "\xF0\x9F\x93\x8F" => '1f4cf', 613 | "\xF0\x9F\x93\x90" => '1f4d0', 614 | "\xF0\x9F\x93\x91" => '1f4d1', 615 | "\xF0\x9F\x93\x92" => '1f4d2', 616 | "\xF0\x9F\x93\x93" => '1f4d3', 617 | "\xF0\x9F\x93\x94" => '1f4d4', 618 | "\xF0\x9F\x93\x95" => '1f4d5', 619 | "\xF0\x9F\x93\x96" => '1f4d6', 620 | "\xF0\x9F\x93\x97" => '1f4d7', 621 | "\xF0\x9F\x93\x98" => '1f4d8', 622 | "\xF0\x9F\x93\x99" => '1f4d9', 623 | "\xF0\x9F\x93\x9A" => '1f4da', 624 | "\xF0\x9F\x93\x9B" => '1f4db', 625 | "\xF0\x9F\x93\x9C" => '1f4dc', 626 | "\xF0\x9F\x93\x9D" => '1f4dd', 627 | "\xF0\x9F\x93\x9E" => '1f4de', 628 | "\xF0\x9F\x93\x9F" => '1f4df', 629 | "\xF0\x9F\x93\xA0" => '1f4e0', 630 | "\xF0\x9F\x93\xA1" => '1f4e1', 631 | "\xF0\x9F\x93\xA2" => '1f4e2', 632 | "\xF0\x9F\x93\xA3" => '1f4e3', 633 | "\xF0\x9F\x93\xA4" => '1f4e4', 634 | "\xF0\x9F\x93\xA5" => '1f4e5', 635 | "\xF0\x9F\x93\xA6" => '1f4e6', 636 | "\xF0\x9F\x93\xA7" => '1f4e7', 637 | "\xF0\x9F\x93\xA8" => '1f4e8', 638 | "\xF0\x9F\x93\xA9" => '1f4e9', 639 | "\xF0\x9F\x93\xAA" => '1f4ea', 640 | "\xF0\x9F\x93\xAB" => '1f4eb', 641 | "\xF0\x9F\x93\xAE" => '1f4ee', 642 | "\xF0\x9F\x93\xB0" => '1f4f0', 643 | "\xF0\x9F\x93\xB1" => '1f4f1', 644 | "\xF0\x9F\x93\xB2" => '1f4f2', 645 | "\xF0\x9F\x93\xB3" => '1f4f3', 646 | "\xF0\x9F\x93\xB4" => '1f4f4', 647 | "\xF0\x9F\x93\xB6" => '1f4f6', 648 | "\xF0\x9F\x93\xB7" => '1f4f7', 649 | "\xF0\x9F\x93\xB9" => '1f4f9', 650 | "\xF0\x9F\x93\xBA" => '1f4fa', 651 | "\xF0\x9F\x93\xBB" => '1f4fb', 652 | "\xF0\x9F\x93\xBC" => '1f4fc', 653 | "\xF0\x9F\x94\x83" => '1f503', 654 | "\xF0\x9F\x94\x8A" => '1f50a', 655 | "\xF0\x9F\x94\x8B" => '1f50b', 656 | "\xF0\x9F\x94\x8C" => '1f50c', 657 | "\xF0\x9F\x94\x8D" => '1f50d', 658 | "\xF0\x9F\x94\x8E" => '1f50e', 659 | "\xF0\x9F\x94\x8F" => '1f50f', 660 | "\xF0\x9F\x94\x90" => '1f510', 661 | "\xF0\x9F\x94\x91" => '1f511', 662 | "\xF0\x9F\x94\x92" => '1f512', 663 | "\xF0\x9F\x94\x93" => '1f513', 664 | "\xF0\x9F\x94\x94" => '1f514', 665 | "\xF0\x9F\x94\x96" => '1f516', 666 | "\xF0\x9F\x94\x97" => '1f517', 667 | "\xF0\x9F\x94\x98" => '1f518', 668 | "\xF0\x9F\x94\x99" => '1f519', 669 | "\xF0\x9F\x94\x9A" => '1f51a', 670 | "\xF0\x9F\x94\x9B" => '1f51b', 671 | "\xF0\x9F\x94\x9C" => '1f51c', 672 | "\xF0\x9F\x94\x9D" => '1f51d', 673 | "\xF0\x9F\x94\x9E" => '1f51e', 674 | "\xF0\x9F\x94\x9F" => '1f51f', 675 | "\xF0\x9F\x94\xA0" => '1f520', 676 | "\xF0\x9F\x94\xA1" => '1f521', 677 | "\xF0\x9F\x94\xA2" => '1f522', 678 | "\xF0\x9F\x94\xA3" => '1f523', 679 | "\xF0\x9F\x94\xA4" => '1f524', 680 | "\xF0\x9F\x94\xA5" => '1f525', 681 | "\xF0\x9F\x94\xA6" => '1f526', 682 | "\xF0\x9F\x94\xA7" => '1f527', 683 | "\xF0\x9F\x94\xA8" => '1f528', 684 | "\xF0\x9F\x94\xA9" => '1f529', 685 | "\xF0\x9F\x94\xAA" => '1f52a', 686 | "\xF0\x9F\x94\xAB" => '1f52b', 687 | "\xF0\x9F\x94\xAE" => '1f52e', 688 | "\xF0\x9F\x94\xAF" => '1f52f', 689 | "\xF0\x9F\x94\xB0" => '1f530', 690 | "\xF0\x9F\x94\xB1" => '1f531', 691 | "\xF0\x9F\x94\xB2" => '1f532', 692 | "\xF0\x9F\x94\xB3" => '1f533', 693 | "\xF0\x9F\x94\xB4" => '1f534', 694 | "\xF0\x9F\x94\xB5" => '1f535', 695 | "\xF0\x9F\x94\xB6" => '1f536', 696 | "\xF0\x9F\x94\xB7" => '1f537', 697 | "\xF0\x9F\x94\xB8" => '1f538', 698 | "\xF0\x9F\x94\xB9" => '1f539', 699 | "\xF0\x9F\x94\xBA" => '1f53a', 700 | "\xF0\x9F\x94\xBB" => '1f53b', 701 | "\xF0\x9F\x94\xBC" => '1f53c', 702 | "\xF0\x9F\x94\xBD" => '1f53d', 703 | "\xF0\x9F\x95\x90" => '1f550', 704 | "\xF0\x9F\x95\x91" => '1f551', 705 | "\xF0\x9F\x95\x92" => '1f552', 706 | "\xF0\x9F\x95\x93" => '1f553', 707 | "\xF0\x9F\x95\x94" => '1f554', 708 | "\xF0\x9F\x95\x95" => '1f555', 709 | "\xF0\x9F\x95\x96" => '1f556', 710 | "\xF0\x9F\x95\x97" => '1f557', 711 | "\xF0\x9F\x95\x98" => '1f558', 712 | "\xF0\x9F\x95\x99" => '1f559', 713 | "\xF0\x9F\x95\x9A" => '1f55a', 714 | "\xF0\x9F\x95\x9B" => '1f55b', 715 | "\xF0\x9F\x97\xBB" => '1f5fb', 716 | "\xF0\x9F\x97\xBC" => '1f5fc', 717 | "\xF0\x9F\x97\xBD" => '1f5fd', 718 | "\xF0\x9F\x97\xBE" => '1f5fe', 719 | "\xF0\x9F\x97\xBF" => '1f5ff', 720 | "\xF0\x9F\x98\x80" => '1f600', 721 | "\xF0\x9F\x98\x87" => '1f607', 722 | "\xF0\x9F\x98\x88" => '1f608', 723 | "\xF0\x9F\x98\x8E" => '1f60e', 724 | "\xF0\x9F\x98\x90" => '1f610', 725 | "\xF0\x9F\x98\x91" => '1f611', 726 | "\xF0\x9F\x98\x95" => '1f615', 727 | "\xF0\x9F\x98\x97" => '1f617', 728 | "\xF0\x9F\x98\x99" => '1f619', 729 | "\xF0\x9F\x98\x9B" => '1f61b', 730 | "\xF0\x9F\x98\x9F" => '1f61f', 731 | "\xF0\x9F\x98\xA6" => '1f626', 732 | "\xF0\x9F\x98\xA7" => '1f627', 733 | "\xF0\x9F\x98\xAC" => '1f62c', 734 | "\xF0\x9F\x98\xAE" => '1f62e', 735 | "\xF0\x9F\x98\xAF" => '1f62f', 736 | "\xF0\x9F\x98\xB4" => '1f634', 737 | "\xF0\x9F\x98\xB6" => '1f636', 738 | "\xF0\x9F\x9A\x81" => '1f681', 739 | "\xF0\x9F\x9A\x82" => '1f682', 740 | "\xF0\x9F\x9A\x86" => '1f686', 741 | "\xF0\x9F\x9A\x88" => '1f688', 742 | "\xF0\x9F\x9A\x8A" => '1f68a', 743 | "\xF0\x9F\x9A\x8D" => '1f68d', 744 | "\xF0\x9F\x9A\x8E" => '1f68e', 745 | "\xF0\x9F\x9A\x90" => '1f690', 746 | "\xF0\x9F\x9A\x94" => '1f694', 747 | "\xF0\x9F\x9A\x96" => '1f696', 748 | "\xF0\x9F\x9A\x98" => '1f698', 749 | "\xF0\x9F\x9A\x9B" => '1f69b', 750 | "\xF0\x9F\x9A\x9C" => '1f69c', 751 | "\xF0\x9F\x9A\x9D" => '1f69d', 752 | "\xF0\x9F\x9A\x9E" => '1f69e', 753 | "\xF0\x9F\x9A\x9F" => '1f69f', 754 | "\xF0\x9F\x9A\xA0" => '1f6a0', 755 | "\xF0\x9F\x9A\xA1" => '1f6a1', 756 | "\xF0\x9F\x9A\xA3" => '1f6a3', 757 | "\xF0\x9F\x9A\xA6" => '1f6a6', 758 | "\xF0\x9F\x9A\xAE" => '1f6ae', 759 | "\xF0\x9F\x9A\xAF" => '1f6af', 760 | "\xF0\x9F\x9A\xB0" => '1f6b0', 761 | "\xF0\x9F\x9A\xB1" => '1f6b1', 762 | "\xF0\x9F\x9A\xB3" => '1f6b3', 763 | "\xF0\x9F\x9A\xB4" => '1f6b4', 764 | "\xF0\x9F\x9A\xB5" => '1f6b5', 765 | "\xF0\x9F\x9A\xB7" => '1f6b7', 766 | "\xF0\x9F\x9A\xB8" => '1f6b8', 767 | "\xF0\x9F\x9A\xBF" => '1f6bf', 768 | "\xF0\x9F\x9B\x81" => '1f6c1', 769 | "\xF0\x9F\x9B\x82" => '1f6c2', 770 | "\xF0\x9F\x9B\x83" => '1f6c3', 771 | "\xF0\x9F\x9B\x84" => '1f6c4', 772 | "\xF0\x9F\x9B\x85" => '1f6c5', 773 | "\xF0\x9F\x8C\x8D" => '1f30d', 774 | "\xF0\x9F\x8C\x8E" => '1f30e', 775 | "\xF0\x9F\x8C\x90" => '1f310', 776 | "\xF0\x9F\x8C\x92" => '1f312', 777 | "\xF0\x9F\x8C\x96" => '1f316', 778 | "\xF0\x9F\x8C\x97" => '1f317', 779 | "\xF0\x9F\x8C\x98" => '1f318', 780 | "\xF0\x9F\x8C\x9A" => '1f31a', 781 | "\xF0\x9F\x8C\x9C" => '1f31c', 782 | "\xF0\x9F\x8C\x9D" => '1f31d', 783 | "\xF0\x9F\x8C\x9E" => '1f31e', 784 | "\xF0\x9F\x8C\xB2" => '1f332', 785 | "\xF0\x9F\x8C\xB3" => '1f333', 786 | "\xF0\x9F\x8D\x8B" => '1f34b', 787 | "\xF0\x9F\x8D\x90" => '1f350', 788 | "\xF0\x9F\x8D\xBC" => '1f37c', 789 | "\xF0\x9F\x8F\x87" => '1f3c7', 790 | "\xF0\x9F\x8F\x89" => '1f3c9', 791 | "\xF0\x9F\x8F\xA4" => '1f3e4', 792 | "\xF0\x9F\x90\x80" => '1f400', 793 | "\xF0\x9F\x90\x81" => '1f401', 794 | "\xF0\x9F\x90\x82" => '1f402', 795 | "\xF0\x9F\x90\x83" => '1f403', 796 | "\xF0\x9F\x90\x84" => '1f404', 797 | "\xF0\x9F\x90\x85" => '1f405', 798 | "\xF0\x9F\x90\x86" => '1f406', 799 | "\xF0\x9F\x90\x87" => '1f407', 800 | "\xF0\x9F\x90\x88" => '1f408', 801 | "\xF0\x9F\x90\x89" => '1f409', 802 | "\xF0\x9F\x90\x8A" => '1f40a', 803 | "\xF0\x9F\x90\x8B" => '1f40b', 804 | "\xF0\x9F\x90\x8F" => '1f40f', 805 | "\xF0\x9F\x90\x90" => '1f410', 806 | "\xF0\x9F\x90\x93" => '1f413', 807 | "\xF0\x9F\x90\x95" => '1f415', 808 | "\xF0\x9F\x90\x96" => '1f416', 809 | "\xF0\x9F\x90\xAA" => '1f42a', 810 | "\xF0\x9F\x91\xA5" => '1f465', 811 | "\xF0\x9F\x91\xAC" => '1f46c', 812 | "\xF0\x9F\x91\xAD" => '1f46d', 813 | "\xF0\x9F\x92\xAD" => '1f4ad', 814 | "\xF0\x9F\x92\xB6" => '1f4b6', 815 | "\xF0\x9F\x92\xB7" => '1f4b7', 816 | "\xF0\x9F\x93\xAC" => '1f4ec', 817 | "\xF0\x9F\x93\xAD" => '1f4ed', 818 | "\xF0\x9F\x93\xAF" => '1f4ef', 819 | "\xF0\x9F\x93\xB5" => '1f4f5', 820 | "\xF0\x9F\x94\x80" => '1f500', 821 | "\xF0\x9F\x94\x81" => '1f501', 822 | "\xF0\x9F\x94\x82" => '1f502', 823 | "\xF0\x9F\x94\x84" => '1f504', 824 | "\xF0\x9F\x94\x85" => '1f505', 825 | "\xF0\x9F\x94\x86" => '1f506', 826 | "\xF0\x9F\x94\x87" => '1f507', 827 | "\xF0\x9F\x94\x89" => '1f509', 828 | "\xF0\x9F\x94\x95" => '1f515', 829 | "\xF0\x9F\x94\xAC" => '1f52c', 830 | "\xF0\x9F\x94\xAD" => '1f52d', 831 | "\xF0\x9F\x95\x9C" => '1f55c', 832 | "\xF0\x9F\x95\x9D" => '1f55d', 833 | "\xF0\x9F\x95\x9E" => '1f55e', 834 | "\xF0\x9F\x95\x9F" => '1f55f', 835 | "\xF0\x9F\x95\xA0" => '1f560', 836 | "\xF0\x9F\x95\xA1" => '1f561', 837 | "\xF0\x9F\x95\xA2" => '1f562', 838 | "\xF0\x9F\x95\xA3" => '1f563', 839 | "\xF0\x9F\x95\xA4" => '1f564', 840 | "\xF0\x9F\x95\xA5" => '1f565', 841 | "\xF0\x9F\x95\xA6" => '1f566', 842 | "\xF0\x9F\x95\xA7" => '1f567', 843 | ); 844 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/README.md: -------------------------------------------------------------------------------- 1 | # Translating Twitter API Wordpress Plugin 2 | 3 | If you'd like to translate this plugin into your language, please [get in touch](https://twitter.com/timwhitlock). 4 | 5 | Messages here are for the admin screens plus common Twitter-related phrases you might need in your plugin. 6 | Additional translations for unlikely technical errors are in the extras folder as seprate files. 7 | 8 | ### Contributers: 9 | 10 | Many thanks to the following translators: 11 | 12 | * **pt_BR** [Leandro Dimitrio](http://wordpress.org/support/profile/leandrodimitrio) 13 | * **de_DE** [Florian Felsing](https://twitter.com/FlorianFelsing) and [David Noh](http://wordpress.org/support/profile/david_noh) 14 | * **ru_RU** [Andrey Yakovenko](https://twitter.com/YakovenkoAndrey) 15 | * **nl_NL** [Daniel Wichers](https://twitter.com/dwichers) 16 | * **es_ES** [Pedro Pica](http://minimizo.com) 17 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-de_DE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/extra/twitter-errors-de_DE.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-de_DE.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: German\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: de_DE\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Error codes\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../../api/lang/extra-strings.php:18 loco:5505af7214d72572078b4586 23 | msgid "Accepted" 24 | msgstr "Akzeptiert" 25 | 26 | #: ../../../api/lang/extra-strings.php:42 loco:5505af7214d72572078b459a 27 | msgid "Conflict" 28 | msgstr "" 29 | 30 | #: ../../../api/lang/extra-strings.php:13 loco:5505af7214d72572078b4582 31 | msgid "Continue" 32 | msgstr "Weiter" 33 | 34 | #: ../../../api/lang/extra-strings.php:17 loco:5505af7214d72572078b4585 35 | msgid "Created" 36 | msgstr "Erstellt" 37 | 38 | #: ../../../api/lang/extra-strings.php:36 loco:5505af7214d72572078b4595 39 | msgid "Forbidden" 40 | msgstr "" 41 | 42 | #: ../../../api/lang/extra-strings.php:27 loco:5505af7214d72572078b458d 43 | msgid "Found" 44 | msgstr "Gefunden" 45 | 46 | #: ../../../api/lang/extra-strings.php:43 loco:5505af7214d72572078b459b 47 | msgid "Gone" 48 | msgstr "" 49 | 50 | #: ../../../api/lang/extra-strings.php:53 loco:5505af7214d72572078b456c 51 | msgid "Locked" 52 | msgstr "" 53 | 54 | #: ../../../api/lang/extra-strings.php:23 loco:5505af7214d72572078b4568 55 | msgid "Multi-Status" 56 | msgstr "" 57 | 58 | #: ../../../api/lang/extra-strings.php:16 loco:5505af7214d72572078b4584 59 | msgid "OK" 60 | msgstr "OK" 61 | 62 | #: ../../../api/lang/extra-strings.php:15 loco:5505af7214d72572078b4567 63 | msgid "Processing" 64 | msgstr "" 65 | 66 | #: ../../../api/lang/extra-strings.php:31 loco:5505af7214d72572078b456a 67 | msgid "Reserved" 68 | msgstr "" 69 | 70 | #: ../../../api/lang/extra-strings.php:34 loco:5505af7214d72572078b4593 71 | msgid "Unauthorized" 72 | msgstr "" 73 | 74 | #: ../../../api/lang/extra-strings.php:61 loco:5505af7214d72572078b456e 75 | msgid "Bad Gateway" 76 | msgstr "" 77 | 78 | #: ../../../api/lang/extra-strings.php:33 loco:5505af7214d72572078b4592 79 | msgid "Bad Request" 80 | msgstr "" 81 | 82 | #: ../../../api/lang/extra-strings.php:50 loco:5505af7214d72572078b45a0 83 | msgid "Expectation Failed" 84 | msgstr "" 85 | 86 | #: ../../../api/lang/extra-strings.php:54 loco:5505af7214d72572078b456d 87 | msgid "Failed Dependency" 88 | msgstr "" 89 | 90 | #: ../../../api/lang/extra-strings.php:63 loco:5505af7214d72572078b457b 91 | msgid "Gateway Timeout" 92 | msgstr "" 93 | 94 | #: ../../../api/lang/extra-strings.php:64 loco:5505af7214d72572078b457c 95 | msgid "HTTP Version Not Supported" 96 | msgstr "HTTP Version wird nicht unterstützt" 97 | 98 | #: ../../../api/lang/extra-strings.php:24 loco:5505af7214d72572078b4569 99 | msgid "IM Used" 100 | msgstr "" 101 | 102 | #: ../../../api/lang/extra-strings.php:66 loco:5505af7214d72572078b4571 103 | msgid "Insufficient Storage" 104 | msgstr "" 105 | 106 | #: ../../../api/lang/extra-strings.php:59 loco:5505af7214d72572078b457a 107 | msgid "Internal Server Error" 108 | msgstr "Twitter Server Fehler" 109 | 110 | #: ../../../api/lang/extra-strings.php:44 loco:5505af7214d72572078b459c 111 | msgid "Length Required" 112 | msgstr "" 113 | 114 | #: ../../../api/lang/extra-strings.php:38 loco:5505af7214d72572078b4597 115 | msgid "Method Not Allowed" 116 | msgstr "" 117 | 118 | #: ../../../api/lang/extra-strings.php:26 loco:5505af7214d72572078b458c 119 | msgid "Moved Permanently" 120 | msgstr "" 121 | 122 | #: ../../../api/lang/extra-strings.php:25 loco:5505af7214d72572078b458b 123 | msgid "Multiple Choices" 124 | msgstr "" 125 | 126 | #: ../../../api/lang/extra-strings.php:68 loco:5505af7214d72572078b457d 127 | msgid "Network Authentication Required" 128 | msgstr "Einstellungen zur Twitter API Authentifizierung" 129 | 130 | #: ../../../api/lang/extra-strings.php:20 loco:5505af7214d72572078b4588 131 | msgid "No Content" 132 | msgstr "Kein Inhalt" 133 | 134 | #: ../../../api/lang/extra-strings.php:19 loco:5505af7214d72572078b4587 135 | msgid "Non-Authoritative Information" 136 | msgstr "" 137 | 138 | #: ../../../api/lang/extra-strings.php:39 loco:5505af7214d72572078b4598 139 | msgid "Not Acceptable" 140 | msgstr "" 141 | 142 | #: ../../../api/lang/extra-strings.php:67 loco:5505af7214d72572078b4572 143 | msgid "Not Extended" 144 | msgstr "" 145 | 146 | #: ../../../api/lang/extra-strings.php:37 loco:5505af7214d72572078b4596 147 | msgid "Not Found" 148 | msgstr "" 149 | 150 | #: ../../../api/lang/extra-strings.php:60 loco:5505af7214d72572078b45a1 151 | msgid "Not Implemented" 152 | msgstr "Nicht implementiert" 153 | 154 | #: ../../../api/lang/extra-strings.php:29 loco:5505af7214d72572078b458f 155 | msgid "Not Modified" 156 | msgstr "Nicht modifiziert" 157 | 158 | #: ../../../api/lang/extra-strings.php:22 loco:5505af7214d72572078b458a 159 | msgid "Partial Content" 160 | msgstr "" 161 | 162 | #: ../../../api/lang/extra-strings.php:35 loco:5505af7214d72572078b4594 163 | msgid "Payment Required" 164 | msgstr "" 165 | 166 | #: ../../../api/lang/extra-strings.php:45 loco:5505af7214d72572078b459d 167 | msgid "Precondition Failed" 168 | msgstr "" 169 | 170 | #: ../../../api/lang/extra-strings.php:56 loco:5505af7214d72572078b4577 171 | msgid "Precondition Required" 172 | msgstr "" 173 | 174 | #: ../../../api/lang/extra-strings.php:40 loco:5505af7214d72572078b4599 175 | msgid "Proxy Authentication Required" 176 | msgstr "" 177 | 178 | #: ../../../api/lang/extra-strings.php:46 loco:5505af7214d72572078b459e 179 | msgid "Request Entity Too Large" 180 | msgstr "" 181 | 182 | #: ../../../api/lang/extra-strings.php:58 loco:5505af7214d72572078b4579 183 | msgid "Request Header Fields Too Large" 184 | msgstr "" 185 | 186 | #: ../../../api/lang/extra-strings.php:41 loco:5505af7214d72572078b4573 187 | msgid "Request Timeout" 188 | msgstr "" 189 | 190 | #: ../../../api/lang/extra-strings.php:47 loco:5505af7214d72572078b4574 191 | msgid "Request-URI Too Long" 192 | msgstr "" 193 | 194 | #: ../../../api/lang/extra-strings.php:49 loco:5505af7214d72572078b4575 195 | msgid "Requested Range Not Satisfiable" 196 | msgstr "" 197 | 198 | #: ../../../api/lang/extra-strings.php:21 loco:5505af7214d72572078b4589 199 | msgid "Reset Content" 200 | msgstr "" 201 | 202 | #: ../../../api/lang/extra-strings.php:28 loco:5505af7214d72572078b458e 203 | msgid "See Other" 204 | msgstr "" 205 | 206 | #: ../../../api/lang/extra-strings.php:62 loco:5505af7214d72572078b456f 207 | msgid "Service Unavailable" 208 | msgstr "" 209 | 210 | #: ../../../api/lang/extra-strings.php:14 loco:5505af7214d72572078b4583 211 | msgid "Switching Protocols" 212 | msgstr "Protokoll wird gewechselt" 213 | 214 | #: ../../../api/lang/extra-strings.php:32 loco:5505af7214d72572078b4591 215 | msgid "Temporary Redirect" 216 | msgstr "" 217 | 218 | #: ../../../api/lang/extra-strings.php:57 loco:5505af7214d72572078b4578 219 | msgid "Too Many Requests" 220 | msgstr "" 221 | 222 | #: ../../../api/lang/extra-strings.php:7 loco:5505af7214d72572078b457e 223 | msgid "Twitter API rate limit exceeded" 224 | msgstr "" 225 | 226 | #: ../../../api/lang/extra-strings.php:9 loco:5505af7214d72572078b4580 227 | msgid "Twitter is not responding" 228 | msgstr "Twitter antwortet nicht" 229 | 230 | #: ../../../api/lang/extra-strings.php:10 loco:5505af7214d72572078b4581 231 | msgid "Twitter is too busy to respond" 232 | msgstr "" 233 | 234 | #: ../../../api/lang/extra-strings.php:8 loco:5505af7214d72572078b457f 235 | msgid "Twitter server error" 236 | msgstr "Twitter Server Fehler" 237 | 238 | #: ../../../api/lang/extra-strings.php:52 loco:5505af7214d72572078b456b 239 | msgid "Unprocessable Entity" 240 | msgstr "" 241 | 242 | #: ../../../api/lang/extra-strings.php:48 loco:5505af7214d72572078b459f 243 | msgid "Unsupported Media Type" 244 | msgstr "" 245 | 246 | #: ../../../api/lang/extra-strings.php:55 loco:5505af7214d72572078b4576 247 | msgid "Upgrade Required" 248 | msgstr "" 249 | 250 | #: ../../../api/lang/extra-strings.php:30 loco:5505af7214d72572078b4590 251 | msgid "Use Proxy" 252 | msgstr "" 253 | 254 | #: ../../../api/lang/extra-strings.php:65 loco:5505af7214d72572078b4570 255 | msgid "Variant Also Negotiates" 256 | msgstr "" 257 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-es_ES.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/extra/twitter-errors-es_ES.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-es_ES.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Spanish\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: es_ES\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Error codes\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../../api/lang/extra-strings.php:18 loco:5505af7214d72572078b4586 23 | msgid "Accepted" 24 | msgstr "Aceptado" 25 | 26 | #: ../../../api/lang/extra-strings.php:42 loco:5505af7214d72572078b459a 27 | msgid "Conflict" 28 | msgstr "Conflicto" 29 | 30 | #: ../../../api/lang/extra-strings.php:13 loco:5505af7214d72572078b4582 31 | msgid "Continue" 32 | msgstr "Continuar" 33 | 34 | #: ../../../api/lang/extra-strings.php:17 loco:5505af7214d72572078b4585 35 | msgid "Created" 36 | msgstr "Creado" 37 | 38 | #: ../../../api/lang/extra-strings.php:36 loco:5505af7214d72572078b4595 39 | msgid "Forbidden" 40 | msgstr "Prohibido" 41 | 42 | #: ../../../api/lang/extra-strings.php:27 loco:5505af7214d72572078b458d 43 | msgid "Found" 44 | msgstr "Encontrado" 45 | 46 | #: ../../../api/lang/extra-strings.php:43 loco:5505af7214d72572078b459b 47 | msgid "Gone" 48 | msgstr "Ido" 49 | 50 | #: ../../../api/lang/extra-strings.php:53 loco:5505af7214d72572078b456c 51 | msgid "Locked" 52 | msgstr "" 53 | 54 | #: ../../../api/lang/extra-strings.php:23 loco:5505af7214d72572078b4568 55 | msgid "Multi-Status" 56 | msgstr "" 57 | 58 | #: ../../../api/lang/extra-strings.php:16 loco:5505af7214d72572078b4584 59 | msgid "OK" 60 | msgstr "OK" 61 | 62 | #: ../../../api/lang/extra-strings.php:15 loco:5505af7214d72572078b4567 63 | msgid "Processing" 64 | msgstr "" 65 | 66 | #: ../../../api/lang/extra-strings.php:31 loco:5505af7214d72572078b456a 67 | msgid "Reserved" 68 | msgstr "" 69 | 70 | #: ../../../api/lang/extra-strings.php:34 loco:5505af7214d72572078b4593 71 | msgid "Unauthorized" 72 | msgstr "Autorización exigida" 73 | 74 | #: ../../../api/lang/extra-strings.php:61 loco:5505af7214d72572078b456e 75 | msgid "Bad Gateway" 76 | msgstr "" 77 | 78 | #: ../../../api/lang/extra-strings.php:33 loco:5505af7214d72572078b4592 79 | msgid "Bad Request" 80 | msgstr "Solicitud Incorrecta" 81 | 82 | #: ../../../api/lang/extra-strings.php:50 loco:5505af7214d72572078b45a0 83 | msgid "Expectation Failed" 84 | msgstr "La expectativa ha fallado" 85 | 86 | #: ../../../api/lang/extra-strings.php:54 loco:5505af7214d72572078b456d 87 | msgid "Failed Dependency" 88 | msgstr "" 89 | 90 | #: ../../../api/lang/extra-strings.php:63 loco:5505af7214d72572078b457b 91 | msgid "Gateway Timeout" 92 | msgstr "Puerta de enlace fuera de tiempo" 93 | 94 | #: ../../../api/lang/extra-strings.php:64 loco:5505af7214d72572078b457c 95 | msgid "HTTP Version Not Supported" 96 | msgstr "Versión HTTP no soportada" 97 | 98 | #: ../../../api/lang/extra-strings.php:24 loco:5505af7214d72572078b4569 99 | msgid "IM Used" 100 | msgstr "" 101 | 102 | #: ../../../api/lang/extra-strings.php:66 loco:5505af7214d72572078b4571 103 | msgid "Insufficient Storage" 104 | msgstr "" 105 | 106 | #: ../../../api/lang/extra-strings.php:59 loco:5505af7214d72572078b457a 107 | msgid "Internal Server Error" 108 | msgstr "Error del Servidor de Twitter" 109 | 110 | #: ../../../api/lang/extra-strings.php:44 loco:5505af7214d72572078b459c 111 | msgid "Length Required" 112 | msgstr "Longitud requerida" 113 | 114 | #: ../../../api/lang/extra-strings.php:38 loco:5505af7214d72572078b4597 115 | msgid "Method Not Allowed" 116 | msgstr "Método no Permitido" 117 | 118 | #: ../../../api/lang/extra-strings.php:26 loco:5505af7214d72572078b458c 119 | msgid "Moved Permanently" 120 | msgstr "Movido permanentemente" 121 | 122 | #: ../../../api/lang/extra-strings.php:25 loco:5505af7214d72572078b458b 123 | msgid "Multiple Choices" 124 | msgstr "Múltiples elecciones" 125 | 126 | #: ../../../api/lang/extra-strings.php:68 loco:5505af7214d72572078b457d 127 | msgid "Network Authentication Required" 128 | msgstr "Autenticación de proxy requerida" 129 | 130 | #: ../../../api/lang/extra-strings.php:20 loco:5505af7214d72572078b4588 131 | msgid "No Content" 132 | msgstr "Sin contenido" 133 | 134 | #: ../../../api/lang/extra-strings.php:19 loco:5505af7214d72572078b4587 135 | msgid "Non-Authoritative Information" 136 | msgstr "Información no autorizada" 137 | 138 | #: ../../../api/lang/extra-strings.php:39 loco:5505af7214d72572078b4598 139 | msgid "Not Acceptable" 140 | msgstr "No aceptable" 141 | 142 | #: ../../../api/lang/extra-strings.php:67 loco:5505af7214d72572078b4572 143 | msgid "Not Extended" 144 | msgstr "" 145 | 146 | #: ../../../api/lang/extra-strings.php:37 loco:5505af7214d72572078b4596 147 | msgid "Not Found" 148 | msgstr "No encontrado" 149 | 150 | #: ../../../api/lang/extra-strings.php:60 loco:5505af7214d72572078b45a1 151 | msgid "Not Implemented" 152 | msgstr "No implementado" 153 | 154 | #: ../../../api/lang/extra-strings.php:29 loco:5505af7214d72572078b458f 155 | msgid "Not Modified" 156 | msgstr "No modificado" 157 | 158 | #: ../../../api/lang/extra-strings.php:22 loco:5505af7214d72572078b458a 159 | msgid "Partial Content" 160 | msgstr "Contenido parcial" 161 | 162 | #: ../../../api/lang/extra-strings.php:35 loco:5505af7214d72572078b4594 163 | msgid "Payment Required" 164 | msgstr "Pago Exigido" 165 | 166 | #: ../../../api/lang/extra-strings.php:45 loco:5505af7214d72572078b459d 167 | msgid "Precondition Failed" 168 | msgstr "Precondición fallida" 169 | 170 | #: ../../../api/lang/extra-strings.php:56 loco:5505af7214d72572078b4577 171 | msgid "Precondition Required" 172 | msgstr "Precondición fallida" 173 | 174 | #: ../../../api/lang/extra-strings.php:40 loco:5505af7214d72572078b4599 175 | msgid "Proxy Authentication Required" 176 | msgstr "Autenticación de proxy requerida" 177 | 178 | #: ../../../api/lang/extra-strings.php:46 loco:5505af7214d72572078b459e 179 | msgid "Request Entity Too Large" 180 | msgstr "Entidad solicitada demasiado grande" 181 | 182 | #: ../../../api/lang/extra-strings.php:58 loco:5505af7214d72572078b4579 183 | msgid "Request Header Fields Too Large" 184 | msgstr "Entidad solicitada demasiado grande" 185 | 186 | #: ../../../api/lang/extra-strings.php:41 loco:5505af7214d72572078b4573 187 | msgid "Request Timeout" 188 | msgstr "Petición fuera de tiempo" 189 | 190 | #: ../../../api/lang/extra-strings.php:47 loco:5505af7214d72572078b4574 191 | msgid "Request-URI Too Long" 192 | msgstr "URI de la Petición demasiado larga" 193 | 194 | #: ../../../api/lang/extra-strings.php:49 loco:5505af7214d72572078b4575 195 | msgid "Requested Range Not Satisfiable" 196 | msgstr "Rango solicitado no satisfactorio" 197 | 198 | #: ../../../api/lang/extra-strings.php:21 loco:5505af7214d72572078b4589 199 | msgid "Reset Content" 200 | msgstr "Volver a la configuración de contenido inicial" 201 | 202 | #: ../../../api/lang/extra-strings.php:28 loco:5505af7214d72572078b458e 203 | msgid "See Other" 204 | msgstr "Ver otro" 205 | 206 | #: ../../../api/lang/extra-strings.php:62 loco:5505af7214d72572078b456f 207 | msgid "Service Unavailable" 208 | msgstr "" 209 | 210 | #: ../../../api/lang/extra-strings.php:14 loco:5505af7214d72572078b4583 211 | msgid "Switching Protocols" 212 | msgstr "Intercambiar protocolos" 213 | 214 | #: ../../../api/lang/extra-strings.php:32 loco:5505af7214d72572078b4591 215 | msgid "Temporary Redirect" 216 | msgstr "Redireccionamiento Temporal" 217 | 218 | #: ../../../api/lang/extra-strings.php:57 loco:5505af7214d72572078b4578 219 | msgid "Too Many Requests" 220 | msgstr "Solicitud Incorrecta" 221 | 222 | #: ../../../api/lang/extra-strings.php:7 loco:5505af7214d72572078b457e 223 | msgid "Twitter API rate limit exceeded" 224 | msgstr "Tasa de limite de la API de Twitter excedida" 225 | 226 | #: ../../../api/lang/extra-strings.php:9 loco:5505af7214d72572078b4580 227 | msgid "Twitter is not responding" 228 | msgstr "Twitter no está respondiendo" 229 | 230 | #: ../../../api/lang/extra-strings.php:10 loco:5505af7214d72572078b4581 231 | msgid "Twitter is too busy to respond" 232 | msgstr "Twitter está muy ocupado para responder" 233 | 234 | #: ../../../api/lang/extra-strings.php:8 loco:5505af7214d72572078b457f 235 | msgid "Twitter server error" 236 | msgstr "Error del Servidor de Twitter" 237 | 238 | #: ../../../api/lang/extra-strings.php:52 loco:5505af7214d72572078b456b 239 | msgid "Unprocessable Entity" 240 | msgstr "" 241 | 242 | #: ../../../api/lang/extra-strings.php:48 loco:5505af7214d72572078b459f 243 | msgid "Unsupported Media Type" 244 | msgstr "Tipo de Medio no suportado" 245 | 246 | #: ../../../api/lang/extra-strings.php:55 loco:5505af7214d72572078b4576 247 | msgid "Upgrade Required" 248 | msgstr "Pago Exigido" 249 | 250 | #: ../../../api/lang/extra-strings.php:30 loco:5505af7214d72572078b4590 251 | msgid "Use Proxy" 252 | msgstr "Usar Proxy" 253 | 254 | #: ../../../api/lang/extra-strings.php:65 loco:5505af7214d72572078b4570 255 | msgid "Variant Also Negotiates" 256 | msgstr "" 257 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-nl_NL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/extra/twitter-errors-nl_NL.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-nl_NL.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Dutch\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: nl_NL\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Error codes\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../../api/lang/extra-strings.php:18 loco:5505af7214d72572078b4586 23 | msgid "Accepted" 24 | msgstr "Geaccepteerd" 25 | 26 | #: ../../../api/lang/extra-strings.php:42 loco:5505af7214d72572078b459a 27 | msgid "Conflict" 28 | msgstr "Conflict" 29 | 30 | #: ../../../api/lang/extra-strings.php:13 loco:5505af7214d72572078b4582 31 | msgid "Continue" 32 | msgstr "Ga verder" 33 | 34 | #: ../../../api/lang/extra-strings.php:17 loco:5505af7214d72572078b4585 35 | msgid "Created" 36 | msgstr "Gemaakt" 37 | 38 | #: ../../../api/lang/extra-strings.php:36 loco:5505af7214d72572078b4595 39 | msgid "Forbidden" 40 | msgstr "Verboden" 41 | 42 | #: ../../../api/lang/extra-strings.php:27 loco:5505af7214d72572078b458d 43 | msgid "Found" 44 | msgstr "Gevonden" 45 | 46 | #: ../../../api/lang/extra-strings.php:43 loco:5505af7214d72572078b459b 47 | msgid "Gone" 48 | msgstr "Weg" 49 | 50 | #: ../../../api/lang/extra-strings.php:53 loco:5505af7214d72572078b456c 51 | msgid "Locked" 52 | msgstr "" 53 | 54 | #: ../../../api/lang/extra-strings.php:23 loco:5505af7214d72572078b4568 55 | msgid "Multi-Status" 56 | msgstr "" 57 | 58 | #: ../../../api/lang/extra-strings.php:16 loco:5505af7214d72572078b4584 59 | msgid "OK" 60 | msgstr "Oké" 61 | 62 | #: ../../../api/lang/extra-strings.php:15 loco:5505af7214d72572078b4567 63 | msgid "Processing" 64 | msgstr "" 65 | 66 | #: ../../../api/lang/extra-strings.php:31 loco:5505af7214d72572078b456a 67 | msgid "Reserved" 68 | msgstr "" 69 | 70 | #: ../../../api/lang/extra-strings.php:34 loco:5505af7214d72572078b4593 71 | msgid "Unauthorized" 72 | msgstr "Authorizatie vereist" 73 | 74 | #: ../../../api/lang/extra-strings.php:61 loco:5505af7214d72572078b456e 75 | msgid "Bad Gateway" 76 | msgstr "" 77 | 78 | #: ../../../api/lang/extra-strings.php:33 loco:5505af7214d72572078b4592 79 | msgid "Bad Request" 80 | msgstr "Foute request" 81 | 82 | #: ../../../api/lang/extra-strings.php:50 loco:5505af7214d72572078b45a0 83 | msgid "Expectation Failed" 84 | msgstr "Verwachtingsfout" 85 | 86 | #: ../../../api/lang/extra-strings.php:54 loco:5505af7214d72572078b456d 87 | msgid "Failed Dependency" 88 | msgstr "" 89 | 90 | #: ../../../api/lang/extra-strings.php:63 loco:5505af7214d72572078b457b 91 | msgid "Gateway Timeout" 92 | msgstr "Gateway time-out" 93 | 94 | #: ../../../api/lang/extra-strings.php:64 loco:5505af7214d72572078b457c 95 | msgid "HTTP Version Not Supported" 96 | msgstr "HTTP Versie niet ondersteund" 97 | 98 | #: ../../../api/lang/extra-strings.php:24 loco:5505af7214d72572078b4569 99 | msgid "IM Used" 100 | msgstr "" 101 | 102 | #: ../../../api/lang/extra-strings.php:66 loco:5505af7214d72572078b4571 103 | msgid "Insufficient Storage" 104 | msgstr "" 105 | 106 | #: ../../../api/lang/extra-strings.php:59 loco:5505af7214d72572078b457a 107 | msgid "Internal Server Error" 108 | msgstr "Twitter serverfout" 109 | 110 | #: ../../../api/lang/extra-strings.php:44 loco:5505af7214d72572078b459c 111 | msgid "Length Required" 112 | msgstr "Lengte vereist" 113 | 114 | #: ../../../api/lang/extra-strings.php:38 loco:5505af7214d72572078b4597 115 | msgid "Method Not Allowed" 116 | msgstr "Methode niet toegestaan" 117 | 118 | #: ../../../api/lang/extra-strings.php:26 loco:5505af7214d72572078b458c 119 | msgid "Moved Permanently" 120 | msgstr "Permanent verhuisd" 121 | 122 | #: ../../../api/lang/extra-strings.php:25 loco:5505af7214d72572078b458b 123 | msgid "Multiple Choices" 124 | msgstr "Meerdere keuzes" 125 | 126 | #: ../../../api/lang/extra-strings.php:68 loco:5505af7214d72572078b457d 127 | msgid "Network Authentication Required" 128 | msgstr "Proxy authenticatie vereist" 129 | 130 | #: ../../../api/lang/extra-strings.php:20 loco:5505af7214d72572078b4588 131 | msgid "No Content" 132 | msgstr "Geen inhoud" 133 | 134 | #: ../../../api/lang/extra-strings.php:19 loco:5505af7214d72572078b4587 135 | msgid "Non-Authoritative Information" 136 | msgstr "Niet-geauthoriseerde informatie" 137 | 138 | #: ../../../api/lang/extra-strings.php:39 loco:5505af7214d72572078b4598 139 | msgid "Not Acceptable" 140 | msgstr "Niet acceptabel" 141 | 142 | #: ../../../api/lang/extra-strings.php:67 loco:5505af7214d72572078b4572 143 | msgid "Not Extended" 144 | msgstr "" 145 | 146 | #: ../../../api/lang/extra-strings.php:37 loco:5505af7214d72572078b4596 147 | msgid "Not Found" 148 | msgstr "Niet gevonden" 149 | 150 | #: ../../../api/lang/extra-strings.php:60 loco:5505af7214d72572078b45a1 151 | msgid "Not Implemented" 152 | msgstr "Niet geïmplementeerd" 153 | 154 | #: ../../../api/lang/extra-strings.php:29 loco:5505af7214d72572078b458f 155 | msgid "Not Modified" 156 | msgstr "Niet aangepast" 157 | 158 | #: ../../../api/lang/extra-strings.php:22 loco:5505af7214d72572078b458a 159 | msgid "Partial Content" 160 | msgstr "Gedeeltelijke content" 161 | 162 | #: ../../../api/lang/extra-strings.php:35 loco:5505af7214d72572078b4594 163 | msgid "Payment Required" 164 | msgstr "Betaling vereist" 165 | 166 | #: ../../../api/lang/extra-strings.php:45 loco:5505af7214d72572078b459d 167 | msgid "Precondition Failed" 168 | msgstr "Precondition fout" 169 | 170 | #: ../../../api/lang/extra-strings.php:56 loco:5505af7214d72572078b4577 171 | msgid "Precondition Required" 172 | msgstr "Precondition fout" 173 | 174 | #: ../../../api/lang/extra-strings.php:40 loco:5505af7214d72572078b4599 175 | msgid "Proxy Authentication Required" 176 | msgstr "Proxy authenticatie vereist" 177 | 178 | #: ../../../api/lang/extra-strings.php:46 loco:5505af7214d72572078b459e 179 | msgid "Request Entity Too Large" 180 | msgstr "Request entiteit te groot" 181 | 182 | #: ../../../api/lang/extra-strings.php:58 loco:5505af7214d72572078b4579 183 | msgid "Request Header Fields Too Large" 184 | msgstr "Request entiteit te groot" 185 | 186 | #: ../../../api/lang/extra-strings.php:41 loco:5505af7214d72572078b4573 187 | msgid "Request Timeout" 188 | msgstr "Request Timeout" 189 | 190 | #: ../../../api/lang/extra-strings.php:47 loco:5505af7214d72572078b4574 191 | #, fuzzy 192 | msgid "Request-URI Too Long" 193 | msgstr "Request-URI te groot" 194 | 195 | #: ../../../api/lang/extra-strings.php:49 loco:5505af7214d72572078b4575 196 | msgid "Requested Range Not Satisfiable" 197 | msgstr "Gevraagd bereik niet voldoende" 198 | 199 | #: ../../../api/lang/extra-strings.php:21 loco:5505af7214d72572078b4589 200 | msgid "Reset Content" 201 | msgstr "Content resetten" 202 | 203 | #: ../../../api/lang/extra-strings.php:28 loco:5505af7214d72572078b458e 204 | msgid "See Other" 205 | msgstr "Bekijk andere" 206 | 207 | #: ../../../api/lang/extra-strings.php:62 loco:5505af7214d72572078b456f 208 | msgid "Service Unavailable" 209 | msgstr "" 210 | 211 | #: ../../../api/lang/extra-strings.php:14 loco:5505af7214d72572078b4583 212 | msgid "Switching Protocols" 213 | msgstr "Protocol wisselen" 214 | 215 | #: ../../../api/lang/extra-strings.php:32 loco:5505af7214d72572078b4591 216 | msgid "Temporary Redirect" 217 | msgstr "Tijdelijke omleiding" 218 | 219 | #: ../../../api/lang/extra-strings.php:57 loco:5505af7214d72572078b4578 220 | msgid "Too Many Requests" 221 | msgstr "Foute request" 222 | 223 | #: ../../../api/lang/extra-strings.php:7 loco:5505af7214d72572078b457e 224 | msgid "Twitter API rate limit exceeded" 225 | msgstr "Twitter API limiet bereikt" 226 | 227 | #: ../../../api/lang/extra-strings.php:9 loco:5505af7214d72572078b4580 228 | msgid "Twitter is not responding" 229 | msgstr "Twitter reageert niet" 230 | 231 | #: ../../../api/lang/extra-strings.php:10 loco:5505af7214d72572078b4581 232 | msgid "Twitter is too busy to respond" 233 | msgstr "Twitter is te druk om te antwoorden" 234 | 235 | #: ../../../api/lang/extra-strings.php:8 loco:5505af7214d72572078b457f 236 | msgid "Twitter server error" 237 | msgstr "Twitter serverfout" 238 | 239 | #: ../../../api/lang/extra-strings.php:52 loco:5505af7214d72572078b456b 240 | msgid "Unprocessable Entity" 241 | msgstr "" 242 | 243 | #: ../../../api/lang/extra-strings.php:48 loco:5505af7214d72572078b459f 244 | msgid "Unsupported Media Type" 245 | msgstr "Ongeldig mediatype" 246 | 247 | #: ../../../api/lang/extra-strings.php:55 loco:5505af7214d72572078b4576 248 | msgid "Upgrade Required" 249 | msgstr "Betaling vereist" 250 | 251 | #: ../../../api/lang/extra-strings.php:30 loco:5505af7214d72572078b4590 252 | msgid "Use Proxy" 253 | msgstr "Gebruik proxy" 254 | 255 | #: ../../../api/lang/extra-strings.php:65 loco:5505af7214d72572078b4570 256 | msgid "Variant Also Negotiates" 257 | msgstr "" 258 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-pt_BR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/extra/twitter-errors-pt_BR.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-pt_BR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Portuguese (Brazil)\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: pt_BR\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Error codes\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../../api/lang/extra-strings.php:18 loco:5505af7214d72572078b4586 23 | msgid "Accepted" 24 | msgstr "Aceito" 25 | 26 | #: ../../../api/lang/extra-strings.php:42 loco:5505af7214d72572078b459a 27 | msgid "Conflict" 28 | msgstr "Conflito" 29 | 30 | #: ../../../api/lang/extra-strings.php:13 loco:5505af7214d72572078b4582 31 | msgid "Continue" 32 | msgstr "Continuar" 33 | 34 | #: ../../../api/lang/extra-strings.php:17 loco:5505af7214d72572078b4585 35 | msgid "Created" 36 | msgstr "Criado" 37 | 38 | #: ../../../api/lang/extra-strings.php:36 loco:5505af7214d72572078b4595 39 | msgid "Forbidden" 40 | msgstr "Proibido" 41 | 42 | #: ../../../api/lang/extra-strings.php:27 loco:5505af7214d72572078b458d 43 | msgid "Found" 44 | msgstr "Encontrado(a)" 45 | 46 | #: ../../../api/lang/extra-strings.php:43 loco:5505af7214d72572078b459b 47 | msgid "Gone" 48 | msgstr "Já era" 49 | 50 | #: ../../../api/lang/extra-strings.php:53 loco:5505af7214d72572078b456c 51 | msgid "Locked" 52 | msgstr "" 53 | 54 | #: ../../../api/lang/extra-strings.php:23 loco:5505af7214d72572078b4568 55 | msgid "Multi-Status" 56 | msgstr "" 57 | 58 | #: ../../../api/lang/extra-strings.php:16 loco:5505af7214d72572078b4584 59 | msgid "OK" 60 | msgstr "OK" 61 | 62 | #: ../../../api/lang/extra-strings.php:15 loco:5505af7214d72572078b4567 63 | msgid "Processing" 64 | msgstr "" 65 | 66 | #: ../../../api/lang/extra-strings.php:31 loco:5505af7214d72572078b456a 67 | msgid "Reserved" 68 | msgstr "" 69 | 70 | #: ../../../api/lang/extra-strings.php:34 loco:5505af7214d72572078b4593 71 | msgid "Unauthorized" 72 | msgstr "Autorização exigida" 73 | 74 | #: ../../../api/lang/extra-strings.php:61 loco:5505af7214d72572078b456e 75 | msgid "Bad Gateway" 76 | msgstr "" 77 | 78 | #: ../../../api/lang/extra-strings.php:33 loco:5505af7214d72572078b4592 79 | msgid "Bad Request" 80 | msgstr "Bad Request" 81 | 82 | #: ../../../api/lang/extra-strings.php:50 loco:5505af7214d72572078b45a0 83 | msgid "Expectation Failed" 84 | msgstr "Falha na expectativa" 85 | 86 | #: ../../../api/lang/extra-strings.php:54 loco:5505af7214d72572078b456d 87 | msgid "Failed Dependency" 88 | msgstr "" 89 | 90 | #: ../../../api/lang/extra-strings.php:63 loco:5505af7214d72572078b457b 91 | msgid "Gateway Timeout" 92 | msgstr "Timeout no Gateway" 93 | 94 | #: ../../../api/lang/extra-strings.php:64 loco:5505af7214d72572078b457c 95 | msgid "HTTP Version Not Supported" 96 | msgstr "Versão HTTP não suportada" 97 | 98 | #: ../../../api/lang/extra-strings.php:24 loco:5505af7214d72572078b4569 99 | msgid "IM Used" 100 | msgstr "" 101 | 102 | #: ../../../api/lang/extra-strings.php:66 loco:5505af7214d72572078b4571 103 | msgid "Insufficient Storage" 104 | msgstr "" 105 | 106 | #: ../../../api/lang/extra-strings.php:59 loco:5505af7214d72572078b457a 107 | msgid "Internal Server Error" 108 | msgstr "Erro no Servidor do Twitter" 109 | 110 | #: ../../../api/lang/extra-strings.php:44 loco:5505af7214d72572078b459c 111 | msgid "Length Required" 112 | msgstr "Comprimento exigido" 113 | 114 | #: ../../../api/lang/extra-strings.php:38 loco:5505af7214d72572078b4597 115 | msgid "Method Not Allowed" 116 | msgstr "Método Não Permitido" 117 | 118 | #: ../../../api/lang/extra-strings.php:26 loco:5505af7214d72572078b458c 119 | msgid "Moved Permanently" 120 | msgstr "Movido permanentemente" 121 | 122 | #: ../../../api/lang/extra-strings.php:25 loco:5505af7214d72572078b458b 123 | msgid "Multiple Choices" 124 | msgstr "Múltipla escolha" 125 | 126 | #: ../../../api/lang/extra-strings.php:68 loco:5505af7214d72572078b457d 127 | msgid "Network Authentication Required" 128 | msgstr "Autenticação Proxy Exigida" 129 | 130 | #: ../../../api/lang/extra-strings.php:20 loco:5505af7214d72572078b4588 131 | msgid "No Content" 132 | msgstr "Sem conteúdo" 133 | 134 | #: ../../../api/lang/extra-strings.php:19 loco:5505af7214d72572078b4587 135 | msgid "Non-Authoritative Information" 136 | msgstr "Informação não-autoritativa" 137 | 138 | #: ../../../api/lang/extra-strings.php:39 loco:5505af7214d72572078b4598 139 | msgid "Not Acceptable" 140 | msgstr "Não Aceitável" 141 | 142 | #: ../../../api/lang/extra-strings.php:67 loco:5505af7214d72572078b4572 143 | msgid "Not Extended" 144 | msgstr "" 145 | 146 | #: ../../../api/lang/extra-strings.php:37 loco:5505af7214d72572078b4596 147 | msgid "Not Found" 148 | msgstr "Não Encontrado" 149 | 150 | #: ../../../api/lang/extra-strings.php:60 loco:5505af7214d72572078b45a1 151 | msgid "Not Implemented" 152 | msgstr "Não Implementado" 153 | 154 | #: ../../../api/lang/extra-strings.php:29 loco:5505af7214d72572078b458f 155 | msgid "Not Modified" 156 | msgstr "Não modificado" 157 | 158 | #: ../../../api/lang/extra-strings.php:22 loco:5505af7214d72572078b458a 159 | msgid "Partial Content" 160 | msgstr "Conteúdo parcial" 161 | 162 | #: ../../../api/lang/extra-strings.php:35 loco:5505af7214d72572078b4594 163 | msgid "Payment Required" 164 | msgstr "Pagamento Exigido" 165 | 166 | #: ../../../api/lang/extra-strings.php:45 loco:5505af7214d72572078b459d 167 | msgid "Precondition Failed" 168 | msgstr "Falha na pré-condição" 169 | 170 | #: ../../../api/lang/extra-strings.php:56 loco:5505af7214d72572078b4577 171 | msgid "Precondition Required" 172 | msgstr "Falha na pré-condição" 173 | 174 | #: ../../../api/lang/extra-strings.php:40 loco:5505af7214d72572078b4599 175 | msgid "Proxy Authentication Required" 176 | msgstr "Autenticação Proxy Exigida" 177 | 178 | #: ../../../api/lang/extra-strings.php:46 loco:5505af7214d72572078b459e 179 | msgid "Request Entity Too Large" 180 | msgstr "Entidade do request muito grande" 181 | 182 | #: ../../../api/lang/extra-strings.php:58 loco:5505af7214d72572078b4579 183 | msgid "Request Header Fields Too Large" 184 | msgstr "Entidade do request muito grande" 185 | 186 | #: ../../../api/lang/extra-strings.php:41 loco:5505af7214d72572078b4573 187 | msgid "Request Timeout" 188 | msgstr "" 189 | 190 | #: ../../../api/lang/extra-strings.php:47 loco:5505af7214d72572078b4574 191 | #, fuzzy 192 | msgid "Request-URI Too Long" 193 | msgstr "URI de Request muito grande" 194 | 195 | #: ../../../api/lang/extra-strings.php:49 loco:5505af7214d72572078b4575 196 | msgid "Requested Range Not Satisfiable" 197 | msgstr "Range solicitado não satisfatório" 198 | 199 | #: ../../../api/lang/extra-strings.php:21 loco:5505af7214d72572078b4589 200 | msgid "Reset Content" 201 | msgstr "Resetar conteúdo" 202 | 203 | #: ../../../api/lang/extra-strings.php:28 loco:5505af7214d72572078b458e 204 | msgid "See Other" 205 | msgstr "Ver outros" 206 | 207 | #: ../../../api/lang/extra-strings.php:62 loco:5505af7214d72572078b456f 208 | msgid "Service Unavailable" 209 | msgstr "" 210 | 211 | #: ../../../api/lang/extra-strings.php:14 loco:5505af7214d72572078b4583 212 | msgid "Switching Protocols" 213 | msgstr "Trocando protocolos" 214 | 215 | #: ../../../api/lang/extra-strings.php:32 loco:5505af7214d72572078b4591 216 | msgid "Temporary Redirect" 217 | msgstr "Redirecionamento Temporário" 218 | 219 | #: ../../../api/lang/extra-strings.php:57 loco:5505af7214d72572078b4578 220 | msgid "Too Many Requests" 221 | msgstr "" 222 | 223 | #: ../../../api/lang/extra-strings.php:7 loco:5505af7214d72572078b457e 224 | msgid "Twitter API rate limit exceeded" 225 | msgstr "Taxa de limite da API do Twitter excedida" 226 | 227 | #: ../../../api/lang/extra-strings.php:9 loco:5505af7214d72572078b4580 228 | msgid "Twitter is not responding" 229 | msgstr "Twitter não está respondendo" 230 | 231 | #: ../../../api/lang/extra-strings.php:10 loco:5505af7214d72572078b4581 232 | msgid "Twitter is too busy to respond" 233 | msgstr "Twitter muito ocupado para responder" 234 | 235 | #: ../../../api/lang/extra-strings.php:8 loco:5505af7214d72572078b457f 236 | msgid "Twitter server error" 237 | msgstr "Erro no Servidor do Twitter" 238 | 239 | #: ../../../api/lang/extra-strings.php:52 loco:5505af7214d72572078b456b 240 | msgid "Unprocessable Entity" 241 | msgstr "" 242 | 243 | #: ../../../api/lang/extra-strings.php:48 loco:5505af7214d72572078b459f 244 | msgid "Unsupported Media Type" 245 | msgstr "Tipo de mídia não suportado" 246 | 247 | #: ../../../api/lang/extra-strings.php:55 loco:5505af7214d72572078b4576 248 | msgid "Upgrade Required" 249 | msgstr "Pagamento Exigido" 250 | 251 | #: ../../../api/lang/extra-strings.php:30 loco:5505af7214d72572078b4590 252 | msgid "Use Proxy" 253 | msgstr "Usar Proxy" 254 | 255 | #: ../../../api/lang/extra-strings.php:65 loco:5505af7214d72572078b4570 256 | msgid "Variant Also Negotiates" 257 | msgstr "" 258 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-ru_RU.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/extra/twitter-errors-ru_RU.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors-ru_RU.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Russian\n" 10 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" 11 | "4 && (n%100<10 || n%100>=20) ? 1 : 2);\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-SourceCharset: UTF-8\n" 16 | "X-Generator: Loco https://localise.biz\n" 17 | "X-Loco-Source-Locale: en_GB\n" 18 | "X-Loco-Target-Locale: ru_RU\n" 19 | "X-Loco-Project-Id: 284\n" 20 | "X-Loco-Tagged: Error codes\n" 21 | "X-Loco-Api-Version: 1.0.9" 22 | 23 | #: ../../../api/lang/extra-strings.php:18 loco:5505af7214d72572078b4586 24 | msgid "Accepted" 25 | msgstr "Принято" 26 | 27 | #: ../../../api/lang/extra-strings.php:42 loco:5505af7214d72572078b459a 28 | msgid "Conflict" 29 | msgstr "Конфликт" 30 | 31 | #: ../../../api/lang/extra-strings.php:13 loco:5505af7214d72572078b4582 32 | msgid "Continue" 33 | msgstr "Продолжить" 34 | 35 | #: ../../../api/lang/extra-strings.php:17 loco:5505af7214d72572078b4585 36 | msgid "Created" 37 | msgstr "Создано" 38 | 39 | #: ../../../api/lang/extra-strings.php:36 loco:5505af7214d72572078b4595 40 | msgid "Forbidden" 41 | msgstr "Запрещено" 42 | 43 | #: ../../../api/lang/extra-strings.php:27 loco:5505af7214d72572078b458d 44 | msgid "Found" 45 | msgstr "Найдено" 46 | 47 | #: ../../../api/lang/extra-strings.php:43 loco:5505af7214d72572078b459b 48 | msgid "Gone" 49 | msgstr "Отправляется" 50 | 51 | #: ../../../api/lang/extra-strings.php:53 loco:5505af7214d72572078b456c 52 | msgid "Locked" 53 | msgstr "" 54 | 55 | #: ../../../api/lang/extra-strings.php:23 loco:5505af7214d72572078b4568 56 | msgid "Multi-Status" 57 | msgstr "" 58 | 59 | #: ../../../api/lang/extra-strings.php:16 loco:5505af7214d72572078b4584 60 | msgid "OK" 61 | msgstr "OK" 62 | 63 | #: ../../../api/lang/extra-strings.php:15 loco:5505af7214d72572078b4567 64 | msgid "Processing" 65 | msgstr "" 66 | 67 | #: ../../../api/lang/extra-strings.php:31 loco:5505af7214d72572078b456a 68 | msgid "Reserved" 69 | msgstr "" 70 | 71 | #: ../../../api/lang/extra-strings.php:34 loco:5505af7214d72572078b4593 72 | msgid "Unauthorized" 73 | msgstr "Требуется Авторизация" 74 | 75 | #: ../../../api/lang/extra-strings.php:61 loco:5505af7214d72572078b456e 76 | msgid "Bad Gateway" 77 | msgstr "" 78 | 79 | #: ../../../api/lang/extra-strings.php:33 loco:5505af7214d72572078b4592 80 | msgid "Bad Request" 81 | msgstr "Плохой Запрос" 82 | 83 | #: ../../../api/lang/extra-strings.php:50 loco:5505af7214d72572078b45a0 84 | msgid "Expectation Failed" 85 | msgstr "Ожидание не удалось" 86 | 87 | #: ../../../api/lang/extra-strings.php:54 loco:5505af7214d72572078b456d 88 | msgid "Failed Dependency" 89 | msgstr "" 90 | 91 | #: ../../../api/lang/extra-strings.php:63 loco:5505af7214d72572078b457b 92 | msgid "Gateway Timeout" 93 | msgstr "Шлюз Time-out" 94 | 95 | #: ../../../api/lang/extra-strings.php:64 loco:5505af7214d72572078b457c 96 | msgid "HTTP Version Not Supported" 97 | msgstr "Не поддерживаемая Версия HTTP" 98 | 99 | #: ../../../api/lang/extra-strings.php:24 loco:5505af7214d72572078b4569 100 | msgid "IM Used" 101 | msgstr "" 102 | 103 | #: ../../../api/lang/extra-strings.php:66 loco:5505af7214d72572078b4571 104 | msgid "Insufficient Storage" 105 | msgstr "" 106 | 107 | #: ../../../api/lang/extra-strings.php:59 loco:5505af7214d72572078b457a 108 | msgid "Internal Server Error" 109 | msgstr "Ошибка сервера на стороне Твиттера" 110 | 111 | #: ../../../api/lang/extra-strings.php:44 loco:5505af7214d72572078b459c 112 | msgid "Length Required" 113 | msgstr "Требуемая Длина" 114 | 115 | #: ../../../api/lang/extra-strings.php:38 loco:5505af7214d72572078b4597 116 | msgid "Method Not Allowed" 117 | msgstr "Запрещенный метод" 118 | 119 | #: ../../../api/lang/extra-strings.php:26 loco:5505af7214d72572078b458c 120 | msgid "Moved Permanently" 121 | msgstr "Перемещено на постоянно" 122 | 123 | #: ../../../api/lang/extra-strings.php:25 loco:5505af7214d72572078b458b 124 | msgid "Multiple Choices" 125 | msgstr "Множественный выбор" 126 | 127 | #: ../../../api/lang/extra-strings.php:68 loco:5505af7214d72572078b457d 128 | msgid "Network Authentication Required" 129 | msgstr "Требуется Идентификация Proxy" 130 | 131 | #: ../../../api/lang/extra-strings.php:20 loco:5505af7214d72572078b4588 132 | msgid "No Content" 133 | msgstr "Нет подключения" 134 | 135 | #: ../../../api/lang/extra-strings.php:19 loco:5505af7214d72572078b4587 136 | msgid "Non-Authoritative Information" 137 | msgstr "Не авторитетная Информация" 138 | 139 | #: ../../../api/lang/extra-strings.php:39 loco:5505af7214d72572078b4598 140 | msgid "Not Acceptable" 141 | msgstr "Не Приемлемый" 142 | 143 | #: ../../../api/lang/extra-strings.php:67 loco:5505af7214d72572078b4572 144 | msgid "Not Extended" 145 | msgstr "" 146 | 147 | #: ../../../api/lang/extra-strings.php:37 loco:5505af7214d72572078b4596 148 | msgid "Not Found" 149 | msgstr "Не Найдено" 150 | 151 | #: ../../../api/lang/extra-strings.php:60 loco:5505af7214d72572078b45a1 152 | msgid "Not Implemented" 153 | msgstr "Не выполнено" 154 | 155 | #: ../../../api/lang/extra-strings.php:29 loco:5505af7214d72572078b458f 156 | msgid "Not Modified" 157 | msgstr "Не Изменяется" 158 | 159 | #: ../../../api/lang/extra-strings.php:22 loco:5505af7214d72572078b458a 160 | msgid "Partial Content" 161 | msgstr "Частичное Содержимое" 162 | 163 | #: ../../../api/lang/extra-strings.php:35 loco:5505af7214d72572078b4594 164 | msgid "Payment Required" 165 | msgstr "Требуется Оплата" 166 | 167 | #: ../../../api/lang/extra-strings.php:45 loco:5505af7214d72572078b459d 168 | msgid "Precondition Failed" 169 | msgstr "Предварительное условие потерпело неудачу" 170 | 171 | #: ../../../api/lang/extra-strings.php:56 loco:5505af7214d72572078b4577 172 | msgid "Precondition Required" 173 | msgstr "Предварительное условие потерпело неудачу" 174 | 175 | #: ../../../api/lang/extra-strings.php:40 loco:5505af7214d72572078b4599 176 | msgid "Proxy Authentication Required" 177 | msgstr "Требуется Идентификация Proxy" 178 | 179 | #: ../../../api/lang/extra-strings.php:46 loco:5505af7214d72572078b459e 180 | msgid "Request Entity Too Large" 181 | msgstr "Запаршиваемый объект слишком большой" 182 | 183 | #: ../../../api/lang/extra-strings.php:58 loco:5505af7214d72572078b4579 184 | msgid "Request Header Fields Too Large" 185 | msgstr "Запаршиваемый объект слишком большой" 186 | 187 | #: ../../../api/lang/extra-strings.php:41 loco:5505af7214d72572078b4573 188 | msgid "Request Timeout" 189 | msgstr "Запрос Time-out" 190 | 191 | #: ../../../api/lang/extra-strings.php:47 loco:5505af7214d72572078b4574 192 | #, fuzzy 193 | msgid "Request-URI Too Long" 194 | msgstr "Запаршиваемый URI слишком большой" 195 | 196 | #: ../../../api/lang/extra-strings.php:49 loco:5505af7214d72572078b4575 197 | msgid "Requested Range Not Satisfiable" 198 | msgstr "Запрошен не выполнимый ряд" 199 | 200 | #: ../../../api/lang/extra-strings.php:21 loco:5505af7214d72572078b4589 201 | msgid "Reset Content" 202 | msgstr "Повторите подключение" 203 | 204 | #: ../../../api/lang/extra-strings.php:28 loco:5505af7214d72572078b458e 205 | msgid "See Other" 206 | msgstr "Посмотрите Другой" 207 | 208 | #: ../../../api/lang/extra-strings.php:62 loco:5505af7214d72572078b456f 209 | msgid "Service Unavailable" 210 | msgstr "" 211 | 212 | #: ../../../api/lang/extra-strings.php:14 loco:5505af7214d72572078b4583 213 | msgid "Switching Protocols" 214 | msgstr "Переключающиеся Протоколы" 215 | 216 | #: ../../../api/lang/extra-strings.php:32 loco:5505af7214d72572078b4591 217 | msgid "Temporary Redirect" 218 | msgstr "Временное перенаправление" 219 | 220 | #: ../../../api/lang/extra-strings.php:57 loco:5505af7214d72572078b4578 221 | msgid "Too Many Requests" 222 | msgstr "Плохой Запрос" 223 | 224 | #: ../../../api/lang/extra-strings.php:7 loco:5505af7214d72572078b457e 225 | msgid "Twitter API rate limit exceeded" 226 | msgstr "API Твиттера превышает норму" 227 | 228 | #: ../../../api/lang/extra-strings.php:9 loco:5505af7214d72572078b4580 229 | msgid "Twitter is not responding" 230 | msgstr "Твиттер не отвечает" 231 | 232 | #: ../../../api/lang/extra-strings.php:10 loco:5505af7214d72572078b4581 233 | msgid "Twitter is too busy to respond" 234 | msgstr "Твиттер слишком перегружен, чтобы ответить" 235 | 236 | #: ../../../api/lang/extra-strings.php:8 loco:5505af7214d72572078b457f 237 | msgid "Twitter server error" 238 | msgstr "Ошибка сервера на стороне Твиттера" 239 | 240 | #: ../../../api/lang/extra-strings.php:52 loco:5505af7214d72572078b456b 241 | msgid "Unprocessable Entity" 242 | msgstr "" 243 | 244 | #: ../../../api/lang/extra-strings.php:48 loco:5505af7214d72572078b459f 245 | msgid "Unsupported Media Type" 246 | msgstr "Тип Медиа не поддерживается" 247 | 248 | #: ../../../api/lang/extra-strings.php:55 loco:5505af7214d72572078b4576 249 | msgid "Upgrade Required" 250 | msgstr "Требуется Оплата" 251 | 252 | #: ../../../api/lang/extra-strings.php:30 loco:5505af7214d72572078b4590 253 | msgid "Use Proxy" 254 | msgstr "Используйте Proxy" 255 | 256 | #: ../../../api/lang/extra-strings.php:65 loco:5505af7214d72572078b4570 257 | msgid "Variant Also Negotiates" 258 | msgstr "" 259 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/extra/twitter-errors.php: -------------------------------------------------------------------------------- 1 | \n" 10 | "Language-Team: \n" 11 | "Language: \n" 12 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "X-Poedit-SourceCharset: UTF-8\n" 17 | "X-Generator: Loco https://localise.biz\n" 18 | "X-Loco-Source-Locale: en_GB\n" 19 | "X-Loco-Project-Id: 284\n" 20 | "X-Loco-Tagged: Error codes\n" 21 | "X-Loco-Api-Version: 1.0.9" 22 | 23 | #: ../../../api/lang/extra-strings.php:18 loco:5505af7214d72572078b4586 24 | msgid "Accepted" 25 | msgstr "" 26 | 27 | #: ../../../api/lang/extra-strings.php:42 loco:5505af7214d72572078b459a 28 | msgid "Conflict" 29 | msgstr "" 30 | 31 | #: ../../../api/lang/extra-strings.php:13 loco:5505af7214d72572078b4582 32 | msgid "Continue" 33 | msgstr "" 34 | 35 | #: ../../../api/lang/extra-strings.php:17 loco:5505af7214d72572078b4585 36 | msgid "Created" 37 | msgstr "" 38 | 39 | #: ../../../api/lang/extra-strings.php:36 loco:5505af7214d72572078b4595 40 | msgid "Forbidden" 41 | msgstr "" 42 | 43 | #: ../../../api/lang/extra-strings.php:27 loco:5505af7214d72572078b458d 44 | msgid "Found" 45 | msgstr "" 46 | 47 | #: ../../../api/lang/extra-strings.php:43 loco:5505af7214d72572078b459b 48 | msgid "Gone" 49 | msgstr "" 50 | 51 | #: ../../../api/lang/extra-strings.php:53 loco:5505af7214d72572078b456c 52 | msgid "Locked" 53 | msgstr "" 54 | 55 | #: ../../../api/lang/extra-strings.php:23 loco:5505af7214d72572078b4568 56 | msgid "Multi-Status" 57 | msgstr "" 58 | 59 | #: ../../../api/lang/extra-strings.php:16 loco:5505af7214d72572078b4584 60 | msgid "OK" 61 | msgstr "" 62 | 63 | #: ../../../api/lang/extra-strings.php:15 loco:5505af7214d72572078b4567 64 | msgid "Processing" 65 | msgstr "" 66 | 67 | #: ../../../api/lang/extra-strings.php:31 loco:5505af7214d72572078b456a 68 | msgid "Reserved" 69 | msgstr "" 70 | 71 | #: ../../../api/lang/extra-strings.php:34 loco:5505af7214d72572078b4593 72 | msgid "Unauthorized" 73 | msgstr "" 74 | 75 | #: ../../../api/lang/extra-strings.php:61 loco:5505af7214d72572078b456e 76 | msgid "Bad Gateway" 77 | msgstr "" 78 | 79 | #: ../../../api/lang/extra-strings.php:33 loco:5505af7214d72572078b4592 80 | msgid "Bad Request" 81 | msgstr "" 82 | 83 | #: ../../../api/lang/extra-strings.php:50 loco:5505af7214d72572078b45a0 84 | msgid "Expectation Failed" 85 | msgstr "" 86 | 87 | #: ../../../api/lang/extra-strings.php:54 loco:5505af7214d72572078b456d 88 | msgid "Failed Dependency" 89 | msgstr "" 90 | 91 | #: ../../../api/lang/extra-strings.php:63 loco:5505af7214d72572078b457b 92 | msgid "Gateway Timeout" 93 | msgstr "" 94 | 95 | #: ../../../api/lang/extra-strings.php:64 loco:5505af7214d72572078b457c 96 | msgid "HTTP Version Not Supported" 97 | msgstr "" 98 | 99 | #: ../../../api/lang/extra-strings.php:24 loco:5505af7214d72572078b4569 100 | msgid "IM Used" 101 | msgstr "" 102 | 103 | #: ../../../api/lang/extra-strings.php:66 loco:5505af7214d72572078b4571 104 | msgid "Insufficient Storage" 105 | msgstr "" 106 | 107 | #: ../../../api/lang/extra-strings.php:59 loco:5505af7214d72572078b457a 108 | msgid "Internal Server Error" 109 | msgstr "" 110 | 111 | #: ../../../api/lang/extra-strings.php:44 loco:5505af7214d72572078b459c 112 | msgid "Length Required" 113 | msgstr "" 114 | 115 | #: ../../../api/lang/extra-strings.php:38 loco:5505af7214d72572078b4597 116 | msgid "Method Not Allowed" 117 | msgstr "" 118 | 119 | #: ../../../api/lang/extra-strings.php:26 loco:5505af7214d72572078b458c 120 | msgid "Moved Permanently" 121 | msgstr "" 122 | 123 | #: ../../../api/lang/extra-strings.php:25 loco:5505af7214d72572078b458b 124 | msgid "Multiple Choices" 125 | msgstr "" 126 | 127 | #: ../../../api/lang/extra-strings.php:68 loco:5505af7214d72572078b457d 128 | msgid "Network Authentication Required" 129 | msgstr "" 130 | 131 | #: ../../../api/lang/extra-strings.php:20 loco:5505af7214d72572078b4588 132 | msgid "No Content" 133 | msgstr "" 134 | 135 | #: ../../../api/lang/extra-strings.php:19 loco:5505af7214d72572078b4587 136 | msgid "Non-Authoritative Information" 137 | msgstr "" 138 | 139 | #: ../../../api/lang/extra-strings.php:39 loco:5505af7214d72572078b4598 140 | msgid "Not Acceptable" 141 | msgstr "" 142 | 143 | #: ../../../api/lang/extra-strings.php:67 loco:5505af7214d72572078b4572 144 | msgid "Not Extended" 145 | msgstr "" 146 | 147 | #: ../../../api/lang/extra-strings.php:37 loco:5505af7214d72572078b4596 148 | msgid "Not Found" 149 | msgstr "" 150 | 151 | #: ../../../api/lang/extra-strings.php:60 loco:5505af7214d72572078b45a1 152 | msgid "Not Implemented" 153 | msgstr "" 154 | 155 | #: ../../../api/lang/extra-strings.php:29 loco:5505af7214d72572078b458f 156 | msgid "Not Modified" 157 | msgstr "" 158 | 159 | #: ../../../api/lang/extra-strings.php:22 loco:5505af7214d72572078b458a 160 | msgid "Partial Content" 161 | msgstr "" 162 | 163 | #: ../../../api/lang/extra-strings.php:35 loco:5505af7214d72572078b4594 164 | msgid "Payment Required" 165 | msgstr "" 166 | 167 | #: ../../../api/lang/extra-strings.php:45 loco:5505af7214d72572078b459d 168 | msgid "Precondition Failed" 169 | msgstr "" 170 | 171 | #: ../../../api/lang/extra-strings.php:56 loco:5505af7214d72572078b4577 172 | msgid "Precondition Required" 173 | msgstr "" 174 | 175 | #: ../../../api/lang/extra-strings.php:40 loco:5505af7214d72572078b4599 176 | msgid "Proxy Authentication Required" 177 | msgstr "" 178 | 179 | #: ../../../api/lang/extra-strings.php:46 loco:5505af7214d72572078b459e 180 | msgid "Request Entity Too Large" 181 | msgstr "" 182 | 183 | #: ../../../api/lang/extra-strings.php:58 loco:5505af7214d72572078b4579 184 | msgid "Request Header Fields Too Large" 185 | msgstr "" 186 | 187 | #: ../../../api/lang/extra-strings.php:41 loco:5505af7214d72572078b4573 188 | msgid "Request Timeout" 189 | msgstr "" 190 | 191 | #: ../../../api/lang/extra-strings.php:47 loco:5505af7214d72572078b4574 192 | msgid "Request-URI Too Long" 193 | msgstr "" 194 | 195 | #: ../../../api/lang/extra-strings.php:49 loco:5505af7214d72572078b4575 196 | msgid "Requested Range Not Satisfiable" 197 | msgstr "" 198 | 199 | #: ../../../api/lang/extra-strings.php:21 loco:5505af7214d72572078b4589 200 | msgid "Reset Content" 201 | msgstr "" 202 | 203 | #: ../../../api/lang/extra-strings.php:28 loco:5505af7214d72572078b458e 204 | msgid "See Other" 205 | msgstr "" 206 | 207 | #: ../../../api/lang/extra-strings.php:62 loco:5505af7214d72572078b456f 208 | msgid "Service Unavailable" 209 | msgstr "" 210 | 211 | #: ../../../api/lang/extra-strings.php:14 loco:5505af7214d72572078b4583 212 | msgid "Switching Protocols" 213 | msgstr "" 214 | 215 | #: ../../../api/lang/extra-strings.php:32 loco:5505af7214d72572078b4591 216 | msgid "Temporary Redirect" 217 | msgstr "" 218 | 219 | #: ../../../api/lang/extra-strings.php:57 loco:5505af7214d72572078b4578 220 | msgid "Too Many Requests" 221 | msgstr "" 222 | 223 | #: ../../../api/lang/extra-strings.php:7 loco:5505af7214d72572078b457e 224 | msgid "Twitter API rate limit exceeded" 225 | msgstr "" 226 | 227 | #: ../../../api/lang/extra-strings.php:9 loco:5505af7214d72572078b4580 228 | msgid "Twitter is not responding" 229 | msgstr "" 230 | 231 | #: ../../../api/lang/extra-strings.php:10 loco:5505af7214d72572078b4581 232 | msgid "Twitter is too busy to respond" 233 | msgstr "" 234 | 235 | #: ../../../api/lang/extra-strings.php:8 loco:5505af7214d72572078b457f 236 | msgid "Twitter server error" 237 | msgstr "" 238 | 239 | #: ../../../api/lang/extra-strings.php:52 loco:5505af7214d72572078b456b 240 | msgid "Unprocessable Entity" 241 | msgstr "" 242 | 243 | #: ../../../api/lang/extra-strings.php:48 loco:5505af7214d72572078b459f 244 | msgid "Unsupported Media Type" 245 | msgstr "" 246 | 247 | #: ../../../api/lang/extra-strings.php:55 loco:5505af7214d72572078b4576 248 | msgid "Upgrade Required" 249 | msgstr "" 250 | 251 | #: ../../../api/lang/extra-strings.php:30 loco:5505af7214d72572078b4590 252 | msgid "Use Proxy" 253 | msgstr "" 254 | 255 | #: ../../../api/lang/extra-strings.php:65 loco:5505af7214d72572078b4570 256 | msgid "Variant Also Negotiates" 257 | msgstr "" 258 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/merge.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Script merges all PO files with latest POT and builds MOs 4 | # 5 | 6 | 7 | 8 | cd "`dirname $0`" 9 | 10 | function merge { 11 | echo "Merging $1_$2..." 12 | msgmerge "twitter-api-$1_$2.po" "twitter-api.pot" --update && \ 13 | msgfmt --no-hash "twitter-api-$1_$2.po" -o "twitter-api-$1_$2.mo" 14 | } 15 | 16 | merge es ES 17 | merge de DE 18 | merge nl NL 19 | merge pt BR 20 | merge ru RU 21 | 22 | echo Done. 23 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-de_DE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/twitter-api-de_DE.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-de_DE.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: German\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: de_DE\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Twitter API\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../api/lib/twitter-api-utils.php:168 loco:5505af2214d725a5068b4569 23 | msgid "About an hour ago" 24 | msgid_plural "About %u hours ago" 25 | msgstr[0] "Vor ungefähr 1 Stunde" 26 | msgstr[1] "Vor ungefähr %u Stunden" 27 | 28 | #: ../../api/lib/twitter-api-admin.php:146 loco:5505af2214d725a5068b457b 29 | msgid "Authenticated as @%s" 30 | msgstr "Authentifiziert als @%s" 31 | 32 | #: ../../latest-tweets.php:322 ../../api/lib/twitter-api-admin.php:90 loco:#: 5505af2214d725a5068b4573 33 | msgid "Connect to Twitter" 34 | msgstr "" 35 | 36 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4582 37 | msgid "Invalid OAuth token" 38 | msgstr "Ungültiger OAuth token" 39 | 40 | #: ../../api/lib/twitter-api-core.php:246 loco:5505af2214d725a5068b457e 41 | msgid "Invalid Twitter parameter" 42 | msgstr "Ungültiger Twitter Parameter" 43 | 44 | #: ../../api/lib/twitter-api-utils.php:155 loco:5505af2214d725a5068b4585 45 | msgid "Just now" 46 | msgstr "Gerade eben" 47 | 48 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4583 49 | msgid "Key required even if secret is empty" 50 | msgstr "" 51 | 52 | #: ../../latest-tweets.php:231 ../../latest-tweets.php:241 572 loco:#: 5505af2214d725a5068b4572 53 | msgid "Latest Tweets" 54 | msgstr "Neueste Tweets" 55 | 56 | #: ../../api/lib/twitter-api-core.php:356 loco:5505af2214d725a5068b4580 57 | msgid "Malformed response from Twitter" 58 | msgstr "" 59 | 60 | #: ../../latest-tweets.php:217 loco:5505af2214d725a5068b456f 61 | msgid "Minimum popularity" 62 | msgstr "" 63 | 64 | #: ../../latest-tweets.php:212 loco:5505af2214d725a5068b456e 65 | msgid "Number of tweets" 66 | msgstr "Anzahl an Tweets" 67 | 68 | #: ../api/lib/twitter-api-admin.php:56 loco:5505c1b514d72528128b456a 69 | msgid "OAuth Access Secret" 70 | msgstr "" 71 | 72 | #: ../api/lib/twitter-api-admin.php:52 loco:5505c1b514d72528128b4569 73 | msgid "OAuth Access Token" 74 | msgstr "" 75 | 76 | #: ../api/lib/twitter-api-admin.php:44 loco:5505c1b514d72528128b4567 77 | msgid "OAuth Consumer Key" 78 | msgstr "" 79 | 80 | #: ../api/lib/twitter-api-admin.php:48 loco:5505c1b514d72528128b4568 81 | msgid "OAuth Consumer Secret" 82 | msgstr "" 83 | 84 | #: ../../latest-tweets.php:44 loco:5505af2214d725a5068b456b 85 | msgid "Plugin not fully configured" 86 | msgstr "Die Twitter Anwendung ist nicht vollständig konfiguriert" 87 | 88 | #: ../../api/lib/twitter-api-admin.php:139 loco:5505af2214d725a5068b457a 89 | msgid "Plugin not yet authenticated with Twitter" 90 | msgstr "Das Plugin wurde noch nicht bei Twitter authentifiziert" 91 | 92 | #: ../../api/lib/twitter-api-admin.php:60 loco:5505af2214d725a5068b4575 93 | msgid "Save settings" 94 | msgstr "Einstellungen speichern" 95 | 96 | #: ../../latest-tweets.php:227 loco:5505af2214d725a5068b4571 97 | msgid "Show Replies" 98 | msgstr "Antworten anzeigen" 99 | 100 | #: ../../latest-tweets.php:222 loco:5505af2214d725a5068b4570 101 | msgid "Show Retweets" 102 | msgstr "Retweets anzeigen" 103 | 104 | #: ../../api/lib/twitter-api-core.php:532 loco:5505af2214d725a5068b4584 105 | msgid "Status %u from Twitter" 106 | msgstr "" 107 | 108 | #: ../../api/lib/twitter-api-admin.php:63 loco:5505af2214d725a5068b4576 109 | msgid "These details are available in" 110 | msgstr "Diese Informationen findest du in" 111 | 112 | #: ../../api/lib/twitter-api-admin.php:189 loco:5505af2214d725a5068b457c 113 | msgid "Twitter API" 114 | msgstr "Twitter API" 115 | 116 | #: ../../api/lib/twitter-api-admin.php:16 loco:5505af2214d725a5068b4574 117 | msgid "Twitter API Authentication Settings" 118 | msgstr "Einstellungen zur Twitter API Authentifizierung" 119 | 120 | #: ../../api/lib/twitter-api-admin.php:121 121 | #: ../../api/lib/twitter-api-core.php:145 loco:5505af2214d725a5068b4579 122 | msgid "Twitter application not fully configured" 123 | msgstr "Die Twitter Anwendung ist nicht vollständig konfiguriert" 124 | 125 | #: ../../api/lib/twitter-api-core.php:230 loco:5505af2214d725a5068b457d 126 | msgid "Twitter client not authenticated" 127 | msgstr "Twitter Client nicht authentifiziert" 128 | 129 | #: ../../api/lib/twitter-api-core.php:308 130 | #: ../../api/lib/twitter-api-core.php:320 loco:5505af2214d725a5068b457f 131 | msgid "Twitter error #%d" 132 | msgstr "Twitter Fehler #%d" 133 | 134 | #: ../../latest-tweets.php:207 loco:5505af2214d725a5068b456d 135 | msgid "Twitter handle" 136 | msgstr "Twitter Handle" 137 | 138 | #: ../../latest-tweets.php:202 loco:5505af2214d725a5068b456c 139 | msgid "Widget title" 140 | msgstr "Titel" 141 | 142 | #: ../../api/lib/twitter-api-core.php:375 loco:5505af2214d725a5068b4581 143 | msgid "Wordpress HTTP request failure" 144 | msgstr "Wordpress HTTP Request Fehler" 145 | 146 | #: ../../api/lib/twitter-api-utils.php:160 loco:5505af2214d725a5068b4567 147 | msgid "%u minute ago" 148 | msgid_plural "%u minutes ago" 149 | msgstr[0] "Vor 1 Minute" 150 | msgstr[1] "Vor %u Minuten" 151 | 152 | #: ../../api/lib/twitter-api-utils.php:173 loco:5505af2214d725a5068b4586 153 | msgid "Yesterday at" 154 | msgstr "Gestern um" 155 | 156 | #: ../../api/lib/twitter-api-admin.php:102 loco:5505af2214d725a5068b4578 157 | msgid "You don't have permission to manage Twitter API settings" 158 | msgstr "Dir fehlen die Rechte, um die Twitter API Einstellungen zu verwalten" 159 | 160 | #: ../../api/lib/twitter-api-admin.php:64 loco:5505af2214d725a5068b4577 161 | msgid "your Twitter dashboard" 162 | msgstr "deinem Twitter Dashboard" 163 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-es_ES.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/twitter-api-es_ES.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-es_ES.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Spanish\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: es_ES\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Twitter API\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../api/lib/twitter-api-utils.php:168 loco:5505af2214d725a5068b4569 23 | msgid "About an hour ago" 24 | msgid_plural "About %u hours ago" 25 | msgstr[0] "Hace cerca de una hora" 26 | msgstr[1] "Hace cerca de %u horas" 27 | 28 | #: ../../api/lib/twitter-api-admin.php:146 loco:5505af2214d725a5068b457b 29 | msgid "Authenticated as @%s" 30 | msgstr "Autenticado como @%s" 31 | 32 | #: ../../latest-tweets.php:322 ../../api/lib/twitter-api-admin.php:90 loco:#: 5505af2214d725a5068b4573 33 | msgid "Connect to Twitter" 34 | msgstr "" 35 | 36 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4582 37 | msgid "Invalid OAuth token" 38 | msgstr "Token OAuth inválido" 39 | 40 | #: ../../api/lib/twitter-api-core.php:246 loco:5505af2214d725a5068b457e 41 | msgid "Invalid Twitter parameter" 42 | msgstr "Parámetro de Twitter inválido" 43 | 44 | #: ../../api/lib/twitter-api-utils.php:155 loco:5505af2214d725a5068b4585 45 | msgid "Just now" 46 | msgstr "Ahora mismo" 47 | 48 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4583 49 | msgid "Key required even if secret is empty" 50 | msgstr "Clave exigida incluso si secreto está vacío" 51 | 52 | #: ../../latest-tweets.php:231 ../../latest-tweets.php:241 572 loco:#: 5505af2214d725a5068b4572 53 | msgid "Latest Tweets" 54 | msgstr "Últimos Tweets" 55 | 56 | #: ../../api/lib/twitter-api-core.php:356 loco:5505af2214d725a5068b4580 57 | msgid "Malformed response from Twitter" 58 | msgstr "Respuesta de Twitter: malformed" 59 | 60 | #: ../../latest-tweets.php:217 loco:5505af2214d725a5068b456f 61 | msgid "Minimum popularity" 62 | msgstr "" 63 | 64 | #: ../../latest-tweets.php:212 loco:5505af2214d725a5068b456e 65 | msgid "Number of tweets" 66 | msgstr "Número de tweets" 67 | 68 | #: ../api/lib/twitter-api-admin.php:56 loco:5505c1b514d72528128b456a 69 | msgid "OAuth Access Secret" 70 | msgstr "" 71 | 72 | #: ../api/lib/twitter-api-admin.php:52 loco:5505c1b514d72528128b4569 73 | msgid "OAuth Access Token" 74 | msgstr "" 75 | 76 | #: ../api/lib/twitter-api-admin.php:44 loco:5505c1b514d72528128b4567 77 | msgid "OAuth Consumer Key" 78 | msgstr "" 79 | 80 | #: ../api/lib/twitter-api-admin.php:48 loco:5505c1b514d72528128b4568 81 | msgid "OAuth Consumer Secret" 82 | msgstr "" 83 | 84 | #: ../../latest-tweets.php:44 loco:5505af2214d725a5068b456b 85 | msgid "Plugin not fully configured" 86 | msgstr "Aplicación de Twitter no totalmente configurada" 87 | 88 | #: ../../api/lib/twitter-api-admin.php:139 loco:5505af2214d725a5068b457a 89 | msgid "Plugin not yet authenticated with Twitter" 90 | msgstr "El plugin no se autenticado aún en Twitter" 91 | 92 | #: ../../api/lib/twitter-api-admin.php:60 loco:5505af2214d725a5068b4575 93 | msgid "Save settings" 94 | msgstr "Salvar" 95 | 96 | #: ../../latest-tweets.php:227 loco:5505af2214d725a5068b4571 97 | msgid "Show Replies" 98 | msgstr "Mostrar Respuestas" 99 | 100 | #: ../../latest-tweets.php:222 loco:5505af2214d725a5068b4570 101 | msgid "Show Retweets" 102 | msgstr "Mostrar RTs" 103 | 104 | #: ../../api/lib/twitter-api-core.php:532 loco:5505af2214d725a5068b4584 105 | msgid "Status %u from Twitter" 106 | msgstr "" 107 | 108 | #: ../../api/lib/twitter-api-admin.php:63 loco:5505af2214d725a5068b4576 109 | msgid "These details are available in" 110 | msgstr "Detalles disponibles en" 111 | 112 | #: ../../api/lib/twitter-api-admin.php:189 loco:5505af2214d725a5068b457c 113 | msgid "Twitter API" 114 | msgstr "API de Twitter" 115 | 116 | #: ../../api/lib/twitter-api-admin.php:16 loco:5505af2214d725a5068b4574 117 | msgid "Twitter API Authentication Settings" 118 | msgstr "Configuración de Autenticación de la API de Twitter" 119 | 120 | #: ../../api/lib/twitter-api-admin.php:121 121 | #: ../../api/lib/twitter-api-core.php:145 loco:5505af2214d725a5068b4579 122 | msgid "Twitter application not fully configured" 123 | msgstr "Aplicación de Twitter no totalmente configurada" 124 | 125 | #: ../../api/lib/twitter-api-core.php:230 loco:5505af2214d725a5068b457d 126 | msgid "Twitter client not authenticated" 127 | msgstr "Cliente de Twitter no autenticado" 128 | 129 | #: ../../api/lib/twitter-api-core.php:308 130 | #: ../../api/lib/twitter-api-core.php:320 loco:5505af2214d725a5068b457f 131 | msgid "Twitter error #%d" 132 | msgstr "Error de Twitter #%d" 133 | 134 | #: ../../latest-tweets.php:207 loco:5505af2214d725a5068b456d 135 | msgid "Twitter handle" 136 | msgstr "Nombre de Usuario de Twitter" 137 | 138 | #: ../../latest-tweets.php:202 loco:5505af2214d725a5068b456c 139 | msgid "Widget title" 140 | msgstr "Título del Widget" 141 | 142 | #: ../../api/lib/twitter-api-core.php:375 loco:5505af2214d725a5068b4581 143 | msgid "Wordpress HTTP request failure" 144 | msgstr "Error en la solicitud de HTTP de Wordpress" 145 | 146 | #: ../../api/lib/twitter-api-utils.php:160 loco:5505af2214d725a5068b4567 147 | msgid "%u minute ago" 148 | msgid_plural "%u minutes ago" 149 | msgstr[0] "Hace %u minuto" 150 | msgstr[1] "Hace %u minutos" 151 | 152 | #: ../../api/lib/twitter-api-utils.php:173 loco:5505af2214d725a5068b4586 153 | msgid "Yesterday at" 154 | msgstr "Ayer a las" 155 | 156 | #: ../../api/lib/twitter-api-admin.php:102 loco:5505af2214d725a5068b4578 157 | msgid "You don't have permission to manage Twitter API settings" 158 | msgstr "Usted no tiene permisos para manejar los parametros de la API de Twitter" 159 | 160 | #: ../../api/lib/twitter-api-admin.php:64 loco:5505af2214d725a5068b4577 161 | msgid "your Twitter dashboard" 162 | msgstr "su panel de control de Twitter" 163 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-nl_NL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/twitter-api-nl_NL.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-nl_NL.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Dutch\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: nl_NL\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Twitter API\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../api/lib/twitter-api-utils.php:168 loco:5505af2214d725a5068b4569 23 | msgid "About an hour ago" 24 | msgid_plural "About %u hours ago" 25 | msgstr[0] "Ongeveer 1 uur geleden" 26 | msgstr[1] "Ongeveer %u uur geleden" 27 | 28 | #: ../../api/lib/twitter-api-admin.php:146 loco:5505af2214d725a5068b457b 29 | msgid "Authenticated as @%s" 30 | msgstr "Authorizeren als @%s" 31 | 32 | #: ../../latest-tweets.php:322 ../../api/lib/twitter-api-admin.php:90 loco:#: 5505af2214d725a5068b4573 33 | msgid "Connect to Twitter" 34 | msgstr "" 35 | 36 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4582 37 | msgid "Invalid OAuth token" 38 | msgstr "Ongeldige OAuth token" 39 | 40 | #: ../../api/lib/twitter-api-core.php:246 loco:5505af2214d725a5068b457e 41 | msgid "Invalid Twitter parameter" 42 | msgstr "Ongeldige Twitter parameter" 43 | 44 | #: ../../api/lib/twitter-api-utils.php:155 loco:5505af2214d725a5068b4585 45 | msgid "Just now" 46 | msgstr "Zojuist" 47 | 48 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4583 49 | msgid "Key required even if secret is empty" 50 | msgstr "Key (sleutel) vereist ookal is secret (geheim) leeg" 51 | 52 | #: ../../latest-tweets.php:231 ../../latest-tweets.php:241 572 loco:#: 5505af2214d725a5068b4572 53 | msgid "Latest Tweets" 54 | msgstr "Laatste tweets" 55 | 56 | #: ../../api/lib/twitter-api-core.php:356 loco:5505af2214d725a5068b4580 57 | msgid "Malformed response from Twitter" 58 | msgstr "Onjuiste response van Twitter" 59 | 60 | #: ../../latest-tweets.php:217 loco:5505af2214d725a5068b456f 61 | msgid "Minimum popularity" 62 | msgstr "" 63 | 64 | #: ../../latest-tweets.php:212 loco:5505af2214d725a5068b456e 65 | msgid "Number of tweets" 66 | msgstr "Aantal tweets" 67 | 68 | #: ../api/lib/twitter-api-admin.php:56 loco:5505c1b514d72528128b456a 69 | msgid "OAuth Access Secret" 70 | msgstr "" 71 | 72 | #: ../api/lib/twitter-api-admin.php:52 loco:5505c1b514d72528128b4569 73 | msgid "OAuth Access Token" 74 | msgstr "" 75 | 76 | #: ../api/lib/twitter-api-admin.php:44 loco:5505c1b514d72528128b4567 77 | msgid "OAuth Consumer Key" 78 | msgstr "" 79 | 80 | #: ../api/lib/twitter-api-admin.php:48 loco:5505c1b514d72528128b4568 81 | msgid "OAuth Consumer Secret" 82 | msgstr "" 83 | 84 | #: ../../latest-tweets.php:44 loco:5505af2214d725a5068b456b 85 | msgid "Plugin not fully configured" 86 | msgstr "Twitter apllicatie is niet volledig geconfigureerd" 87 | 88 | #: ../../api/lib/twitter-api-admin.php:139 loco:5505af2214d725a5068b457a 89 | msgid "Plugin not yet authenticated with Twitter" 90 | msgstr "Plugin nog niet geauthoriseerd bij Twitter" 91 | 92 | #: ../../api/lib/twitter-api-admin.php:60 loco:5505af2214d725a5068b4575 93 | msgid "Save settings" 94 | msgstr "Instellingen opslaan" 95 | 96 | #: ../../latest-tweets.php:227 loco:5505af2214d725a5068b4571 97 | msgid "Show Replies" 98 | msgstr "Antwoorden laten zien" 99 | 100 | #: ../../latest-tweets.php:222 loco:5505af2214d725a5068b4570 101 | msgid "Show Retweets" 102 | msgstr "Retweets laten zien" 103 | 104 | #: ../../api/lib/twitter-api-core.php:532 loco:5505af2214d725a5068b4584 105 | msgid "Status %u from Twitter" 106 | msgstr "" 107 | 108 | #: ../../api/lib/twitter-api-admin.php:63 loco:5505af2214d725a5068b4576 109 | msgid "These details are available in" 110 | msgstr "Deze details zijn beschikbaar in" 111 | 112 | #: ../../api/lib/twitter-api-admin.php:189 loco:5505af2214d725a5068b457c 113 | msgid "Twitter API" 114 | msgstr "Twitter API" 115 | 116 | #: ../../api/lib/twitter-api-admin.php:16 loco:5505af2214d725a5068b4574 117 | msgid "Twitter API Authentication Settings" 118 | msgstr "Twitter API authenticatie-instellingen" 119 | 120 | #: ../../api/lib/twitter-api-admin.php:121 121 | #: ../../api/lib/twitter-api-core.php:145 loco:5505af2214d725a5068b4579 122 | msgid "Twitter application not fully configured" 123 | msgstr "Twitter apllicatie is niet volledig geconfigureerd" 124 | 125 | #: ../../api/lib/twitter-api-core.php:230 loco:5505af2214d725a5068b457d 126 | msgid "Twitter client not authenticated" 127 | msgstr "Twitter Client niet geauthoriseerd" 128 | 129 | #: ../../api/lib/twitter-api-core.php:308 130 | #: ../../api/lib/twitter-api-core.php:320 loco:5505af2214d725a5068b457f 131 | msgid "Twitter error #%d" 132 | msgstr "Twitter fout #%d" 133 | 134 | #: ../../latest-tweets.php:207 loco:5505af2214d725a5068b456d 135 | msgid "Twitter handle" 136 | msgstr "Twitternaam" 137 | 138 | #: ../../latest-tweets.php:202 loco:5505af2214d725a5068b456c 139 | msgid "Widget title" 140 | msgstr "Titel" 141 | 142 | #: ../../api/lib/twitter-api-core.php:375 loco:5505af2214d725a5068b4581 143 | msgid "Wordpress HTTP request failure" 144 | msgstr "Wordpress HTTP Request fout" 145 | 146 | #: ../../api/lib/twitter-api-utils.php:160 loco:5505af2214d725a5068b4567 147 | msgid "%u minute ago" 148 | msgid_plural "%u minutes ago" 149 | msgstr[0] "1 minuut geleden" 150 | msgstr[1] "%u minuten geleden" 151 | 152 | #: ../../api/lib/twitter-api-utils.php:173 loco:5505af2214d725a5068b4586 153 | msgid "Yesterday at" 154 | msgstr "Gisteren om" 155 | 156 | #: ../../api/lib/twitter-api-admin.php:102 loco:5505af2214d725a5068b4578 157 | msgid "You don't have permission to manage Twitter API settings" 158 | msgstr "Je hebt geen rechten om de Twitter API instellingen aan te passen" 159 | 160 | #: ../../api/lib/twitter-api-admin.php:64 loco:5505af2214d725a5068b4577 161 | msgid "your Twitter dashboard" 162 | msgstr "Twitter Dashboard" 163 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-pt_BR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/twitter-api-pt_BR.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-pt_BR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Portuguese (Brazil)\n" 10 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Poedit-SourceCharset: UTF-8\n" 15 | "X-Generator: Loco https://localise.biz\n" 16 | "X-Loco-Source-Locale: en_GB\n" 17 | "X-Loco-Target-Locale: pt_BR\n" 18 | "X-Loco-Project-Id: 284\n" 19 | "X-Loco-Tagged: Twitter API\n" 20 | "X-Loco-Api-Version: 1.0.9" 21 | 22 | #: ../../api/lib/twitter-api-utils.php:168 loco:5505af2214d725a5068b4569 23 | msgid "About an hour ago" 24 | msgid_plural "About %u hours ago" 25 | msgstr[0] "Cerca de uma hora atrás" 26 | msgstr[1] "Cerca de %u horas atrás" 27 | 28 | #: ../../api/lib/twitter-api-admin.php:146 loco:5505af2214d725a5068b457b 29 | msgid "Authenticated as @%s" 30 | msgstr "Autenticado como @%s" 31 | 32 | #: ../../latest-tweets.php:322 ../../api/lib/twitter-api-admin.php:90 loco:#: 5505af2214d725a5068b4573 33 | msgid "Connect to Twitter" 34 | msgstr "" 35 | 36 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4582 37 | msgid "Invalid OAuth token" 38 | msgstr "Token OAuth inválido" 39 | 40 | #: ../../api/lib/twitter-api-core.php:246 loco:5505af2214d725a5068b457e 41 | msgid "Invalid Twitter parameter" 42 | msgstr "Parâmetro do Twitter inválido" 43 | 44 | #: ../../api/lib/twitter-api-utils.php:155 loco:5505af2214d725a5068b4585 45 | msgid "Just now" 46 | msgstr "Agora mesmo" 47 | 48 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4583 49 | msgid "Key required even if secret is empty" 50 | msgstr "Chave exigida mesmo se o secret estiver vazio" 51 | 52 | #: ../../latest-tweets.php:231 ../../latest-tweets.php:241 572 loco:#: 5505af2214d725a5068b4572 53 | msgid "Latest Tweets" 54 | msgstr "Últimos Tweets" 55 | 56 | #: ../../api/lib/twitter-api-core.php:356 loco:5505af2214d725a5068b4580 57 | msgid "Malformed response from Twitter" 58 | msgstr "Resposta \"malformed\" do Twitter" 59 | 60 | #: ../../latest-tweets.php:217 loco:5505af2214d725a5068b456f 61 | msgid "Minimum popularity" 62 | msgstr "" 63 | 64 | #: ../../latest-tweets.php:212 loco:5505af2214d725a5068b456e 65 | msgid "Number of tweets" 66 | msgstr "Número de tweets" 67 | 68 | #: ../api/lib/twitter-api-admin.php:56 loco:5505c1b514d72528128b456a 69 | msgid "OAuth Access Secret" 70 | msgstr "" 71 | 72 | #: ../api/lib/twitter-api-admin.php:52 loco:5505c1b514d72528128b4569 73 | msgid "OAuth Access Token" 74 | msgstr "" 75 | 76 | #: ../api/lib/twitter-api-admin.php:44 loco:5505c1b514d72528128b4567 77 | msgid "OAuth Consumer Key" 78 | msgstr "" 79 | 80 | #: ../api/lib/twitter-api-admin.php:48 loco:5505c1b514d72528128b4568 81 | msgid "OAuth Consumer Secret" 82 | msgstr "" 83 | 84 | #: ../../latest-tweets.php:44 loco:5505af2214d725a5068b456b 85 | msgid "Plugin not fully configured" 86 | msgstr "Aplicação do Twitter não totalmente configurada" 87 | 88 | #: ../../api/lib/twitter-api-admin.php:139 loco:5505af2214d725a5068b457a 89 | msgid "Plugin not yet authenticated with Twitter" 90 | msgstr "Plugin ainda não autenticado com o Twitter" 91 | 92 | #: ../../api/lib/twitter-api-admin.php:60 loco:5505af2214d725a5068b4575 93 | msgid "Save settings" 94 | msgstr "Salvar" 95 | 96 | #: ../../latest-tweets.php:227 loco:5505af2214d725a5068b4571 97 | msgid "Show Replies" 98 | msgstr "Mostrar Replies" 99 | 100 | #: ../../latest-tweets.php:222 loco:5505af2214d725a5068b4570 101 | msgid "Show Retweets" 102 | msgstr "Mostrar RTs" 103 | 104 | #: ../../api/lib/twitter-api-core.php:532 loco:5505af2214d725a5068b4584 105 | msgid "Status %u from Twitter" 106 | msgstr "" 107 | 108 | #: ../../api/lib/twitter-api-admin.php:63 loco:5505af2214d725a5068b4576 109 | msgid "These details are available in" 110 | msgstr "Detalhes disponíveis em" 111 | 112 | #: ../../api/lib/twitter-api-admin.php:189 loco:5505af2214d725a5068b457c 113 | msgid "Twitter API" 114 | msgstr "API do Twitter" 115 | 116 | #: ../../api/lib/twitter-api-admin.php:16 loco:5505af2214d725a5068b4574 117 | msgid "Twitter API Authentication Settings" 118 | msgstr "Configurações de Autenticação da API do Twitter" 119 | 120 | #: ../../api/lib/twitter-api-admin.php:121 121 | #: ../../api/lib/twitter-api-core.php:145 loco:5505af2214d725a5068b4579 122 | msgid "Twitter application not fully configured" 123 | msgstr "Aplicação do Twitter não totalmente configurada" 124 | 125 | #: ../../api/lib/twitter-api-core.php:230 loco:5505af2214d725a5068b457d 126 | msgid "Twitter client not authenticated" 127 | msgstr "Cliente do Twitter não autenticado" 128 | 129 | #: ../../api/lib/twitter-api-core.php:308 130 | #: ../../api/lib/twitter-api-core.php:320 loco:5505af2214d725a5068b457f 131 | msgid "Twitter error #%d" 132 | msgstr "Erro no Twitter #%d" 133 | 134 | #: ../../latest-tweets.php:207 loco:5505af2214d725a5068b456d 135 | msgid "Twitter handle" 136 | msgstr "Login no Twitter" 137 | 138 | #: ../../latest-tweets.php:202 loco:5505af2214d725a5068b456c 139 | msgid "Widget title" 140 | msgstr "Título do Widget" 141 | 142 | #: ../../api/lib/twitter-api-core.php:375 loco:5505af2214d725a5068b4581 143 | msgid "Wordpress HTTP request failure" 144 | msgstr "Falha no HTTP request do Wordpress" 145 | 146 | #: ../../api/lib/twitter-api-utils.php:160 loco:5505af2214d725a5068b4567 147 | msgid "%u minute ago" 148 | msgid_plural "%u minutes ago" 149 | msgstr[0] "1 minuto atrás" 150 | msgstr[1] "%u minutos atrás" 151 | 152 | #: ../../api/lib/twitter-api-utils.php:173 loco:5505af2214d725a5068b4586 153 | msgid "Yesterday at" 154 | msgstr "Ontem às" 155 | 156 | #: ../../api/lib/twitter-api-admin.php:102 loco:5505af2214d725a5068b4578 157 | msgid "You don't have permission to manage Twitter API settings" 158 | msgstr "Você não tem permissão para gerenciar a API do Twitter" 159 | 160 | #: ../../api/lib/twitter-api-admin.php:64 loco:5505af2214d725a5068b4577 161 | msgid "your Twitter dashboard" 162 | msgstr "seu painel do Twitter" 163 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-ru_RU.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/api/wp-twitter-api/lang/twitter-api-ru_RU.mo -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api-ru_RU.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Twitter API plugin\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-07-29 10:55+0100\n" 6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n" 7 | "Last-Translator: Tim Whitlock\n" 8 | "Language-Team: Wordpress\n" 9 | "Language: Russian\n" 10 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" 11 | "4 && (n%100<10 || n%100>=20) ? 1 : 2);\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-SourceCharset: UTF-8\n" 16 | "X-Generator: Loco https://localise.biz\n" 17 | "X-Loco-Source-Locale: en_GB\n" 18 | "X-Loco-Target-Locale: ru_RU\n" 19 | "X-Loco-Project-Id: 284\n" 20 | "X-Loco-Tagged: Twitter API\n" 21 | "X-Loco-Api-Version: 1.0.9" 22 | 23 | #: ../../api/lib/twitter-api-utils.php:168 loco:5505af2214d725a5068b4569 24 | msgid "About an hour ago" 25 | msgid_plural "About %u hours ago" 26 | msgstr[0] "Около часа назад" 27 | msgstr[1] "Около %u часов назад" 28 | msgstr[2] "" 29 | 30 | #: ../../api/lib/twitter-api-admin.php:146 loco:5505af2214d725a5068b457b 31 | msgid "Authenticated as @%s" 32 | msgstr "Авторизован как @%s" 33 | 34 | #: ../../latest-tweets.php:322 ../../api/lib/twitter-api-admin.php:90 loco:#: 5505af2214d725a5068b4573 35 | msgid "Connect to Twitter" 36 | msgstr "" 37 | 38 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4582 39 | msgid "Invalid OAuth token" 40 | msgstr "Неправильный OAuth token" 41 | 42 | #: ../../api/lib/twitter-api-core.php:246 loco:5505af2214d725a5068b457e 43 | msgid "Invalid Twitter parameter" 44 | msgstr "Не верный параметр Твиттера" 45 | 46 | #: ../../api/lib/twitter-api-utils.php:155 loco:5505af2214d725a5068b4585 47 | msgid "Just now" 48 | msgstr "Только что" 49 | 50 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4583 51 | msgid "Key required even if secret is empty" 52 | msgstr "Требуется Ключ, даже если секретный ключ пуст" 53 | 54 | #: ../../latest-tweets.php:231 ../../latest-tweets.php:241 572 loco:#: 5505af2214d725a5068b4572 55 | msgid "Latest Tweets" 56 | msgstr "Latest Tweets (Поледние твиты)" 57 | 58 | #: ../../api/lib/twitter-api-core.php:356 loco:5505af2214d725a5068b4580 59 | msgid "Malformed response from Twitter" 60 | msgstr "Ошибочный ответ от Твиттера" 61 | 62 | #: ../../latest-tweets.php:217 loco:5505af2214d725a5068b456f 63 | msgid "Minimum popularity" 64 | msgstr "" 65 | 66 | #: ../../latest-tweets.php:212 loco:5505af2214d725a5068b456e 67 | msgid "Number of tweets" 68 | msgstr "Количество твитов" 69 | 70 | #: ../api/lib/twitter-api-admin.php:56 loco:5505c1b514d72528128b456a 71 | msgid "OAuth Access Secret" 72 | msgstr "" 73 | 74 | #: ../api/lib/twitter-api-admin.php:52 loco:5505c1b514d72528128b4569 75 | msgid "OAuth Access Token" 76 | msgstr "" 77 | 78 | #: ../api/lib/twitter-api-admin.php:44 loco:5505c1b514d72528128b4567 79 | msgid "OAuth Consumer Key" 80 | msgstr "" 81 | 82 | #: ../api/lib/twitter-api-admin.php:48 loco:5505c1b514d72528128b4568 83 | msgid "OAuth Consumer Secret" 84 | msgstr "" 85 | 86 | #: ../../latest-tweets.php:44 loco:5505af2214d725a5068b456b 87 | msgid "Plugin not fully configured" 88 | msgstr "Приложение в Твиттере не полностью настроено" 89 | 90 | #: ../../api/lib/twitter-api-admin.php:139 loco:5505af2214d725a5068b457a 91 | msgid "Plugin not yet authenticated with Twitter" 92 | msgstr "Плагин еще не получил доступ к Твиттеру" 93 | 94 | #: ../../api/lib/twitter-api-admin.php:60 loco:5505af2214d725a5068b4575 95 | msgid "Save settings" 96 | msgstr "Сохранить настройки" 97 | 98 | #: ../../latest-tweets.php:227 loco:5505af2214d725a5068b4571 99 | msgid "Show Replies" 100 | msgstr "Показывать Ответы" 101 | 102 | #: ../../latest-tweets.php:222 loco:5505af2214d725a5068b4570 103 | msgid "Show Retweets" 104 | msgstr "Показывать Ретвиты" 105 | 106 | #: ../../api/lib/twitter-api-core.php:532 loco:5505af2214d725a5068b4584 107 | msgid "Status %u from Twitter" 108 | msgstr "" 109 | 110 | #: ../../api/lib/twitter-api-admin.php:63 loco:5505af2214d725a5068b4576 111 | msgid "These details are available in" 112 | msgstr "Эти данные доступны в" 113 | 114 | #: ../../api/lib/twitter-api-admin.php:189 loco:5505af2214d725a5068b457c 115 | msgid "Twitter API" 116 | msgstr "API Твиттера" 117 | 118 | #: ../../api/lib/twitter-api-admin.php:16 loco:5505af2214d725a5068b4574 119 | msgid "Twitter API Authentication Settings" 120 | msgstr "Настройка подключения к API Твиттера" 121 | 122 | #: ../../api/lib/twitter-api-admin.php:121 123 | #: ../../api/lib/twitter-api-core.php:145 loco:5505af2214d725a5068b4579 124 | msgid "Twitter application not fully configured" 125 | msgstr "Приложение в Твиттере не полностью настроено" 126 | 127 | #: ../../api/lib/twitter-api-core.php:230 loco:5505af2214d725a5068b457d 128 | msgid "Twitter client not authenticated" 129 | msgstr "Пользователь Твиттера не аутентифицирован" 130 | 131 | #: ../../api/lib/twitter-api-core.php:308 132 | #: ../../api/lib/twitter-api-core.php:320 loco:5505af2214d725a5068b457f 133 | msgid "Twitter error #%d" 134 | msgstr "Ошибка Твиттера #%d" 135 | 136 | #: ../../latest-tweets.php:207 loco:5505af2214d725a5068b456d 137 | msgid "Twitter handle" 138 | msgstr "Логин в Твиттере" 139 | 140 | #: ../../latest-tweets.php:202 loco:5505af2214d725a5068b456c 141 | msgid "Widget title" 142 | msgstr "Заголовок виджета" 143 | 144 | #: ../../api/lib/twitter-api-core.php:375 loco:5505af2214d725a5068b4581 145 | msgid "Wordpress HTTP request failure" 146 | msgstr "Wordpress неудачный HTTP-запрос " 147 | 148 | #: ../../api/lib/twitter-api-utils.php:160 loco:5505af2214d725a5068b4567 149 | msgid "%u minute ago" 150 | msgid_plural "%u minutes ago" 151 | msgstr[0] "1 минуту назад" 152 | msgstr[1] "%u минуты назад" 153 | msgstr[2] "" 154 | 155 | #: ../../api/lib/twitter-api-utils.php:173 loco:5505af2214d725a5068b4586 156 | msgid "Yesterday at" 157 | msgstr "Вчера в " 158 | 159 | #: ../../api/lib/twitter-api-admin.php:102 loco:5505af2214d725a5068b4578 160 | msgid "You don't have permission to manage Twitter API settings" 161 | msgstr "" 162 | "Вы не имеете разрешения управлять настроечными параметрами программного API " 163 | "Твиттера" 164 | 165 | #: ../../api/lib/twitter-api-admin.php:64 loco:5505af2214d725a5068b4577 166 | msgid "your Twitter dashboard" 167 | msgstr "Вашей панеле в Твиттере" 168 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/twitter-api.pot: -------------------------------------------------------------------------------- 1 | # Loco Gettext template 2 | #, fuzzy 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: Twitter API plugin\n" 6 | "Report-Msgid-Bugs-To: Tim Whitlock\n" 7 | "POT-Creation-Date: 2015-03-15 17:42+0000\n" 8 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 9 | "Last-Translator: FULL NAME \n" 10 | "Language-Team: \n" 11 | "Language: \n" 12 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "X-Poedit-SourceCharset: UTF-8\n" 17 | "X-Generator: Loco https://localise.biz\n" 18 | "X-Loco-Source-Locale: en_GB\n" 19 | "X-Loco-Project-Id: 284\n" 20 | "X-Loco-Tagged: Twitter API\n" 21 | "X-Loco-Api-Version: 1.0.9" 22 | 23 | #: ../../api/lib/twitter-api-utils.php:168 loco:5505af2214d725a5068b4569 24 | msgid "About an hour ago" 25 | msgid_plural "About %u hours ago" 26 | msgstr[0] "" 27 | msgstr[1] "" 28 | 29 | #: ../../api/lib/twitter-api-admin.php:146 loco:5505af2214d725a5068b457b 30 | msgid "Authenticated as @%s" 31 | msgstr "" 32 | 33 | #: ../../latest-tweets.php:322 ../../api/lib/twitter-api-admin.php:90 loco:#: 5505af2214d725a5068b4573 34 | msgid "Connect to Twitter" 35 | msgstr "" 36 | 37 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4582 38 | msgid "Invalid OAuth token" 39 | msgstr "" 40 | 41 | #: ../../api/lib/twitter-api-core.php:246 loco:5505af2214d725a5068b457e 42 | msgid "Invalid Twitter parameter" 43 | msgstr "" 44 | 45 | #: ../../api/lib/twitter-api-utils.php:155 loco:5505af2214d725a5068b4585 46 | msgid "Just now" 47 | msgstr "" 48 | 49 | #: ../../api/lib/twitter-api-core.php:410 loco:5505af2214d725a5068b4583 50 | msgid "Key required even if secret is empty" 51 | msgstr "" 52 | 53 | #: ../../latest-tweets.php:231 ../../latest-tweets.php:241 572 loco:#: 5505af2214d725a5068b4572 54 | msgid "Latest Tweets" 55 | msgstr "" 56 | 57 | #: ../../api/lib/twitter-api-core.php:356 loco:5505af2214d725a5068b4580 58 | msgid "Malformed response from Twitter" 59 | msgstr "" 60 | 61 | #: ../../latest-tweets.php:217 loco:5505af2214d725a5068b456f 62 | msgid "Minimum popularity" 63 | msgstr "" 64 | 65 | #: ../../latest-tweets.php:212 loco:5505af2214d725a5068b456e 66 | msgid "Number of tweets" 67 | msgstr "" 68 | 69 | #: ../api/lib/twitter-api-admin.php:56 loco:5505c1b514d72528128b456a 70 | msgid "OAuth Access Secret" 71 | msgstr "" 72 | 73 | #: ../api/lib/twitter-api-admin.php:52 loco:5505c1b514d72528128b4569 74 | msgid "OAuth Access Token" 75 | msgstr "" 76 | 77 | #: ../api/lib/twitter-api-admin.php:44 loco:5505c1b514d72528128b4567 78 | msgid "OAuth Consumer Key" 79 | msgstr "" 80 | 81 | #: ../api/lib/twitter-api-admin.php:48 loco:5505c1b514d72528128b4568 82 | msgid "OAuth Consumer Secret" 83 | msgstr "" 84 | 85 | #: ../../latest-tweets.php:44 loco:5505af2214d725a5068b456b 86 | msgid "Plugin not fully configured" 87 | msgstr "" 88 | 89 | #: ../../api/lib/twitter-api-admin.php:139 loco:5505af2214d725a5068b457a 90 | msgid "Plugin not yet authenticated with Twitter" 91 | msgstr "" 92 | 93 | #: ../../api/lib/twitter-api-admin.php:60 loco:5505af2214d725a5068b4575 94 | msgid "Save settings" 95 | msgstr "" 96 | 97 | #: ../../latest-tweets.php:227 loco:5505af2214d725a5068b4571 98 | msgid "Show Replies" 99 | msgstr "" 100 | 101 | #: ../../latest-tweets.php:222 loco:5505af2214d725a5068b4570 102 | msgid "Show Retweets" 103 | msgstr "" 104 | 105 | #: ../../api/lib/twitter-api-core.php:532 loco:5505af2214d725a5068b4584 106 | msgid "Status %u from Twitter" 107 | msgstr "" 108 | 109 | #: ../../api/lib/twitter-api-admin.php:63 loco:5505af2214d725a5068b4576 110 | msgid "These details are available in" 111 | msgstr "" 112 | 113 | #: ../../api/lib/twitter-api-admin.php:189 loco:5505af2214d725a5068b457c 114 | msgid "Twitter API" 115 | msgstr "" 116 | 117 | #: ../../api/lib/twitter-api-admin.php:16 loco:5505af2214d725a5068b4574 118 | msgid "Twitter API Authentication Settings" 119 | msgstr "" 120 | 121 | #: ../../api/lib/twitter-api-admin.php:121 122 | #: ../../api/lib/twitter-api-core.php:145 loco:5505af2214d725a5068b4579 123 | msgid "Twitter application not fully configured" 124 | msgstr "" 125 | 126 | #: ../../api/lib/twitter-api-core.php:230 loco:5505af2214d725a5068b457d 127 | msgid "Twitter client not authenticated" 128 | msgstr "" 129 | 130 | #: ../../api/lib/twitter-api-core.php:308 131 | #: ../../api/lib/twitter-api-core.php:320 loco:5505af2214d725a5068b457f 132 | msgid "Twitter error #%d" 133 | msgstr "" 134 | 135 | #: ../../latest-tweets.php:207 loco:5505af2214d725a5068b456d 136 | msgid "Twitter handle" 137 | msgstr "" 138 | 139 | #: ../../latest-tweets.php:202 loco:5505af2214d725a5068b456c 140 | msgid "Widget title" 141 | msgstr "" 142 | 143 | #: ../../api/lib/twitter-api-core.php:375 loco:5505af2214d725a5068b4581 144 | msgid "Wordpress HTTP request failure" 145 | msgstr "" 146 | 147 | #: ../../api/lib/twitter-api-utils.php:160 loco:5505af2214d725a5068b4567 148 | msgid "%u minute ago" 149 | msgid_plural "%u minutes ago" 150 | msgstr[0] "" 151 | msgstr[1] "" 152 | 153 | #: ../../api/lib/twitter-api-utils.php:173 loco:5505af2214d725a5068b4586 154 | msgid "Yesterday at" 155 | msgstr "" 156 | 157 | #: ../../api/lib/twitter-api-admin.php:102 loco:5505af2214d725a5068b4578 158 | msgid "You don't have permission to manage Twitter API settings" 159 | msgstr "" 160 | 161 | #: ../../api/lib/twitter-api-admin.php:64 loco:5505af2214d725a5068b4577 162 | msgid "your Twitter dashboard" 163 | msgstr "" 164 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lang/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Script pulls down latest translations from Loco and splits into two text domains via tag 4 | # 5 | 6 | APIKEY="" 7 | 8 | cd "`dirname $0`" 9 | 10 | function loco { 11 | echo "Pulling $1_$2..." 12 | if [ "enGB" = "$1$2" ]; then 13 | wget --quiet --header="Authorization: Loco $APIKEY" "https://localise.biz/api/export/locale/en.pot?filter=twitter-api" -O "twitter-api.pot" 14 | wget --quiet --header="Authorization: Loco $APIKEY" "https://localise.biz/api/export/locale/en.pot?filter=error-codes" -O "extra/twitter-errors.pot" 15 | else 16 | wget --quiet --header="Authorization: Loco $APIKEY" "https://localise.biz/api/export/locale/$1-$2.po?filter=twitter-api" -O "twitter-api-$1_$2.po" 17 | wget --quiet --header="Authorization: Loco $APIKEY" "https://localise.biz/api/export/locale/$1-$2.po?filter=error-codes" -O "extra/twitter-errors-$1_$2.po" 18 | msgfmt --no-hash "twitter-api-$1_$2.po" -o "twitter-api-$1_$2.mo" 19 | msgfmt --no-hash "extra/twitter-errors-$1_$2.po" -o "extra/twitter-errors-$1_$2.mo" 20 | fi 21 | } 22 | 23 | loco en GB 24 | loco es ES 25 | loco de DE 26 | loco nl NL 27 | loco pt BR 28 | loco ru RU 29 | 30 | echo Done. 31 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lib/twitter-api-admin.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | 9 | // register our admin page with the menu, and we're done. 10 | add_action('admin_menu', 'twitter_api_admin_menu'); 11 | 12 | 13 | /** 14 | * Open admin page with header and message 15 | */ 16 | function twitter_api_admin_render_header( $subheader, $css = '' ){ 17 | ?> 18 |
19 |


20 |
21 | 25 |
26 |

2. Twitter API

27 |
28 |

29 |
30 | 39 |
40 | 50 |

51 |
52 | 53 |

54 |

55 |
56 | 57 |

58 |

59 |
60 | 61 |

62 |

63 |
64 | 65 |

66 |
67 |

68 | 69 |

70 | 71 | 72 | 73 | 74 |

Error: ',esc_html( $Ex->getMessage() ),'

'; 91 | return; 92 | } 93 | // Remember request token and render link to authorize 94 | // we're storing permanently - not using session here, because WP provides no session API. 95 | _twitter_api_config( array( 'request_secret' => $Token->secret ) ); 96 | $href = $Token->get_authorization_url(); 97 | echo '

'.esc_html__('Connect to Twitter','twitter-api').'

'; 98 | echo '

 

'; 99 | } 100 | 101 | 102 | 103 | 104 | /** 105 | * Render full admin page 106 | */ 107 | function twitter_api_admin_render_page(){ 108 | if ( ! current_user_can('manage_options') ){ 109 | twitter_api_admin_render_header( __("You don't have permission to manage Twitter API settings",'twitter-api'),'error'); 110 | twitter_api_admin_render_footer(); 111 | return; 112 | } 113 | try { 114 | // update application settings if posted 115 | if( isset($_POST['saf_twitter']) && is_array( $update = $_POST['saf_twitter'] ) ){ 116 | $conf = _twitter_api_config( $update ); 117 | } 118 | 119 | // else get current settings 120 | else { 121 | $conf = _twitter_api_config(); 122 | } 123 | 124 | loklak_settings_conf( ); 125 | 126 | // check whether we have any OAuth params 127 | extract( $conf ); 128 | if( ! $consumer_key || ! $consumer_secret ){ 129 | throw new Exception( __('Twitter API not configured. Details are available in your Twitter dashboard. The plugin is still functional if you use the loklak.org API.','twitter-api') ); 130 | } 131 | 132 | // else exchange access token if callback // request secret saved as option 133 | if( isset($_GET['oauth_token']) && isset($_GET['oauth_verifier']) ){ 134 | $Token = twitter_api_oauth_access_token( $consumer_key, $consumer_secret, $_GET['oauth_token'], $request_secret, $_GET['oauth_verifier'] ); 135 | // have access token, update config and destroy request secret 136 | $conf = _twitter_api_config( array( 137 | 'request_secret' => '', 138 | 'access_key' => $Token->key, 139 | 'access_secret' => $Token->secret, 140 | ) ); 141 | extract( $conf ); 142 | // fall through to verification of credentials 143 | } 144 | 145 | // else administrator needs to connect / authenticate with Twitter. 146 | if( ! $access_key || ! $access_secret ){ 147 | twitter_api_admin_render_header( __('Plugin not yet authenticated with Twitter','twitter-api'), 'error' ); 148 | twitter_api_admin_render_login( $consumer_key, $consumer_secret ); 149 | } 150 | 151 | // else we have auth - verify that tokens are all still valid 152 | else { 153 | $me = twitter_api_get('account/verify_credentials'); 154 | twitter_api_admin_render_header( sprintf( __('Authenticated as @%s','twitter-api'), $me['screen_name'] ), 'updated' ); 155 | } 156 | 157 | } 158 | catch( TwitterApiException $Ex ){ 159 | twitter_api_admin_render_header( $Ex->getStatus().': Error '.$Ex->getCode().', '.$Ex->getMessage(), 'error' ); 160 | if( 401 === $Ex->getStatus() ){ 161 | twitter_api_admin_render_login( $consumer_key, $consumer_secret ); 162 | } 163 | } 164 | catch( Exception $Ex ){ 165 | twitter_api_admin_render_header( $Ex->getMessage(), 'error' ); 166 | } 167 | 168 | // end admin page with options form and close wrapper 169 | twitter_api_admin_render_form(); 170 | echo ''; 171 | twitter_api_admin_render_footer(); 172 | } 173 | 174 | 175 | 176 | /** 177 | * Calculate base URL for admin OAuth callbacks 178 | * @return string 179 | */ 180 | function twitter_api_admin_base_uri(){ 181 | static $base_uri; 182 | if( ! isset($base_uri) ){ 183 | $port = isset($_SERVER['HTTP_X_FORWARDED_PORT']) ? $_SERVER['HTTP_X_FORWARDED_PORT'] : $_SERVER['SERVER_PORT']; 184 | $prot = '443' === $port ? 'https:' : 'http:'; 185 | $base_uri = $prot.'//'.$_SERVER['HTTP_HOST'].''.current( explode( '&', $_SERVER['REQUEST_URI'], 2 ) ); 186 | } 187 | return $base_uri; 188 | } 189 | 190 | 191 | 192 | 193 | 194 | /** 195 | * Admin menu registration callback 196 | */ 197 | function twitter_api_admin_menu() { 198 | $title = __('Tweets Widget','twitter-api'); 199 | add_options_page( $title, $title, 'manage_options', 'tweets-widget-settings', 'twitter_api_admin_render_page'); 200 | } 201 | 202 | 203 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lib/twitter-api-core.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | 9 | define('TWITTER_API_BASE', 'https://api.twitter.com/1.1' ); 10 | 11 | define('TWITTER_OAUTH_REQUEST_TOKEN_URL', 'https://twitter.com/oauth/request_token'); 12 | 13 | define('TWITTER_OAUTH_AUTHORIZE_URL', 'https://twitter.com/oauth/authorize'); 14 | 15 | define('TWITTER_OAUTH_AUTHENTICATE_URL', 'https://twitter.com/oauth/authenticate'); 16 | 17 | define('TWITTER_OAUTH_ACCESS_TOKEN_URL', 'https://twitter.com/oauth/access_token'); 18 | 19 | define('TWITTER_CACHE_APC', (bool) ini_get('apc.enabled') ); 20 | 21 | 22 | 23 | /** 24 | * Get config options from DB 25 | * @param array any new options to update 26 | */ 27 | function _twitter_api_config( array $update = array() ){ 28 | static $conf; 29 | if( ! isset($conf) ){ 30 | $conf = array ( 31 | 'consumer_key' => '', 32 | 'consumer_secret' => '', 33 | 'request_secret' => '', 34 | 'access_key' => '', 35 | 'access_secret' => '', 36 | ); 37 | foreach( $conf as $key => $val ){ 38 | $conf[$key] = get_option('twitter_api_'.$key) or 39 | $conf[$key] = $val; 40 | } 41 | } 42 | foreach( $update as $key => $val ){ 43 | if( isset($conf[$key]) ){ 44 | update_option( 'twitter_api_'.$key, $val ); 45 | $conf[$key] = $val; 46 | } 47 | } 48 | return $conf; 49 | } 50 | 51 | 52 | 53 | 54 | /** 55 | * abstraction of cache fetching, using apc where possible 56 | * @return mixed 57 | */ 58 | function _twitter_api_cache_get( $key ){ 59 | if( TWITTER_CACHE_APC ){ 60 | return apc_fetch( $key ); 61 | } 62 | if( isset($key{45}) ){ 63 | $key = 'twcache_'.md5($key); 64 | } 65 | return get_transient( $key ); 66 | } 67 | 68 | 69 | 70 | /** 71 | * abstraction of cache setting, using apc where possible 72 | * @internal 73 | * @return void 74 | */ 75 | function _twitter_api_cache_set( $key, $value, $ttl ){ 76 | if( TWITTER_CACHE_APC ){ 77 | apc_store( $key, $value, $ttl ); 78 | return; 79 | } 80 | if( isset($key{45}) ){ 81 | $key = 'twcache_'.md5($key); 82 | } 83 | if( ! $ttl ){ 84 | // WP will expire immediately as opposed to never, setting to ten days. 85 | $ttl = 864000; 86 | } 87 | set_transient( $key, $value, $ttl ); 88 | } 89 | 90 | 91 | 92 | 93 | /** 94 | * Client for the Twitter REST API 1.1 95 | */ 96 | class TwitterApiClient { 97 | 98 | /** 99 | * Consumer key token for application 100 | * @var TwitterOAuthToken 101 | */ 102 | private $Consumer; 103 | 104 | /** 105 | * Authenticated access token 106 | * @var TwitterOAuthToken 107 | */ 108 | private $AccessToken; 109 | 110 | /** 111 | * Whether caching API GET requests 112 | * @var int 113 | */ 114 | private $cache_ttl = null; 115 | 116 | /** 117 | * Namespace/prefix for cache keys 118 | * @var string 119 | */ 120 | private $cache_ns; 121 | 122 | /** 123 | * Registry of last rate limit arrays by full api function call 124 | * @var array 125 | */ 126 | private $last_rate = array(); 127 | 128 | /** 129 | * Last api function called, e.g. "direct_messages/sent" 130 | * @var string 131 | */ 132 | private $last_call; 133 | 134 | 135 | /** 136 | * Get client instance authenticated with 'system' credentials 137 | * @param bool whether we're getting the system default client which is expected to be authed 138 | * @return TwitterApiClient 139 | */ 140 | public static function create_instance( $default = true ){ 141 | $Client = new TwitterApiClient; 142 | extract( _twitter_api_config() ); 143 | if( $default ){ 144 | if( ! $consumer_key || ! $consumer_secret || ! $access_key || ! $access_secret ){ 145 | trigger_error( __('Twitter API not configured. Details are available in your Twitter dashboard. The plugin is still functional if you use the loklak.org API.','twitter-api') ); 146 | } 147 | $Client->set_oauth( $consumer_key, $consumer_secret, $access_key, $access_secret ); 148 | } 149 | else if( $consumer_key && $consumer_secret ){ 150 | $Client->set_oauth( $consumer_key, $consumer_secret ); 151 | } 152 | return $Client; 153 | } 154 | 155 | 156 | /** 157 | * @internal 158 | */ 159 | public function __sleep(){ 160 | return array('Consumer','AccessToken'); 161 | } 162 | 163 | /** 164 | * Enable caching of subsequent API calls 165 | * @return TwitterApiClient 166 | */ 167 | public function enable_cache( $ttl = 0, $namespace = 'wp_twitter_api_' ){ 168 | $this->cache_ttl = (int) $ttl; 169 | $this->cache_ns = $namespace; 170 | return $this; 171 | } 172 | 173 | /** 174 | * Disable caching for susequent API calls 175 | * @return TwitterApiClient 176 | */ 177 | public function disable_cache(){ 178 | $this->cache_ttl = null; 179 | $this->cache_ns = null; 180 | return $this; 181 | } 182 | 183 | /** 184 | * Test whether the client has full authentication data. 185 | * Warning: does not validate credentials 186 | * @return bool 187 | */ 188 | public function has_auth(){ 189 | return $this->AccessToken instanceof TwitterOAuthToken && $this->AccessToken->secret; 190 | } 191 | 192 | /** 193 | * Unset all logged in credentials - useful in error situations 194 | * @return TwitterApiClient 195 | */ 196 | public function deauthorize(){ 197 | $this->AccessToken = null; 198 | return $this; 199 | } 200 | 201 | /** 202 | * Set currently logged in user's OAuth access token 203 | * @param string consumer api key 204 | * @param string consumer secret 205 | * @param string access token 206 | * @param string access token secret 207 | * @return TwitterApiClient 208 | */ 209 | public function set_oauth( $consumer_key, $consumer_secret, $access_key = '', $access_secret = '' ){ 210 | $this->deauthorize(); 211 | $this->Consumer = new TwitterOAuthToken( $consumer_key, $consumer_secret ); 212 | if( $access_key && $access_secret ){ 213 | $this->AccessToken = new TwitterOAuthToken( $access_key, $access_secret ); 214 | } 215 | return $this; 216 | } 217 | 218 | 219 | /** 220 | * Call API method over HTTP and return raw data 221 | * @param string API method, e.g. "users/show" 222 | * @param array method arguments 223 | * @param string http request method 224 | * @return array unserialized data returned from twitter 225 | * @throws TwitterApiException 226 | */ 227 | public function call( $path, array $_args, $http_method ){ 228 | // all calls must be authenticated in API 1.1 229 | if( ! $this->has_auth() ){ 230 | throw new TwitterApiException( __('Twitter client not authenticated','twitter-api'), 0, 401 ); 231 | } 232 | // transform some arguments and ensure strings 233 | // no further validation is performed 234 | $args = array(); 235 | foreach( $_args as $key => $val ){ 236 | if( is_string($val) ){ 237 | $args[$key] = $val; 238 | } 239 | else if( true === $val ){ 240 | $args[$key] = 'true'; 241 | } 242 | else if( false === $val || null === $val ){ 243 | $args[$key] = 'false'; 244 | } 245 | else if( ! is_scalar($val) ){ 246 | throw new TwitterApiException( __('Invalid Twitter parameter','twitter-api').' ('.gettype($val).') '.$key.' in '.$path, -1 ); 247 | } 248 | else { 249 | $args[$key] = (string) $val; 250 | } 251 | } 252 | // Fetch response from cache if possible / allowed / enabled 253 | if( $http_method === 'GET' && isset($this->cache_ttl) ){ 254 | $cachekey = $this->cache_ns.$path.'_'.md5( serialize($args) ); 255 | if( preg_match('/^(\d+)-/', $this->AccessToken->key, $reg ) ){ 256 | $cachekey .= '_'.$reg[1]; 257 | } 258 | $data = _twitter_api_cache_get( $cachekey ); 259 | if( is_array($data) ){ 260 | return $data; 261 | } 262 | } 263 | // @todo could validate args against endpoints here. 264 | 265 | // Using Wordpress WP_Http for requests, see class-http.php 266 | $conf = array ( 267 | 'method' => $http_method, 268 | 'redirection' => 0, 269 | ); 270 | // build signed URL and request parameters 271 | $endpoint = TWITTER_API_BASE.'/'.$path.'.json'; 272 | $params = new TwitterOAuthParams( $args ); 273 | $params->set_consumer( $this->Consumer ); 274 | $params->set_token( $this->AccessToken ); 275 | $params->sign_hmac( $http_method, $endpoint ); 276 | if( 'GET' === $http_method ){ 277 | $endpoint .= '?'.$params->serialize(); 278 | } 279 | else { 280 | //$conf['headers'] = $params->oauth_header(); 281 | $conf['body'] = $params->serialize(); 282 | } 283 | $http = self::http_request( $endpoint, $conf ); 284 | $data = json_decode( $http['body'], true ); 285 | $status = $http['response']['code']; 286 | // remember current rate limits for this endpoint 287 | $this->last_call = $path; 288 | if( isset($http['headers']['x-rate-limit-limit']) ) { 289 | $this->last_rate[$path] = array ( 290 | 'limit' => (int) $http['headers']['x-rate-limit-limit'], 291 | 'remaining' => (int) $http['headers']['x-rate-limit-remaining'], 292 | 'reset' => (int) $http['headers']['x-rate-limit-reset'], 293 | ); 294 | } 295 | // unserializable array assumed to be serious error 296 | if( ! is_array($data) ){ 297 | $err = array( 298 | 'message' => '', // <- blank so we use twitter-specific message 299 | 'code' => -1 300 | ); 301 | TwitterApiException::chuck( $err, $status ); 302 | } 303 | // else could be well-formed error 304 | if( isset( $data['errors'] ) ) { 305 | while( $err = array_shift($data['errors']) ){ 306 | $err['message'] = __( $err['message'], 'twitter-api' ); 307 | if( $data['errors'] ){ 308 | $message = sprintf( __('Twitter error #%d','twitter-api'), $err['code'] ).' "'.$err['message'].'"'; 309 | trigger_error( $message, E_USER_WARNING ); 310 | } 311 | else { 312 | TwitterApiException::chuck( $err, $status ); 313 | } 314 | } 315 | } 316 | // some errors appear to use a single key and have no code 317 | // e.g. not authorized to view specific content. 318 | if( isset($data['error']) ){ 319 | $code = isset($data['code']) ? $data['code'] : $status; 320 | $message = sprintf( __('Twitter error #%d','twitter-api'), $code ).' "'.$data['error'].'"'; 321 | TwitterApiException::chuck( compact('message','code'), $status ); 322 | } 323 | if( isset($cachekey) ){ 324 | _twitter_api_cache_set( $cachekey, $data, $this->cache_ttl ); 325 | } 326 | return $data; 327 | } 328 | 329 | 330 | 331 | /** 332 | * Perform an OAuth request - these differ somewhat from regular API calls 333 | * @internal 334 | */ 335 | public function oauth_exchange( $endpoint, array $args ){ 336 | // build a post request and authenticate via OAuth header 337 | $params = new TwitterOAuthParams( $args ); 338 | $params->set_consumer( $this->Consumer ); 339 | if( $this->AccessToken ){ 340 | $params->set_token( $this->AccessToken ); 341 | } 342 | $params->sign_hmac( 'POST', $endpoint ); 343 | $conf = array ( 344 | 'method' => 'POST', 345 | 'redirection' => 0, 346 | 'headers' => array( 'Authorization' => $params->oauth_header() ), 347 | ); 348 | $http = self::http_request( $endpoint, $conf ); 349 | $body = trim( $http['body'] ); 350 | $stat = $http['response']['code']; 351 | if( 200 !== $stat ){ 352 | throw new TwitterApiException( $body, -1, $stat ); 353 | } 354 | parse_str( $body, $params ); 355 | if( ! is_array($params) || ! isset($params['oauth_token']) || ! isset($params['oauth_token_secret']) ){ 356 | throw new TwitterApiException( __('Malformed response from Twitter','twitter-api'), -1, $stat ); 357 | } 358 | return $params; 359 | } 360 | 361 | 362 | 363 | /** 364 | * Abstract Wordpress HTTP call with error handling 365 | * @return array response from wordpress functions 366 | */ 367 | public static function http_request( $endpoint, array $conf ){ 368 | $http = wp_remote_request( $endpoint, $conf ); 369 | if( $http instanceof WP_Error ){ 370 | foreach( $http->get_error_messages() as $message ){ 371 | throw new TwitterApiException( $message, -1 ); 372 | } 373 | } 374 | if( empty($http['response']) ){ 375 | throw new TwitterApiException( __('Wordpress HTTP request failure','twitter-api'), -1 ); 376 | } 377 | return $http; 378 | } 379 | 380 | 381 | 382 | /** 383 | * Get current rate limit, if known. does not look it up 384 | */ 385 | public function last_rate_limit( $func = '' ){ 386 | $func or $func = $this->last_call; 387 | return isset($this->last_rate[$func]) ? $this->last_rate[$func] : array(); 388 | } 389 | 390 | 391 | } 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | /** 400 | * Simple token class that holds key and secret 401 | * @internal 402 | */ 403 | class TwitterOAuthToken { 404 | 405 | public $key; 406 | public $secret; 407 | 408 | public function __construct( $key, $secret = '' ){ 409 | if( ! $key ){ 410 | throw new Exception( __('Invalid OAuth token','twitter-api').' - '.__('Key required even if secret is empty','twitter-api') ); 411 | } 412 | $this->key = $key; 413 | $this->secret = $secret; 414 | } 415 | 416 | public function get_authorization_url(){ 417 | return TWITTER_OAUTH_AUTHORIZE_URL.'?oauth_token='.rawurlencode($this->key); 418 | } 419 | 420 | } 421 | 422 | 423 | 424 | 425 | 426 | /** 427 | * Class for compiling, signing and serializing OAuth parameters 428 | * @internal 429 | */ 430 | class TwitterOAuthParams { 431 | 432 | private $args; 433 | private $consumer_secret; 434 | private $token_secret; 435 | 436 | private static function urlencode( $val ){ 437 | return str_replace( '%7E', '~', rawurlencode($val) ); 438 | } 439 | 440 | private static function urlencode_params( array $args ){ 441 | $pairs = array(); 442 | foreach( $args as $key => $val ){ 443 | $pairs[] = rawurlencode($key).'='.rawurlencode($val); 444 | } 445 | return str_replace( '%7E', '~', implode( '&', $pairs ) ); 446 | } 447 | 448 | public function __construct( array $args = array() ){ 449 | $this->args = $args + array ( 450 | 'oauth_version' => '1.0', 451 | ); 452 | } 453 | 454 | public function set_consumer( TwitterOAuthToken $Consumer ){ 455 | $this->consumer_secret = $Consumer->secret; 456 | $this->args['oauth_consumer_key'] = $Consumer->key; 457 | } 458 | 459 | public function set_token( TwitterOAuthToken $Token ){ 460 | $this->token_secret = $Token->secret; 461 | $this->args['oauth_token'] = $Token->key; 462 | } 463 | 464 | private function normalize(){ 465 | $flags = SORT_STRING | SORT_ASC; 466 | ksort( $this->args, $flags ); 467 | foreach( $this->args as $k => $a ){ 468 | if( is_array($a) ){ 469 | sort( $this->args[$k], $flags ); 470 | } 471 | } 472 | return $this->args; 473 | } 474 | 475 | public function serialize(){ 476 | return self::urlencode_params( $this->args ); 477 | } 478 | 479 | public function sign_hmac( $http_method, $http_rsc ){ 480 | $this->args['oauth_signature_method'] = 'HMAC-SHA1'; 481 | $this->args['oauth_timestamp'] = sprintf('%u', time() ); 482 | $this->args['oauth_nonce'] = sprintf('%f', microtime(true) ); 483 | unset( $this->args['oauth_signature'] ); 484 | $this->normalize(); 485 | $str = $this->serialize(); 486 | $str = strtoupper($http_method).'&'.self::urlencode($http_rsc).'&'.self::urlencode($str); 487 | $key = self::urlencode($this->consumer_secret).'&'.self::urlencode($this->token_secret); 488 | $this->args['oauth_signature'] = base64_encode( hash_hmac( 'sha1', $str, $key, true ) ); 489 | return $this->args; 490 | } 491 | 492 | public function oauth_header(){ 493 | $lines = array(); 494 | foreach( $this->args as $key => $val ){ 495 | $lines[] = self::urlencode($key).'="'.self::urlencode($val).'"'; 496 | } 497 | return 'OAuth '.implode( ",\n ", $lines ); 498 | } 499 | 500 | } 501 | 502 | 503 | 504 | 505 | 506 | 507 | /** 508 | * Overridden HTTP status codes for common Twitter-related problems. 509 | * Note these do not replace error text from Twitter, they're for complete API failures. 510 | * @param int HTTP status code 511 | * @return string HTTP status text 512 | */ 513 | function _twitter_api_http_status_text( $s ){ 514 | // override status to be Twitter specific 515 | $codes = array ( 516 | 429 => 'Twitter API rate limit exceeded', 517 | 500 => 'Twitter server error', 518 | 502 => 'Twitter is not responding', 519 | 503 => 'Twitter is too busy to respond', 520 | ); 521 | if( isset($codes[$s]) ){ 522 | $text = $codes[$s]; 523 | } 524 | // else fall back to Wordpress registry to save bloat 525 | else { 526 | $text = get_status_header_desc( $s ); 527 | } 528 | if( $text ){ 529 | twitter_api_load_textdomain( null, 'twitter-errors' ); 530 | return __( $text, 'twitter-errors' ); 531 | } 532 | // unknown status 533 | return sprintf( __('Status %u from Twitter','twitter-api'), $s ); 534 | } 535 | 536 | 537 | 538 | 539 | 540 | /** 541 | * Exception for throwing when Twitter responds with something unpleasant 542 | */ 543 | class TwitterApiException extends Exception { 544 | 545 | /** 546 | * HTTP Status of error 547 | * @var int 548 | */ 549 | protected $status = 0; 550 | 551 | 552 | /** 553 | * Throw appropriate exception type according to HTTP status code 554 | * @param array Twitter error data from their response 555 | */ 556 | public static function chuck( array $err, $status ){ 557 | $code = isset($err['code']) ? (int) $err['code'] : -1; 558 | $mess = isset($err['message']) ? trim($err['message']) : ''; 559 | static $classes = array ( 560 | 404 => 'TwitterApiNotFoundException', 561 | 429 => 'TwitterApiRateLimitException', 562 | ); 563 | $eclass = isset($classes[$status]) ? $classes[$status] : __CLASS__; 564 | throw new $eclass( $mess, $code, $status ); 565 | } 566 | 567 | 568 | /** 569 | * Construct TwitterApiException with addition of HTTP status code. 570 | * @overload 571 | */ 572 | public function __construct( $message, $code = 0 ){ 573 | if( 2 < func_num_args() ){ 574 | $this->status = (int) func_get_arg(2); 575 | } 576 | if( ! $message ){ 577 | $message = _twitter_api_http_status_text($this->status); 578 | } 579 | parent::__construct( $message, $code ); 580 | } 581 | 582 | 583 | /** 584 | * Get HTTP status of error 585 | * @return int 586 | */ 587 | public function getStatus(){ 588 | return $this->status; 589 | } 590 | 591 | } 592 | 593 | 594 | /** 404 */ 595 | class TwitterApiNotFoundException extends TwitterApiException { 596 | 597 | } 598 | 599 | 600 | /** 429 */ 601 | class TwitterApiRateLimitException extends TwitterApiException { 602 | 603 | } 604 | 605 | 606 | 607 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lib/twitter-api-unicode.php: -------------------------------------------------------------------------------- 1 | 110yyyyy 10zzzzzz 66 | // if( $u < 0x800 ) { 67 | if( 0 === ( $u & 0xFFFFF800 ) ){ 68 | $c = chr( $u & 63 | 128 ); // "10zzzzzz" 69 | $c = chr( ($u>>=6) & 31 | 192 ) . $c; // "110yyyyy" 70 | } 71 | // Triple byte sequence ( < 0x10000 ) 72 | // xxxxyyyy yyzzzzzz ==> 1110xxxx 10yyyyyy 10zzzzzz 73 | // else if( $u < 0x10000 ) { 74 | else if( 0 === ( $u & 0xFFFF0000 ) ){ 75 | // Table 3-7 in the Unicode 5.0 standard disalows D800-DFFF: 76 | //if( $u >= 0xD800 && $u <= 0xDFFF ){ 77 | // trigger_error("Unicode code point $u is invalid", E_USER_NOTICE ); 78 | //} 79 | $c = chr( $u & 63 | 128 ); // "10zzzzzz" 80 | $c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10yyyyyy" 81 | $c = chr( ($u>>=6) & 15 | 224 ) . $c; // "1110xxxx" 82 | } 83 | // Four byte sequence ( < 0x10FFFF ) 84 | // 000wwwxx xxxxyyyy yyzzzzzz ==> 11110www 10xxxxxx 10yyyyyy 10zzzzzz 85 | // else if( $u <= 0x10FFFF ) { 86 | else if( 0 === ( $u & 0xE0000000 ) ){ 87 | $c = chr( $u & 63 | 128 ); // "10zzzzzz" 88 | $c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10yyyyyy" 89 | $c = chr( ($u>>=6) & 63 | 128 ) . $c; // "10xxxxxx" 90 | $c = chr( ($u>>=6) & 7 | 240 ) . $c; // "11110www" 91 | } 92 | else { 93 | // integer too big 94 | trigger_error("Unicode code point too large, $u", E_USER_NOTICE ); 95 | $c = '?'; 96 | } 97 | return $c; 98 | } 99 | 100 | 101 | 102 | /** 103 | * Convert array of unicodes to hex string for use in URLs or class names 104 | */ 105 | function twitter_api_unicode_implode( array $codes, $glue = '-' ){ 106 | foreach( $codes as $i => $n ){ 107 | if( $n > 0x7F ){ 108 | $codes[$i] = sprintf('%04x', $n ); 109 | } 110 | else { 111 | $codes[$i] = sprintf('%02x', $n ); 112 | } 113 | } 114 | return implode( $glue, $codes ); 115 | } 116 | 117 | 118 | /** 119 | * split a utf-8 string into a visual representation of single bytes 120 | */ 121 | function twitter_api_unicode_debug_string( $raw ){ 122 | $debug = array(); 123 | for( $i = 0; $i < strlen($raw); $i++ ){ 124 | $debug[] = sprintf( '\\x%0X', ord( $raw{$i} ) ); 125 | } 126 | return implode('',$debug); 127 | } 128 | -------------------------------------------------------------------------------- /api/wp-twitter-api/lib/twitter-api-utils.php: -------------------------------------------------------------------------------- 1 | \\0', $src ); 25 | // linkify #hashtags 26 | $src = preg_replace('/(?\\0', $src ); 27 | return $src; 28 | } 29 | 30 | 31 | 32 | /** 33 | * Utility for rendering tweet text as clickable links, from *original* tweet text with entity data. 34 | * If you don't have entity data, then use twitter_api_html 35 | * @param string plain text tweet 36 | * @param array optionally pass known tweet entities to save string parsing 37 | * @param string optional target for links, defaults to _blank 38 | * @return string HTML source of tweet text 39 | */ 40 | function twitter_api_html_with_entities( $src, array $entities, $target = '_blank' ){ 41 | 42 | // Raw tweet not expected to be encoded 43 | $src = esc_html( $src ); 44 | 45 | // purposefully not using indicies, due to weird inaccuracies and chances previous filtering 46 | $replace = array(); 47 | 48 | // Expand URLs, like twitter.com except using actual links 49 | if( isset($entities['urls']) && is_array($entities['urls']) ){ 50 | foreach( $entities['urls'] as $r ){ 51 | $find = esc_html( $r['url'] ); 52 | $replace[ $find ] = twitter_api_html_linkify_urls($r['expanded_url']); 53 | } 54 | } 55 | if( isset($entities['media']) && is_array($entities['media']) ){ 56 | foreach( $entities['media'] as $r ){ 57 | $find = esc_html( $r['url'] ); 58 | if( 0 === strpos($r['display_url'], 'pic.twitter.com' ) ) { 59 | $replace[ $find ] = twitter_api_html_linkify_urls( 'https://'.$r['display_url'] ); 60 | } 61 | else { 62 | $replace[ $find ] = twitter_api_html_linkify_urls( $r['expanded_url'] ); 63 | } 64 | } 65 | } 66 | // linkify @names using known mentions from twitter if passed 67 | if( isset($entities['user_mentions']) ){ 68 | foreach( (array) $entities['user_mentions'] as $entity ){ 69 | if( ! empty($entity['screen_name']) && isset($entity['indices']) ){ 70 | $name = $entity['screen_name']; 71 | $find = '@'.$name; 72 | $repl = '@'.$name; 73 | $replace[$find] = ''.$repl.''; 74 | } 75 | } 76 | } 77 | // linkify #hashtags using known entities from twitter if passed 78 | if( isset($entities['hashtags']) ){ 79 | foreach( (array) $entities['hashtags'] as $entity ){ 80 | if( ! empty($entity['text']) && isset($entity['indices']) ){ 81 | $query = array( 'q' => '#'.$entity['text'], 'src' => 'hash' ); 82 | $href = esc_attr('https://twitter.com/search?'.http_build_query($query) ); 83 | $html = esc_html( $entity['text'] ); 84 | $find = '#'.$html; 85 | $repl = '#'.$html; 86 | $replace[$find] = ''.$repl.''; 87 | } 88 | } 89 | } 90 | // perform final replacement on encoded text 91 | if( $replace ){ 92 | return str_replace( array_keys($replace), array_values($replace), $src ); 93 | } 94 | return $src; 95 | } 96 | 97 | 98 | 99 | 100 | /** 101 | * linkify URLs (restricting to 30 chars as per twitter.com) 102 | */ 103 | function twitter_api_html_linkify_urls( $src, $target = '_blank' ){ 104 | $src = preg_replace_callback('!(https?://)(\S+)!', 'twitter_api_html_linkify_callback', $src ); 105 | if( '_blank' !== $target ){ 106 | $src = str_replace( '"_blank"', '"'.$target.'"', $src ); 107 | } 108 | return $src; 109 | } 110 | 111 | 112 | 113 | /** 114 | * @internal 115 | */ 116 | function twitter_api_html_linkify_callback( array $r ){ 117 | list( , $proto, $label ) = $r; 118 | $href = $proto.html_entity_decode( $label ); 119 | if( isset($label{30}) ){ 120 | $label = substr_replace( $label, '…', 30 ); 121 | } 122 | $label = rtrim( str_replace( '#', '#', $label ), '/#?'); 123 | return ''.$label.''; 124 | } 125 | 126 | 127 | 128 | 129 | 130 | /** 131 | * Utility converts the date [of a tweet] to relative time descriprion, e.g. about 2 minutes ago 132 | * 133 | */ 134 | function twitter_api_relative_date( $strdate ){ 135 | // get universal time now. 136 | static $t, $y, $m, $d, $h, $i, $s, $o; 137 | if( ! isset($t) ){ 138 | $t = time(); 139 | sscanf(gmdate('Y m d H i s',$t), '%u %u %u %u %u %u', $y,$m,$d,$h,$i,$s); 140 | } 141 | // get universal time of tweet 142 | $tt = is_int($strdate) ? $strdate : strtotime($strdate); 143 | if( ! $tt || $tt > $t ){ 144 | // slight difference between our clock and Twitter's clock can cause problem here - just pretend it was zero seconds ago 145 | $tt = $t; 146 | $tdiff = 0; 147 | } 148 | else { 149 | sscanf(gmdate('Y m d H i s',$tt), '%u %u %u %u %u %u', $yy,$mm,$dd,$hh,$ii,$ss); 150 | // Calculate relative date string 151 | $tdiff = $t - $tt; 152 | } 153 | // Less than a minute ago? 154 | if( $tdiff < 60 ){ 155 | return __('Just now','twitter-api'); 156 | } 157 | // within last hour? X minutes ago 158 | if( $tdiff < 3600 ){ 159 | $idiff = (int) floor( $tdiff / 60 ); 160 | return sprintf( _n( '%u minute ago', '%u minutes ago', $idiff, 'twitter-api' ), $idiff ); 161 | } 162 | // within same day? About X hours ago 163 | $samey = ($y === $yy) and 164 | $samem = ($m === $mm) and 165 | $samed = ($d === $dd); 166 | if( ! empty($samed) ){ 167 | $hdiff = (int) floor( $tdiff / 3600 ); 168 | return sprintf( _n( 'About an hour ago', 'About %u hours ago', $hdiff, 'twitter-api' ), $hdiff ); 169 | } 170 | $tf = get_option('time_format') or $tf = 'g:i A'; 171 | // within 24 hours? 172 | if( $tdiff < 86400 ){ 173 | return __('Yesterday at','twitter-api').date_i18n(' '.$tf, $tt ); 174 | } 175 | // else return formatted date, e.g. "Oct 20th 2008 9:27 PM" */ 176 | $df = get_option('date_format') or $df= 'M jS Y'; 177 | return date_i18n( $df.' '.$tf, $tt ); 178 | } 179 | 180 | 181 | 182 | /** 183 | * Clean four-byte characters out of tweet text, includes some emoji. 184 | * MySQL utf8 columns cannot store four byte Unicode sequences 185 | */ 186 | function twitter_api_strip_quadruple_bytes( $text ){ 187 | // four byte utf8: 11110www 10xxxxxx 10yyyyyy 10zzzzzz 188 | return preg_replace('/[\xF0-\xF7][\x80-\xBF]{3}/', '', $text ); 189 | } 190 | 191 | 192 | 193 | /** 194 | * Replace Emoji characters with embedded images. 195 | * Should be run after htmlifying tweet and before stripping quadruple bytes 196 | */ 197 | function twitter_api_replace_emoji( $text, $callback = 'twitter_api_replace_emoji_callback' ){ 198 | return preg_replace_callback('/(?:\xF0\x9F\x87[\xA6-\xBA]\xF0\x9F\x87[\xA6-\xBA]|\xF0\x9F[\x80\x83\x85-\x86\x88-\x89\x8C-\x95\x97-\x9B][\x80-\xBF]|[\xE2-\xE3][\x80\x81\x84\x86\x8A\x8C\x8F\x93\x96-\x9E\xA4\xAC-\xAD][\x80-\x82\x84-\x9D\xA0-\xA6\xA8-\xAC\xB0\xB2-\xB6\xB9-\xBF]|[\x23-\x39]\xE2\x83\xA3)/', $callback, $text ); 199 | } 200 | 201 | 202 | 203 | /** 204 | * Default Emoji replacement callback 205 | * @internal 206 | */ 207 | function twitter_api_replace_emoji_callback( array $match ){ 208 | try { 209 | if( empty($match[0]) ){ 210 | return ''; 211 | } 212 | $ref = twitter_api_emoji_ref( $match[0] ); 213 | if( ! $ref ){ 214 | return $match[0]; 215 | } 216 | $html = ''; 217 | return $html; 218 | } 219 | catch( Exception $e ){ 220 | WP_DEBUG and trigger_error( $e->getMessage(), E_USER_WARNING ); 221 | return ''; 222 | } 223 | } 224 | 225 | 226 | 227 | /** 228 | * Get a hex name for a single emoji symbol 229 | * @param string raw bytes, e.g. "\xF0\x9F\x98\x81" 230 | * @return string hex name suitable for creating a class or ID e.g. "1f601" or "1f1ec-1f1e7" for compound symbols 231 | */ 232 | function twitter_api_emoji_ref( $raw ){ 233 | static $emoji; 234 | if( ! isset($emoji) ){ 235 | $emoji = include twitter_api_basedir().'/inc/return-emoji.php'; 236 | } 237 | if( isset($emoji[$raw]) ){ 238 | return $emoji[$raw]; 239 | } 240 | } 241 | 242 | 243 | 244 | /** 245 | * Resolve shortened url fields via entities 246 | * @return string 247 | */ 248 | function twitter_api_expand_urls( $text, array $entities ){ 249 | if( isset($entities['urls']) && is_array($entities['urls']) ){ 250 | foreach( $entities['urls'] as $r ){ 251 | $text = str_replace( $r['url'], $r['expanded_url'], $text ); 252 | } 253 | } 254 | if( isset($entities['media']) && is_array($entities['media']) ){ 255 | foreach( $entities['media'] as $r ){ 256 | if( 0 === strpos($r['display_url'], 'pic.twitter.com' ) ) { 257 | $text = str_replace( $r['url'], 'https://'.$r['display_url'], $text ); 258 | } 259 | else { 260 | $text = str_replace( $r['url'], $r['expanded_url'], $text ); 261 | } 262 | } 263 | } 264 | return $text; 265 | } 266 | 267 | 268 | 269 | -------------------------------------------------------------------------------- /api/wp-twitter-api/test/bootstrap.php: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | . 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /api/wp-twitter-api/test/utils/EmojiTest.php: -------------------------------------------------------------------------------- 1 | get_all() as $raw => $key ){ 39 | $replaced = twitter_api_replace_emoji( 'o'.$raw.'k', $blanker ); 40 | $this->assertEquals( 'ok', $replaced ); 41 | } 42 | } 43 | 44 | 45 | /** 46 | * Match all emoji characters in single block 47 | */ 48 | public function testTotalMatch(){ 49 | $blanker = array( $this, '_replace_blank' ); 50 | $splurge = implode( '', array_keys( $this->get_all() ) ); 51 | $replaced = twitter_api_replace_emoji( 'o'.$splurge.'k', $blanker ); 52 | $this->assertEquals( 'ok', $replaced ); 53 | } 54 | 55 | 56 | /** 57 | * Convert matched bytes back to unicode string reference 58 | */ 59 | public function testAllSequencesResolveUnicode(){ 60 | foreach( $this->get_all() as $raw => $key ){ 61 | $codes = twitter_api_utf8_array( $raw ); 62 | $ucode = twitter_api_unicode_implode( $codes ); 63 | $this->assertEquals( $key, $ucode ); 64 | } 65 | } 66 | 67 | 68 | /** 69 | * Test default URL replacement 70 | */ 71 | public function testDefaultUrlReplacement(){ 72 | foreach( $this->get_all() as $raw => $key ){ 73 | $html = twitter_api_replace_emoji( $raw ); 74 | $want = ''; 75 | $this->assertEquals( $want, $html ); 76 | } 77 | } 78 | 79 | 80 | /** 81 | * Twitter emoji image files are lower case hex with ascii characters reduced to two characters 82 | */ 83 | public function testCorrectFormatHex(){ 84 | $replacer = array( $this, '_replace_hexref' ); 85 | // TM / Grinning Cat / GB flag / Enclosed 6 86 | $text = "\xE2\x84\xA2 \xF0\x9F\x98\xB8 \xF0\x9F\x87\xAC\xF0\x9F\x87\xA7 \x36\xE2\x83\xA3"; 87 | $want = '2122 1f638 1f1ec-1f1e7 36-20e3'; 88 | $this->assertEquals( $want, twitter_api_replace_emoji( $text, $replacer ) ); 89 | } 90 | 91 | 92 | /** 93 | * Test common false positives 94 | */ 95 | public function testFancyQuotesIntact(){ 96 | $test = array ( 97 | 0x2018, 98 | 0x2019, 99 | 0x201C, 100 | 0x201D, 101 | ); 102 | $validator = array( $this, '_replace_valid' ); 103 | foreach( $test as $code ){ 104 | $hex = sprintf('%04x', $code ); 105 | $leave = twitter_api_utf8_chr( $code ); 106 | $bytes = twitter_api_unicode_debug_string( $leave ); 107 | $valid = twitter_api_replace_emoji( $leave, $validator ); 108 | $this->assertEquals( 'invalid', $valid, 'U+'.$hex.' wrongly matched: '.$bytes ); 109 | } 110 | } 111 | 112 | 113 | /** 114 | * Test identification of enclosed characters 115 | */ 116 | public function testEnclosingNumericsReplace(){ 117 | $blanker = array( $this, '_replace_blank' ); 118 | $text = "o0\xE2\x83\xA31\xE2\x83\xA3k"; 119 | $text = twitter_api_replace_emoji( $text, $blanker ); 120 | $this->assertEquals( 'ok', $text ); 121 | } 122 | 123 | } 124 | -------------------------------------------------------------------------------- /api/wp-twitter-api/test/utils/HtmlTest.php: -------------------------------------------------------------------------------- 1 | @timwhitlock!'; 13 | $this->assertEquals( $want, $html ); 14 | } 15 | 16 | 17 | public function testUsersLinkWithEntities(){ 18 | $text = '@ignore @timwhitlock!'; 19 | $mock = array( 'user_mentions' => array ( 20 | array( 'screen_name' => 'timwhitlock', 'indices' => '_ignored_' ), 21 | ) ); 22 | $html = twitter_api_html_with_entities( $text, $mock ); 23 | $want = '@ignore @timwhitlock!'; 24 | $this->assertEquals( $want, $html ); 25 | } 26 | 27 | 28 | public function testHashtag(){ 29 | $text = 'Foo #Bar!'; 30 | $html = twitter_api_html( $text ); 31 | $want = 'Foo #Bar!'; 32 | $this->assertEquals( $want, $html ); 33 | } 34 | 35 | 36 | public function testHashtagWithEntities(){ 37 | $text = 'Foo #Bar! #ignore'; 38 | $mock = array( 'hashtags' => array ( 39 | array( 'text' => 'Bar!', 'indices' => '_ignored_' ), 40 | ) ); 41 | $html = twitter_api_html_with_entities( $text, $mock ); 42 | $want = 'Foo #Bar! #ignore'; 43 | $this->assertEquals( $want, $html ); 44 | } 45 | 46 | 47 | 48 | 49 | } 50 | 51 | 52 | -------------------------------------------------------------------------------- /api/wp-twitter-api/test/utils/UnicodeTest.php: -------------------------------------------------------------------------------- 1 | assertSame( array(97,98,99), $ints ); 11 | } 12 | 13 | public function testAsciiPassthroughReverse(){ 14 | $chr = twitter_api_utf8_chr( 97 ); 15 | $this->assertSame( 'a', $chr ); 16 | } 17 | 18 | 19 | public function testTwoByteCharacter(){ 20 | // U+00A9 copyright symbol 21 | $text = "\xC2\xA9"; 22 | $ints = twitter_api_utf8_array( $text ); 23 | $this->assertCount( 1, $ints ); 24 | $this->assertSame( 0x00A9, $ints[0] ); 25 | } 26 | 27 | 28 | public function testTwoByteCharacterReverse(){ 29 | $chr = twitter_api_utf8_chr( 0x00A9 ); 30 | $this->assertSame( "\xC2\xA9", $chr ); 31 | } 32 | 33 | 34 | public function testThreeByteCharacter(){ 35 | // U+2122 trademark symbol 36 | $text = "\xE2\x84\xA2"; 37 | $ints = twitter_api_utf8_array( $text ); 38 | $this->assertCount( 1, $ints ); 39 | $this->assertSame( 0x2122, $ints[0] ); 40 | } 41 | 42 | 43 | public function testThreeByteCharacterReverse(){ 44 | $chr = twitter_api_utf8_chr( 0x2122 ); 45 | $this->assertSame( "\xE2\x84\xA2", $chr ); 46 | } 47 | 48 | 49 | public function testFourByteCharacter(){ 50 | // mahjong tile red dragon 51 | $text = "\xF0\x9F\x80\x84"; 52 | $ints = twitter_api_utf8_array( $text ); 53 | $this->assertCount( 1, $ints ); 54 | $this->assertSame( 0x1F004, $ints[0] ); 55 | } 56 | 57 | 58 | public function testFourByteCharacterReverse(){ 59 | $chr = twitter_api_utf8_chr( 0x1F004 ); 60 | $this->assertSame( "\xF0\x9F\x80\x84", $chr ); 61 | } 62 | 63 | 64 | public function testVariableByteLengthMixed(){ 65 | $ints = twitter_api_utf8_array("A\xC2\xA9B\xE2\x84\xA2C\xF0\x9F\x80\x84D"); 66 | $this->assertSame( array( ord('A'), 0xA9, ord('B'), 0x2122, ord('C'), 0x1F004, ord('D') ), $ints ); 67 | } 68 | 69 | 70 | public function testHexCodesCorrectLengthAndCase(){ 71 | $text = twitter_api_unicode_implode( array( 0x97, 0xA9, 0x2122, 0x1F004 ) ); 72 | $this->assertSame( '0097-00a9-2122-1f004', $text ); 73 | } 74 | 75 | 76 | } 77 | -------------------------------------------------------------------------------- /api/wp-twitter-api/twitter-api.php: -------------------------------------------------------------------------------- 1 | 5 | */ 6 | 7 | 8 | 9 | 10 | /** 11 | * Call a Twitter API GET method. 12 | * 13 | * @param string endpoint/method, e.g. "users/show" 14 | * @param array Request arguments, e.g. array( 'screen_name' => 'timwhitlock' ) 15 | * @return array raw, deserialised data from Twitter 16 | * @throws TwitterApiException 17 | */ 18 | function twitter_api_get( $path, array $args = array() ){ 19 | $Client = twitter_api_client(); 20 | return $Client->call( $path, $args, 'GET' ); 21 | } 22 | 23 | 24 | 25 | 26 | /** 27 | * Call a Twitter API POST method. 28 | * 29 | * @param string endpoint/method, e.g. "users/show" 30 | * @param array Request arguments, e.g. array( 'screen_name' => 'timwhitlock' ) 31 | * @return array raw, deserialised data from Twitter 32 | * @throws TwitterApiException 33 | */ 34 | function twitter_api_post( $path, array $args = array() ){ 35 | $Client = twitter_api_client(); 36 | return $Client->call( $path, $args, 'POST' ); 37 | } 38 | 39 | 40 | 41 | 42 | /** 43 | * Enable caching of Twitter API responses using APC 44 | * @param int Cache lifetime in seconds 45 | * @return TwitterApiClient 46 | */ 47 | function twitter_api_enable_cache( $ttl ){ 48 | $Client = twitter_api_client(); 49 | return $Client->enable_cache( $ttl ); 50 | } 51 | 52 | 53 | 54 | 55 | /** 56 | * Disable caching of Twitter API responses 57 | * @return TwitterApiClient 58 | */ 59 | function twitter_api_disable_cache(){ 60 | $Client = twitter_api_client(); 61 | return $Client->disable_cache(); 62 | } 63 | 64 | 65 | 66 | 67 | /** 68 | * Include a component from the lib directory. 69 | * @param string $component e.g. "core", or "admin" 70 | * @return void fatal error on failure 71 | */ 72 | function twitter_api_include(){ 73 | foreach( func_get_args() as $component ){ 74 | require_once twitter_api_basedir().'/lib/twitter-api-'.$component.'.php'; 75 | } 76 | } 77 | 78 | 79 | 80 | /** 81 | * Get plugin local base directory in case __DIR__ isn't available (php<5.3) 82 | */ 83 | function twitter_api_basedir(){ 84 | static $dir; 85 | isset($dir) or $dir = dirname(__FILE__); 86 | return $dir; 87 | } 88 | 89 | 90 | 91 | /** 92 | * Test if system-configured client is authed and ready to use 93 | */ 94 | function twitter_api_configured(){ 95 | function_exists('_twitter_api_config') or twitter_api_include('core'); 96 | extract( _twitter_api_config() ); 97 | return $consumer_key && $consumer_secret && $access_key && $access_secret; 98 | } 99 | 100 | 101 | 102 | /** 103 | * Get fully configured and authenticated Twitter API client. 104 | * @return TwitterApiClient 105 | */ 106 | function twitter_api_client( $id = null ){ 107 | static $clients = array(); 108 | if( ! isset($clients[$id]) ){ 109 | twitter_api_include('core'); 110 | $clients[$id] = TwitterApiClient::create_instance( is_null($id) ); 111 | } 112 | return $clients[$id]; 113 | } 114 | 115 | 116 | 117 | 118 | /** 119 | * Contact Twitter for a request token, which will be exchanged for an access token later. 120 | * @return TwitterOAuthToken Request token 121 | */ 122 | function twitter_api_oauth_request_token( $consumer_key, $consumer_secret, $oauth_callback = 'oob' ){ 123 | $Client = twitter_api_client('oauth'); 124 | $Client->set_oauth( $consumer_key, $consumer_secret ); 125 | $params = $Client->oauth_exchange( TWITTER_OAUTH_REQUEST_TOKEN_URL, compact('oauth_callback') ); 126 | return new TwitterOAuthToken( $params['oauth_token'], $params['oauth_token_secret'] ); 127 | } 128 | 129 | 130 | 131 | 132 | /** 133 | * Exchange request token for an access token after authentication/authorization by user 134 | * @return TwitterOAuthToken Access token 135 | */ 136 | function twitter_api_oauth_access_token( $consumer_key, $consumer_secret, $request_key, $request_secret, $oauth_verifier ){ 137 | $Client = twitter_api_client('oauth'); 138 | $Client->set_oauth( $consumer_key, $consumer_secret, $request_key, $request_secret ); 139 | $params = $Client->oauth_exchange( TWITTER_OAUTH_ACCESS_TOKEN_URL, compact('oauth_verifier') ); 140 | return new TwitterOAuthToken( $params['oauth_token'], $params['oauth_token_secret'] ); 141 | } 142 | 143 | 144 | 145 | 146 | // Include application settings panel if in admin area 147 | if( is_admin() ){ 148 | twitter_api_include('core','admin'); 149 | } 150 | 151 | 152 | 153 | /** 154 | * Enable localisation 155 | * @internal 156 | */ 157 | function twitter_api_load_textdomain( $locale = null, $domain = 'twitter-api' ){ 158 | static $current_locale; 159 | if( is_null($locale) ){ 160 | $locale = get_locale(); 161 | } 162 | if( ! $locale || 0 === strpos($locale,'en') ){ 163 | $current_locale and unload_textdomain( $domain ); 164 | $locale = 'en_US'; 165 | } 166 | else if( $current_locale !== $locale ){ 167 | // purposefully not calling load_plugin_textdomain, due to symlinking 168 | // and not knowing what plugin this could be called from. 169 | $mofile = realpath( twitter_api_basedir().'/lang/'.$domain.'-'.$locale.'.mo' ); 170 | if( ! load_textdomain( $domain, $mofile ) ){ 171 | $mofile = WP_LANG_DIR . '/plugins/'.$domain.'-'.$locale.'.mo'; 172 | load_textdomain( $domain, $mofile ); 173 | } 174 | } 175 | // detect changes in plugin locale, binding once only 176 | if( ! isset($current_locale) ){ 177 | add_filter( 'plugin_locale', '_twitter_api_filter_plugin_locale', 10 , 2 ); 178 | } 179 | $current_locale = $locale; 180 | } 181 | 182 | 183 | 184 | /** 185 | * Support locale switching mid execution 186 | * @internal 187 | */ 188 | function _twitter_api_filter_plugin_locale( $locale, $domain ){ 189 | if( $domain === 'twitter-api' ){ 190 | twitter_api_load_textdomain( $locale ); 191 | } 192 | return $locale; 193 | } 194 | 195 | 196 | 197 | /** 198 | * legacy function call 199 | * @ignore 200 | */ 201 | function _twitter_api_init_l10n( $locale = null ){ 202 | return twitter_api_load_textdomain( $locale ); 203 | } 204 | 205 | -------------------------------------------------------------------------------- /assets/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/assets/screenshot-1.png -------------------------------------------------------------------------------- /assets/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/assets/screenshot-2.png -------------------------------------------------------------------------------- /assets/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/wp-tweets-widget/d4bfbadce198bfd10478ae0a17458777e054844f/assets/screenshot-3.png -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Plugin Name === 2 | Contributors: fossasia 3 | Tags: twitter, loklak, loklak api, tweets, oauth, api, rest, api, widget, sidebar 4 | Requires at least: 3.5.1 5 | Tested up to: 4.5.3 6 | Stable tag: 1.0.1 7 | License: GPLv2 or later 8 | License URI: http://www.gnu.org/licenses/gpl-2.0.html 9 | 10 | Tweets Widget compatible with the new Twitter API 1.1 11 | 12 | == Description == 13 | 14 | Use anonymous Loklak API OR Connect your Twitter account to this plugin and the widget will display your latest tweets on your site. 15 | 16 | This plugin is compatible with the new **Twitter API 1.1** and provides full **OAuth** authentication via the Wordpress admin area. 17 | 18 | 19 | == Installation == 20 | 21 | 1. Unzip all files to the `/wp-content/plugins/` directory 22 | 2. Log into Wordpress admin and activate the 'Tweets' plugin through the 'Plugins' menu 23 | 24 | Once the plugin is installed and enabled you can use Loklak API or bind your plugin to a Twitter account as follows: 25 | 26 | **Use Loklak API** 27 | 28 | 3. Tick the 'Loklak API' checkbox in API authentication settings. 29 | 4. Click on 'Save settings' 30 | 31 | OR 32 | 33 | **Use Twitter 1.1 API** 34 | 35 | 3. Register a Twitter application at https://dev.twitter.com/apps 36 | 4. Note the Consumer key and Consumer secret under OAuth settings 37 | 5. Log into Wordpress admin and go to Settings > Twitter API 38 | 6. Enter the consumer key and secret and click 'Save settings' 39 | 7. Click the 'Connect to Twitter' button and follow the prompts. 40 | 41 | Once your site is authenticated you can configure the widget as follows: 42 | 43 | 8. Log into Wordpress admin and go to Appearance > Widgets 44 | 9. Drag 'Tweets' from 'Available widgets' to where you want it. e.g. Main Sidebar 45 | 10. Optionally configure the widget title and number of tweets to display. 46 | 47 | == Frequently Asked Questions == 48 | 49 | = How can I style the widget? = 50 | 51 | See the 'Other Notes' tab for theming information. 52 | 53 | = Do I have to register my own Twitter app? = 54 | 55 | Yes, if you want to use Twitter's new API 1.1 . If you decide to use loklak.org's anonymous API then no need. More info in the 'Installation' tab. 56 | 57 | = How I do know what my Twitter OAuth settings are? = 58 | 59 | These details are available in the [Twitter dashboard](https://dev.twitter.com/apps) 60 | 61 | = What do I put in the third and fourth fields? = 62 | 63 | Once you've populated the first two fields, just click the *Connect* button and follow the prompts. 64 | 65 | = What is the "Minimum popularity" field? = 66 | 67 | Here you can specify a number of retweets and favourites that a tweet must have before it's displayed. 68 | This is useful for only showing your most interesting content. 69 | 70 | = How can I prevent SSL certificate errors? = 71 | 72 | If you're unable too fix your [PHP cURL](https://php.net/manual/en/book.curl.php) installation, you can disable SSL verification of twitter.com by adding this to your theme functions.php: 73 | `add_filter('https_ssl_verify', '__return_false');` 74 | But, please do so at your own risk. 75 | 76 | 77 | == Screenshots == 78 | 79 | 1. Tweets rendered via Loklak API 80 | 2. Admin screen shows Loklak and Twitter API connect button and OAuth settings 81 | 3. Widget screen shows feed options 82 | 83 | == Changelog == 84 | 85 | = 1.0.1 = 86 | * Fixes FAQs 87 | * Fixes minor URL bugs 88 | 89 | = 1.0 = 90 | * A whole new version! 91 | 92 | 93 | == Shortcodes == 94 | 95 | You can embed tweets in the body of your posts using a Wordpress the shortcode `[tweets]`. 96 | 97 | To specify a different user's timeline add the `user` attribute. 98 | To override the default number of 5 tweets add the `max` attribute, e.g: 99 | 100 | [tweets max=10 user=KhoslaSopan] 101 | 102 | 103 | 104 | == Theming == 105 | 106 | For starters you can alter some of the HTML using built-in WordPress features. 107 | See [Widget Filters](http://codex.wordpress.org/Plugin_API/Filter_Reference#Widgets) 108 | and [Widgetizing Themes](http://codex.wordpress.org/Widgetizing_Themes) 109 | 110 | **CSS** 111 | 112 | This plugin contains no default CSS. That's deliberate, so you can style it how you want. 113 | 114 | Tweets are rendered as a list which has various hooks you can use. Here's a rough template: 115 | 116 | .tweets { 117 | /* style tweet list wrapper */ 118 | } 119 | .tweets h3 { 120 | /* style whatever you did with the header */ 121 | } 122 | .tweets ul { 123 | /* style tweet list*/ 124 | } 125 | .tweets li { 126 | /* style tweet item */ 127 | } 128 | .tweets .tweet-text { 129 | /* style main tweet text */ 130 | } 131 | .tweets .tweet-text a { 132 | /* style links, hashtags and mentions */ 133 | } 134 | .tweets .tweet-text .emoji { 135 | /* style embedded emoji image in tweet */ 136 | } 137 | .tweets .tweet-details { 138 | /* style datetime and link under tweet */ 139 | } 140 | 141 | 142 | **Custom HTML** 143 | 144 | If you want to override the default markup of the tweets, the following filters are also available: 145 | 146 | * Add a header between the widget title and the tweets with `tweets_render_before` 147 | * Perform your own rendering of the timestamp with `tweets_render_date` 148 | * Render plain tweet text to your own HTML with `tweets_render_text` 149 | * Render each composite tweet with `tweets_render_tweet` 150 | * Override the unordered list for tweets with `tweets_render_list` 151 | * Add a footer before the end of the widget with `tweets_render_after` 152 | 153 | Here's an **example** of using some of the above in your theme's functions.php file: 154 | 155 | add_filter('tweets_render_date', function( $created_at ){ 156 | $date = DateTime::createFromFormat('D M d H:i:s O Y', $created_at ); 157 | return $date->format('d M h:ia'); 158 | }, 10 , 1 ); 159 | 160 | add_filter('tweets_render_text', function( $text ){ 161 | return $text; // <- will use default 162 | }, 10 , 1 ); 163 | 164 | add_filter('tweets_render_tweet', function( $html, $date, $link, array $tweet ){ 165 | $pic = $tweet['user']['profile_image_url_https']; 166 | return '

'.$html.'

'.$date.'

'; 167 | }, 10, 4 ); 168 | 169 | add_filter('tweets_render_after', function(){ 170 | return ''; 171 | }, 10, 0 ); 172 | 173 | == Caching == 174 | 175 | Responses from the Twitter API are cached for 5 minutes by default. This means your new Tweets will not appear on your site in real time. 176 | 177 | This is deliberate not only for performance, but also to avoid Twitter's strict rate limits of 15 requests every 15 minutes. 178 | 179 | You can override the 300 second cache by using the `tweets_cache_seconds` filter in your theme as follows: 180 | 181 | This would extend the cache to 1 minute, which is the lowest value you should consider using on a live site: 182 | 183 | add_filter('tweets_cache_seconds', function( $ttl ){ 184 | return 60; 185 | }, 10, 1 ); 186 | 187 | This would disable the cache (not recommended other than for debugging): 188 | 189 | add_filter('tweets_cache_seconds', function( $ttl ){ 190 | return 0; 191 | }, 10, 1 ); 192 | 193 | 194 | == Emoji == 195 | 196 | If you want to disable Emoji image replacement, you can filter the replacement callback function to something empty, e.g: 197 | 198 | add_filter('tweets_emoji_callback', function( $func ){ 199 | return ''; 200 | } ); 201 | 202 | - or to strip Emoji characters from all tweets, return your own replacement function that returns something else, e.g: 203 | 204 | add_filter('tweets_emoji_callback', function( $func ){ 205 | return function( array $match ){ 206 | return ''; 207 | }; 208 | } ); 209 | 210 | 211 | == Credits == 212 | 213 | Screenshot taken with permission from http://stayingalivefoundation.org/blog 214 | 215 | 216 | * Portuguese translations by [Leandro Dimitrio](http://wordpress.org/support/profile/leandrodimitrio) 217 | * German translations by [Florian Felsing](https://twitter.com/FlorianFelsing) and [David Noh](http://wordpress.org/support/profile/david_noh) 218 | * Russian translations by [Andrey Yakovenko](https://twitter.com/YakovenkoAndrey) 219 | * Dutch translations by [Daniel Wichers](https://twitter.com/dwichers) 220 | * Spanish translations by [Pedro Pica](http://minimizo.com) 221 | 222 | 223 | == Notes == 224 | 225 | Be aware of [Twitter's display requirements](https://dev.twitter.com/terms/display-requirements) when rendering tweets on your website. 226 | 227 | Example code here uses PHP [closures](http://www.php.net/manual/en/class.closure.php) which require PHP>=5.3.0 and won't work on older systems. 228 | -------------------------------------------------------------------------------- /tweets.php: -------------------------------------------------------------------------------- 1 | search('', null, null, $screen_name, $count); 73 | $batch = json_decode($batch, true); 74 | $batch = json_decode($batch['body'], true); 75 | $batch = $batch['statuses']; 76 | } 77 | else{ 78 | $batch = twitter_api_get('statuses/user_timeline', $params ); 79 | } 80 | $tweets = array(); 81 | while( $batch ){ 82 | $max_id = null; 83 | foreach( $batch as $tweet ){ 84 | if( isset($params['max_id']) && $tweet['id_str'] === $params['max_id'] ){ 85 | // previous max included in results, even though docs say it won't be 86 | continue; 87 | } 88 | $max_id = $tweet['id_str']; 89 | if( ! $include_rts && preg_match('/^(?:RT|MT)[ :\-]*@/i', $tweet['text']) ){ 90 | // skipping manual RT 91 | continue; 92 | } 93 | if( $pop > ( $tweet['retweet_count'] + $tweet[$favorite_count] ) ){ 94 | // skipping tweets not deemed popular enough 95 | continue; 96 | } 97 | $tweets[] = $tweet; 98 | } 99 | if( isset($tweets[$count]) ){ 100 | $tweets = array_slice( $tweets, 0, $count ); 101 | break; 102 | } 103 | if( ! $max_id ){ 104 | // infinite loop would occur if user had only tweeted once, ever. 105 | break; 106 | } 107 | $params['max_id'] = $max_id; 108 | } 109 | // Fix Wordpress's broken timezone implementation 110 | $os_timezone = date_default_timezone_get() or $os_timezone = 'UTC'; 111 | $wp_timezone = get_option('timezone_string') or $wp_timezone = $os_timezone; 112 | if( $os_timezone !== $wp_timezone ){ 113 | date_default_timezone_set( $wp_timezone ); 114 | } 115 | // Let theme disable or override emoji rendering 116 | $emoji_callback = apply_filters('tweets_emoji_callback', 'twitter_api_replace_emoji_callback' ); 117 | // render each tweet as a block of html for the widget list items 118 | $rendered = array(); 119 | foreach( $tweets as $tweet ){ 120 | extract( $tweet ); 121 | $handle = $user['screen_name'] or $handle = $screen_name; 122 | $link = esc_html( 'http://twitter.com/'.$handle.'/status/'.$id_str); 123 | // render nice datetime, unless theme overrides with filter 124 | $date = apply_filters( 'tweets_render_date', $created_at ); 125 | if( $date === $created_at ){ 126 | function_exists('twitter_api_relative_date') or twitter_api_include('utils'); 127 | $time = strtotime( $created_at ); 128 | $date = esc_html( twitter_api_relative_date($time) ); 129 | $date = ''; 130 | } 131 | // handle original retweet text as RT may be truncated 132 | if( $include_rts && isset($retweeted_status) && preg_match('/^RT\s+@[a-z0-9_]{1,15}[\s:]+/i', $text, $prefix ) ){ 133 | $text = $prefix[0].$retweeted_status['text']; 134 | unset($retweeted_status); 135 | } 136 | // render and linkify tweet, unless theme overrides with filter 137 | $html = apply_filters('tweets_render_text', $text ); 138 | if( $html === $text ){ 139 | if( ! function_exists('twitter_api_html') ){ 140 | twitter_api_include('utils'); 141 | } 142 | // htmlify tweet, using entities if we can 143 | if( isset($entities) && is_array($entities) ){ 144 | $html = twitter_api_html_with_entities( $text, $entities ); 145 | unset($entities); 146 | } 147 | else { 148 | $html = twitter_api_html( $text ); 149 | } 150 | // render emoji, unless filtered out 151 | if( $emoji_callback ){ 152 | $html = twitter_api_replace_emoji( $html, $emoji_callback ); 153 | } 154 | 155 | // strip characters that will choke mysql cache. 156 | if( !$loklak && $cachettl && ! TWITTER_CACHE_APC ){ 157 | $html = twitter_api_strip_quadruple_bytes( $html ); 158 | } 159 | 160 | } 161 | // piece together the whole tweet, allowing override 162 | $final = apply_filters('tweets_render_tweet', $html, $date, $link, $tweet ); 163 | if( $final === $html ){ 164 | $final = '

'.$html.'

'. 165 | '

'.$date.'

'; 166 | } 167 | $rendered[] = $final; 168 | } 169 | // cache rendered tweets 170 | if( !$loklak && $cachettl ){ 171 | _twitter_api_cache_set( $cachekey, $rendered, $cachettl ); 172 | } 173 | // put altered timezone back 174 | if( $os_timezone !== $wp_timezone ){ 175 | date_default_timezone_set( $os_timezone ); 176 | } 177 | return $rendered; 178 | } 179 | catch( Exception $Ex ){ 180 | return array( '

Error: '.esc_html($Ex->getMessage()).'

' ); 181 | } 182 | } 183 | 184 | 185 | 186 | /** 187 | * Render tweets as HTML anywhere 188 | * @param string $screen_name Twitter handle 189 | * @param int $num Number of tweets to show, defaults to 5 190 | * @param bool $rts Whether to show Retweets, defaults to true 191 | * @param bool $ats Whether to show 'at' replies, defaults to true 192 | * @return string HTML
element containing a list 193 | */ 194 | function tweets_render_html( $screen_name = '', $num = 5, $rts = true, $ats = true, $pop = 0 ){ 195 | $items = tweets_render( $screen_name, $num, $rts, $ats, $pop ); 196 | $list = apply_filters('tweets_render_list', $items, $screen_name ); 197 | if( is_array($list) ){ 198 | $list = ''; 199 | } 200 | return 201 | '
'. 202 | apply_filters( 'tweets_render_before', '' ). 203 | $list. 204 | apply_filters( 'tweets_render_after', '' ). 205 | '
'; 206 | } 207 | 208 | 209 | 210 | /** 211 | * tweets widget class 212 | */ 213 | class Tweets_Widget extends WP_Widget { 214 | 215 | /** @see WP_Widget::__construct */ 216 | public function __construct( $id_base = false, $name = '', $widget_options = array(), $control_options = array() ){ 217 | 218 | if(!class_exists('Loklak')) { 219 | require_once dirname(__FILE__).'/loklak_php_api/loklak.php'; 220 | $loklak = new Loklak(); 221 | } 222 | 223 | if( ! function_exists('twitter_api_load_textdomain') ){ 224 | require_once dirname(__FILE__).'/api/wp-twitter-api/twitter-api.php'; 225 | } 226 | twitter_api_load_textdomain(); 227 | $this->options = array( 228 | array ( 229 | 'name' => 'title', 230 | 'label' => __('Widget title'), 231 | 'type' => 'text' 232 | ), 233 | array ( 234 | 'name' => 'screen_name', 235 | 'label' => __('Twitter handle','twitter-api'), 236 | 'type' => 'text' 237 | ), 238 | array ( 239 | 'name' => 'num', 240 | 'label' => __('Number of tweets','twitter-api'), 241 | 'type' => 'number' 242 | ), 243 | array ( 244 | 'name' => 'pop', 245 | 'label' => __('Minimum popularity','twitter-api'), 246 | 'type' => 'number' 247 | ), 248 | array ( 249 | 'name' => 'rts', 250 | 'label' => __('Show Retweets','twitter-api'), 251 | 'type' => 'bool' 252 | ), 253 | array ( 254 | 'name' => 'ats', 255 | 'label' => __('Show Replies','twitter-api'), 256 | 'type' => 'bool' 257 | ), 258 | /*array ( 259 | 'name' => 'loklak', 260 | 'label' => __('Use anonymous API from loklak.org','twitter-api'), 261 | 'type' => 'bool' 262 | ),*/ 263 | ); 264 | $name or $name = __('Tweets','twitter-api'); 265 | parent::__construct( $id_base, $name, $widget_options, $control_options ); 266 | } 267 | 268 | /* ensure no missing keys in instance params */ 269 | private function check_instance( $instance ){ 270 | if( ! is_array($instance) ){ 271 | $instance = array(); 272 | } 273 | $instance += array ( 274 | 'title' => __('Tweets','twitter-api'), 275 | 'screen_name' => '', 276 | 'num' => 5, 277 | 'pop' => 0, 278 | 'rts' => '', 279 | 'ats' => '', 280 | //'loklak' => '', 281 | ); 282 | return $instance; 283 | } 284 | 285 | /** @see WP_Widget::form */ 286 | public function form( $instance ) { 287 | $instance = $this->check_instance( $instance ); 288 | foreach ( $this->options as $val ) { 289 | $elmid = $this->get_field_id( $val['name'] ); 290 | $fname = $this->get_field_name($val['name']); 291 | $value = isset($instance[ $val['name'] ]) ? $instance[ $val['name'] ] : ''; 292 | $label = ''; 293 | if( 'bool' === $val['type'] ){ 294 | $checked = $value ? ' checked="checked"' : ''; 295 | echo '

'.$label.'

'; 296 | } 297 | else { 298 | $attrs = ''; 299 | echo '

'.$label.'

'; 300 | } 301 | } 302 | } 303 | 304 | /** @see WP_Widget::widget */ 305 | public function widget( $args, $instance ) { 306 | extract( $this->check_instance($instance) ); 307 | // title is themed via Wordpress widget theming techniques 308 | $title = $args['before_title'] . apply_filters('widget_title', $title, $instance, $this->id_base ) . $args['after_title']; 309 | // by default tweets are rendered as an unordered list 310 | $items = tweets_render( $screen_name, $num, $rts, $ats, $pop); 311 | $list = apply_filters('tweets_render_list', $items, $screen_name ); 312 | if( is_array($list) ){ 313 | $list = ''; 314 | } 315 | // output widget applying filters to each element 316 | echo 317 | $args['before_widget'], 318 | $title, 319 | '
', 320 | apply_filters( 'tweets_render_before', '' ), 321 | $list, 322 | apply_filters( 'tweets_render_after', '' ), 323 | '
', 324 | $args['after_widget']; 325 | } 326 | 327 | } 328 | 329 | 330 | 331 | function tweets_register_widget(){ 332 | return register_widget('Tweets_Widget'); 333 | } 334 | 335 | add_action( 'widgets_init', 'tweets_register_widget' ); 336 | 337 | 338 | 339 | function tweets_shortcode( $atts ){ 340 | $screen_name = isset($atts['user']) ? trim($atts['user'],' @') : ''; 341 | $num = isset($atts['max']) ? (int) $atts['max'] : 5; 342 | return tweets_render_html( $screen_name, $num, true, false ); 343 | } 344 | 345 | add_shortcode( 'tweets', 'tweets_shortcode' ); 346 | 347 | 348 | if( is_admin() ){ 349 | 350 | require_once dirname(__FILE__).'/loklak_php_api/Lib/loklak-api-admin.php'; 351 | 352 | if( ! function_exists('twitter_api_get') ){ 353 | require_once dirname(__FILE__).'/api/wp-twitter-api/twitter-api.php'; 354 | } 355 | // extra visibility of API settings link 356 | function tweets_plugin_action_links( $links){ 357 | $links[] = ''.esc_attr__('Settings','twitter-api').''; 358 | return $links; 359 | } 360 | add_action('plugin_action_links_' . plugin_basename(__FILE__), 'tweets_plugin_action_links', 10, 2 ); 361 | } 362 | 363 | --------------------------------------------------------------------------------