\n"
11 | "Language-Team: \n"
12 | "Language: \n"
13 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Poedit-SourceCharset: UTF-8\n"
18 | "X-Generator: Loco - https://localise.biz/\n"
19 | "X-Loco-Source-Locale: en_GB\n"
20 | "X-Loco-Project-Id: 284\n"
21 | "X-Loco-Tagged: Twitter API\n"
22 | "X-Loco-Api-Version: 1.0.9"
23 |
24 | #: latest-tweets.php:44
25 | msgid "Plugin not fully configured"
26 | msgstr ""
27 |
28 | #: latest-tweets.php:207
29 | msgid "Twitter handle"
30 | msgstr ""
31 |
32 | #: latest-tweets.php:212
33 | msgid "Number of tweets"
34 | msgstr ""
35 |
36 | #: latest-tweets.php:217
37 | msgid "Minimum popularity"
38 | msgstr ""
39 |
40 | #: latest-tweets.php:222
41 | msgid "Show Retweets"
42 | msgstr ""
43 |
44 | #: latest-tweets.php:227
45 | msgid "Show Replies"
46 | msgstr ""
47 |
48 | #: latest-tweets.php:231 latest-tweets.php:241
49 | msgid "Latest Tweets"
50 | msgstr ""
51 |
52 | #: latest-tweets.php:322 api/lib/twitter-api-admin.php:90
53 | msgid "Connect to Twitter"
54 | msgstr ""
55 |
56 | #: api/lib/twitter-api-admin.php:16
57 | msgid "Twitter API Authentication Settings"
58 | msgstr ""
59 |
60 | #: api/lib/twitter-api-admin.php:44
61 | msgid "OAuth Consumer Key"
62 | msgstr ""
63 |
64 | #: api/lib/twitter-api-admin.php:48
65 | msgid "OAuth Consumer Secret"
66 | msgstr ""
67 |
68 | #: api/lib/twitter-api-admin.php:52
69 | msgid "OAuth Access Token"
70 | msgstr ""
71 |
72 | #: api/lib/twitter-api-admin.php:56
73 | msgid "OAuth Access Secret"
74 | msgstr ""
75 |
76 | #: api/lib/twitter-api-admin.php:60
77 | msgid "Save settings"
78 | msgstr ""
79 |
80 | #: api/lib/twitter-api-admin.php:63
81 | msgid "These details are available in"
82 | msgstr ""
83 |
84 | #: api/lib/twitter-api-admin.php:64
85 | msgid "your Twitter dashboard"
86 | msgstr ""
87 |
88 | #: api/lib/twitter-api-admin.php:102
89 | msgid "You don't have permission to manage Twitter API settings"
90 | msgstr ""
91 |
92 | #: api/lib/twitter-api-admin.php:121 api/lib/twitter-api-core.php:145
93 | msgid "Twitter application not fully configured"
94 | msgstr ""
95 |
96 | #: api/lib/twitter-api-admin.php:139
97 | msgid "Plugin not yet authenticated with Twitter"
98 | msgstr ""
99 |
100 | #: api/lib/twitter-api-admin.php:146
101 | msgid "Authenticated as @%s"
102 | msgstr ""
103 |
104 | #: api/lib/twitter-api-admin.php:189
105 | msgid "Twitter API"
106 | msgstr ""
107 |
108 | #: api/lib/twitter-api-core.php:230
109 | msgid "Twitter client not authenticated"
110 | msgstr ""
111 |
112 | #: api/lib/twitter-api-core.php:246
113 | msgid "Invalid Twitter parameter"
114 | msgstr ""
115 |
116 | #: api/lib/twitter-api-core.php:308 api/lib/twitter-api-core.php:320
117 | msgid "Twitter error #%d"
118 | msgstr ""
119 |
120 | #: api/lib/twitter-api-core.php:356
121 | msgid "Malformed response from Twitter"
122 | msgstr ""
123 |
124 | #: api/lib/twitter-api-core.php:375
125 | msgid "Wordpress HTTP request failure"
126 | msgstr ""
127 |
128 | #: api/lib/twitter-api-core.php:410
129 | msgid "Invalid OAuth token"
130 | msgstr ""
131 |
132 | #: api/lib/twitter-api-core.php:410
133 | msgid "Key required even if secret is empty"
134 | msgstr ""
135 |
136 | #: api/lib/twitter-api-core.php:533
137 | msgid "Status %u from Twitter"
138 | msgstr ""
139 |
140 | #: api/lib/twitter-api-utils.php:155
141 | msgid "Just now"
142 | msgstr ""
143 |
144 | #: api/lib/twitter-api-utils.php:160
145 | msgid "%u minute ago"
146 | msgid_plural "%u minutes ago"
147 | msgstr[0] ""
148 | msgstr[1] ""
149 |
150 | #: api/lib/twitter-api-utils.php:168
151 | msgid "About an hour ago"
152 | msgid_plural "About %u hours ago"
153 | msgstr[0] ""
154 | msgstr[1] ""
155 |
156 | #: api/lib/twitter-api-utils.php:173
157 | msgid "Yesterday at"
158 | msgstr ""
159 |
160 | #. Name of the plugin
161 | msgid "Latest Tweets Widget"
162 | msgstr ""
163 |
164 | #. Description of the plugin
165 | msgid ""
166 | "Provides a sidebar widget showing latest tweets - compatible with the new "
167 | "Twitter API 1.1"
168 | msgstr ""
169 |
170 | #. URI of the plugin
171 | msgid "http://wordpress.org/extend/plugins/latest-tweets-widget/"
172 | msgstr ""
173 |
174 | #. Author of the plugin
175 | msgid "Tim Whitlock"
176 | msgstr ""
177 |
178 | #. Author URI of the plugin
179 | msgid "http://timwhitlock.info/"
180 | msgstr ""
181 |
--------------------------------------------------------------------------------
/lang/twitter-api-de_DE.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: Twitter API plugin\n"
4 | "Report-Msgid-Bugs-To: Tim Whitlock\n"
5 | "POT-Creation-Date: 2015-03-15 17:42+0000\n"
6 | "PO-Revision-Date: Fri Jul 08 2016 18:16:45 GMT+0100 (BST)\n"
7 | "Last-Translator: Auto-generated\n"
8 | "Language-Team: German\n"
9 | "Language: de-DE\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=n != 1\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\n"
21 |
22 | #: latest-tweets.php:44
23 | msgid "Plugin not fully configured"
24 | msgstr "Die Twitter Anwendung ist nicht vollständig konfiguriert"
25 |
26 | #: latest-tweets.php:207
27 | msgid "Twitter handle"
28 | msgstr "Twitter Handle"
29 |
30 | #: latest-tweets.php:212
31 | msgid "Number of tweets"
32 | msgstr "Anzahl an Tweets"
33 |
34 | #: latest-tweets.php:217
35 | msgid "Minimum popularity"
36 | msgstr ""
37 |
38 | #: latest-tweets.php:222
39 | msgid "Show Retweets"
40 | msgstr "Retweets anzeigen"
41 |
42 | #: latest-tweets.php:227
43 | msgid "Show Replies"
44 | msgstr "Antworten anzeigen"
45 |
46 | #: latest-tweets.php:231 latest-tweets.php:241
47 | msgid "Latest Tweets"
48 | msgstr "Neueste Tweets"
49 |
50 | #: latest-tweets.php:322 api/lib/twitter-api-admin.php:90
51 | msgid "Connect to Twitter"
52 | msgstr ""
53 |
54 | #: api/lib/twitter-api-admin.php:16
55 | msgid "Twitter API Authentication Settings"
56 | msgstr "Einstellungen zur Twitter API Authentifizierung"
57 |
58 | #: api/lib/twitter-api-admin.php:44
59 | msgid "OAuth Consumer Key"
60 | msgstr ""
61 |
62 | #: api/lib/twitter-api-admin.php:48
63 | msgid "OAuth Consumer Secret"
64 | msgstr ""
65 |
66 | #: api/lib/twitter-api-admin.php:52
67 | msgid "OAuth Access Token"
68 | msgstr ""
69 |
70 | #: api/lib/twitter-api-admin.php:56
71 | msgid "OAuth Access Secret"
72 | msgstr ""
73 |
74 | #: api/lib/twitter-api-admin.php:60
75 | msgid "Save settings"
76 | msgstr "Einstellungen speichern"
77 |
78 | #: api/lib/twitter-api-admin.php:63
79 | msgid "These details are available in"
80 | msgstr "Diese Informationen findest du in"
81 |
82 | #: api/lib/twitter-api-admin.php:64
83 | msgid "your Twitter dashboard"
84 | msgstr "deinem Twitter Dashboard"
85 |
86 | #: api/lib/twitter-api-admin.php:102
87 | msgid "You don't have permission to manage Twitter API settings"
88 | msgstr "Dir fehlen die Rechte, um die Twitter API Einstellungen zu verwalten"
89 |
90 | #: api/lib/twitter-api-admin.php:121 api/lib/twitter-api-core.php:145
91 | msgid "Twitter application not fully configured"
92 | msgstr "Die Twitter Anwendung ist nicht vollständig konfiguriert"
93 |
94 | #: api/lib/twitter-api-admin.php:139
95 | msgid "Plugin not yet authenticated with Twitter"
96 | msgstr "Das Plugin wurde noch nicht bei Twitter authentifiziert"
97 |
98 | #: api/lib/twitter-api-admin.php:146
99 | msgid "Authenticated as @%s"
100 | msgstr "Authentifiziert als @%s"
101 |
102 | #: api/lib/twitter-api-admin.php:189
103 | msgid "Twitter API"
104 | msgstr "Twitter API"
105 |
106 | #: api/lib/twitter-api-core.php:230
107 | msgid "Twitter client not authenticated"
108 | msgstr "Twitter Client nicht authentifiziert"
109 |
110 | #: api/lib/twitter-api-core.php:246
111 | msgid "Invalid Twitter parameter"
112 | msgstr "Ungültiger Twitter Parameter"
113 |
114 | #: api/lib/twitter-api-core.php:308 api/lib/twitter-api-core.php:320
115 | msgid "Twitter error #%d"
116 | msgstr "Twitter Fehler #%d"
117 |
118 | #: api/lib/twitter-api-core.php:356
119 | msgid "Malformed response from Twitter"
120 | msgstr ""
121 |
122 | #: api/lib/twitter-api-core.php:375
123 | msgid "Wordpress HTTP request failure"
124 | msgstr "Wordpress HTTP Request Fehler"
125 |
126 | #: api/lib/twitter-api-core.php:410
127 | msgid "Invalid OAuth token"
128 | msgstr "Ungültiger OAuth token"
129 |
130 | #: api/lib/twitter-api-core.php:410
131 | msgid "Key required even if secret is empty"
132 | msgstr ""
133 |
134 | #: api/lib/twitter-api-core.php:533
135 | msgid "Status %u from Twitter"
136 | msgstr ""
137 |
138 | #: api/lib/twitter-api-utils.php:155
139 | msgid "Just now"
140 | msgstr "Gerade eben"
141 |
142 | #: api/lib/twitter-api-utils.php:160
143 | msgid "%u minute ago"
144 | msgid_plural "%u minutes ago"
145 | msgstr[0] "Vor 1 Minute"
146 | msgstr[1] "Vor %u Minuten"
147 |
148 | #: api/lib/twitter-api-utils.php:168
149 | msgid "About an hour ago"
150 | msgid_plural "About %u hours ago"
151 | msgstr[0] "Vor ungefähr 1 Stunde"
152 | msgstr[1] "Vor ungefähr %u Stunden"
153 |
154 | #: api/lib/twitter-api-utils.php:173
155 | msgid "Yesterday at"
156 | msgstr "Gestern um"
157 |
158 | #. Name of the plugin
159 | msgid "Latest Tweets Widget"
160 | msgstr ""
161 |
162 | #. Description of the plugin
163 | msgid ""
164 | "Provides a sidebar widget showing latest tweets - compatible with the new "
165 | "Twitter API 1.1"
166 | msgstr ""
167 |
168 | #. URI of the plugin
169 | msgid "http://wordpress.org/extend/plugins/latest-tweets-widget/"
170 | msgstr ""
171 |
172 | #. Author of the plugin
173 | msgid "Tim Whitlock"
174 | msgstr ""
175 |
176 | #. Author URI of the plugin
177 | msgid "http://timwhitlock.info/"
178 | msgstr ""
179 |
--------------------------------------------------------------------------------
/lang/twitter-api-nl_NL.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: Twitter API plugin\n"
4 | "Report-Msgid-Bugs-To: Tim Whitlock\n"
5 | "POT-Creation-Date: 2015-03-15 17:42+0000\n"
6 | "PO-Revision-Date: Mon Jul 11 2016 18:56:35 GMT+0100 (BST)\n"
7 | "Last-Translator: Auto-generated\n"
8 | "Language-Team: Dutch\n"
9 | "Language: nl-NL\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=n != 1\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\n"
21 |
22 | #: latest-tweets.php:44
23 | msgid "Plugin not fully configured"
24 | msgstr "Twitter apllicatie is niet volledig geconfigureerd"
25 |
26 | #: latest-tweets.php:207
27 | msgid "Twitter handle"
28 | msgstr "Twitternaam"
29 |
30 | #: latest-tweets.php:212
31 | msgid "Number of tweets"
32 | msgstr "Aantal tweets"
33 |
34 | #: latest-tweets.php:217
35 | msgid "Minimum popularity"
36 | msgstr ""
37 |
38 | #: latest-tweets.php:222
39 | msgid "Show Retweets"
40 | msgstr "Retweets laten zien"
41 |
42 | #: latest-tweets.php:227
43 | msgid "Show Replies"
44 | msgstr "Antwoorden laten zien"
45 |
46 | #: latest-tweets.php:231 latest-tweets.php:241
47 | msgid "Latest Tweets"
48 | msgstr "Laatste tweets"
49 |
50 | #: latest-tweets.php:322 api/lib/twitter-api-admin.php:90
51 | msgid "Connect to Twitter"
52 | msgstr ""
53 |
54 | #: api/lib/twitter-api-admin.php:16
55 | msgid "Twitter API Authentication Settings"
56 | msgstr "Twitter API authenticatie-instellingen"
57 |
58 | #: api/lib/twitter-api-admin.php:44
59 | msgid "OAuth Consumer Key"
60 | msgstr ""
61 |
62 | #: api/lib/twitter-api-admin.php:48
63 | msgid "OAuth Consumer Secret"
64 | msgstr ""
65 |
66 | #: api/lib/twitter-api-admin.php:52
67 | msgid "OAuth Access Token"
68 | msgstr ""
69 |
70 | #: api/lib/twitter-api-admin.php:56
71 | msgid "OAuth Access Secret"
72 | msgstr ""
73 |
74 | #: api/lib/twitter-api-admin.php:60
75 | msgid "Save settings"
76 | msgstr "Instellingen opslaan"
77 |
78 | #: api/lib/twitter-api-admin.php:63
79 | msgid "These details are available in"
80 | msgstr "Deze details zijn beschikbaar in"
81 |
82 | #: api/lib/twitter-api-admin.php:64
83 | msgid "your Twitter dashboard"
84 | msgstr "Twitter Dashboard"
85 |
86 | #: api/lib/twitter-api-admin.php:102
87 | msgid "You don't have permission to manage Twitter API settings"
88 | msgstr "Je hebt geen rechten om de Twitter API instellingen aan te passen"
89 |
90 | #: api/lib/twitter-api-admin.php:121 api/lib/twitter-api-core.php:145
91 | msgid "Twitter application not fully configured"
92 | msgstr "Twitter apllicatie is niet volledig geconfigureerd"
93 |
94 | #: api/lib/twitter-api-admin.php:139
95 | msgid "Plugin not yet authenticated with Twitter"
96 | msgstr "Plugin nog niet geauthoriseerd bij Twitter"
97 |
98 | #: api/lib/twitter-api-admin.php:146
99 | msgid "Authenticated as @%s"
100 | msgstr "Authorizeren als @%s"
101 |
102 | #: api/lib/twitter-api-admin.php:189
103 | msgid "Twitter API"
104 | msgstr "Twitter API"
105 |
106 | #: api/lib/twitter-api-core.php:230
107 | msgid "Twitter client not authenticated"
108 | msgstr "Twitter Client niet geauthoriseerd"
109 |
110 | #: api/lib/twitter-api-core.php:246
111 | msgid "Invalid Twitter parameter"
112 | msgstr "Ongeldige Twitter parameter"
113 |
114 | #: api/lib/twitter-api-core.php:308 api/lib/twitter-api-core.php:320
115 | msgid "Twitter error #%d"
116 | msgstr "Twitter fout #%d"
117 |
118 | #: api/lib/twitter-api-core.php:356
119 | msgid "Malformed response from Twitter"
120 | msgstr "Onjuiste response van Twitter"
121 |
122 | #: api/lib/twitter-api-core.php:375
123 | msgid "Wordpress HTTP request failure"
124 | msgstr "Wordpress HTTP Request fout"
125 |
126 | #: api/lib/twitter-api-core.php:410
127 | msgid "Invalid OAuth token"
128 | msgstr "Ongeldige OAuth token"
129 |
130 | #: api/lib/twitter-api-core.php:410
131 | msgid "Key required even if secret is empty"
132 | msgstr "Key (sleutel) vereist ookal is secret (geheim) leeg"
133 |
134 | #: api/lib/twitter-api-core.php:533
135 | msgid "Status %u from Twitter"
136 | msgstr ""
137 |
138 | #: api/lib/twitter-api-utils.php:155
139 | msgid "Just now"
140 | msgstr "Zojuist"
141 |
142 | #: api/lib/twitter-api-utils.php:160
143 | msgid "%u minute ago"
144 | msgid_plural "%u minutes ago"
145 | msgstr[0] "1 minuut geleden"
146 | msgstr[1] "%u minuten geleden"
147 |
148 | #: api/lib/twitter-api-utils.php:168
149 | msgid "About an hour ago"
150 | msgid_plural "About %u hours ago"
151 | msgstr[0] "Ongeveer 1 uur geleden"
152 | msgstr[1] "Ongeveer %u uur geleden"
153 |
154 | #: api/lib/twitter-api-utils.php:173
155 | msgid "Yesterday at"
156 | msgstr "Gisteren om"
157 |
158 | #. Name of the plugin
159 | msgid "Latest Tweets Widget"
160 | msgstr ""
161 |
162 | #. Description of the plugin
163 | msgid ""
164 | "Provides a sidebar widget showing latest tweets - compatible with the new "
165 | "Twitter API 1.1"
166 | msgstr ""
167 |
168 | #. URI of the plugin
169 | msgid "http://wordpress.org/extend/plugins/latest-tweets-widget/"
170 | msgstr ""
171 |
172 | #. Author of the plugin
173 | msgid "Tim Whitlock"
174 | msgstr ""
175 |
176 | #. Author URI of the plugin
177 | msgid "http://timwhitlock.info/"
178 | msgstr ""
179 |
--------------------------------------------------------------------------------
/lang/twitter-api-es_ES.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: Twitter API plugin\n"
4 | "Report-Msgid-Bugs-To: Tim Whitlock\n"
5 | "POT-Creation-Date: 2015-03-15 17:42+0000\n"
6 | "PO-Revision-Date: Fri Jul 08 2016 16:43:50 GMT+0100 (BST)\n"
7 | "Last-Translator: Auto-generated\n"
8 | "Language-Team: Spanish (Spain)\n"
9 | "Language: es-ES\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=n != 1\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\n"
21 |
22 | #: latest-tweets.php:44
23 | msgid "Plugin not fully configured"
24 | msgstr "Aplicación de Twitter no totalmente configurada"
25 |
26 | #: latest-tweets.php:207
27 | msgid "Twitter handle"
28 | msgstr "Nombre de Usuario de Twitter"
29 |
30 | #: latest-tweets.php:212
31 | msgid "Number of tweets"
32 | msgstr "Número de tweets"
33 |
34 | #: latest-tweets.php:217
35 | msgid "Minimum popularity"
36 | msgstr ""
37 |
38 | #: latest-tweets.php:222
39 | msgid "Show Retweets"
40 | msgstr "Mostrar RTs"
41 |
42 | #: latest-tweets.php:227
43 | msgid "Show Replies"
44 | msgstr "Mostrar Respuestas"
45 |
46 | #: latest-tweets.php:231 latest-tweets.php:241
47 | msgid "Latest Tweets"
48 | msgstr "Últimos Tweets"
49 |
50 | #: latest-tweets.php:322 api/lib/twitter-api-admin.php:90
51 | msgid "Connect to Twitter"
52 | msgstr ""
53 |
54 | #: api/lib/twitter-api-admin.php:16
55 | msgid "Twitter API Authentication Settings"
56 | msgstr "Configuración de Autenticación de la API de Twitter"
57 |
58 | #: api/lib/twitter-api-admin.php:44
59 | msgid "OAuth Consumer Key"
60 | msgstr ""
61 |
62 | #: api/lib/twitter-api-admin.php:48
63 | msgid "OAuth Consumer Secret"
64 | msgstr ""
65 |
66 | #: api/lib/twitter-api-admin.php:52
67 | msgid "OAuth Access Token"
68 | msgstr ""
69 |
70 | #: api/lib/twitter-api-admin.php:56
71 | msgid "OAuth Access Secret"
72 | msgstr ""
73 |
74 | #: api/lib/twitter-api-admin.php:60
75 | msgid "Save settings"
76 | msgstr "Salvar"
77 |
78 | #: api/lib/twitter-api-admin.php:63
79 | msgid "These details are available in"
80 | msgstr "Detalles disponibles en"
81 |
82 | #: api/lib/twitter-api-admin.php:64
83 | msgid "your Twitter dashboard"
84 | msgstr "su panel de control de Twitter"
85 |
86 | #: api/lib/twitter-api-admin.php:102
87 | msgid "You don't have permission to manage Twitter API settings"
88 | msgstr ""
89 | "Usted no tiene permisos para manejar los parametros de la API de Twitter"
90 |
91 | #: api/lib/twitter-api-admin.php:121 api/lib/twitter-api-core.php:145
92 | msgid "Twitter application not fully configured"
93 | msgstr "Aplicación de Twitter no totalmente configurada"
94 |
95 | #: api/lib/twitter-api-admin.php:139
96 | msgid "Plugin not yet authenticated with Twitter"
97 | msgstr "El plugin no se autenticado aún en Twitter"
98 |
99 | #: api/lib/twitter-api-admin.php:146
100 | msgid "Authenticated as @%s"
101 | msgstr "Autenticado como @%s"
102 |
103 | #: api/lib/twitter-api-admin.php:189
104 | msgid "Twitter API"
105 | msgstr "API de Twitter"
106 |
107 | #: api/lib/twitter-api-core.php:230
108 | msgid "Twitter client not authenticated"
109 | msgstr "Cliente de Twitter no autenticado"
110 |
111 | #: api/lib/twitter-api-core.php:246
112 | msgid "Invalid Twitter parameter"
113 | msgstr "Parámetro de Twitter inválido"
114 |
115 | #: api/lib/twitter-api-core.php:308 api/lib/twitter-api-core.php:320
116 | msgid "Twitter error #%d"
117 | msgstr "Error de Twitter #%d"
118 |
119 | #: api/lib/twitter-api-core.php:356
120 | msgid "Malformed response from Twitter"
121 | msgstr "Respuesta de Twitter: malformed"
122 |
123 | #: api/lib/twitter-api-core.php:375
124 | msgid "Wordpress HTTP request failure"
125 | msgstr "Error en la solicitud de HTTP de Wordpress"
126 |
127 | #: api/lib/twitter-api-core.php:410
128 | msgid "Invalid OAuth token"
129 | msgstr "Token OAuth inválido"
130 |
131 | #: api/lib/twitter-api-core.php:410
132 | msgid "Key required even if secret is empty"
133 | msgstr "Clave exigida incluso si secreto está vacío"
134 |
135 | #: api/lib/twitter-api-core.php:533
136 | msgid "Status %u from Twitter"
137 | msgstr ""
138 |
139 | #: api/lib/twitter-api-utils.php:155
140 | msgid "Just now"
141 | msgstr "Ahora mismo"
142 |
143 | #: api/lib/twitter-api-utils.php:160
144 | msgid "%u minute ago"
145 | msgid_plural "%u minutes ago"
146 | msgstr[0] "Hace %u minuto"
147 | msgstr[1] "Hace %u minutos"
148 |
149 | #: api/lib/twitter-api-utils.php:168
150 | msgid "About an hour ago"
151 | msgid_plural "About %u hours ago"
152 | msgstr[0] "Hace cerca de una hora"
153 | msgstr[1] "Hace cerca de %u horas"
154 |
155 | #: api/lib/twitter-api-utils.php:173
156 | msgid "Yesterday at"
157 | msgstr "Ayer a las"
158 |
159 | #. Name of the plugin
160 | msgid "Latest Tweets Widget"
161 | msgstr ""
162 |
163 | #. Description of the plugin
164 | msgid ""
165 | "Provides a sidebar widget showing latest tweets - compatible with the new "
166 | "Twitter API 1.1"
167 | msgstr ""
168 |
169 | #. URI of the plugin
170 | msgid "http://wordpress.org/extend/plugins/latest-tweets-widget/"
171 | msgstr ""
172 |
173 | #. Author of the plugin
174 | msgid "Tim Whitlock"
175 | msgstr ""
176 |
177 | #. Author URI of the plugin
178 | msgid "http://timwhitlock.info/"
179 | msgstr ""
180 |
--------------------------------------------------------------------------------
/lang/twitter-api-pt_BR.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: Twitter API plugin\n"
4 | "Report-Msgid-Bugs-To: Tim Whitlock\n"
5 | "POT-Creation-Date: 2015-03-15 17:42+0000\n"
6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n"
7 | "Last-Translator: Auto-generated\n"
8 | "Language-Team: Portuguese (Brazil)\n"
9 | "Language: pt-BR\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\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\n"
21 |
22 | #: latest-tweets.php:44
23 | msgid "Plugin not fully configured"
24 | msgstr "Aplicação do Twitter não totalmente configurada"
25 |
26 | #: latest-tweets.php:207
27 | msgid "Twitter handle"
28 | msgstr "Login no Twitter"
29 |
30 | #: latest-tweets.php:212
31 | msgid "Number of tweets"
32 | msgstr "Número de tweets"
33 |
34 | #: latest-tweets.php:217
35 | msgid "Minimum popularity"
36 | msgstr ""
37 |
38 | #: latest-tweets.php:222
39 | msgid "Show Retweets"
40 | msgstr "Mostrar RTs"
41 |
42 | #: latest-tweets.php:227
43 | msgid "Show Replies"
44 | msgstr "Mostrar Replies"
45 |
46 | #: latest-tweets.php:231 latest-tweets.php:241
47 | msgid "Latest Tweets"
48 | msgstr "Últimos Tweets"
49 |
50 | #: latest-tweets.php:322 api/lib/twitter-api-admin.php:90
51 | msgid "Connect to Twitter"
52 | msgstr ""
53 |
54 | #: api/lib/twitter-api-admin.php:16
55 | msgid "Twitter API Authentication Settings"
56 | msgstr "Configurações de Autenticação da API do Twitter"
57 |
58 | #: api/lib/twitter-api-admin.php:44
59 | msgid "OAuth Consumer Key"
60 | msgstr ""
61 |
62 | #: api/lib/twitter-api-admin.php:48
63 | msgid "OAuth Consumer Secret"
64 | msgstr ""
65 |
66 | #: api/lib/twitter-api-admin.php:52
67 | msgid "OAuth Access Token"
68 | msgstr ""
69 |
70 | #: api/lib/twitter-api-admin.php:56
71 | msgid "OAuth Access Secret"
72 | msgstr ""
73 |
74 | #: api/lib/twitter-api-admin.php:60
75 | msgid "Save settings"
76 | msgstr "Salvar"
77 |
78 | #: api/lib/twitter-api-admin.php:63
79 | msgid "These details are available in"
80 | msgstr "Detalhes disponíveis em"
81 |
82 | #: api/lib/twitter-api-admin.php:64
83 | msgid "your Twitter dashboard"
84 | msgstr "seu painel do Twitter"
85 |
86 | #: api/lib/twitter-api-admin.php:102
87 | msgid "You don't have permission to manage Twitter API settings"
88 | msgstr "Você não tem permissão para gerenciar a API do Twitter"
89 |
90 | #: api/lib/twitter-api-admin.php:121 api/lib/twitter-api-core.php:145
91 | msgid "Twitter application not fully configured"
92 | msgstr "Aplicação do Twitter não totalmente configurada"
93 |
94 | #: api/lib/twitter-api-admin.php:139
95 | msgid "Plugin not yet authenticated with Twitter"
96 | msgstr "Plugin ainda não autenticado com o Twitter"
97 |
98 | #: api/lib/twitter-api-admin.php:146
99 | msgid "Authenticated as @%s"
100 | msgstr "Autenticado como @%s"
101 |
102 | #: api/lib/twitter-api-admin.php:189
103 | msgid "Twitter API"
104 | msgstr "API do Twitter"
105 |
106 | #: api/lib/twitter-api-core.php:230
107 | msgid "Twitter client not authenticated"
108 | msgstr "Cliente do Twitter não autenticado"
109 |
110 | #: api/lib/twitter-api-core.php:246
111 | msgid "Invalid Twitter parameter"
112 | msgstr "Parâmetro do Twitter inválido"
113 |
114 | #: api/lib/twitter-api-core.php:308 api/lib/twitter-api-core.php:320
115 | msgid "Twitter error #%d"
116 | msgstr "Erro no Twitter #%d"
117 |
118 | #: api/lib/twitter-api-core.php:356
119 | msgid "Malformed response from Twitter"
120 | msgstr "Resposta \"malformed\" do Twitter"
121 |
122 | #: api/lib/twitter-api-core.php:375
123 | msgid "Wordpress HTTP request failure"
124 | msgstr "Falha no HTTP request do Wordpress"
125 |
126 | #: api/lib/twitter-api-core.php:410
127 | msgid "Invalid OAuth token"
128 | msgstr "Token OAuth inválido"
129 |
130 | #: api/lib/twitter-api-core.php:410
131 | msgid "Key required even if secret is empty"
132 | msgstr "Chave exigida mesmo se o secret estiver vazio"
133 |
134 | #: api/lib/twitter-api-core.php:533
135 | msgid "Status %u from Twitter"
136 | msgstr ""
137 |
138 | #: api/lib/twitter-api-utils.php:155
139 | msgid "Just now"
140 | msgstr "Agora mesmo"
141 |
142 | #: api/lib/twitter-api-utils.php:160
143 | msgid "%u minute ago"
144 | msgid_plural "%u minutes ago"
145 | msgstr[0] "1 minuto atrás"
146 | msgstr[1] "%u minutos atrás"
147 |
148 | #: api/lib/twitter-api-utils.php:168
149 | msgid "About an hour ago"
150 | msgid_plural "About %u hours ago"
151 | msgstr[0] "Cerca de uma hora atrás"
152 | msgstr[1] "Cerca de %u horas atrás"
153 |
154 | #: api/lib/twitter-api-utils.php:173
155 | msgid "Yesterday at"
156 | msgstr "Ontem às"
157 |
158 | #. Name of the plugin
159 | #, fuzzy
160 | msgid "Latest Tweets Widget"
161 | msgstr "Últimos Tweets"
162 |
163 | #. Description of the plugin
164 | msgid ""
165 | "Provides a sidebar widget showing latest tweets - compatible with the new "
166 | "Twitter API 1.1"
167 | msgstr ""
168 |
169 | #. URI of the plugin
170 | msgid "http://wordpress.org/extend/plugins/latest-tweets-widget/"
171 | msgstr ""
172 |
173 | #. Author of the plugin
174 | msgid "Tim Whitlock"
175 | msgstr ""
176 |
177 | #. Author URI of the plugin
178 | msgid "http://timwhitlock.info/"
179 | msgstr ""
180 |
181 | #~ msgid "Widget title"
182 | #~ msgstr "Título do Widget"
183 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NO LONGER MAINTAINED
2 |
3 | If you want it, fork it. Just don't ask me to fix it.
4 |
5 |
6 | ---
7 |
8 | # Twitter API WordPress Library
9 |
10 | This library exposes a fully authenticated Twitter API client for developing WordPress plugins.
11 |
12 | ## Features
13 |
14 | * Compatible with the new Twitter API 1.1
15 | * OAuth flow connects your Twitter account via WordPress admin
16 | * Access to a common Twitter API client that any plugin can use
17 | * Caching of API responses
18 | * Light-weight: uses WordPress utilities where possible
19 |
20 |
21 | ## Example plugin
22 |
23 | See the [Latest Tweets Widget](http://wordpress.org/extend/plugins/latest-tweets-widget/) for an example plugin using this library.
24 |
25 |
26 | ## Installation
27 |
28 | Clone this repo to where you will develop your plugin. e.g.
29 |
30 | git submodule add https://github.com/timwhitlock/wp-twitter-api.git \
31 | wp-content/plugins/my-twitter-plugin/api
32 |
33 | To expose the library and its admin functions, bootstrap the library from your own plugin as follows:
34 | ```php
35 | /*
36 | * Plugin Name: My Twitter Plugin
37 | */
38 | if( ! function_exists('twitter_api_get') ){
39 | require dirname(__FILE__).'/api/twitter-api.php';
40 | }
41 | ```
42 |
43 | ## Authentication
44 |
45 | Once the plugin is installed and enabled, you can bind it to a Twitter account as follows:
46 |
47 | * Register a Twitter application at https://dev.twitter.com/apps
48 | * Note the Consumer key and Consumer secret under *OAuth settings*
49 | * Log into WordPress admin and go to *Settings > Twitter API*
50 | * Enter the consumer key and secret and click 'Save settings'
51 | * Click the 'Connect to Twitter' button and follow the prompts.
52 |
53 | Any WordPress plugin can now make fully authenticated calls to the Twitter API. The functions are documented below.
54 |
55 |
56 | ## Twitter Client
57 |
58 | To check whether the user has authenticated the plugin and configured the oAuth tokens you can use the following function.
59 |
60 | #### twitter_api_configured
61 | `bool twitter_api_configured ()`
62 | Returns True if the user has authenticated the plugin and configured oAuth tokens
63 |
64 |
65 | The following functions are available from anywhere as soon as the plugin is authenticated.
66 | They all operate as the Twitter account you connected in your admin area.
67 |
68 | #### twitter_api_get
69 | `array twitter_api_get ( string $path [, array $args ] )`
70 | GETs data from the Twitter API, returning the raw unserialized data.
71 |
72 | `$path` is any Twitter API method, e.g. `'users/show'` or `'statuses/user_timeline'`
73 | `$args` is an associative array of parameters, e.g. `array('screen_name'=>'timwhitlock')`
74 |
75 | Note that neither the path nor the arguments are validated.
76 |
77 | #### twitter_api_post
78 | `array twitter_api_post ( string $path [, array $args ] )`
79 | As above, but POSTs data to the Twitter API.
80 |
81 | #### twitter_api_enable_cache
82 | `TwitterApiClient twitter_api_enable_cache( int $ttl )`
83 | Enable caching of Twitter response data for `$ttl` seconds.
84 |
85 | #### twitter_api_disable_cache
86 | `TwitterApiClient twitter_api_disable_cache( )`
87 | Disables caching of responses. Caching is disabled by default.
88 |
89 |
90 | ## Custom OAuth flows
91 |
92 | The above functions work with a single authenticated Twitter account.
93 | 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.
94 |
95 | 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.
96 |
97 | #### twitter_api_oauth_request_token
98 | `TwitterOAuthToken twitter_api_oauth_request_token ( string $consumer_key, string $consumer_secret, string $oauth_callback )`
99 | Fetches an OAuth request token from Twitter: e.g. `{ key: 'your request key', secret: 'your request secret' }`
100 |
101 | #### twitter_api_oauth_access_token
102 | `TwitterOAuthToken twitter_api_oauth_access_token ( $consumer_key, $consumer_secret, $request_key, $request_secret, $oauth_verifier )`
103 | Exhanges a verified request token for an access token: e.g. `{ key: 'your access key', secret: 'your access secret' }`
104 |
105 | ### TwitterApiClient
106 |
107 | Once you have your own authentication credentials you can work directly with the API client.
108 | This example shows the main methods you might use:
109 |
110 | ```php
111 | try {
112 | if ( twitter_api_configured() ) {
113 | $Client = twitter_api_client('some client');
114 | $Client->set_oauth( 'my consumer key', 'my consumer secret', 'their access key', 'their access secret' );
115 | $user = $Client->call( 'users/show', array( 'screen_name' => 'timwhitlock' ), 'GET' );
116 | var_dump( $user );
117 | }
118 | }
119 | catch( TwitterApiRateLimitException $Ex ){
120 | $info = $Client->last_rate_limit();
121 | wp_die( 'Rate limit exceeded. Try again at '.date( 'H:i:s', $info['reset'] ) );
122 | }
123 | catch( TwitterApiException $Ex ){
124 | wp_die( 'Twitter responded with status '.$Ex->getStatus().', '.$Ex->getMessage() );
125 | }
126 | catch( Exception $Ex ){
127 | wp_die( 'Fatal error, '. $Ex->getMessage() );
128 | }
129 | ```
130 |
--------------------------------------------------------------------------------
/lang/twitter-api-ru_RU.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: Twitter API plugin\n"
4 | "Report-Msgid-Bugs-To: Tim Whitlock\n"
5 | "POT-Creation-Date: 2015-03-15 17:42+0000\n"
6 | "PO-Revision-Date: 2015-03-15 17:42+0000\n"
7 | "Last-Translator: Auto-generated\n"
8 | "Language-Team: Wordpress\n"
9 | "Language: Russian\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
14 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\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\n"
22 |
23 | #: latest-tweets.php:44
24 | msgid "Plugin not fully configured"
25 | msgstr "Приложение в Твиттере не полностью настроено"
26 |
27 | #: latest-tweets.php:207
28 | msgid "Twitter handle"
29 | msgstr "Логин в Твиттере"
30 |
31 | #: latest-tweets.php:212
32 | msgid "Number of tweets"
33 | msgstr "Количество твитов"
34 |
35 | #: latest-tweets.php:217
36 | msgid "Minimum popularity"
37 | msgstr ""
38 |
39 | #: latest-tweets.php:222
40 | msgid "Show Retweets"
41 | msgstr "Показывать Ретвиты"
42 |
43 | #: latest-tweets.php:227
44 | msgid "Show Replies"
45 | msgstr "Показывать Ответы"
46 |
47 | #: latest-tweets.php:231 latest-tweets.php:241
48 | msgid "Latest Tweets"
49 | msgstr "Latest Tweets (Поледние твиты)"
50 |
51 | #: latest-tweets.php:322 api/lib/twitter-api-admin.php:90
52 | msgid "Connect to Twitter"
53 | msgstr ""
54 |
55 | #: api/lib/twitter-api-admin.php:16
56 | msgid "Twitter API Authentication Settings"
57 | msgstr "Настройка подключения к API Твиттера"
58 |
59 | #: api/lib/twitter-api-admin.php:44
60 | msgid "OAuth Consumer Key"
61 | msgstr ""
62 |
63 | #: api/lib/twitter-api-admin.php:48
64 | msgid "OAuth Consumer Secret"
65 | msgstr ""
66 |
67 | #: api/lib/twitter-api-admin.php:52
68 | msgid "OAuth Access Token"
69 | msgstr ""
70 |
71 | #: api/lib/twitter-api-admin.php:56
72 | msgid "OAuth Access Secret"
73 | msgstr ""
74 |
75 | #: api/lib/twitter-api-admin.php:60
76 | msgid "Save settings"
77 | msgstr "Сохранить настройки"
78 |
79 | #: api/lib/twitter-api-admin.php:63
80 | msgid "These details are available in"
81 | msgstr "Эти данные доступны в"
82 |
83 | #: api/lib/twitter-api-admin.php:64
84 | msgid "your Twitter dashboard"
85 | msgstr "Вашей панеле в Твиттере"
86 |
87 | #: api/lib/twitter-api-admin.php:102
88 | msgid "You don't have permission to manage Twitter API settings"
89 | msgstr ""
90 | "Вы не имеете разрешения управлять настроечными параметрами программного API "
91 | "Твиттера"
92 |
93 | #: api/lib/twitter-api-admin.php:121 api/lib/twitter-api-core.php:145
94 | msgid "Twitter application not fully configured"
95 | msgstr "Приложение в Твиттере не полностью настроено"
96 |
97 | #: api/lib/twitter-api-admin.php:139
98 | msgid "Plugin not yet authenticated with Twitter"
99 | msgstr "Плагин еще не получил доступ к Твиттеру"
100 |
101 | #: api/lib/twitter-api-admin.php:146
102 | msgid "Authenticated as @%s"
103 | msgstr "Авторизован как @%s"
104 |
105 | #: api/lib/twitter-api-admin.php:189
106 | msgid "Twitter API"
107 | msgstr "API Твиттера"
108 |
109 | #: api/lib/twitter-api-core.php:230
110 | msgid "Twitter client not authenticated"
111 | msgstr "Пользователь Твиттера не аутентифицирован"
112 |
113 | #: api/lib/twitter-api-core.php:246
114 | msgid "Invalid Twitter parameter"
115 | msgstr "Не верный параметр Твиттера"
116 |
117 | #: api/lib/twitter-api-core.php:308 api/lib/twitter-api-core.php:320
118 | msgid "Twitter error #%d"
119 | msgstr "Ошибка Твиттера #%d"
120 |
121 | #: api/lib/twitter-api-core.php:356
122 | msgid "Malformed response from Twitter"
123 | msgstr "Ошибочный ответ от Твиттера"
124 |
125 | #: api/lib/twitter-api-core.php:375
126 | msgid "Wordpress HTTP request failure"
127 | msgstr "Wordpress неудачный HTTP-запрос "
128 |
129 | #: api/lib/twitter-api-core.php:410
130 | msgid "Invalid OAuth token"
131 | msgstr "Неправильный OAuth token"
132 |
133 | #: api/lib/twitter-api-core.php:410
134 | msgid "Key required even if secret is empty"
135 | msgstr "Требуется Ключ, даже если секретный ключ пуст"
136 |
137 | #: api/lib/twitter-api-core.php:533
138 | msgid "Status %u from Twitter"
139 | msgstr ""
140 |
141 | #: api/lib/twitter-api-utils.php:155
142 | msgid "Just now"
143 | msgstr "Только что"
144 |
145 | #: api/lib/twitter-api-utils.php:160
146 | msgid "%u minute ago"
147 | msgid_plural "%u minutes ago"
148 | msgstr[0] "1 минуту назад"
149 | msgstr[1] "%u минуты назад"
150 | msgstr[2] ""
151 |
152 | #: api/lib/twitter-api-utils.php:168
153 | msgid "About an hour ago"
154 | msgid_plural "About %u hours ago"
155 | msgstr[0] "Около часа назад"
156 | msgstr[1] "Около %u часов назад"
157 | msgstr[2] ""
158 |
159 | #: api/lib/twitter-api-utils.php:173
160 | msgid "Yesterday at"
161 | msgstr "Вчера в "
162 |
163 | #. Name of the plugin
164 | #, fuzzy
165 | msgid "Latest Tweets Widget"
166 | msgstr "Latest Tweets (Поледние твиты)"
167 |
168 | #. Description of the plugin
169 | msgid ""
170 | "Provides a sidebar widget showing latest tweets - compatible with the new "
171 | "Twitter API 1.1"
172 | msgstr ""
173 |
174 | #. URI of the plugin
175 | msgid "http://wordpress.org/extend/plugins/latest-tweets-widget/"
176 | msgstr ""
177 |
178 | #. Author of the plugin
179 | msgid "Tim Whitlock"
180 | msgstr ""
181 |
182 | #. Author URI of the plugin
183 | msgid "http://timwhitlock.info/"
184 | msgstr ""
185 |
186 | #~ msgid "Widget title"
187 | #~ msgstr "Заголовок виджета"
188 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/lib/twitter-api-admin.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 |
9 |
10 | /**
11 | * Open admin page with header and message
12 | */
13 | function twitter_api_admin_render_header( $subheader, $css = '' ){
14 | ?>
15 |
16 |
17 |
18 |
19 |
20 |
30 |
31 |
42 |
67 | Error: ',esc_html( $Ex->getMessage() ),'
';
84 | return;
85 | }
86 | // Remember request token and render link to authorize
87 | // we're storing permanently - not using session here, because WP provides no session API.
88 | _twitter_api_config( array( 'request_secret' => $Token->secret ) );
89 | $href = $Token->get_authorization_url();
90 | echo ''.esc_html__('Connect to Twitter','twitter-api').'
';
91 | echo '
';
92 | }
93 |
94 |
95 |
96 |
97 | /**
98 | * Render full admin page
99 | */
100 | function twitter_api_admin_render_page(){
101 | if ( ! current_user_can('manage_options') ){
102 | twitter_api_admin_render_header( __("You don't have permission to manage Twitter API settings",'twitter-api'),'error');
103 | twitter_api_admin_render_footer();
104 | return;
105 | }
106 | try {
107 |
108 | // update applicaion settings if posted
109 | if( isset($_POST['saf_twitter']) && is_array( $update = $_POST['saf_twitter'] ) ){
110 | $conf = _twitter_api_config( $update );
111 | }
112 |
113 | // else get current settings
114 | else {
115 | $conf = _twitter_api_config();
116 | }
117 |
118 | // check whether we have any OAuth params
119 | extract( $conf );
120 | if( ! $consumer_key || ! $consumer_secret ){
121 | throw new Exception( __('Twitter application not fully configured','twitter-api') );
122 | }
123 |
124 | // else exchange access token if callback // request secret saved as option
125 | if( isset($_GET['oauth_token']) && isset($_GET['oauth_verifier']) ){
126 | $Token = twitter_api_oauth_access_token( $consumer_key, $consumer_secret, $_GET['oauth_token'], $request_secret, $_GET['oauth_verifier'] );
127 | // have access token, update config and destroy request secret
128 | $conf = _twitter_api_config( array(
129 | 'request_secret' => '',
130 | 'access_key' => $Token->key,
131 | 'access_secret' => $Token->secret,
132 | ) );
133 | extract( $conf );
134 | // fall through to verification of credentials
135 | }
136 |
137 | // else administrator needs to connect / authenticate with Twitter.
138 | if( ! $access_key || ! $access_secret ){
139 | twitter_api_admin_render_header( __('Plugin not yet authenticated with Twitter','twitter-api'), 'error' );
140 | twitter_api_admin_render_login( $consumer_key, $consumer_secret );
141 | }
142 |
143 | // else we have auth - verify that tokens are all still valid
144 | else {
145 | $me = twitter_api_get('account/verify_credentials');
146 | twitter_api_admin_render_header( sprintf( __('Authenticated as @%s','twitter-api'), $me['screen_name'] ), 'updated' );
147 | }
148 |
149 | }
150 | catch( TwitterApiException $Ex ){
151 | twitter_api_admin_render_header( $Ex->getStatus().': Error '.$Ex->getCode().', '.$Ex->getMessage(), 'error' );
152 | if( 401 === $Ex->getStatus() ){
153 | twitter_api_admin_render_login( $consumer_key, $consumer_secret );
154 | }
155 | }
156 | catch( Exception $Ex ){
157 | twitter_api_admin_render_header( $Ex->getMessage(), 'error' );
158 | }
159 |
160 | // end admin page with options form and close wrapper
161 | twitter_api_admin_render_form();
162 | twitter_api_admin_render_footer();
163 | }
164 |
165 |
166 |
167 | /**
168 | * Calculate base URL for admin OAuth callbacks
169 | * @return string
170 | */
171 | function twitter_api_admin_base_uri(){
172 | static $base_uri;
173 | if( ! isset($base_uri) ){
174 | $port = isset($_SERVER['HTTP_X_FORWARDED_PORT']) ? $_SERVER['HTTP_X_FORWARDED_PORT'] : $_SERVER['SERVER_PORT'];
175 | $prot = '443' === $port ? 'https:' : 'http:';
176 | $base_uri = $prot.'//'.$_SERVER['HTTP_HOST'].''.current( explode( '&', $_SERVER['REQUEST_URI'], 2 ) );
177 | }
178 | return $base_uri;
179 | }
180 |
181 |
182 |
183 |
184 |
185 | /**
186 | * Admin menu registration callback
187 | */
188 | function twitter_api_admin_menu() {
189 | $title = __('Twitter API','twitter-api');
190 | add_options_page( $title, $title, 'manage_options', 'twitter-api-admin', 'twitter_api_admin_render_page');
191 | }
192 |
193 |
194 |
195 | // register our admin page with the menu, and we're done.
196 | add_action('admin_menu', 'twitter_api_admin_menu');
197 |
198 |
199 |
200 |
--------------------------------------------------------------------------------
/lang/extra/twitter-errors.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: 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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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] = '';
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] = '';
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 |
--------------------------------------------------------------------------------
/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 application not fully configured','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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------