summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2010-11-09 23:16:17 +0000
committerZach Copley <zach@status.net>2010-11-09 23:16:17 +0000
commit5b94d9e86b91707a47b143482775acad8fcf9e78 (patch)
tree99401bab6fc3295d8578a47b8d2b6d542ca70f90 /plugins
parent17ae690d5937b9a9ac3c7cd8a37d461960ce4964 (diff)
parenta988e2e97b4b790f3cbd9f755ebf61bf321e16f9 (diff)
Merge branch '0.9.x' into facebook-upgrade
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Adsense/AdsensePlugin.php2
-rw-r--r--plugins/Adsense/locale/Adsense.pot4
-rw-r--r--plugins/Adsense/locale/br/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/de/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/es/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/fr/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/gl/LC_MESSAGES/Adsense.po10
-rw-r--r--plugins/Adsense/locale/ia/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/it/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/ka/LC_MESSAGES/Adsense.po10
-rw-r--r--plugins/Adsense/locale/mk/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/nl/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/pt_BR/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/ru/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/sv/LC_MESSAGES/Adsense.po10
-rw-r--r--plugins/Adsense/locale/tl/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/uk/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/Adsense/locale/zh_CN/LC_MESSAGES/Adsense.po11
-rw-r--r--plugins/BitlyUrl/locale/nb/LC_MESSAGES/BitlyUrl.po10
-rw-r--r--plugins/Comet/locale/br/LC_MESSAGES/Comet.po28
-rw-r--r--plugins/Disqus/locale/br/LC_MESSAGES/Disqus.po12
-rw-r--r--plugins/GroupFavorited/groupfavoritedaction.php7
-rw-r--r--plugins/GroupFavorited/locale/GroupFavorited.pot6
-rw-r--r--plugins/GroupFavorited/locale/br/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/de/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/es/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/fr/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/ia/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/mk/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/nl/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/ru/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/tl/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/GroupFavorited/locale/uk/LC_MESSAGES/GroupFavorited.po12
-rw-r--r--plugins/Mapstraction/allmap.php7
-rw-r--r--plugins/Mapstraction/locale/br/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/de/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/fi/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/fr/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/gl/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/ia/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/mk/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/nb/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/nl/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/ru/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/ta/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/tl/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/uk/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/locale/zh_CN/LC_MESSAGES/Mapstraction.po14
-rw-r--r--plugins/Mapstraction/usermap.php7
-rw-r--r--plugins/Memcached/locale/ja/LC_MESSAGES/Memcached.po29
-rw-r--r--plugins/NoticeTitle/locale/pl/LC_MESSAGES/NoticeTitle.po33
-rw-r--r--plugins/OpenX/locale/br/LC_MESSAGES/OpenX.po109
-rw-r--r--plugins/Realtime/locale/af/LC_MESSAGES/Realtime.po58
-rw-r--r--plugins/Realtime/locale/br/LC_MESSAGES/Realtime.po58
-rw-r--r--plugins/Realtime/locale/tr/LC_MESSAGES/Realtime.po58
-rw-r--r--plugins/Realtime/locale/uk/LC_MESSAGES/Realtime.po59
-rw-r--r--plugins/Sample/locale/br/LC_MESSAGES/Sample.po20
-rw-r--r--plugins/Sitemap/locale/br/LC_MESSAGES/Sitemap.po11
-rw-r--r--plugins/TabFocus/locale/br/LC_MESSAGES/TabFocus.po32
-rw-r--r--plugins/TwitterBridge/TwitterBridgePlugin.php11
-rw-r--r--plugins/TwitterBridge/daemons/twitterdaemon.php314
-rwxr-xr-xplugins/TwitterBridge/daemons/twitterstatusfetcher.php591
-rw-r--r--plugins/TwitterBridge/jsonstreamreader.php265
-rw-r--r--plugins/TwitterBridge/locale/TwitterBridge.pot26
-rw-r--r--plugins/TwitterBridge/locale/fr/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/locale/ia/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/locale/mk/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/locale/nl/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/locale/tr/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/locale/uk/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/locale/zh_CN/LC_MESSAGES/TwitterBridge.po32
-rw-r--r--plugins/TwitterBridge/scripts/fakestream.php147
-rw-r--r--plugins/TwitterBridge/scripts/streamtest.php244
-rw-r--r--plugins/TwitterBridge/tweetctlqueuehandler.php59
-rw-r--r--plugins/TwitterBridge/tweetinqueuehandler.php63
-rw-r--r--plugins/TwitterBridge/twitterimport.php651
-rw-r--r--plugins/TwitterBridge/twittersettings.php14
-rw-r--r--plugins/TwitterBridge/twitterstreamreader.php285
-rw-r--r--plugins/UserFlag/UserFlagPlugin.php60
-rw-r--r--plugins/UserFlag/User_flag_profile.php23
-rw-r--r--plugins/UserFlag/flagprofile.php15
-rw-r--r--plugins/UserFlag/locale/UserFlag.pot16
-rw-r--r--plugins/UserFlag/locale/fr/LC_MESSAGES/UserFlag.po22
-rw-r--r--plugins/UserFlag/locale/ia/LC_MESSAGES/UserFlag.po22
-rw-r--r--plugins/UserFlag/locale/mk/LC_MESSAGES/UserFlag.po22
-rw-r--r--plugins/UserFlag/locale/nl/LC_MESSAGES/UserFlag.po22
-rw-r--r--plugins/UserFlag/locale/pt/LC_MESSAGES/UserFlag.po22
-rw-r--r--plugins/UserFlag/locale/uk/LC_MESSAGES/UserFlag.po22
88 files changed, 3051 insertions, 1128 deletions
diff --git a/plugins/Adsense/AdsensePlugin.php b/plugins/Adsense/AdsensePlugin.php
index 3d733e150..1965f95ea 100644
--- a/plugins/Adsense/AdsensePlugin.php
+++ b/plugins/Adsense/AdsensePlugin.php
@@ -206,7 +206,7 @@ class AdsensePlugin extends UAPPlugin
'author' => 'Evan Prodromou',
'homepage' => 'http://status.net/wiki/Plugin:Adsense',
'rawdescription' =>
- _m('Plugin to add Google Adsense to StatusNet sites.'));
+ _m('Plugin to add Google AdSense to StatusNet sites.'));
return true;
}
}
diff --git a/plugins/Adsense/locale/Adsense.pot b/plugins/Adsense/locale/Adsense.pot
index 2f5e4af2f..77db7e7d8 100644
--- a/plugins/Adsense/locale/Adsense.pot
+++ b/plugins/Adsense/locale/Adsense.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -27,7 +27,7 @@ msgid "AdSense"
msgstr ""
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr ""
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/br/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/br/LC_MESSAGES/Adsense.po
index c572f9b27..87c864a69 100644
--- a/plugins/Adsense/locale/br/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/br/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Plugin evit ouzhpennañ Google Adsense da lec'hiennoù StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/de/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/de/LC_MESSAGES/Adsense.po
index e7ddaa32e..e6c880a6e 100644
--- a/plugins/Adsense/locale/de/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/de/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: German <http://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Plugin, das Google Adsense auf StatusNet-Websites hinzufügt."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/es/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/es/LC_MESSAGES/Adsense.po
index 5a2fcfb25..1232b8293 100644
--- a/plugins/Adsense/locale/es/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/es/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Spanish <http://translatewiki.net/wiki/Portal:es>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: es\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Extensión para añadir Google Adsense a sitios StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/fr/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/fr/LC_MESSAGES/Adsense.po
index 17b56a00a..e73c99a46 100644
--- a/plugins/Adsense/locale/fr/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/fr/LC_MESSAGES/Adsense.po
@@ -10,13 +10,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -33,7 +33,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Greffon pour ajouter Google Adsense aux sites StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/gl/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/gl/LC_MESSAGES/Adsense.po
index e906670ea..2efd29f96 100644
--- a/plugins/Adsense/locale/gl/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/gl/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Galician <http://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: gl\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,7 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr ""
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/ia/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/ia/LC_MESSAGES/Adsense.po
index 1f8a73ea2..ef9250d00 100644
--- a/plugins/Adsense/locale/ia/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/ia/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Interlingua <http://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Plug-in pro adder Google Adsense a sitos StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/it/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/it/LC_MESSAGES/Adsense.po
index e8addce83..004fe0559 100644
--- a/plugins/Adsense/locale/it/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/it/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Italian <http://translatewiki.net/wiki/Portal:it>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: it\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Plugin per aggiungere Google Adsense ai siti StatusNet"
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/ka/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/ka/LC_MESSAGES/Adsense.po
index d3ccee66e..ee971e6d1 100644
--- a/plugins/Adsense/locale/ka/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/ka/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Georgian <http://translatewiki.net/wiki/Portal:ka>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ka\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,7 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr ""
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/mk/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/mk/LC_MESSAGES/Adsense.po
index 44fe432aa..ef9b949e4 100644
--- a/plugins/Adsense/locale/mk/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/mk/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Macedonian <http://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Приклучок за додавање на Google AdSense во мреж. места со StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/nl/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/nl/LC_MESSAGES/Adsense.po
index c4854ad3f..9c722cc95 100644
--- a/plugins/Adsense/locale/nl/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/nl/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Dutch <http://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Plug-in om Google AdSense toe te voegen aan Statusnetsites."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/pt_BR/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/pt_BR/LC_MESSAGES/Adsense.po
index 66ffa6b7a..649287ceb 100644
--- a/plugins/Adsense/locale/pt_BR/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/pt_BR/LC_MESSAGES/Adsense.po
@@ -10,14 +10,14 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-30 23:18+0000\n"
-"PO-Revision-Date: 2010-10-30 23:20:58+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Brazilian Portuguese <http://translatewiki.net/wiki/Portal:pt-"
"br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-29 16:11:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75708); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt-br\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -34,7 +34,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Plugin para adicionar Google Adsense aos sites StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/ru/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/ru/LC_MESSAGES/Adsense.po
index 85bb316a6..3a359a3a9 100644
--- a/plugins/Adsense/locale/ru/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/ru/LC_MESSAGES/Adsense.po
@@ -10,13 +10,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Russian <http://translatewiki.net/wiki/Portal:ru>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -34,7 +34,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Плагин для добавления Google Adsense на сайты StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/sv/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/sv/LC_MESSAGES/Adsense.po
index 031b79503..f8e3d83bc 100644
--- a/plugins/Adsense/locale/sv/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/sv/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Swedish <http://translatewiki.net/wiki/Portal:sv>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: sv\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,7 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr ""
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/tl/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/tl/LC_MESSAGES/Adsense.po
index ad5ed1ad2..db5d3445b 100644
--- a/plugins/Adsense/locale/tl/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/tl/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:50+0000\n"
"Language-Team: Tagalog <http://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -32,7 +32,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr ""
"Pampasak upang maidagdag ang Adsense ng Google sa mga sityo ng StatusNet."
diff --git a/plugins/Adsense/locale/uk/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/uk/LC_MESSAGES/Adsense.po
index f15de57c9..fe9ee4984 100644
--- a/plugins/Adsense/locale/uk/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/uk/LC_MESSAGES/Adsense.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:51+0000\n"
"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -33,7 +33,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "Додаток для відображення Google Adsense на сторінці сайту StatusNet."
#: adsenseadminpanel.php:52
diff --git a/plugins/Adsense/locale/zh_CN/LC_MESSAGES/Adsense.po b/plugins/Adsense/locale/zh_CN/LC_MESSAGES/Adsense.po
index 9bc76e416..0bdb9880d 100644
--- a/plugins/Adsense/locale/zh_CN/LC_MESSAGES/Adsense.po
+++ b/plugins/Adsense/locale/zh_CN/LC_MESSAGES/Adsense.po
@@ -10,14 +10,14 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Adsense\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:09+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:51+0000\n"
"Language-Team: Simplified Chinese <http://translatewiki.net/wiki/Portal:zh-"
"hans>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-30 23:43:40+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: #out-statusnet-plugin-adsense\n"
@@ -34,7 +34,8 @@ msgid "AdSense"
msgstr "AdSense"
#: AdsensePlugin.php:209
-msgid "Plugin to add Google Adsense to StatusNet sites."
+#, fuzzy
+msgid "Plugin to add Google AdSense to StatusNet sites."
msgstr "添加 Google Adsense 到 StatusNet 网站的插件。"
#: adsenseadminpanel.php:52
diff --git a/plugins/BitlyUrl/locale/nb/LC_MESSAGES/BitlyUrl.po b/plugins/BitlyUrl/locale/nb/LC_MESSAGES/BitlyUrl.po
index de00fc1ca..4298ae85e 100644
--- a/plugins/BitlyUrl/locale/nb/LC_MESSAGES/BitlyUrl.po
+++ b/plugins/BitlyUrl/locale/nb/LC_MESSAGES/BitlyUrl.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - BitlyUrl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:16+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:27:56+0000\n"
"Language-Team: Norwegian (bokmål)‬ <http://translatewiki.net/wiki/Portal:no>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:21+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:11:53+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: no\n"
"X-Message-Group: #out-statusnet-plugin-bitlyurl\n"
@@ -23,7 +23,7 @@ msgstr ""
#: BitlyUrlPlugin.php:48
msgid "You must specify a serviceUrl for bit.ly shortening."
-msgstr ""
+msgstr "Du må angi en serviceUrl for bit.ly-forkortelse."
#: BitlyUrlPlugin.php:171
#, php-format
diff --git a/plugins/Comet/locale/br/LC_MESSAGES/Comet.po b/plugins/Comet/locale/br/LC_MESSAGES/Comet.po
new file mode 100644
index 000000000..70093d613
--- /dev/null
+++ b/plugins/Comet/locale/br/LC_MESSAGES/Comet.po
@@ -0,0 +1,28 @@
+# Translation of StatusNet - Comet to Breton (Brezhoneg)
+# Expored from translatewiki.net
+#
+# Author: Y-M D
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Comet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:04+0000\n"
+"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-10-29 16:12:39+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: br\n"
+"X-Message-Group: #out-statusnet-plugin-comet\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: CometPlugin.php:114
+msgid "Plugin to do \"real time\" updates using Comet/Bayeux."
+msgstr ""
+"Un astenn evit ober hizivadennoù \"war ar prim\" en ur implijout Comet/"
+"Bayeux."
diff --git a/plugins/Disqus/locale/br/LC_MESSAGES/Disqus.po b/plugins/Disqus/locale/br/LC_MESSAGES/Disqus.po
index caafa7ba8..d647fe3f6 100644
--- a/plugins/Disqus/locale/br/LC_MESSAGES/Disqus.po
+++ b/plugins/Disqus/locale/br/LC_MESSAGES/Disqus.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Disqus\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:26+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:06+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:07+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:43+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-disqus\n"
@@ -27,10 +27,12 @@ msgid ""
"Please enable JavaScript to view the [comments powered by Disqus](http://"
"disqus.com/?ref_noscript=%s)."
msgstr ""
+"Mar plij gweredekait JavaScript evit gwelet an [evezhiadennoù enlusket gant "
+"Disqus] (http://disqus.com/?ref_noscript=%s)."
#: DisqusPlugin.php:149
msgid "Comments powered by "
-msgstr ""
+msgstr "Evezhiadennoù enlusket gant "
#: DisqusPlugin.php:201
msgid "Comments"
diff --git a/plugins/GroupFavorited/groupfavoritedaction.php b/plugins/GroupFavorited/groupfavoritedaction.php
index dbd37abbc..dcbf7d0bc 100644
--- a/plugins/GroupFavorited/groupfavoritedaction.php
+++ b/plugins/GroupFavorited/groupfavoritedaction.php
@@ -41,12 +41,7 @@ class GroupFavoritedAction extends ShowgroupAction
*/
function title()
{
- if (!empty($this->group->fullname)) {
- // @todo Create a core method to create this properly. i18n issue.
- $base = $this->group->fullname . ' (' . $this->group->nickname . ')';
- } else {
- $base = $this->group->nickname;
- }
+ $base = $this->group->getFancyName();
if ($this->page == 1) {
// TRANS: %s is a group name.
diff --git a/plugins/GroupFavorited/locale/GroupFavorited.pot b/plugins/GroupFavorited/locale/GroupFavorited.pot
index c6c2f1114..041126fad 100644
--- a/plugins/GroupFavorited/locale/GroupFavorited.pot
+++ b/plugins/GroupFavorited/locale/GroupFavorited.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,13 +17,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr ""
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""
diff --git a/plugins/GroupFavorited/locale/br/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/br/LC_MESSAGES/GroupFavorited.po
index 7362f0505..6ca70c83f 100644
--- a/plugins/GroupFavorited/locale/br/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/br/LC_MESSAGES/GroupFavorited.po
@@ -9,26 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr ""
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""
diff --git a/plugins/GroupFavorited/locale/de/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/de/LC_MESSAGES/GroupFavorited.po
index c820c89e1..cc8988658 100644
--- a/plugins/GroupFavorited/locale/de/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/de/LC_MESSAGES/GroupFavorited.po
@@ -10,26 +10,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: German <http://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Beliebte Beiträge in der %s-Gruppe"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Beliebte Beiträge in der %1$s-Gruppe, Seite %2$d"
diff --git a/plugins/GroupFavorited/locale/es/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/es/LC_MESSAGES/GroupFavorited.po
index 6af511ae6..3b3419d5a 100644
--- a/plugins/GroupFavorited/locale/es/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/es/LC_MESSAGES/GroupFavorited.po
@@ -9,26 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Spanish <http://translatewiki.net/wiki/Portal:es>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: es\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Mensajes populares en el grupo %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Mensajes populares en el grupo %1$s, página %2$d"
diff --git a/plugins/GroupFavorited/locale/fr/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/fr/LC_MESSAGES/GroupFavorited.po
index 9cfb10efc..3facce573 100644
--- a/plugins/GroupFavorited/locale/fr/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/fr/LC_MESSAGES/GroupFavorited.po
@@ -9,26 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Messages populaires dans le groupe %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Messages populaires dans le groupe %1$s, page %2$d"
diff --git a/plugins/GroupFavorited/locale/ia/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/ia/LC_MESSAGES/GroupFavorited.po
index 03eb3e3da..f1e424cd1 100644
--- a/plugins/GroupFavorited/locale/ia/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/ia/LC_MESSAGES/GroupFavorited.po
@@ -9,26 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Interlingua <http://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Messages popular in gruppo %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Messages popular in gruppo %1$s, pagina %2$d"
diff --git a/plugins/GroupFavorited/locale/mk/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/mk/LC_MESSAGES/GroupFavorited.po
index 1d1a43a0d..5aada9eca 100644
--- a/plugins/GroupFavorited/locale/mk/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/mk/LC_MESSAGES/GroupFavorited.po
@@ -9,26 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Macedonian <http://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Популарни објави во групата %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Популарни објави во групата %1$s, страница %2$d"
diff --git a/plugins/GroupFavorited/locale/nl/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/nl/LC_MESSAGES/GroupFavorited.po
index 1d8a2b57e..bf5669877 100644
--- a/plugins/GroupFavorited/locale/nl/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/nl/LC_MESSAGES/GroupFavorited.po
@@ -10,26 +10,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Dutch <http://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Populaire berichten in de groep %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Populaire berichten in de groep %1$s, pagina %2$d"
diff --git a/plugins/GroupFavorited/locale/ru/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/ru/LC_MESSAGES/GroupFavorited.po
index 63e84c453..1cb4433d8 100644
--- a/plugins/GroupFavorited/locale/ru/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/ru/LC_MESSAGES/GroupFavorited.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Russian <http://translatewiki.net/wiki/Portal:ru>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
@@ -23,13 +23,13 @@ msgstr ""
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Популярные сообщения в группе %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr ""
diff --git a/plugins/GroupFavorited/locale/tl/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/tl/LC_MESSAGES/GroupFavorited.po
index 31a1077bd..4091155de 100644
--- a/plugins/GroupFavorited/locale/tl/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/tl/LC_MESSAGES/GroupFavorited.po
@@ -9,26 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Tagalog <http://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Tanyag na mga pagpapaskila sa loob ng pangkat na %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Tanyag na mga pagpapaskila sa loob ng pangkat na %1$s, pahina %2$d"
diff --git a/plugins/GroupFavorited/locale/uk/LC_MESSAGES/GroupFavorited.po b/plugins/GroupFavorited/locale/uk/LC_MESSAGES/GroupFavorited.po
index d0a44340a..143c0cae8 100644
--- a/plugins/GroupFavorited/locale/uk/LC_MESSAGES/GroupFavorited.po
+++ b/plugins/GroupFavorited/locale/uk/LC_MESSAGES/GroupFavorited.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - GroupFavorited\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:41+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:28+0000\n"
"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:53+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:48+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-groupfavorited\n"
@@ -23,13 +23,13 @@ msgstr ""
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
#. TRANS: %s is a group name.
-#: groupfavoritedaction.php:53
+#: groupfavoritedaction.php:48
#, php-format
msgid "Popular posts in %s group"
msgstr "Популярні повідомлення спільноти %s"
#. TRANS: %1$s is a group name, %2$s is a group number.
-#: groupfavoritedaction.php:56
+#: groupfavoritedaction.php:51
#, php-format
msgid "Popular posts in %1$s group, page %2$d"
msgstr "Популярні повідомлення спільноти %1$s, сторінка %2$d"
diff --git a/plugins/Mapstraction/allmap.php b/plugins/Mapstraction/allmap.php
index 6e2e1d122..62d8d0445 100644
--- a/plugins/Mapstraction/allmap.php
+++ b/plugins/Mapstraction/allmap.php
@@ -61,12 +61,7 @@ class AllmapAction extends MapAction
function title()
{
- if (!empty($this->profile->fullname)) {
- // @todo FIXME: Bad i18n. Should be "%1$s (%2$s)".
- $base = $this->profile->fullname . ' (' . $this->user->nickname . ') ';
- } else {
- $base = $this->user->nickname;
- }
+ $base = $this->profile->getFancyName();
if ($this->page == 1) {
// TRANS: Page title.
diff --git a/plugins/Mapstraction/locale/br/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/br/LC_MESSAGES/Mapstraction.po
index 6552915b9..6dd726870 100644
--- a/plugins/Mapstraction/locale/br/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/br/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:46+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -46,19 +46,19 @@ msgstr "An implijer-mañ n'eus profil ebet dezhañ."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Kartenn mignoned %s"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, fuzzy, php-format
msgid "%1$s friends map, page %2$d"
msgstr "%s gartenn, pajenn %d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "%s gartenn, pajenn %d"
diff --git a/plugins/Mapstraction/locale/de/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/de/LC_MESSAGES/Mapstraction.po
index 0299a5d15..22c3e84ee 100644
--- a/plugins/Mapstraction/locale/de/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/de/LC_MESSAGES/Mapstraction.po
@@ -10,13 +10,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:46+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: German <http://translatewiki.net/wiki/Portal:de>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -49,19 +49,19 @@ msgstr "Benutzer hat kein Profil."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Karte der Freunde von %s"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Karte der Freunde von %1$s, Seite %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "%s-Karte, Seite %d"
diff --git a/plugins/Mapstraction/locale/fi/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/fi/LC_MESSAGES/Mapstraction.po
index 8e6007152..9d84ece5a 100644
--- a/plugins/Mapstraction/locale/fi/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/fi/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Finnish <http://translatewiki.net/wiki/Portal:fi>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fi\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -46,19 +46,19 @@ msgstr "Käyttäjällä ei ole profiilia."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Kartta käyttäjän %s ystävistä"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, fuzzy, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Kartta käyttäjän %s ystävistä"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr ""
diff --git a/plugins/Mapstraction/locale/fr/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/fr/LC_MESSAGES/Mapstraction.po
index a75da34ec..399917055 100644
--- a/plugins/Mapstraction/locale/fr/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/fr/LC_MESSAGES/Mapstraction.po
@@ -10,13 +10,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -49,19 +49,19 @@ msgstr "Aucun profil ne correspond à cet utilisateur."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Carte des amis de %s"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Carte des amis de %1$s, page %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "Carte %s, page %d"
diff --git a/plugins/Mapstraction/locale/gl/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/gl/LC_MESSAGES/Mapstraction.po
index 5df0d1404..ec66764bc 100644
--- a/plugins/Mapstraction/locale/gl/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/gl/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Galician <http://translatewiki.net/wiki/Portal:gl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: gl\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -46,19 +46,19 @@ msgstr "O usuario non ten perfil."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr ""
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr ""
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr ""
diff --git a/plugins/Mapstraction/locale/ia/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/ia/LC_MESSAGES/Mapstraction.po
index 72249a654..7deba8963 100644
--- a/plugins/Mapstraction/locale/ia/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/ia/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Interlingua <http://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -48,19 +48,19 @@ msgstr "Le usator non ha un profilo."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Mappa del amicos de %s"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Mappa de amicos de %1$s, pagina %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "Mappa de %s, pagina %d"
diff --git a/plugins/Mapstraction/locale/mk/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/mk/LC_MESSAGES/Mapstraction.po
index cf7be70ab..33562d597 100644
--- a/plugins/Mapstraction/locale/mk/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/mk/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Macedonian <http://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -48,19 +48,19 @@ msgstr "Корисникот нема профил."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Карта на пријатели на %s"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Карта на пријатели на %1$s, страница %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "Карта на %s, стр. %d"
diff --git a/plugins/Mapstraction/locale/nb/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/nb/LC_MESSAGES/Mapstraction.po
index b478de888..68b2d02ec 100644
--- a/plugins/Mapstraction/locale/nb/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/nb/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Norwegian (bokmål)‬ <http://translatewiki.net/wiki/Portal:no>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: no\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -48,19 +48,19 @@ msgstr "Bruker har ingen profil."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "%s vennekart"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "%1$s vennekart, side %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "%s kart, side %d"
diff --git a/plugins/Mapstraction/locale/nl/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/nl/LC_MESSAGES/Mapstraction.po
index fdc68490e..f68e24ea9 100644
--- a/plugins/Mapstraction/locale/nl/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/nl/LC_MESSAGES/Mapstraction.po
@@ -10,13 +10,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Dutch <http://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -49,19 +49,19 @@ msgstr "Deze gebruiker heeft geen profiel."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Kaart van %s en vrienden"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Kaart van vrienden van %1$s, pagina %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "Kaart van %s, pagina %d"
diff --git a/plugins/Mapstraction/locale/ru/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/ru/LC_MESSAGES/Mapstraction.po
index 93ad72cc3..97dbedf6e 100644
--- a/plugins/Mapstraction/locale/ru/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/ru/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Russian <http://translatewiki.net/wiki/Portal:ru>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -47,19 +47,19 @@ msgstr "У пользователя нет профиля."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Карта друзей: %s"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, fuzzy, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Карта друзей: %s"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr ""
diff --git a/plugins/Mapstraction/locale/ta/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/ta/LC_MESSAGES/Mapstraction.po
index 301117348..fbeb8efac 100644
--- a/plugins/Mapstraction/locale/ta/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/ta/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Tamil <http://translatewiki.net/wiki/Portal:ta>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ta\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -46,19 +46,19 @@ msgstr ""
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr ""
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr ""
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr ""
diff --git a/plugins/Mapstraction/locale/tl/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/tl/LC_MESSAGES/Mapstraction.po
index 49d27836b..bec287a2a 100644
--- a/plugins/Mapstraction/locale/tl/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/tl/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Tagalog <http://translatewiki.net/wiki/Portal:tl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tl\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -48,19 +48,19 @@ msgstr "Walang balangkas ang tagagamit."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "%s na mapa ng mga kaibigan"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr " %1$s mapa ng mga kaibigan, pahina %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "%s na mapa, pahina %d"
diff --git a/plugins/Mapstraction/locale/uk/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/uk/LC_MESSAGES/Mapstraction.po
index 9a43d791e..9a928759a 100644
--- a/plugins/Mapstraction/locale/uk/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/uk/LC_MESSAGES/Mapstraction.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -49,19 +49,19 @@ msgstr "Користувач не має профілю."
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "Мапа друзів %s."
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "Мапа друзів %1$s, сторінка %2$d"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "Мапа друзів %s, сторінка %d"
diff --git a/plugins/Mapstraction/locale/zh_CN/LC_MESSAGES/Mapstraction.po b/plugins/Mapstraction/locale/zh_CN/LC_MESSAGES/Mapstraction.po
index 47f07d159..15358a1aa 100644
--- a/plugins/Mapstraction/locale/zh_CN/LC_MESSAGES/Mapstraction.po
+++ b/plugins/Mapstraction/locale/zh_CN/LC_MESSAGES/Mapstraction.po
@@ -9,14 +9,14 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Mapstraction\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:46:47+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:33+0000\n"
"Language-Team: Simplified Chinese <http://translatewiki.net/wiki/Portal:zh-"
"hans>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:29:55+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75590); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:12:52+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: #out-statusnet-plugin-mapstraction\n"
@@ -49,19 +49,19 @@ msgstr "用户没有个人信息。"
#. TRANS: Page title.
#. TRANS: %s is a user nickname.
-#: allmap.php:74
+#: allmap.php:69
#, php-format
msgid "%s friends map"
msgstr "%s 好友地图"
#. TRANS: Page title.
#. TRANS: %1$s is a user nickname, %2$d is a page number.
-#: allmap.php:80
+#: allmap.php:75
#, php-format
msgid "%1$s friends map, page %2$d"
msgstr "%1$s 好友地图,第 %2$d 页。"
-#: usermap.php:73
+#: usermap.php:68
#, php-format
msgid "%s map, page %d"
msgstr "%s 地图,第 %d 页"
diff --git a/plugins/Mapstraction/usermap.php b/plugins/Mapstraction/usermap.php
index 0ee956159..54412146e 100644
--- a/plugins/Mapstraction/usermap.php
+++ b/plugins/Mapstraction/usermap.php
@@ -58,12 +58,7 @@ class UsermapAction extends MapAction
function title()
{
- if (!empty($this->profile->fullname)) {
- // @todo FIXME: Bad i18n. Should be '%1$s (%2$s)'
- $base = $this->profile->fullname . ' (' . $this->user->nickname . ')';
- } else {
- $base = $this->user->nickname;
- }
+ $base = $this->profile->getFancyName();
if ($this->page == 1) {
// @todo CHECKME: inconsisten with paged variant below. " map" missing.
diff --git a/plugins/Memcached/locale/ja/LC_MESSAGES/Memcached.po b/plugins/Memcached/locale/ja/LC_MESSAGES/Memcached.po
new file mode 100644
index 000000000..fea6080bc
--- /dev/null
+++ b/plugins/Memcached/locale/ja/LC_MESSAGES/Memcached.po
@@ -0,0 +1,29 @@
+# Translation of StatusNet - Memcached to Japanese (日本語)
+# Expored from translatewiki.net
+#
+# Author: Iwai.masaharu
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Memcached\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:31+0000\n"
+"Language-Team: Japanese <http://translatewiki.net/wiki/Portal:ja>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-10-29 16:12:53+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: ja\n"
+"X-Message-Group: #out-statusnet-plugin-memcached\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: MemcachedPlugin.php:218
+msgid ""
+"Use <a href=\"http://memcached.org/\">Memcached</a> to cache query results."
+msgstr ""
+"クエリー結果のキャッシュに <a href=\"http://memcached.org/\">Memcached</a> を"
+"使う"
diff --git a/plugins/NoticeTitle/locale/pl/LC_MESSAGES/NoticeTitle.po b/plugins/NoticeTitle/locale/pl/LC_MESSAGES/NoticeTitle.po
new file mode 100644
index 000000000..64b208fa5
--- /dev/null
+++ b/plugins/NoticeTitle/locale/pl/LC_MESSAGES/NoticeTitle.po
@@ -0,0 +1,33 @@
+# Translation of StatusNet - NoticeTitle to Polish (Polski)
+# Expored from translatewiki.net
+#
+# Author: Raven
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - NoticeTitle\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:28:38+0000\n"
+"Language-Team: Polish <http://translatewiki.net/wiki/Portal:pl>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-10-29 16:13:51+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: pl\n"
+"X-Message-Group: #out-statusnet-plugin-noticetitle\n"
+"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && "
+"(n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
+
+#: NoticeTitlePlugin.php:132
+msgid "Adds optional titles to notices."
+msgstr ""
+
+#. TRANS: Page title. %1$s is the title, %2$s is the site name.
+#: NoticeTitlePlugin.php:309
+#, php-format
+msgid "%1$s - %2$s"
+msgstr "%1$s - %2$s"
diff --git a/plugins/OpenX/locale/br/LC_MESSAGES/OpenX.po b/plugins/OpenX/locale/br/LC_MESSAGES/OpenX.po
new file mode 100644
index 000000000..c0f138fa0
--- /dev/null
+++ b/plugins/OpenX/locale/br/LC_MESSAGES/OpenX.po
@@ -0,0 +1,109 @@
+# Translation of StatusNet - OpenX to Breton (Brezhoneg)
+# Expored from translatewiki.net
+#
+# Author: Y-M D
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - OpenX\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:45+0000\n"
+"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-10-29 16:13:54+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: br\n"
+"X-Message-Group: #out-statusnet-plugin-openx\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. TRANS: Menu item title/tooltip
+#: OpenXPlugin.php:201
+msgid "OpenX configuration"
+msgstr "Kefluniadur OpenX"
+
+#. TRANS: Menu item for site administration
+#: OpenXPlugin.php:203
+msgid "OpenX"
+msgstr "OpenX"
+
+#. TRANS: Plugin description.
+#: OpenXPlugin.php:224
+msgid "Plugin for <a href=\"http://www.openx.org/\">OpenX Ad Server</a>."
+msgstr ""
+
+#. TRANS: Page title for OpenX admin panel.
+#: openxadminpanel.php:53
+msgctxt "TITLE"
+msgid "OpenX"
+msgstr "OpenX"
+
+#. TRANS: Instructions for OpenX admin panel.
+#: openxadminpanel.php:64
+msgid "OpenX settings for this StatusNet site"
+msgstr "Arventennoù OpenX evit al lec'hienn StatusNet-mañ."
+
+#. TRANS: Form label in OpenX admin panel.
+#: openxadminpanel.php:167
+msgid "Ad script URL"
+msgstr ""
+
+#. TRANS: Tooltip for form label in OpenX admin panel.
+#: openxadminpanel.php:169
+msgid "Script URL"
+msgstr ""
+
+#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:175
+msgid "Medium rectangle"
+msgstr ""
+
+#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:177
+msgid "Medium rectangle zone"
+msgstr ""
+
+#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:183
+msgid "Rectangle"
+msgstr "Skouergornek"
+
+#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:185
+msgid "Rectangle zone"
+msgstr ""
+
+#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:191
+msgid "Leaderboard"
+msgstr ""
+
+#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:193
+msgid "Leaderboard zone"
+msgstr ""
+
+#. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:199
+msgid "Skyscraper"
+msgstr "Giton a-serzh"
+
+#. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
+#: openxadminpanel.php:201
+msgid "Wide skyscraper zone"
+msgstr ""
+
+#. TRANS: Submit button text in OpenX admin panel.
+#: openxadminpanel.php:216
+msgctxt "BUTTON"
+msgid "Save"
+msgstr "Enrollañ"
+
+#. TRANS: Submit button title in OpenX admin panel.
+#: openxadminpanel.php:220
+msgid "Save OpenX settings"
+msgstr ""
diff --git a/plugins/Realtime/locale/af/LC_MESSAGES/Realtime.po b/plugins/Realtime/locale/af/LC_MESSAGES/Realtime.po
new file mode 100644
index 000000000..81614a28e
--- /dev/null
+++ b/plugins/Realtime/locale/af/LC_MESSAGES/Realtime.po
@@ -0,0 +1,58 @@
+# Translation of StatusNet - Realtime to Afrikaans (Afrikaans)
+# Expored from translatewiki.net
+#
+# Author: Naudefj
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Realtime\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:59+0000\n"
+"Language-Team: Afrikaans <http://translatewiki.net/wiki/Portal:af>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-11-05 00:29:27+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: af\n"
+"X-Message-Group: #out-statusnet-plugin-realtime\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. TRANS: Text label for realtime view "play" button, usually replaced by an icon.
+#: RealtimePlugin.php:339
+msgctxt "BUTTON"
+msgid "Play"
+msgstr "Speel"
+
+#. TRANS: Tooltip for realtime view "play" button.
+#: RealtimePlugin.php:341
+msgctxt "TOOLTIP"
+msgid "Play"
+msgstr "Speel"
+
+#. TRANS: Text label for realtime view "pause" button
+#: RealtimePlugin.php:343
+msgctxt "BUTTON"
+msgid "Pause"
+msgstr "Wag"
+
+#. TRANS: Tooltip for realtime view "pause" button
+#: RealtimePlugin.php:345
+msgctxt "TOOLTIP"
+msgid "Pause"
+msgstr "Wag"
+
+#. TRANS: Text label for realtime view "popup" button, usually replaced by an icon.
+#: RealtimePlugin.php:347
+msgctxt "BUTTON"
+msgid "Pop up"
+msgstr "Pop-up"
+
+#. TRANS: Tooltip for realtime view "popup" button.
+#: RealtimePlugin.php:349
+msgctxt "TOOLTIP"
+msgid "Pop up in a window"
+msgstr "Wys in 'n venstertjie"
diff --git a/plugins/Realtime/locale/br/LC_MESSAGES/Realtime.po b/plugins/Realtime/locale/br/LC_MESSAGES/Realtime.po
new file mode 100644
index 000000000..d30b98ec5
--- /dev/null
+++ b/plugins/Realtime/locale/br/LC_MESSAGES/Realtime.po
@@ -0,0 +1,58 @@
+# Translation of StatusNet - Realtime to Breton (Brezhoneg)
+# Expored from translatewiki.net
+#
+# Author: Y-M D
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Realtime\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:59+0000\n"
+"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-11-05 00:29:27+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: br\n"
+"X-Message-Group: #out-statusnet-plugin-realtime\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. TRANS: Text label for realtime view "play" button, usually replaced by an icon.
+#: RealtimePlugin.php:339
+msgctxt "BUTTON"
+msgid "Play"
+msgstr "Lenn"
+
+#. TRANS: Tooltip for realtime view "play" button.
+#: RealtimePlugin.php:341
+msgctxt "TOOLTIP"
+msgid "Play"
+msgstr "Lenn"
+
+#. TRANS: Text label for realtime view "pause" button
+#: RealtimePlugin.php:343
+msgctxt "BUTTON"
+msgid "Pause"
+msgstr "Ehan"
+
+#. TRANS: Tooltip for realtime view "pause" button
+#: RealtimePlugin.php:345
+msgctxt "TOOLTIP"
+msgid "Pause"
+msgstr "Ehan"
+
+#. TRANS: Text label for realtime view "popup" button, usually replaced by an icon.
+#: RealtimePlugin.php:347
+msgctxt "BUTTON"
+msgid "Pop up"
+msgstr ""
+
+#. TRANS: Tooltip for realtime view "popup" button.
+#: RealtimePlugin.php:349
+msgctxt "TOOLTIP"
+msgid "Pop up in a window"
+msgstr ""
diff --git a/plugins/Realtime/locale/tr/LC_MESSAGES/Realtime.po b/plugins/Realtime/locale/tr/LC_MESSAGES/Realtime.po
new file mode 100644
index 000000000..fb235468a
--- /dev/null
+++ b/plugins/Realtime/locale/tr/LC_MESSAGES/Realtime.po
@@ -0,0 +1,58 @@
+# Translation of StatusNet - Realtime to Turkish (Türkçe)
+# Expored from translatewiki.net
+#
+# Author: Maidis
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Realtime\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:28:59+0000\n"
+"Language-Team: Turkish <http://translatewiki.net/wiki/Portal:tr>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-11-05 00:29:27+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: tr\n"
+"X-Message-Group: #out-statusnet-plugin-realtime\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#. TRANS: Text label for realtime view "play" button, usually replaced by an icon.
+#: RealtimePlugin.php:339
+msgctxt "BUTTON"
+msgid "Play"
+msgstr "Oynat"
+
+#. TRANS: Tooltip for realtime view "play" button.
+#: RealtimePlugin.php:341
+msgctxt "TOOLTIP"
+msgid "Play"
+msgstr "Oynat"
+
+#. TRANS: Text label for realtime view "pause" button
+#: RealtimePlugin.php:343
+msgctxt "BUTTON"
+msgid "Pause"
+msgstr "Duraklat"
+
+#. TRANS: Tooltip for realtime view "pause" button
+#: RealtimePlugin.php:345
+msgctxt "TOOLTIP"
+msgid "Pause"
+msgstr "Duraklat"
+
+#. TRANS: Text label for realtime view "popup" button, usually replaced by an icon.
+#: RealtimePlugin.php:347
+msgctxt "BUTTON"
+msgid "Pop up"
+msgstr ""
+
+#. TRANS: Tooltip for realtime view "popup" button.
+#: RealtimePlugin.php:349
+msgctxt "TOOLTIP"
+msgid "Pop up in a window"
+msgstr ""
diff --git a/plugins/Realtime/locale/uk/LC_MESSAGES/Realtime.po b/plugins/Realtime/locale/uk/LC_MESSAGES/Realtime.po
new file mode 100644
index 000000000..f15b29127
--- /dev/null
+++ b/plugins/Realtime/locale/uk/LC_MESSAGES/Realtime.po
@@ -0,0 +1,59 @@
+# Translation of StatusNet - Realtime to Ukrainian (Українська)
+# Expored from translatewiki.net
+#
+# Author: Boogie
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Realtime\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:00+0000\n"
+"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-11-02 23:07:29+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: uk\n"
+"X-Message-Group: #out-statusnet-plugin-realtime\n"
+"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
+"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
+
+#. TRANS: Text label for realtime view "play" button, usually replaced by an icon.
+#: RealtimePlugin.php:339
+msgctxt "BUTTON"
+msgid "Play"
+msgstr "Оновлювати"
+
+#. TRANS: Tooltip for realtime view "play" button.
+#: RealtimePlugin.php:341
+msgctxt "TOOLTIP"
+msgid "Play"
+msgstr "Оновлювати"
+
+#. TRANS: Text label for realtime view "pause" button
+#: RealtimePlugin.php:343
+msgctxt "BUTTON"
+msgid "Pause"
+msgstr "Пауза"
+
+#. TRANS: Tooltip for realtime view "pause" button
+#: RealtimePlugin.php:345
+msgctxt "TOOLTIP"
+msgid "Pause"
+msgstr "Пауза"
+
+#. TRANS: Text label for realtime view "popup" button, usually replaced by an icon.
+#: RealtimePlugin.php:347
+msgctxt "BUTTON"
+msgid "Pop up"
+msgstr "Окреме вікно"
+
+#. TRANS: Tooltip for realtime view "popup" button.
+#: RealtimePlugin.php:349
+msgctxt "TOOLTIP"
+msgid "Pop up in a window"
+msgstr "Стрічка окремим вікном"
diff --git a/plugins/Sample/locale/br/LC_MESSAGES/Sample.po b/plugins/Sample/locale/br/LC_MESSAGES/Sample.po
index 2ac1405de..0702b07c3 100644
--- a/plugins/Sample/locale/br/LC_MESSAGES/Sample.po
+++ b/plugins/Sample/locale/br/LC_MESSAGES/Sample.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Sample\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:31+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:05+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-20 17:58:22+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:01+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-sample\n"
@@ -26,14 +26,14 @@ msgstr ""
#: User_greeting_count.php:164
#, php-format
msgid "Could not save new greeting count for %d."
-msgstr ""
+msgstr "Dibosupl eo enrollañ ar gont degemer nevez evit an implijer %d."
#. TRANS: Exception thrown when the user greeting count could not be saved in the database.
#. TRANS: %d is a user ID (number).
#: User_greeting_count.php:177
#, php-format
msgid "Could not increment greeting count for %d."
-msgstr ""
+msgstr "Dibosupl eo inkremantañ ar gont degemer nevez evit an implijer %d."
#: SamplePlugin.php:259 hello.php:111
msgid "Hello"
@@ -41,11 +41,13 @@ msgstr "Demat"
#: SamplePlugin.php:259
msgid "A warm greeting"
-msgstr ""
+msgstr "Un degemer tomm"
#: SamplePlugin.php:270
msgid "A sample plugin to show basics of development for new hackers."
msgstr ""
+"Ur skouer a lugant evit diskouez an diazezoù diorren evit ar c'hoderien "
+"nevez."
#: hello.php:113
#, php-format
@@ -65,5 +67,5 @@ msgstr "Demat, %s"
#, php-format
msgid "I have greeted you %d time."
msgid_plural "I have greeted you %d times."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "ur"
+msgstr[1] "%d"
diff --git a/plugins/Sitemap/locale/br/LC_MESSAGES/Sitemap.po b/plugins/Sitemap/locale/br/LC_MESSAGES/Sitemap.po
index 02dea72ee..73ebd322f 100644
--- a/plugins/Sitemap/locale/br/LC_MESSAGES/Sitemap.po
+++ b/plugins/Sitemap/locale/br/LC_MESSAGES/Sitemap.po
@@ -2,6 +2,7 @@
# Expored from translatewiki.net
#
# Author: Fulup
+# Author: Y-M D
# --
# This file is distributed under the same license as the StatusNet package.
#
@@ -9,13 +10,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - Sitemap\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:40+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:07+0000\n"
"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-18 20:34:11+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:04+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: #out-statusnet-plugin-sitemap\n"
@@ -54,7 +55,7 @@ msgstr ""
#. TRANS: Field label.
#: sitemapadminpanel.php:183
msgid "Bing key"
-msgstr ""
+msgstr "Alc'hwez Bing"
#. TRANS: Title for field label.
#: sitemapadminpanel.php:185
diff --git a/plugins/TabFocus/locale/br/LC_MESSAGES/TabFocus.po b/plugins/TabFocus/locale/br/LC_MESSAGES/TabFocus.po
new file mode 100644
index 000000000..b9b454898
--- /dev/null
+++ b/plugins/TabFocus/locale/br/LC_MESSAGES/TabFocus.po
@@ -0,0 +1,32 @@
+# Translation of StatusNet - TabFocus to Breton (Brezhoneg)
+# Expored from translatewiki.net
+#
+# Author: Y-M D
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - TabFocus\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:11+0000\n"
+"Language-Team: Breton <http://translatewiki.net/wiki/Portal:br>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2010-10-29 16:14:08+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: br\n"
+"X-Message-Group: #out-statusnet-plugin-tabfocus\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: TabFocusPlugin.php:54
+msgid ""
+"TabFocus changes the notice form behavior so that, while in the text area, "
+"pressing the tab key focuses the \"Send\" button, matching the behavior of "
+"Twitter."
+msgstr ""
+"TabFocus a gemm emzalc'h ar furmskrid kemennoù evit ma vefe kaset ar fokus "
+"war ar bouton \"Kas\" pa bouezer war a stokell taolennata adalek ar zonenn "
+"testenn, ar pezh a glot gant emzalc'h Twitter."
diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php
index 097d4486f..f5c361250 100644
--- a/plugins/TwitterBridge/TwitterBridgePlugin.php
+++ b/plugins/TwitterBridge/TwitterBridgePlugin.php
@@ -200,8 +200,15 @@ class TwitterBridgePlugin extends Plugin
return false;
case 'TwitterOAuthClient':
case 'TwitterQueueHandler':
+ case 'TwitterImport':
+ case 'JsonStreamReader':
+ case 'TwitterStreamReader':
include_once $dir . '/' . strtolower($cls) . '.php';
return false;
+ case 'TwitterSiteStream':
+ case 'TwitterUserStream':
+ include_once $dir . '/twitterstreamreader.php';
+ return false;
case 'Notice_to_status':
case 'Twitter_synch_status':
include_once $dir . '/' . $cls . '.php';
@@ -267,7 +274,11 @@ class TwitterBridgePlugin extends Plugin
function onEndInitializeQueueManager($manager)
{
if (self::hasKeys()) {
+ // Outgoing notices -> twitter
$manager->connect('twitter', 'TwitterQueueHandler');
+
+ // Incoming statuses <- twitter
+ $manager->connect('tweetin', 'TweetInQueueHandler');
}
return true;
}
diff --git a/plugins/TwitterBridge/daemons/twitterdaemon.php b/plugins/TwitterBridge/daemons/twitterdaemon.php
new file mode 100644
index 000000000..d313d2de9
--- /dev/null
+++ b/plugins/TwitterBridge/daemons/twitterdaemon.php
@@ -0,0 +1,314 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+
+$shortoptions = 'fi::a';
+$longoptions = array('id::', 'foreground', 'all');
+
+$helptext = <<<END_OF_XMPP_HELP
+Daemon script for receiving new notices from Twitter users.
+
+ -i --id Identity (default none)
+ -a --all Handle Twitter for all local sites
+ (requires Stomp queue handler, status_network setup)
+ -f --foreground Stay in the foreground (default background)
+
+END_OF_XMPP_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+require_once INSTALLDIR . '/lib/jabber.php';
+
+class TwitterDaemon extends SpawningDaemon
+{
+ protected $allsites = false;
+
+ function __construct($id=null, $daemonize=true, $threads=1, $allsites=false)
+ {
+ if ($threads != 1) {
+ // This should never happen. :)
+ throw new Exception("TwitterDaemon must run single-threaded");
+ }
+ parent::__construct($id, $daemonize, $threads);
+ $this->allsites = $allsites;
+ }
+
+ function runThread()
+ {
+ common_log(LOG_INFO, 'Waiting to listen to Twitter and queues');
+
+ $master = new TwitterMaster($this->get_id(), $this->processManager());
+ $master->init($this->allsites);
+ $master->service();
+
+ common_log(LOG_INFO, 'terminating normally');
+
+ return $master->respawn ? self::EXIT_RESTART : self::EXIT_SHUTDOWN;
+ }
+
+}
+
+class TwitterMaster extends IoMaster
+{
+ protected $processManager;
+
+ function __construct($id, $processManager)
+ {
+ parent::__construct($id);
+ $this->processManager = $processManager;
+ }
+
+ /**
+ * Initialize IoManagers for the currently configured site
+ * which are appropriate to this instance.
+ */
+ function initManagers()
+ {
+ $qm = QueueManager::get();
+ $qm->setActiveGroup('twitter');
+ $this->instantiate($qm);
+ $this->instantiate(new TwitterManager());
+ $this->instantiate($this->processManager);
+ }
+}
+
+
+class TwitterManager extends IoManager
+{
+ // Recommended resource limits from http://dev.twitter.com/pages/site_streams
+ const MAX_STREAMS = 1000;
+ const USERS_PER_STREAM = 100;
+ const STREAMS_PER_SECOND = 20;
+
+ protected $streams;
+ protected $users;
+
+ /**
+ * Pull the site's active Twitter-importing users and start spawning
+ * some data streams for them!
+ *
+ * @fixme check their last-id and check whether we'll need to do a manual pull.
+ * @fixme abstract out the fetching so we can work over multiple sites.
+ */
+ protected function initStreams()
+ {
+ common_log(LOG_INFO, 'init...');
+ // Pull Twitter user IDs for all users we want to pull data for
+ $flink = new Foreign_link();
+ $flink->service = TWITTER_SERVICE;
+ // @fixme probably should do the bitfield check in a whereAdd but it's ugly :D
+ $flink->find();
+
+ $userIds = array();
+ while ($flink->fetch()) {
+ if (($flink->noticesync & FOREIGN_NOTICE_RECV) ==
+ FOREIGN_NOTICE_RECV) {
+ $userIds[] = $flink->foreign_id;
+
+ if (count($userIds) >= self::USERS_PER_STREAM) {
+ $this->spawnStream($userIds);
+ $userIds = array();
+ }
+ }
+ }
+
+ if (count($userIds)) {
+ $this->spawnStream($userIds);
+ }
+ }
+
+ /**
+ * Prepare a Site Stream connection for the given chunk of users.
+ * The actual connection will be opened later.
+ *
+ * @param $userIds array of Twitter-side user IDs
+ */
+ protected function spawnStream($userIds)
+ {
+ $stream = $this->initSiteStream();
+ $stream->followUsers($userIds);
+
+ // Slip the stream reader into our list of active streams.
+ // We'll manage its actual connection on the next go-around.
+ $this->streams[] = $stream;
+
+ // Record the user->stream mappings; this makes it easier for us to know
+ // later if we need to kill something.
+ foreach ($userIds as $id) {
+ $this->users[$id] = $stream;
+ }
+ }
+
+ /**
+ * Initialize a generic site streams connection object.
+ * All our connections will look like this, then we'll add users to them.
+ *
+ * @return TwitterStreamReader
+ */
+ protected function initSiteStream()
+ {
+ $auth = $this->siteStreamAuth();
+ $stream = new TwitterSiteStream($auth);
+
+ // Add our event handler callbacks. Whee!
+ $this->setupEvents($stream);
+ return $stream;
+ }
+
+ /**
+ * Fetch the Twitter OAuth credentials to use to connect to the Site Streams API.
+ *
+ * This will use the locally-stored credentials for the applictation's owner account
+ * from the site configuration. These should be configured through the administration
+ * panels or manually in the config file.
+ *
+ * Will throw an exception if no credentials can be found -- but beware that invalid
+ * credentials won't cause breakage until later.
+ *
+ * @return TwitterOAuthClient
+ */
+ protected function siteStreamAuth()
+ {
+ $token = common_config('twitter', 'stream_token');
+ $secret = common_config('twitter', 'stream_secret');
+ if (empty($token) || empty($secret)) {
+ throw new ServerException('Twitter site streams have not been correctly configured. Configure the app owner account via the admin panel.');
+ }
+ return new TwitterOAuthClient($token, $secret);
+ }
+
+ /**
+ * Collect the sockets for all active connections for i/o monitoring.
+ *
+ * @return array of resources
+ */
+ public function getSockets()
+ {
+ $sockets = array();
+ foreach ($this->streams as $stream) {
+ foreach ($stream->getSockets() as $socket) {
+ $sockets[] = $socket;
+ }
+ }
+ return $sockets;
+ }
+
+ /**
+ * We're ready to process input from one of our data sources! Woooooo!
+ * @fixme is there an easier way to map from socket back to owning module? :(
+ *
+ * @param resource $socket
+ * @return boolean success
+ */
+ public function handleInput($socket)
+ {
+ foreach ($this->streams as $stream) {
+ foreach ($stream->getSockets() as $aSocket) {
+ if ($socket === $aSocket) {
+ $stream->handleInput($socket);
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Start the i/o system up! Prepare our connections and start opening them.
+ *
+ * @fixme do some rate-limiting on the stream setup
+ * @fixme do some sensible backoff on failure etc
+ */
+ public function start()
+ {
+ $this->initStreams();
+ foreach ($this->streams as $stream) {
+ $stream->connect();
+ }
+ return true;
+ }
+
+ /**
+ * Close down our connections when the daemon wraps up for business.
+ */
+ public function finish()
+ {
+ foreach ($this->streams as $index => $stream) {
+ $stream->close();
+ unset($this->streams[$index]);
+ }
+ return true;
+ }
+
+ public static function get()
+ {
+ throw new Exception('not a singleton');
+ }
+
+ /**
+ * Set up event handlers on the streaming interface.
+ *
+ * @fixme add more event types as we add handling for them
+ */
+ protected function setupEvents(TwitterStreamReader $stream)
+ {
+ $handlers = array(
+ 'status',
+ );
+ foreach ($handlers as $event) {
+ $stream->hookEvent($event, array($this, 'onTwitter' . ucfirst($event)));
+ }
+ }
+
+ /**
+ * Event callback notifying that a user has a new message in their home timeline.
+ * We store the incoming message into the queues for processing, keeping our own
+ * daemon running as shiny-fast as possible.
+ *
+ * @param object $status JSON data: Twitter status update
+ * @fixme in all-sites mode we may need to route queue items into another site's
+ * destination queues, or multiple sites.
+ */
+ protected function onTwitterStatus($status, $context)
+ {
+ $data = array(
+ 'status' => $status,
+ 'for_user' => $context->for_user,
+ );
+ $qm = QueueManager::get();
+ $qm->enqueue($data, 'tweetin');
+ }
+}
+
+
+if (have_option('i', 'id')) {
+ $id = get_option_value('i', 'id');
+} else if (count($args) > 0) {
+ $id = $args[0];
+} else {
+ $id = null;
+}
+
+$foreground = have_option('f', 'foreground');
+$all = have_option('a') || have_option('--all');
+
+$daemon = new TwitterDaemon($id, !$foreground, 1, $all);
+
+$daemon->runOnce();
diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
index cef67b180..9298d9e3a 100755
--- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
+++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
@@ -192,25 +192,12 @@ class TwitterStatusFetcher extends ParallelizingDaemon
common_debug(LOG_INFO, $this->name() . ' - Retrieved ' . sizeof($timeline) . ' statuses from Twitter.');
+ $importer = new TwitterImport();
+
// Reverse to preserve order
foreach (array_reverse($timeline) as $status) {
- // Hacktastic: filter out stuff coming from this StatusNet
- $source = mb_strtolower(common_config('integration', 'source'));
-
- if (preg_match("/$source/", mb_strtolower($status->source))) {
- common_debug($this->name() . ' - Skipping import of status ' .
- $status->id . ' with source ' . $source);
- continue;
- }
-
- // Don't save it if the user is protected
- // FIXME: save it but treat it as private
- if ($status->user->protected) {
- continue;
- }
-
- $notice = $this->saveStatus($status);
+ $notice = $importer->importStatus($status);
if (!empty($notice)) {
Inbox::insertNotice($flink->user_id, $notice->id);
@@ -226,578 +213,6 @@ class TwitterStatusFetcher extends ParallelizingDaemon
$flink->last_noticesync = common_sql_now();
$flink->update();
}
-
- function saveStatus($status)
- {
- $profile = $this->ensureProfile($status->user);
-
- if (empty($profile)) {
- common_log(LOG_ERR, $this->name() .
- ' - Problem saving notice. No associated Profile.');
- return null;
- }
-
- $statusUri = $this->makeStatusURI($status->user->screen_name, $status->id);
-
- // check to see if we've already imported the status
- $n2s = Notice_to_status::staticGet('status_id', $status->id);
-
- if (!empty($n2s)) {
- common_log(
- LOG_INFO,
- $this->name() .
- " - Ignoring duplicate import: {$status->id}"
- );
- return Notice::staticGet('id', $n2s->notice_id);
- }
-
- // If it's a retweet, save it as a repeat!
- if (!empty($status->retweeted_status)) {
- common_log(LOG_INFO, "Status {$status->id} is a retweet of {$status->retweeted_status->id}.");
- $original = $this->saveStatus($status->retweeted_status);
- if (empty($original)) {
- return null;
- } else {
- $author = $original->getProfile();
- // TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
- // TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
- $content = sprintf(_m('RT @%1$s %2$s'),
- $author->nickname,
- $original->content);
-
- if (Notice::contentTooLong($content)) {
- $contentlimit = Notice::maxContent();
- $content = mb_substr($content, 0, $contentlimit - 4) . ' ...';
- }
-
- $repeat = Notice::saveNew($profile->id,
- $content,
- 'twitter',
- array('repeat_of' => $original->id,
- 'uri' => $statusUri,
- 'is_local' => Notice::GATEWAY));
- common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}");
- Notice_to_status::saveNew($repeat->id, $status->id);
- return $repeat;
- }
- }
-
- $notice = new Notice();
-
- $notice->profile_id = $profile->id;
- $notice->uri = $statusUri;
- $notice->url = $statusUri;
- $notice->created = strftime(
- '%Y-%m-%d %H:%M:%S',
- strtotime($status->created_at)
- );
-
- $notice->source = 'twitter';
-
- $notice->reply_to = null;
-
- if (!empty($status->in_reply_to_status_id)) {
- common_log(LOG_INFO, "Status {$status->id} is a reply to status {$status->in_reply_to_status_id}");
- $n2s = Notice_to_status::staticGet('status_id', $status->in_reply_to_status_id);
- if (empty($n2s)) {
- common_log(LOG_INFO, "Couldn't find local notice for status {$status->in_reply_to_status_id}");
- } else {
- $reply = Notice::staticGet('id', $n2s->notice_id);
- if (empty($reply)) {
- common_log(LOG_INFO, "Couldn't find local notice for status {$status->in_reply_to_status_id}");
- } else {
- common_log(LOG_INFO, "Found local notice {$reply->id} for status {$status->in_reply_to_status_id}");
- $notice->reply_to = $reply->id;
- $notice->conversation = $reply->conversation;
- }
- }
- }
-
- if (empty($notice->conversation)) {
- $conv = Conversation::create();
- $notice->conversation = $conv->id;
- common_log(LOG_INFO, "No known conversation for status {$status->id} so making a new one {$conv->id}.");
- }
-
- $notice->is_local = Notice::GATEWAY;
-
- $notice->content = html_entity_decode($status->text, ENT_QUOTES, 'UTF-8');
- $notice->rendered = $this->linkify($status);
-
- if (Event::handle('StartNoticeSave', array(&$notice))) {
-
- $id = $notice->insert();
-
- if (!$id) {
- common_log_db_error($notice, 'INSERT', __FILE__);
- common_log(LOG_ERR, $this->name() .
- ' - Problem saving notice.');
- }
-
- Event::handle('EndNoticeSave', array($notice));
- }
-
- Notice_to_status::saveNew($notice->id, $status->id);
-
- $this->saveStatusMentions($notice, $status);
-
- $notice->blowOnInsert();
-
- return $notice;
- }
-
- /**
- * Make an URI for a status.
- *
- * @param object $status status object
- *
- * @return string URI
- */
- function makeStatusURI($username, $id)
- {
- return 'http://twitter.com/'
- . $username
- . '/status/'
- . $id;
- }
-
- /**
- * Look up a Profile by profileurl field. Profile::staticGet() was
- * not working consistently.
- *
- * @param string $nickname local nickname of the Twitter user
- * @param string $profileurl the profile url
- *
- * @return mixed value the first Profile with that url, or null
- */
- function getProfileByUrl($nickname, $profileurl)
- {
- $profile = new Profile();
- $profile->nickname = $nickname;
- $profile->profileurl = $profileurl;
- $profile->limit(1);
-
- if ($profile->find()) {
- $profile->fetch();
- return $profile;
- }
-
- return null;
- }
-
- /**
- * Check to see if this Twitter status has already been imported
- *
- * @param Profile $profile Twitter user's local profile
- * @param string $statusUri URI of the status on Twitter
- *
- * @return mixed value a matching Notice or null
- */
- function checkDupe($profile, $statusUri)
- {
- $notice = new Notice();
- $notice->uri = $statusUri;
- $notice->profile_id = $profile->id;
- $notice->limit(1);
-
- if ($notice->find()) {
- $notice->fetch();
- return $notice;
- }
-
- return null;
- }
-
- function ensureProfile($user)
- {
- // check to see if there's already a profile for this user
- $profileurl = 'http://twitter.com/' . $user->screen_name;
- $profile = $this->getProfileByUrl($user->screen_name, $profileurl);
-
- if (!empty($profile)) {
- common_debug($this->name() .
- " - Profile for $profile->nickname found.");
-
- // Check to see if the user's Avatar has changed
-
- $this->checkAvatar($user, $profile);
- return $profile;
-
- } else {
- common_debug($this->name() . ' - Adding profile and remote profile ' .
- "for Twitter user: $profileurl.");
-
- $profile = new Profile();
- $profile->query("BEGIN");
-
- $profile->nickname = $user->screen_name;
- $profile->fullname = $user->name;
- $profile->homepage = $user->url;
- $profile->bio = $user->description;
- $profile->location = $user->location;
- $profile->profileurl = $profileurl;
- $profile->created = common_sql_now();
-
- try {
- $id = $profile->insert();
- } catch(Exception $e) {
- common_log(LOG_WARNING, $this->name . ' Couldn\'t insert profile - ' . $e->getMessage());
- }
-
- if (empty($id)) {
- common_log_db_error($profile, 'INSERT', __FILE__);
- $profile->query("ROLLBACK");
- return false;
- }
-
- // check for remote profile
-
- $remote_pro = Remote_profile::staticGet('uri', $profileurl);
-
- if (empty($remote_pro)) {
- $remote_pro = new Remote_profile();
-
- $remote_pro->id = $id;
- $remote_pro->uri = $profileurl;
- $remote_pro->created = common_sql_now();
-
- try {
- $rid = $remote_pro->insert();
- } catch (Exception $e) {
- common_log(LOG_WARNING, $this->name() . ' Couldn\'t save remote profile - ' . $e->getMessage());
- }
-
- if (empty($rid)) {
- common_log_db_error($profile, 'INSERT', __FILE__);
- $profile->query("ROLLBACK");
- return false;
- }
- }
-
- $profile->query("COMMIT");
-
- $this->saveAvatars($user, $id);
-
- return $profile;
- }
- }
-
- function checkAvatar($twitter_user, $profile)
- {
- global $config;
-
- $path_parts = pathinfo($twitter_user->profile_image_url);
-
- $newname = 'Twitter_' . $twitter_user->id . '_' .
- $path_parts['basename'];
-
- $oldname = $profile->getAvatar(48)->filename;
-
- if ($newname != $oldname) {
- common_debug($this->name() . ' - Avatar for Twitter user ' .
- "$profile->nickname has changed.");
- common_debug($this->name() . " - old: $oldname new: $newname");
-
- $this->updateAvatars($twitter_user, $profile);
- }
-
- if ($this->missingAvatarFile($profile)) {
- common_debug($this->name() . ' - Twitter user ' .
- $profile->nickname .
- ' is missing one or more local avatars.');
- common_debug($this->name() ." - old: $oldname new: $newname");
-
- $this->updateAvatars($twitter_user, $profile);
- }
- }
-
- function updateAvatars($twitter_user, $profile) {
-
- global $config;
-
- $path_parts = pathinfo($twitter_user->profile_image_url);
-
- $img_root = substr($path_parts['basename'], 0, -11);
- $ext = $path_parts['extension'];
- $mediatype = $this->getMediatype($ext);
-
- foreach (array('mini', 'normal', 'bigger') as $size) {
- $url = $path_parts['dirname'] . '/' .
- $img_root . '_' . $size . ".$ext";
- $filename = 'Twitter_' . $twitter_user->id . '_' .
- $img_root . "_$size.$ext";
-
- $this->updateAvatar($profile->id, $size, $mediatype, $filename);
- $this->fetchAvatar($url, $filename);
- }
- }
-
- function missingAvatarFile($profile) {
- foreach (array(24, 48, 73) as $size) {
- $filename = $profile->getAvatar($size)->filename;
- $avatarpath = Avatar::path($filename);
- if (file_exists($avatarpath) == FALSE) {
- return true;
- }
- }
- return false;
- }
-
- function getMediatype($ext)
- {
- $mediatype = null;
-
- switch (strtolower($ext)) {
- case 'jpg':
- $mediatype = 'image/jpg';
- break;
- case 'gif':
- $mediatype = 'image/gif';
- break;
- default:
- $mediatype = 'image/png';
- }
-
- return $mediatype;
- }
-
- function saveAvatars($user, $id)
- {
- global $config;
-
- $path_parts = pathinfo($user->profile_image_url);
- $ext = $path_parts['extension'];
- $end = strlen('_normal' . $ext);
- $img_root = substr($path_parts['basename'], 0, -($end+1));
- $mediatype = $this->getMediatype($ext);
-
- foreach (array('mini', 'normal', 'bigger') as $size) {
- $url = $path_parts['dirname'] . '/' .
- $img_root . '_' . $size . ".$ext";
- $filename = 'Twitter_' . $user->id . '_' .
- $img_root . "_$size.$ext";
-
- if ($this->fetchAvatar($url, $filename)) {
- $this->newAvatar($id, $size, $mediatype, $filename);
- } else {
- common_log(LOG_WARNING, $id() .
- " - Problem fetching Avatar: $url");
- }
- }
- }
-
- function updateAvatar($profile_id, $size, $mediatype, $filename) {
-
- common_debug($this->name() . " - Updating avatar: $size");
-
- $profile = Profile::staticGet($profile_id);
-
- if (empty($profile)) {
- common_debug($this->name() . " - Couldn't get profile: $profile_id!");
- return;
- }
-
- $sizes = array('mini' => 24, 'normal' => 48, 'bigger' => 73);
- $avatar = $profile->getAvatar($sizes[$size]);
-
- // Delete the avatar, if present
- if ($avatar) {
- $avatar->delete();
- }
-
- $this->newAvatar($profile->id, $size, $mediatype, $filename);
- }
-
- function newAvatar($profile_id, $size, $mediatype, $filename)
- {
- global $config;
-
- $avatar = new Avatar();
- $avatar->profile_id = $profile_id;
-
- switch($size) {
- case 'mini':
- $avatar->width = 24;
- $avatar->height = 24;
- break;
- case 'normal':
- $avatar->width = 48;
- $avatar->height = 48;
- break;
- default:
- // Note: Twitter's big avatars are a different size than
- // StatusNet's (StatusNet's = 96)
- $avatar->width = 73;
- $avatar->height = 73;
- }
-
- $avatar->original = 0; // we don't have the original
- $avatar->mediatype = $mediatype;
- $avatar->filename = $filename;
- $avatar->url = Avatar::url($filename);
-
- $avatar->created = common_sql_now();
-
- try {
- $id = $avatar->insert();
- } catch (Exception $e) {
- common_log(LOG_WARNING, $this->name() . ' Couldn\'t insert avatar - ' . $e->getMessage());
- }
-
- if (empty($id)) {
- common_log_db_error($avatar, 'INSERT', __FILE__);
- return null;
- }
-
- common_debug($this->name() .
- " - Saved new $size avatar for $profile_id.");
-
- return $id;
- }
-
- /**
- * Fetch a remote avatar image and save to local storage.
- *
- * @param string $url avatar source URL
- * @param string $filename bare local filename for download
- * @return bool true on success, false on failure
- */
- function fetchAvatar($url, $filename)
- {
- common_debug($this->name() . " - Fetching Twitter avatar: $url");
-
- $request = HTTPClient::start();
- $response = $request->get($url);
- if ($response->isOk()) {
- $avatarfile = Avatar::path($filename);
- $ok = file_put_contents($avatarfile, $response->getBody());
- if (!$ok) {
- common_log(LOG_WARNING, $this->name() .
- " - Couldn't open file $filename");
- return false;
- }
- } else {
- return false;
- }
-
- return true;
- }
-
- const URL = 1;
- const HASHTAG = 2;
- const MENTION = 3;
-
- function linkify($status)
- {
- $text = $status->text;
-
- if (empty($status->entities)) {
- common_log(LOG_WARNING, "No entities data for {$status->id}; trying to fake up links ourselves.");
- $text = common_replace_urls_callback($text, 'common_linkify');
- $text = preg_replace('/(^|\&quot\;|\'|\(|\[|\{|\s+)#([\pL\pN_\-\.]{1,64})/e', "'\\1#'.TwitterStatusFetcher::tagLink('\\2')", $text);
- $text = preg_replace('/(^|\s+)@([a-z0-9A-Z_]{1,64})/e', "'\\1@'.TwitterStatusFetcher::atLink('\\2')", $text);
- return $text;
- }
-
- // Move all the entities into order so we can
- // replace them in reverse order and thus
- // not mess up their indices
-
- $toReplace = array();
-
- if (!empty($status->entities->urls)) {
- foreach ($status->entities->urls as $url) {
- $toReplace[$url->indices[0]] = array(self::URL, $url);
- }
- }
-
- if (!empty($status->entities->hashtags)) {
- foreach ($status->entities->hashtags as $hashtag) {
- $toReplace[$hashtag->indices[0]] = array(self::HASHTAG, $hashtag);
- }
- }
-
- if (!empty($status->entities->user_mentions)) {
- foreach ($status->entities->user_mentions as $mention) {
- $toReplace[$mention->indices[0]] = array(self::MENTION, $mention);
- }
- }
-
- // sort in reverse order by key
-
- krsort($toReplace);
-
- foreach ($toReplace as $part) {
- list($type, $object) = $part;
- switch($type) {
- case self::URL:
- $linkText = $this->makeUrlLink($object);
- break;
- case self::HASHTAG:
- $linkText = $this->makeHashtagLink($object);
- break;
- case self::MENTION:
- $linkText = $this->makeMentionLink($object);
- break;
- default:
- continue;
- }
- $text = mb_substr($text, 0, $object->indices[0]) . $linkText . mb_substr($text, $object->indices[1]);
- }
- return $text;
- }
-
- function makeUrlLink($object)
- {
- return "<a href='{$object->url}' class='extlink'>{$object->url}</a>";
- }
-
- function makeHashtagLink($object)
- {
- return "#" . self::tagLink($object->text);
- }
-
- function makeMentionLink($object)
- {
- return "@".self::atLink($object->screen_name, $object->name);
- }
-
- static function tagLink($tag)
- {
- return "<a href='https://twitter.com/search?q=%23{$tag}' class='hashtag'>{$tag}</a>";
- }
-
- static function atLink($screenName, $fullName=null)
- {
- if (!empty($fullName)) {
- return "<a href='http://twitter.com/{$screenName}' title='{$fullName}'>{$screenName}</a>";
- } else {
- return "<a href='http://twitter.com/{$screenName}'>{$screenName}</a>";
- }
- }
-
- function saveStatusMentions($notice, $status)
- {
- $mentions = array();
-
- if (empty($status->entities) || empty($status->entities->user_mentions)) {
- return;
- }
-
- foreach ($status->entities->user_mentions as $mention) {
- $flink = Foreign_link::getByForeignID($mention->id, TWITTER_SERVICE);
- if (!empty($flink)) {
- $user = User::staticGet('id', $flink->user_id);
- if (!empty($user)) {
- $reply = new Reply();
- $reply->notice_id = $notice->id;
- $reply->profile_id = $user->id;
- common_log(LOG_INFO, __METHOD__ . ": saving reply: notice {$notice->id} to profile {$user->id}");
- $id = $reply->insert();
- }
- }
- }
- }
}
$id = null;
diff --git a/plugins/TwitterBridge/jsonstreamreader.php b/plugins/TwitterBridge/jsonstreamreader.php
new file mode 100644
index 000000000..f6572c9ee
--- /dev/null
+++ b/plugins/TwitterBridge/jsonstreamreader.php
@@ -0,0 +1,265 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brion Vibber <brion@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class OAuthData
+{
+ public $consumer_key, $consumer_secret, $token, $token_secret;
+}
+
+/**
+ *
+ */
+abstract class JsonStreamReader
+{
+ const CRLF = "\r\n";
+
+ public $id;
+ protected $socket = null;
+ protected $state = 'init'; // 'init', 'connecting', 'waiting', 'headers', 'active'
+
+ public function __construct()
+ {
+ $this->id = get_class($this) . '.' . substr(md5(mt_rand()), 0, 8);
+ }
+
+ /**
+ * Starts asynchronous connect operation...
+ *
+ * @fixme Can we do the open-socket fully async to? (need write select infrastructure)
+ *
+ * @param string $url
+ */
+ public function connect($url)
+ {
+ common_log(LOG_DEBUG, "$this->id opening connection to $url");
+
+ $scheme = parse_url($url, PHP_URL_SCHEME);
+ if ($scheme == 'http') {
+ $rawScheme = 'tcp';
+ } else if ($scheme == 'https') {
+ $rawScheme = 'ssl';
+ } else {
+ throw new ServerException('Invalid URL scheme for HTTP stream reader');
+ }
+
+ $host = parse_url($url, PHP_URL_HOST);
+ $port = parse_url($url, PHP_URL_PORT);
+ if (!$port) {
+ if ($scheme == 'https') {
+ $port = 443;
+ } else {
+ $port = 80;
+ }
+ }
+
+ $path = parse_url($url, PHP_URL_PATH);
+ $query = parse_url($url, PHP_URL_QUERY);
+ if ($query) {
+ $path .= '?' . $query;
+ }
+
+ $errno = $errstr = null;
+ $timeout = 5;
+ //$flags = STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT;
+ $flags = STREAM_CLIENT_CONNECT;
+ // @fixme add SSL params
+ $this->socket = stream_socket_client("$rawScheme://$host:$port", $errno, $errstr, $timeout, $flags);
+
+ $this->send($this->httpOpen($host, $path));
+
+ stream_set_blocking($this->socket, false);
+ $this->state = 'waiting';
+ }
+
+ /**
+ * Send some fun data off to the server.
+ *
+ * @param string $buffer
+ */
+ function send($buffer)
+ {
+ fwrite($this->socket, $buffer);
+ }
+
+ /**
+ * Read next packet of data from the socket.
+ *
+ * @return string
+ */
+ function read()
+ {
+ $buffer = fread($this->socket, 65536);
+ return $buffer;
+ }
+
+ /**
+ * Build HTTP request headers.
+ *
+ * @param string $host
+ * @param string $path
+ * @return string
+ */
+ protected function httpOpen($host, $path)
+ {
+ $lines = array(
+ "GET $path HTTP/1.1",
+ "Host: $host",
+ "User-Agent: StatusNet/" . STATUSNET_VERSION . " (TwitterBridgePlugin)",
+ "Connection: close",
+ "",
+ ""
+ );
+ return implode(self::CRLF, $lines);
+ }
+
+ /**
+ * Close the current connection, if open.
+ */
+ public function close()
+ {
+ if ($this->isConnected()) {
+ common_log(LOG_DEBUG, "$this->id closing connection.");
+ fclose($this->socket);
+ $this->socket = null;
+ }
+ }
+
+ /**
+ * Are we currently connected?
+ *
+ * @return boolean
+ */
+ public function isConnected()
+ {
+ return $this->socket !== null;
+ }
+
+ /**
+ * Send any sockets we're listening on to the IO manager
+ * to wait for input.
+ *
+ * @return array of resources
+ */
+ public function getSockets()
+ {
+ if ($this->isConnected()) {
+ return array($this->socket);
+ }
+ return array();
+ }
+
+ /**
+ * Take a chunk of input over the horn and go go go! :D
+ *
+ * @param string $buffer
+ */
+ public function handleInput($socket)
+ {
+ if ($this->socket !== $socket) {
+ throw new Exception('Got input from unexpected socket!');
+ }
+
+ try {
+ $buffer = $this->read();
+ $lines = explode(self::CRLF, $buffer);
+ foreach ($lines as $line) {
+ $this->handleLine($line);
+ }
+ } catch (Exception $e) {
+ common_log(LOG_ERR, "$this->id aborting connection due to error: " . $e->getMessage());
+ fclose($this->socket);
+ throw $e;
+ }
+ }
+
+ protected function handleLine($line)
+ {
+ switch ($this->state)
+ {
+ case 'waiting':
+ $this->handleLineWaiting($line);
+ break;
+ case 'headers':
+ $this->handleLineHeaders($line);
+ break;
+ case 'active':
+ $this->handleLineActive($line);
+ break;
+ default:
+ throw new Exception('Invalid state in handleLine: ' . $this->state);
+ }
+ }
+
+ /**
+ *
+ * @param <type> $line
+ */
+ protected function handleLineWaiting($line)
+ {
+ $bits = explode(' ', $line, 3);
+ if (count($bits) != 3) {
+ throw new Exception("Invalid HTTP response line: $line");
+ }
+
+ list($http, $status, $text) = $bits;
+ if (substr($http, 0, 5) != 'HTTP/') {
+ throw new Exception("Invalid HTTP response line chunk '$http': $line");
+ }
+ if ($status != '200') {
+ throw new Exception("Bad HTTP response code $status: $line");
+ }
+ common_log(LOG_DEBUG, "$this->id $line");
+ $this->state = 'headers';
+ }
+
+ protected function handleLineHeaders($line)
+ {
+ if ($line == '') {
+ $this->state = 'active';
+ common_log(LOG_DEBUG, "$this->id connection is active!");
+ } else {
+ common_log(LOG_DEBUG, "$this->id read HTTP header: $line");
+ $this->responseHeaders[] = $line;
+ }
+ }
+
+ protected function handleLineActive($line)
+ {
+ if ($line == "") {
+ // Server sends empty lines as keepalive.
+ return;
+ }
+ $data = json_decode($line);
+ if ($data) {
+ $this->handleJson($data);
+ } else {
+ common_log(LOG_ERR, "$this->id received bogus JSON data: " . var_export($line, true));
+ }
+ }
+
+ abstract protected function handleJson(stdClass $data);
+}
diff --git a/plugins/TwitterBridge/locale/TwitterBridge.pot b/plugins/TwitterBridge/locale/TwitterBridge.pot
index 2fc96dfe2..61a1b6fb1 100644
--- a/plugins/TwitterBridge/locale/TwitterBridge.pot
+++ b/plugins/TwitterBridge/locale/TwitterBridge.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,6 +16,13 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr ""
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr ""
@@ -37,7 +44,7 @@ msgid ""
msgstr ""
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr ""
@@ -49,11 +56,11 @@ msgstr ""
msgid "Twitter integration options"
msgstr ""
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr ""
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -354,17 +361,10 @@ msgstr ""
msgid "Twitter account disconnected."
msgstr ""
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr ""
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr ""
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr ""
diff --git a/plugins/TwitterBridge/locale/fr/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/fr/LC_MESSAGES/TwitterBridge.po
index 988b2577d..0192705db 100644
--- a/plugins/TwitterBridge/locale/fr/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/fr/LC_MESSAGES/TwitterBridge.po
@@ -10,18 +10,25 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:52+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:18+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr "RT @%1$s %2$s"
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr "Votre passerelle Twitter a été désactivée."
@@ -55,7 +62,7 @@ msgstr ""
"%3$s"
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -67,11 +74,11 @@ msgstr "Se connecter ou s’inscrire via Twitter"
msgid "Twitter integration options"
msgstr "Options d’intégration de Twitter"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Configuration de la passerelle Twitter"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -399,17 +406,10 @@ msgstr "Impossible de supprimer l’utilisateur Twitter."
msgid "Twitter account disconnected."
msgstr "Compte Twitter déconnecté."
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "Impossible de sauvegarder les préférences Twitter."
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "Préférences Twitter enregistrées."
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr "RT @%1$s %2$s"
diff --git a/plugins/TwitterBridge/locale/ia/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/ia/LC_MESSAGES/TwitterBridge.po
index c655e8e9c..de5b00c85 100644
--- a/plugins/TwitterBridge/locale/ia/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/ia/LC_MESSAGES/TwitterBridge.po
@@ -9,18 +9,25 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:52+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:18+0000\n"
"Language-Team: Interlingua <http://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr "RT @%1$s %2$s"
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr "Tu ponte a Twitter ha essite disactivate."
@@ -53,7 +60,7 @@ msgstr ""
"%3$s"
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -65,11 +72,11 @@ msgstr "Aperir session o crear conto usante Twitter"
msgid "Twitter integration options"
msgstr "Optiones de integration de Twitter"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Configuration del ponte a Twitter"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -388,17 +395,10 @@ msgstr "Non poteva remover le usator de Twitter."
msgid "Twitter account disconnected."
msgstr "Conto de Twitter disconnectite."
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "Non poteva salveguardar le preferentias de Twitter."
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "Preferentias de Twitter salveguardate."
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr "RT @%1$s %2$s"
diff --git a/plugins/TwitterBridge/locale/mk/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/mk/LC_MESSAGES/TwitterBridge.po
index 88f3a2eb2..31f166286 100644
--- a/plugins/TwitterBridge/locale/mk/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/mk/LC_MESSAGES/TwitterBridge.po
@@ -9,18 +9,25 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:52+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:21+0000\n"
"Language-Team: Macedonian <http://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr "RT @%1$s %2$s"
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr "Вашиот мост до Twitter е оневозможен."
@@ -53,7 +60,7 @@ msgstr ""
"%3$s"
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -65,11 +72,11 @@ msgstr "Најава или регистрација со Twitter"
msgid "Twitter integration options"
msgstr "Нагодувања за обединување со Twitter"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Нагодувања за мостот до Twitter"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -391,17 +398,10 @@ msgstr "Не можев да го отстранам корисникот на T
msgid "Twitter account disconnected."
msgstr "Врската со сметката на Twitter е прекината."
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "Не можев да ги зачувам нагодувањата за Twitter."
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "Нагодувањата за Twitter се зачувани."
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr "RT @%1$s %2$s"
diff --git a/plugins/TwitterBridge/locale/nl/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/nl/LC_MESSAGES/TwitterBridge.po
index 8e152f405..38d1e5472 100644
--- a/plugins/TwitterBridge/locale/nl/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/nl/LC_MESSAGES/TwitterBridge.po
@@ -9,18 +9,25 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:52+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:21+0000\n"
"Language-Team: Dutch <http://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr "RT @%1$s %2$s"
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr "Uw koppeling naar Twitter is uitgeschakeld."
@@ -55,7 +62,7 @@ msgstr ""
"%3$s"
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -67,11 +74,11 @@ msgstr "Aanmelden of registreren via Twitter"
msgid "Twitter integration options"
msgstr "Opties voor Twitterintegratie"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Instellingen voor Twitterkoppeling"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -398,17 +405,10 @@ msgstr "Het was niet mogelijk de Twittergebruiker te verwijderen."
msgid "Twitter account disconnected."
msgstr "De Twittergebruiker is ontkoppeld."
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "Het was niet mogelijk de Twittervoorkeuren op te slaan."
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "De Twitterinstellingen zijn opgeslagen."
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr "RT @%1$s %2$s"
diff --git a/plugins/TwitterBridge/locale/tr/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/tr/LC_MESSAGES/TwitterBridge.po
index 76e7e8ecb..3d25b3715 100644
--- a/plugins/TwitterBridge/locale/tr/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/tr/LC_MESSAGES/TwitterBridge.po
@@ -9,18 +9,25 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:52+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:21+0000\n"
"Language-Team: Turkish <http://translatewiki.net/wiki/Portal:tr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tr\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr ""
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr ""
@@ -42,7 +49,7 @@ msgid ""
msgstr ""
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -54,11 +61,11 @@ msgstr ""
msgid "Twitter integration options"
msgstr "Twitter entegrasyon seçenekleri"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Twitter köprü yapılandırması"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -372,17 +379,10 @@ msgstr "Twitter kullanıcısı silinemedi."
msgid "Twitter account disconnected."
msgstr "Twitter hesabı bağlantısı kesildi."
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "Twitter tercihleri kaydedilemedi."
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "Twitter tercihleriniz kaydedildi."
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr ""
diff --git a/plugins/TwitterBridge/locale/uk/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/uk/LC_MESSAGES/TwitterBridge.po
index 2ee15e69b..2eb66a514 100644
--- a/plugins/TwitterBridge/locale/uk/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/uk/LC_MESSAGES/TwitterBridge.po
@@ -9,19 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:52+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:21+0000\n"
"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=3; plural=(n%10 == 1 && n%100 != 11) ? 0 : ( (n%10 >= "
"2 && n%10 <= 4 && (n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr "RT @%1$s %2$s"
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr "Ваш місток до Twitter було відключено."
@@ -55,7 +62,7 @@ msgstr ""
"%3$s"
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -67,11 +74,11 @@ msgstr "Увійти або зареєструватись з Twitter"
msgid "Twitter integration options"
msgstr "Параметри інтеграції з Twitter"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Налаштування містка з Twitter"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -394,17 +401,10 @@ msgstr "Не вдається видалити користувача Twitter."
msgid "Twitter account disconnected."
msgstr "Акаунт Twitter від’єднано."
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "Не можу зберегти налаштування Twitter."
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "Налаштування Twitter збережено."
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr "RT @%1$s %2$s"
diff --git a/plugins/TwitterBridge/locale/zh_CN/LC_MESSAGES/TwitterBridge.po b/plugins/TwitterBridge/locale/zh_CN/LC_MESSAGES/TwitterBridge.po
index 54804a728..9208a4954 100644
--- a/plugins/TwitterBridge/locale/zh_CN/LC_MESSAGES/TwitterBridge.po
+++ b/plugins/TwitterBridge/locale/zh_CN/LC_MESSAGES/TwitterBridge.po
@@ -9,19 +9,26 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - TwitterBridge\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:53+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
+"PO-Revision-Date: 2010-11-04 18:29:22+0000\n"
"Language-Team: Simplified Chinese <http://translatewiki.net/wiki/Portal:zh-"
"hans>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:06+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-10-29 16:14:11+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76004); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: #out-statusnet-plugin-twitterbridge\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: twitterimport.php:113
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr "RT @%1$s %2$s"
+
#: twitter.php:349
msgid "Your Twitter bridge has been disabled."
msgstr "你的 Twitter bridge 已被禁用。"
@@ -52,7 +59,7 @@ msgstr ""
"%3$s"
#: TwitterBridgePlugin.php:151 TwitterBridgePlugin.php:174
-#: TwitterBridgePlugin.php:291 twitteradminpanel.php:52
+#: TwitterBridgePlugin.php:302 twitteradminpanel.php:52
msgid "Twitter"
msgstr "Twitter"
@@ -64,11 +71,11 @@ msgstr "使用 Twitter 登录或注册"
msgid "Twitter integration options"
msgstr "Twitter 整合选项"
-#: TwitterBridgePlugin.php:292
+#: TwitterBridgePlugin.php:303
msgid "Twitter bridge configuration"
msgstr "Twitter bridge 设置"
-#: TwitterBridgePlugin.php:316
+#: TwitterBridgePlugin.php:327
msgid ""
"The Twitter \"bridge\" plugin allows integration of a StatusNet instance "
"with <a href=\"http://twitter.com/\">Twitter</a>."
@@ -376,17 +383,10 @@ msgstr "无法删除 Twitter 用户。"
msgid "Twitter account disconnected."
msgstr "已取消 Twitter 帐号关联。"
-#: twittersettings.php:283 twittersettings.php:293
+#: twittersettings.php:283 twittersettings.php:294
msgid "Couldn't save Twitter preferences."
msgstr "无法保存 Twitter 参数设置。"
-#: twittersettings.php:297
+#: twittersettings.php:302
msgid "Twitter preferences saved."
msgstr "已保存 Twitter 参数设置。"
-
-#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
-#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: daemons/twitterstatusfetcher.php:264
-#, php-format
-msgid "RT @%1$s %2$s"
-msgstr "RT @%1$s %2$s"
diff --git a/plugins/TwitterBridge/scripts/fakestream.php b/plugins/TwitterBridge/scripts/fakestream.php
new file mode 100644
index 000000000..369688816
--- /dev/null
+++ b/plugins/TwitterBridge/scripts/fakestream.php
@@ -0,0 +1,147 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brion Vibber <brion@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+
+$shortoptions = 'n:';
+$longoptions = array('nick=','import','all');
+
+$helptext = <<<ENDOFHELP
+USAGE: fakestream.php -n <username>
+
+ -n --nick=<username> Local user whose Twitter timeline to watch
+ --import Experimental: run incoming messages through import
+ --all Experimental: run multiuser; requires nick be the app owner
+
+Attempts a User Stream connection to Twitter as the given user, dumping
+data as it comes.
+
+ENDOFHELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+if (have_option('n')) {
+ $nickname = get_option_value('n');
+} else if (have_option('nick')) {
+ $nickname = get_option_value('nickname');
+} else if (have_option('all')) {
+ $nickname = null;
+} else {
+ show_help($helptext);
+ exit(0);
+}
+
+/**
+ *
+ * @param User $user
+ * @return TwitterOAuthClient
+ */
+function twitterAuthForUser(User $user)
+{
+ $flink = Foreign_link::getByUserID($user->id,
+ TWITTER_SERVICE);
+ if (!$flink) {
+ throw new ServerException("No Twitter config for this user.");
+ }
+
+ $token = TwitterOAuthClient::unpackToken($flink->credentials);
+ if (!$token) {
+ throw new ServerException("No Twitter OAuth credentials for this user.");
+ }
+
+ return new TwitterOAuthClient($token->key, $token->secret);
+}
+
+/**
+ * Emulate the line-by-line output...
+ *
+ * @param Foreign_link $flink
+ * @param mixed $data
+ */
+function dumpMessage($flink, $data)
+{
+ $msg = prepMessage($flink, $data);
+ print json_encode($msg) . "\r\n";
+}
+
+function prepMessage($flink, $data)
+{
+ $msg->for_user = $flink->foreign_id;
+ $msg->message = $data;
+ return $msg;
+}
+
+if (have_option('all')) {
+ $users = array();
+
+ $flink = new Foreign_link();
+ $flink->service = TWITTER_SERVICE;
+ $flink->find();
+
+ while ($flink->fetch()) {
+ if (($flink->noticesync & FOREIGN_NOTICE_RECV) ==
+ FOREIGN_NOTICE_RECV) {
+ $users[] = $flink->user_id;
+ }
+ }
+} else {
+ $user = User::staticGet('nickname', $nickname);
+ $users = array($user->id);
+}
+
+$output = array();
+foreach ($users as $id) {
+ $user = User::staticGet('id', $id);
+ if (!$user) {
+ throw new Exception("No user for id $id");
+ }
+ $auth = twitterAuthForUser($user);
+ $flink = Foreign_link::getByUserID($user->id,
+ TWITTER_SERVICE);
+
+ $friends->friends = $auth->friendsIds();
+ dumpMessage($flink, $friends);
+
+ $timeline = $auth->statusesHomeTimeline();
+ foreach ($timeline as $status) {
+ $output[] = prepMessage($flink, $status);
+ }
+}
+
+usort($output, function($a, $b) {
+ if ($a->message->id < $b->message->id) {
+ return -1;
+ } else if ($a->message->id == $b->message->id) {
+ return 0;
+ } else {
+ return 1;
+ }
+});
+
+foreach ($output as $msg) {
+ print json_encode($msg) . "\r\n";
+}
diff --git a/plugins/TwitterBridge/scripts/streamtest.php b/plugins/TwitterBridge/scripts/streamtest.php
new file mode 100644
index 000000000..aad15fdea
--- /dev/null
+++ b/plugins/TwitterBridge/scripts/streamtest.php
@@ -0,0 +1,244 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brion Vibber <brion@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+
+$shortoptions = 'n:';
+$longoptions = array('nick=','import','all','apiroot=');
+
+$helptext = <<<ENDOFHELP
+USAGE: streamtest.php -n <username>
+
+ -n --nick=<username> Local user whose Twitter timeline to watch
+ --import Experimental: run incoming messages through import
+ --all Experimental: run multiuser; requires nick be the app owner
+ --apiroot=<url> Provide alternate streaming API root URL
+
+Attempts a User Stream connection to Twitter as the given user, dumping
+data as it comes.
+
+ENDOFHELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+require_once dirname(dirname(__FILE__)) . '/jsonstreamreader.php';
+require_once dirname(dirname(__FILE__)) . '/twitterstreamreader.php';
+
+if (have_option('n')) {
+ $nickname = get_option_value('n');
+} else if (have_option('nick')) {
+ $nickname = get_option_value('nickname');
+} else {
+ show_help($helptext);
+ exit(0);
+}
+
+/**
+ *
+ * @param User $user
+ * @return TwitterOAuthClient
+ */
+function twitterAuthForUser(User $user)
+{
+ $flink = Foreign_link::getByUserID($user->id,
+ TWITTER_SERVICE);
+ if (!$flink) {
+ throw new ServerException("No Twitter config for this user.");
+ }
+
+ $token = TwitterOAuthClient::unpackToken($flink->credentials);
+ if (!$token) {
+ throw new ServerException("No Twitter OAuth credentials for this user.");
+ }
+
+ return new TwitterOAuthClient($token->key, $token->secret);
+}
+
+function homeStreamForUser(User $user)
+{
+ $auth = twitterAuthForUser($user);
+ return new TwitterUserStream($auth);
+}
+
+function siteStreamForOwner(User $user)
+{
+ // The user we auth as must be the owner of the application.
+ $auth = twitterAuthForUser($user);
+
+ if (have_option('apiroot')) {
+ $stream = new TwitterSiteStream($auth, get_option_value('apiroot'));
+ } else {
+ $stream = new TwitterSiteStream($auth);
+ }
+
+ // Pull Twitter user IDs for all users we want to pull data for
+ $userIds = array();
+
+ $flink = new Foreign_link();
+ $flink->service = TWITTER_SERVICE;
+ $flink->find();
+
+ while ($flink->fetch()) {
+ if (($flink->noticesync & FOREIGN_NOTICE_RECV) ==
+ FOREIGN_NOTICE_RECV) {
+ $userIds[] = $flink->foreign_id;
+ }
+ }
+
+ $stream->followUsers($userIds);
+ return $stream;
+}
+
+
+$user = User::staticGet('nickname', $nickname);
+global $myuser;
+$myuser = $user;
+
+if (have_option('all')) {
+ $stream = siteStreamForOwner($user);
+} else {
+ $stream = homeStreamForUser($user);
+}
+
+
+$stream->hookEvent('raw', function($data, $context) {
+ common_log(LOG_INFO, json_encode($data) . ' for ' . json_encode($context));
+});
+$stream->hookEvent('friends', function($data, $context) {
+ printf("Friend list: %s\n", implode(', ', $data->friends));
+});
+$stream->hookEvent('favorite', function($data, $context) {
+ printf("%s favorited %s's notice: %s\n",
+ $data->source->screen_name,
+ $data->target->screen_name,
+ $data->target_object->text);
+});
+$stream->hookEvent('unfavorite', function($data, $context) {
+ printf("%s unfavorited %s's notice: %s\n",
+ $data->source->screen_name,
+ $data->target->screen_name,
+ $data->target_object->text);
+});
+$stream->hookEvent('follow', function($data, $context) {
+ printf("%s friended %s\n",
+ $data->source->screen_name,
+ $data->target->screen_name);
+});
+$stream->hookEvent('unfollow', function($data, $context) {
+ printf("%s unfriended %s\n",
+ $data->source->screen_name,
+ $data->target->screen_name);
+});
+$stream->hookEvent('delete', function($data, $context) {
+ printf("Deleted status notification: %s\n",
+ $data->status->id);
+});
+$stream->hookEvent('scrub_geo', function($data, $context) {
+ printf("Req to scrub geo data for user id %s up to status ID %s\n",
+ $data->user_id,
+ $data->up_to_status_id);
+});
+$stream->hookEvent('status', function($data, $context) {
+ printf("Received status update from %s: %s\n",
+ $data->user->screen_name,
+ $data->text);
+
+ if (have_option('import')) {
+ $importer = new TwitterImport();
+ printf("\timporting...");
+ $notice = $importer->importStatus($data);
+ if ($notice) {
+ global $myuser;
+ Inbox::insertNotice($myuser->id, $notice->id);
+ printf(" %s\n", $notice->id);
+ } else {
+ printf(" FAIL\n");
+ }
+ }
+});
+$stream->hookEvent('direct_message', function($data) {
+ printf("Direct message from %s to %s: %s\n",
+ $data->sender->screen_name,
+ $data->recipient->screen_name,
+ $data->text);
+});
+
+class TwitterManager extends IoManager
+{
+ function __construct(TwitterStreamReader $stream)
+ {
+ $this->stream = $stream;
+ }
+
+ function getSockets()
+ {
+ return $this->stream->getSockets();
+ }
+
+ function handleInput($data)
+ {
+ $this->stream->handleInput($data);
+ return true;
+ }
+
+ function start()
+ {
+ $this->stream->connect();
+ return true;
+ }
+
+ function finish()
+ {
+ $this->stream->close();
+ return true;
+ }
+
+ public static function get()
+ {
+ throw new Exception('not a singleton');
+ }
+}
+
+class TwitterStreamMaster extends IoMaster
+{
+ function __construct($id, $ioManager)
+ {
+ parent::__construct($id);
+ $this->ioManager = $ioManager;
+ }
+
+ /**
+ * Initialize IoManagers which are appropriate to this instance.
+ */
+ function initManagers()
+ {
+ $this->instantiate($this->ioManager);
+ }
+}
+
+$master = new TwitterStreamMaster('TwitterStream', new TwitterManager($stream));
+$master->init();
+$master->service();
diff --git a/plugins/TwitterBridge/tweetctlqueuehandler.php b/plugins/TwitterBridge/tweetctlqueuehandler.php
new file mode 100644
index 000000000..4c8bef463
--- /dev/null
+++ b/plugins/TwitterBridge/tweetctlqueuehandler.php
@@ -0,0 +1,59 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
+
+/**
+ * Queue handler to deal with incoming Twitter status updates, as retrieved by
+ * TwitterDaemon (twitterdaemon.php).
+ *
+ * The queue handler passes the status through TwitterImporter for import into the
+ * local database (if necessary), then adds the imported notice to the local inbox
+ * of the attached Twitter user.
+ *
+ * Warning: the way we do inbox distribution manually means that realtime, XMPP, etc
+ * don't work on Twitter-borne messages. When TwitterImporter is changed to handle
+ * that correctly, we'll only need to do this once...?
+ */
+class TweetCtlQueueHandler extends QueueHandler
+{
+ function transport()
+ {
+ return 'tweetctl';
+ }
+
+ function handle($data)
+ {
+ // A user has activated or deactivated their Twitter bridge
+ // import status.
+ $action = $data['action'];
+ $userId = $data['for_user'];
+
+ $tm = TwitterManager::get();
+ if ($action == 'start') {
+ $tm->startTwitterUser($userId);
+ } else if ($action == 'stop') {
+ $tm->stopTwitterUser($userId);
+ }
+
+ return true;
+ }
+}
diff --git a/plugins/TwitterBridge/tweetinqueuehandler.php b/plugins/TwitterBridge/tweetinqueuehandler.php
new file mode 100644
index 000000000..ff6b2cc86
--- /dev/null
+++ b/plugins/TwitterBridge/tweetinqueuehandler.php
@@ -0,0 +1,63 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+
+require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
+
+/**
+ * Queue handler to deal with incoming Twitter status updates, as retrieved by
+ * TwitterDaemon (twitterdaemon.php).
+ *
+ * The queue handler passes the status through TwitterImporter for import into the
+ * local database (if necessary), then adds the imported notice to the local inbox
+ * of the attached Twitter user.
+ *
+ * Warning: the way we do inbox distribution manually means that realtime, XMPP, etc
+ * don't work on Twitter-borne messages. When TwitterImporter is changed to handle
+ * that correctly, we'll only need to do this once...?
+ */
+class TweetInQueueHandler extends QueueHandler
+{
+ function transport()
+ {
+ return 'tweetin';
+ }
+
+ function handle($data)
+ {
+ // JSON object with Twitter data
+ $status = $data['status'];
+
+ // Twitter user ID this incoming data belongs to.
+ $receiver = $data['for_user'];
+
+ $importer = new TwitterImport();
+ $notice = $importer->importStatus($status);
+ if ($notice) {
+ $flink = Foreign_link::getByForeignID(TWITTER_SERVICE, $receiver);
+ if ($flink) {
+ // @fixme this should go through more regular channels?
+ Inbox::insertNotice($flink->user_id, $notice->id);
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/plugins/TwitterBridge/twitterimport.php b/plugins/TwitterBridge/twitterimport.php
new file mode 100644
index 000000000..07a9cf95f
--- /dev/null
+++ b/plugins/TwitterBridge/twitterimport.php
@@ -0,0 +1,651 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @author Julien C <chaumond@gmail.com>
+ * @author Brion Vibber <brion@status.net>
+ * @copyright 2009-2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
+
+/**
+ * Encapsulation of the Twitter status -> notice incoming bridge import.
+ * Is used by both the polling twitterstatusfetcher.php daemon, and the
+ * in-progress streaming import.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @author Julien C <chaumond@gmail.com>
+ * @author Brion Vibber <brion@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ * @link http://twitter.com/
+ */
+class TwitterImport
+{
+ public function importStatus($status)
+ {
+ // Hacktastic: filter out stuff coming from this StatusNet
+ $source = mb_strtolower(common_config('integration', 'source'));
+
+ if (preg_match("/$source/", mb_strtolower($status->source))) {
+ common_debug($this->name() . ' - Skipping import of status ' .
+ $status->id . ' with source ' . $source);
+ return null;
+ }
+
+ // Don't save it if the user is protected
+ // FIXME: save it but treat it as private
+ if ($status->user->protected) {
+ return null;
+ }
+
+ $notice = $this->saveStatus($status);
+
+ return $notice;
+ }
+
+ function name()
+ {
+ return get_class($this);
+ }
+
+ function saveStatus($status)
+ {
+ $profile = $this->ensureProfile($status->user);
+
+ if (empty($profile)) {
+ common_log(LOG_ERR, $this->name() .
+ ' - Problem saving notice. No associated Profile.');
+ return null;
+ }
+
+ $statusUri = $this->makeStatusURI($status->user->screen_name, $status->id);
+
+ // check to see if we've already imported the status
+ $n2s = Notice_to_status::staticGet('status_id', $status->id);
+
+ if (!empty($n2s)) {
+ common_log(
+ LOG_INFO,
+ $this->name() .
+ " - Ignoring duplicate import: {$status->id}"
+ );
+ return Notice::staticGet('id', $n2s->notice_id);
+ }
+
+ // If it's a retweet, save it as a repeat!
+ if (!empty($status->retweeted_status)) {
+ common_log(LOG_INFO, "Status {$status->id} is a retweet of {$status->retweeted_status->id}.");
+ $original = $this->saveStatus($status->retweeted_status);
+ if (empty($original)) {
+ return null;
+ } else {
+ $author = $original->getProfile();
+ // TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+ // TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+ $content = sprintf(_m('RT @%1$s %2$s'),
+ $author->nickname,
+ $original->content);
+
+ if (Notice::contentTooLong($content)) {
+ $contentlimit = Notice::maxContent();
+ $content = mb_substr($content, 0, $contentlimit - 4) . ' ...';
+ }
+
+ $repeat = Notice::saveNew($profile->id,
+ $content,
+ 'twitter',
+ array('repeat_of' => $original->id,
+ 'uri' => $statusUri,
+ 'is_local' => Notice::GATEWAY));
+ common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}");
+ Notice_to_status::saveNew($repeat->id, $status->id);
+ return $repeat;
+ }
+ }
+
+ $notice = new Notice();
+
+ $notice->profile_id = $profile->id;
+ $notice->uri = $statusUri;
+ $notice->url = $statusUri;
+ $notice->created = strftime(
+ '%Y-%m-%d %H:%M:%S',
+ strtotime($status->created_at)
+ );
+
+ $notice->source = 'twitter';
+
+ $notice->reply_to = null;
+
+ if (!empty($status->in_reply_to_status_id)) {
+ common_log(LOG_INFO, "Status {$status->id} is a reply to status {$status->in_reply_to_status_id}");
+ $n2s = Notice_to_status::staticGet('status_id', $status->in_reply_to_status_id);
+ if (empty($n2s)) {
+ common_log(LOG_INFO, "Couldn't find local notice for status {$status->in_reply_to_status_id}");
+ } else {
+ $reply = Notice::staticGet('id', $n2s->notice_id);
+ if (empty($reply)) {
+ common_log(LOG_INFO, "Couldn't find local notice for status {$status->in_reply_to_status_id}");
+ } else {
+ common_log(LOG_INFO, "Found local notice {$reply->id} for status {$status->in_reply_to_status_id}");
+ $notice->reply_to = $reply->id;
+ $notice->conversation = $reply->conversation;
+ }
+ }
+ }
+
+ if (empty($notice->conversation)) {
+ $conv = Conversation::create();
+ $notice->conversation = $conv->id;
+ common_log(LOG_INFO, "No known conversation for status {$status->id} so making a new one {$conv->id}.");
+ }
+
+ $notice->is_local = Notice::GATEWAY;
+
+ $notice->content = html_entity_decode($status->text, ENT_QUOTES, 'UTF-8');
+ $notice->rendered = $this->linkify($status);
+
+ if (Event::handle('StartNoticeSave', array(&$notice))) {
+
+ $id = $notice->insert();
+
+ if (!$id) {
+ common_log_db_error($notice, 'INSERT', __FILE__);
+ common_log(LOG_ERR, $this->name() .
+ ' - Problem saving notice.');
+ }
+
+ Event::handle('EndNoticeSave', array($notice));
+ }
+
+ Notice_to_status::saveNew($notice->id, $status->id);
+
+ $this->saveStatusMentions($notice, $status);
+
+ $notice->blowOnInsert();
+
+ return $notice;
+ }
+
+ /**
+ * Make an URI for a status.
+ *
+ * @param object $status status object
+ *
+ * @return string URI
+ */
+ function makeStatusURI($username, $id)
+ {
+ return 'http://twitter.com/'
+ . $username
+ . '/status/'
+ . $id;
+ }
+
+
+ /**
+ * Look up a Profile by profileurl field. Profile::staticGet() was
+ * not working consistently.
+ *
+ * @param string $nickname local nickname of the Twitter user
+ * @param string $profileurl the profile url
+ *
+ * @return mixed value the first Profile with that url, or null
+ */
+ function getProfileByUrl($nickname, $profileurl)
+ {
+ $profile = new Profile();
+ $profile->nickname = $nickname;
+ $profile->profileurl = $profileurl;
+ $profile->limit(1);
+
+ if ($profile->find()) {
+ $profile->fetch();
+ return $profile;
+ }
+
+ return null;
+ }
+
+ /**
+ * Check to see if this Twitter status has already been imported
+ *
+ * @param Profile $profile Twitter user's local profile
+ * @param string $statusUri URI of the status on Twitter
+ *
+ * @return mixed value a matching Notice or null
+ */
+ function checkDupe($profile, $statusUri)
+ {
+ $notice = new Notice();
+ $notice->uri = $statusUri;
+ $notice->profile_id = $profile->id;
+ $notice->limit(1);
+
+ if ($notice->find()) {
+ $notice->fetch();
+ return $notice;
+ }
+
+ return null;
+ }
+
+ function ensureProfile($user)
+ {
+ // check to see if there's already a profile for this user
+ $profileurl = 'http://twitter.com/' . $user->screen_name;
+ $profile = $this->getProfileByUrl($user->screen_name, $profileurl);
+
+ if (!empty($profile)) {
+ common_debug($this->name() .
+ " - Profile for $profile->nickname found.");
+
+ // Check to see if the user's Avatar has changed
+
+ $this->checkAvatar($user, $profile);
+ return $profile;
+
+ } else {
+ common_debug($this->name() . ' - Adding profile and remote profile ' .
+ "for Twitter user: $profileurl.");
+
+ $profile = new Profile();
+ $profile->query("BEGIN");
+
+ $profile->nickname = $user->screen_name;
+ $profile->fullname = $user->name;
+ $profile->homepage = $user->url;
+ $profile->bio = $user->description;
+ $profile->location = $user->location;
+ $profile->profileurl = $profileurl;
+ $profile->created = common_sql_now();
+
+ try {
+ $id = $profile->insert();
+ } catch(Exception $e) {
+ common_log(LOG_WARNING, $this->name() . ' Couldn\'t insert profile - ' . $e->getMessage());
+ }
+
+ if (empty($id)) {
+ common_log_db_error($profile, 'INSERT', __FILE__);
+ $profile->query("ROLLBACK");
+ return false;
+ }
+
+ // check for remote profile
+
+ $remote_pro = Remote_profile::staticGet('uri', $profileurl);
+
+ if (empty($remote_pro)) {
+ $remote_pro = new Remote_profile();
+
+ $remote_pro->id = $id;
+ $remote_pro->uri = $profileurl;
+ $remote_pro->created = common_sql_now();
+
+ try {
+ $rid = $remote_pro->insert();
+ } catch (Exception $e) {
+ common_log(LOG_WARNING, $this->name() . ' Couldn\'t save remote profile - ' . $e->getMessage());
+ }
+
+ if (empty($rid)) {
+ common_log_db_error($profile, 'INSERT', __FILE__);
+ $profile->query("ROLLBACK");
+ return false;
+ }
+ }
+
+ $profile->query("COMMIT");
+
+ $this->saveAvatars($user, $id);
+
+ return $profile;
+ }
+ }
+
+ function checkAvatar($twitter_user, $profile)
+ {
+ global $config;
+
+ $path_parts = pathinfo($twitter_user->profile_image_url);
+
+ $newname = 'Twitter_' . $twitter_user->id . '_' .
+ $path_parts['basename'];
+
+ $oldname = $profile->getAvatar(48)->filename;
+
+ if ($newname != $oldname) {
+ common_debug($this->name() . ' - Avatar for Twitter user ' .
+ "$profile->nickname has changed.");
+ common_debug($this->name() . " - old: $oldname new: $newname");
+
+ $this->updateAvatars($twitter_user, $profile);
+ }
+
+ if ($this->missingAvatarFile($profile)) {
+ common_debug($this->name() . ' - Twitter user ' .
+ $profile->nickname .
+ ' is missing one or more local avatars.');
+ common_debug($this->name() ." - old: $oldname new: $newname");
+
+ $this->updateAvatars($twitter_user, $profile);
+ }
+ }
+
+ function updateAvatars($twitter_user, $profile) {
+
+ global $config;
+
+ $path_parts = pathinfo($twitter_user->profile_image_url);
+
+ $img_root = substr($path_parts['basename'], 0, -11);
+ $ext = $path_parts['extension'];
+ $mediatype = $this->getMediatype($ext);
+
+ foreach (array('mini', 'normal', 'bigger') as $size) {
+ $url = $path_parts['dirname'] . '/' .
+ $img_root . '_' . $size . ".$ext";
+ $filename = 'Twitter_' . $twitter_user->id . '_' .
+ $img_root . "_$size.$ext";
+
+ $this->updateAvatar($profile->id, $size, $mediatype, $filename);
+ $this->fetchAvatar($url, $filename);
+ }
+ }
+
+ function missingAvatarFile($profile) {
+ foreach (array(24, 48, 73) as $size) {
+ $filename = $profile->getAvatar($size)->filename;
+ $avatarpath = Avatar::path($filename);
+ if (file_exists($avatarpath) == FALSE) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function getMediatype($ext)
+ {
+ $mediatype = null;
+
+ switch (strtolower($ext)) {
+ case 'jpg':
+ $mediatype = 'image/jpg';
+ break;
+ case 'gif':
+ $mediatype = 'image/gif';
+ break;
+ default:
+ $mediatype = 'image/png';
+ }
+
+ return $mediatype;
+ }
+
+ function saveAvatars($user, $id)
+ {
+ global $config;
+
+ $path_parts = pathinfo($user->profile_image_url);
+ $ext = $path_parts['extension'];
+ $end = strlen('_normal' . $ext);
+ $img_root = substr($path_parts['basename'], 0, -($end+1));
+ $mediatype = $this->getMediatype($ext);
+
+ foreach (array('mini', 'normal', 'bigger') as $size) {
+ $url = $path_parts['dirname'] . '/' .
+ $img_root . '_' . $size . ".$ext";
+ $filename = 'Twitter_' . $user->id . '_' .
+ $img_root . "_$size.$ext";
+
+ if ($this->fetchAvatar($url, $filename)) {
+ $this->newAvatar($id, $size, $mediatype, $filename);
+ } else {
+ common_log(LOG_WARNING, $id() .
+ " - Problem fetching Avatar: $url");
+ }
+ }
+ }
+
+ function updateAvatar($profile_id, $size, $mediatype, $filename) {
+
+ common_debug($this->name() . " - Updating avatar: $size");
+
+ $profile = Profile::staticGet($profile_id);
+
+ if (empty($profile)) {
+ common_debug($this->name() . " - Couldn't get profile: $profile_id!");
+ return;
+ }
+
+ $sizes = array('mini' => 24, 'normal' => 48, 'bigger' => 73);
+ $avatar = $profile->getAvatar($sizes[$size]);
+
+ // Delete the avatar, if present
+ if ($avatar) {
+ $avatar->delete();
+ }
+
+ $this->newAvatar($profile->id, $size, $mediatype, $filename);
+ }
+
+ function newAvatar($profile_id, $size, $mediatype, $filename)
+ {
+ global $config;
+
+ $avatar = new Avatar();
+ $avatar->profile_id = $profile_id;
+
+ switch($size) {
+ case 'mini':
+ $avatar->width = 24;
+ $avatar->height = 24;
+ break;
+ case 'normal':
+ $avatar->width = 48;
+ $avatar->height = 48;
+ break;
+ default:
+ // Note: Twitter's big avatars are a different size than
+ // StatusNet's (StatusNet's = 96)
+ $avatar->width = 73;
+ $avatar->height = 73;
+ }
+
+ $avatar->original = 0; // we don't have the original
+ $avatar->mediatype = $mediatype;
+ $avatar->filename = $filename;
+ $avatar->url = Avatar::url($filename);
+
+ $avatar->created = common_sql_now();
+
+ try {
+ $id = $avatar->insert();
+ } catch (Exception $e) {
+ common_log(LOG_WARNING, $this->name() . ' Couldn\'t insert avatar - ' . $e->getMessage());
+ }
+
+ if (empty($id)) {
+ common_log_db_error($avatar, 'INSERT', __FILE__);
+ return null;
+ }
+
+ common_debug($this->name() .
+ " - Saved new $size avatar for $profile_id.");
+
+ return $id;
+ }
+
+ /**
+ * Fetch a remote avatar image and save to local storage.
+ *
+ * @param string $url avatar source URL
+ * @param string $filename bare local filename for download
+ * @return bool true on success, false on failure
+ */
+ function fetchAvatar($url, $filename)
+ {
+ common_debug($this->name() . " - Fetching Twitter avatar: $url");
+
+ $request = HTTPClient::start();
+ $response = $request->get($url);
+ if ($response->isOk()) {
+ $avatarfile = Avatar::path($filename);
+ $ok = file_put_contents($avatarfile, $response->getBody());
+ if (!$ok) {
+ common_log(LOG_WARNING, $this->name() .
+ " - Couldn't open file $filename");
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+ return true;
+ }
+
+ const URL = 1;
+ const HASHTAG = 2;
+ const MENTION = 3;
+
+ function linkify($status)
+ {
+ $text = $status->text;
+
+ if (empty($status->entities)) {
+ common_log(LOG_WARNING, "No entities data for {$status->id}; trying to fake up links ourselves.");
+ $text = common_replace_urls_callback($text, 'common_linkify');
+ $text = preg_replace('/(^|\&quot\;|\'|\(|\[|\{|\s+)#([\pL\pN_\-\.]{1,64})/e', "'\\1#'.TwitterStatusFetcher::tagLink('\\2')", $text);
+ $text = preg_replace('/(^|\s+)@([a-z0-9A-Z_]{1,64})/e', "'\\1@'.TwitterStatusFetcher::atLink('\\2')", $text);
+ return $text;
+ }
+
+ // Move all the entities into order so we can
+ // replace them in reverse order and thus
+ // not mess up their indices
+
+ $toReplace = array();
+
+ if (!empty($status->entities->urls)) {
+ foreach ($status->entities->urls as $url) {
+ $toReplace[$url->indices[0]] = array(self::URL, $url);
+ }
+ }
+
+ if (!empty($status->entities->hashtags)) {
+ foreach ($status->entities->hashtags as $hashtag) {
+ $toReplace[$hashtag->indices[0]] = array(self::HASHTAG, $hashtag);
+ }
+ }
+
+ if (!empty($status->entities->user_mentions)) {
+ foreach ($status->entities->user_mentions as $mention) {
+ $toReplace[$mention->indices[0]] = array(self::MENTION, $mention);
+ }
+ }
+
+ // sort in reverse order by key
+
+ krsort($toReplace);
+
+ foreach ($toReplace as $part) {
+ list($type, $object) = $part;
+ switch($type) {
+ case self::URL:
+ $linkText = $this->makeUrlLink($object);
+ break;
+ case self::HASHTAG:
+ $linkText = $this->makeHashtagLink($object);
+ break;
+ case self::MENTION:
+ $linkText = $this->makeMentionLink($object);
+ break;
+ default:
+ continue;
+ }
+ $text = mb_substr($text, 0, $object->indices[0]) . $linkText . mb_substr($text, $object->indices[1]);
+ }
+ return $text;
+ }
+
+ function makeUrlLink($object)
+ {
+ return "<a href='{$object->url}' class='extlink'>{$object->url}</a>";
+ }
+
+ function makeHashtagLink($object)
+ {
+ return "#" . self::tagLink($object->text);
+ }
+
+ function makeMentionLink($object)
+ {
+ return "@".self::atLink($object->screen_name, $object->name);
+ }
+
+ static function tagLink($tag)
+ {
+ return "<a href='https://twitter.com/search?q=%23{$tag}' class='hashtag'>{$tag}</a>";
+ }
+
+ static function atLink($screenName, $fullName=null)
+ {
+ if (!empty($fullName)) {
+ return "<a href='http://twitter.com/{$screenName}' title='{$fullName}'>{$screenName}</a>";
+ } else {
+ return "<a href='http://twitter.com/{$screenName}'>{$screenName}</a>";
+ }
+ }
+
+ function saveStatusMentions($notice, $status)
+ {
+ $mentions = array();
+
+ if (empty($status->entities) || empty($status->entities->user_mentions)) {
+ return;
+ }
+
+ foreach ($status->entities->user_mentions as $mention) {
+ $flink = Foreign_link::getByForeignID($mention->id, TWITTER_SERVICE);
+ if (!empty($flink)) {
+ $user = User::staticGet('id', $flink->user_id);
+ if (!empty($user)) {
+ $reply = new Reply();
+ $reply->notice_id = $notice->id;
+ $reply->profile_id = $user->id;
+ common_log(LOG_INFO, __METHOD__ . ": saving reply: notice {$notice->id} to profile {$user->id}");
+ $id = $reply->insert();
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/TwitterBridge/twittersettings.php b/plugins/TwitterBridge/twittersettings.php
index 33c5eb65b..c169172b0 100644
--- a/plugins/TwitterBridge/twittersettings.php
+++ b/plugins/TwitterBridge/twittersettings.php
@@ -285,6 +285,7 @@ class TwittersettingsAction extends ConnectSettingsAction
}
$original = clone($flink);
+ $wasReceiving = (bool)($original->noticesync & FOREIGN_NOTICE_RECV);
$flink->set_flags($noticesend, $noticerecv, $replysync, $friendsync);
$result = $flink->update($original);
@@ -294,6 +295,19 @@ class TwittersettingsAction extends ConnectSettingsAction
return;
}
+ if ($wasReceiving xor $noticerecv) {
+ $this->notifyDaemon($flink->foreign_id, $noticerecv);
+ }
+
$this->showForm(_m('Twitter preferences saved.'), true);
}
+
+ /**
+ * Tell the import daemon that we've updated a user's receive status.
+ */
+ function notifyDaemon($twitterUserId, $receiving)
+ {
+ // todo... should use control signals rather than queues
+ }
+
}
diff --git a/plugins/TwitterBridge/twitterstreamreader.php b/plugins/TwitterBridge/twitterstreamreader.php
new file mode 100644
index 000000000..5b0613bc4
--- /dev/null
+++ b/plugins/TwitterBridge/twitterstreamreader.php
@@ -0,0 +1,285 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Brion Vibber <brion@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+/**
+ * Base class for reading Twitter's User Streams and Site Streams
+ * real-time streaming APIs.
+ *
+ * Caller can hook event callbacks for various types of messages;
+ * the data from the stream and some context info will be passed
+ * on to the callbacks.
+ */
+abstract class TwitterStreamReader extends JsonStreamReader
+{
+ protected $callbacks = array();
+
+ function __construct(TwitterOAuthClient $auth, $baseUrl)
+ {
+ $this->baseUrl = $baseUrl;
+ $this->oauth = $auth;
+ }
+
+ public function connect($method, $params=array())
+ {
+ $url = $this->oAuthUrl($this->baseUrl . '/' . $method, $params);
+ return parent::connect($url);
+ }
+
+ /**
+ * Sign our target URL with OAuth auth stuff.
+ *
+ * @param string $url
+ * @param array $params
+ * @return string
+ */
+ protected function oAuthUrl($url, $params=array())
+ {
+ // In an ideal world this would be better encapsulated. :)
+ $request = OAuthRequest::from_consumer_and_token($this->oauth->consumer,
+ $this->oauth->token, 'GET', $url, $params);
+ $request->sign_request($this->oauth->sha1_method,
+ $this->oauth->consumer, $this->oauth->token);
+
+ return $request->to_url();
+ }
+
+ /**
+ * Add an event callback to receive notifications when things come in
+ * over the wire.
+ *
+ * Callbacks should be in the form: function(object $data, array $context)
+ * where $context may list additional data on some streams, such as the
+ * user to whom the message should be routed.
+ *
+ * Available events:
+ *
+ * Messaging:
+ *
+ * 'status': $data contains a status update in standard Twitter JSON format.
+ * $data->user: sending user in standard Twitter JSON format.
+ * $data->text... etc
+ *
+ * 'direct_message': $data contains a direct message in standard Twitter JSON format.
+ * $data->sender: sending user in standard Twitter JSON format.
+ * $data->recipient: receiving user in standard Twitter JSON format.
+ * $data->text... etc
+ *
+ *
+ * Out of band events:
+ *
+ * 'follow': User has either started following someone, or is being followed.
+ * $data->source: following user in standard Twitter JSON format.
+ * $data->target: followed user in standard Twitter JSON format.
+ *
+ * 'favorite': Someone has favorited a status update.
+ * $data->source: user doing the favoriting, in standard Twitter JSON format.
+ * $data->target: user whose status was favorited, in standard Twitter JSON format.
+ * $data->target_object: the favorited status update in standard Twitter JSON format.
+ *
+ * 'unfavorite': Someone has unfavorited a status update.
+ * $data->source: user doing the unfavoriting, in standard Twitter JSON format.
+ * $data->target: user whose status was unfavorited, in standard Twitter JSON format.
+ * $data->target_object: the unfavorited status update in standard Twitter JSON format.
+ *
+ *
+ * Meta information:
+ *
+ * 'friends':
+ * $data->friends: array of user IDs of the current user's friends.
+ *
+ * 'delete': Advisory that a Twitter status has been deleted; nice clients
+ * should follow suit.
+ * $data->id: ID of status being deleted
+ * $data->user_id: ID of its owning user
+ *
+ * 'scrub_geo': Advisory that a user is clearing geo data from their status
+ * stream; nice clients should follow suit.
+ * $data->user_id: ID of user
+ * $data->up_to_status_id: any notice older than this should be scrubbed.
+ *
+ * 'limit': Advisory that tracking has hit a resource limit.
+ * $data->track
+ *
+ * 'raw': receives the full JSON data for all message types.
+ *
+ * @param string $event
+ * @param callable $callback
+ */
+ public function hookEvent($event, $callback)
+ {
+ $this->callbacks[$event][] = $callback;
+ }
+
+ /**
+ * Call event handler callbacks for the given event.
+ *
+ * @param string $event
+ * @param mixed $arg1 ... one or more params to pass on
+ */
+ protected function fireEvent($event, $arg1)
+ {
+ if (array_key_exists($event, $this->callbacks)) {
+ $args = array_slice(func_get_args(), 1);
+ foreach ($this->callbacks[$event] as $callback) {
+ call_user_func_array($callback, $args);
+ }
+ }
+ }
+
+ protected function handleJson(stdClass $data)
+ {
+ $this->routeMessage($data);
+ }
+
+ abstract protected function routeMessage(stdClass $data);
+
+ /**
+ * Send the decoded JSON object out to any event listeners.
+ *
+ * @param array $data
+ * @param array $context optional additional context data to pass on
+ */
+ protected function handleMessage(stdClass $data, array $context=array())
+ {
+ $this->fireEvent('raw', $data, $context);
+
+ if (isset($data->text)) {
+ $this->fireEvent('status', $data, $context);
+ return;
+ }
+ if (isset($data->event)) {
+ $this->fireEvent($data->event, $data, $context);
+ return;
+ }
+ if (isset($data->friends)) {
+ $this->fireEvent('friends', $data, $context);
+ }
+
+ $knownMeta = array('delete', 'scrub_geo', 'limit', 'direct_message');
+ foreach ($knownMeta as $key) {
+ if (isset($data->$key)) {
+ $this->fireEvent($key, $data->$key, $context);
+ return;
+ }
+ }
+ }
+}
+
+/**
+ * Multiuser stream listener for Twitter Site Streams API
+ * http://dev.twitter.com/pages/site_streams
+ *
+ * The site streams API allows listening to updates for multiple users.
+ * Pass in the user IDs to listen to in via followUser() -- note they
+ * must each have a valid OAuth token for the application ID we're
+ * connecting as.
+ *
+ * You'll need to be connecting with the auth keys for the user who
+ * owns the application registration.
+ *
+ * The user each message is destined for will be passed to event handlers
+ * in $context['for_user_id'].
+ */
+class TwitterSiteStream extends TwitterStreamReader
+{
+ protected $userIds;
+
+ public function __construct(TwitterOAuthClient $auth, $baseUrl='http://betastream.twitter.com')
+ {
+ parent::__construct($auth, $baseUrl);
+ }
+
+ public function connect($method='2b/site.json')
+ {
+ $params = array();
+ if ($this->userIds) {
+ $params['follow'] = implode(',', $this->userIds);
+ }
+ return parent::connect($method, $params);
+ }
+
+ /**
+ * Set the users whose home streams should be pulled.
+ * They all must have valid oauth tokens for this application.
+ *
+ * Must be called before connect().
+ *
+ * @param array $userIds
+ */
+ function followUsers($userIds)
+ {
+ $this->userIds = $userIds;
+ }
+
+ /**
+ * Each message in the site stream tells us which user ID it should be
+ * routed to; we'll need that to let the caller know what to do.
+ *
+ * @param array $data
+ */
+ function routeMessage(stdClass $data)
+ {
+ $context = array(
+ 'source' => 'sitestream',
+ 'for_user' => $data->for_user
+ );
+ parent::handleMessage($data->message, $context);
+ }
+}
+
+/**
+ * Stream listener for Twitter User Streams API
+ * http://dev.twitter.com/pages/user_streams
+ *
+ * This will pull the home stream and additional events just for the user
+ * we've authenticated as.
+ */
+class TwitterUserStream extends TwitterStreamReader
+{
+ public function __construct(TwitterOAuthClient $auth, $baseUrl='https://userstream.twitter.com')
+ {
+ parent::__construct($auth, $baseUrl);
+ }
+
+ public function connect($method='2/user.json')
+ {
+ return parent::connect($method);
+ }
+
+ /**
+ * Each message in the user stream is just ready to go.
+ *
+ * @param array $data
+ */
+ function routeMessage(stdClass $data)
+ {
+ $context = array(
+ 'source' => 'userstream'
+ );
+ parent::handleMessage($data, $context);
+ }
+}
diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php
index e6ad3e37d..fc7698841 100644
--- a/plugins/UserFlag/UserFlagPlugin.php
+++ b/plugins/UserFlag/UserFlagPlugin.php
@@ -128,25 +128,9 @@ class UserFlagPlugin extends Plugin
*/
function onEndProfilePageActionsElements(&$action, $profile)
{
- $user = common_current_user();
-
- if (!empty($user) && ($user->id != $profile->id)) {
-
- $action->elementStart('li', 'entity_flag');
-
- if (User_flag_profile::exists($profile->id, $user->id)) {
- // @todo FIXME: Add a title explaining what 'flagged' means?
- // TRANS: Message added to a profile if it has been flagged for review.
- $action->element('p', 'flagged', _('Flagged'));
- } else {
- $form = new FlagProfileForm($action, $profile,
- array('action' => 'showstream',
- 'nickname' => $profile->nickname));
- $form->show();
- }
-
- $action->elementEnd('li');
- }
+ $this->showFlagButton($action, $profile,
+ array('action' => 'showstream',
+ 'nickname' => $profile->nickname));
return true;
}
@@ -160,22 +144,40 @@ class UserFlagPlugin extends Plugin
*/
function onEndProfileListItemActionElements($item)
{
- $user = common_current_user();
+ list($action, $args) = $item->action->returnToArgs();
+ $args['action'] = $action;
+ $this->showFlagButton($item->action, $item->profile, $args);
+
+ return true;
+ }
- if (!empty($user)) {
+ /**
+ * Actually output a flag button. If the target profile has already been
+ * flagged by the current user, a null-action faux button is shown.
+ *
+ * @param Action $action
+ * @param Profile $profile
+ * @param array $returnToArgs
+ */
+ protected function showFlagButton($action, $profile, $returnToArgs)
+ {
+ $user = common_current_user();
- list($action, $args) = $item->action->returnToArgs();
+ if (!empty($user) && ($user->id != $profile->id)) {
- $args['action'] = $action;
+ $action->elementStart('li', 'entity_flag');
- $form = new FlagProfileForm($item->action, $item->profile, $args);
+ if (User_flag_profile::exists($profile->id, $user->id)) {
+ // @todo FIXME: Add a title explaining what 'flagged' means?
+ // TRANS: Message added to a profile if it has been flagged for review.
+ $action->element('p', 'flagged', _m('Flagged'));
+ } else {
+ $form = new FlagProfileForm($action, $profile, $returnToArgs);
+ $form->show();
+ }
- $item->action->elementStart('li', 'entity_flag');
- $form->show();
- $item->action->elementEnd('li');
+ $action->elementEnd('li');
}
-
- return true;
}
/**
diff --git a/plugins/UserFlag/User_flag_profile.php b/plugins/UserFlag/User_flag_profile.php
index 69fe0f356..f4e9844df 100644
--- a/plugins/UserFlag/User_flag_profile.php
+++ b/plugins/UserFlag/User_flag_profile.php
@@ -79,21 +79,36 @@ class User_flag_profile extends Memcached_DataObject
/**
* return key definitions for DB_DataObject
*
- * @return array key definitions
+ * @return array of key names
*/
function keys()
{
- return array('profile_id' => 'K', 'user_id' => 'K');
+ return array_keys($this->keyTypes());
}
/**
* return key definitions for DB_DataObject
*
- * @return array key definitions
+ * @return array map of key definitions
*/
function keyTypes()
{
- return $this->keys();
+ return array('profile_id' => 'K', 'user_id' => 'K');
+ }
+
+ /**
+ * Magic formula for non-autoincrementing integer primary keys
+ *
+ * If a table has a single integer column as its primary key, DB_DataObject
+ * assumes that the column is auto-incrementing and makes a sequence table
+ * to do this incrementation. Since we don't need this for our class, we
+ * overload this method and return the magic formula that DB_DataObject needs.
+ *
+ * @return array magic three-false array that stops auto-incrementing.
+ */
+ function sequenceKey()
+ {
+ return array(false, false, false);
}
/**
diff --git a/plugins/UserFlag/flagprofile.php b/plugins/UserFlag/flagprofile.php
index 283eea40c..7096d3748 100644
--- a/plugins/UserFlag/flagprofile.php
+++ b/plugins/UserFlag/flagprofile.php
@@ -60,13 +60,6 @@ class FlagprofileAction extends ProfileFormAction
assert(!empty($user)); // checked above
assert(!empty($this->profile)); // checked above
- if (User_flag_profile::exists($this->profile->id,
- $user->id)) {
- // TRANS: Client error when setting flag that has already been set for a profile.
- $this->clientError(_m('Flag already exists.'));
- return false;
- }
-
return true;
}
@@ -104,7 +97,13 @@ class FlagprofileAction extends ProfileFormAction
// throws an exception on error
- User_flag_profile::create($user->id, $this->profile->id);
+ if (User_flag_profile::exists($this->profile->id,
+ $user->id)) {
+ // We'll return to the profile page (or return the updated AJAX form)
+ // showing the current state, so no harm done.
+ } else {
+ User_flag_profile::create($user->id, $this->profile->id);
+ }
if ($this->boolean('ajax')) {
$this->ajaxResults();
diff --git a/plugins/UserFlag/locale/UserFlag.pot b/plugins/UserFlag/locale/UserFlag.pot
index decb06d04..c70c7988e 100644
--- a/plugins/UserFlag/locale/UserFlag.pot
+++ b/plugins/UserFlag/locale/UserFlag.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
+"POT-Creation-Date: 2010-11-04 18:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -44,23 +44,19 @@ msgstr[1] ""
msgid "Flagged by %s"
msgstr ""
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr ""
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr ""
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr ""
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -93,7 +89,7 @@ msgid "Flag profile for review."
msgstr ""
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr ""
diff --git a/plugins/UserFlag/locale/fr/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/fr/LC_MESSAGES/UserFlag.po
index 277ce5650..f2c84969a 100644
--- a/plugins/UserFlag/locale/fr/LC_MESSAGES/UserFlag.po
+++ b/plugins/UserFlag/locale/fr/LC_MESSAGES/UserFlag.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - UserFlag\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:54+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:20+0000\n"
"Language-Team: French <http://translatewiki.net/wiki/Portal:fr>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-11-05 00:29:34+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: #out-statusnet-plugin-userflag\n"
@@ -48,23 +48,19 @@ msgstr[1] "Marqué par %1$s et %2$d autres"
msgid "Flagged by %s"
msgstr "Marqué par %s"
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr "Déjà marqué."
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr "Marqué pour vérification"
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr "Marqué"
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -99,7 +95,7 @@ msgid "Flag profile for review."
msgstr "Marquer le profil pour vérification."
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr "Impossible de marquer le profil « %d » pour vérification."
diff --git a/plugins/UserFlag/locale/ia/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/ia/LC_MESSAGES/UserFlag.po
index d58458b05..2917da732 100644
--- a/plugins/UserFlag/locale/ia/LC_MESSAGES/UserFlag.po
+++ b/plugins/UserFlag/locale/ia/LC_MESSAGES/UserFlag.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - UserFlag\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:54+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:20+0000\n"
"Language-Team: Interlingua <http://translatewiki.net/wiki/Portal:ia>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-11-05 00:29:34+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: #out-statusnet-plugin-userflag\n"
@@ -48,23 +48,19 @@ msgstr[1] "Marcate per %1$s e %2$d alteres"
msgid "Flagged by %s"
msgstr "Marcate per %s"
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr "Le marca ja existe."
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr "Marcate pro revision"
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr "Marcate"
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -98,7 +94,7 @@ msgid "Flag profile for review."
msgstr "Marcar profilo pro revision."
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr "Non poteva marcar profilo \"%d\" pro revision."
diff --git a/plugins/UserFlag/locale/mk/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/mk/LC_MESSAGES/UserFlag.po
index ab9c1b2e4..8d934141e 100644
--- a/plugins/UserFlag/locale/mk/LC_MESSAGES/UserFlag.po
+++ b/plugins/UserFlag/locale/mk/LC_MESSAGES/UserFlag.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - UserFlag\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:54+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:20+0000\n"
"Language-Team: Macedonian <http://translatewiki.net/wiki/Portal:mk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-11-05 00:29:34+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: #out-statusnet-plugin-userflag\n"
@@ -48,23 +48,19 @@ msgstr[1] "Означено од %1$s и уште %2$d други"
msgid "Flagged by %s"
msgstr "Означено од %s"
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr "Ознаката веќе постои."
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr "Означено за преглед"
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr "Означено"
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -99,7 +95,7 @@ msgid "Flag profile for review."
msgstr "Означи профил за преглед."
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr "Не можев да го означам профилот „%d“ за преглед."
diff --git a/plugins/UserFlag/locale/nl/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/nl/LC_MESSAGES/UserFlag.po
index 115b63433..766776a9e 100644
--- a/plugins/UserFlag/locale/nl/LC_MESSAGES/UserFlag.po
+++ b/plugins/UserFlag/locale/nl/LC_MESSAGES/UserFlag.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - UserFlag\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:54+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:20+0000\n"
"Language-Team: Dutch <http://translatewiki.net/wiki/Portal:nl>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-11-05 00:29:34+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: #out-statusnet-plugin-userflag\n"
@@ -48,23 +48,19 @@ msgstr[1] "Gemarkeerd door %1$s en %2$d anderen"
msgid "Flagged by %s"
msgstr "Gemarkeerd door %s"
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr "De markering bestaat al."
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr "Gemarkeerd voor controle"
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr "Gemarkeerd"
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -100,7 +96,7 @@ msgid "Flag profile for review."
msgstr "Profiel voor controle markeren"
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr "Het was niet mogelijk het profiel \"%d\" voor controle te markeren."
diff --git a/plugins/UserFlag/locale/pt/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/pt/LC_MESSAGES/UserFlag.po
index c476cf2f7..ea71be24e 100644
--- a/plugins/UserFlag/locale/pt/LC_MESSAGES/UserFlag.po
+++ b/plugins/UserFlag/locale/pt/LC_MESSAGES/UserFlag.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - UserFlag\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:54+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:20+0000\n"
"Language-Team: Portuguese <http://translatewiki.net/wiki/Portal:pt>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-11-05 00:29:34+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt\n"
"X-Message-Group: #out-statusnet-plugin-userflag\n"
@@ -48,23 +48,19 @@ msgstr[1] "Sinalizado por %1$s e mais %2$d pessoas"
msgid "Flagged by %s"
msgstr "Sinalizado por %s"
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr "Já existe uma sinalização."
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr "Sinalizado para análise"
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr "Sinalizado"
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -99,7 +95,7 @@ msgid "Flag profile for review."
msgstr "Sinalizar perfil para análise."
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr "Não foi possível sinalizar o perfil \"%d\" para análise."
diff --git a/plugins/UserFlag/locale/uk/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/uk/LC_MESSAGES/UserFlag.po
index c6dd6e40d..ae0e9b03f 100644
--- a/plugins/UserFlag/locale/uk/LC_MESSAGES/UserFlag.po
+++ b/plugins/UserFlag/locale/uk/LC_MESSAGES/UserFlag.po
@@ -9,13 +9,13 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet - UserFlag\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-10-27 23:43+0000\n"
-"PO-Revision-Date: 2010-10-27 23:47:54+0000\n"
+"POT-Creation-Date: 2010-11-07 20:25+0000\n"
+"PO-Revision-Date: 2010-11-07 20:29:20+0000\n"
"Language-Team: Ukrainian <http://translatewiki.net/wiki/Portal:uk>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-10-23 19:01:50+0000\n"
-"X-Generator: MediaWiki 1.17alpha (r75596); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2010-11-05 00:29:34+0000\n"
+"X-Generator: MediaWiki 1.17alpha (r76266); Translate extension (2010-09-17)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: #out-statusnet-plugin-userflag\n"
@@ -50,23 +50,19 @@ msgstr[2] "Відмічено %1$s та ще %2$d користувачами"
msgid "Flagged by %s"
msgstr "Відмічено %s"
-#. TRANS: Client error when setting flag that has already been set for a profile.
-#: flagprofile.php:66
-msgid "Flag already exists."
-msgstr "Відмітка вже стоїть."
-
#. TRANS: AJAX form title for a flagged profile.
-#: flagprofile.php:126
+#: flagprofile.php:125
msgid "Flagged for review"
msgstr "Відмічені для розгляду"
#. TRANS: Body text for AJAX form when a profile has been flagged for review.
-#: flagprofile.php:130
+#. TRANS: Message added to a profile if it has been flagged for review.
+#: flagprofile.php:129 UserFlagPlugin.php:173
msgid "Flagged"
msgstr "Відмічені"
#. TRANS: Plugin description.
-#: UserFlagPlugin.php:292
+#: UserFlagPlugin.php:294
msgid ""
"This plugin allows flagging of profiles for review and reviewing flagged "
"profiles."
@@ -101,7 +97,7 @@ msgid "Flag profile for review."
msgstr "Відмітити профіль для розгляду."
#. TRANS: Server exception.
-#: User_flag_profile.php:145
+#: User_flag_profile.php:160
#, php-format
msgid "Couldn't flag profile \"%d\" for review."
msgstr "Не вдалося відмітити профіль «%d» для розгляду."