]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'jqueryui' into 1.0.x
authorEvan Prodromou <evan@status.net>
Wed, 16 Mar 2011 13:56:26 +0000 (09:56 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 16 Mar 2011 13:56:26 +0000 (09:56 -0400)
Conflicts:
lib/action.php

148 files changed:
EVENTS.txt
actions/apigrouplist.php
actions/apitimelineuser.php
actions/newapplication.php
actions/noticesearch.php
actions/passwordsettings.php
actions/pathsadminpanel.php
actions/peopletag.php
actions/plugindisable.php
actions/pluginenable.php
actions/pluginsadminpanel.php
actions/postnotice.php
actions/public.php
actions/publicxrds.php
actions/shownotice.php
classes/Notice.php
favicon.ico
js/util.js
js/util.min.js
lib/action.php
lib/activityobject.php
lib/info.php
lib/microappplugin.php
lib/noticeform.php
lib/noticeplaceholderform.php [new file with mode: 0644]
lib/personalgroupnav.php
lib/searchaction.php
lib/threadednoticelist.php
locale/ar/LC_MESSAGES/statusnet.po
locale/arz/LC_MESSAGES/statusnet.po
locale/bg/LC_MESSAGES/statusnet.po
locale/br/LC_MESSAGES/statusnet.po
locale/ca/LC_MESSAGES/statusnet.po
locale/cs/LC_MESSAGES/statusnet.po
locale/de/LC_MESSAGES/statusnet.po
locale/en_GB/LC_MESSAGES/statusnet.po
locale/eo/LC_MESSAGES/statusnet.po
locale/es/LC_MESSAGES/statusnet.po
locale/fa/LC_MESSAGES/statusnet.po
locale/fi/LC_MESSAGES/statusnet.po
locale/fr/LC_MESSAGES/statusnet.po
locale/fur/LC_MESSAGES/statusnet.po
locale/gl/LC_MESSAGES/statusnet.po
locale/hsb/LC_MESSAGES/statusnet.po
locale/hu/LC_MESSAGES/statusnet.po
locale/ia/LC_MESSAGES/statusnet.po
locale/it/LC_MESSAGES/statusnet.po
locale/ja/LC_MESSAGES/statusnet.po
locale/ka/LC_MESSAGES/statusnet.po
locale/ko/LC_MESSAGES/statusnet.po
locale/mk/LC_MESSAGES/statusnet.po
locale/ml/LC_MESSAGES/statusnet.po
locale/nb/LC_MESSAGES/statusnet.po
locale/nl/LC_MESSAGES/statusnet.po
locale/pl/LC_MESSAGES/statusnet.po
locale/pt/LC_MESSAGES/statusnet.po
locale/pt_BR/LC_MESSAGES/statusnet.po
locale/ru/LC_MESSAGES/statusnet.po
locale/statusnet.pot
locale/sv/LC_MESSAGES/statusnet.po
locale/te/LC_MESSAGES/statusnet.po
locale/tr/LC_MESSAGES/statusnet.po
locale/uk/LC_MESSAGES/statusnet.po
locale/zh_CN/LC_MESSAGES/statusnet.po
plugins/AccountManager/locale/de/LC_MESSAGES/AccountManager.po [new file with mode: 0644]
plugins/Aim/locale/sv/LC_MESSAGES/Aim.po [new file with mode: 0644]
plugins/Autocomplete/locale/Autocomplete.pot
plugins/Bookmark/locale/Bookmark.pot
plugins/Bookmark/locale/ia/LC_MESSAGES/Bookmark.po
plugins/Bookmark/locale/mk/LC_MESSAGES/Bookmark.po
plugins/Bookmark/locale/nl/LC_MESSAGES/Bookmark.po
plugins/Bookmark/locale/uk/LC_MESSAGES/Bookmark.po
plugins/Directory/actions/userdirectory.php
plugins/Directory/lib/alphanav.php
plugins/Directory/locale/Directory.pot [new file with mode: 0644]
plugins/Event/locale/Event.pot [new file with mode: 0644]
plugins/ExtendedProfile/ExtendedProfilePlugin.php
plugins/ExtendedProfile/Profile_detail.php
plugins/ExtendedProfile/action/userautocomplete.php [new file with mode: 0644]
plugins/ExtendedProfile/css/profiledetail.css [new file with mode: 0644]
plugins/ExtendedProfile/extendedprofile.php
plugins/ExtendedProfile/extendedprofilewidget.php
plugins/ExtendedProfile/js/profiledetail.js [new file with mode: 0644]
plugins/ExtendedProfile/locale/sv/LC_MESSAGES/ExtendedProfile.po [new file with mode: 0644]
plugins/ExtendedProfile/locale/te/LC_MESSAGES/ExtendedProfile.po [new file with mode: 0644]
plugins/ExtendedProfile/profiledetail.css [deleted file]
plugins/ExtendedProfile/profiledetailaction.php
plugins/ExtendedProfile/profiledetailsettingsaction.php
plugins/Irc/locale/sv/LC_MESSAGES/Irc.po [new file with mode: 0644]
plugins/MobileProfile/locale/te/LC_MESSAGES/MobileProfile.po
plugins/Msn/locale/sv/LC_MESSAGES/Msn.po [new file with mode: 0644]
plugins/OpenX/locale/de/LC_MESSAGES/OpenX.po
plugins/Poll/Poll.php
plugins/Poll/PollPlugin.php
plugins/Poll/Poll_response.php
plugins/Poll/locale/Poll.pot [new file with mode: 0644]
plugins/Poll/newpoll.php
plugins/Poll/newpollform.php
plugins/Poll/pollresponseform.php
plugins/Poll/pollresultform.php
plugins/Poll/respondpoll.php
plugins/Poll/showpoll.php
plugins/Realtime/README
plugins/Realtime/RealtimePlugin.php
plugins/Realtime/realtimeupdate.js
plugins/Realtime/realtimeupdate.min.js
plugins/SearchSub/SearchSub.php [new file with mode: 0644]
plugins/SearchSub/SearchSubPlugin.php [new file with mode: 0644]
plugins/SearchSub/searchsubaction.php [new file with mode: 0644]
plugins/SearchSub/searchsubform.php [new file with mode: 0644]
plugins/SearchSub/searchunsubaction.php [new file with mode: 0644]
plugins/SearchSub/searchunsubform.php [new file with mode: 0644]
plugins/ShareNotice/locale/te/LC_MESSAGES/ShareNotice.po
plugins/SphinxSearch/locale/SphinxSearch.pot
plugins/SubMirror/SubMirrorPlugin.php
plugins/SubMirror/actions/addmirror.php
plugins/SubMirror/actions/basemirror.php
plugins/SubMirror/actions/mirrorsettings.php
plugins/SubMirror/css/mirrorsettings.css [new file with mode: 0644]
plugins/SubMirror/images/providers/facebook.png [new file with mode: 0644]
plugins/SubMirror/images/providers/feed.png [new file with mode: 0644]
plugins/SubMirror/images/providers/linkedin.png [new file with mode: 0644]
plugins/SubMirror/images/providers/statusnet.png [new file with mode: 0644]
plugins/SubMirror/images/providers/twitter.png [new file with mode: 0644]
plugins/SubMirror/images/providers/wordpress.png [new file with mode: 0644]
plugins/SubMirror/js/mirrorsettings.js [new file with mode: 0644]
plugins/SubMirror/lib/addmirrorform.php
plugins/SubMirror/lib/addmirrorwizard.php [new file with mode: 0644]
plugins/SubMirror/lib/addtwittermirrorform.php [new file with mode: 0644]
plugins/TagSub/TagSub.php [new file with mode: 0644]
plugins/TagSub/TagSubPlugin.php [new file with mode: 0644]
plugins/TagSub/tagsubaction.php [new file with mode: 0644]
plugins/TagSub/tagsubform.php [new file with mode: 0644]
plugins/TagSub/tagunsubaction.php [new file with mode: 0644]
plugins/TagSub/tagunsubform.php [new file with mode: 0644]
plugins/UserFlag/locale/UserFlag.pot
plugins/UserFlag/locale/de/LC_MESSAGES/UserFlag.po [new file with mode: 0644]
plugins/Xmpp/locale/sv/LC_MESSAGES/Xmpp.po [new file with mode: 0644]
theme/neo/README [new file with mode: 0644]
theme/neo/css/display.css
theme/neo/default-avatar-mini.png
theme/neo/default-avatar-profile.png
theme/neo/default-avatar-stream.png
theme/neo/images/brdr_black_dot.png [new file with mode: 0644]
theme/neo/images/brdr_white_dot.png [new file with mode: 0644]
theme/neo/logo.png
theme/neo/theme.ini
theme/rebase/css/display.css

index 6cc1a7fe1c1102b01b79fd15f17357f936104168..54d06655eecdcbb592ac307579bcd25e547e6e34 100644 (file)
@@ -1115,3 +1115,27 @@ StartGroupProfileElements: Start showing stuff about the group on its profile pa
 EndGroupProfileElements: Start showing stuff about the group on its profile page
 - $action: action being executed (for output and params)
 - $group: group for the page
+
+StartActivityObjectOutputAtom: Called at start of Atom XML output generation for ActivityObject chunks, just inside the <activity:object>. Cancel the event to take over its output completely (you're responsible for calling the matching End event if so)
+- $obj: ActivityObject
+- $out: XMLOutputter to append custom output
+
+EndActivityObjectOutputAtom: Called at end of Atom XML output generation for ActivityObject chunks, just inside the </activity:object>
+- $obj: ActivityObject
+- $out: XMLOutputter to append custom output
+
+StartActivityObjectOutputJson: Called at start of JSON output generation for ActivityObject chunks: the array has not yet been filled out. Cancel the event to take over its output completely (you're responsible for calling the matching End event if so)
+- $obj ActivityObject
+- &$out: array to be serialized; you're free to modify it
+
+EndActivityObjectOutputJson: Called at end of JSON output generation for ActivityObject chunks: the array has not yet been filled out.
+- $obj ActivityObject
+- &$out: array to be serialized; you're free to modify it
+
+StartNoticeWhoGets: Called at start of inbox delivery prep; plugins can schedule notices to go to particular profiles that would otherwise not have reached them. Canceling will take over the entire addressing operation. Be aware that output can be cached or used several times, so should remain idempotent.
+- $notice Notice
+- &$ni: in/out array mapping profile IDs to constants: NOTICE_INBOX_SOURCE_SUB etc
+
+EndNoticeWhoGets: Called at end of inbox delivery prep; plugins can filter out profiles from receiving inbox delivery here.  Be aware that output can be cached or used several times, so should remain idempotent.
+- $notice Notice
+- &$ni: in/out array mapping profile IDs to constants: NOTICE_INBOX_SOURCE_SUB etc
index 1f6d44363f6377bc496550fe95bd2469c9257eec..f80fbce932445e04b030220d49a6922ef17f0304 100644 (file)
@@ -100,7 +100,7 @@ class ApiGroupListAction extends ApiBareAuthAction
         );
 
         $subtitle   = sprintf(
-            // TRANS: Used as subtitle in check for group membership. %1$s is a user name, %2$s is the site name.
+            // TRANS: Used as subtitle in check for group membership. %1$s is the site name, %2$s is a user name.
             _('%1$s groups %2$s is a member of.'),
             $sitename,
             $this->user->nickname
index 66984b5abda1ca47ad8dafd338ca98c215d5237e..3fe73c691cf7bec1a329de3fa0f48297465d334d 100644 (file)
@@ -322,8 +322,11 @@ class ApiTimelineUserAction extends ApiBareAuthAction
             $this->clientError(_('Atom post must not be empty.'));
         }
 
-        $dom = DOMDocument::loadXML($xml);
-        if (!$dom) {
+        $old = error_reporting(error_reporting() & ~(E_WARNING | E_NOTICE));
+        $dom = new DOMDocument();
+        $ok = $dom->loadXML($xml);
+        error_reporting($old);
+        if (!$ok) {
             // TRANS: Client error displayed attempting to post an API that is not well-formed XML.
             $this->clientError(_('Atom post must be well-formed XML.'));
         }
index eb13593536f67a0b18fe04f19243c0e79a5c6856..657c7bcb71c4b3a64422708c311d7c874fded1ad 100644 (file)
@@ -22,7 +22,7 @@
  * @category  Applications
  * @package   StatusNet
  * @author    Zach Copley <zach@status.net>
- * @copyright 2008-2009 StatusNet, Inc.
+ * @copyright 2008-2011 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/
  */
@@ -290,7 +290,13 @@ class NewApplicationAction extends OwnerDesignAction
             $app->query('ROLLBACK');
         }
 
-        $app->uploadLogo();
+       try {
+            $app->uploadLogo();
+        } catch (Exception $e) {
+            $app->query('ROLLBACK');
+            $this->showForm(_('Invalid image.'));
+           return;      
+       }
 
         $app->query('COMMIT');
 
index 4f4c7a05ba35fdd510cf4c9d69f465595b101926..1f43af800d2194ccdbfbba1b3541b21c4c86ef12 100644 (file)
@@ -138,11 +138,14 @@ class NoticesearchAction extends SearchAction
             $this->elementEnd('div');
             return;
         }
-        $terms = preg_split('/[\s,]+/', $q);
-        $nl = new SearchNoticeList($notice, $this, $terms);
-        $cnt = $nl->show();
-        $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE,
-                          $page, 'noticesearch', array('q' => $q));
+        if (Event::handle('StartNoticeSearchShowResults', array($this, $q, $notice))) {
+            $terms = preg_split('/[\s,]+/', $q);
+            $nl = new SearchNoticeList($notice, $this, $terms);
+            $cnt = $nl->show();
+            $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE,
+                              $page, 'noticesearch', array('q' => $q));
+            Event::handle('EndNoticeSearchShowResults', array($this, $q, $notice));
+        }
     }
 
     function showScripts()
index 37877931ea2e3557bb0950b8d9aecc752a158ae0..63acba7134d637e5b634afb30eaa6af4d572d1d1 100644 (file)
@@ -55,7 +55,8 @@ class PasswordsettingsAction extends SettingsAction
 
     function title()
     {
-        return _('Change password');
+        // TRANS: Title for page where to change password.
+        return _m('TITLE','Change password');
     }
 
     /**
@@ -66,6 +67,7 @@ class PasswordsettingsAction extends SettingsAction
 
     function getInstructions()
     {
+        // TRANS: Instructions for page where to change password.
         return _('Change your password.');
     }
 
@@ -93,6 +95,7 @@ class PasswordsettingsAction extends SettingsAction
                                           'action' =>
                                           common_local_url('passwordsettings')));
         $this->elementStart('fieldset');
+        // TRANS: Fieldset legend on page where to change password.
         $this->element('legend', null, _('Password change'));
         $this->hidden('token', common_session_token());
 
@@ -101,20 +104,26 @@ class PasswordsettingsAction extends SettingsAction
         // Users who logged in with OpenID won't have a pwd
         if ($user->password) {
             $this->elementStart('li');
+            // TRANS: Field label on page where to change password.
             $this->password('oldpassword', _('Old password'));
             $this->elementEnd('li');
         }
         $this->elementStart('li');
+        // TRANS: Field label on page where to change password.
         $this->password('newpassword', _('New password'),
+                        // TRANS: Field title on page where to change password.
                         _('6 or more characters.'));
         $this->elementEnd('li');
         $this->elementStart('li');
-        $this->password('confirm', _('Confirm'),
+        // TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+        $this->password('confirm', _m('LABEL','Confirm'),
+                        // TRANS: Field title on page where to change password.
                         _('Same as password above.'));
         $this->elementEnd('li');
         $this->elementEnd('ul');
 
-        $this->submit('changepass', _('Change'));
+        // TRANS: Button text on page where to change password.
+        $this->submit('changepass', _m('BUTTON','Change'));
 
         $this->elementEnd('fieldset');
         $this->elementEnd('form');
@@ -150,6 +159,7 @@ class PasswordsettingsAction extends SettingsAction
         # Some validation
 
         if (strlen($newpassword) < 6) {
+            // TRANS: Form validation error on page where to change password.
             $this->showForm(_('Password must be 6 or more characters.'));
             return;
         } else if (0 != strcmp($newpassword, $confirm)) {
@@ -161,7 +171,8 @@ class PasswordsettingsAction extends SettingsAction
             $oldpassword = $this->arg('oldpassword');
 
             if (!common_check_user($user->nickname, $oldpassword)) {
-                $this->showForm(_('Incorrect old password'));
+                // TRANS: Form validation error on page where to change password.
+                $this->showForm(_('Incorrect old password.'));
                 return;
             }
         }else{
@@ -177,17 +188,21 @@ class PasswordsettingsAction extends SettingsAction
 
             $val = $user->validate();
             if ($val !== true) {
+                // TRANS: Form validation error on page where to change password.
                 $this->showForm(_('Error saving user; invalid.'));
                 return;
             }
 
             if (!$user->update($original)) {
-                $this->serverError(_('Cannot save new password.'));
+            // TRANS: Server error displayed on page where to change password when password change
+            // TRANS: could not be made because of a server error.
+            $this->serverError(_('Cannot save new password.'));
                 return;
             }
             Event::handle('EndChangePassword', array($user));
         }
 
+        // TRANS: Form validation notice on page where to change password.
         $this->showForm(_('Password saved.'), true);
     }
 }
index dd65a7a134ed78ab79577cb8823065b00261bf6c..7bcc3f78113db628709697421bb0b383f7cad0be 100644 (file)
@@ -152,7 +152,7 @@ class PathsadminpanelAction extends AdminPanelAction
         if (!empty($values['theme']['dir']) && !is_readable($values['theme']['dir'])) {
             // TRANS: Client error in Paths admin panel.
             // TRANS: %s is the directory that could not be read from.
-            $this->clientError(sprintf(_("Theme directory not readable: %s."), $values['theme']['dir']));
+            $this->clientError(sprintf(_('Theme directory not readable: %s.'), $values['theme']['dir']));
         }
 
         // Validate avatar dir
@@ -160,7 +160,7 @@ class PathsadminpanelAction extends AdminPanelAction
         if (empty($values['avatar']['dir']) || !is_writable($values['avatar']['dir'])) {
             // TRANS: Client error in Paths admin panel.
             // TRANS: %s is the avatar directory that could not be written to.
-            $this->clientError(sprintf(_("Avatar directory not writable: %s."), $values['avatar']['dir']));
+            $this->clientError(sprintf(_('Avatar directory not writable: %s.'), $values['avatar']['dir']));
         }
 
         // Validate background dir
@@ -168,7 +168,7 @@ class PathsadminpanelAction extends AdminPanelAction
         if (empty($values['background']['dir']) || !is_writable($values['background']['dir'])) {
             // TRANS: Client error in Paths admin panel.
             // TRANS: %s is the background directory that could not be written to.
-            $this->clientError(sprintf(_("Background directory not writable: %s."), $values['background']['dir']));
+            $this->clientError(sprintf(_('Background directory not writable: %s.'), $values['background']['dir']));
         }
 
         // Validate locales dir
@@ -178,7 +178,7 @@ class PathsadminpanelAction extends AdminPanelAction
         if (!empty($values['site']['locale_path']) && !is_readable($values['site']['locale_path'])) {
             // TRANS: Client error in Paths admin panel.
             // TRANS: %s is the locales directory that could not be read from.
-            $this->clientError(sprintf(_("Locales directory not readable: %s."), $values['site']['locale_path']));
+            $this->clientError(sprintf(_('Locales directory not readable: %s.'), $values['site']['locale_path']));
         }
 
         // Validate SSL setup
@@ -239,6 +239,7 @@ class PathsAdminPanelForm extends AdminForm
         $this->input('server',
                      // TRANS: Field label in Paths admin panel.
                      _('Server'),
+                     // TRANS: Field title in Paths admin panel.
                      _('Site\'s server hostname.'));
         $this->unli();
 
@@ -246,6 +247,7 @@ class PathsAdminPanelForm extends AdminForm
         $this->input('path',
                      // TRANS: Field label in Paths admin panel.
                      _('Path'),
+                     // TRANS: Field title in Paths admin panel.
                      _('Site path.'));
         $this->unli();
 
@@ -253,6 +255,7 @@ class PathsAdminPanelForm extends AdminForm
         $this->input('locale_path',
                      // TRANS: Field label in Paths admin panel.
                      _('Locale directory'),
+                     // TRANS: Field title in Paths admin panel.
                      _('Directory path to locales.'),
                      'site');
         $this->unli();
@@ -262,14 +265,16 @@ class PathsAdminPanelForm extends AdminForm
                              // TRANS: Checkbox label in Paths admin panel.
                              _('Fancy URLs'),
                              (bool) $this->value('fancy'),
-                             _('Use fancy (more readable and memorable) URLs?'));
+                             // TRANS: Field title in Paths admin panel.
+                             _('Use fancy URLs (more readable and memorable)?'));
         $this->unli();
 
         $this->out->elementEnd('ul');
         $this->out->elementEnd('fieldset');
 
         $this->out->elementStart('fieldset', array('id' => 'settings_paths_theme'));
-        $this->out->element('legend', null, _('Theme'));
+        // TRANS: Fieldset legend in Paths admin panel.
+        $this->out->element('legend', null, _m('LEGEND','Theme'));
 
         $this->out->elementStart('ul', 'form_data');
 
@@ -469,7 +474,7 @@ class PathsAdminPanelForm extends AdminForm
 
         $this->out->elementStart('fieldset', array('id' => 'settings_admin_ssl'));
         // TRANS: Fieldset legend in Paths admin panel.
-        $this->out->element('legend', null, _('SSL'));
+        $this->out->element('legend', null, _m('LEGEND','SSL'));
         $this->out->elementStart('ul', 'form_data');
         $this->li();
 
index 7287cfbf995aa0bf08d29df44cde7627ff59f87b..2adc24ea66f43b2157eb7398955dd96e2837d850 100644 (file)
@@ -44,7 +44,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  *
  * @see      Action
  */
-
 class PeopletagAction extends Action
 {
 
@@ -65,6 +64,8 @@ class PeopletagAction extends Action
         $this->tag = $this->trimmed('tag');
 
         if (!common_valid_profile_tag($this->tag)) {
+            // TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+            // TRANS: %s is the invalid tag.
             $this->clientError(sprintf(_('Not a valid people tag: %s.'),
                 $this->tag));
             return;
@@ -139,10 +140,11 @@ class PeopletagAction extends Action
      */
     function title()
     {
+        // TRANS: Page title for users with a certain self-tag.
+        // TRANS: %1$s is the tag, %2$s is the page number.
         return sprintf(_('Users self-tagged with %1$s - page %2$d'),
             $this->tag, $this->page);
     }
-
 }
 
 class PeopleTagList extends ProfileList
@@ -177,4 +179,3 @@ class PeopleTagListItem extends ProfileListItem
         return $aAttrs;
     }
 }
-
index 7f107b3335a10eeecd866910ae8abaad3055127d..abda2a739510bec983649ea69ef88408cfde1e10 100644 (file)
@@ -52,7 +52,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
  * @link      http://status.net/
  */
-
 class PluginDisableAction extends PluginEnableAction
 {
     /**
@@ -74,5 +73,3 @@ class PluginDisableAction extends PluginEnableAction
         return new EnablePluginForm($this, $this->plugin);
     }
 }
-
-
index 2dbb3e3956ce0cff6e711b19a7faf8beaca365cc..0f2b4ba6702201f8c39de493d0ba465529aa7f1c 100644 (file)
@@ -52,7 +52,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
  * @link      http://status.net/
  */
-
 class PluginEnableAction extends Action
 {
     var $user;
@@ -65,7 +64,6 @@ class PluginEnableAction extends Action
      *
      * @return boolean success flag
      */
-
     function prepare($args)
     {
         parent::prepare($args);
@@ -75,6 +73,8 @@ class PluginEnableAction extends Action
         // Only allow POST requests
 
         if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+            // TRANS: Client error displayed when trying to use another method than POST.
+            // TRANS: Do not translate POST.
             $this->clientError(_('This action only accepts POST requests.'));
             return false;
         }
@@ -94,11 +94,13 @@ class PluginEnableAction extends Action
         $this->user = common_current_user();
 
         if (empty($this->user)) {
+            // TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
             $this->clientError(_('Not logged in.'));
             return false;
         }
 
         if (!AdminPanelAction::canAdmin('plugins')) {
+            // TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
             $this->clientError(_('You cannot administer plugins.'));
             return false;
         }
@@ -106,6 +108,7 @@ class PluginEnableAction extends Action
         $this->plugin = $this->arg('plugin');
         $defaultPlugins = common_config('plugins', 'default');
         if (!array_key_exists($this->plugin, $defaultPlugins)) {
+            // TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
             $this->clientError(_('No such plugin.'));
             return false;
         }
@@ -122,7 +125,6 @@ class PluginEnableAction extends Action
      *
      * @return void
      */
-
     function handle($args)
     {
         $key = 'disable-' . $this->plugin;
index bc400bd51473124010db1cd71d9030f067071d73..ec8aed8a22133239226d7be87dc94af36f6ddfd0 100644 (file)
@@ -40,20 +40,17 @@ if (!defined('STATUSNET')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-
 class PluginsadminpanelAction extends AdminPanelAction
 {
-
     /**
      * Returns the page title
      *
      * @return string page title
      */
-
     function title()
     {
         // TRANS: Tab and title for plugins admin panel.
-        return _('Plugins');
+        return _m('TITLE','Plugins');
     }
 
     /**
@@ -61,11 +58,10 @@ class PluginsadminpanelAction extends AdminPanelAction
      *
      * @return string instructions
      */
-
     function getInstructions()
     {
         // TRANS: Instructions at top of plugin admin page.
-        return _('Additional plugins can be enabled and configured manually. ' . 
+        return _('Additional plugins can be enabled and configured manually. ' .
                  'See the <a href="http://status.net/wiki/Plugins">online plugin ' .
                  'documentation</a> for more details.');
     }
@@ -75,11 +71,10 @@ class PluginsadminpanelAction extends AdminPanelAction
      *
      * @return void
      */
-
     function showForm()
     {
         $this->elementStart('fieldset', array('id' => 'settings_plugins_default'));
-        
+
         // TRANS: Admin form section header
         $this->element('legend', null, _('Default plugins'), 'default');
 
@@ -103,6 +98,7 @@ class PluginsadminpanelAction extends AdminPanelAction
             $list->show();
         } else {
             $this->element('p', null,
+                           // TRANS: Text displayed on plugin admin page when no plugin are enabled.
                            _('All default plugins have been disabled from the ' .
                              'site\'s configuration file.'));
         }
index 694c7808d9930722c5d2e054a59b0387201c4ae2..43c764aa63b10728944eb2053c1415bf16fe0d14 100644 (file)
@@ -92,16 +92,18 @@ class PostnoticeAction extends Action
     {
         $content = common_shorten_links($_POST['omb_notice_content']);
         if (Notice::contentTooLong($content)) {
+            // TRANS: Client error displayed if the notice posted has too many characters.
             $this->clientError(_('Invalid notice content.'), 400);
             return false;
         }
         $license      = $_POST['omb_notice_license'];
         $site_license = common_config('license', 'url');
         if ($license && !common_compatible_license($license, $site_license)) {
-            throw new Exception(sprintf(_('Notice license ‘%1$s’ is not ' .
-                                          'compatible with site license ‘%2$s’.'),
+            // TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+            // TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+            throw new Exception(sprintf(_('Notice license "%1$s" is not ' .
+                                          'compatible with site license "%2$s".'),
                                         $license, $site_license));
         }
     }
 }
-?>
\ No newline at end of file
index adeb58b0ee05126517c8cdb3ef49287226ab5b4a..b0294072504d9c5cca88c16cce6e6b89fca99bf1 100644 (file)
@@ -51,7 +51,6 @@ define('MAX_PUBLIC_PAGE', 100);
  * @see      PublicrssAction
  * @see      PublicxrdsAction
  */
-
 class PublicAction extends Action
 {
     /**
@@ -73,14 +72,15 @@ class PublicAction extends Action
      *
      * @return boolean success value
      */
-
     function prepare($args)
     {
         parent::prepare($args);
         $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
 
         if ($this->page > MAX_PUBLIC_PAGE) {
-            $this->clientError(sprintf(_("Beyond the page limit (%s)."), MAX_PUBLIC_PAGE));
+            // TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+            // TRANS: %s is the page limit.
+            $this->clientError(sprintf(_('Beyond the page limit (%s).'), MAX_PUBLIC_PAGE));
         }
 
         common_set_returnto($this->selfUrl());
@@ -89,12 +89,13 @@ class PublicAction extends Action
                                        NOTICES_PER_PAGE + 1);
 
         if (!$this->notice) {
+            // TRANS: Server error displayed when a public timeline cannot be retrieved.
             $this->serverError(_('Could not retrieve public stream.'));
             return;
         }
 
         if($this->page > 1 && $this->notice->N == 0){
-            // TRANS: Server error when page not found (404)
+            // TRANS: Server error when page not found (404).
             $this->serverError(_('No such page.'),$code=404);
         }
 
@@ -110,7 +111,6 @@ class PublicAction extends Action
      *
      * @return void
      */
-
     function handle($args)
     {
         parent::handle($args);
@@ -123,12 +123,14 @@ class PublicAction extends Action
      *
      * @return page title, including page number if over 1
      */
-
     function title()
     {
         if ($this->page > 1) {
+            // TRANS: Title for all public timeline pages but the first.
+            // TRANS: %d is the page number.
             return sprintf(_('Public timeline, page %d'), $this->page);
         } else {
+            // TRANS: Title for the first public timeline page.
             return _('Public timeline');
         }
     }
@@ -153,33 +155,38 @@ class PublicAction extends Action
      *
      * @return void
      */
-
     function getFeeds()
     {
         return array(new Feed(Feed::RSS1, common_local_url('publicrss'),
+                              // TRANS: Link description for public timeline feed.
                               _('Public Stream Feed (RSS 1.0)')),
                      new Feed(Feed::RSS2,
                               common_local_url('ApiTimelinePublic',
                                                array('format' => 'rss')),
+                              // TRANS: Link description for public timeline feed.
                               _('Public Stream Feed (RSS 2.0)')),
                      new Feed(Feed::ATOM,
                               common_local_url('ApiTimelinePublic',
                                                array('format' => 'atom')),
+                              // TRANS: Link description for public timeline feed.
                               _('Public Stream Feed (Atom)')));
     }
 
     function showEmptyList()
     {
+        // TRANS: Text displayed for public feed when there are no public notices.
         $message = _('This is the public timeline for %%site.name%% but no one has posted anything yet.') . ' ';
 
         if (common_logged_in()) {
+            // TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
             $message .= _('Be the first to post!');
         }
         else {
             if (! (common_config('site','closed') || common_config('site','inviteonly'))) {
+                // TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
                 $message .= _('Why not [register an account](%%action.register%%) and be the first to post!');
             }
-       }
+        }
 
         $this->elementStart('div', 'guide');
         $this->raw(common_markup_to_html($message));
@@ -194,7 +201,6 @@ class PublicAction extends Action
      *
      * @return void
      */
-
     function showContent()
     {
         $nl = new ThreadedNoticeList($this->notice, $this);
@@ -224,11 +230,15 @@ class PublicAction extends Action
     function showAnonymousMessage()
     {
         if (! (common_config('site','closed') || common_config('site','inviteonly'))) {
+            // TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+            // TRANS: This message contains Markdown links. Please mind the formatting.
             $m = _('This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' .
                    'based on the Free Software [StatusNet](http://status.net/) tool. ' .
                    '[Join now](%%action.register%%) to share notices about yourself with friends, family, and colleagues! ' .
                    '([Read more](%%doc.help%%))');
         } else {
+            // TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+            // TRANS: This message contains Markdown links. Please mind the formatting.
             $m = _('This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' .
                    'based on the Free Software [StatusNet](http://status.net/) tool.');
         }
index 8f0337e4f7d4c4f8aa23a97a1a8d14cbfdf38e78..aac6f423cf6ff263b317b9a7222b3431f29c84aa 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * Public XRDS for OpenID
  *
index 3978f03ea9ce511cb69397980855c9d3c5ea2148..b8927372bb10d1c72e83da54ab66ec052d4944b3 100644 (file)
@@ -78,6 +78,9 @@ class ShownoticeAction extends OwnerDesignAction
     function prepare($args)
     {
         parent::prepare($args);
+        if ($this->boolean('ajax')) {
+            StatusNet::setApi(true);
+        }
 
         $id = $this->arg('notice');
 
@@ -188,22 +191,26 @@ class ShownoticeAction extends OwnerDesignAction
     {
         parent::handle($args);
 
-        if ($this->notice->is_local == Notice::REMOTE_OMB) {
-            if (!empty($this->notice->url)) {
-                $target = $this->notice->url;
-            } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
-                // Old OMB posts saved the remote URL only into the URI field.
-                $target = $this->notice->uri;
-            } else {
-                // Shouldn't happen.
-                $target = false;
-            }
-            if ($target && $target != $this->selfUrl()) {
-                common_redirect($target, 301);
-                return false;
+        if ($this->boolean('ajax')) {
+            $this->showAjax();
+        } else {
+            if ($this->notice->is_local == Notice::REMOTE_OMB) {
+                if (!empty($this->notice->url)) {
+                    $target = $this->notice->url;
+                } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
+                    // Old OMB posts saved the remote URL only into the URI field.
+                    $target = $this->notice->uri;
+                } else {
+                    // Shouldn't happen.
+                    $target = false;
+                }
+                if ($target && $target != $this->selfUrl()) {
+                    common_redirect($target, 301);
+                    return false;
+                }
             }
+            $this->showPage();
         }
-        $this->showPage();
     }
 
     /**
@@ -232,6 +239,21 @@ class ShownoticeAction extends OwnerDesignAction
         $this->elementEnd('ol');
     }
 
+    function showAjax()
+    {
+        header('Content-Type: text/xml;charset=utf-8');
+        $this->xw->startDocument('1.0', 'UTF-8');
+        $this->elementStart('html');
+        $this->elementStart('head');
+        $this->element('title', null, _('Notice'));
+        $this->elementEnd('head');
+        $this->elementStart('body');
+        $nli = new NoticeListItem($this->notice, $this);
+        $nli->show();
+        $this->elementEnd('body');
+        $this->elementEnd('html');
+    }
+
     /**
      * Don't show page notice
      *
index d520f4728f60d98758041aae7fce74a923a497a0..664e5dab9f85d3c4d51901a041e7638ef285ab2b 100644 (file)
@@ -812,41 +812,48 @@ class Notice extends Memcached_DataObject
 
         $ni = array();
 
-        foreach ($users as $id) {
-            $ni[$id] = NOTICE_INBOX_SOURCE_SUB;
-        }
+        // Give plugins a chance to add folks in at start...
+        if (Event::handle('StartNoticeWhoGets', array($this, &$ni))) {
 
-        foreach ($groups as $group) {
-            $users = $group->getUserMembers();
             foreach ($users as $id) {
-                if (!array_key_exists($id, $ni)) {
-                    $ni[$id] = NOTICE_INBOX_SOURCE_GROUP;
+                $ni[$id] = NOTICE_INBOX_SOURCE_SUB;
+            }
+
+            foreach ($groups as $group) {
+                $users = $group->getUserMembers();
+                foreach ($users as $id) {
+                    if (!array_key_exists($id, $ni)) {
+                        $ni[$id] = NOTICE_INBOX_SOURCE_GROUP;
+                    }
                 }
             }
-        }
 
-        foreach ($recipients as $recipient) {
-            if (!array_key_exists($recipient, $ni)) {
-                $ni[$recipient] = NOTICE_INBOX_SOURCE_REPLY;
+            foreach ($recipients as $recipient) {
+                if (!array_key_exists($recipient, $ni)) {
+                    $ni[$recipient] = NOTICE_INBOX_SOURCE_REPLY;
+                }
             }
-        }
 
-        // Exclude any deleted, non-local, or blocking recipients.
-        $profile = $this->getProfile();
-        $originalProfile = null;
-        if ($this->repeat_of) {
-            // Check blocks against the original notice's poster as well.
-            $original = Notice::staticGet('id', $this->repeat_of);
-            if ($original) {
-                $originalProfile = $original->getProfile();
+            // Exclude any deleted, non-local, or blocking recipients.
+            $profile = $this->getProfile();
+            $originalProfile = null;
+            if ($this->repeat_of) {
+                // Check blocks against the original notice's poster as well.
+                $original = Notice::staticGet('id', $this->repeat_of);
+                if ($original) {
+                    $originalProfile = $original->getProfile();
+                }
             }
-        }
-        foreach ($ni as $id => $source) {
-            $user = User::staticGet('id', $id);
-            if (empty($user) || $user->hasBlocked($profile) ||
-                ($originalProfile && $user->hasBlocked($originalProfile))) {
-                unset($ni[$id]);
+            foreach ($ni as $id => $source) {
+                $user = User::staticGet('id', $id);
+                if (empty($user) || $user->hasBlocked($profile) ||
+                    ($originalProfile && $user->hasBlocked($originalProfile))) {
+                    unset($ni[$id]);
+                }
             }
+
+            // Give plugins a chance to filter out...
+            Event::handle('EndNoticeWhoGets', array($this, &$ni));
         }
 
         if (!empty($c)) {
@@ -1999,6 +2006,11 @@ class Notice extends Memcached_DataObject
                 $this->is_local == Notice::LOCAL_NONPUBLIC);
     }
 
+    /**
+     * Get the list of hash tags saved with this notice.
+     *
+     * @return array of strings
+     */
     public function getTags()
     {
         $tags = array();
index 74ff52bd6d80496709523f9d1f773b20909644e4..e2c6fb50088853d47a5f5dc8f12d2807732ffe7e 100644 (file)
Binary files a/favicon.ico and b/favicon.ico differ
index cc95a08bf58049232abfd41557e2dc5e6213c583..966df4d93fbe085efcd47323e585b12dfacb269f 100644 (file)
@@ -423,7 +423,7 @@ var SN = { // StatusNet
                                         .css({display:'none'})
                                         .fadeIn(2500);
                                     SN.U.NoticeWithAttachment($('#'+notice.id));
-                                    SN.U.NoticeReplyTo($('#'+notice.id));
+                                    SN.U.switchInputFormTab("placeholder");
                                 }
                             } else {
                                 // Not on a timeline that this belongs on?
@@ -515,32 +515,20 @@ var SN = { // StatusNet
          * @access private
          */
         NoticeReply: function() {
-            if ($('#content .notice_reply').length > 0) {
-                $('#content .notice').each(function() { SN.U.NoticeReplyTo($(this)); });
-            }
+            $('#content .notice_reply').live('click', function(e) {
+                e.preventDefault();
+                var notice = $(this).closest('li.notice');
+                var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
+                SN.U.NoticeInlineReplyTrigger(notice, '@' + nickname.text());
+                return false;
+            });
         },
 
         /**
-         * Setup function -- DOES NOT trigger actions immediately.
-         *
-         * Sets up event handlers on the given notice's reply button to
-         * tweak the new-notice form with needed variables and focus it
-         * when pushed.
-         *
-         * (This replaces the default reply button behavior to submit
-         * directly to a form which comes back with a specialized page
-         * with the form data prefilled.)
-         *
-         * @param {jQuery} notice: jQuery object containing one or more notices
+         * Stub -- kept for compat with plugins for now.
          * @access private
          */
         NoticeReplyTo: function(notice) {
-            notice.find('.notice_reply').live('click', function(e) {
-                e.preventDefault();
-                var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
-                SN.U.NoticeInlineReplyTrigger(notice, '@' + nickname.text());
-                return false;
-            });
         },
 
         /**
@@ -599,7 +587,7 @@ var SN = { // StatusNet
                 nextStep();
             } else {
                 // Remove placeholder if any
-                $('li.notice-reply-placeholder').remove();
+                list.find('li.notice-reply-placeholder').remove();
 
                 // Create the reply form entry at the end
                 var replyItem = $('li.notice-reply', list);
@@ -638,25 +626,24 @@ var SN = { // StatusNet
             var placeholder = $('<li class="notice-reply-placeholder">' +
                                     '<input class="placeholder">' +
                                 '</li>');
-            placeholder.click(function() {
-                SN.U.NoticeInlineReplyTrigger(notice);
-            });
-            placeholder.find('input').val(SN.msg('reply_placeholder'));
+            placeholder.find('input')
+                .val(SN.msg('reply_placeholder'));
             list.append(placeholder);
         },
 
         /**
          * Setup function -- DOES NOT apply immediately.
          *
-         * Sets up event handlers for favor/disfavor forms to submit via XHR.
+         * Sets up event handlers for inline reply mini-form placeholders.
          * Uses 'live' rather than 'bind', so applies to future as well as present items.
          */
         NoticeInlineReplySetup: function() {
-            $('.threaded-replies').each(function() {
-                var list = $(this);
-                var notice = list.closest('.notice');
-                SN.U.NoticeInlineReplyPlaceholder(notice);
-            });
+            $('li.notice-reply-placeholder input')
+                .live('focus', function() {
+                    var notice = $(this).closest('li.notice');
+                    SN.U.NoticeInlineReplyTrigger(notice);
+                    return false;
+                });
         },
 
         /**
@@ -1015,8 +1002,7 @@ var SN = { // StatusNet
                 }
 
                 var NGW = form.find('.notice_data-geo_wrap');
-                var geocodeURL = NGW.attr('title');
-                NGW.removeAttr('title');
+                var geocodeURL = NGW.attr('data-api');
 
                 label
                     .attr('title', label.text());
@@ -1116,6 +1102,7 @@ var SN = { // StatusNet
                 wrapper = $('<div class="'+SN.C.S.Success+' geo_status_wrapper"><button class="close" style="float:right">&#215;</button><div class="geo_status"></div></div>');
                 wrapper.find('button.close').click(function() {
                     form.find('[name=notice_data-geo]').removeAttr('checked').change();
+                    return false;
                 });
                 form.append(wrapper);
             }
@@ -1287,10 +1274,22 @@ var SN = { // StatusNet
        switchInputFormTab: function(tag) {
            // The one that's current isn't current anymore
            $('.input_form_nav_tab.current').removeClass('current');
-           $('#input_form_nav_'+tag).addClass('current');
+            if (tag == 'placeholder') {
+                // Hack: when showing the placeholder, mark the tab
+                // as current for 'Status'.
+                $('#input_form_nav_status').addClass('current');
+            } else {
+                $('#input_form_nav_'+tag).addClass('current');
+            }
 
            $('.input_form.current').removeClass('current');
-           $('#input_form_'+tag).addClass('current');
+           $('#input_form_'+tag)
+                .addClass('current')
+                .find('.ajax-notice').each(function() {
+                    var form = $(this);
+                    SN.Init.NoticeFormSetup(form);
+                })
+                .find('textarea:first').focus();
        }
     },
 
@@ -1305,9 +1304,49 @@ var SN = { // StatusNet
          */
         NoticeForm: function() {
             if ($('body.user_in').length > 0) {
-                $('.ajax-notice').each(function() {
-                    var form = $(this);
-                    SN.Init.NoticeFormSetup(form);
+                // SN.Init.NoticeFormSetup() will get run
+                // when forms get displayed for the first time...
+
+                // Hack to initialize the placeholder at top
+                $('#input_form_placeholder input.placeholder').focus(function() {
+                    SN.U.switchInputFormTab("status");
+                });
+
+                // Make inline reply forms self-close when clicking out.
+                $('body').bind('click', function(e) {
+                    var currentForm = $('#content .input_forms div.current');
+                    if (currentForm.length > 0) {
+                        if ($('#content .input_forms').has(e.target).length == 0) {
+                            // If all fields are empty, switch back to the placeholder.
+                            var fields = currentForm.find('textarea, input[type=text], input[type=""]');
+                            var anything = false;
+                            fields.each(function() {
+                                anything = anything || $(this).val();
+                            });
+                            if (!anything) {
+                                SN.U.switchInputFormTab("placeholder");
+                            }
+                        }
+                    }
+
+                    var openReplies = $('li.notice-reply');
+                    if (openReplies.length > 0) {
+                        var target = $(e.target);
+                        openReplies.each(function() {
+                            // Did we click outside this one?
+                            var replyItem = $(this);
+                            if (replyItem.has(e.target).length == 0) {
+                                var textarea = replyItem.find('.notice_data-text:first');
+                                var cur = $.trim(textarea.val());
+                                // Only close if there's been no edit.
+                                if (cur == '' || cur == textarea.data('initialText')) {
+                                    var parentNotice = replyItem.closest('li.notice');
+                                    replyItem.remove();
+                                    SN.U.NoticeInlineReplyPlaceholder(parentNotice);
+                                }
+                            }
+                        });
+                    }
                 });
             }
         },
@@ -1320,10 +1359,13 @@ var SN = { // StatusNet
          * @param {jQuery} form
          */
         NoticeFormSetup: function(form) {
-            SN.U.NoticeLocationAttach(form);
-            SN.U.FormNoticeXHR(form);
-            SN.U.FormNoticeEnhancements(form);
-            SN.U.NoticeDataAttach(form);
+            if (!form.data('NoticeFormSetup')) {
+                SN.U.NoticeLocationAttach(form);
+                SN.U.FormNoticeXHR(form);
+                SN.U.FormNoticeEnhancements(form);
+                SN.U.NoticeDataAttach(form);
+                form.data('NoticeFormSetup', true);
+            }
         },
 
         /**
index 32a893355f73c639e24bcd925efe0be5a2f11ffb..26ae7494cbaff9f00e2f2dce8eaad02086cb4253 100644 (file)
@@ -1 +1 @@
-var SN={C:{I:{CounterBlackout:false,MaxLength:140,PatternUsername:/^[0-9a-zA-Z\-_.]*$/,HTTP20x30x:[200,201,202,203,204,205,206,300,301,302,303,304,305,306,307],NoticeFormMaster:null},S:{Disabled:"disabled",Warning:"warning",Error:"error",Success:"success",Processing:"processing",CommandResult:"command_result",FormNotice:"form_notice",NoticeDataGeo:"notice_data-geo",NoticeDataGeoCookie:"NoticeDataGeo",NoticeDataGeoSelected:"notice_data-geo_selected",StatusNetInstance:"StatusNetInstance"}},messages:{},msg:function(a){if(typeof SN.messages[a]=="undefined"){return"["+a+"]"}else{return SN.messages[a]}},U:{FormNoticeEnhancements:function(b){if(jQuery.data(b[0],"ElementData")===undefined){MaxLength=b.find(".count").text();if(typeof(MaxLength)=="undefined"){MaxLength=SN.C.I.MaxLength}jQuery.data(b[0],"ElementData",{MaxLength:MaxLength});SN.U.Counter(b);NDT=b.find(".notice_data-text:first");NDT.bind("keyup",function(c){SN.U.Counter(b)});var a=function(c){window.setTimeout(function(){SN.U.Counter(b)},50)};NDT.bind("cut",a).bind("paste",a)}else{b.find(".count").text(jQuery.data(b[0],"ElementData").MaxLength)}},Counter:function(d){SN.C.I.FormNoticeCurrent=d;var b=jQuery.data(d[0],"ElementData").MaxLength;if(b<=0){return}var c=b-SN.U.CharacterCount(d);var a=d.find(".count");if(c.toString()!=a.text()){if(!SN.C.I.CounterBlackout||c===0){if(a.text()!=String(c)){a.text(c)}if(c<0){d.addClass(SN.C.S.Warning)}else{d.removeClass(SN.C.S.Warning)}if(!SN.C.I.CounterBlackout){SN.C.I.CounterBlackout=true;SN.C.I.FormNoticeCurrent=d;window.setTimeout("SN.U.ClearCounterBlackout(SN.C.I.FormNoticeCurrent);",500)}}}},CharacterCount:function(a){return a.find(".notice_data-text:first").val().length},ClearCounterBlackout:function(a){SN.C.I.CounterBlackout=false;SN.U.Counter(a)},RewriteAjaxAction:function(a){if(document.location.protocol=="https:"&&a.substr(0,5)=="http:"){return a.replace(/^http:\/\/[^:\/]+/,"https://"+document.location.host)}else{return a}},FormXHR:function(a){$.ajax({type:"POST",dataType:"xml",url:SN.U.RewriteAjaxAction(a.attr("action")),data:a.serialize()+"&ajax=1",beforeSend:function(b){a.addClass(SN.C.S.Processing).find(".submit").addClass(SN.C.S.Disabled).attr(SN.C.S.Disabled,SN.C.S.Disabled)},error:function(c,d,b){alert(b||d)},success:function(b,c){if(typeof($("form",b)[0])!="undefined"){form_new=document._importNode($("form",b)[0],true);a.replaceWith(form_new)}else{a.replaceWith(document._importNode($("p",b)[0],true))}}})},FormNoticeXHR:function(b){SN.C.I.NoticeDataGeo={};b.append('<input type="hidden" name="ajax" value="1"/>');b.attr("action",SN.U.RewriteAjaxAction(b.attr("action")));var c=function(d,e){b.append($('<p class="form_response"></p>').addClass(d).text(e))};var a=function(){b.find(".form_response").remove()};b.ajaxForm({dataType:"xml",timeout:"60000",beforeSend:function(d){if(b.find(".notice_data-text:first").val()==""){b.addClass(SN.C.S.Warning);return false}b.addClass(SN.C.S.Processing).find(".submit").addClass(SN.C.S.Disabled).attr(SN.C.S.Disabled,SN.C.S.Disabled);SN.U.normalizeGeoData(b);return true},error:function(f,g,e){b.removeClass(SN.C.S.Processing).find(".submit").removeClass(SN.C.S.Disabled).removeAttr(SN.C.S.Disabled,SN.C.S.Disabled);a();if(g=="timeout"){c("error","Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.")}else{var d=SN.U.GetResponseXML(f);if($("."+SN.C.S.Error,d).length>0){b.append(document._importNode($("."+SN.C.S.Error,d)[0],true))}else{if(parseInt(f.status)===0||jQuery.inArray(parseInt(f.status),SN.C.I.HTTP20x30x)>=0){b.resetForm().find(".attach-status").remove();SN.U.FormNoticeEnhancements(b)}else{c("error","(Sorry! We had trouble sending your notice ("+f.status+" "+f.statusText+"). Please report the problem to the site administrator if this happens again.")}}}},success:function(i,f){a();var n=$("#"+SN.C.S.Error,i);if(n.length>0){c("error",n.text())}else{if($("body")[0].id=="bookmarklet"){self.close()}var d=$("#"+SN.C.S.CommandResult,i);if(d.length>0){c("success",d.text())}else{var m=document._importNode($("li",i)[0],true);var k=$("#notices_primary .notices:first");var l=b.closest("li.notice-reply");if(l.length>0){var e=$(m).attr("id");if($("#"+e).length==0){var j=l.closest("li.notice");l.replaceWith(m);SN.U.NoticeInlineReplyPlaceholder(j)}else{l.remove()}}else{if(k.length>0&&SN.U.belongsOnTimeline(m)){if($("#"+m.id).length===0){var h=b.find("[name=inreplyto]").val();var g="#notices_primary #notice-"+h;if($("body")[0].id=="conversation"){if(h.length>0&&$(g+" .notices").length<1){$(g).append('<ul class="notices"></ul>')}$($(g+" .notices")[0]).append(m)}else{k.prepend(m)}$("#"+m.id).css({display:"none"}).fadeIn(2500);SN.U.NoticeWithAttachment($("#"+m.id));SN.U.NoticeReplyTo($("#"+m.id))}}else{c("success",$("title",i).text())}}}b.resetForm();b.find("[name=inreplyto]").val("");b.find(".attach-status").remove();SN.U.FormNoticeEnhancements(b)}},complete:function(d,e){b.removeClass(SN.C.S.Processing).find(".submit").removeAttr(SN.C.S.Disabled).removeClass(SN.C.S.Disabled);b.find("[name=lat]").val(SN.C.I.NoticeDataGeo.NLat);b.find("[name=lon]").val(SN.C.I.NoticeDataGeo.NLon);b.find("[name=location_ns]").val(SN.C.I.NoticeDataGeo.NLNS);b.find("[name=location_id]").val(SN.C.I.NoticeDataGeo.NLID);b.find("[name=notice_data-geo]").attr("checked",SN.C.I.NoticeDataGeo.NDG)}})},normalizeGeoData:function(a){SN.C.I.NoticeDataGeo.NLat=a.find("[name=lat]").val();SN.C.I.NoticeDataGeo.NLon=a.find("[name=lon]").val();SN.C.I.NoticeDataGeo.NLNS=a.find("[name=location_ns]").val();SN.C.I.NoticeDataGeo.NLID=a.find("[name=location_id]").val();SN.C.I.NoticeDataGeo.NDG=a.find("[name=notice_data-geo]").attr("checked");var b=$.cookie(SN.C.S.NoticeDataGeoCookie);if(b!==null&&b!="disabled"){b=JSON.parse(b);SN.C.I.NoticeDataGeo.NLat=a.find("[name=lat]").val(b.NLat).val();SN.C.I.NoticeDataGeo.NLon=a.find("[name=lon]").val(b.NLon).val();if(b.NLNS){SN.C.I.NoticeDataGeo.NLNS=a.find("[name=location_ns]").val(b.NLNS).val();SN.C.I.NoticeDataGeo.NLID=a.find("[name=location_id]").val(b.NLID).val()}else{a.find("[name=location_ns]").val("");a.find("[name=location_id]").val("")}}if(b=="disabled"){SN.C.I.NoticeDataGeo.NDG=a.find("[name=notice_data-geo]").attr("checked",false).attr("checked")}else{SN.C.I.NoticeDataGeo.NDG=a.find("[name=notice_data-geo]").attr("checked",true).attr("checked")}},GetResponseXML:function(b){try{return b.responseXML}catch(a){return(new DOMParser()).parseFromString(b.responseText,"text/xml")}},NoticeReply:function(){if($("#content .notice_reply").length>0){$("#content .notice").each(function(){SN.U.NoticeReplyTo($(this))})}},NoticeReplyTo:function(a){a.find(".notice_reply").live("click",function(c){c.preventDefault();var b=($(".author .nickname",a).length>0)?$($(".author .nickname",a)[0]):$(".author .nickname.uid");SN.U.NoticeInlineReplyTrigger(a,"@"+b.text());return false})},NoticeInlineReplyTrigger:function(h,i){var b=$($(".notice_id",h)[0]).text();var e=h;var f=h.closest(".notices");if(f.hasClass("threaded-replies")){e=f.closest(".notice")}else{f=$("ul.threaded-replies",h);if(f.length==0){f=$('<ul class="notices threaded-replies xoxo"></ul>');h.append(f)}}var j=$(".notice-reply-form",f);var d=function(){j.find("input[name=inreplyto]").val(b);var m=j.find("textarea");if(m.length==0){throw"No textarea"}var l="";if(i){l=i+" "}m.val(l+m.val().replace(RegExp(l,"i"),""));m.data("initialText",$.trim(i+""));m.focus();if(m[0].setSelectionRange){var k=m.val().length;m[0].setSelectionRange(k,k)}};if(j.length>0){d()}else{$("li.notice-reply-placeholder").remove();var g=$("li.notice-reply",f);if(g.length==0){g=$('<li class="notice-reply"></li>');var c=function(k){var l=document._importNode(k,true);g.append(l);f.append(g);var m=j=$(l);SN.Init.NoticeFormSetup(m);d()};if(SN.C.I.NoticeFormMaster){c(SN.C.I.NoticeFormMaster)}else{var a=$("#form_notice").attr("action");$.get(a,{ajax:1},function(k,m,l){c($("form",k)[0])})}}}},NoticeInlineReplyPlaceholder:function(b){var a=b.find("ul.threaded-replies");var c=$('<li class="notice-reply-placeholder"><input class="placeholder"></li>');c.click(function(){SN.U.NoticeInlineReplyTrigger(b)});c.find("input").val(SN.msg("reply_placeholder"));a.append(c)},NoticeInlineReplySetup:function(){$(".threaded-replies").each(function(){var b=$(this);var a=b.closest(".notice");SN.U.NoticeInlineReplyPlaceholder(a)})},NoticeRepeat:function(){$(".form_repeat").live("click",function(a){a.preventDefault();SN.U.NoticeRepeatConfirmation($(this));return false})},NoticeRepeatConfirmation:function(a){var c=a.find(".submit");var b=c.clone();b.addClass("submit_dialogbox").removeClass("submit");a.append(b);b.bind("click",function(){SN.U.FormXHR(a);return false});c.hide();a.addClass("dialogbox").append('<button class="close">&#215;</button>').closest(".notice-options").addClass("opaque");a.find("button.close").click(function(){$(this).remove();a.removeClass("dialogbox").closest(".notice-options").removeClass("opaque");a.find(".submit_dialogbox").remove();a.find(".submit").show();return false})},NoticeAttachments:function(){$(".notice a.attachment").each(function(){SN.U.NoticeWithAttachment($(this).closest(".notice"))})},NoticeWithAttachment:function(b){if(b.find(".attachment").length===0){return}var a=b.find(".attachment.more");if(a.length>0){$(a[0]).click(function(){var c=$(this);c.addClass(SN.C.S.Processing);$.get(c.attr("href")+"/ajax",null,function(d){c.parent(".entry-content").html($(d).find("#attachment_view .entry-content").html())});return false}).attr("title",SN.msg("showmore_tooltip"))}},NoticeDataAttach:function(b){var a=b.find("input[type=file]");a.change(function(f){b.find(".attach-status").remove();var d=$(this).val();if(!d){return false}var c=$('<div class="attach-status '+SN.C.S.Success+'"><code></code> <button class="close">&#215;</button></div>');c.find("code").text(d);c.find("button").click(function(){c.remove();a.val("");return false});b.append(c);if(typeof this.files=="object"){for(var e=0;e<this.files.length;e++){SN.U.PreviewAttach(b,this.files[e])}}})},maxFileSize:function(b){var a=$(b).find("input[name=MAX_FILE_SIZE]").attr("value");if(a){return parseInt(a)}else{return 0}},PreviewAttach:function(d,c){var e=c.type+" "+Math.round(c.size/1024)+"KB";var f=true;var h;if(typeof window.createObjectURL!="undefined"){h=function(i,j){j(window.createObjectURL(i))}}else{if(typeof window.FileReader!="undefined"){h=function(j,k){var i=new FileReader();i.onload=function(l){k(i.result)};i.readAsDataURL(j)}}else{f=false}}var a=["image/png","image/jpeg","image/gif","image/svg+xml"];if($.inArray(c.type,a)==-1){f=false}var g=8*1024*1024;if(c.size>g){f=false}if(f){h(c,function(j){var i=$("<img>").attr("title",e).attr("alt",e).attr("src",j).attr("style","height: 120px");d.find(".attach-status").append(i)})}else{var b=$("<div></div>").text(e);d.find(".attach-status").append(b)}},NoticeLocationAttach:function(a){var e=a.find("[name=lat]");var k=a.find("[name=lon]");var g=a.find("[name=location_ns]").val();var l=a.find("[name=location_id]").val();var b="";var d=a.find("[name=notice_data-geo]");var c=a.find("[name=notice_data-geo]");var j=a.find("label.notice_data-geo");function f(n){j.attr("title",jQuery.trim(j.text())).removeClass("checked");a.find("[name=lat]").val("");a.find("[name=lon]").val("");a.find("[name=location_ns]").val("");a.find("[name=location_id]").val("");a.find("[name=notice_data-geo]").attr("checked",false);$.cookie(SN.C.S.NoticeDataGeoCookie,"disabled",{path:"/"});if(n){a.find(".geo_status_wrapper").removeClass("success").addClass("error");a.find(".geo_status_wrapper .geo_status").text(n)}else{a.find(".geo_status_wrapper").remove()}}function m(n,o){SN.U.NoticeGeoStatus(a,"Looking up place name...");$.getJSON(n,o,function(p){var q,r;if(typeof(p.location_ns)!="undefined"){a.find("[name=location_ns]").val(p.location_ns);q=p.location_ns}if(typeof(p.location_id)!="undefined"){a.find("[name=location_id]").val(p.location_id);r=p.location_id}if(typeof(p.name)=="undefined"){NLN_text=o.lat+";"+o.lon}else{NLN_text=p.name}SN.U.NoticeGeoStatus(a,NLN_text,o.lat,o.lon,p.url);j.attr("title",NoticeDataGeo_text.ShareDisable+" ("+NLN_text+")");a.find("[name=lat]").val(o.lat);a.find("[name=lon]").val(o.lon);a.find("[name=location_ns]").val(q);a.find("[name=location_id]").val(r);a.find("[name=notice_data-geo]").attr("checked",true);var s={NLat:o.lat,NLon:o.lon,NLNS:q,NLID:r,NLN:NLN_text,NLNU:p.url,NDG:true};$.cookie(SN.C.S.NoticeDataGeoCookie,JSON.stringify(s),{path:"/"})})}if(c.length>0){if($.cookie(SN.C.S.NoticeDataGeoCookie)=="disabled"){c.attr("checked",false)}else{c.attr("checked",true)}var h=a.find(".notice_data-geo_wrap");var i=h.attr("title");h.removeAttr("title");j.attr("title",j.text());c.change(function(){if(c.attr("checked")===true||$.cookie(SN.C.S.NoticeDataGeoCookie)===null){j.attr("title",NoticeDataGeo_text.ShareDisable).addClass("checked");if($.cookie(SN.C.S.NoticeDataGeoCookie)===null||$.cookie(SN.C.S.NoticeDataGeoCookie)=="disabled"){if(navigator.geolocation){SN.U.NoticeGeoStatus(a,"Requesting location from browser...");navigator.geolocation.getCurrentPosition(function(p){a.find("[name=lat]").val(p.coords.latitude);a.find("[name=lon]").val(p.coords.longitude);var q={lat:p.coords.latitude,lon:p.coords.longitude,token:$("#token").val()};m(i,q)},function(p){switch(p.code){case p.PERMISSION_DENIED:f("Location permission denied.");break;case p.TIMEOUT:f("Location lookup timeout.");break}},{timeout:10000})}else{if(e.length>0&&k.length>0){var n={lat:e,lon:k,token:$("#token").val()};m(i,n)}else{f();c.remove();j.remove()}}}else{var o=JSON.parse($.cookie(SN.C.S.NoticeDataGeoCookie));a.find("[name=lat]").val(o.NLat);a.find("[name=lon]").val(o.NLon);a.find("[name=location_ns]").val(o.NLNS);a.find("[name=location_id]").val(o.NLID);a.find("[name=notice_data-geo]").attr("checked",o.NDG);SN.U.NoticeGeoStatus(a,o.NLN,o.NLat,o.NLon,o.NLNU);j.attr("title",NoticeDataGeo_text.ShareDisable+" ("+o.NLN+")").addClass("checked")}}else{f()}}).change()}},NoticeGeoStatus:function(e,a,f,g,c){var h=e.find(".geo_status_wrapper");if(h.length==0){h=$('<div class="'+SN.C.S.Success+' geo_status_wrapper"><button class="close" style="float:right">&#215;</button><div class="geo_status"></div></div>');h.find("button.close").click(function(){e.find("[name=notice_data-geo]").removeAttr("checked").change()});e.append(h)}var b;if(c){b=$("<a></a>").attr("href",c)}else{b=$("<span></span>")}b.text(a);if(f||g){var d=f+";"+g;b.attr("title",d);if(!a){b.text(d)}}h.find(".geo_status").empty().append(b)},NewDirectMessage:function(){NDM=$(".entity_send-a-message a");NDM.attr({href:NDM.attr("href")+"&ajax=1"});NDM.bind("click",function(){var a=$(".entity_send-a-message form");if(a.length===0){$(this).addClass(SN.C.S.Processing);$.get(NDM.attr("href"),null,function(b){$(".entity_send-a-message").append(document._importNode($("form",b)[0],true));a=$(".entity_send-a-message .form_notice");SN.U.FormNoticeXHR(a);SN.U.FormNoticeEnhancements(a);a.append('<button class="close">&#215;</button>');$(".entity_send-a-message button").click(function(){a.hide();return false});NDM.removeClass(SN.C.S.Processing)})}else{a.show();$(".entity_send-a-message textarea").focus()}return false})},GetFullYear:function(c,d,a){var b=new Date();b.setFullYear(c,d,a);return b},StatusNetInstance:{Set:function(b){var a=SN.U.StatusNetInstance.Get();if(a!==null){b=$.extend(a,b)}$.cookie(SN.C.S.StatusNetInstance,JSON.stringify(b),{path:"/",expires:SN.U.GetFullYear(2029,0,1)})},Get:function(){var a=$.cookie(SN.C.S.StatusNetInstance);if(a!==null){return JSON.parse(a)}return null},Delete:function(){$.cookie(SN.C.S.StatusNetInstance,null)}},belongsOnTimeline:function(b){var a=$("body").attr("id");if(a=="public"){return true}var c=$("#nav_profile a").attr("href");if(c){var d=$(b).find(".vcard.author a.url").attr("href");if(d==c){if(a=="all"||a=="showstream"){return true}}}return false},switchInputFormTab:function(a){$(".input_form_nav_tab.current").removeClass("current");$("#input_form_nav_"+a).addClass("current");$(".input_form.current").removeClass("current");$("#input_form_"+a).addClass("current")}},Init:{NoticeForm:function(){if($("body.user_in").length>0){$(".ajax-notice").each(function(){var a=$(this);SN.Init.NoticeFormSetup(a)})}},NoticeFormSetup:function(a){SN.U.NoticeLocationAttach(a);SN.U.FormNoticeXHR(a);SN.U.FormNoticeEnhancements(a);SN.U.NoticeDataAttach(a)},Notices:function(){if($("body.user_in").length>0){var a=$(".form_notice:first");if(a.length>0){SN.C.I.NoticeFormMaster=document._importNode(a[0],true)}SN.U.NoticeRepeat();SN.U.NoticeReply();SN.U.NoticeInlineReplySetup()}SN.U.NoticeAttachments()},EntityActions:function(){if($("body.user_in").length>0){SN.U.NewDirectMessage()}},Login:function(){if(SN.U.StatusNetInstance.Get()!==null){var a=SN.U.StatusNetInstance.Get().Nickname;if(a!==null){$("#form_login #nickname").val(a)}}$("#form_login").bind("submit",function(){SN.U.StatusNetInstance.Set({Nickname:$("#form_login #nickname").val()});return true})},AjaxForms:function(){$("form.ajax").live("submit",function(){SN.U.FormXHR($(this));return false})},UploadForms:function(){$("input[type=file]").change(function(d){if(typeof this.files=="object"&&this.files.length>0){var c=0;for(var b=0;b<this.files.length;b++){c+=this.files[b].size}var a=SN.U.maxFileSize($(this.form));if(a>0&&c>a){var e="File too large: maximum upload size is %d bytes.";alert(e.replace("%d",a));$(this).val("");d.preventDefault();return false}}})}}};$(document).ready(function(){SN.Init.AjaxForms();SN.Init.UploadForms();if($("."+SN.C.S.FormNotice).length>0){SN.Init.NoticeForm()}if($("#content .notices").length>0){SN.Init.Notices()}if($("#content .entity_actions").length>0){SN.Init.EntityActions()}if($("#form_login").length>0){SN.Init.Login()}});if(!document.ELEMENT_NODE){document.ELEMENT_NODE=1;document.ATTRIBUTE_NODE=2;document.TEXT_NODE=3;document.CDATA_SECTION_NODE=4;document.ENTITY_REFERENCE_NODE=5;document.ENTITY_NODE=6;document.PROCESSING_INSTRUCTION_NODE=7;document.COMMENT_NODE=8;document.DOCUMENT_NODE=9;document.DOCUMENT_TYPE_NODE=10;document.DOCUMENT_FRAGMENT_NODE=11;document.NOTATION_NODE=12}document._importNode=function(e,a){switch(e.nodeType){case document.ELEMENT_NODE:var d=document.createElement(e.nodeName);if(e.attributes&&e.attributes.length>0){for(var c=0,b=e.attributes.length;c<b;){if(e.attributes[c].nodeName=="class"){d.className=e.getAttribute(e.attributes[c++].nodeName)}else{d.setAttribute(e.attributes[c].nodeName,e.getAttribute(e.attributes[c++].nodeName))}}}if(a&&e.childNodes&&e.childNodes.length>0){for(var c=0,b=e.childNodes.length;c<b;){d.appendChild(document._importNode(e.childNodes[c++],a))}}return d;break;case document.TEXT_NODE:case document.CDATA_SECTION_NODE:case document.COMMENT_NODE:return document.createTextNode(e.nodeValue);break}};if(typeof navigator.geolocation=="undefined"||navigator.geolocation.shim){(function(){(function(){if(window.google&&google.gears){return}var c=null;if(typeof GearsFactory!="undefined"){c=new GearsFactory()}else{try{c=new ActiveXObject("Gears.Factory");if(c.getBuildInfo().indexOf("ie_mobile")!=-1){c.privateSetGlobalObject(this)}}catch(d){if((typeof navigator.mimeTypes!="undefined")&&navigator.mimeTypes["application/x-googlegears"]){c=document.createElement("object");c.style.display="none";c.width=0;c.height=0;c.type="application/x-googlegears";document.documentElement.appendChild(c)}}}if(!c){return}if(!window.google){google={}}if(!google.gears){google.gears={factory:c}}})();var a=(function(){var d=google.gears.factory.create("beta.geolocation");var c=function(f,e){return function(g){f(g);e.lastPosition=g}};return{shim:true,type:"Gears",lastPosition:null,getCurrentPosition:function(e,g,h){var f=this;var i=c(e,f);d.getCurrentPosition(i,g,h)},watchPosition:function(e,f,g){d.watchPosition(e,f,g)},clearWatch:function(e){d.clearWatch(e)},getPermission:function(g,e,f){d.getPermission(g,e,f)}}});var b=(function(){var i=false;var e=function(){if(!d()&&!i){i=true;var j=document.createElement("script");j.src=(document.location.protocol=="https:"?"https://":"http://")+"www.google.com/jsapi?callback=_google_loader_apiLoaded";j.type="text/javascript";document.getElementsByTagName("body")[0].appendChild(j)}};var c=[];var h=function(j){c.push(j)};var f=function(){if(d()){while(c.length>0){var j=c.pop();j()}}};window._google_loader_apiLoaded=function(){f()};var d=function(){return(window.google&&google.loader)};var g=function(j){if(d()){return true}h(j);e();return false};e();return{shim:true,type:"ClientLocation",lastPosition:null,getCurrentPosition:function(k,n,o){var m=this;if(!g(function(){m.getCurrentPosition(k,n,o)})){return}if(google.loader.ClientLocation){var l=google.loader.ClientLocation;var j={coords:{latitude:l.latitude,longitude:l.longitude,altitude:null,accuracy:43000,altitudeAccuracy:null,heading:null,speed:null},address:{city:l.address.city,country:l.address.country,country_code:l.address.country_code,region:l.address.region},timestamp:new Date()};k(j);this.lastPosition=j}else{if(n==="function"){n({code:3,message:"Using the Google ClientLocation API and it is not able to calculate a location."})}}},watchPosition:function(j,l,m){this.getCurrentPosition(j,l,m);var k=this;var n=setInterval(function(){k.getCurrentPosition(j,l,m)},10000);return n},clearWatch:function(j){clearInterval(j)},getPermission:function(l,j,k){return true}}});navigator.geolocation=(window.google&&google.gears)?a():b()})()};
\ No newline at end of file
+var SN={C:{I:{CounterBlackout:false,MaxLength:140,PatternUsername:/^[0-9a-zA-Z\-_.]*$/,HTTP20x30x:[200,201,202,203,204,205,206,300,301,302,303,304,305,306,307],NoticeFormMaster:null},S:{Disabled:"disabled",Warning:"warning",Error:"error",Success:"success",Processing:"processing",CommandResult:"command_result",FormNotice:"form_notice",NoticeDataGeo:"notice_data-geo",NoticeDataGeoCookie:"NoticeDataGeo",NoticeDataGeoSelected:"notice_data-geo_selected",StatusNetInstance:"StatusNetInstance"}},messages:{},msg:function(a){if(typeof SN.messages[a]=="undefined"){return"["+a+"]"}else{return SN.messages[a]}},U:{FormNoticeEnhancements:function(b){if(jQuery.data(b[0],"ElementData")===undefined){MaxLength=b.find(".count").text();if(typeof(MaxLength)=="undefined"){MaxLength=SN.C.I.MaxLength}jQuery.data(b[0],"ElementData",{MaxLength:MaxLength});SN.U.Counter(b);NDT=b.find(".notice_data-text:first");NDT.bind("keyup",function(c){SN.U.Counter(b)});var a=function(c){window.setTimeout(function(){SN.U.Counter(b)},50)};NDT.bind("cut",a).bind("paste",a)}else{b.find(".count").text(jQuery.data(b[0],"ElementData").MaxLength)}},Counter:function(d){SN.C.I.FormNoticeCurrent=d;var b=jQuery.data(d[0],"ElementData").MaxLength;if(b<=0){return}var c=b-SN.U.CharacterCount(d);var a=d.find(".count");if(c.toString()!=a.text()){if(!SN.C.I.CounterBlackout||c===0){if(a.text()!=String(c)){a.text(c)}if(c<0){d.addClass(SN.C.S.Warning)}else{d.removeClass(SN.C.S.Warning)}if(!SN.C.I.CounterBlackout){SN.C.I.CounterBlackout=true;SN.C.I.FormNoticeCurrent=d;window.setTimeout("SN.U.ClearCounterBlackout(SN.C.I.FormNoticeCurrent);",500)}}}},CharacterCount:function(a){return a.find(".notice_data-text:first").val().length},ClearCounterBlackout:function(a){SN.C.I.CounterBlackout=false;SN.U.Counter(a)},RewriteAjaxAction:function(a){if(document.location.protocol=="https:"&&a.substr(0,5)=="http:"){return a.replace(/^http:\/\/[^:\/]+/,"https://"+document.location.host)}else{return a}},FormXHR:function(a){$.ajax({type:"POST",dataType:"xml",url:SN.U.RewriteAjaxAction(a.attr("action")),data:a.serialize()+"&ajax=1",beforeSend:function(b){a.addClass(SN.C.S.Processing).find(".submit").addClass(SN.C.S.Disabled).attr(SN.C.S.Disabled,SN.C.S.Disabled)},error:function(c,d,b){alert(b||d)},success:function(b,c){if(typeof($("form",b)[0])!="undefined"){form_new=document._importNode($("form",b)[0],true);a.replaceWith(form_new)}else{a.replaceWith(document._importNode($("p",b)[0],true))}}})},FormNoticeXHR:function(b){SN.C.I.NoticeDataGeo={};b.append('<input type="hidden" name="ajax" value="1"/>');b.attr("action",SN.U.RewriteAjaxAction(b.attr("action")));var c=function(d,e){b.append($('<p class="form_response"></p>').addClass(d).text(e))};var a=function(){b.find(".form_response").remove()};b.ajaxForm({dataType:"xml",timeout:"60000",beforeSend:function(d){if(b.find(".notice_data-text:first").val()==""){b.addClass(SN.C.S.Warning);return false}b.addClass(SN.C.S.Processing).find(".submit").addClass(SN.C.S.Disabled).attr(SN.C.S.Disabled,SN.C.S.Disabled);SN.U.normalizeGeoData(b);return true},error:function(f,g,e){b.removeClass(SN.C.S.Processing).find(".submit").removeClass(SN.C.S.Disabled).removeAttr(SN.C.S.Disabled,SN.C.S.Disabled);a();if(g=="timeout"){c("error","Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.")}else{var d=SN.U.GetResponseXML(f);if($("."+SN.C.S.Error,d).length>0){b.append(document._importNode($("."+SN.C.S.Error,d)[0],true))}else{if(parseInt(f.status)===0||jQuery.inArray(parseInt(f.status),SN.C.I.HTTP20x30x)>=0){b.resetForm().find(".attach-status").remove();SN.U.FormNoticeEnhancements(b)}else{c("error","(Sorry! We had trouble sending your notice ("+f.status+" "+f.statusText+"). Please report the problem to the site administrator if this happens again.")}}}},success:function(i,f){a();var n=$("#"+SN.C.S.Error,i);if(n.length>0){c("error",n.text())}else{if($("body")[0].id=="bookmarklet"){self.close()}var d=$("#"+SN.C.S.CommandResult,i);if(d.length>0){c("success",d.text())}else{var m=document._importNode($("li",i)[0],true);var k=$("#notices_primary .notices:first");var l=b.closest("li.notice-reply");if(l.length>0){var e=$(m).attr("id");if($("#"+e).length==0){var j=l.closest("li.notice");l.replaceWith(m);SN.U.NoticeInlineReplyPlaceholder(j)}else{l.remove()}}else{if(k.length>0&&SN.U.belongsOnTimeline(m)){if($("#"+m.id).length===0){var h=b.find("[name=inreplyto]").val();var g="#notices_primary #notice-"+h;if($("body")[0].id=="conversation"){if(h.length>0&&$(g+" .notices").length<1){$(g).append('<ul class="notices"></ul>')}$($(g+" .notices")[0]).append(m)}else{k.prepend(m)}$("#"+m.id).css({display:"none"}).fadeIn(2500);SN.U.NoticeWithAttachment($("#"+m.id));SN.U.switchInputFormTab("placeholder")}}else{c("success",$("title",i).text())}}}b.resetForm();b.find("[name=inreplyto]").val("");b.find(".attach-status").remove();SN.U.FormNoticeEnhancements(b)}},complete:function(d,e){b.removeClass(SN.C.S.Processing).find(".submit").removeAttr(SN.C.S.Disabled).removeClass(SN.C.S.Disabled);b.find("[name=lat]").val(SN.C.I.NoticeDataGeo.NLat);b.find("[name=lon]").val(SN.C.I.NoticeDataGeo.NLon);b.find("[name=location_ns]").val(SN.C.I.NoticeDataGeo.NLNS);b.find("[name=location_id]").val(SN.C.I.NoticeDataGeo.NLID);b.find("[name=notice_data-geo]").attr("checked",SN.C.I.NoticeDataGeo.NDG)}})},normalizeGeoData:function(a){SN.C.I.NoticeDataGeo.NLat=a.find("[name=lat]").val();SN.C.I.NoticeDataGeo.NLon=a.find("[name=lon]").val();SN.C.I.NoticeDataGeo.NLNS=a.find("[name=location_ns]").val();SN.C.I.NoticeDataGeo.NLID=a.find("[name=location_id]").val();SN.C.I.NoticeDataGeo.NDG=a.find("[name=notice_data-geo]").attr("checked");var b=$.cookie(SN.C.S.NoticeDataGeoCookie);if(b!==null&&b!="disabled"){b=JSON.parse(b);SN.C.I.NoticeDataGeo.NLat=a.find("[name=lat]").val(b.NLat).val();SN.C.I.NoticeDataGeo.NLon=a.find("[name=lon]").val(b.NLon).val();if(b.NLNS){SN.C.I.NoticeDataGeo.NLNS=a.find("[name=location_ns]").val(b.NLNS).val();SN.C.I.NoticeDataGeo.NLID=a.find("[name=location_id]").val(b.NLID).val()}else{a.find("[name=location_ns]").val("");a.find("[name=location_id]").val("")}}if(b=="disabled"){SN.C.I.NoticeDataGeo.NDG=a.find("[name=notice_data-geo]").attr("checked",false).attr("checked")}else{SN.C.I.NoticeDataGeo.NDG=a.find("[name=notice_data-geo]").attr("checked",true).attr("checked")}},GetResponseXML:function(b){try{return b.responseXML}catch(a){return(new DOMParser()).parseFromString(b.responseText,"text/xml")}},NoticeReply:function(){$("#content .notice_reply").live("click",function(c){c.preventDefault();var b=$(this).closest("li.notice");var a=($(".author .nickname",b).length>0)?$($(".author .nickname",b)[0]):$(".author .nickname.uid");SN.U.NoticeInlineReplyTrigger(b,"@"+a.text());return false})},NoticeReplyTo:function(a){},NoticeInlineReplyTrigger:function(h,i){var b=$($(".notice_id",h)[0]).text();var e=h;var f=h.closest(".notices");if(f.hasClass("threaded-replies")){e=f.closest(".notice")}else{f=$("ul.threaded-replies",h);if(f.length==0){f=$('<ul class="notices threaded-replies xoxo"></ul>');h.append(f)}}var j=$(".notice-reply-form",f);var d=function(){j.find("input[name=inreplyto]").val(b);var m=j.find("textarea");if(m.length==0){throw"No textarea"}var l="";if(i){l=i+" "}m.val(l+m.val().replace(RegExp(l,"i"),""));m.data("initialText",$.trim(i+""));m.focus();if(m[0].setSelectionRange){var k=m.val().length;m[0].setSelectionRange(k,k)}};if(j.length>0){d()}else{f.find("li.notice-reply-placeholder").remove();var g=$("li.notice-reply",f);if(g.length==0){g=$('<li class="notice-reply"></li>');var c=function(k){var l=document._importNode(k,true);g.append(l);f.append(g);var m=j=$(l);SN.Init.NoticeFormSetup(m);d()};if(SN.C.I.NoticeFormMaster){c(SN.C.I.NoticeFormMaster)}else{var a=$("#form_notice").attr("action");$.get(a,{ajax:1},function(k,m,l){c($("form",k)[0])})}}}},NoticeInlineReplyPlaceholder:function(b){var a=b.find("ul.threaded-replies");var c=$('<li class="notice-reply-placeholder"><input class="placeholder"></li>');c.find("input").val(SN.msg("reply_placeholder"));a.append(c)},NoticeInlineReplySetup:function(){$("li.notice-reply-placeholder input").live("focus",function(){var a=$(this).closest("li.notice");SN.U.NoticeInlineReplyTrigger(a);return false})},NoticeRepeat:function(){$(".form_repeat").live("click",function(a){a.preventDefault();SN.U.NoticeRepeatConfirmation($(this));return false})},NoticeRepeatConfirmation:function(a){var c=a.find(".submit");var b=c.clone();b.addClass("submit_dialogbox").removeClass("submit");a.append(b);b.bind("click",function(){SN.U.FormXHR(a);return false});c.hide();a.addClass("dialogbox").append('<button class="close">&#215;</button>').closest(".notice-options").addClass("opaque");a.find("button.close").click(function(){$(this).remove();a.removeClass("dialogbox").closest(".notice-options").removeClass("opaque");a.find(".submit_dialogbox").remove();a.find(".submit").show();return false})},NoticeAttachments:function(){$(".notice a.attachment").each(function(){SN.U.NoticeWithAttachment($(this).closest(".notice"))})},NoticeWithAttachment:function(b){if(b.find(".attachment").length===0){return}var a=b.find(".attachment.more");if(a.length>0){$(a[0]).click(function(){var c=$(this);c.addClass(SN.C.S.Processing);$.get(c.attr("href")+"/ajax",null,function(d){c.parent(".entry-content").html($(d).find("#attachment_view .entry-content").html())});return false}).attr("title",SN.msg("showmore_tooltip"))}},NoticeDataAttach:function(b){var a=b.find("input[type=file]");a.change(function(f){b.find(".attach-status").remove();var d=$(this).val();if(!d){return false}var c=$('<div class="attach-status '+SN.C.S.Success+'"><code></code> <button class="close">&#215;</button></div>');c.find("code").text(d);c.find("button").click(function(){c.remove();a.val("");return false});b.append(c);if(typeof this.files=="object"){for(var e=0;e<this.files.length;e++){SN.U.PreviewAttach(b,this.files[e])}}})},maxFileSize:function(b){var a=$(b).find("input[name=MAX_FILE_SIZE]").attr("value");if(a){return parseInt(a)}else{return 0}},PreviewAttach:function(d,c){var e=c.type+" "+Math.round(c.size/1024)+"KB";var f=true;var h;if(typeof window.createObjectURL!="undefined"){h=function(i,j){j(window.createObjectURL(i))}}else{if(typeof window.FileReader!="undefined"){h=function(j,k){var i=new FileReader();i.onload=function(l){k(i.result)};i.readAsDataURL(j)}}else{f=false}}var a=["image/png","image/jpeg","image/gif","image/svg+xml"];if($.inArray(c.type,a)==-1){f=false}var g=8*1024*1024;if(c.size>g){f=false}if(f){h(c,function(j){var i=$("<img>").attr("title",e).attr("alt",e).attr("src",j).attr("style","height: 120px");d.find(".attach-status").append(i)})}else{var b=$("<div></div>").text(e);d.find(".attach-status").append(b)}},NoticeLocationAttach:function(a){var e=a.find("[name=lat]");var k=a.find("[name=lon]");var g=a.find("[name=location_ns]").val();var l=a.find("[name=location_id]").val();var b="";var d=a.find("[name=notice_data-geo]");var c=a.find("[name=notice_data-geo]");var j=a.find("label.notice_data-geo");function f(n){j.attr("title",jQuery.trim(j.text())).removeClass("checked");a.find("[name=lat]").val("");a.find("[name=lon]").val("");a.find("[name=location_ns]").val("");a.find("[name=location_id]").val("");a.find("[name=notice_data-geo]").attr("checked",false);$.cookie(SN.C.S.NoticeDataGeoCookie,"disabled",{path:"/"});if(n){a.find(".geo_status_wrapper").removeClass("success").addClass("error");a.find(".geo_status_wrapper .geo_status").text(n)}else{a.find(".geo_status_wrapper").remove()}}function m(n,o){SN.U.NoticeGeoStatus(a,"Looking up place name...");$.getJSON(n,o,function(p){var q,r;if(typeof(p.location_ns)!="undefined"){a.find("[name=location_ns]").val(p.location_ns);q=p.location_ns}if(typeof(p.location_id)!="undefined"){a.find("[name=location_id]").val(p.location_id);r=p.location_id}if(typeof(p.name)=="undefined"){NLN_text=o.lat+";"+o.lon}else{NLN_text=p.name}SN.U.NoticeGeoStatus(a,NLN_text,o.lat,o.lon,p.url);j.attr("title",NoticeDataGeo_text.ShareDisable+" ("+NLN_text+")");a.find("[name=lat]").val(o.lat);a.find("[name=lon]").val(o.lon);a.find("[name=location_ns]").val(q);a.find("[name=location_id]").val(r);a.find("[name=notice_data-geo]").attr("checked",true);var s={NLat:o.lat,NLon:o.lon,NLNS:q,NLID:r,NLN:NLN_text,NLNU:p.url,NDG:true};$.cookie(SN.C.S.NoticeDataGeoCookie,JSON.stringify(s),{path:"/"})})}if(c.length>0){if($.cookie(SN.C.S.NoticeDataGeoCookie)=="disabled"){c.attr("checked",false)}else{c.attr("checked",true)}var h=a.find(".notice_data-geo_wrap");var i=h.attr("data-api");j.attr("title",j.text());c.change(function(){if(c.attr("checked")===true||$.cookie(SN.C.S.NoticeDataGeoCookie)===null){j.attr("title",NoticeDataGeo_text.ShareDisable).addClass("checked");if($.cookie(SN.C.S.NoticeDataGeoCookie)===null||$.cookie(SN.C.S.NoticeDataGeoCookie)=="disabled"){if(navigator.geolocation){SN.U.NoticeGeoStatus(a,"Requesting location from browser...");navigator.geolocation.getCurrentPosition(function(p){a.find("[name=lat]").val(p.coords.latitude);a.find("[name=lon]").val(p.coords.longitude);var q={lat:p.coords.latitude,lon:p.coords.longitude,token:$("#token").val()};m(i,q)},function(p){switch(p.code){case p.PERMISSION_DENIED:f("Location permission denied.");break;case p.TIMEOUT:f("Location lookup timeout.");break}},{timeout:10000})}else{if(e.length>0&&k.length>0){var n={lat:e,lon:k,token:$("#token").val()};m(i,n)}else{f();c.remove();j.remove()}}}else{var o=JSON.parse($.cookie(SN.C.S.NoticeDataGeoCookie));a.find("[name=lat]").val(o.NLat);a.find("[name=lon]").val(o.NLon);a.find("[name=location_ns]").val(o.NLNS);a.find("[name=location_id]").val(o.NLID);a.find("[name=notice_data-geo]").attr("checked",o.NDG);SN.U.NoticeGeoStatus(a,o.NLN,o.NLat,o.NLon,o.NLNU);j.attr("title",NoticeDataGeo_text.ShareDisable+" ("+o.NLN+")").addClass("checked")}}else{f()}}).change()}},NoticeGeoStatus:function(e,a,f,g,c){var h=e.find(".geo_status_wrapper");if(h.length==0){h=$('<div class="'+SN.C.S.Success+' geo_status_wrapper"><button class="close" style="float:right">&#215;</button><div class="geo_status"></div></div>');h.find("button.close").click(function(){e.find("[name=notice_data-geo]").removeAttr("checked").change();return false});e.append(h)}var b;if(c){b=$("<a></a>").attr("href",c)}else{b=$("<span></span>")}b.text(a);if(f||g){var d=f+";"+g;b.attr("title",d);if(!a){b.text(d)}}h.find(".geo_status").empty().append(b)},NewDirectMessage:function(){NDM=$(".entity_send-a-message a");NDM.attr({href:NDM.attr("href")+"&ajax=1"});NDM.bind("click",function(){var a=$(".entity_send-a-message form");if(a.length===0){$(this).addClass(SN.C.S.Processing);$.get(NDM.attr("href"),null,function(b){$(".entity_send-a-message").append(document._importNode($("form",b)[0],true));a=$(".entity_send-a-message .form_notice");SN.U.FormNoticeXHR(a);SN.U.FormNoticeEnhancements(a);a.append('<button class="close">&#215;</button>');$(".entity_send-a-message button").click(function(){a.hide();return false});NDM.removeClass(SN.C.S.Processing)})}else{a.show();$(".entity_send-a-message textarea").focus()}return false})},GetFullYear:function(c,d,a){var b=new Date();b.setFullYear(c,d,a);return b},StatusNetInstance:{Set:function(b){var a=SN.U.StatusNetInstance.Get();if(a!==null){b=$.extend(a,b)}$.cookie(SN.C.S.StatusNetInstance,JSON.stringify(b),{path:"/",expires:SN.U.GetFullYear(2029,0,1)})},Get:function(){var a=$.cookie(SN.C.S.StatusNetInstance);if(a!==null){return JSON.parse(a)}return null},Delete:function(){$.cookie(SN.C.S.StatusNetInstance,null)}},belongsOnTimeline:function(b){var a=$("body").attr("id");if(a=="public"){return true}var c=$("#nav_profile a").attr("href");if(c){var d=$(b).find(".vcard.author a.url").attr("href");if(d==c){if(a=="all"||a=="showstream"){return true}}}return false},switchInputFormTab:function(a){$(".input_form_nav_tab.current").removeClass("current");if(a=="placeholder"){$("#input_form_nav_status").addClass("current")}else{$("#input_form_nav_"+a).addClass("current")}$(".input_form.current").removeClass("current");$("#input_form_"+a).addClass("current").find(".ajax-notice").each(function(){var b=$(this);SN.Init.NoticeFormSetup(b)}).find("textarea:first").focus()}},Init:{NoticeForm:function(){if($("body.user_in").length>0){$("#input_form_placeholder input.placeholder").focus(function(){SN.U.switchInputFormTab("status")});$("body").bind("click",function(g){var d=$("#content .input_forms div.current");if(d.length>0){if($("#content .input_forms").has(g.target).length==0){var a=d.find('textarea, input[type=text], input[type=""]');var c=false;a.each(function(){c=c||$(this).val()});if(!c){SN.U.switchInputFormTab("placeholder")}}}var b=$("li.notice-reply");if(b.length>0){var f=$(g.target);b.each(function(){var j=$(this);if(j.has(g.target).length==0){var h=j.find(".notice_data-text:first");var i=$.trim(h.val());if(i==""||i==h.data("initialText")){var e=j.closest("li.notice");j.remove();SN.U.NoticeInlineReplyPlaceholder(e)}}})}})}},NoticeFormSetup:function(a){if(!a.data("NoticeFormSetup")){SN.U.NoticeLocationAttach(a);SN.U.FormNoticeXHR(a);SN.U.FormNoticeEnhancements(a);SN.U.NoticeDataAttach(a);a.data("NoticeFormSetup",true)}},Notices:function(){if($("body.user_in").length>0){var a=$(".form_notice:first");if(a.length>0){SN.C.I.NoticeFormMaster=document._importNode(a[0],true)}SN.U.NoticeRepeat();SN.U.NoticeReply();SN.U.NoticeInlineReplySetup()}SN.U.NoticeAttachments()},EntityActions:function(){if($("body.user_in").length>0){SN.U.NewDirectMessage()}},Login:function(){if(SN.U.StatusNetInstance.Get()!==null){var a=SN.U.StatusNetInstance.Get().Nickname;if(a!==null){$("#form_login #nickname").val(a)}}$("#form_login").bind("submit",function(){SN.U.StatusNetInstance.Set({Nickname:$("#form_login #nickname").val()});return true})},AjaxForms:function(){$("form.ajax").live("submit",function(){SN.U.FormXHR($(this));return false})},UploadForms:function(){$("input[type=file]").change(function(d){if(typeof this.files=="object"&&this.files.length>0){var c=0;for(var b=0;b<this.files.length;b++){c+=this.files[b].size}var a=SN.U.maxFileSize($(this.form));if(a>0&&c>a){var e="File too large: maximum upload size is %d bytes.";alert(e.replace("%d",a));$(this).val("");d.preventDefault();return false}}})}}};$(document).ready(function(){SN.Init.AjaxForms();SN.Init.UploadForms();if($("."+SN.C.S.FormNotice).length>0){SN.Init.NoticeForm()}if($("#content .notices").length>0){SN.Init.Notices()}if($("#content .entity_actions").length>0){SN.Init.EntityActions()}if($("#form_login").length>0){SN.Init.Login()}});if(!document.ELEMENT_NODE){document.ELEMENT_NODE=1;document.ATTRIBUTE_NODE=2;document.TEXT_NODE=3;document.CDATA_SECTION_NODE=4;document.ENTITY_REFERENCE_NODE=5;document.ENTITY_NODE=6;document.PROCESSING_INSTRUCTION_NODE=7;document.COMMENT_NODE=8;document.DOCUMENT_NODE=9;document.DOCUMENT_TYPE_NODE=10;document.DOCUMENT_FRAGMENT_NODE=11;document.NOTATION_NODE=12}document._importNode=function(e,a){switch(e.nodeType){case document.ELEMENT_NODE:var d=document.createElement(e.nodeName);if(e.attributes&&e.attributes.length>0){for(var c=0,b=e.attributes.length;c<b;){if(e.attributes[c].nodeName=="class"){d.className=e.getAttribute(e.attributes[c++].nodeName)}else{d.setAttribute(e.attributes[c].nodeName,e.getAttribute(e.attributes[c++].nodeName))}}}if(a&&e.childNodes&&e.childNodes.length>0){for(var c=0,b=e.childNodes.length;c<b;){d.appendChild(document._importNode(e.childNodes[c++],a))}}return d;break;case document.TEXT_NODE:case document.CDATA_SECTION_NODE:case document.COMMENT_NODE:return document.createTextNode(e.nodeValue);break}};if(typeof navigator.geolocation=="undefined"||navigator.geolocation.shim){(function(){(function(){if(window.google&&google.gears){return}var c=null;if(typeof GearsFactory!="undefined"){c=new GearsFactory()}else{try{c=new ActiveXObject("Gears.Factory");if(c.getBuildInfo().indexOf("ie_mobile")!=-1){c.privateSetGlobalObject(this)}}catch(d){if((typeof navigator.mimeTypes!="undefined")&&navigator.mimeTypes["application/x-googlegears"]){c=document.createElement("object");c.style.display="none";c.width=0;c.height=0;c.type="application/x-googlegears";document.documentElement.appendChild(c)}}}if(!c){return}if(!window.google){google={}}if(!google.gears){google.gears={factory:c}}})();var a=(function(){var d=google.gears.factory.create("beta.geolocation");var c=function(f,e){return function(g){f(g);e.lastPosition=g}};return{shim:true,type:"Gears",lastPosition:null,getCurrentPosition:function(e,g,h){var f=this;var i=c(e,f);d.getCurrentPosition(i,g,h)},watchPosition:function(e,f,g){d.watchPosition(e,f,g)},clearWatch:function(e){d.clearWatch(e)},getPermission:function(g,e,f){d.getPermission(g,e,f)}}});var b=(function(){var i=false;var e=function(){if(!d()&&!i){i=true;var j=document.createElement("script");j.src=(document.location.protocol=="https:"?"https://":"http://")+"www.google.com/jsapi?callback=_google_loader_apiLoaded";j.type="text/javascript";document.getElementsByTagName("body")[0].appendChild(j)}};var c=[];var h=function(j){c.push(j)};var f=function(){if(d()){while(c.length>0){var j=c.pop();j()}}};window._google_loader_apiLoaded=function(){f()};var d=function(){return(window.google&&google.loader)};var g=function(j){if(d()){return true}h(j);e();return false};e();return{shim:true,type:"ClientLocation",lastPosition:null,getCurrentPosition:function(k,n,o){var m=this;if(!g(function(){m.getCurrentPosition(k,n,o)})){return}if(google.loader.ClientLocation){var l=google.loader.ClientLocation;var j={coords:{latitude:l.latitude,longitude:l.longitude,altitude:null,accuracy:43000,altitudeAccuracy:null,heading:null,speed:null},address:{city:l.address.city,country:l.address.country,country_code:l.address.country_code,region:l.address.region},timestamp:new Date()};k(j);this.lastPosition=j}else{if(n==="function"){n({code:3,message:"Using the Google ClientLocation API and it is not able to calculate a location."})}}},watchPosition:function(j,l,m){this.getCurrentPosition(j,l,m);var k=this;var n=setInterval(function(){k.getCurrentPosition(j,l,m)},10000);return n},clearWatch:function(j){clearInterval(j)},getPermission:function(l,j,k){return true}}});navigator.geolocation=(window.google&&google.gears)?a():b()})()};
\ No newline at end of file
index 7614f4be3aec05a568a62d4a6699e2bd3531c060..12464c2c68e768432ebc5bcaf274547efbf9f9d1 100644 (file)
@@ -295,12 +295,21 @@ class Action extends HTMLOutputter // lawsuit
     {
         if (Event::handle('StartShowScripts', array($this))) {
             if (Event::handle('StartShowJQueryScripts', array($this))) {
-                $this->script('jquery.min.js');
-                $this->script('jquery.form.min.js');
-                $this->script('jquery-ui.min.js');
-                $this->script('jquery.cookie.min.js');
-                $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/json2.min.js').'"); }');
-                $this->script('jquery.joverlay.min.js');
+                if (common_config('site', 'minify')) {
+                    $this->script('jquery.min.js');
+                    $this->script('jquery.form.min.js');
+                    $this->script('jquery-ui.min.js');
+                    $this->script('jquery.cookie.min.js');
+                    $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/json2.min.js').'"); }');
+                    $this->script('jquery.joverlay.min.js');
+                } else {
+                    $this->script('jquery.js');
+                    $this->script('jquery.form.js');
+                    $this->script('jquery-ui.min.js');
+                    $this->script('jquery.cookie.js');
+                    $this->inlineScript('if (typeof window.JSON !== "object") { $.getScript("'.common_path('js/json2.js').'"); }');
+                    $this->script('jquery.joverlay.js');
+                }
                 Event::handle('EndShowJQueryScripts', array($this));
             }
             if (Event::handle('StartShowStatusNetScripts', array($this)) &&
@@ -605,9 +614,11 @@ class Action extends HTMLOutputter // lawsuit
                                'class' => 'input_form_nav_tab');
 
                 if ($tag == 'status') {
+                    // We're actually showing the placeholder form,
+                    // but we special-case the 'Status' tab as if
+                    // it were a small version of it.
                     $attrs['class'] .= ' current';
                 }
-
                 $this->elementStart('li', $attrs);
 
                 $this->element('a',
@@ -618,15 +629,18 @@ class Action extends HTMLOutputter // lawsuit
 
             $this->elementEnd('ul');
 
+            $attrs = array('class' => 'input_form current',
+                           'id' => 'input_form_placeholder');
+            $this->elementStart('div', $attrs);
+            $form = new NoticePlaceholderForm($this);
+            $form->show();
+            $this->elementEnd('div');
+
             foreach ($tabs as $tag => $title) {
 
                 $attrs = array('class' => 'input_form',
                                'id' => 'input_form_'.$tag);
 
-                if ($tag == 'status') {
-                    $attrs['class'] .= ' current';
-                }
-
                 $this->elementStart('div', $attrs);
 
                 $form = null;
@@ -671,6 +685,9 @@ class Action extends HTMLOutputter // lawsuit
     function showCore()
     {
         $this->elementStart('div', array('id' => 'core'));
+        $this->elementStart('div', array('id' => 'aside_primary_wrapper'));
+        $this->elementStart('div', array('id' => 'content_wrapper'));
+        $this->elementStart('div', array('id' => 'site_nav_local_views_wrapper'));
         if (Event::handle('StartShowLocalNavBlock', array($this))) {
             $this->showLocalNavBlock();
             Event::handle('EndShowLocalNavBlock', array($this));
@@ -684,6 +701,9 @@ class Action extends HTMLOutputter // lawsuit
             Event::handle('EndShowAside', array($this));
         }
         $this->elementEnd('div');
+        $this->elementEnd('div');
+        $this->elementEnd('div');
+        $this->elementEnd('div');
     }
 
     /**
index d620bf27bb8f3b484b2c5b04236092b5866aac90..241f99564f214287cfd2bae9480054be916a334b 100644 (file)
@@ -533,91 +533,95 @@ class ActivityObject
                        $xo->elementStart($tag);
                }
 
-        $xo->element('activity:object-type', null, $this->type);
+        if (Event::handle('StartActivityObjectOutputAtom', array($this, $xo))) {
+            $xo->element('activity:object-type', null, $this->type);
 
-        // <author> uses URI
+            // <author> uses URI
 
-        if ($tag == 'author') {
-            $xo->element(self::URI, null, $this->id);
-        } else {
-            $xo->element(self::ID, null, $this->id);
-        }
-
-        if (!empty($this->title)) {
-            $name = common_xml_safe_str($this->title);
             if ($tag == 'author') {
-                // XXX: Backward compatibility hack -- atom:name should contain
-                // full name here, instead of nickname, i.e.: $name. Change
-                // this in the next version.
-                $xo->element(self::NAME, null, $this->poco->preferredUsername);
+                $xo->element(self::URI, null, $this->id);
             } else {
-                $xo->element(self::TITLE, null, $name);
+                $xo->element(self::ID, null, $this->id);
             }
-        }
-
-        if (!empty($this->summary)) {
-            $xo->element(
-                self::SUMMARY,
-                null,
-                common_xml_safe_str($this->summary)
-            );
-        }
 
-        if (!empty($this->content)) {
-            // XXX: assuming HTML content here
-            $xo->element(
-                ActivityUtils::CONTENT,
-                array('type' => 'html'),
-                common_xml_safe_str($this->content)
-            );
-        }
+            if (!empty($this->title)) {
+                $name = common_xml_safe_str($this->title);
+                if ($tag == 'author') {
+                    // XXX: Backward compatibility hack -- atom:name should contain
+                    // full name here, instead of nickname, i.e.: $name. Change
+                    // this in the next version.
+                    $xo->element(self::NAME, null, $this->poco->preferredUsername);
+                } else {
+                    $xo->element(self::TITLE, null, $name);
+                }
+            }
 
-        if (!empty($this->link)) {
-            $xo->element(
-                'link',
-                array(
-                    'rel' => 'alternate',
-                    'type' => 'text/html',
-                    'href' => $this->link
-                ),
-                null
-            );
-        }
+            if (!empty($this->summary)) {
+                $xo->element(
+                    self::SUMMARY,
+                    null,
+                    common_xml_safe_str($this->summary)
+                );
+            }
 
-        if ($this->type == ActivityObject::PERSON
-            || $this->type == ActivityObject::GROUP) {
+            if (!empty($this->content)) {
+                // XXX: assuming HTML content here
+                $xo->element(
+                    ActivityUtils::CONTENT,
+                    array('type' => 'html'),
+                    common_xml_safe_str($this->content)
+                );
+            }
 
-            foreach ($this->avatarLinks as $avatar) {
+            if (!empty($this->link)) {
                 $xo->element(
-                    'link', array(
-                        'rel'  => 'avatar',
-                        'type'         => $avatar->type,
-                        'media:width'  => $avatar->width,
-                        'media:height' => $avatar->height,
-                        'href' => $avatar->url
+                    'link',
+                    array(
+                        'rel' => 'alternate',
+                        'type' => 'text/html',
+                        'href' => $this->link
                     ),
                     null
                 );
             }
-        }
 
-        if (!empty($this->geopoint)) {
-            $xo->element(
-                'georss:point',
-                null,
-                $this->geopoint
-            );
-        }
+            if ($this->type == ActivityObject::PERSON
+                || $this->type == ActivityObject::GROUP) {
+
+                foreach ($this->avatarLinks as $avatar) {
+                    $xo->element(
+                        'link', array(
+                            'rel'  => 'avatar',
+                            'type'         => $avatar->type,
+                            'media:width'  => $avatar->width,
+                            'media:height' => $avatar->height,
+                            'href' => $avatar->url
+                        ),
+                        null
+                    );
+                }
+            }
 
-        if (!empty($this->poco)) {
-            $this->poco->outputTo($xo);
-        }
+            if (!empty($this->geopoint)) {
+                $xo->element(
+                    'georss:point',
+                    null,
+                    $this->geopoint
+                );
+            }
+
+            if (!empty($this->poco)) {
+                $this->poco->outputTo($xo);
+            }
+
+            // @fixme there's no way here to make a tree; elements can only contain plaintext
+            // @fixme these may collide with JSON extensions
+            foreach ($this->extra as $el) {
+                list($extraTag, $attrs, $content) = $el;
+                $xo->element($extraTag, $attrs, $content);
+            }
 
-        // @fixme there's no way here to make a tree; elements can only contain plaintext
-        // @fixme these may collide with JSON extensions
-        foreach ($this->extra as $el) {
-            list($extraTag, $attrs, $content) = $el;
-            $xo->element($extraTag, $attrs, $content);
+            Event::handle('EndActivityObjectOutputAtom', array($this, $xo));
         }
 
                if (!empty($tag)) {
@@ -647,94 +651,96 @@ class ActivityObject
     {
         $object = array();
 
-        // XXX: attachedObjects are added by Activity
+        if (Event::handle('StartActivityObjectOutputJson', array($this, &$object))) {
+            // XXX: attachedObjects are added by Activity
 
-        // displayName
-        $object['displayName'] = $this->title;
+            // displayName
+            $object['displayName'] = $this->title;
 
-        // TODO: downstreamDuplicates
+            // TODO: downstreamDuplicates
 
-        // embedCode (used for video)
+            // embedCode (used for video)
 
-        // id
-        //
-        // XXX: Should we use URL here? or a crazy tag URI?
-        $object['id'] = $this->id;
+            // id
+            //
+            // XXX: Should we use URL here? or a crazy tag URI?
+            $object['id'] = $this->id;
 
-        if ($this->type == ActivityObject::PERSON
-            || $this->type == ActivityObject::GROUP) {
+            if ($this->type == ActivityObject::PERSON
+                || $this->type == ActivityObject::GROUP) {
 
-            // XXX: Not sure what the best avatar is to use for the
-            // author's "image". For now, I'm using the large size.
+                // XXX: Not sure what the best avatar is to use for the
+                // author's "image". For now, I'm using the large size.
 
-            $avatarLarge      = null;
-            $avatarMediaLinks = array();
+                $avatarLarge      = null;
+                $avatarMediaLinks = array();
 
-            foreach ($this->avatarLinks as $a) {
+                foreach ($this->avatarLinks as $a) {
 
-                // Make a MediaLink for every other Avatar
-                $avatar = new ActivityStreamsMediaLink(
-                    $a->url,
-                    $a->width,
-                    $a->height,
-                    $a->type,
-                    'avatar'
-                );
+                    // Make a MediaLink for every other Avatar
+                    $avatar = new ActivityStreamsMediaLink(
+                        $a->url,
+                        $a->width,
+                        $a->height,
+                        $a->type,
+                        'avatar'
+                    );
 
-                // Find the big avatar to use as the "image"
-                if ($a->height == AVATAR_PROFILE_SIZE) {
-                    $imgLink = $avatar;
-                }
+                    // Find the big avatar to use as the "image"
+                    if ($a->height == AVATAR_PROFILE_SIZE) {
+                        $imgLink = $avatar;
+                    }
 
-                $avatarMediaLinks[] = $avatar->asArray();
-            }
+                    $avatarMediaLinks[] = $avatar->asArray();
+                }
 
-            $object['avatarLinks'] = $avatarMediaLinks; // extension
+                $object['avatarLinks'] = $avatarMediaLinks; // extension
 
-            // image
-            $object['image']  = $imgLink->asArray();
-        }
+                // image
+                $object['image']  = $imgLink->asArray();
+            }
 
-        // objectType
-        //
-        // We can probably use the whole schema URL here but probably the
-        // relative simple name is easier to parse
-        // @fixme this breaks extension URIs
-        $object['type'] = substr($this->type, strrpos($this->type, '/') + 1);
+            // objectType
+            //
+            // We can probably use the whole schema URL here but probably the
+            // relative simple name is easier to parse
+            // @fixme this breaks extension URIs
+            $object['type'] = substr($this->type, strrpos($this->type, '/') + 1);
 
-        // summary
-        $object['summary'] = $this->summary;
+            // summary
+            $object['summary'] = $this->summary;
 
-        // TODO: upstreamDuplicates
+            // TODO: upstreamDuplicates
 
-        // url (XXX: need to put the right thing here...)
-        $object['url'] = $this->id;
+            // url (XXX: need to put the right thing here...)
+            $object['url'] = $this->id;
 
-        /* Extensions */
-        // @fixme these may collide with XML extensions
-        // @fixme multiple tags of same name will overwrite each other
-        // @fixme text content from XML extensions will be lost
-        foreach ($this->extra as $e) {
-            list($objectName, $props, $txt) = $e;
-            $object[$objectName] = $props;
-        }
+            /* Extensions */
+            // @fixme these may collide with XML extensions
+            // @fixme multiple tags of same name will overwrite each other
+            // @fixme text content from XML extensions will be lost
+            foreach ($this->extra as $e) {
+                list($objectName, $props, $txt) = $e;
+                $object[$objectName] = $props;
+            }
 
-        // GeoJSON
+            // GeoJSON
 
-        if (!empty($this->geopoint)) {
+            if (!empty($this->geopoint)) {
 
-            list($lat, $long) = explode(' ', $this->geopoint);
+                list($lat, $long) = explode(' ', $this->geopoint);
 
-            $object['geopoint'] = array(
-                'type'        => 'Point',
-                'coordinates' => array($lat, $long)
-            );
-        }
+                $object['geopoint'] = array(
+                    'type'        => 'Point',
+                    'coordinates' => array($lat, $long)
+                );
+            }
 
-        if (!empty($this->poco)) {
-            $object['contact'] = $this->poco->asArray();
+            if (!empty($this->poco)) {
+                $object['contact'] = $this->poco->asArray();
+            }
+            Event::handle('EndActivityObjectOutputJson', array($this, &$object));
         }
-
         return array_filter($object);
     }
 }
index 395c6522ec888d72476d785e194475e32641f8f0..f72bed59d62a437b3714c7807c7c9ad357cc5775 100644 (file)
@@ -93,8 +93,14 @@ class InfoAction extends Action
     function showCore()
     {
         $this->elementStart('div', array('id' => 'core'));
+        $this->elementStart('div', array('id' => 'aside_primary_wrapper'));
+        $this->elementStart('div', array('id' => 'content_wrapper'));
+        $this->elementStart('div', array('id' => 'site_nav_local_views_wrapper'));
         $this->showContentBlock();
         $this->elementEnd('div');
+        $this->elementEnd('div');
+        $this->elementEnd('div');
+        $this->elementEnd('div');
     }
 
     function showHeader()
index 93b70a03242b6f99cded929715131965e3f3ab65..86803b8ae3f6c1bd01f822c5f2b13eb4eb97eca4 100644 (file)
@@ -212,6 +212,44 @@ abstract class MicroAppPlugin extends Plugin
                 in_array($activity->objects[0]->type, $types));
     }
 
+    /**
+     * Called when generating Atom XML ActivityStreams output from an
+     * ActivityObject belonging to this plugin. Gives the plugin
+     * a chance to add custom output.
+     *
+     * Note that you can only add output of additional XML elements,
+     * not change existing stuff here.
+     *
+     * If output is already handled by the base Activity classes,
+     * you can leave this base implementation as a no-op.
+     *
+     * @param ActivityObject $obj
+     * @param XMLOutputter $out to add elements at end of object
+     */
+    function activityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out)
+    {
+        // default is a no-op
+    }
+
+    /**
+     * Called when generating JSON ActivityStreams output from an
+     * ActivityObject belonging to this plugin. Gives the plugin
+     * a chance to add custom output.
+     *
+     * Modify the array contents to your heart's content, and it'll
+     * all get serialized out as JSON.
+     *
+     * If output is already handled by the base Activity classes,
+     * you can leave this base implementation as a no-op.
+     *
+     * @param ActivityObject $obj
+     * @param array &$out JSON-targeted array which can be modified
+     */
+    public function activityObjectOutputJson(ActivityObject $obj, array &$out)
+    {
+        // default is a no-op
+    }
+
     /**
      * When a notice is deleted, delete the related objects
      * by calling the overridable $this->deleteRelated().
@@ -308,8 +346,9 @@ abstract class MicroAppPlugin extends Plugin
                              'url' => $object->link,
                              'is_local' => Notice::REMOTE_OMB,
                              'source' => 'ostatus');
-            
-            $this->saveNoticeFromActivity($activity, $actor);
+
+            // $actor is an ostatus_profile
+            $this->saveNoticeFromActivity($activity, $actor->localProfile(), $options);
 
             return false;
         }
@@ -365,7 +404,8 @@ abstract class MicroAppPlugin extends Plugin
                              'is_local' => Notice::REMOTE_OMB,
                              'source' => 'ostatus');
 
-            $this->saveNoticeFromActivity($activity, $actor, $options);
+            // $actor is an ostatus_profile
+            $this->saveNoticeFromActivity($activity, $actor->localProfile(), $options);
 
             return false;
         }
@@ -389,6 +429,7 @@ abstract class MicroAppPlugin extends Plugin
 
             $options = array('source' => 'atompub');
 
+            // $user->getProfile() is a Profile
             $this->saveNoticeFromActivity($activity,
                                           $user->getProfile(),
                                           $options);
@@ -421,6 +462,7 @@ abstract class MicroAppPlugin extends Plugin
                              'url' => $object->link,
                              'source' => 'restore');
 
+            // $user->getProfile() is a Profile
             $saved = $this->saveNoticeFromActivity($activity,
                                                    $user->getProfile(),
                                                    $options);
@@ -435,6 +477,46 @@ abstract class MicroAppPlugin extends Plugin
         return true;
     }
 
+    /**
+     * Event handler gives the plugin a chance to add custom
+     * Atom XML ActivityStreams output from a previously filled-out
+     * ActivityObject.
+     *
+     * The atomOutput method is called if it's one of
+     * our matching types.
+     *
+     * @param ActivityObject $obj
+     * @param XMLOutputter $out to add elements at end of object
+     * @return boolean hook return value
+     */
+    function onEndActivityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out)
+    {
+        if (in_array($obj->type, $this->types())) {
+            $this->activityObjectOutputAtom($obj, $out);
+        }
+        return true;
+    }
+
+    /**
+     * Event handler gives the plugin a chance to add custom
+     * JSON ActivityStreams output from a previously filled-out
+     * ActivityObject.
+     *
+     * The activityObjectOutputJson method is called if it's one of
+     * our matching types.
+     *
+     * @param ActivityObject $obj
+     * @param array &$out JSON-targeted array which can be modified
+     * @return boolean hook return value
+     */
+    function onEndActivityObjectOutputJson(ActivityObject $obj, array &$out)
+    {
+        if (in_array($obj->type, $this->types())) {
+            $this->activityObjectOutputJson($obj, &$out);
+        }
+        return true;
+    }
+
     function onStartShowEntryForms(&$tabs)
     {
         $tabs[$this->tag()] = $this->appTitle();
index 9d931b92ed5d06165e69fb16916dd3c1d4f1d7e0..3909b088d0120d93cbb5c620447ca7e64b4e3bc8 100644 (file)
@@ -186,8 +186,8 @@ class NoticeForm extends Form
 
             if (common_config('attachments', 'uploads')) {
                 $this->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota'));
-                // TRANS: Input label in notice form for adding an attachment.
                 $this->out->elementStart('label', array('class' => 'notice_data-attach'));
+                // TRANS: Input label in notice form for adding an attachment.
                 $this->out->text(_('Attach'));
                 $this->out->element('input', array('class' => 'notice_data-attach',
                                                    'type' => 'file',
@@ -208,7 +208,7 @@ class NoticeForm extends Form
                 $this->out->hidden('notice_data-location_ns', empty($this->location_ns) ? (empty($this->profile->location_ns) ? null : $this->profile->location_ns) : $this->location_ns, 'location_ns');
 
                 $this->out->elementStart('div', array('class' => 'notice_data-geo_wrap',
-                                                      'title' => common_local_url('geocode')));
+                                                      'data-api' => common_local_url('geocode')));
 
                 // @fixme checkbox method allows no way to change the id without changing the name
                 //$this->out->checkbox('notice_data-geo', _('Share my location'), true);
diff --git a/lib/noticeplaceholderform.php b/lib/noticeplaceholderform.php
new file mode 100644 (file)
index 0000000..788a202
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Form for posting a notice
+ *
+ * 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  Form
+ * @package   StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @copyright 2011 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') && !defined('LACONICA')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/lib/form.php';
+
+/**
+ * Placeholder form for posting a notice
+ *
+ * Frequently-used form for posting a notice
+ *
+ * @category Form
+ * @package  StatusNet
+ * @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/
+ *
+ * @see      HTMLOutputter
+ */
+class NoticePlaceholderForm extends Widget
+{
+    function show()
+    {
+        // Similar to that for inline replies, but not quite!
+        $placeholder = _('Update your status...');
+        $this->out->elementStart('div', 'form_notice_placeholder');
+        $this->out->element('input', array('class' => 'placeholder',
+                                           'value' => $placeholder));
+        $this->out->elementEnd('div');
+    }
+}
index 3d6bb98fc02d7c00109d06fda0385a58675f399f..2e15ca5f6a02d3c9eec40802f97dd6759d8ac435 100644 (file)
@@ -63,6 +63,9 @@ class PersonalGroupNav extends Menu
         $nickname     = $user->nickname;
         $name         = $user_profile->getBestName();
 
+        $action = $this->actionName;
+        $mine = ($this->action->arg('nickname') == $nickname); // @fixme kinda vague
+
         $this->out->elementStart('ul', array('class' => 'nav'));
 
         if (Event::handle('StartPersonalGroupNav', array($this))) {
@@ -70,23 +73,23 @@ class PersonalGroupNav extends Menu
                                                                $nickname)),
                                  _('Home'),
                                  sprintf(_('%s and friends'), $name),
-                                 $this->action == 'all', 'nav_timeline_personal');
+                                 $mine && $action =='all', 'nav_timeline_personal');
             $this->out->menuItem(common_local_url('showstream', array('nickname' =>
                                                                       $nickname)),
                                  _('Profile'),
                                  _('Your profile'),
-                                 $this->action == 'showstream',
+                                 $mine && $action =='showstream',
                                  'nav_profile');
             $this->out->menuItem(common_local_url('replies', array('nickname' =>
                                                                    $nickname)),
                                  _('Replies'),
                                  sprintf(_('Replies to %s'), $name),
-                                 $this->action == 'replies', 'nav_timeline_replies');
+                                 $mine && $action =='replies', 'nav_timeline_replies');
             $this->out->menuItem(common_local_url('showfavorites', array('nickname' =>
                                                                          $nickname)),
                                  _('Favorites'),
                                  sprintf(_('%s\'s favorite notices'), ($user_profile) ? $name : _('User')),
-                                 $this->action == 'showfavorites', 'nav_timeline_favorites');
+                                 $mine && $action =='showfavorites', 'nav_timeline_favorites');
 
             $cur = common_current_user();
 
@@ -97,7 +100,7 @@ class PersonalGroupNav extends Menu
                                                                      $nickname)),
                                      _('Messages'),
                                      _('Your incoming messages'),
-                                     $this->action == 'inbox');
+                                     $mine && $action =='inbox');
             }
 
             Event::handle('EndPersonalGroupNav', array($this));
index 73c287eef3b62e5b8d24cd77e666468f9a4d55db..7038424fab1733b2f73c21684fee4b4dda8f729b 100644 (file)
@@ -168,7 +168,5 @@ E_O_T
         $this->elementStart('div', 'help instructions');
         $this->raw(common_markup_to_html($message));
         $this->elementEnd('div');
-
-        $this->elementEnd('div');
     }
 }
index 867ce28ed6c034145c4300384e4594593e47097d..919c9128311ed6be4df361132944c101d2e4826b 100644 (file)
@@ -191,6 +191,12 @@ class ThreadedNoticeListItem extends NoticeListItem
                     $item = new ThreadedNoticeListSubItem($notice, $this->out);
                     $item->show();
                 }
+                // @fixme do a proper can-post check that's consistent
+                // with the JS side
+                if (common_current_user()) {
+                    $item = new ThreadedNoticeListReplyItem($notice, $this->out);
+                    $item->show();
+                }
                 $this->out->elementEnd('ul');
             }
         }
@@ -253,10 +259,7 @@ class ThreadedNoticeListMoreItem extends NoticeListItem
 
     function showStart()
     {
-        if (Event::handle('StartOpenNoticeListItemElement', array($this))) {
-            $id = (empty($this->repeat)) ? $this->notice->id : $this->repeat->id;
-            $this->out->elementStart('li', array('class' => 'notice-reply-comments'));
-        }
+        $this->out->elementStart('li', array('class' => 'notice-reply-comments'));
     }
 
     function showMiniForm()
@@ -270,21 +273,47 @@ class ThreadedNoticeListMoreItem extends NoticeListItem
         $msg = sprintf(_m('Show %d reply', 'Show all %d replies', $n), $n);
 
         $this->out->element('a', array('href' => $url), $msg);
+    }
+}
 
-        // @fixme replace this with an ajax-friendly form pair?
-        /*
-        $this->out->elementStart('form',
-                                 array('id' => $id,
-                                       'class' => 'replyform',
-                                       'method' => 'post',
-                                       'action' => $url));
-        $this->out->hidden('token', common_session_token());
-        $this->out->hidden("$id-inreplyto", $replyToId, "inreplyto");
-        $this->out->element('textarea', array('name' => 'status_textarea'));
-        $this->out->elementStart('div', array('class' => 'controls'));
-        $this->out->submit("$id-submit", _m('Send reply'));
-        $this->out->elementEnd('div');
-        $this->out->elementEnd('form');
-         */
+
+/**
+ * Placeholder for reply form...
+ * Same as get added at runtime via SN.U.NoticeInlineReplyPlaceholder
+ */
+class ThreadedNoticeListReplyItem extends NoticeListItem
+{
+
+    /**
+     * recipe function for displaying a single notice.
+     *
+     * This uses all the other methods to correctly display a notice. Override
+     * it or one of the others to fine-tune the output.
+     *
+     * @return void
+     */
+
+    function show()
+    {
+        $this->showStart();
+        $this->showMiniForm();
+        $this->showEnd();
+    }
+
+    /**
+     * start a single notice.
+     *
+     * @return void
+     */
+
+    function showStart()
+    {
+        $this->out->elementStart('li', array('class' => 'notice-reply-placeholder'));
+    }
+
+    function showMiniForm()
+    {
+        $this->out->element('input', array('class' => 'placeholder',
+                                           'value' => _('Write a reply...')));
     }
 }
\ No newline at end of file
index 655d9cc767dc2192e951d8a227ffcc46dec8b091..17a4cb5b1450c0c56d86517f1d6ea37d2eba2d68 100644 (file)
@@ -12,19 +12,19 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:04:58+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:16:53+0000\n"
 "Language-Team: Arabic <http://translatewiki.net/wiki/Portal:ar>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ar\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=6; plural=(n == 0) ? 0 : ( (n == 1) ? 1 : ( (n == "
 "2) ? 2 : ( (n%100 >= 3 && n%100 <= 10) ? 3 : ( (n%100 >= 11 && n%100 <= "
 "99) ? 4 : 5 ) ) ) );\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1056,7 +1056,7 @@ msgstr "ابحث عن محتويات في الإشعارات"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "غير معروفة"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1635,6 +1635,7 @@ msgstr "احذف هذا المستخدم"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3091,6 +3092,10 @@ msgstr "مسار المصدر ليس صحيحا."
 msgid "Could not create application."
 msgstr "لم يمكن إنشاء التطبيق."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "حجم غير صالح."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "مجموعة جديدة"
@@ -3366,52 +3371,77 @@ msgstr "صندوق %s الصادر"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "هذا صندوق بريدك الصادر، والذي يسرد الرسائل الخاصة التي أرسلتها."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "تغيير كلمة السر"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "غيّر كلمة سرك."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "تغيير كلمة السر"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "كلمة السر القديمة"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "كلمة السر الجديدة"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 أحرف أو أكثر"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "أكّد"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "نفس كلمة السر أعلاه"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "غيّر"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "يجب أن تكون كلمة السر 6 حروف أو أكثر."
 
 msgid "Passwords don't match."
 msgstr "كلمتا السر غير متطابقتين."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "كلمة السر القديمة غير صحيحة"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "خطأ أثناء حفظ المستخدم؛ غير صالح."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "تعذّر حفظ كلمة السر الجديدة."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "حُفظت كلمة السر."
 
@@ -3462,6 +3492,7 @@ msgstr "الموقع"
 msgid "Server"
 msgstr "خادوم"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "اسم مضيف خادوم الموقع."
 
@@ -3469,6 +3500,7 @@ msgstr "اسم مضيف خادوم الموقع."
 msgid "Path"
 msgstr "المسار"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "مسار الموقع"
@@ -3478,6 +3510,7 @@ msgstr "مسار الموقع"
 msgid "Locale directory"
 msgstr "دليل السمات"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "مسار دليل المحليات"
@@ -3486,9 +3519,14 @@ msgstr "مسار دليل المحليات"
 msgid "Fancy URLs"
 msgstr "مسارات فاخرة"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "أأستخدم مسارات فاخرة (يمكن قراءتها وتذكرها بسهولة أكبر)؟"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "السمة"
 
@@ -3614,6 +3652,8 @@ msgid "Directory where attachments are located."
 msgstr "مسار دليل المحليات"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3658,10 +3698,14 @@ msgstr ""
 msgid "People search"
 msgstr "بحث في الأشخاص"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "ليس وسم أشخاص صالح: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "المستخدمون الذين وسموا أنفسهم ب%1$s - الصفحة %2$d"
@@ -3671,15 +3715,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "هذا الإجراء يقبل طلبات POST فقط."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "لا يمكنك حذف المستخدمين."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "لا صفحة كهذه."
@@ -3690,7 +3738,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "الملحقات"
 
@@ -3706,15 +3755,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "اللغة المبدئية"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "محتوى إشعار غير صالح."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3872,44 +3925,58 @@ msgstr "حُفظت الإعدادات."
 msgid "Restore account"
 msgstr "أنشئ حسابًا"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "بعد حد الصفحة (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 #, fuzzy
 msgid "Could not retrieve public stream."
 msgstr "تعذّر إنشاء الكنى."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "المسار الزمني العام، صفحة %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "المسار الزمني العام"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "كن أول من يُرسل!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3922,6 +3989,8 @@ msgstr ""
 "الآن](%%action.register%%) لتشارك اشعاراتك مع أصدقائك وعائلتك وزملائك! "
 "([اقرأ المزيد](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5571,6 +5640,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "الملحقات"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "الاسم"
@@ -6080,6 +6153,9 @@ msgstr "الأمر لم يُجهزّ بعد."
 msgid "Unable to delete design setting."
 msgstr "تعذّر حذف إعدادات التصميم."
 
+msgid "Home"
+msgstr "الرئيسية"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "ضبط الموقع الأساسي"
@@ -6737,9 +6813,6 @@ msgstr "اذهب إلى المُثبّت."
 msgid "Database error"
 msgstr "خطأ قاعدة بيانات"
 
-msgid "Home"
-msgstr "الرئيسية"
-
 msgid "Public"
 msgstr "عام"
 
@@ -7487,7 +7560,6 @@ msgstr "أرسل إشعارًا"
 msgid "What's up, %s?"
 msgstr "ما الأخبار يا %s؟"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "أرفق"
 
@@ -7554,6 +7626,9 @@ msgstr "احذف هذا الإشعار"
 msgid "Notice repeated"
 msgstr "الإشعار مكرر"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "نبّه هذا المستخدم"
 
@@ -8086,11 +8161,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "مسار %s الزمني"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "ابحث عن أشخاص على هذا الموقع"
index f0c94461f91c85b746056b9ff5e9578cc06aa583..96a8a02c59502cd23b902de90201cb4639b1dc16 100644 (file)
@@ -11,19 +11,19 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:04:59+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:16:54+0000\n"
 "Language-Team: Egyptian Spoken Arabic <http://translatewiki.net/wiki/Portal:"
 "arz>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: arz\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
 "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1076,7 +1076,7 @@ msgstr "ابحث عن محتويات فى الإشعارات"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "مش معروف"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1664,6 +1664,7 @@ msgstr "احذف هذا المستخدم"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3139,6 +3140,10 @@ msgstr "الSource URL مش مظبوط."
 msgid "Could not create application."
 msgstr "مش ممكن إنشاء الapplication."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "حجم غير صالح."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "مجموعه جديدة"
@@ -3413,52 +3418,77 @@ msgstr "صندوق الصادر"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "غيّر كلمه السر"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "غيّر كلمه سرك."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "تغيير كلمه السر"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "كلمه السر القديمة"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "كلمه سر جديدة"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 حروف أو أكثر. مطلوب."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "أكّد"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "نفس كلمه السر أعلاه"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "غيّر"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "يجب أن تكون كلمه السر 6 حروف أو أكثر."
 
 msgid "Passwords don't match."
 msgstr "كلمتا السر غير متطابقتين."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "كلمه السر القديمه غير صحيحة"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "خطأ أثناء حفظ المستخدم؛ غير صالح."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "تعذّر حفظ كلمه السر الجديده."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "حُفظت كلمه السر."
 
@@ -3509,6 +3539,7 @@ msgstr "الموقع"
 msgid "Server"
 msgstr "خادوم"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "اسم مضيف خادوم الموقع."
 
@@ -3516,6 +3547,7 @@ msgstr "اسم مضيف خادوم الموقع."
 msgid "Path"
 msgstr "المسار"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "مسار الموقع"
@@ -3525,6 +3557,7 @@ msgstr "مسار الموقع"
 msgid "Locale directory"
 msgstr "دليل السمات"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "مسار دليل المحليات"
@@ -3533,9 +3566,14 @@ msgstr "مسار دليل المحليات"
 msgid "Fancy URLs"
 msgstr "مسارات فاخرة"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "أأستخدم مسارات فاخره (يمكن قراءتها وتذكرها بسهوله أكبر)؟"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "السمة"
 
@@ -3661,6 +3699,8 @@ msgid "Directory where attachments are located."
 msgstr "مسار دليل المحليات"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3703,10 +3743,14 @@ msgstr ""
 msgid "People search"
 msgstr "بحث فى الأشخاص"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "ليس عنوان بريد صالح."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
@@ -3716,15 +3760,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "لا يمكنك حذف المستخدمين."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "لا وسم كهذا."
@@ -3735,7 +3783,7 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr ""
 
@@ -3751,15 +3799,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "اللغه المفضلة"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "حجم غير صالح."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3913,44 +3965,58 @@ msgstr "حُفظت الإعدادات."
 msgid "Restore account"
 msgstr "أنشئ مجموعه جديدة"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, fuzzy, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "وراء حد الصفحه (%s)"
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 #, fuzzy
 msgid "Could not retrieve public stream."
 msgstr "تعذّر إنشاء الكنى."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "المسار الزمنى العام، صفحه %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "المسار الزمنى العام"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "كن أول من يُرسل!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3963,6 +4029,8 @@ msgstr ""
 "الآن](%%action.register%%) لتشارك اشعاراتك مع أصدقائك وعائلتك وزملائك! "
 "([اقرأ المزيد](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5606,6 +5674,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr ""
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "الاسم"
@@ -6116,6 +6188,9 @@ msgstr "المستخدم ليس مُسكتًا."
 msgid "Unable to delete design setting."
 msgstr "تعذّر حذف إعدادات التصميم."
 
+msgid "Home"
+msgstr "الرئيسية"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "ضبط الموقع الأساسي"
@@ -6747,9 +6822,6 @@ msgstr "اذهب إلى المُثبّت."
 msgid "Database error"
 msgstr "خطأ قاعده بيانات"
 
-msgid "Home"
-msgstr "الرئيسية"
-
 msgid "Public"
 msgstr "عام"
 
@@ -7480,7 +7552,6 @@ msgstr "أرسل إشعارًا"
 msgid "What's up, %s?"
 msgstr "ما الأخبار يا %s؟"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "أرفق"
 
@@ -7547,6 +7618,9 @@ msgstr "احذف هذا الإشعار"
 msgid "Notice repeated"
 msgstr "الإشعار مكرر"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "نبّه هذا المستخدم"
 
@@ -8085,11 +8159,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "مسار %s الزمني"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "ابحث عن أشخاص على هذا الموقع"
index e9a3b189d3fcb9f7aa38a60715b607c660e0bd05..eaabeec93f06c839085f240df4c92de905b85418 100644 (file)
@@ -11,17 +11,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:00+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:16:55+0000\n"
 "Language-Team: Bulgarian <http://translatewiki.net/wiki/Portal:bg>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: bg\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1041,7 +1041,7 @@ msgstr "Търсене в съдържанието на бележките"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Непознато"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1621,6 +1621,7 @@ msgstr "Изтриване на този потребител"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3140,6 +3141,10 @@ msgstr "Името е задължително."
 msgid "Could not create application."
 msgstr "Грешка при отбелязване като любима."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Неправилен размер."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Нова група"
@@ -3419,53 +3424,78 @@ msgstr "Изходяща кутия за %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "Това е изходящата ви кутия с лични съобщения до други потребители."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Смяна на паролата"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Смяна на паролата."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 #, fuzzy
 msgid "Password change"
 msgstr "Паролата е записана."
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Стара парола"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Нова парола"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 или повече знака"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Потвърждаване"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Също като паролата по-горе"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Промяна"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Паролата трябва да е 6 или повече знака."
 
 msgid "Passwords don't match."
 msgstr "Паролите не съвпадат."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Грешна стара парола"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Грешка при запазване на потребител — невалидност."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Грешка при запазване на новата парола."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Паролата е записана."
 
@@ -3515,6 +3545,7 @@ msgstr "Сайт"
 msgid "Server"
 msgstr "Сървър"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3522,6 +3553,7 @@ msgstr ""
 msgid "Path"
 msgstr "Път"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Път до сайта"
@@ -3531,6 +3563,7 @@ msgstr "Път до сайта"
 msgid "Locale directory"
 msgstr "Директория на аватара"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3538,9 +3571,12 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr "Кратки URL-адреси"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr ""
 
@@ -3663,6 +3699,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3708,10 +3746,14 @@ msgstr ""
 msgid "People search"
 msgstr "Търсене на хора"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Неправилен адрес на е-поща."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, fuzzy, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Бележки с етикет %s, страница %d"
@@ -3721,15 +3763,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Не можете да изтривате потребители."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Няма такака страница."
@@ -3740,7 +3786,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Приставки"
 
@@ -3756,15 +3803,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Език по подразбиране"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Неправилен размер."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3914,43 +3965,57 @@ msgstr "Настройките са запазени."
 msgid "Restore account"
 msgstr "Създаване на нова сметка"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Грешка при изтегляне на общия поток"
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Общ поток, страница %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Общ поток"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Емисия на общия поток (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Емисия на общия поток (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Емисия на общия поток (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3959,6 +4024,8 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5615,6 +5682,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Приставки"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Име"
@@ -6125,6 +6196,9 @@ msgstr "Командата все още не се поддържа."
 msgid "Unable to delete design setting."
 msgstr "Грешка при записване настройките за Twitter"
 
+msgid "Home"
+msgstr "Лична страница"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Основна настройка на сайта"
@@ -6737,9 +6811,6 @@ msgstr "Влизане в сайта"
 msgid "Database error"
 msgstr "Грешка в базата от данни"
 
-msgid "Home"
-msgstr "Лична страница"
-
 msgid "Public"
 msgstr "Общ поток"
 
@@ -7454,7 +7525,6 @@ msgstr "Изпращане на бележка"
 msgid "What's up, %s?"
 msgstr "Какво става, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Прикрепяне"
 
@@ -7522,6 +7592,9 @@ msgstr "Изтриване на бележката"
 msgid "Notice repeated"
 msgstr "Бележката е повторена."
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Побутване на този потребител"
 
@@ -8037,11 +8110,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Поток на %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Търсене на хора в сайта"
index b6aefb027dc9255dcb637f33ee157b1033728a2e..8ca30f42c1a51ead2b90710bcf5966cb9cb5c17b 100644 (file)
@@ -12,17 +12,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:02+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:16:56+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: br\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1036,7 +1036,8 @@ msgid "Can only fave notices."
 msgstr "Klask alioù en danvez"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Notenn dianav."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1601,6 +1602,7 @@ msgstr "Dilemel ar strollad-mañ"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3058,6 +3060,10 @@ msgstr "Ezhomm 'zo eus ar vammenn URL."
 msgid "Could not create application."
 msgstr "N'eo ket posubl krouiñ ar poellad."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Ment direizh."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Strollad nevez"
@@ -3342,52 +3348,77 @@ msgstr "Boest kas %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Cheñch ger-tremen"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Cheñch ger-tremen."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Kemmañ ger-tremen"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Ger-tremen kozh"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Ger-tremen nevez"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 arouezenn pe muioc'h"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Kadarnaat"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Memestra eget ar ger tremen a-us"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Kemmañ"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Rankout a ra ar ger-tremen bezañ gant 6 arouezenn d'an nebeutañ."
 
 msgid "Passwords don't match."
 msgstr "Ne glot ket ar gerioù-tremen."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Ger-termen kozh direizh"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Ur fazi 'zo bet e-pad enolladenn an implijer ; diwiriek."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Dibosupl eo enrollañ ar ger-tremen nevez."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Ger-tremen enrollet."
 
@@ -3437,6 +3468,7 @@ msgstr "Lec'hienn"
 msgid "Server"
 msgstr "Servijer"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Anv ostiz servijer al lec'hienn."
 
@@ -3444,6 +3476,7 @@ msgstr "Anv ostiz servijer al lec'hienn."
 msgid "Path"
 msgstr "Hent"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Hent al lec'hienn"
@@ -3453,6 +3486,7 @@ msgstr "Hent al lec'hienn"
 msgid "Locale directory"
 msgstr "Doser an temoù"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3460,9 +3494,13 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr "URLioù brav"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Danvez"
 
@@ -3584,6 +3622,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3630,10 +3670,14 @@ msgstr ""
 msgid "People search"
 msgstr "Klask tud"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "N'eo ket reizh ar merk-se : %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Implijerien bet merket drezo o unan gant %1$s - pajenn %2$d"
@@ -3643,15 +3687,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "N'hallit ket diverkañ implijerien."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "N'eus ket eus ar bajenn-se."
@@ -3662,7 +3710,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Pluginoù"
 
@@ -3678,15 +3727,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Yezh dre ziouer"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Danvez direizh an ali."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "Aotre-implijout ar menegoù \"%1$s\" ne ya ket gant aotre-implijout al "
 "lec'hienn \"%2$s\"."
@@ -3843,29 +3896,39 @@ msgstr "Enrollet eo bet an arventennoù."
 msgid "Restore account"
 msgstr "Krouiñ ur gont"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Dreist da bevennoù ar bajenn (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Dibosupl eo adtapout al lanv foran."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Lanv foran - pajenn %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Lanv foran"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Neudenn gwazh foran (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Neudenn gwazh foran (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Neudenn gwazh foran (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3873,9 +3936,11 @@ msgid ""
 msgstr ""
 "Kronologiezh foran %%site.name%% eo, met den n'en deus skrivet tra ebet."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Bezit an hini gentañ da bostañ !"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3883,6 +3948,8 @@ msgstr ""
 "Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini "
 "gentañ da embann un dra !"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3893,6 +3960,8 @@ msgstr ""
 "%%site.name%% a zo ur servij [micro-blogging](http://br.wikipedia.org/wiki/"
 "Microblog) diazezet war ar meziant frank [StatusNet](http://status.net/)."
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5541,6 +5610,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Pluginoù"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Anv"
@@ -6030,6 +6103,9 @@ msgstr "N'eo ket bet emplementet saveSettings()."
 msgid "Unable to delete design setting."
 msgstr "Dibosupl eo dilemel an arventennoù krouiñ."
 
+msgid "Home"
+msgstr "Degemer"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Arventennoù diazez al lec'hienn"
@@ -6633,9 +6709,6 @@ msgstr "Mont d'ar meziant staliañ"
 msgid "Database error"
 msgstr "Fazi bank roadennoù"
 
-msgid "Home"
-msgstr "Degemer"
-
 msgid "Public"
 msgstr "Foran"
 
@@ -7345,7 +7418,6 @@ msgstr "Kas un ali"
 msgid "What's up, %s?"
 msgstr "Penaos 'mañ kont, %s ?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Stagañ"
 
@@ -7412,6 +7484,9 @@ msgstr "Dilemel ar c'hemenn-mañ"
 msgid "Notice repeated"
 msgstr "Ali adkemeret"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Kas ur blinkadenn d'an implijer-mañ"
 
@@ -7923,11 +7998,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Oberezhioù %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Klask tud el lec'hienn-mañ"
index 37f2527a9f607ff599264d634f7e4917fe717a91..c8c23852bb40df3b6eb01e762527d7eef7d7f3c2 100644 (file)
@@ -16,17 +16,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:03+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:16:57+0000\n"
 "Language-Team: Catalan <http://translatewiki.net/wiki/Portal:ca>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ca\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1047,7 +1047,8 @@ msgid "Can only fave notices."
 msgstr "Només es poden preferir els avisos."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Nota desconeguda."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1622,6 +1623,7 @@ msgstr "Elimina el grup."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3113,6 +3115,10 @@ msgstr "URL d'origen requerida."
 msgid "Could not create application."
 msgstr "No s'ha pogut crear l'aplicació."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "La mida no és vàlida."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nou grup"
@@ -3398,49 +3404,74 @@ msgstr ""
 "Aquesta és la teva safata de sortida, que et mostrarà els missatges privats "
 "que has enviat."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Canvia la contrasenya"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Canvieu la vostra contrasenya"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Contrasenya canviada."
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Antiga contrasenya"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nova contrasenya"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 o més caràcters."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirma"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Igual que la contrasenya de dalt"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Canvia"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "La contrasenya hauria de ser d'entre 6 a més caràcters."
 
 msgid "Passwords don't match."
 msgstr "Les contrasenyes no coincideixen."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Contrasenya antiga incorrecta"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "S'ha produït un error en desar l'usuari; no és vàlid."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "No es pot desar la nova contrasenya."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Contrasenya guardada."
 
@@ -3490,6 +3521,7 @@ msgstr "Lloc"
 msgid "Server"
 msgstr "Servidor"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Servidor central del lloc."
 
@@ -3497,6 +3529,7 @@ msgstr "Servidor central del lloc."
 msgid "Path"
 msgstr "Camí"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Camí del lloc."
 
@@ -3504,6 +3537,7 @@ msgstr "Camí del lloc."
 msgid "Locale directory"
 msgstr "Directori de les traduccions"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Camí del directori a les traduccions."
 
@@ -3511,9 +3545,14 @@ msgstr "Camí del directori a les traduccions."
 msgid "Fancy URLs"
 msgstr "URL atractius"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Voleu fer servir URL atractius (més fàcils de llegir i de recordar)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema"
 
@@ -3626,6 +3665,8 @@ msgid "Directory where attachments are located."
 msgstr "Directori on es troben les adjuncions."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3670,10 +3711,14 @@ msgstr ""
 msgid "People search"
 msgstr "Cerca de gent"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "No és una etiqueta de gent vàlida: %s"
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Usuaris que s'han etiquetat amb %1$s - pàgina %2$d"
@@ -3683,14 +3728,18 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr "Inhabilitat"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Aquesta acció només accepta sol·licituds POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 msgid "You cannot administer plugins."
 msgstr "No es poden administrar els connectors."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "No existeix la pàgina."
@@ -3701,7 +3750,8 @@ msgid "Enabled"
 msgstr "Habilitat"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Connectors"
 
@@ -3719,17 +3769,21 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Connectors per defecte"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 "S'han inhabilitat tots els connectors per defecte del fitxer de configuració "
 "del lloc."
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "El contingut de l'avís no és vàlid."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "La llicència ‘%1$s’ de l'avís no és compatible amb la llicència ‘%2$s’ del "
 "lloc."
@@ -3878,29 +3932,39 @@ msgstr "S'ha desat la configuració."
 msgid "Restore account"
 msgstr "Restaura el compte"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Més enllà del límit de la pàgina (%s)"
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "No s'ha pogut recuperar la conversa pública."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Línia temporal pública, pàgina %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Línia temporal pública"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Flux de canal públic (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Flux de canal públic (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Flux de canal públic (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3909,9 +3973,11 @@ msgstr ""
 "Aquesta és la línia temporal pública de %%site.name%%, però ningú no hi ha "
 "enviat res encara."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Sigueu el primer en escriure-hi!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3919,6 +3985,8 @@ msgstr ""
 "Per què no [registreu un compte](%%action.register%%) i sou el primer en "
 "escriure-hi!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3931,6 +3999,8 @@ msgstr ""
 "[Uniu-vos-hi ara](%%action.register%%) per compartir què feu amb els vostres "
 "amics, familiars, i companys! ([Més informació](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5635,6 +5705,10 @@ msgstr ""
 "Hauríeu d'haver rebut una còpia de la llicència GNU Affero General Public "
 "License juntament amb el programa. Si no és així, consulteu %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Connectors"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nom"
@@ -6144,6 +6218,9 @@ msgstr "El saveSettings() no està implementat."
 msgid "Unable to delete design setting."
 msgstr "No s'ha pogut eliminar el paràmetre de disseny."
 
+msgid "Home"
+msgstr "Pàgina personal"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuració bàsica del lloc"
@@ -6771,9 +6848,6 @@ msgstr "Vés a l'instal·lador."
 msgid "Database error"
 msgstr "Error de la base de dades"
 
-msgid "Home"
-msgstr "Pàgina personal"
-
 msgid "Public"
 msgstr "Públic"
 
@@ -7573,7 +7647,6 @@ msgstr "Envia un avís"
 msgid "What's up, %s?"
 msgstr "Què tal, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Adjunta"
 
@@ -7642,6 +7715,9 @@ msgstr "Elimina aquest avís"
 msgid "Notice repeated"
 msgstr "Avís repetit"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Crida l'atenció a l'usuari"
 
@@ -8142,9 +8218,3 @@ msgstr "L'XML no és vàlid, hi manca l'arrel XRD."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Es recupera la còpia de seguretat del fitxer '%s'."
-
-#~ msgid "Friends timeline"
-#~ msgstr "Línia temporal dels amics"
-
-#~ msgid "Everyone on this site"
-#~ msgstr "Tothom en aquest lloc"
index e97d4980e0e786ec0ed3a639eaed483c5ccbaa11..ec922736f3fb3ee76d27dd6bb44eecaedd2ede61 100644 (file)
@@ -11,18 +11,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:04+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:16:59+0000\n"
 "Language-Team: Czech <http://translatewiki.net/wiki/Portal:cs>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: cs\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ( (n >= 2 && n <= 4) ? 1 : "
 "2 );\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1062,7 +1062,7 @@ msgstr "Najít v obsahu oznámení"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Neznámé"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1653,6 +1653,7 @@ msgstr "Odstranit tohoto uživatele"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3164,6 +3165,10 @@ msgstr "Zdrojové URL je nutné."
 msgid "Could not create application."
 msgstr "Nelze vytvořit aplikaci."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Neplatná velikost"
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nová skupina"
@@ -3448,52 +3453,77 @@ msgstr ""
 "Toto je váš outbox, který obsahuje seznam soukromých zpráv které jste "
 "odeslali."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Změnit heslo"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Změňte své heslo."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Změna hesla"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Staré heslo"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nové heslo"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 a více znaků"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Potvrdit"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Stejné jako heslo výše"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Změnit"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Heslo musí být alespoň 6 znaků dlouhé"
 
 msgid "Passwords don't match."
 msgstr "Hesla nesouhlasí"
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Nesprávné staré heslo"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Chyba při ukládaní uživatele; neplatný."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Nelze uložit nové heslo"
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Heslo uloženo"
 
@@ -3543,6 +3573,7 @@ msgstr "Stránky"
 msgid "Server"
 msgstr "Server"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Hostname (jméno) serveru stránek."
 
@@ -3550,6 +3581,7 @@ msgstr "Hostname (jméno) serveru stránek."
 msgid "Path"
 msgstr "Cesta"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Cesta ke stránkám (za jménem serveru)"
@@ -3559,6 +3591,7 @@ msgstr "Cesta ke stránkám (za jménem serveru)"
 msgid "Locale directory"
 msgstr "adresář tématu"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "Cesta k adresáři locales"
@@ -3567,9 +3600,14 @@ msgstr "Cesta k adresáři locales"
 msgid "Fancy URLs"
 msgstr "Hezké URL"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Použijte Fancy (více čitelné a zapamatovatelné) URL?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Téma"
 
@@ -3695,6 +3733,8 @@ msgid "Directory where attachments are located."
 msgstr "Cesta k adresáři locales"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3741,10 +3781,14 @@ msgstr ""
 msgid "People search"
 msgstr "Hledání lidí"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Není platný člověkotag: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Uživatelé kteří se sami otagovali %1$s - strana %2$d"
@@ -3754,15 +3798,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Tato akce přijímá pouze POST požadavky."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Nemůžete odstranit uživatele."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Tady žádná taková stránka není."
@@ -3773,7 +3821,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Pluginy"
 
@@ -3789,15 +3838,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Výchozí jazyk"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Neplatná velikost"
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Licence hlášky ‘%1$s’ není kompatibilní s licencí webu ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3952,29 +4005,39 @@ msgstr "Nastavení uloženo"
 msgid "Restore account"
 msgstr "Zaregistrujte se"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Přes limit stránky (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Nepodařilo se získat veřejný proud."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Veřejná časová osa, strana %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Veřejné zprávy"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Veřejný Stream Feed (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Veřejný Stream Feed (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Veřejný Stream Feed (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3982,15 +4045,19 @@ msgid ""
 msgstr ""
 "Tohle je veřejná časová osa %%site.name%%, ale nikdo zatím nic nenapsal."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Pošlete něco jako první!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 "Proč ne [zaregistrovat účet](%%action.register%%) a poslat něco jako první!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4003,6 +4070,8 @@ msgstr ""
 "status.net/). [Zaregistrujte se](%%action.register%%) a sdílejte hlášky o "
 "sobě s přáteli, rodinou a kolegy! ([Čtěte více](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5715,6 +5784,10 @@ msgstr ""
 "Měli byste obdržet kopii GNU Affero General Public License spolu s tímto "
 "programem. Pokud ne, jděte na %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Pluginy"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Název"
@@ -6218,6 +6291,9 @@ msgstr "saveSettings () není implementována."
 msgid "Unable to delete design setting."
 msgstr "Nelze smazat nastavení vzhledu."
 
+msgid "Home"
+msgstr "Moje stránky"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Základní konfigurace webu"
@@ -6854,9 +6930,6 @@ msgstr "Jdi na instalaci."
 msgid "Database error"
 msgstr "Chyba databáze"
 
-msgid "Home"
-msgstr "Moje stránky"
-
 msgid "Public"
 msgstr "Veřejné"
 
@@ -7666,7 +7739,6 @@ msgstr "Poslat oznámení"
 msgid "What's up, %s?"
 msgstr "Co se děje, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Připojit"
 
@@ -7735,6 +7807,9 @@ msgstr "Odstranit toto oznámení"
 msgid "Notice repeated"
 msgstr "Sdělení opakováno"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Pošťuchovat tohoto uživatele"
 
@@ -8252,11 +8327,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "časová osa %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Najít lidi na této stránce"
index 939acc989b8f940032b9e6a2687519b4afeb2341..3fc5e059c2629ab273da867c975bb031b260f112 100644 (file)
@@ -5,6 +5,7 @@
 # Author: Bavatar
 # Author: Brion
 # Author: George Animal
+# Author: Habi
 # Author: Kghbln
 # Author: Lutzgh
 # Author: March
@@ -21,17 +22,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:05+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:00+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: de\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -312,7 +313,7 @@ msgstr "Konnte Benutzerdesign nicht aktualisieren."
 #. TRANS: Title for Atom feed.
 msgctxt "ATOM"
 msgid "Main"
-msgstr ""
+msgstr "Main"
 
 #. TRANS: Title for Atom feed. %s is a user nickname.
 #. TRANS: Message is used as link title. %s is a user nickname.
@@ -396,7 +397,6 @@ msgid "Recipient user not found."
 msgstr "Empfänger nicht gefunden."
 
 #. TRANS: Client error displayed trying to direct message another user who's not a friend (403).
-#, fuzzy
 msgid "Cannot send direct messages to users who aren't your friend."
 msgstr ""
 "Es können keine direkten Nachrichten an Benutzer geschickt werden mit denen "
@@ -651,9 +651,8 @@ msgstr ""
 
 #. TRANS: API validation exception thrown when alias is the same as nickname.
 #. TRANS: Group create form validation error.
-#, fuzzy
 msgid "Alias cannot be the same as nickname."
-msgstr "Alias kann nicht das gleiche wie der Spitzname sein."
+msgstr "Alias kann nicht gleich wie der Spitzname sein."
 
 #. TRANS: Client error displayed when uploading a media file has failed.
 msgid "Upload failed."
@@ -864,7 +863,7 @@ msgstr "Kein Status mit dieser ID gefunden."
 
 #. TRANS: Client error displayed when trying to delete a notice not using the Atom format.
 msgid "Can only delete using the Atom format."
-msgstr ""
+msgstr "Kann nur im Atom-Format gelöscht werden"
 
 #. TRANS: Client error displayed when a user has no rights to delete notices of other users.
 #. TRANS: Error message displayed trying to delete a notice that was not made by the current user.
@@ -959,9 +958,9 @@ msgstr "Nicht unterstützte Methode."
 msgid "Repeated to %s"
 msgstr "Antworten an %s"
 
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s notices that were to repeated to %2$s / %3$s."
-msgstr "Nachrichten von %1$s, die auf Nachrichten von %2$s / %3$s antworten."
+msgstr "%1$s Nachrichten, die auf %2$s / %3$s wiederholt wurden."
 
 #. TRANS: Title of list of repeated notices of the logged in user.
 #. TRANS: %s is the nickname of the logged in user.
@@ -969,9 +968,9 @@ msgstr "Nachrichten von %1$s, die auf Nachrichten von %2$s / %3$s antworten."
 msgid "Repeats of %s"
 msgstr "Antworten von %s"
 
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s notices that %2$s / %3$s has repeated."
-msgstr "%1$s markierte Nachricht %2$s als Favorit."
+msgstr "%1$s Notizen wurden von %2$s / %3$s wiederholt."
 
 #. TRANS: Title for timeline with lastest notices with a given tag.
 #. TRANS: %s is the tag.
@@ -1015,7 +1014,7 @@ msgstr "Nur POST verwenden"
 #. TRANS: %s is the unsupported activity object type.
 #, php-format
 msgid "Cannot handle activity object type \"%s\"."
-msgstr ""
+msgstr "Aktivität mit Objekttyp \"%s\" kann nicht bearbeitet werden."
 
 #. TRANS: Client error displayed when posting a notice without content through the API.
 #. TRANS: %d is the notice ID (number).
@@ -1045,28 +1044,28 @@ msgstr "Profil nicht gefunden."
 
 #. TRANS: Subtitle for Atom favorites feed.
 #. TRANS: %1$s is a user nickname, %2$s is the StatusNet sitename.
-#, fuzzy, php-format
+#, php-format
 msgid "Notices %1$s has favorited on %2$s"
-msgstr "Aktualisierungen von %1$s und Freunden auf %2$s!"
+msgstr "Notizen, die von %1$s auf %2$s favorisiert wurden."
 
 #. TRANS: Client exception thrown when trying to set a favorite for another user.
 #. TRANS: Client exception thrown when trying to subscribe another user.
-#, fuzzy
 msgid "Cannot add someone else's subscription."
 msgstr "Konnte neues Abonnement nicht eintragen."
 
 #. TRANS: Client exception thrown when trying use an incorrect activity verb for the Atom pub method.
 #, fuzzy
 msgid "Can only handle favorite activities."
-msgstr "Durchsuche den Inhalt der Nachrichten"
+msgstr "Kann nur Favoriten-Aktionen bearbeiten."
 
 #. TRANS: Client exception thrown when trying favorite an object that is not a notice.
 #, fuzzy
 msgid "Can only fave notices."
-msgstr "Durchsuche den Inhalt der Nachrichten"
+msgstr "Kann nur Notizen favorisieren."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Unbekannter Hinweis."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1083,18 +1082,18 @@ msgstr "%s Gruppen-Mitgliedschaften"
 #. TRANS: %1$s is a username, %2$s is the StatusNet sitename.
 #, fuzzy, php-format
 msgid "Groups %1$s is a member of on %2$s"
-msgstr "Gruppen, in denen „%s“ Mitglied ist"
+msgstr "Gruppen %1$s ist ein Mitglied von %2$s"
 
 #. TRANS: Client exception thrown when trying subscribe someone else to a group.
 #, fuzzy
 msgid "Cannot add someone else's membership."
-msgstr "Konnte neues Abonnement nicht eintragen."
+msgstr "Kann Abonnement von jemand  anderem nicht eintragen."
 
 #. TRANS: Client error displayed when not using the POST verb.
 #. TRANS: Do not translate POST.
 #, fuzzy
 msgid "Can only handle join activities."
-msgstr "Durchsuche den Inhalt der Nachrichten"
+msgstr "Kann nur Beitritts-Aktivitäten durchführen."
 
 #. TRANS: Client exception thrown when trying to subscribe to a non-existing group.
 msgid "Unknown group."
@@ -1115,7 +1114,7 @@ msgstr "Favorit nicht gefunden."
 #. TRANS: Client exception thrown when trying to remove a favorite notice of another user.
 #, fuzzy
 msgid "Cannot delete someone else's favorite."
-msgstr "Konnte Favoriten nicht löschen."
+msgstr "Kann Favoriten von jemand anderem nicht löschen."
 
 #. TRANS: Client exception thrown when referencing a non-existing group.
 #. TRANS: Client error displayed when requesting a list of blocked users for a non-local group.
@@ -1154,7 +1153,7 @@ msgstr "Kein Mitglied"
 #. TRANS: Client exception thrown when deleting someone else's membership.
 #, fuzzy
 msgid "Cannot delete someone else's membership."
-msgstr "Konnte Selbst-Abonnement nicht löschen."
+msgstr "Konnte Abonnement von jemand anderem nicht löschen."
 
 #. TRANS: Client exception thrown when trying to display a subscription for a non-existing profile ID.
 #. TRANS: %d is the non-existing profile ID number.
@@ -1181,7 +1180,7 @@ msgstr "Leute, die „%s“ abonniert haben"
 
 #. TRANS: Client error displayed when not using the follow verb.
 msgid "Can only handle Follow activities."
-msgstr ""
+msgstr "Kann nur Abonnements-Funktionen bearbeiten."
 
 #. TRANS: Client exception thrown when subscribing to an object that is not a person.
 msgid "Can only follow people."
@@ -1195,9 +1194,9 @@ msgstr "Profil %s ist unbekannt"
 
 #. TRANS: Client error displayed trying to subscribe to an already subscribed profile.
 #. TRANS: %s is the profile the user already has a subscription on.
-#, fuzzy, php-format
+#, php-format
 msgid "Already subscribed to %s."
-msgstr "Bereits abonniert!"
+msgstr "%s ist bereits abonniert."
 
 #. TRANS: Client error displayed trying to get a non-existing attachment.
 msgid "No such attachment."
@@ -1284,8 +1283,7 @@ msgstr "Keine Datei hoch geladen."
 #. TRANS: Avatar upload form instruction after uploading a file.
 #, fuzzy
 msgid "Pick a square area of the image to be your avatar."
-msgstr ""
-"Wähle eine quadratische Fläche aus dem Bild, um dein Avatar zu speichern"
+msgstr "Wähle einen quadratischen Bereich aus dem Bild als dein Avatar."
 
 #. TRANS: Server error displayed if an avatar upload went wrong somehow server side.
 #. TRANS: Server error displayed trying to crop an uploaded group logo that is no longer present.
@@ -1316,7 +1314,7 @@ msgstr "Nur angemeldete Benutzer können Nachrichten wiederholen."
 
 #. TRANS: Client exception thrown when trying to backup an account without having backup rights.
 msgid "You may not backup your account."
-msgstr ""
+msgstr "Dein Konto kann nicht gesichert werden."
 
 #. TRANS: Information displayed on the backup account page.
 msgid ""
@@ -1326,6 +1324,11 @@ msgid ""
 "addresses is not backed up. Additionally, uploaded files and direct messages "
 "are not backed up."
 msgstr ""
+"Dein Konto kann im <a href=\"http://activitystrea.ms/\">Activity Streams</a>-"
+"Format gesichert werden. Dies ist eine experimentelle Funktion und stellt "
+"nur ein unvollständige Sicherung dar: private Kontoinformationen wie Email "
+"und IM-Adressen werden nicht gesichert. Zusätzlich werden hochgeladene "
+"Dateien und direkte Nachrichten nicht gesichert."
 
 #. TRANS: Submit button to backup an account on the backup account page.
 msgctxt "BUTTON"
@@ -1335,7 +1338,7 @@ msgstr "Backup"
 #. TRANS: Title for submit button to backup an account on the backup account page.
 #, fuzzy
 msgid "Backup your account."
-msgstr "Backup-Konto"
+msgstr "Sicherheitskopie des Konto erstellen."
 
 #. TRANS: Client error displayed when blocking a user that has already been blocked.
 msgid "You already blocked that user."
@@ -1370,7 +1373,7 @@ msgstr "Nein"
 #. TRANS: Submit button title for 'No' when blocking a user.
 #, fuzzy
 msgid "Do not block this user."
-msgstr "Diesen Benutzer freigeben"
+msgstr "Diesen Benutzer nicht blokieren."
 
 #. TRANS: Button label on the user block form.
 #. TRANS: Button label on the delete application form.
@@ -1499,7 +1502,7 @@ msgstr "Ich bin mir sicher."
 #. TRANS: %s is the text that needs to be input.
 #, php-format
 msgid "You must write \"%s\" exactly in the box."
-msgstr ""
+msgstr "In der Box muss genau \"%s\" eingetragen werden."
 
 #. TRANS: Confirmation that a user account has been deleted.
 msgid "Account deleted."
@@ -1515,6 +1518,8 @@ msgid ""
 "This will <strong>permanently delete</strong> your account data from this "
 "server."
 msgstr ""
+"Dein Konto und alle Daten auf diesem Server werden <strong>unwiderruflich "
+"gelöscht</strong>."
 
 #. TRANS: Additional form text for user deletion form shown if a user has account backup rights.
 #. TRANS: %s is a URL to the backup page.
@@ -1523,6 +1528,8 @@ msgid ""
 "You are strongly advised to <a href=\"%s\">back up your data</a> before "
 "deletion."
 msgstr ""
+"Vor der Löschung raten wir dir dringend, <a href=\"%s\">eine Sicherungskopie "
+"deiner Daten zu erstellen</a>."
 
 #. TRANS: Field label for delete account confirmation entry.
 #. TRANS: Field label for password reset form where the password has to be typed again.
@@ -1642,6 +1649,7 @@ msgstr "Diese Gruppe löschen"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -1707,9 +1715,8 @@ msgid "Do not delete this user."
 msgstr "Diesen Benutzer nicht löschen"
 
 #. TRANS: Submit button title for 'Yes' when deleting a user.
-#, fuzzy
 msgid "Delete this user."
-msgstr "Diesen Benutzer löschen"
+msgstr "Diesen Benutzer löschen."
 
 #. TRANS: Message used as title for design settings for the site.
 msgid "Design"
@@ -2048,6 +2055,8 @@ msgid ""
 "To send notices via email, we need to create a unique email address for you "
 "on this server:"
 msgstr ""
+"Um Notizen per Email zu senden, müssen wir für dich eine eindeutige "
+"Emailadresse generieren."
 
 #. TRANS: Button label for adding an e-mail address to send notices from.
 #. TRANS: Button label for adding an SMS e-mail address to send notices from.
@@ -2096,7 +2105,7 @@ msgstr "Keine E-Mail-Adresse."
 #. TRANS: Message given saving e-mail address that cannot be normalised.
 #, fuzzy
 msgid "Cannot normalize that email address."
-msgstr "Konnte diese E-Mail-Adresse nicht normalisieren"
+msgstr "Diese e-Mail-Adresse kann nicht normalisiert werden."
 
 #. TRANS: Message given saving e-mail address that not valid.
 msgid "Not a valid email address."
@@ -2631,7 +2640,7 @@ msgstr "IM-Adresse"
 
 #, php-format
 msgid "%s screenname."
-msgstr ""
+msgstr "%s Benutzername."
 
 #. TRANS: Header for IM preferences form.
 #, fuzzy
@@ -3159,6 +3168,10 @@ msgstr "Quell-URL ist erforderlich."
 msgid "Could not create application."
 msgstr "Konnte das Programm nicht erstellen."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Ungültige Größe."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Neue Gruppe"
@@ -3385,9 +3398,9 @@ msgstr "Empfänger nicht gefunden."
 
 #. TRANS: Server error displayed in oEmbed request when a path is not supported.
 #. TRANS: %s is a path.
-#, php-format
+#, fuzzy, php-format
 msgid "\"%s\" not supported for oembed requests."
-msgstr ""
+msgstr "\"%s\" ist für Oembed-Anfragen nicht unterstützt."
 
 #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png')
 #, php-format
@@ -3448,50 +3461,75 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Das hier ist dein Postausgang, er beinhaltet deine gesendeten Nachrichten."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Passwort ändern"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Ändere dein Passwort."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Passwort geändert"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Altes Passwort"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Neues Passwort"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 oder mehr Zeichen"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Bestätigen"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Gleiches Passwort wie zuvor"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Ändern"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Das Passwort muss aus 6 oder mehr Zeichen bestehen."
 
 msgid "Passwords don't match."
 msgstr "Passwörter stimmen nicht überein."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Altes Passwort falsch"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Fehler beim Speichern des Benutzers, ungültig."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Konnte neues Passwort nicht speichern"
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Passwort gespeichert."
 
@@ -3541,6 +3579,7 @@ msgstr "Seite"
 msgid "Server"
 msgstr "Server"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Server-Name der Seite"
 
@@ -3548,6 +3587,7 @@ msgstr "Server-Name der Seite"
 msgid "Path"
 msgstr "Pfad"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Seitenpfad."
 
@@ -3555,6 +3595,7 @@ msgstr "Seitenpfad."
 msgid "Locale directory"
 msgstr "Sprachpfad"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Pfad zu den Sprachen."
 
@@ -3562,9 +3603,14 @@ msgstr "Pfad zu den Sprachen."
 msgid "Fancy URLs"
 msgstr "Schicke URLs."
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Schicke URLs (lesbarer und besser zu merken) verwenden?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Motiv"
 
@@ -3677,6 +3723,8 @@ msgid "Directory where attachments are located."
 msgstr "Pfad, in dem sich die Themes befinden."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3722,10 +3770,14 @@ msgstr ""
 msgid "People search"
 msgstr "Suche nach anderen Benutzern"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Ungültiger Personen-Tag: „%s“."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Benutzer, die sich selbst mit „%1$s“ getaggt haben - Seite %2$d"
@@ -3733,17 +3785,21 @@ msgstr "Benutzer, die sich selbst mit „%1$s“ getaggt haben - Seite %2$d"
 #. TRANS: Page title for AJAX form return when a disabling a plugin.
 msgctxt "plugin"
 msgid "Disabled"
-msgstr ""
+msgstr "Deaktiviert"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Diese Aktion nimmt nur POST-Requests"
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Du kannst keine Benutzer löschen."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Seite nicht vorhanden"
@@ -3751,10 +3807,11 @@ msgstr "Seite nicht vorhanden"
 #. TRANS: Page title for AJAX form return when enabling a plugin.
 msgctxt "plugin"
 msgid "Enabled"
-msgstr ""
+msgstr "Aktiviert"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Erweiterungen"
 
@@ -3764,21 +3821,28 @@ msgid ""
 "\"http://status.net/wiki/Plugins\">online plugin documentation</a> for more "
 "details."
 msgstr ""
+"Zusätzliche Plugins können eingeschaltet und manuell konfiguriert werden. In "
+"der <a href=\"http://status.net/wiki/Plugins\">Plugin Dokumentation</a> "
+"findest du mehr Details."
 
 #. TRANS: Admin form section header
 #, fuzzy
 msgid "Default plugins"
 msgstr "Bevorzugte Sprache"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
-msgstr ""
+msgstr "Alle Standard-Plugins der Konfigurationsdatei wurden deaktiviert."
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Ungültiger Nachrichteninhalt."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "Die Nachrichtenlizenz „%1$s“ ist nicht kompatibel mit der Lizenz der Seite „%"
 "2$s“."
@@ -3934,29 +3998,39 @@ msgstr "Einstellungen gespeichert."
 msgid "Restore account"
 msgstr "Neues Benutzerkonto erstellen"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Jenseits des Seitenlimits (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Konnte öffentlichen Stream nicht abrufen."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Öffentliche Zeitleiste, Seite %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Öffentliche Zeitleiste"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Feed des öffentlichen Streams (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Feed des öffentlichen Streams (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Feed des öffentlichen Streams (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3965,9 +4039,11 @@ msgstr ""
 "Dies ist die öffentliche Zeitleiste von %%site.name%%, es wurde allerdings "
 "noch nichts gepostet."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Sei der erste, der etwas schreibt!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3975,6 +4051,8 @@ msgstr ""
 "Warum nicht ein [Benutzerkonto anlegen](%%action.register%%) und den ersten "
 "Beitrag abschicken!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3988,6 +4066,8 @@ msgstr ""
 "Nachrichten mit deinen Freunden, Familie oder Kollegen aus! ([Mehr "
 "Informationen](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4436,9 +4516,8 @@ msgstr "Du hast noch keine Programme registriert"
 
 #. TRANS: Client exception displayed trying to restore an account while something went wrong uploading a file.
 #. TRANS: Client exception. No file; probably just a non-AJAX submission.
-#, fuzzy
 msgid "No uploaded file."
-msgstr "Datei hochladen"
+msgstr "Datei hochladen."
 
 #. TRANS: Client exception thrown when an uploaded file is larger than set in php.ini.
 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
@@ -4486,16 +4565,20 @@ msgid ""
 "Feed has been restored. Your old posts should now appear in search and your "
 "profile page."
 msgstr ""
+"Dein Feed wurde reaktiviert. Deine alten Einträge sollten nun in der Suche "
+"und auf deiner Profilseite erscheinen."
 
 #. TRANS: Message when a feed restore is in progress.
 msgid "Feed will be restored. Please wait a few minutes for results."
-msgstr ""
+msgstr "Feed wird wiederhergestellt. Dies kann einige Minuten dauern."
 
 #. TRANS: Form instructions for feed restore.
 msgid ""
 "You can upload a backed-up stream in <a href=\"http://activitystrea.ms/"
 "\">Activity Streams</a> format."
 msgstr ""
+"Eine Sicherungskopie kann im <a href=\"http://activitystrea.ms/\">Activity "
+"Streams</a>-Format hochgeladen werden."
 
 #. TRANS: Title for submit button to confirm upload of a user backup file for account restore.
 msgid "Upload the file"
@@ -5378,7 +5461,7 @@ msgid "[none]"
 msgstr "Nichts"
 
 msgid "[internal]"
-msgstr ""
+msgstr "[internal]"
 
 #. TRANS: Label for dropdown with URL shortener services.
 msgid "Shorten URLs with"
@@ -5389,31 +5472,30 @@ msgid "Automatic shortening service to use."
 msgstr "URL-Auto-Kürzungs-Dienst."
 
 msgid "URL longer than"
-msgstr ""
+msgstr "URL länger als"
 
 msgid "URLs longer than this will be shortened, 0 means always shorten."
-msgstr ""
+msgstr "längere URLs werden gekürzt. 0 bedeutet immer verkürzen."
 
 msgid "Text longer than"
-msgstr ""
+msgstr "Text länger als"
 
 msgid ""
 "URLs in notices longer than this will be shortened, 0 means always shorten."
-msgstr ""
+msgstr "längere URLs werden gekürzt. 0 bedeutet immer verkürzen."
 
 #. TRANS: Form validation error for form "Other settings" in user profile.
 msgid "URL shortening service is too long (maximum 50 characters)."
 msgstr "URL-Auto-Kürzungs-Dienst ist zu lang (maximal 50 Zeichen)."
 
 msgid "Invalid number for max url length."
-msgstr ""
+msgstr "Ungültige Zahl für maximale URL-Länge."
 
-#, fuzzy
 msgid "Invalid number for max notice length."
-msgstr "Ungültiger Nachrichteninhalt."
+msgstr "Ungültige Zahl für maximale Nachrichten-Länge."
 
 msgid "Error saving user URL shortening preferences."
-msgstr ""
+msgstr "Fehler beim speichern der URL-Verkürzungs-Einstellungen."
 
 #. TRANS: User admin panel title
 msgctxt "TITLE"
@@ -5709,6 +5791,10 @@ msgstr ""
 "Du hast eine Kopie der GNU Affero General Public License zusammen mit diesem "
 "Programm erhalten. Wenn nicht, siehe %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Erweiterungen"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Name"
@@ -5992,7 +6078,7 @@ msgstr "Kein einzelner Benutzer für den Ein-Benutzer-Modus ausgewählt."
 
 #. TRANS: Server exception.
 msgid "Single-user mode code called when not enabled."
-msgstr ""
+msgstr "Einzeluser-Modus aufgerufen, aber nicht aktiviert."
 
 #. TRANS: Server exception thrown when creating a group failed.
 msgid "Could not create group."
@@ -6014,19 +6100,19 @@ msgstr "Konnte die lokale Gruppen Information nicht speichern."
 #. TRANS: %s is the remote site.
 #, fuzzy, php-format
 msgid "Cannot locate account %s."
-msgstr "Du kannst keine Benutzer löschen."
+msgstr "Kann Konto %s nicht finden."
 
 #. TRANS: Exception thrown when a service document could not be located account move.
 #. TRANS: %s is the remote site.
 #, php-format
 msgid "Cannot find XRD for %s."
-msgstr ""
+msgstr "XRD für %s kann nicht gefunden werden."
 
 #. TRANS: Exception thrown when an account could not be located when it should be moved.
 #. TRANS: %s is the remote site.
 #, php-format
 msgid "No AtomPub API service for %s."
-msgstr ""
+msgstr "AtomPub API für %s kann nicht gefunden werden."
 
 #. TRANS: Page title. %1$s is the title, %2$s is the site name.
 #, php-format
@@ -6050,11 +6136,11 @@ msgstr "Antworten"
 
 #. TRANS: Placeholder text for inline reply form. Clicking in this box will turn it into a mini notice form.
 msgid "Write a reply..."
-msgstr ""
+msgstr "Antwort verfassen..."
 
 #, fuzzy
 msgid "Status"
-msgstr "StatusNet"
+msgstr "Status"
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
 #. TRANS: Text between [] is a link description, text between () is the link itself.
@@ -6130,16 +6216,16 @@ msgstr "Root-Element eines Feeds erwartet, aber ganzes XML-Dokument erhalten."
 #. TRANS: Client exception thrown when using an unknown verb for the activity importer.
 #, fuzzy, php-format
 msgid "Unknown verb: \"%s\"."
-msgstr "Unbekannte Sprache „%s“"
+msgstr "Unbekanntes Verb: „%s“"
 
 #. TRANS: Client exception thrown when trying to force a subscription for an untrusted user.
 msgid "Cannot force subscription for untrusted user."
-msgstr ""
+msgstr "Abonnement für nicht vertrauten Benutzer kann nicht forciert werden."
 
 #. TRANS: Client exception thrown when trying to for a remote user to subscribe.
 #, fuzzy
 msgid "Cannot force remote user to subscribe."
-msgstr "Gib den Namen des Benutzers an, den du abonnieren möchtest."
+msgstr "Kann entfernten Benutzer nicht forciert abonnieren."
 
 #. TRANS: Client exception thrown when trying to subscribe to an unknown profile.
 #, fuzzy
@@ -6148,11 +6234,11 @@ msgstr "Profil %s ist unbekannt"
 
 #. TRANS: Client exception thrown when trying to import an event not related to the importing user.
 msgid "This activity seems unrelated to our user."
-msgstr ""
+msgstr "Diese Aktivität scheint nicht mit dem Benutzer zusammenzuhängen."
 
 #. TRANS: Client exception thrown when trying to join a remote group that is not a group.
 msgid "Remote profile is not a group!"
-msgstr ""
+msgstr "Entferntes Profil ist keine Gruppe!"
 
 #. TRANS: Client exception thrown when trying to join a group the importing user is already a member of.
 #, fuzzy
@@ -6163,11 +6249,11 @@ msgstr "Du bist bereits Mitglied dieser Gruppe"
 #. TRANS: %1$s is the source URI of the notice, %2$s is the URI of the author.
 #, php-format
 msgid "Already know about notice %1$s and  it has a different author %2$s."
-msgstr ""
+msgstr "Ich kennne Notz %1$s bereits. Diese hat einen anderen Autor: %2$s"
 
 #. TRANS: Client exception thrown when trying to overwrite the author information for a non-trusted user during import.
 msgid "Not overwriting author info for non-trusted user."
-msgstr ""
+msgstr "Autor für nicht-vertrauten Benutzer wird nicht überschrieben."
 
 #. TRANS: Client exception thrown when trying to import a notice without content.
 #. TRANS: %s is the notice URI.
@@ -6223,6 +6309,9 @@ msgstr "saveSettings() noch nicht implementiert."
 msgid "Unable to delete design setting."
 msgstr "Konnte die Design-Einstellungen nicht löschen."
 
+msgid "Home"
+msgstr "Homepage"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Basis-Seiteneinstellungen"
@@ -6292,7 +6381,7 @@ msgid "No application for that consumer key."
 msgstr "Kein Programm mit diesem Anwender-Schlüssel."
 
 msgid "Not allowed to use API."
-msgstr ""
+msgstr "Darf API nicht verwenden."
 
 #. TRANS: OAuth exception given when an incorrect access token was given for a user.
 msgid "Bad access token."
@@ -6318,7 +6407,7 @@ msgstr "Anonyme OAuth-Anwendung konnte nicht erstellt werden."
 #. TRANS: Exception thrown when no token association could be found.
 msgid ""
 "Could not find a profile and application associated with the request token."
-msgstr ""
+msgstr "Konnte kein Profil und Anwendung für das Anfrage-Token finden."
 
 #. TRANS: Exception thrown when no access token can be issued.
 #, fuzzy
@@ -6850,9 +6939,6 @@ msgstr "Zur Installation gehen."
 msgid "Database error"
 msgstr "Datenbankfehler."
 
-msgid "Home"
-msgstr "Homepage"
-
 msgid "Public"
 msgstr "Zeitleiste"
 
@@ -7657,7 +7743,6 @@ msgstr "Nachricht senden"
 msgid "What's up, %s?"
 msgstr "Was geht, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Anhängen"
 
@@ -7726,6 +7811,9 @@ msgstr "Nachricht löschen"
 msgid "Notice repeated"
 msgstr "Nachricht wiederholt"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Gib diesem Benutzer einen Stups"
 
@@ -7773,16 +7861,16 @@ msgstr "Unbekannt"
 #. TRANS: Plugin admin panel controls
 msgctxt "plugin"
 msgid "Disable"
-msgstr ""
+msgstr "Deaktivieren"
 
 #. TRANS: Plugin admin panel controls
 msgctxt "plugin"
 msgid "Enable"
-msgstr ""
+msgstr "Aktivieren"
 
 msgctxt "plugin-description"
 msgid "(Plugin descriptions unavailable when disabled.)"
-msgstr ""
+msgstr "(Plugin Beschreibung nicht verfügbar wenn deaktiviert.)"
 
 msgid "Settings"
 msgstr "SMS-Einstellungen"
@@ -7977,7 +8065,7 @@ msgid "URL"
 msgstr "URL"
 
 msgid "URL shorteners"
-msgstr ""
+msgstr "URL-Verkürzer"
 
 msgid "Updates by instant messenger (IM)"
 msgstr "Aktualisierungen via Instant Messenger (IM)"
@@ -8228,17 +8316,9 @@ msgstr "Ungültiges XML."
 
 #. TRANS: Exception.
 msgid "Invalid XML, missing XRD root."
-msgstr ""
+msgstr "Ungültiges XML, XRD-Root fehlt."
 
 #. TRANS: Commandline script output. %s is the filename that contains a backup for a user.
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Hole Backup von der Datei „%s“."
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s-Zeitleiste"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Finde Leute auf dieser Seite"
index b7c4366f531284fc3ae755b6e4f8887fb9ddea63..c08f5a607f784c76a57db8e5d729abebfd611e19 100644 (file)
@@ -13,17 +13,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:06+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:01+0000\n"
 "Language-Team: British English <http://translatewiki.net/wiki/Portal:en-gb>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: en-gb\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1050,7 +1050,7 @@ msgstr "Find content of notices"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Unknown"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1639,6 +1639,7 @@ msgstr "Delete this group"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3144,6 +3145,10 @@ msgstr "Source URL is required."
 msgid "Could not create application."
 msgstr "Could not create application."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Invalid size."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "New group"
@@ -3426,52 +3431,77 @@ msgstr "Outbox for %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "This is your outbox, which lists private messages you have sent."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Change password"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Change your password."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Password change"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Old password"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "New password"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 or more characters"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirm"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Same as password above"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Change"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Password must be 6 or more characters."
 
 msgid "Passwords don't match."
 msgstr "Passwords don't match."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Incorrect old password"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Error saving user; invalid."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Can't save new password."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Password saved."
 
@@ -3521,6 +3551,7 @@ msgstr "Site"
 msgid "Server"
 msgstr "Server"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3528,6 +3559,7 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Site path"
@@ -3537,6 +3569,7 @@ msgstr "Site path"
 msgid "Locale directory"
 msgstr "Locale Directory"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3544,9 +3577,12 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr ""
 
@@ -3666,6 +3702,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3710,10 +3748,14 @@ msgstr ""
 msgid "People search"
 msgstr "People search"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Not a valid people tag: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Users self-tagged with %1$s - page %2$d"
@@ -3723,15 +3765,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "You cannot delete users."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "No such page."
@@ -3742,7 +3788,7 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr ""
 
@@ -3758,15 +3804,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Default language"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Invalid notice content."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3918,29 +3968,39 @@ msgstr "Settings saved."
 msgid "Restore account"
 msgstr "Create an account"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Could not retrieve public stream."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Public timeline, page %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Public timeline"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Public Stream Feed (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Public Stream Feed (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Public Stream Feed (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3949,15 +4009,19 @@ msgstr ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3970,6 +4034,8 @@ msgstr ""
 "tool. [Join now](%%action.register%%) to share notices about yourself with "
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5654,6 +5720,10 @@ msgstr ""
 "You should have received a copy of the GNU Affero General Public License "
 "along with this program.  If not, see %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr ""
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Name"
@@ -6146,6 +6216,9 @@ msgstr "saveSettings() not implemented."
 msgid "Unable to delete design setting."
 msgstr "Unable to delete design setting."
 
+msgid "Home"
+msgstr "Homepage"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Basic site configuration"
@@ -6765,9 +6838,6 @@ msgstr "Go to the installer."
 msgid "Database error"
 msgstr ""
 
-msgid "Home"
-msgstr "Homepage"
-
 msgid "Public"
 msgstr "Public"
 
@@ -7483,7 +7553,6 @@ msgstr "Send a notice"
 msgid "What's up, %s?"
 msgstr "What's up, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr ""
 
@@ -7549,6 +7618,9 @@ msgstr "Delete this notice"
 msgid "Notice repeated"
 msgstr "Notice repeated"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Nudge this user"
 
@@ -8054,11 +8126,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s timeline"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Find people on this site"
index fc4a68c7963066cab53dae53574b29a139010497..2b24b835bf76451d1ed6c4e29f464467f3f63bb9 100644 (file)
@@ -17,17 +17,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:07+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:02+0000\n"
 "Language-Team: Esperanto <http://translatewiki.net/wiki/Portal:eo>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: eo\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -784,7 +784,8 @@ msgid ""
 "Please return to the application and enter the following security code to "
 "complete the process."
 msgstr ""
-"Bonvolu reiri al %s kaj enigu la jenan sekureco-kodo por plenumi la procezon."
+"Bonvolu reiri al la aplikaĵo kaj enigi la jenan sekurecan kodon por "
+"kompletigi la procezon."
 
 #. TRANS: Title of the page notifying the user that the client application was successfully authorized to access the user's account with OAuth.
 #. TRANS: %s is the authorised application name.
@@ -872,10 +873,10 @@ msgstr "Kliento devas providi al \"stato\"-parametro valoron."
 
 #. TRANS: Client error displayed when the parameter "status" is missing.
 #. TRANS: %d is the maximum number of character for a notice.
-#, fuzzy, php-format
+#, php-format
 msgid "That's too long. Maximum notice size is %d character."
 msgid_plural "That's too long. Maximum notice size is %d characters."
-msgstr[0] "Tro longas. Longlimo por avizo estas %d signoj."
+msgstr[0] "Tro longa. Longlimo por avizo estas %d signo."
 msgstr[1] "Tro longas. Longlimo por avizo estas %d signoj."
 
 #. TRANS: Client error displayed when replying to a non-existing notice.
@@ -888,7 +889,7 @@ msgstr ""
 msgid "Maximum notice size is %d character, including attachment URL."
 msgid_plural "Maximum notice size is %d characters, including attachment URL."
 msgstr[0] ""
-"Longlimo por avizo estas %d signoj, enkalkulante ankaŭ la retadresojn."
+"Longlimo por avizo estas %d signo, enkalkulante ankaŭ la retadresojn."
 msgstr[1] ""
 "Longlimo por avizo estas %d signoj, enkalkulante ankaŭ la retadresojn."
 
@@ -956,7 +957,7 @@ msgstr "Ripetoj de %s"
 
 #, fuzzy, php-format
 msgid "%1$s notices that %2$s / %3$s has repeated."
-msgstr "%s (@%s) ŝatis vian avizon"
+msgstr "Avizoj ĉe %1$s, ripetitaj de %2$s / %3$s."
 
 #. TRANS: Title for timeline with lastest notices with a given tag.
 #. TRANS: %s is the tag.
@@ -975,7 +976,7 @@ msgstr "Ĝisdatigoj etikeditaj %1$s ĉe %2$s!"
 #. TRANS: Client error displayed trying to add a notice to another user's timeline.
 #, fuzzy
 msgid "Only the user can add to their own timeline."
-msgstr "Nur uzanto povas legi sian propran paŝton."
+msgstr "Oni ne povas aldoni al tempstrio de aliulo."
 
 #. TRANS: Client error displayed when using another format than AtomPub.
 msgid "Only accept AtomPub for Atom feeds."
@@ -1031,7 +1032,7 @@ msgstr "Ne ekzistas tia profilo."
 
 #. TRANS: Subtitle for Atom favorites feed.
 #. TRANS: %1$s is a user nickname, %2$s is the StatusNet sitename.
-#, fuzzy, php-format
+#, php-format
 msgid "Notices %1$s has favorited on %2$s"
 msgstr "Avizoj, ŝatmarkitaj de %1$s ĉe %2$s"
 
@@ -1052,7 +1053,7 @@ msgstr "Nur avizoj estas ŝatmarkeblaj."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Nekonata"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1064,24 +1065,22 @@ msgstr "Jam en la ŝatolisto."
 #. TRANS: %s is a username.
 #, fuzzy, php-format
 msgid "%s group memberships"
-msgstr "%s grupanoj"
+msgstr "Grupanecoj de %s"
 
 #. TRANS: Subtitle for group membership feed.
 #. TRANS: %1$s is a username, %2$s is the StatusNet sitename.
-#, fuzzy, php-format
+#, php-format
 msgid "Groups %1$s is a member of on %2$s"
-msgstr "Grupoj de %s"
+msgstr "Grupoj, kies ano %1$s estas ĉe %2$s"
 
 #. TRANS: Client exception thrown when trying subscribe someone else to a group.
-#, fuzzy
 msgid "Cannot add someone else's membership."
 msgstr "Estas neeble aldoni anecon de aliulo."
 
 #. TRANS: Client error displayed when not using the POST verb.
 #. TRANS: Do not translate POST.
-#, fuzzy
 msgid "Can only handle join activities."
-msgstr "Serĉi enhavon ĉe la retejo"
+msgstr ""
 
 #. TRANS: Client exception thrown when trying to subscribe to a non-existing group.
 msgid "Unknown group."
@@ -1143,9 +1142,8 @@ msgid "Not a member."
 msgstr "Ne estas ano."
 
 #. TRANS: Client exception thrown when deleting someone else's membership.
-#, fuzzy
 msgid "Cannot delete someone else's membership."
-msgstr "Ne eblas forigi abonon al vi mem."
+msgstr "Estas neeble forigi anecon de aliulo."
 
 #. TRANS: Client exception thrown when trying to display a subscription for a non-existing profile ID.
 #. TRANS: %d is the non-existing profile ID number.
@@ -1186,9 +1184,9 @@ msgstr "Nekonata profilo %s."
 
 #. TRANS: Client error displayed trying to subscribe to an already subscribed profile.
 #. TRANS: %s is the profile the user already has a subscription on.
-#, fuzzy, php-format
+#, php-format
 msgid "Already subscribed to %s."
-msgstr "Jam abonato!"
+msgstr "%s jam abonitas de vi."
 
 #. TRANS: Client error displayed trying to get a non-existing attachment.
 msgid "No such attachment."
@@ -1252,7 +1250,6 @@ msgstr "Antaŭrigardo"
 
 #. TRANS: Button on avatar upload page to delete current avatar.
 #. TRANS: Button text for user account deletion.
-#, fuzzy
 msgctxt "BUTTON"
 msgid "Delete"
 msgstr "Forigi"
@@ -1640,6 +1637,7 @@ msgstr "Forigi ĉi tiun grupon."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -2544,13 +2542,13 @@ msgstr "Neniu rezulto."
 
 #. TRANS: Additional text on page where groups can be searched if no results were found for a query for a logged in user.
 #. TRANS: This message contains Markdown links in the form [link text](link).
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "If you cannot find the group you're looking for, you can [create it](%%"
 "action.newgroup%%) yourself."
 msgstr ""
-"Se vi ne trovas grupon, kiun vi serĉas, vi povas mem [krei ĝin](%%action."
-"newgroup%%)."
+"Se vi ne povas trovi grupon, kiun vi serĉas, vi povas mem [krei ĝin](%%"
+"action.newgroup%%)."
 
 #. TRANS: Additional text on page where groups can be searched if no results were found for a query for a not logged in user.
 #. TRANS: This message contains Markdown links in the form [link text](link).
@@ -2621,20 +2619,16 @@ msgid "IM Preferences"
 msgstr "Tujmesaĝilaj preferoj"
 
 #. TRANS: Checkbox label in IM preferences form.
-#, fuzzy
 msgid "Send me notices"
-msgstr "Sendi avizon"
+msgstr "Sendi al mi avizojn"
 
 #. TRANS: Checkbox label in IM preferences form.
-#, fuzzy
 msgid "Post a notice when my status changes."
-msgstr "Afiŝu avizon tiam, kiam mia Jabber/GTalk-stato ŝanĝiĝas."
+msgstr "Afiŝi avizon, kiam ŝanĝiĝas mia tujmesaĝila stato."
 
 #. TRANS: Checkbox label in IM preferences form.
-#, fuzzy
 msgid "Send me replies from people I'm not subscribed to."
-msgstr ""
-"Sendu al mi per Jabber/GTalk respondojn de personoj, kiujn mi ne abonas."
+msgstr "Sendi al mi respondojn de personoj, kiujn mi ne abonas."
 
 #. TRANS: Checkbox label in IM preferences form.
 #, fuzzy
@@ -2644,7 +2638,7 @@ msgstr "Publikigi MikroID por mia retpoŝtadreso."
 #. TRANS: Server error thrown on database error updating IM preferences.
 #, fuzzy
 msgid "Couldn't update IM preferences."
-msgstr "Malsukcesis ĝisdatigi uzanton"
+msgstr "Malsukcesis ĝisdatigi tujmesaĝajn agordojn."
 
 #. TRANS: Confirmation message for successful IM preferences save.
 #. TRANS: Confirmation message after saving preferences.
@@ -2676,20 +2670,16 @@ msgid "Screenname already belongs to another user."
 msgstr "Jabber-ID jam apartenas al alia uzanto."
 
 #. TRANS: Message given saving valid IM address that is to be confirmed.
-#, fuzzy
 msgid "A confirmation code was sent to the IM address you added."
-msgstr ""
-"Konfirmo-kodo senditas al la tujmesaĝila adreso aldonita. Vi devas permesi "
-"al %s sendi mesaĝojn al vi."
+msgstr "Konfirmo-kodo senditas al la tujmesaĝila adreso, kiun vi aldonis."
 
 #. TRANS: Message given canceling IM address confirmation for the wrong IM address.
 msgid "That is the wrong IM address."
 msgstr "Tiu tujmesaĝila adreso estas malĝusta."
 
 #. TRANS: Server error thrown on database error canceling IM address confirmation.
-#, fuzzy
 msgid "Couldn't delete confirmation."
-msgstr "Malsukcesis forigi tujmesaĝila agordo."
+msgstr "Malsukcesis forigo de adreskonfirmo."
 
 #. TRANS: Message given after successfully canceling IM address confirmation.
 msgid "IM confirmation cancelled."
@@ -2697,14 +2687,12 @@ msgstr "Tujmesaĝila konfirmo nuligita."
 
 #. TRANS: Message given trying to remove an IM address that is not
 #. TRANS: registered for the active user.
-#, fuzzy
 msgid "That is not your screenname."
-msgstr "Tio ne estas via telefonnumero."
+msgstr "Tio ne estas via tujmesaĝila adreso."
 
 #. TRANS: Server error thrown on database error removing a registered IM address.
-#, fuzzy
 msgid "Couldn't update user im prefs."
-msgstr "Malsukcesis ĝisdatigi uzantan informon."
+msgstr "Malsukcesis ĝisdatigo de tujmesaĝaj agordoj de uzanto."
 
 #. TRANS: Message given after successfully removing a registered Instant Messaging address.
 msgid "The IM address was removed."
@@ -2739,12 +2727,11 @@ msgstr "Ensalutu por inviti aliajn uzantojn al %s."
 
 #. TRANS: Form validation message when providing an e-mail address that does not validate.
 #. TRANS: %s is an invalid e-mail address.
-#, fuzzy, php-format
+#, php-format
 msgid "Invalid email address: %s."
-msgstr "Nevalida retpoŝtadreso:  %s"
+msgstr "Nevalida retpoŝtadreso: %s."
 
 #. TRANS: Page title when invitations have been sent.
-#, fuzzy
 msgid "Invitations sent"
 msgstr "Invito(j) senditas"
 
@@ -2943,19 +2930,22 @@ msgstr "Nevalida permesila titolo. La longlimo estas 255 literoj."
 
 #. TRANS: Client error displayed specifying an invalid license URL in the license admin panel.
 msgid "Invalid license URL."
-msgstr ""
+msgstr "Nevalida URL de permesilo."
 
 #. TRANS: Client error displayed specifying an invalid license image URL in the license admin panel.
+#, fuzzy
 msgid "Invalid license image URL."
-msgstr ""
+msgstr "Nevalida URL de bildo de permesilo."
 
 #. TRANS: Client error displayed specifying an invalid license URL in the license admin panel.
+#, fuzzy
 msgid "License URL must be blank or a valid URL."
-msgstr ""
+msgstr "URL de permesilo devas foresti aŭ esti valida URL."
 
 #. TRANS: Client error displayed specifying an invalid license image URL in the license admin panel.
+#, fuzzy
 msgid "License image must be blank or valid URL."
-msgstr ""
+msgstr "URL de bildo de permesilo devas foresti aŭ esti valida URL."
 
 #. TRANS: Form legend in the license admin panel.
 msgid "License selection"
@@ -3054,7 +3044,6 @@ msgid "Automatically login in the future; not for shared computers!"
 msgstr "Aŭtomate ensaluti estonte; ne taŭge por komuna komputilo!"
 
 #. TRANS: Button text for log in on login page.
-#, fuzzy
 msgctxt "BUTTON"
 msgid "Login"
 msgstr "Ensaluti"
@@ -3131,14 +3120,17 @@ msgstr "Fonta URL bezonata."
 msgid "Could not create application."
 msgstr "Malsukcesis krei aplikaĵon."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Grando nevalida."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nova grupo"
 
 #. TRANS: Client exception thrown when a user tries to create a group while banned.
-#, fuzzy
 msgid "You are not allowed to create groups on this site."
-msgstr "Vi ne estas grupano."
+msgstr "Vi ne rajtas krei grupojn en ĉi tiu retpaĝaro."
 
 #. TRANS: Form instructions for group create form.
 msgid "Use this form to create a new group."
@@ -3151,9 +3143,8 @@ msgstr "Nova mesaĝo"
 
 #. TRANS: Client error displayed trying to send a direct message to a user while sender and
 #. TRANS: receiver are not subscribed to each other.
-#, fuzzy
 msgid "You cannot send a message to this user."
-msgstr "Vi ne povas sendi mesaĝon al la uzanto."
+msgstr "Vi ne povas sendi mesaĝon al tiu uzanto."
 
 #. TRANS: Form validator error displayed trying to send a direct message without content.
 #. TRANS: Client error displayed trying to send a notice without content.
@@ -3325,13 +3316,13 @@ msgstr ""
 #. TRANS: %s is a path.
 #, fuzzy, php-format
 msgid "\"%s\" not found."
-msgstr "Metodo de API ne troviĝas."
+msgstr "\"%s\" ne trovitas."
 
 #. TRANS: Server error displayed in oEmbed action when notice not found.
 #. TRANS: %s is a notice.
-#, fuzzy, php-format
+#, php-format
 msgid "Notice %s not found."
-msgstr "Metodo de API ne troviĝas."
+msgstr "Avizo %s ne trovitas."
 
 #. TRANS: Server error displayed in oEmbed action when notice has not profile.
 msgid "Notice has no profile."
@@ -3413,52 +3404,77 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Tio ĉi estas via elirkesto, kie listiĝas privataj mesaĝoj, kiujn vi sendis."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Ŝanĝi pasvorton"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Ŝanĝi vian pasvorton."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Pasvorta ŝanĝo"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Malnova pasvorto"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nova pasvorto"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 aŭ pli da literoj"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Konfirmi"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Same kiel pasvorto supra"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Ŝanĝi"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Pasvorto devas esti 6-litera aŭ pli longa."
 
 msgid "Passwords don't match."
 msgstr "La pasvortoj diferencas."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Neĝusta malnova pasvorto"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Eraris konservi uzanton: nevalida."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Malsukcesis konservi novan pasvorton."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Pasvorto konservitas."
 
@@ -3508,6 +3524,7 @@ msgstr "Retejo"
 msgid "Server"
 msgstr "Servilo"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Gastigserva Nomo de la retejo"
 
@@ -3515,6 +3532,7 @@ msgstr "Gastigserva Nomo de la retejo"
 msgid "Path"
 msgstr "Vojo"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Reteja vojo"
@@ -3523,6 +3541,7 @@ msgstr "Reteja vojo"
 msgid "Locale directory"
 msgstr "Dosierujo de lokaĵaro"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Vojo de dosierujo al lokaĵaroj."
 
@@ -3530,9 +3549,14 @@ msgstr "Vojo de dosierujo al lokaĵaroj."
 msgid "Fancy URLs"
 msgstr "Tajlora URL"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Ĉu uzi tajloran (pli facile legebla kaj memorebla) URL?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Temo"
 
@@ -3645,6 +3669,8 @@ msgid "Directory where attachments are located."
 msgstr "Dosierujo kie aldonaĵoj estas."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "\"SSL\""
 
@@ -3689,10 +3715,14 @@ msgstr ""
 msgid "People search"
 msgstr "Persona serĉado"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Ne valida persona markilo: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Uzantoj sinmarkitaj per %1$s - paĝo %2$d"
@@ -3702,15 +3732,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "La ago akceptas nur POST-an peton."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Vi ne povas forigi uzantojn."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Ne estas tiu paĝo."
@@ -3721,7 +3755,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Kromprogramo"
 
@@ -3737,15 +3772,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Defaŭlta lingvo"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Nevalida avizo-enhavo"
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Aviza permesilo ‘%1$s’ ne konformas al reteja permesilo ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3830,9 +3869,8 @@ msgid "Language"
 msgstr "Lingvo"
 
 #. TRANS: Tooltip for dropdown list label in form for profile settings.
-#, fuzzy
 msgid "Preferred language."
-msgstr "Preferata lingvo"
+msgstr "Preferata lingvo."
 
 #. TRANS: Dropdownlist label in form for profile settings.
 msgid "Timezone"
@@ -3898,29 +3936,39 @@ msgstr "Agordo konservitas."
 msgid "Restore account"
 msgstr "Krei konton"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Trans paĝolimo (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Malsukcesis ricevi publikan fluon"
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Publika tempstrio, paĝo %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Publika tempstrio"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Publika fluo (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Publika fluo (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Publika fluo (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3929,14 +3977,18 @@ msgstr ""
 "Tio ĉi estas la publika tempstrio de %%site.name%%, sed ankoraŭ neniu afiŝis "
 "ion ajn."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Estu la unua afiŝanto!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "Kial ne [krei konton](%%action.register%%) kaj esti la unua afiŝanto!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3949,6 +4001,8 @@ msgstr ""
 "net/). [Aniĝu](%%action.register%%) por konigi novaĵon pri vi mem al viaj "
 "amikoj, familianoj, kaj kolegoj! ([Pli](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4313,7 +4367,6 @@ msgstr "Nur ensalutinto rajtas ripeti avizon."
 msgid "No notice specified."
 msgstr "Neniu profilo specifiĝas."
 
-#, fuzzy
 msgid "You cannot repeat your own notice."
 msgstr "Vi ne povas ripeti vian propran avizon."
 
@@ -4380,7 +4433,7 @@ msgstr "Respondoj al %1$s ĉe %2$s!"
 #. TRANS: Client exception displayed when trying to restore an account while not logged in.
 #, fuzzy
 msgid "Only logged-in users can restore their account."
-msgstr "Nur ensalutinto rajtas ripeti avizon."
+msgstr "Nur ensalutintoj rajtas restarigi sian konton."
 
 #. TRANS: Client exception displayed when trying to restore an account without having restore rights.
 #, fuzzy
@@ -4391,7 +4444,7 @@ msgstr "Vi ankoraŭ neniun aplikaĵon registris."
 #. TRANS: Client exception. No file; probably just a non-AJAX submission.
 #, fuzzy
 msgid "No uploaded file."
-msgstr "Alŝuti dosieron"
+msgstr "Malestas alŝutita dosiero."
 
 #. TRANS: Client exception thrown when an uploaded file is larger than set in php.ini.
 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
@@ -5315,7 +5368,7 @@ msgid "[none]"
 msgstr "Nenio"
 
 msgid "[internal]"
-msgstr ""
+msgstr "[interna]"
 
 #. TRANS: Label for dropdown with URL shortener services.
 msgid "Shorten URLs with"
@@ -5325,18 +5378,22 @@ msgstr "Mallongigu URLojn per"
 msgid "Automatic shortening service to use."
 msgstr "Uzota aŭtomata mallongigad-servo."
 
+#, fuzzy
 msgid "URL longer than"
-msgstr ""
+msgstr "URL pli longa, ol"
 
 msgid "URLs longer than this will be shortened, 0 means always shorten."
-msgstr ""
+msgstr "URLoj pli longaj ol tio mallongigatos, uzu «0» por ĉiam mallongigi."
 
+#, fuzzy
 msgid "Text longer than"
-msgstr ""
+msgstr "Teksto pli longa, ol"
 
 msgid ""
 "URLs in notices longer than this will be shortened, 0 means always shorten."
 msgstr ""
+"URLoj en avizoj pli longaj, ol tio, mallongigatos; uzu «0» por ĉiam "
+"mallongigi."
 
 #. TRANS: Form validation error for form "Other settings" in user profile.
 #, fuzzy
@@ -5641,6 +5698,10 @@ msgstr ""
 "Vi laŭe jam ricevis eldonon de la GNU Affero Ĝenerala Publika Permesilo. "
 "Nekaze, legu %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Kromprogramo"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nomo"
@@ -5744,7 +5805,7 @@ msgstr "Aniĝi"
 #. TRANS: %1$s is the member name, %2$s is the subscribed group's name.
 #, php-format
 msgid "%1$s has joined group %2$s."
-msgstr ""
+msgstr "%1$s aniĝis grupon %2$s."
 
 #. TRANS: Server exception thrown when updating a local group fails.
 msgid "Could not update local group."
@@ -6140,6 +6201,10 @@ msgstr "saveSettings() ne jam realigita."
 msgid "Unable to delete design setting."
 msgstr "Malsukcesas forigi desegnan agordon."
 
+#, fuzzy
+msgid "Home"
+msgstr "Hejmpaĝo"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Baza reteja agordo"
@@ -6364,7 +6429,7 @@ msgstr ""
 #. TRANS: Server exception thrown when using the method setActivitySubject() in the class Atom10Feed.
 #, fuzzy
 msgid "Do not use this method!"
-msgstr "Ne forigi la avizon"
+msgstr "Ne uzu ĉi tiun metodon!"
 
 #. TRANS: Title.
 msgid "Notices where this attachment appears"
@@ -6377,7 +6442,7 @@ msgstr "Etikedoj por ĉi tiu aldonaĵo"
 #. TRANS: Exception thrown when a password change fails.
 #, fuzzy
 msgid "Password changing failed."
-msgstr "La ŝanĝo de pasvorto maltrafis"
+msgstr "Ŝanĝo de pasvorto malsukcesis."
 
 #. TRANS: Exception thrown when a password change attempt fails because it is not allowed.
 #, fuzzy
@@ -6461,7 +6526,7 @@ msgstr ""
 #. TRANS: Error message text shown when a favorite could not be set because it has already been favorited.
 #, fuzzy
 msgid "Could not create favorite: already favorited."
-msgstr "Malsukcesis krei ŝataton."
+msgstr "Malsukcesis krei ŝatmarkon: jam ŝatmarkita."
 
 #. TRANS: Text shown when a notice has been marked as favourite successfully.
 msgid "Notice marked as fave."
@@ -6771,10 +6836,6 @@ msgstr "Al la instalilo."
 msgid "Database error"
 msgstr "Datumbaza eraro"
 
-#, fuzzy
-msgid "Home"
-msgstr "Hejmpaĝo"
-
 msgid "Public"
 msgstr "Publika"
 
@@ -7528,7 +7589,7 @@ msgstr "Elektu peranton"
 #. TRANS Entry in drop-down selection box in direct-message inbox/outbox when no one is available to message.
 #, fuzzy
 msgid "No mutual subscribers."
-msgstr "Ne abonato!"
+msgstr "Mankas abonantoj reciprokaj."
 
 msgid "To"
 msgstr "Al"
@@ -7578,7 +7639,6 @@ msgstr "Sendi avizon"
 msgid "What's up, %s?"
 msgstr "Kio novas, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Aldoni"
 
@@ -7647,6 +7707,9 @@ msgstr "Forigi la avizon"
 msgid "Notice repeated"
 msgstr "Avizo ripetiĝas"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Puŝeti la uzanton"
 
@@ -7672,9 +7735,8 @@ msgstr "Refoja avizo."
 msgid "Couldn't insert new subscription."
 msgstr "Eraris enmeti novan abonon."
 
-#, fuzzy
 msgid "Your profile"
-msgstr "Grupa profilo"
+msgstr "Via profilo"
 
 msgid "Replies"
 msgstr "Respondoj"
@@ -7705,36 +7767,30 @@ msgctxt "plugin-description"
 msgid "(Plugin descriptions unavailable when disabled.)"
 msgstr ""
 
-#, fuzzy
 msgid "Settings"
-msgstr "SMM-a agordo"
+msgstr "Agordoj"
 
-#, fuzzy
 msgid "Change your personal settings"
-msgstr "Ŝanĝi vian profilan agordon."
+msgstr "Ŝanĝi viajn personajn agordojn"
 
-#, fuzzy
 msgid "Site configuration"
-msgstr "Uzanta agordo"
+msgstr "Retej-agordo"
 
-#, fuzzy
 msgid "Logout"
-msgstr " Elsaluti"
+msgstr "Elsaluti"
 
-#, fuzzy
 msgid "Logout from the site"
-msgstr "Elsaluti el la retejo"
+msgstr "Elsaluti el la retpaĝaro"
 
 #, fuzzy
 msgid "Login to the site"
-msgstr "Ensaluti al la retejo"
+msgstr "Ensaluti al la retpaĝaro"
 
 msgid "Search"
 msgstr "Serĉi"
 
-#, fuzzy
 msgid "Search the site"
-msgstr "Serĉi ĉe retejo"
+msgstr "Serĉi en la retpaĝaro"
 
 #. TRANS: H2 text for user subscription statistics.
 #. TRANS: Label for user statistics.
@@ -7810,9 +7866,8 @@ msgid "Revoke the \"%s\" role from this user"
 msgstr "Revoki rolon %s de la uzanto"
 
 #. TRANS: Client error on action trying to visit a non-existing page.
-#, fuzzy
 msgid "Page not found."
-msgstr "Metodo de API ne troviĝas."
+msgstr "Paĝo ne trovitas."
 
 msgid "Sandbox"
 msgstr "Provejo"
@@ -7904,7 +7959,7 @@ msgid "URL"
 msgstr "URL"
 
 msgid "URL shorteners"
-msgstr ""
+msgstr "Mallongigiloj de URLoj"
 
 msgid "Updates by instant messenger (IM)"
 msgstr "Ĝisdatiĝo per tujmesaĝilo."
@@ -8161,11 +8216,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Tempstrio de %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Serĉi homon ĉe la retejo"
index 81bccda83362aa7d895b52762ae07d1c05fe33f0..7319a67351f3de8e28d4c7bd8d98872c32954624 100644 (file)
@@ -18,17 +18,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:08+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:03+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: es\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1060,7 +1060,8 @@ msgid "Can only fave notices."
 msgstr "Sólo se pueden preferir los avisos."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Nota desconocida."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1648,6 +1649,7 @@ msgstr "Borrar este grupo"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3165,6 +3167,10 @@ msgstr "Se requiere el URL fuente."
 msgid "Could not create application."
 msgstr "No se pudo crear la aplicación."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Tamaño inválido."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Grupo nuevo "
@@ -3449,52 +3455,77 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Ésta es tu bandeja de salida, incluye la lista de mensajes privados enviados."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Cambiar contraseña"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Cambia tu contraseña"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Cambio de contraseña"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Antigua contraseña"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nueva contraseña"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 o más caracteres"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirmar"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Igual a la contraseña de arriba"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Cambiar"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "La contraseña debe tener 6 o más caracteres."
 
 msgid "Passwords don't match."
 msgstr "Las contraseñas no coinciden"
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Contraseña antigua incorrecta."
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Error al guardar el usuario; inválido."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "No se puede guardar la nueva contraseña."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Se guardó la contraseña."
 
@@ -3544,6 +3575,7 @@ msgstr "Sitio"
 msgid "Server"
 msgstr "Servidor"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nombre del host del servidor del sitio."
 
@@ -3551,6 +3583,7 @@ msgstr "Nombre del host del servidor del sitio."
 msgid "Path"
 msgstr "Ruta"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Ruta del sitio"
@@ -3560,6 +3593,7 @@ msgstr "Ruta del sitio"
 msgid "Locale directory"
 msgstr "Directorio de temas"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "Ruta del directorio de las configuraciones locales"
@@ -3568,9 +3602,14 @@ msgstr "Ruta del directorio de las configuraciones locales"
 msgid "Fancy URLs"
 msgstr "URL agradables"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "¿Usar URL amigables (más legibles y memorizables)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema"
 
@@ -3696,6 +3735,8 @@ msgid "Directory where attachments are located."
 msgstr "Ruta del directorio de las configuraciones locales"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3742,10 +3783,14 @@ msgstr ""
 msgid "People search"
 msgstr "Buscador de gente"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "No es una etiqueta válida para personas: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Usuarios auto etiquetados con %1$s - página %2$d"
@@ -3755,15 +3800,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Esta acción sólo acepta solicitudes POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "No puedes borrar usuarios."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "No existe tal página."
@@ -3774,7 +3823,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Complementos"
 
@@ -3790,15 +3840,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "!Idioma predeterminado"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Contenido de mensaje inválido."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "La licencia del mensaje %1$s’ es incompatible con la licencia del sitio ‘%2"
 "$s’."
@@ -3956,29 +4010,39 @@ msgstr "Se guardó configuración."
 msgid "Restore account"
 msgstr "Crear una cuenta"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Más allá del límite de páginas (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "No se pudo acceder a corriente pública."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Línea temporal pública, página %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Línea temporal pública"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Canal público (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Canal público (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Canal público (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3987,9 +4051,11 @@ msgstr ""
 "Esta es la línea temporal pública de %%site.name%%, pero aún no se ha "
 "publicado nada."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "¡Sé la primera persona en publicar algo!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3997,6 +4063,8 @@ msgstr ""
 "¿Por qué no [registras una cuenta](%%action.register%%) y te conviertes en "
 "la primera persona en publicar?"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4010,6 +4078,8 @@ msgstr ""
 "para compartir notas acerca de tí con tus amistades, familiares y "
 "compañeros!! ([Más información](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5746,6 +5816,10 @@ msgstr ""
 "Debes haber recibido una copia de la Licencia Pública General de Affero GNU "
 "con este programa. Si no la recibiste, visita %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Complementos"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nombre"
@@ -6257,6 +6331,9 @@ msgstr "saveSettings() no implementada."
 msgid "Unable to delete design setting."
 msgstr "No se puede eliminar la configuración de diseño."
 
+msgid "Home"
+msgstr "Página de inicio"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuración básica del sitio"
@@ -6892,9 +6969,6 @@ msgstr "Ir al instalador."
 msgid "Database error"
 msgstr "Error de la base de datos"
 
-msgid "Home"
-msgstr "Página de inicio"
-
 msgid "Public"
 msgstr "Público"
 
@@ -7707,7 +7781,6 @@ msgstr "Enviar un mensaje"
 msgid "What's up, %s?"
 msgstr "¿Qué tal, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Adjuntar"
 
@@ -7776,6 +7849,9 @@ msgstr "Borrar este mensaje"
 msgid "Notice repeated"
 msgstr "Mensaje repetido"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Dar un toque a este usuario"
 
@@ -8286,11 +8362,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "línea temporal de %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Encontrar gente en este sitio"
index d8bcba9d6d6de75d68f3033f5fc59d7ada9c79cf..443e41030858d199d0ff5d107eb16e29c2f06bc4 100644 (file)
@@ -16,8 +16,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:10+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:04+0000\n"
 "Last-Translator: Ahmad Sufi Mahmudi\n"
 "Language-Team: Persian <http://translatewiki.net/wiki/Portal:fa>\n"
 "MIME-Version: 1.0\n"
@@ -26,9 +26,9 @@ msgstr ""
 "X-Language-Code: fa\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1052,7 +1052,7 @@ msgstr "پیدا کردن محتوای پیام‌ها"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "ناشناخته"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1647,6 +1647,7 @@ msgstr "حذف این کاربر"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3153,6 +3154,10 @@ msgstr "نشانی اینترنتی منبع مورد نیاز است."
 msgid "Could not create application."
 msgstr "نمی‌توان برنامه را ساخت."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "اندازه نادرست است."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "گروه جدید"
@@ -3436,52 +3441,77 @@ msgstr ""
 "این صندوق خروجی شماست، که پیام‌های خصوصی فرستاده شده به وسیلهٔ شما را فهرست "
 "می‌کند."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "تغییر گذرواژه"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "تغییر گذرواژهٔ شما"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "تغییر گذرواژه"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "گذرواژهٔ پیشین"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "گذرواژهٔ تازه"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "۶ نویسه یا بیش‌تر"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "تایید"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "مانند گذرواژهٔ بالا"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "تغییر"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "گذرواژه باید ۶ نویسه یا بیش‌تر باشد."
 
 msgid "Passwords don't match."
 msgstr "گذرواژه‌ها مطابقت ندارند."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "گذرواژه پیشین اشتباه است"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "هنگام ذخیرهٔ کاربر خطا رخ داد؛ نامعتبر است."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "نمی‌توان گذرواژهٔ جدید را ذخیره کرد."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "گذرواژه ذخیره شد."
 
@@ -3531,6 +3561,7 @@ msgstr "وب‌گاه"
 msgid "Server"
 msgstr "کارگزار"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "نام میزبان کارگزار وب‌گاه."
 
@@ -3538,6 +3569,7 @@ msgstr "نام میزبان کارگزار وب‌گاه."
 msgid "Path"
 msgstr "مسیر"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "مسیر وب‌گاه"
@@ -3547,6 +3579,7 @@ msgstr "مسیر وب‌گاه"
 msgid "Locale directory"
 msgstr "شاخهٔ پوسته"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "مسیر پوشه برای زبان‌های محلی"
@@ -3555,9 +3588,14 @@ msgstr "مسیر پوشه برای زبان‌های محلی"
 msgid "Fancy URLs"
 msgstr "نشانی‌های تمیز"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "از نشانی‌های تمیز (خواناتر و ماندگارتر در ذهن) استفاده شود؟"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "پوسته"
 
@@ -3683,6 +3721,8 @@ msgid "Directory where attachments are located."
 msgstr "مسیر پوشه برای زبان‌های محلی"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3729,10 +3769,14 @@ msgstr ""
 msgid "People search"
 msgstr "جست‌وجوی کاربران"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "یک برچسب کاربری معتبر نیست: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "کاربران خود برچسب‌گذاری شده با %1$s - صفحهٔ %2$d"
@@ -3742,15 +3786,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "این عمل تنها درخواست‌های POST را می‌پذیرد."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "شما نمی‌توانید کاربران را پاک کنید."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "چنین صفحه‌ای وجود ندارد."
@@ -3761,7 +3809,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "افزونه‌ها"
 
@@ -3777,15 +3826,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "زبان پیش‌فرض"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "محتوای پیام نامعتبر است."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "مجوز پیام «%1$s» با مجوز وب‌گاه «%2$s» سازگار نیست."
 
 #. TRANS: Page title for profile settings.
@@ -3936,29 +3989,39 @@ msgstr "تنظیمات ذخیره شد."
 msgid "Restore account"
 msgstr "ساختن یک جساب‌کاربری"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "نمی‌توان جریان عمومی را دریافت کرد."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "خط‌زمانی عمومی، صفحهٔ %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "خط‌زمانی عمومی"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "خوراک جریان عمومی (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "خوراک جریان عمومی (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "خوراک جریان عمومی (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3966,14 +4029,18 @@ msgid ""
 msgstr ""
 "این خط‌زمانی عمومی برای %%site.name%% است، اما هیچ‌کس هنوز چیزی نفرستاده است."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "اولین کسی باشید که پیام می‌فرستد!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "چرا [ثبت نام](%%action.register%%) نمی‌کنید و اولین پیام را نمی‌فرستید؟"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3987,6 +4054,8 @@ msgstr ""
 "action.register%%) تا آگاهی‌هایی را دربارهٔ خودتان با دوستان، خانواده و "
 "همکاران‌تان به اشتراک بگذارید! ([بیش‌تر بخوانید](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5695,6 +5764,10 @@ msgstr ""
 "شما باید یک رونوشت از مجوز GNU Affero General Public License را همراه این "
 "برنامه دریافت کرده باشید. اگر چنین نیست، %s را ببینید."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "افزونه‌ها"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "نام"
@@ -6195,6 +6268,9 @@ msgstr "saveSettings() پیاده نشده است."
 msgid "Unable to delete design setting."
 msgstr "نمی توان تنظیمات طراحی شده را پاک کرد ."
 
+msgid "Home"
+msgstr "خانه"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "پیکربندی اولیه وب‌گاه"
@@ -6824,9 +6900,6 @@ msgstr "برو به نصاب."
 msgid "Database error"
 msgstr "خطای پایگاه داده"
 
-msgid "Home"
-msgstr "خانه"
-
 msgid "Public"
 msgstr "عمومی"
 
@@ -7625,7 +7698,6 @@ msgstr "فرستادن یک پیام"
 msgid "What's up, %s?"
 msgstr "چه خبر، %s؟"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "پیوست کردن"
 
@@ -7695,6 +7767,9 @@ msgstr "این پیام را پاک کن"
 msgid "Notice repeated"
 msgstr "پیام تکرار شد"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "یادآوری‌کردن به این کاربر"
 
@@ -8201,11 +8276,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "خط‌زمانی %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "پیدا کردن افراد در این وب‌گاه"
index 31e3ddcf1664a3b9fbfcbbe951aa7ee52f2e5407..98f6370d3e55bdc3dc3dad05aa3454ab47bec795 100644 (file)
@@ -15,17 +15,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:11+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:06+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: fi\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1042,7 +1042,8 @@ msgid "Can only fave notices."
 msgstr "Vain päivityksiä voi merkitä suosikeiksi."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Tuntematon päivitys."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1617,6 +1618,7 @@ msgstr "Poista tämä ryhmä."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3117,6 +3119,10 @@ msgstr ""
 msgid "Could not create application."
 msgstr "Ei voitu lisätä aliasta."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Koko ei kelpaa."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Uusi ryhmä"
@@ -3406,52 +3412,77 @@ msgstr "Käyttäjän %s lähetetyt viestit"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "Tämä on postilaatikkosi, jossa on lähettämäsi yksityisviestit."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Vaihda salasana"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Vaihda salasanasi."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Salasanan vaihto"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Vanha salasana"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Uusi salasana"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 tai useampia merkkejä"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Vahvista"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Sama kuin ylläoleva salasana"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Vaihda"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Salasanassa pitää olla 6 tai useampia merkkejä."
 
 msgid "Passwords don't match."
 msgstr "Salasanat eivät täsmää."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Väärä vanha salasana"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Virhe tapahtui käyttäjän tallentamisessa; epäkelpo."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Uutta salasanaa ei voida tallentaa."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Salasana tallennettu."
 
@@ -3503,6 +3534,7 @@ msgstr "Kutsu"
 msgid "Server"
 msgstr "Palauta"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3511,6 +3543,7 @@ msgstr ""
 msgid "Path"
 msgstr "Polut"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Palvelun ilmoitus"
@@ -3520,6 +3553,7 @@ msgstr "Palvelun ilmoitus"
 msgid "Locale directory"
 msgstr "Taustakuvan hakemisto"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3527,9 +3561,12 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr ""
 
@@ -3656,6 +3693,7 @@ msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
 #, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SMS"
 
@@ -3705,10 +3743,14 @@ msgstr ""
 msgid "People search"
 msgstr "Etsi ihmisiä"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Tuo ei ole kelvollinen sähköpostiosoite."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, fuzzy, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Käyttäjät joilla henkilötagi %s - sivu %d"
@@ -3718,15 +3760,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Sinä et voi poistaa käyttäjiä."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Sivua ei ole."
@@ -3737,7 +3783,7 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr ""
 
@@ -3753,15 +3799,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Ensisijainen kieli"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Koko ei kelpaa."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3919,29 +3969,39 @@ msgstr "Asetukset tallennettu."
 msgid "Restore account"
 msgstr "Luo uusi ryhmä"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Julkista päivitysvirtaa ei saatu."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Julkinen aikajana, sivu %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Julkinen aikajana"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Julkinen syöte (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Julkisen Aikajanan Syöte (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Julkinen syöte (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, fuzzy, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3950,14 +4010,18 @@ msgstr ""
 "Tämä on käyttäjän %s ja kavereiden aikajana, mutta kukaan ei ole lähettyänyt "
 "vielä mitään."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Ole ensimmäinen joka lähettää päivityksen!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3966,6 +4030,8 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5670,6 +5736,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr ""
+
 #. TRANS: Form input field label for application name.
 #, fuzzy
 msgid "Name"
@@ -6183,6 +6253,9 @@ msgstr "Komentoa ei ole vielä toteutettu."
 msgid "Unable to delete design setting."
 msgstr "Twitter-asetuksia ei voitu tallentaa!"
 
+msgid "Home"
+msgstr "Kotisivu"
+
 #. TRANS: Menu item title/tooltip
 #, fuzzy
 msgid "Basic site configuration"
@@ -6796,9 +6869,6 @@ msgstr "Kirjaudu sisään palveluun"
 msgid "Database error"
 msgstr "Tietokantavirhe"
 
-msgid "Home"
-msgstr "Kotisivu"
-
 msgid "Public"
 msgstr "Julkinen"
 
@@ -7527,7 +7597,6 @@ msgstr "Lähetä päivitys"
 msgid "What's up, %s?"
 msgstr "Mitä teet juuri nyt, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr ""
 
@@ -7599,6 +7668,9 @@ msgstr "Poista tämä päivitys"
 msgid "Notice repeated"
 msgstr "Päivitys on poistettu."
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Tönäise tätä käyttäjää"
 
@@ -8123,11 +8195,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s aikajana"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Hae ihmisiä tältä sivustolta"
index 4006bd81579f8e1fe18203131c7f9111aba789f5..f63f26d5f49c5b0b1a91e6d0b9589c99c50ad5c3 100644 (file)
@@ -21,17 +21,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:12+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:07+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: fr\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1071,7 +1071,7 @@ msgstr "Ne peut gérer que les activités de publication."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Inconnu"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1659,6 +1659,7 @@ msgstr "Supprimer ce groupe"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3187,6 +3188,10 @@ msgstr "L’URL source est requise."
 msgid "Could not create application."
 msgstr "Impossible de créer l’application."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Taille incorrecte."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nouveau groupe"
@@ -3475,52 +3480,77 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Cette boîte d’envoi regroupe les messages personnels que vous avez envoyés."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Changer de mot de passe"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Modifier votre mot de passe."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Modification du mot de passe"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Ancien mot de passe"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nouveau mot de passe"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 caractères ou plus"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirmer"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Identique au mot de passe ci-dessus"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Modifier"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Votre mot de passe doit contenir au moins 6 caractères."
 
 msgid "Passwords don't match."
 msgstr "Les mots de passe ne correspondent pas."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Ancien mot de passe incorrect"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Erreur lors de l’enregistrement de l’utilisateur ; invalide."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Impossible de sauvegarder le nouveau mot de passe."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Mot de passe enregistré."
 
@@ -3570,6 +3600,7 @@ msgstr "Site"
 msgid "Server"
 msgstr "Serveur"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nom d’hôte du serveur du site."
 
@@ -3577,6 +3608,7 @@ msgstr "Nom d’hôte du serveur du site."
 msgid "Path"
 msgstr "Chemin"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Chemin du site."
 
@@ -3584,6 +3616,7 @@ msgstr "Chemin du site."
 msgid "Locale directory"
 msgstr "Dossier des données de localisation"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Chemin du dossier vers les paramètres régionaux."
 
@@ -3591,9 +3624,14 @@ msgstr "Chemin du dossier vers les paramètres régionaux."
 msgid "Fancy URLs"
 msgstr "Jolies URL"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Utiliser des jolies URL (plus lisibles et faciles à mémoriser) ?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Thème"
 
@@ -3706,6 +3744,8 @@ msgid "Directory where attachments are located."
 msgstr "Le répertoire où les pièces jointes sont stockées."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3751,10 +3791,14 @@ msgstr ""
 msgid "People search"
 msgstr "Recherche de personnes"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Cette marque est invalide : %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Utilisateurs marqués par eux-mêmes avec %1$s - page %2$d"
@@ -3764,15 +3808,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Cette action n'accepte que les requêtes de type POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Vous ne pouvez pas supprimer des utilisateurs."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Page non trouvée."
@@ -3783,7 +3831,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Extensions"
 
@@ -3799,15 +3848,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Langue par défaut"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Contenu de l’avis invalide."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "La licence des avis « %1$s » n’est pas compatible avec la licence du site « %2"
 "$s »."
@@ -3962,29 +4015,39 @@ msgstr "Préférences enregistrées."
 msgid "Restore account"
 msgstr "Créer un compte"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Au-delà de la limite de page (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Impossible de récupérer le flux public."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Flux public - page %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Flux public"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fil du flux public (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fil du flux public (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Fil du flux public (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3993,9 +4056,11 @@ msgstr ""
 "Ceci est la chronologie publique de %%site.name%% mais personne n’a encore "
 "rien posté."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Soyez le premier à poster !"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -4003,6 +4068,8 @@ msgstr ""
 "Pourquoi ne pas [créer un compte](%%action.register%%) et être le premier à "
 "poster !"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4016,6 +4083,8 @@ msgstr ""
 "vous avec vos amis, famille et collègues ! ([Plus d’informations](%%doc.help%"
 "%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5757,6 +5826,10 @@ msgstr ""
 "Vous avez dû recevoir une copie de la Licence Publique Générale GNU Affero "
 "avec ce programme. Si ce n’est pas le cas, consultez %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Extensions"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nom"
@@ -6267,6 +6340,9 @@ msgstr "saveSettings() n’a pas été implémentée."
 msgid "Unable to delete design setting."
 msgstr "Impossible de supprimer les paramètres de conception."
 
+msgid "Home"
+msgstr "Site personnel"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuration basique du site"
@@ -6908,9 +6984,6 @@ msgstr "Aller au programme d’installation"
 msgid "Database error"
 msgstr "Erreur de la base de données"
 
-msgid "Home"
-msgstr "Site personnel"
-
 msgid "Public"
 msgstr "Public"
 
@@ -7721,7 +7794,6 @@ msgstr "Envoyer un avis"
 msgid "What's up, %s?"
 msgstr "Quoi de neuf, %s ?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Attacher"
 
@@ -7790,6 +7862,9 @@ msgstr "Supprimer cet avis"
 msgid "Notice repeated"
 msgstr "Avis repris"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Envoyer un clin d’œil à cet utilisateur"
 
@@ -8301,11 +8376,3 @@ msgstr "XML invalide, racine XRD manquante."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Obtention de la sauvegarde depuis le fichier « %s »."
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Activité de %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Chercher des personnes sur ce site"
index 8935ca9b3a01bc581750963f5e11223d98c92017..12cca595ec7001c483ccad283f3fc4a5af336543 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:13+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:08+0000\n"
 "Language-Team: Friulian <http://translatewiki.net/wiki/Portal:fur>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: fur\n"
 "X-Message-Group: #out-statusnet-core\n"
@@ -1013,8 +1013,9 @@ msgid "Can only fave notices."
 msgstr ""
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
-msgstr ""
+#, fuzzy
+msgid "Unknown notice."
+msgstr "Gnûf avîs"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
 msgid "Already a favorite."
@@ -1563,6 +1564,7 @@ msgstr "Elimine chest grup."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -2981,6 +2983,10 @@ msgstr ""
 msgid "Could not create application."
 msgstr ""
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "La dimension no je valide."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Gnûf grup"
@@ -3256,49 +3262,74 @@ msgstr ""
 "Cheste e je la tô pueste in jessude, dulà che tu cjatis i messaçs privâts "
 "che tu âs mandât."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Cambie la password"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Cambie la tô password"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Cambiament di password"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Vecje password"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Gnove password"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 o plui caratars."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Conferme"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Compagn che la password parsore"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Cambie"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "La password e à di sei di sîs o plui caratars."
 
 msgid "Passwords don't match."
 msgstr "Lis passwords no corispuindin."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "La vecje password e je sbaliade"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr ""
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr ""
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Password salvade"
 
@@ -3348,6 +3379,7 @@ msgstr "Sît"
 msgid "Server"
 msgstr "Servidôr"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3355,6 +3387,7 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr ""
 
@@ -3362,6 +3395,7 @@ msgstr ""
 msgid "Locale directory"
 msgstr ""
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3369,9 +3403,13 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Teme"
 
@@ -3484,6 +3522,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3528,10 +3568,14 @@ msgstr ""
 msgid "People search"
 msgstr "Cîr personis"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr ""
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
@@ -3541,14 +3585,18 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 msgid "You cannot administer plugins."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "La pagjine no esist."
@@ -3559,7 +3607,7 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr ""
 
@@ -3575,15 +3623,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Lenghe predeterminade"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr ""
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3725,43 +3777,57 @@ msgstr "Impuestazions salvadis."
 msgid "Restore account"
 msgstr ""
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr ""
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Ativitât publiche, pagjine %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Ativitât publiche"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Canâl de ativitât publiche (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Canâl de ativitât publiche (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Canâl de ativitât publiche (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3774,6 +3840,8 @@ msgstr ""
 "net/). [Unissiti cumò](%%action.register%%) par condividi chel che tu fasis "
 "cun amîs, famee e companie! ([Altris informazions](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5370,6 +5438,10 @@ msgstr ""
 "Tu varessis di vê ricevût une copie de GNU Affero General Public License "
 "insieme cun chest program. Se nol è cussì, cjale %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr ""
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Non"
@@ -5860,6 +5932,10 @@ msgstr ""
 msgid "Unable to delete design setting."
 msgstr ""
 
+#, fuzzy
+msgid "Home"
+msgstr "Pagjine web"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr ""
@@ -6444,10 +6520,6 @@ msgstr ""
 msgid "Database error"
 msgstr "Erôr de base di dâts"
 
-#, fuzzy
-msgid "Home"
-msgstr "Pagjine web"
-
 msgid "Public"
 msgstr "Public"
 
@@ -7137,7 +7209,6 @@ msgstr "Mande un avîs"
 msgid "What's up, %s?"
 msgstr "Ce sucedial, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Aleghe"
 
@@ -7204,6 +7275,9 @@ msgstr "Elimine chest avîs"
 msgid "Notice repeated"
 msgstr "Avîs ripetût"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr ""
 
@@ -7713,11 +7787,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Ativitât di %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Cjate int in chest sît"
index 82a1934778dc37645f3ab687db690c99d7639a56..f189cd13b77d1fcd148bff640579079d3ba3176a 100644 (file)
@@ -12,17 +12,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:14+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:09+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: gl\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1050,7 +1050,7 @@ msgstr "Buscar nos contidos das notas"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Descoñecida"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1639,6 +1639,7 @@ msgstr "Borrar o usuario"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3164,6 +3165,10 @@ msgstr "Necesítase o URL de orixe."
 msgid "Could not create application."
 msgstr "Non se puido crear a aplicación."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Tamaño non válido."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Novo grupo"
@@ -3447,52 +3452,77 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Esta é a súa caixa de saída. Nela lístanse as mensaxes privadas que enviou."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Cambiar o contrasinal"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Cambiar o seu contrasinal."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Cambio de contrasinal"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Contrasinal anterior"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Novo contrasinal"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "Seis ou máis caracteres"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirmar"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Igual ao contrasinal anterior"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Cambiar"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "O contrasinal debe conter seis ou máis caracteres."
 
 msgid "Passwords don't match."
 msgstr "Os contrasinais non coinciden."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "O contrasinal anterior non é correcto"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Houbo un erro ao gardar o usuario. Incorrecto."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Non se puido gardar o novo contrasinal."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Gardouse o contrasinal."
 
@@ -3542,6 +3572,7 @@ msgstr "Sitio"
 msgid "Server"
 msgstr "Servidor"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nome do servidor do sitio."
 
@@ -3549,6 +3580,7 @@ msgstr "Nome do servidor do sitio."
 msgid "Path"
 msgstr "Ruta"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Ruta do sitio."
 
@@ -3556,6 +3588,7 @@ msgstr "Ruta do sitio."
 msgid "Locale directory"
 msgstr "Directorio das traducións"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Ruta do directorio das traducións."
 
@@ -3563,9 +3596,14 @@ msgstr "Ruta do directorio das traducións."
 msgid "Fancy URLs"
 msgstr "Enderezos URL elegantes"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Quere utilizar os enderezos URL elegantes (mellores de ler e lembrar)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema visual"
 
@@ -3689,6 +3727,8 @@ msgid "Directory where attachments are located."
 msgstr "Ruta do directorio das traducións"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3735,10 +3775,14 @@ msgstr ""
 msgid "People search"
 msgstr "Busca de xente"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "A etiqueta de persoa non é correcta: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Usuarios etiquetados por si mesmos con %1$s - páxina %2$d"
@@ -3748,15 +3792,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Esta acción só permite solicitudes POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Non pode borrar usuarios."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Esa páxina non existe."
@@ -3767,7 +3815,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Complementos"
 
@@ -3783,15 +3832,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Lingua por defecto"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "O contido da nota é incorrecto."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "A licenza \"%1$s\" da nota non é compatible coa licenza \"%2$s\" do sitio."
 
@@ -3949,29 +4002,39 @@ msgstr "Gardouse a configuración."
 msgid "Restore account"
 msgstr "Crear unha conta"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Alén do límite da páxina (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Non se puido obter o fluxo público."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Liña do tempo pública, páxina %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Liña do tempo pública"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fonte de novas no fluxo público (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fonte de novas no fluxo público (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Fonte de novas no fluxo público (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3980,9 +4043,11 @@ msgstr ""
 "Esta é a liña do tempo pública para %%site.name%% pero ninguén publicou nada "
 "aínda."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Sexa o primeiro en publicar!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3990,6 +4055,8 @@ msgstr ""
 "Por que non [rexistrar unha conta](%%action.register%%) e ser o primeiro en "
 "publicar?"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4003,6 +4070,8 @@ msgstr ""
 "register%%) para compartir notas persoais cos amigos, a familia e os "
 "compañeiros! ([Máis información](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5742,6 +5811,10 @@ msgstr ""
 "Debeu recibir unha copia da Licenza Pública Xeral Affero de GNU xunto co "
 "programa. En caso contrario, vexa %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Complementos"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nome"
@@ -6250,6 +6323,10 @@ msgstr "saveSettings() non está integrado."
 msgid "Unable to delete design setting."
 msgstr "Non se puido borrar a configuración do deseño."
 
+#, fuzzy
+msgid "Home"
+msgstr "Páxina persoal"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuración básica do sitio"
@@ -6891,10 +6968,6 @@ msgstr "Ir ao instalador."
 msgid "Database error"
 msgstr "Houbo un erro na base de datos"
 
-#, fuzzy
-msgid "Home"
-msgstr "Páxina persoal"
-
 msgid "Public"
 msgstr "Públicas"
 
@@ -7708,7 +7781,6 @@ msgstr "Enviar unha nota"
 msgid "What's up, %s?"
 msgstr "Que hai de novo, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Anexar"
 
@@ -7777,6 +7849,9 @@ msgstr "Borrar esta nota"
 msgid "Notice repeated"
 msgstr "Repetiuse a nota"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Facerlle un aceno a este usuario"
 
@@ -8294,11 +8369,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Liña do tempo de %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Atopar xente neste sitio"
index a5b1dc4d09a2c2a9afbb353985e0f08a2ee314a6..c878043d4bd6098460a13768270439e7a7ed50aa 100644 (file)
@@ -11,18 +11,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:15+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:10+0000\n"
 "Language-Team: Upper Sorbian <http://translatewiki.net/wiki/Portal:hsb>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: hsb\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : (n%100==3 || "
 "n%100==4) ? 2 : 3)\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1027,7 +1027,8 @@ msgid "Can only fave notices."
 msgstr "Jenož zdźělenki dadźa so jako fawority składować."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Njeznata notica."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1581,6 +1582,7 @@ msgstr "Tutu skupinu zhašeć."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3008,6 +3010,10 @@ msgstr "Žórłowy URL je trěbny."
 msgid "Could not create application."
 msgstr "Aplikacija njeda so wutworić."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Njepłaćiwa wulkosć."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nowa skupina"
@@ -3282,49 +3288,74 @@ msgstr ""
 "To je twój wuchadny póst, kotryž twoje priwatne powěsće nalistuje, kotrež sy "
 "pósłał."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Hesło změnić"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Změń swoje hesło."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Hesło změnjene"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Stare hesło"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nowe hesło"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 abo wjace znamješkow."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Wobkrućić"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Samsne hesło kaž horjeka."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Změnić"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Hesło dyrbi 6 abo wjace znamješkow měć."
 
 msgid "Passwords don't match."
 msgstr "Hesle so njekryjetej."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Wopačne stare hesło"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Zmylk při składowanju wužiwarja; njepłaćiwy."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Nowe hesło njeda so składować."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Hesło składowane."
 
@@ -3374,6 +3405,7 @@ msgstr "Sydło"
 msgid "Server"
 msgstr "Serwer"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Serwerowe mjeno sydła"
 
@@ -3381,6 +3413,7 @@ msgstr "Serwerowe mjeno sydła"
 msgid "Path"
 msgstr "Šćežka"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Sydłowa šćežka."
 
@@ -3388,6 +3421,7 @@ msgstr "Sydłowa šćežka."
 msgid "Locale directory"
 msgstr "Zapis lokalow"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Zapisowa šćežka k lokalam."
 
@@ -3395,9 +3429,13 @@ msgstr "Zapisowa šćežka k lokalam."
 msgid "Fancy URLs"
 msgstr "Šikwane URL"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Šat"
 
@@ -3510,6 +3548,8 @@ msgid "Directory where attachments are located."
 msgstr "Zapis, hdźež přiwěški su."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3552,10 +3592,14 @@ msgstr ""
 msgid "People search"
 msgstr "Za ludźimi pytać"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Njepłaćiwa wosobowa taflička: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
@@ -3565,15 +3609,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Njemóžeš wužiwarjow wušmórnyć."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Strona njeeksistuje."
@@ -3584,7 +3632,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Tykače"
 
@@ -3600,15 +3649,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Standardna rěč"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Njepłaćiwy wobsah zdźělenki."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3757,43 +3810,57 @@ msgstr "Nastajenja składowane."
 msgid "Restore account"
 msgstr "Konto wobnowić"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Limit stronow (%s) překročeny."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Zjawny prud njeda so wotwołać."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Zjawna časowa lajsta, strona %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Kanal zjawneho pruda (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Kanal zjawneho pruda (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Kanal zjawneho pruda (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Budź prěni, kiž něšto pisa!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3802,6 +3869,8 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5365,6 +5434,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Tykače"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Mjeno"
@@ -5852,6 +5925,10 @@ msgstr "saveSettings() njeimplementowany."
 msgid "Unable to delete design setting."
 msgstr "Njeje móžno, designowe nastajenje zhašeć."
 
+#, fuzzy
+msgid "Home"
+msgstr "Startowa strona"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Zakładna sydłowa konfiguracija"
@@ -6455,10 +6532,6 @@ msgstr "K instalaciji"
 msgid "Database error"
 msgstr "Zmylk w datowej bance"
 
-#, fuzzy
-msgid "Home"
-msgstr "Startowa strona"
-
 msgid "Public"
 msgstr "Zjawny"
 
@@ -7176,7 +7249,6 @@ msgstr "Zdźělenku pósłać"
 msgid "What's up, %s?"
 msgstr "Što je, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Připowěsnyć"
 
@@ -7243,6 +7315,9 @@ msgstr "Tutu zdźělenku wušmórnyć"
 msgid "Notice repeated"
 msgstr "Zdźělenka wospjetowana"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Tutoho wužiwarja storčić"
 
@@ -7761,7 +7836,3 @@ msgstr "Njepłaćiwy XML, korjeń XRD faluje."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Wobstaruje so zawěsćenje z dataje \"%s\"-"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Ludźi na tutym sydle pytać"
index fa3776bd12d22fd463c617afb397ec47bd5a8f2b..f05265f38e471abe1193d3c31c6c0e03d0078937 100644 (file)
@@ -12,13 +12,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:16+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:11+0000\n"
 "Language-Team: Hungarian <http://translatewiki.net/wiki/Portal:hu>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: hu\n"
 "X-Message-Group: #out-statusnet-core\n"
@@ -1043,7 +1043,7 @@ msgstr "Keressünk a hírek tartalmában"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Ismeretlen művelet"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1629,6 +1629,7 @@ msgstr "Töröljük ezt a felhasználót"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3091,6 +3092,10 @@ msgstr "Meg kell adnod forrás URL-t."
 msgid "Could not create application."
 msgstr "Nem sikerült létrehozni az alkalmazást."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Érvénytelen méret."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Új csoport"
@@ -3363,52 +3368,77 @@ msgstr "%s kimenő postafiókja"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "Ez az elküldött privát üzeneteid postafiókja."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Jelszó megváltoztatása"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Változtasd meg a jelszavadat."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Jelszó megváltoztatása"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Régi jelszó"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Új jelszó"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 vagy több karakter"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Megerősítés"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Ugyanaz mint a fenti jelszó"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Változtassunk"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "A jelszónak legalább 6 karakterből kell állnia."
 
 msgid "Passwords don't match."
 msgstr "A jelszavak nem egyeznek."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Érvénytelen a régi jelszó"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Hiba a felhasználó mentésekor; érvénytelen."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Az új jelszót nem sikerült elmenteni."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Jelszó elmentve."
 
@@ -3458,6 +3488,7 @@ msgstr "Webhely"
 msgid "Server"
 msgstr "Szerver"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "A webhely kiszolgálójának neve."
 
@@ -3465,6 +3496,7 @@ msgstr "A webhely kiszolgálójának neve."
 msgid "Path"
 msgstr "Útvonal"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Webhely útvonala"
@@ -3474,6 +3506,7 @@ msgstr "Webhely útvonala"
 msgid "Locale directory"
 msgstr "Avatar-könyvtár"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "A nyelvi fájlok elérési útvonala"
@@ -3482,9 +3515,13 @@ msgstr "A nyelvi fájlok elérési útvonala"
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Téma"
 
@@ -3610,6 +3647,8 @@ msgid "Directory where attachments are located."
 msgstr "A nyelvi fájlok elérési útvonala"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3656,10 +3695,14 @@ msgstr ""
 msgid "People search"
 msgstr "Emberkereső"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr ""
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
@@ -3669,15 +3712,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Nem törölhetsz felhasználókat."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Nincs ilyen lap."
@@ -3688,7 +3735,7 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr ""
 
@@ -3704,15 +3751,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Alapértelmezett nyelv"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Érvénytelen megjegyzéstartalom."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "A hír licence ‘%1$s’ nem kompatibilis a webhely licencével ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3868,43 +3919,57 @@ msgstr "A beállításokat elmentettük."
 msgid "Restore account"
 msgstr ""
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr ""
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Közösségi történet, %d. oldal"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Közösségi történet"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr "Ez itt %%site.name%% közösségi története, de még senki nem írt semmit."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Légy az első aki ír!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "Ha [regisztrálnál](%%action.register%%), te írhatnád az első hírt!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3918,6 +3983,8 @@ msgstr ""
 "[Csatlakozz](%%action.register%%), és küldj híreket magadról a barátaidnak, "
 "a családodnak, a munkatársaidnak! ([Tudj meg többet](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5519,6 +5586,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr ""
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Név"
@@ -6003,6 +6074,9 @@ msgstr ""
 msgid "Unable to delete design setting."
 msgstr "Nem sikerült törölni a megjelenés beállításait."
 
+msgid "Home"
+msgstr "Otthon"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "A webhely elemi beállításai"
@@ -6589,9 +6663,6 @@ msgstr "Menj a telepítőhöz."
 msgid "Database error"
 msgstr "Adatbázishiba"
 
-msgid "Home"
-msgstr "Otthon"
-
 msgid "Public"
 msgstr ""
 
@@ -7363,7 +7434,6 @@ msgstr "Küldjünk egy hírt"
 msgid "What's up, %s?"
 msgstr "Mi hír, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Csatolás"
 
@@ -7430,6 +7500,9 @@ msgstr "Töröljük ezt a hírt"
 msgid "Notice repeated"
 msgstr "A hírt megismételtük"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Bökjük meg ezt a felhasználót"
 
@@ -7936,11 +8009,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s története"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Emberek keresése az oldalon"
index fce258aa37c67629350893076e6d962e4e649374..a56aa7c5c88b8a0dac666a0f6660c32b3aa5c6dc 100644 (file)
@@ -9,17 +9,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:17+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:12+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ia\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1039,7 +1039,8 @@ msgid "Can only fave notices."
 msgstr "Solmente notas pote esser addite al favorites."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Nota incognite."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1608,6 +1609,7 @@ msgstr "Deler iste gruppo."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3081,6 +3083,10 @@ msgstr "Le URL de origine es requirite."
 msgid "Could not create application."
 msgstr "Non poteva crear application."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Dimension invalide."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nove gruppo"
@@ -3365,49 +3371,74 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Isto es tu cassa de exito, que lista le messages private que tu ha inviate."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Cambiar contrasigno"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Cambiar tu contrasigno."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Cambio del contrasigno"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Ancian contrasigno"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nove contrasigno"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 o plus characteres."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirmar"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Identic al contrasigno hic supra."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Cambiar"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Le contrasigno debe haber al minus 6 characteres."
 
 msgid "Passwords don't match."
 msgstr "Le contrasignos non corresponde."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Ancian contrasigno incorrecte"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Error de salveguardar le usator; invalide."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Non pote salveguardar le nove contrasigno."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Contrasigno salveguardate."
 
@@ -3457,6 +3488,7 @@ msgstr "Sito"
 msgid "Server"
 msgstr "Servitor"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nomine de host del servitor del sito."
 
@@ -3464,6 +3496,7 @@ msgstr "Nomine de host del servitor del sito."
 msgid "Path"
 msgstr "Cammino"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Cammino del sito."
 
@@ -3471,6 +3504,7 @@ msgstr "Cammino del sito."
 msgid "Locale directory"
 msgstr "Directorio de localisation"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Cammino al directorio de localisation."
 
@@ -3478,9 +3512,14 @@ msgstr "Cammino al directorio de localisation."
 msgid "Fancy URLs"
 msgstr "URLs de luxo"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Usar URLs de luxo (plus legibile e memorabile)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Thema"
 
@@ -3593,6 +3632,8 @@ msgid "Directory where attachments are located."
 msgstr "Cammino a ubi se trova le annexos."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3637,10 +3678,14 @@ msgstr ""
 msgid "People search"
 msgstr "Recerca de personas"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Etiquetta de personas invalide: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Usatores auto-etiquettate con %1$s - pagina %2$d"
@@ -3650,14 +3695,18 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr "Disactivate"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Iste action accepta solmente le requestas de typo POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 msgid "You cannot administer plugins."
 msgstr "Tu non pote administrar plug-ins."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 msgid "No such plugin."
 msgstr "Plug-in non existe."
 
@@ -3667,7 +3716,8 @@ msgid "Enabled"
 msgstr "Activate"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Plug-ins"
 
@@ -3685,17 +3735,21 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Plug-ins predefinite"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 "Tote le plug-ins predefinite ha essite disactivate in le file de "
 "configuration del sito."
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Le contento del nota es invalide."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "Le licentia del nota ‘%1$s’ non es compatibile con le licentia del sito ‘%2"
 "$s’."
@@ -3843,29 +3897,39 @@ msgstr "Preferentias confirmate."
 msgid "Restore account"
 msgstr "Restaurar conto"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Ultra le limite de pagina (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Non poteva recuperar le fluxo public."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Chronologia public, pagina %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Chronologia public"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Syndication del fluxo public (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Syndication del fluxo public (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Syndication del fluxo public (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3874,9 +3938,11 @@ msgstr ""
 "Isto es le chronologia public pro %%site.name%%, ma nulle persona ha ancora "
 "scribite alique."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Sia le prime a publicar!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3884,6 +3950,8 @@ msgstr ""
 "Proque non [registrar un conto](%%action.register%%) e devenir le prime a "
 "publicar?"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3896,6 +3964,8 @@ msgstr ""
 "[Inscribe te ora](%%action.register%%) pro condivider notas super te con "
 "amicos, familia e collegas! ([Leger plus](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5588,6 +5658,10 @@ msgstr ""
 "Un copia del GNU Affero General Public License deberea esser disponibile "
 "insimul con iste programma. Si non, vide %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Plug-ins"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nomine"
@@ -5919,9 +5993,8 @@ msgstr "Responder"
 msgid "Write a reply..."
 msgstr "Scriber un responsa..."
 
-#, fuzzy
 msgid "Status"
-msgstr "StatusNet"
+msgstr "Stato"
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
 #. TRANS: Text between [] is a link description, text between () is the link itself.
@@ -6088,6 +6161,9 @@ msgstr "saveSettings() non implementate."
 msgid "Unable to delete design setting."
 msgstr "Impossibile deler configuration de apparentia."
 
+msgid "Home"
+msgstr "Initio"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuration basic del sito"
@@ -6715,9 +6791,6 @@ msgstr "Ir al installator."
 msgid "Database error"
 msgstr "Error de base de datos"
 
-msgid "Home"
-msgstr "Initio"
-
 msgid "Public"
 msgstr "Public"
 
@@ -7486,18 +7559,16 @@ msgid "from"
 msgstr "via"
 
 msgid "Can't get author for activity."
-msgstr ""
+msgstr "Non pote determinar le autor pro le activitate."
 
-#, fuzzy
 msgid "Bookmark not posted to this group."
-msgstr "Tu non ha le permission de deler iste gruppo."
+msgstr "Le marcapaginas non es publicate in iste gruppo."
 
-#, fuzzy
 msgid "Object not posted to this user."
-msgstr "Non deler iste usator."
+msgstr "Le objecto non es inviate a iste usator."
 
 msgid "Don't know how to handle this kind of target."
-msgstr ""
+msgstr "Non sape manear iste typo de destination."
 
 #. TRANS: Validation error in form for registration, profile and group settings, etc.
 msgid "Nickname cannot be empty."
@@ -7519,7 +7590,6 @@ msgstr "Inviar un nota"
 msgid "What's up, %s?"
 msgstr "Como sta, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Annexar"
 
@@ -7587,6 +7657,9 @@ msgstr "Deler iste nota"
 msgid "Notice repeated"
 msgstr "Nota repetite"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Pulsar iste usator"
 
@@ -8093,9 +8166,3 @@ msgstr "XML invalide, radice XRD mancante."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Obtene copia de reserva ex file '%s'."
-
-#~ msgid "Friends timeline"
-#~ msgstr "Chronologia de amicos"
-
-#~ msgid "Everyone on this site"
-#~ msgstr "Omnes in iste sito"
index 472a3eb8447f9240a7984783a0ce4a69d7347581..78b07bbdfc7fb0cf4cdbd672dfe63454df083bc7 100644 (file)
@@ -11,17 +11,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:18+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:13+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: it\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1060,7 +1060,7 @@ msgstr "Trova contenuto dei messaggi"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Sconosciuto"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1652,6 +1652,7 @@ msgstr "Elimina questo utente"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3173,6 +3174,10 @@ msgstr "L'URL sorgente è richiesto."
 msgid "Could not create application."
 msgstr "Impossibile creare l'applicazione."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Dimensione non valida."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nuovo gruppo"
@@ -3457,52 +3462,77 @@ msgstr ""
 "Questa è la casella della tua posta inviata, contiene i messaggi privati che "
 "hai inviato."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Modifica password"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Modifica la tua password."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Modifica password"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Vecchia password"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nuova password"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 o più caratteri"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Conferma"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Stessa password di sopra"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Modifica"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "La password deve essere di 6 o più caratteri."
 
 msgid "Passwords don't match."
 msgstr "Le password non corrispondono."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Vecchia password non corretta"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Errore nel salvare l'utente; non valido."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Impossibile salvare la nuova password."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Password salvata."
 
@@ -3552,6 +3582,7 @@ msgstr "Sito"
 msgid "Server"
 msgstr "Server"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nome host del server"
 
@@ -3559,6 +3590,7 @@ msgstr "Nome host del server"
 msgid "Path"
 msgstr "Percorso"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Percorso del sito"
@@ -3568,6 +3600,7 @@ msgstr "Percorso del sito"
 msgid "Locale directory"
 msgstr "Directory del tema"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "Percorso della directory alle localizzazioni"
@@ -3576,9 +3609,14 @@ msgstr "Percorso della directory alle localizzazioni"
 msgid "Fancy URLs"
 msgstr "URL semplici"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Usare gli URL semplici (più leggibili e facili da ricordare)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema"
 
@@ -3704,6 +3742,8 @@ msgid "Directory where attachments are located."
 msgstr "Percorso della directory alle localizzazioni"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3750,10 +3790,14 @@ msgstr ""
 msgid "People search"
 msgstr "Cerca persone"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Non è un'etichetta valida di persona: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Utenti auto-etichettati con %1$s - pagina %2$d"
@@ -3763,15 +3807,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Quest'azione accetta solo richieste POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Non puoi eliminare utenti."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Pagina inesistente."
@@ -3782,7 +3830,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Plugin"
 
@@ -3798,15 +3847,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Lingua predefinita"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Contenuto del messaggio non valido."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "La licenza \"%1$s\" del messaggio non è compatibile con la licenza del sito "
 "\"%2$s\"."
@@ -3963,29 +4016,39 @@ msgstr "Impostazioni salvate."
 msgid "Restore account"
 msgstr "Crea un account"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Oltre il limite della pagina (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Impossibile recuperare l'attività pubblica."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Attività pubblica, pagina %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Attività pubblica"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Feed dell'attività pubblica (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Feed dell'attività pubblica (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Feed dell'attività pubblica (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3994,15 +4057,19 @@ msgstr ""
 "Questa è l'attività pubblica di %%site.name%%, ma nessuno ha ancora scritto "
 "qualche cosa."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Fallo tu!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 "Perché non [crei un account](%%action.register%%) e scrivi qualche cosa!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4015,6 +4082,8 @@ msgstr ""
 "net/). [Registrati](%%action.register%%) per condividere messaggi con i tuoi "
 "amici, i tuoi familiari e colleghi! ([Maggiori informazioni](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5735,6 +5804,10 @@ msgstr ""
 "Una copia della GNU Affero General Plublic License dovrebbe essere "
 "disponibile assieme a questo programma. Se così non fosse, consultare %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Plugin"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nome"
@@ -6245,6 +6318,9 @@ msgstr "saveSettings() non implementata."
 msgid "Unable to delete design setting."
 msgstr "Impossibile eliminare le impostazioni dell'aspetto."
 
+msgid "Home"
+msgstr "Pagina web"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configurazione di base"
@@ -6882,9 +6958,6 @@ msgstr "Vai al programma d'installazione."
 msgid "Database error"
 msgstr "Errore del database"
 
-msgid "Home"
-msgstr "Pagina web"
-
 msgid "Public"
 msgstr "Pubblico"
 
@@ -7694,7 +7767,6 @@ msgstr "Invia un messaggio"
 msgid "What's up, %s?"
 msgstr "Cosa succede, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Allega"
 
@@ -7763,6 +7835,9 @@ msgstr "Elimina questo messaggio"
 msgid "Notice repeated"
 msgstr "Messaggio ripetuto"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Richiama questo utente"
 
@@ -8274,11 +8349,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Attività di %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Trova persone in questo sito"
index 3eec1131eaa34d77274463e36eca6fbe34421adc..00de07045f61f8f05cc3bbdfb9ecdc174d98a1b6 100644 (file)
@@ -14,17 +14,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:19+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:15+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ja\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1050,7 +1050,7 @@ msgstr "つぶやきの内容を探す"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "不明"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1645,6 +1645,7 @@ msgstr "このユーザを削除"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3168,6 +3169,10 @@ msgstr "ソースURLが必要です。"
 msgid "Could not create application."
 msgstr "アプリケーションを作成できません。"
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "不正なサイズ。"
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "新しいグループ"
@@ -3453,52 +3458,77 @@ msgstr ""
 "これはあなたの送信箱です、あなたが送ったプライベート・メッセージをリストしま"
 "す。"
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "パスワードの変更"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "パスワードを変更します。"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "パスワード変更"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "古いパスワード"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "新しいパスワード"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6文字以上"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "パスワード確認"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "上と同じパスワード"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "変更"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "パスワードは6文字以上にする必要があります。"
 
 msgid "Passwords don't match."
 msgstr "パスワードが一致しません。"
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "古いパスワードが間違っています。"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "ユーザ保存エラー; 不正なユーザ"
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "新しいパスワードを保存できません。"
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "パスワードが保存されました。"
 
@@ -3548,6 +3578,7 @@ msgstr "サイト"
 msgid "Server"
 msgstr "サーバー"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "サイトのサーバーホスト名"
 
@@ -3555,6 +3586,7 @@ msgstr "サイトのサーバーホスト名"
 msgid "Path"
 msgstr "パス"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "サイトパス"
@@ -3564,6 +3596,7 @@ msgstr "サイトパス"
 msgid "Locale directory"
 msgstr "テーマディレクトリ"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "ロケールへのディレクトリパス"
@@ -3572,9 +3605,14 @@ msgstr "ロケールへのディレクトリパス"
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Fancy URL (読みやすく忘れにくい) を使用しますか?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "テーマ"
 
@@ -3700,6 +3738,8 @@ msgid "Directory where attachments are located."
 msgstr "ロケールへのディレクトリパス"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3746,10 +3786,14 @@ msgstr ""
 msgid "People search"
 msgstr "ピープルサーチ"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "有効なメールアドレスではありません。"
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "ユーザ自身がつけたタグ %1$s  - ページ %2$d"
@@ -3759,15 +3803,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "ユーザを削除できません"
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "そのようなページはありません。"
@@ -3778,7 +3826,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "プラグイン"
 
@@ -3794,15 +3843,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "ご希望の言語"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "不正なトークン。"
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "つぶやきライセンス ‘%1$s’ はサイトライセンス ‘%2$s’ と互換性がありません。"
 
@@ -3954,29 +4007,39 @@ msgstr "設定が保存されました。"
 msgid "Restore account"
 msgstr "新しいグループを作成"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, fuzzy, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "ページ制限を超えました (%s)"
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "パブリックストリームを検索できません。"
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "パブリックタイムライン、ページ %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "パブリックタイムライン"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "パブリックストリームフィード (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "パブリックストリームフィード (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "パブリックストリームフィード (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3985,9 +4048,11 @@ msgstr ""
 "これは %%site.name%% のパブリックタイムラインです、しかしまだ誰も投稿していま"
 "せん。"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "投稿する1番目になってください!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3995,6 +4060,8 @@ msgstr ""
 "なぜ [アカウント登録](%%action.register%%) しないのですか、そして最初の投稿を"
 "してください!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4008,6 +4075,8 @@ msgstr ""
 "族そして同僚などについてのつぶやきを共有しましょう! ([もっと読む](%%doc.help%"
 "%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5730,6 +5799,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "プラグイン"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "名前"
@@ -6228,6 +6301,9 @@ msgstr "saveSettings() は実装されていません。"
 msgid "Unable to delete design setting."
 msgstr "デザイン設定を削除できません。"
 
+msgid "Home"
+msgstr "ホームページ"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "基本サイト設定"
@@ -6827,9 +6903,6 @@ msgstr "インストーラへ。"
 msgid "Database error"
 msgstr "データベースエラー"
 
-msgid "Home"
-msgstr "ホームページ"
-
 msgid "Public"
 msgstr "パブリック"
 
@@ -7603,7 +7676,6 @@ msgstr "つぶやきを送る"
 msgid "What's up, %s?"
 msgstr "最近どう %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "添付"
 
@@ -7676,6 +7748,9 @@ msgstr "このつぶやきを削除"
 msgid "Notice repeated"
 msgstr "つぶやきを繰り返しました"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "このユーザへ合図"
 
@@ -8179,11 +8254,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s のタイムライン"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "このサイトの人々を探す"
index 2ee236d8e55f2dbb3309f8bc63391741abdd9517..c282ae94ac03962d61e5dd128e42012ac50e9031 100644 (file)
@@ -9,17 +9,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:20+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:16+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ka\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1034,7 +1034,7 @@ msgstr "მოძებნე შეტყობინებებში"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "უცნობი"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1622,6 +1622,7 @@ msgstr "ამ მომხმარებლის წაშლა"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3133,6 +3134,10 @@ msgstr "წყაროს URL სავალდებულოა."
 msgid "Could not create application."
 msgstr "აპლიკაციის შექმნა ვერ მოხერხდა."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "ზომა არასწორია."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "ახალი ჯგუფი"
@@ -3413,52 +3418,77 @@ msgstr ""
 "ეს არის თქვენი გამავალი ფოსტა, რომელშიც ჩამოთვლილია პირადი შეტყობინებები "
 "რომლებიც თქვენ გააგზავნეთ."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "შეცვალეთ პაროლი"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "შეცვალეთ თქვენი პაროლი."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "პაროლის შეცვლა"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "ძველი პაროლი"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "ახალი პაროლი"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 ან მეტი სიმბოლო"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "ვადასტურებ"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "იგივე რაც ზედა პაროლი"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "შეცვლა"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "პაროლი უნდა შედგებოდეს 6 ან მეტი სიმბოლოსგან."
 
 msgid "Passwords don't match."
 msgstr "პაროლები არ ემთხვევა."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "არასწორი ძველი პაროლი"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "შეცდომა მომხმარებლის შენახვისას; არასწორი."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "ვერ ვინახავ ახალ პაროლს."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "პაროლი შენახულია."
 
@@ -3508,6 +3538,7 @@ msgstr "საიტი"
 msgid "Server"
 msgstr "სერვერი"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "საიტის სერვერის ჰოსტის სახელი."
 
@@ -3515,6 +3546,7 @@ msgstr "საიტის სერვერის ჰოსტის სახ
 msgid "Path"
 msgstr "გზა"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "საიტის გზა"
@@ -3524,6 +3556,7 @@ msgstr "საიტის გზა"
 msgid "Locale directory"
 msgstr "იერსახის დირექტორია"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3531,9 +3564,14 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr "ლამაზი URL–ები"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "გამოვიყენო ლამაზი (მეტად კითხვადი და დასამახსოვრებელი) URL–ები?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "იერსახე"
 
@@ -3655,6 +3693,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3702,10 +3742,14 @@ msgstr ""
 msgid "People search"
 msgstr "პიროვნებების ძიება"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "პიროვნებების არასწორი სანიშნე: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
@@ -3716,15 +3760,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "ეს მოქმედება მხოლოდ POST მოთხოვნებს იღებს."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "თქვენ ვერ შეძლებთ მომხმარებლების წაშლას."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "ასეთი გვერდი არ არსებობს."
@@ -3735,7 +3783,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "დამატებები"
 
@@ -3751,15 +3800,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "პირვანდელი ენა"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "შეტყობინების არასწორი შიგთავსი."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "შეტყობინების ლიცენზია ‘%1$s’ შეუთავსებელია საიტის ლიცენზიასთან ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3911,29 +3964,39 @@ msgstr "პარამეტრები შენახულია."
 msgid "Restore account"
 msgstr "გახსენი ანგარიში"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "გვერსიდ საზღვრის მიღმა (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "საჯარო ნაკადის გამოთხოვნა ვერ ხერხდება."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "საჯარო განახლებების ნაკადი, გვერდი %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "საჯარო განახლებების ნაკადი"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3941,14 +4004,18 @@ msgid ""
 msgstr ""
 "ეს არის საჯარო განახლებების ნაკადი, მაგრამ ჯერჯერობით არავის დაუპოსტავს."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "დაპოსტე პირველმა!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "[დარეგისტრირდი](%%action.register%%) და დაპოსტე პირველმა!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3961,6 +4028,8 @@ msgstr ""
 "[შემოგვიერთდი ახლავე](%%action.register%%) და გაუზიარე შეტყობინებები "
 "მეგობრებს, ოჯახის წევრებს და კოლეგებს! ([გაიგე მეტი](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5659,6 +5728,10 @@ msgstr ""
 "თქვენ უნდა მიგეღოთ GNU Affero ძირითადი საჯარო ლიცენზიის ასლი ამ პროგრამასთან "
 "ერთად. თუ არა, იხილეთ %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "დამატებები"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "დასახელება"
@@ -6159,6 +6232,10 @@ msgstr "saveSettings() არ არის განხორციელებ
 msgid "Unable to delete design setting."
 msgstr "დიზაინის პარამეტრების წაშლა ვერ ხერხდება."
 
+#, fuzzy
+msgid "Home"
+msgstr "ვებ. გვერსი"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "საიტის ძირითადი კონფიგურაცია"
@@ -6750,10 +6827,6 @@ msgstr "გადადი ამ ინსტალატორზე."
 msgid "Database error"
 msgstr "მონაცემთა ბაზის შეცდომა"
 
-#, fuzzy
-msgid "Home"
-msgstr "ვებ. გვერსი"
-
 msgid "Public"
 msgstr "საჯარო"
 
@@ -7534,7 +7607,6 @@ msgstr "შეტყობინების გაგზავნა"
 msgid "What's up, %s?"
 msgstr "რა არის ახალი %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "ფაილის მიმაგრება"
 
@@ -7603,6 +7675,9 @@ msgstr "შეტყობინების წაშლა"
 msgid "Notice repeated"
 msgstr "შეტყობინება გამეორებულია"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr ""
 
@@ -8111,11 +8186,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s-ის ნაკადი"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "მოძებნე ადამიანები ამ საიტზე"
index 4a924d8d2143358f570167f3409658c688a61cca..8d0a52c16f22b3c2dfd94852451b03a1712118f0 100644 (file)
@@ -11,17 +11,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:21+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:17+0000\n"
 "Language-Team: Korean <http://translatewiki.net/wiki/Portal:ko>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ko\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1039,7 +1039,7 @@ msgstr "통지들의 내용 찾기"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "알려지지 않은 행동"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1626,6 +1626,7 @@ msgstr "이 사용자 삭제"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3116,6 +3117,10 @@ msgstr "소스 URL이 필요합니다."
 msgid "Could not create application."
 msgstr "관심소식을 생성할 수 없습니다."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "옳지 않은 크기"
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "새로운 그룹"
@@ -3396,52 +3401,77 @@ msgstr "%s의 보낸쪽지함"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "당신의 보낸 쪽지함입니다. 이곳엔 당신이 보냈던 비밀 쪽지가 있습니다."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "비밀번호 바꾸기"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "비밀번호를 변경하세요."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "비밀번호 변경"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "기존 비밀 번호"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "새로운 비밀 번호"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6글자 이상"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "인증"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "위와 같은 비밀 번호"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "변경"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "비밀번호는 6자리 이상이어야 합니다."
 
 msgid "Passwords don't match."
 msgstr "비밀 번호가 일치하지 않습니다."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "기존 비밀 번호가 틀렸습니다"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "사용자 저장 오류; 무효한 사용자"
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "새 비밀번호를 저장 할 수 없습니다."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "비밀 번호 저장"
 
@@ -3491,6 +3521,7 @@ msgstr "사이트"
 msgid "Server"
 msgstr "SSL 서버"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3498,6 +3529,7 @@ msgstr ""
 msgid "Path"
 msgstr "경로"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "사이트 테마"
@@ -3507,6 +3539,7 @@ msgstr "사이트 테마"
 msgid "Locale directory"
 msgstr "테마 디렉터리"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3514,9 +3547,13 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "테마"
 
@@ -3638,6 +3675,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3683,10 +3722,14 @@ msgstr ""
 msgid "People search"
 msgstr "사람 찾기"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "올바른 메일 주소가 아닙니다."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "%s 태그된 통지"
@@ -3696,15 +3739,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "이용자를 업데이트 할 수 없습니다."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "해당하는 페이지 없음"
@@ -3715,7 +3762,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "플러그인"
 
@@ -3731,15 +3779,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "기본 언어"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "옳지 않은 크기"
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3888,30 +3940,40 @@ msgstr "설정 저장"
 msgid "Restore account"
 msgstr "새 계정 만들기"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "공개 stream을 불러올 수 없습니다."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "공개 타임라인, %d 페이지"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "퍼블릭 타임라인"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "%s 그룹을 위한 공지피드 (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "%s 그룹을 위한 공지피드 (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "퍼블릭 스트림 피드"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3919,15 +3981,19 @@ msgid ""
 msgstr ""
 "%%site.name%% 의 공개 타임라인이지만, 아직 아무도 글을 쓰지 않았습니다."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 #, fuzzy
 msgid "Be the first to post!"
 msgstr "글을 올린 첫번째 사람이 되세요!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3936,6 +4002,8 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, fuzzy, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5604,6 +5672,10 @@ msgstr ""
 "GNU 일반 공중 사용 허가서는 이 프로그램과 함께 제공됩니다. 만약, 이 문서가 누"
 "락되어 있다면 %s 페이지를 보십시오."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "플러그인"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "이름"
@@ -6107,6 +6179,9 @@ msgstr "명령이 아직 실행되지 않았습니다."
 msgid "Unable to delete design setting."
 msgstr "디자인 설정을 저장할 수 없습니다."
 
+msgid "Home"
+msgstr "홈페이지"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "메일 주소 확인"
@@ -6697,9 +6772,6 @@ msgstr "이 사이트에 로그인"
 msgid "Database error"
 msgstr "데이터베이스 오류"
 
-msgid "Home"
-msgstr "홈페이지"
-
 msgid "Public"
 msgstr "공개"
 
@@ -7397,7 +7469,6 @@ msgstr "게시글 보내기"
 msgid "What's up, %s?"
 msgstr "뭐하세요 %s님?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "첨부"
 
@@ -7465,6 +7536,9 @@ msgstr "이 게시글 삭제하기"
 msgid "Notice repeated"
 msgstr "게시글이 등록되었습니다."
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "이 사용자 찔러 보기"
 
@@ -7975,11 +8049,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s 타임라인"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "이 사이트에 있는 사람 찾기"
index 04eee7354c7d9587c8b4f5f16c1455b6245a8184..330d0022dcd4c2217917829daa5d4ba9eceae083 100644 (file)
@@ -10,17 +10,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:22+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:18+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: mk\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n == 1 || n%10 == 1) ? 0 : 1;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1041,7 +1041,8 @@ msgid "Can only fave notices."
 msgstr "Може само да бендисува забелешки."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Непозната белешка."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1610,6 +1611,7 @@ msgstr "Избриши ја групава."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3088,6 +3090,10 @@ msgstr "Треба изворна URL-адреса."
 msgid "Could not create application."
 msgstr "Не можеше да се создаде програмот."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Погрешна големина."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Нова група"
@@ -3374,49 +3380,74 @@ msgstr ""
 "Ова е Вашето излезно сандче, во кое се наведени приватните пораки кои ги "
 "имате испратено."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Промени ја лозинката"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Променете си ја лозинката."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Промена на лозинка"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Стара лозинка"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Нова лозинка"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 или повеќе знаци."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Потврди"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Исто како лозинката погоре."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Промени"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Лозинката мора да содржи барем 6 знаци."
 
 msgid "Passwords don't match."
 msgstr "Лозинките не се совпаѓаат."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Неточна стара лозинка"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Грешка во зачувувањето на корисникот; неправилен."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Не можам да ја зачувам новата лозинка."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Лозинката е зачувана."
 
@@ -3466,6 +3497,7 @@ msgstr "Мреж. место"
 msgid "Server"
 msgstr "Опслужувач"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Назив на домаќинот на опслужувачот на мрежното место"
 
@@ -3473,6 +3505,7 @@ msgstr "Назив на домаќинот на опслужувачот на м
 msgid "Path"
 msgstr "Патека"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Патека на мреж. место."
 
@@ -3480,6 +3513,7 @@ msgstr "Патека на мреж. место."
 msgid "Locale directory"
 msgstr "Директориум на места"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Патека на директориумот на местата."
 
@@ -3487,9 +3521,14 @@ msgstr "Патека на директориумот на местата."
 msgid "Fancy URLs"
 msgstr "Интересни URL-адреси"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Да користам интересни (почитливи и повпечатливи) URL-адреси?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Изглед"
 
@@ -3602,6 +3641,8 @@ msgid "Directory where attachments are located."
 msgstr "Директориумот кадешто се сместени прилозите."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3647,10 +3688,14 @@ msgstr ""
 msgid "People search"
 msgstr "Пребарување на луѓе"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Не е важечка ознака за луѓе: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Користници самоозначени со %1$s - стр. %2$d"
@@ -3660,14 +3705,18 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr "Оневозможено"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Ова дејство прифаќа само POST-барања"
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 msgid "You cannot administer plugins."
 msgstr "Не можете да раководите со приклучоци."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 msgid "No such plugin."
 msgstr "Нема таков приклучок."
 
@@ -3677,7 +3726,8 @@ msgid "Enabled"
 msgstr "Овозможено"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Приклучоци"
 
@@ -3695,16 +3745,20 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Основни приклучоци"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 "Сите основни приклучоци се оневозможени во поставките на мрежното место."
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Неважечка содржина на забелешката."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "Лиценцата на забелешката „%1$s“ не е соодветна на лиценцата на мрежното "
 "место „%2$s“."
@@ -3854,29 +3908,39 @@ msgstr "Нагодувањата се зачувани"
 msgid "Restore account"
 msgstr "Врати сметка"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Надминато е ограничувањето на страницата (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Не можам да го вратам јавниот поток."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Јавна историја, стр. %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Јавна историја"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Канал на јавниот поток (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Канал на јавниот поток (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Канал на јавниот поток (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3884,9 +3948,11 @@ msgid ""
 msgstr ""
 "Ова е јавната историја за %%site.name%%, но досега никој ништо нема објавено."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Создајте ја првата забелешка!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3894,6 +3960,8 @@ msgstr ""
 "Зошто не [регистрирате сметка](%%action.register%%) и станете првиот "
 "објавувач!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3907,6 +3975,8 @@ msgstr ""
 "си споделувате забелешки за себе со приајтелите, семејството и колегите! "
 "([Прочитајте повеќе](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5610,6 +5680,10 @@ msgstr ""
 "Треба да имате добиено примерок од Општата јавна лиценца ГНУ Аферо заедно со "
 "овој програм.  Ако ја немате, погледајте %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Приклучоци"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Име"
@@ -5948,9 +6022,8 @@ msgstr "Одговори"
 msgid "Write a reply..."
 msgstr "Напишете одговор..."
 
-#, fuzzy
 msgid "Status"
-msgstr "StatusNet"
+msgstr "Статус"
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
 #. TRANS: Text between [] is a link description, text between () is the link itself.
@@ -6116,6 +6189,9 @@ msgstr "saveSettings() не е имплементирано."
 msgid "Unable to delete design setting."
 msgstr "Не можам да ги избришам нагодувањата за изглед."
 
+msgid "Home"
+msgstr "Домашна страница"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Основни нагодувања на мрежното место"
@@ -6742,9 +6818,6 @@ msgstr "Оди на инсталаторот."
 msgid "Database error"
 msgstr "Грешка во базата на податоци"
 
-msgid "Home"
-msgstr "Домашна страница"
-
 msgid "Public"
 msgstr "Јавен"
 
@@ -7517,18 +7590,16 @@ msgid "from"
 msgstr "од"
 
 msgid "Can't get author for activity."
-msgstr ""
+msgstr "Не можам да го добијам авторот за активноста."
 
-#, fuzzy
 msgid "Bookmark not posted to this group."
-msgstr "Ð\9dе Ð\92и Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ Ð´Ð° Ñ\98а Ð¸Ð·Ð±Ñ\80иÑ\88еÑ\82е Ð¾Ð²Ð°Ð° Ð³Ñ\80Ñ\83па."
+msgstr "Ð\9dа Ð¾Ð²Ð°Ð° Ð³Ñ\80Ñ\83па Ð½Ðµ Ðµ Ð¾Ð±Ñ\98авен Ð¾Ð´Ð±ÐµÐ»ÐµÐ¶Ñ\83ваÑ\87."
 
-#, fuzzy
 msgid "Object not posted to this user."
-msgstr "Ð\9dе Ð³Ð¾ Ð±Ñ\80иÑ\88и ÐºÐ¾Ñ\80иÑ\81ников."
+msgstr "Ð\9eбÑ\98екÑ\82оÑ\82 Ð½Ðµ Ð¼Ñ\83 Ðµ Ð¸Ñ\81пÑ\80аÑ\82ен Ð½Ð° Ð¾Ð²Ð¾Ñ\98 ÐºÐ¾Ñ\80иÑ\81ник."
 
 msgid "Don't know how to handle this kind of target."
-msgstr ""
+msgstr "Не знам како да работам со ваква одредница."
 
 #. TRANS: Validation error in form for registration, profile and group settings, etc.
 msgid "Nickname cannot be empty."
@@ -7550,7 +7621,6 @@ msgstr "Испрати забелешка"
 msgid "What's up, %s?"
 msgstr "Што има ново, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Приложи"
 
@@ -7618,6 +7688,9 @@ msgstr "Избриши ја оваа забелешка"
 msgid "Notice repeated"
 msgstr "Забелешката е повторена"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Подбуцни го корисников"
 
@@ -8120,9 +8193,3 @@ msgstr "Неважечки XML. Нема XRD-корен."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Земам резерва на податотеката „%s“."
-
-#~ msgid "Friends timeline"
-#~ msgstr "Историја на пријатели"
-
-#~ msgid "Everyone on this site"
-#~ msgstr "Сите на ова мрежно место"
index 84a9210ef5ed254132af00b5470be605200ae427..11c70d96e5f501ed66fbd863e4bda357484b80d3 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:23+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:19+0000\n"
 "Language-Team: Malayalam <http://translatewiki.net/wiki/Portal:ml>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ml\n"
 "X-Message-Group: #out-statusnet-core\n"
@@ -1010,7 +1010,8 @@ msgid "Can only fave notices."
 msgstr "അറിയിപ്പുകൾ മാത്രമേ പ്രിയങ്കരമാണെന്ന് കുറിക്കാനാവൂ."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "അജ്ഞാതമായ കുറിപ്പ്."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1565,6 +1566,7 @@ msgstr "ഈ സംഘത്തെ മായ്ക്കുക."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3015,6 +3017,10 @@ msgstr "സ്രോതസ്സ് യു.ആർ.എൽ. ആവശ്യമാ
 msgid "Could not create application."
 msgstr ""
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "അസാധുവായ വലിപ്പം."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "പുതിയ സംഘം"
@@ -3289,49 +3295,74 @@ msgstr "%s എന്ന ഉപയോക്താവിന്റെ ഔട്ട
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "ഇത് താങ്കളുടെ ഔട്ട്ബോക്സ് ആണ്, താങ്കൾ അയച്ച സ്വകാര്യ സന്ദേശങ്ങൾ ഇവിടെ കാണാം."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "രഹസ്യവാക്ക് മാറ്റുക"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "താങ്കളുടെ രഹസ്യവാക്ക് മാറ്റുക."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "രഹസ്യവാക്ക് മാറ്റൽ"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "പഴയ രഹസ്യവാക്ക്"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "പുതിയ രഹസ്യവാക്ക്"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "ആറോ അതിലധികമോ അക്ഷരങ്ങൾ."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "സ്ഥിരീകരിക്കുക"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "മുകളിൽ നൽകിയ അതേ രഹസ്യവാക്ക്."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "മാറ്റുക"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "രഹസ്യവാക്കിന് ആറോ അതിലധികമോ അക്ഷരങ്ങളുണ്ടായിരിക്കണം."
 
 msgid "Passwords don't match."
 msgstr "രഹസ്യവാക്കുകൾ തമ്മിൽ യോജിക്കുന്നില്ല"
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "പഴയ രഹസ്യവാക്ക് തെറ്റാണ്"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "ഉപയോക്താവിനെ സേവ് ചെയ്യുന്നതിൽ പിഴവുണ്ടായി; അസാധുവാണ്."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "പുതിയ രഹസ്യവാക്ക് സേവ് ചെയ്യാനാവില്ല."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "രഹസ്യവാക്ക് സേവ് ചെയ്തിരിക്കുന്നു."
 
@@ -3381,6 +3412,7 @@ msgstr "സൈറ്റ്"
 msgid "Server"
 msgstr "സെർവർ"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3388,6 +3420,7 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr ""
 
@@ -3395,6 +3428,7 @@ msgstr ""
 msgid "Locale directory"
 msgstr ""
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3402,9 +3436,14 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr "അലങ്കൃത യൂ.ആർ.എല്ലുകൾ"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "അലങ്കൃത (വായിക്കാനും ഓർത്തിരിക്കാനും എളുപ്പമായവ) യൂ.ആർ.എല്ലുകൾ ഉപയോഗിക്കണോ?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "ദൃശ്യരൂപം"
 
@@ -3517,6 +3556,8 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "എസ്.എസ്.എൽ."
 
@@ -3559,10 +3600,14 @@ msgstr ""
 msgid "People search"
 msgstr "ആൾക്കാരെ തിരയുക"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr ""
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
@@ -3572,15 +3617,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "താങ്കൾക്ക് ഉപയോക്താക്കളെ നീക്കം ചെയ്യാൻ കഴിയില്ല."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "അത്തരത്തിൽ ഒരു താളില്ല."
@@ -3591,7 +3640,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "പ്ലഗിനുകൾ"
 
@@ -3607,15 +3657,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "സ്വതേ വേണ്ട ഭാഷ"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "അറിയിപ്പിന്റെ ഉള്ളടക്കം അസാധുവാണ്."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "അറിയിപ്പിന്റെ ഉപയോഗാനുമതിയായ് ‘%1$s’ സൈറ്റിന്റെ ഉപയോഗാനുമതിയായ ‘%2$s’ എന്നതുമായി "
 "ചേർന്നു പോകുന്നില്ല."
@@ -3760,38 +3814,50 @@ msgstr "സജ്ജീകരണങ്ങൾ സേവ് ചെയ്തിര
 msgid "Restore account"
 msgstr "അംഗത്വം പുനഃക്രമീകരിക്കുക"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "താളിന്റെ പരിധിയ്ക്ക് (%s) പുറത്താണ്."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr ""
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "സാർവ്വജനിക സമയരേഖ, താൾ %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "സാർവ്വജനിക സമയരേഖ"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "പ്രസിദ്ധീകരിക്കുന്ന ആദ്യ വ്യക്തിയാകുക!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3799,6 +3865,8 @@ msgstr ""
 "എന്തുകൊണ്ട് [അംഗത്വമെടുക്കുകയും](%%action.register%%) പ്രസിദ്ധീകരിക്കുന്ന ആദ്യ വ്യക്തിയാകുകയും "
 "ചെയ്തുകൂട!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3812,6 +3880,8 @@ msgstr ""
 "സഹപ്രവർത്തകരുമായും പങ്ക് വെയ്ക്കുവാൻ [ഇപ്പോൾ തന്നെ ചേരുക](%%action.register%%)! (കൂടുതൽ "
 "അറിയുക](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5408,6 +5478,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "പ്ലഗിനുകൾ"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "പേര്"
@@ -5894,6 +5968,10 @@ msgstr ""
 msgid "Unable to delete design setting."
 msgstr "രൂപകല്പനാ സജ്ജീകരണങ്ങൾ മായ്ക്കാൻ കഴിഞ്ഞില്ല."
 
+#, fuzzy
+msgid "Home"
+msgstr "ഹോംപേജ്"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "സൈറ്റിന്റെ അടിസ്ഥാന ക്രമീകരണം"
@@ -6473,10 +6551,6 @@ msgstr ""
 msgid "Database error"
 msgstr "ഡാറ്റാബേസ് പിഴവ്"
 
-#, fuzzy
-msgid "Home"
-msgstr "ഹോംപേജ്"
-
 msgid "Public"
 msgstr "സാർവ്വജനികം"
 
@@ -7174,7 +7248,6 @@ msgstr "അറിയിപ്പ് അയയ്ക്കുക"
 msgid "What's up, %s?"
 msgstr "എന്തൊക്കെയുണ്ട്, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "ചേർത്തുവെയ്ക്കുക"
 
@@ -7243,6 +7316,9 @@ msgstr "ഈ അറിയിപ്പ് മായ്ക്കുക"
 msgid "Notice repeated"
 msgstr "അറിയിപ്പ് ആവർത്തിച്ചിരിക്കുന്നു"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr ""
 
@@ -7751,11 +7827,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s എന്ന ഉപയോക്താവിന്റെ സമയരേഖ"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "ഈ സൈറ്റിലെ ആൾക്കാരെ കണ്ടെത്തുക"
index 1fa8ea3e7792c80e54c110c31b3ee828fb54c23b..9898feb7be58fe4d6233fa8b737b5e7df0fd8fd4 100644 (file)
@@ -12,17 +12,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:26+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:21+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: no\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1041,7 +1041,8 @@ msgid "Can only fave notices."
 msgstr "Finn innhold i notiser"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Ukjent notat."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1626,6 +1627,7 @@ msgstr "Slett denne gruppen"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3120,6 +3122,10 @@ msgstr "Nettadresse til kilde kreves."
 msgid "Could not create application."
 msgstr "Kunne ikke opprette program."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Ugyldig størrelse"
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Ny gruppe"
@@ -3404,52 +3410,77 @@ msgstr "Utboks for %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "Dette er utboksen din som viser alle private meldinger du har sendt."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Endre passord"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Endre passordet ditt."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Endre passord"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Gammelt passord"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nytt passord"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 eller flere tegn"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Bekreft"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Samme som passord ovenfor"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Endre"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Passord må være minst 6 tegn."
 
 msgid "Passwords don't match."
 msgstr "Passordene var ikke like."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Feil gammelt passord"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Feil ved lagring av bruker; ugyldig."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Klarer ikke å lagre nytt passord."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Passordet ble lagret"
 
@@ -3499,6 +3530,7 @@ msgstr "Nettsted"
 msgid "Server"
 msgstr "Tjener"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Vertsnavn for nettstedets tjener."
 
@@ -3506,6 +3538,7 @@ msgstr "Vertsnavn for nettstedets tjener."
 msgid "Path"
 msgstr "Sti"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Nettstedssti."
 
@@ -3514,6 +3547,7 @@ msgstr "Nettstedssti."
 msgid "Locale directory"
 msgstr "Temamappe"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "Lokaliseringsmappesti"
@@ -3522,9 +3556,14 @@ msgstr "Lokaliseringsmappesti"
 msgid "Fancy URLs"
 msgstr "Pyntede nettadresser"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Bruk pyntede (mer lesbare og lettere å huske) nettadresser?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema"
 
@@ -3637,6 +3676,8 @@ msgid "Directory where attachments are located."
 msgstr "Mappen vedlegg er plassert i."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3681,10 +3722,14 @@ msgstr ""
 msgid "People search"
 msgstr "Personsøk"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Ikke en gyldig personmerkelapp: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Brukere som har merket seg selv med %1$s - side %2$d"
@@ -3694,15 +3739,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Du kan ikke slette brukere."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Ingen slik side."
@@ -3713,7 +3762,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Programtillegg"
 
@@ -3729,15 +3779,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Standardspråk"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Ugyldig notisinnhold."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Notislisensen ‘%1$s’ er ikke kompatibel med nettstedslisensen ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3888,29 +3942,39 @@ msgstr "Innstillinger lagret."
 msgid "Restore account"
 msgstr "Opprett en konto"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Over sidegrensen (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Kunne ikke hente offentlig strøm."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Offentlig tidslinje, side %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Offentlig tidslinje"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Offentlig strømmating (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Offentlig strømmating (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Offentlig strømmating (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3919,9 +3983,11 @@ msgstr ""
 "Dette er den offentlige tidslinjen for %%site.name%% men ingen har postet "
 "noe ennå."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Vær den første til å poste!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3929,6 +3995,8 @@ msgstr ""
 "Hvorfor ikke [registrere en konto](%%action.register%%) og vær den første "
 "til å poste!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3941,6 +4009,8 @@ msgstr ""
 "(http://status.net). [Bli med nå](%%action.register%%) for å dele notiser om "
 "degselv med venner, familie og kollegaer! ([Les mer](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5632,6 +5702,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Programtillegg"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Navn"
@@ -6127,6 +6201,9 @@ msgstr "saveSettings() ikke implementert."
 msgid "Unable to delete design setting."
 msgstr "Kunne ikke lagre dine innstillinger for utseende."
 
+msgid "Home"
+msgstr "Hjemmesiden"
+
 #. TRANS: Menu item title/tooltip
 #, fuzzy
 msgid "Basic site configuration"
@@ -6730,9 +6807,6 @@ msgstr "Log inn på nettstedet"
 msgid "Database error"
 msgstr "Databasefeil"
 
-msgid "Home"
-msgstr "Hjemmesiden"
-
 msgid "Public"
 msgstr "Offentlig"
 
@@ -7535,7 +7609,6 @@ msgstr "Send en notis"
 msgid "What's up, %s?"
 msgstr "Hva skjer %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Legg ved"
 
@@ -7605,6 +7678,9 @@ msgstr "Slett denne notisen"
 msgid "Notice repeated"
 msgstr "Notis repetert"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Knuff denne brukeren"
 
@@ -8129,11 +8205,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s tidslinje"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Finn personer på dette nettstedet"
index a7d99e5410c464b21cec552e99c2e449db74d06c..e8907c1bafc5af56f3173771ab2e886e7e23ed18 100644 (file)
@@ -12,17 +12,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:24+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17: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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: nl\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1054,7 +1054,8 @@ msgid "Can only fave notices."
 msgstr "Het is alleen mogelijk om mededelingen als favoriet aan te merken."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Onbekend mededeling."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1632,6 +1633,7 @@ msgstr "Deze groep verwijderen."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3114,6 +3116,10 @@ msgstr "Een bron-URL is verplicht."
 msgid "Could not create application."
 msgstr "Het was niet mogelijk de applicatie aan te maken."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Ongeldige afmetingen."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nieuwe groep"
@@ -3402,49 +3408,74 @@ msgstr "Postvak UIT voor %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "Dit is uw Postvak UIT waarin de door u verzonden privéberichten staan."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Wachtwoord wijzigen"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Wachtwoord wijzigen"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Wachtwoord wijzigen"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Huidige wachtwoord"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nieuw wachtwoord"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "Zes of meer tekens"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Bevestigen"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Gelijk aan het wachtwoord hierboven."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Wijzigen"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Het wachtwoord moet zes of meer tekens bevatten."
 
 msgid "Passwords don't match."
 msgstr "De wachtwoorden komen niet overeen."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Het oude wachtwoord is onjuist"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Fout bij opslaan gebruiker; ongeldig."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Het was niet mogelijk het nieuwe wachtwoord op te slaan."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Het wachtwoord is opgeslagen."
 
@@ -3494,6 +3525,7 @@ msgstr "Website"
 msgid "Server"
 msgstr "Server"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Hostnaam van de website server."
 
@@ -3501,6 +3533,7 @@ msgstr "Hostnaam van de website server."
 msgid "Path"
 msgstr "Pad"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Websitepad."
 
@@ -3508,6 +3541,7 @@ msgstr "Websitepad."
 msgid "Locale directory"
 msgstr "Map voor taalondersteuning"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Map voor taalondersteuning."
 
@@ -3515,9 +3549,14 @@ msgstr "Map voor taalondersteuning."
 msgid "Fancy URLs"
 msgstr "Nette URL's"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Nette URL's (meer leesbaar en beter te onthouden) gebruiken?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Vormgeving"
 
@@ -3630,6 +3669,8 @@ msgid "Directory where attachments are located."
 msgstr "Map waar bijlagen worden opgeslagen."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3675,10 +3716,14 @@ msgstr ""
 msgid "People search"
 msgstr "Gebruikers zoeken"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Geen geldig gebruikerslabel: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Gebruikers die zichzelf met %1$s hebben gelabeld - pagina %2$d"
@@ -3688,14 +3733,18 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr "Uitgeschakeld"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Deze handeling accepteert alleen POST-verzoeken."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 msgid "You cannot administer plugins."
 msgstr "U kunt plug-ins niet beheren."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 msgid "No such plugin."
 msgstr "Deze plug-in bestaat niet."
 
@@ -3705,7 +3754,8 @@ msgid "Enabled"
 msgstr "Ingeschakeld"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Plug-ins"
 
@@ -3723,17 +3773,21 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Standaard plug-ins"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 "Alle standaard plug-ins zijn uitgeschakeld in het bestand met "
 "siteinstellingen."
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Ongeldige mededelinginhoud."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "De mededelingenlicentie \"%1$s\" is niet compatibel met de licentie \"%2$s\" "
 "van deze site."
@@ -3883,29 +3937,39 @@ msgstr "De instellingen zijn opgeslagen."
 msgid "Restore account"
 msgstr "Gebruiker terugladen van back-up"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Meer dan de paginalimiet (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Het was niet mogelijk de publieke stream op te halen."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Openbare tijdlijn, pagina %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Openbare tijdlijn"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Publieke streamfeed (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Publieke streamfeed (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Publieke streamfeed (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3914,9 +3978,11 @@ msgstr ""
 "Dit is de publieke tijdlijn voor %%site.name%%, maar niemand heeft nog "
 "berichten geplaatst."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "U kunt de eerste zijn die een bericht plaatst!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3924,6 +3990,8 @@ msgstr ""
 "Waarom [registreert u geen gebruiker](%%action.register%%) en plaatst u als "
 "eerste een bericht?"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3936,6 +4004,8 @@ msgstr ""
 "net/). [Registreer nu](%%action.register%%) om mededelingen over uzelf te "
 "delen met vrienden, familie en collega's! [Meer lezen...](%%doc.help%%)"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5646,6 +5716,10 @@ msgstr ""
 "Samen met dit programma hoort u een kopie van de GNU Affero General Public "
 "License te hebben ontvangen. Zo niet, zie dan %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Plug-ins"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Naam"
@@ -5991,9 +6065,8 @@ msgstr "Antwoorden"
 msgid "Write a reply..."
 msgstr "Schrijf een antwoord..."
 
-#, fuzzy
 msgid "Status"
-msgstr "StatusNet"
+msgstr "Status"
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
 #. TRANS: Text between [] is a link description, text between () is the link itself.
@@ -6165,6 +6238,9 @@ msgstr "saveSettings() is nog niet geïmplementeerd."
 msgid "Unable to delete design setting."
 msgstr "Het was niet mogelijk om de ontwerpinstellingen te verwijderen."
 
+msgid "Home"
+msgstr "Start"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Basisinstellingen voor de website"
@@ -6805,9 +6881,6 @@ msgstr "Naar het installatieprogramma gaan."
 msgid "Database error"
 msgstr "Databasefout"
 
-msgid "Home"
-msgstr "Start"
-
 msgid "Public"
 msgstr "Openbaar"
 
@@ -7579,18 +7652,16 @@ msgid "from"
 msgstr "van"
 
 msgid "Can't get author for activity."
-msgstr ""
+msgstr "Het was niet mogelijk de auteur te achterhalen voor de activiteit."
 
-#, fuzzy
 msgid "Bookmark not posted to this group."
-msgstr "U mag deze groep niet verwijderen."
+msgstr "De bladwijzer is niet aan deze groep verzonden."
 
-#, fuzzy
 msgid "Object not posted to this user."
-msgstr "Deze gebruiker niet verwijderen."
+msgstr "Het object is niet aan deze gebruiker verzonden."
 
 msgid "Don't know how to handle this kind of target."
-msgstr ""
+msgstr "Het is niet bekend hoe dit doel afgehandeld moet worden."
 
 #. TRANS: Validation error in form for registration, profile and group settings, etc.
 msgid "Nickname cannot be empty."
@@ -7612,7 +7683,6 @@ msgstr "Mededeling verzenden"
 msgid "What's up, %s?"
 msgstr "Hallo, %s."
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Toevoegen"
 
@@ -7680,6 +7750,9 @@ msgstr "Deze mededeling verwijderen"
 msgid "Notice repeated"
 msgstr "Mededeling herhaald"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Deze gebruiker porren"
 
@@ -8188,9 +8261,3 @@ msgstr "Ongeldige XML. De XRD-root mist."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "De back-up wordt uit het bestand \"%s\" geladen."
-
-#~ msgid "Friends timeline"
-#~ msgstr "Tijdlijn van vrienden"
-
-#~ msgid "Everyone on this site"
-#~ msgstr "Iedereen op deze site"
index f2f776d44e0d868af02ad52261aa51d91a7ef08e..b874633a6e283690d28c98b43f23a6c04006d82c 100644 (file)
@@ -11,8 +11,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:27+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:23+0000\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <http://translatewiki.net/wiki/Portal:pl>\n"
 "MIME-Version: 1.0\n"
@@ -20,11 +20,11 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ( (n%10 >= 2 && n%10 <= 4 && "
 "(n%100 < 10 || n%100 >= 20)) ? 1 : 2 );\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: pl\n"
 "X-Message-Group: #out-statusnet-core\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1050,7 +1050,8 @@ msgid "Can only fave notices."
 msgstr "Można tylko dodawać wpisy do ulubionych."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Nieznany wpis."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1627,6 +1628,7 @@ msgstr "Usuń tę grupę"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3132,6 +3134,10 @@ msgstr "Źródłowy adres URL jest wymagany."
 msgid "Could not create application."
 msgstr "Nie można utworzyć aplikacji."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Nieprawidłowy rozmiar."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Nowa grupa"
@@ -3416,49 +3422,74 @@ msgstr "Wysłane wiadomości użytkownika %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "To są wiadomości wysłane, czyli prywatne wiadomości, które wysłałeś."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Zmień hasło"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Zmień hasło."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Zmiana hasła"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Poprzednie hasło"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nowe hasło"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 lub więcej znaków."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Potwierdź"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Takie samo jak powyższe hasło."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Zmień"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Hasło musi mieć sześć lub więcej znaków."
 
 msgid "Passwords don't match."
 msgstr "Hasła nie pasują do siebie."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Niepoprawne poprzednie hasło"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Błąd podczas zapisywania użytkownika; nieprawidłowy."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Nie można zapisać nowego hasła."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Zapisano hasło."
 
@@ -3508,6 +3539,7 @@ msgstr "Witryny"
 msgid "Server"
 msgstr "Serwer"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nazwa komputera serwera strony."
 
@@ -3515,6 +3547,7 @@ msgstr "Nazwa komputera serwera strony."
 msgid "Path"
 msgstr "Ścieżka"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Ścieżka do witryny."
 
@@ -3522,6 +3555,7 @@ msgstr "Ścieżka do witryny."
 msgid "Locale directory"
 msgstr "Katalog lokalizacji"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Ścieżka do katalogu lokalizacji."
 
@@ -3529,11 +3563,16 @@ msgstr "Ścieżka do katalogu lokalizacji."
 msgid "Fancy URLs"
 msgstr "Eleganckie adresu URL"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 "Używać eleganckich (bardziej czytelnych i łatwiejszych do zapamiętania) "
 "adresów URL?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Motyw"
 
@@ -3646,6 +3685,8 @@ msgid "Directory where attachments are located."
 msgstr "Katalog, w którym położone są załączniki."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3691,10 +3732,14 @@ msgstr ""
 msgid "People search"
 msgstr "Wyszukiwanie osób"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Nieprawidłowy znacznik osób: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Użytkownicy używający znacznika %1$s - strona %2$d"
@@ -3704,15 +3749,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Ta czynność przyjmuje tylko żądania POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Nie można usuwać użytkowników."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Nie ma takiej strony."
@@ -3723,7 +3772,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Wtyczki"
 
@@ -3739,15 +3789,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Domyślny język"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Nieprawidłowa treść wpisu."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Licencja wpisu \"%1$s\" nie jest zgodna z licencją witryny \"%2$s\"."
 
 #. TRANS: Page title for profile settings.
@@ -3897,29 +3951,39 @@ msgstr "Zapisano ustawienia."
 msgid "Restore account"
 msgstr "Przywróć konto"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Poza ograniczeniem strony (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Nie można pobrać publicznego strumienia."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Publiczna oś czasu, strona %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Publiczna oś czasu"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Kanał publicznego strumienia (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Kanał publicznego strumienia (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Kanał publicznego strumienia (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3928,9 +3992,11 @@ msgstr ""
 "To jest publiczna oś czasu dla %%site.name%%, ale nikt jeszcze nic nie "
 "wysłał."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Zostań pierwszym, który coś wyśle."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3938,6 +4004,8 @@ msgstr ""
 "Dlaczego nie [zarejestrujesz konta](%%action.register%%) i zostaniesz "
 "pierwszym, który coś wyśle."
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3950,6 +4018,8 @@ msgstr ""
 "[Dołącz teraz](%%action.register%%), aby dzielić się wpisami o sobie z "
 "przyjaciółmi, rodziną i kolegami. ([Przeczytaj więcej](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5658,6 +5728,10 @@ msgstr ""
 "Powszechnej Licencji Publicznej Affero GNU (GNU Affero General Public "
 "License); jeśli nie - proszę odwiedzić stronę internetową %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Wtyczki"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nazwa"
@@ -6175,6 +6249,9 @@ msgstr "saveSettings() nie jest zaimplementowane."
 msgid "Unable to delete design setting."
 msgstr "Nie można usunąć ustawienia wyglądu."
 
+msgid "Home"
+msgstr "Strona domowa"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Podstawowa konfiguracja witryny"
@@ -6804,9 +6881,6 @@ msgstr "Przejdź do instalatora."
 msgid "Database error"
 msgstr "Błąd bazy danych"
 
-msgid "Home"
-msgstr "Strona domowa"
-
 msgid "Public"
 msgstr "Publiczny"
 
@@ -7615,7 +7689,6 @@ msgstr "Wyślij wpis"
 msgid "What's up, %s?"
 msgstr "Co słychać, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Załącz"
 
@@ -7684,6 +7757,9 @@ msgstr "Usuń ten wpis"
 msgid "Notice repeated"
 msgstr "Powtórzono wpis"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Szturchnij tego użytkownika"
 
@@ -8203,11 +8279,3 @@ msgstr "Nieprawidłowy kod XML, brak głównego XRD."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Pobieranie kopii zapasowej z pliku \"%s\"."
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Oś czasu użytkownika %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Znajdź osoby na tej witrynie"
index 715f73afa74c07eb043887320fff78b4b92b3a8c..8cba1b643c287daf7b55525c4fb7e5207dde8f74 100644 (file)
@@ -17,17 +17,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:28+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:24+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: pt\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1035,7 +1035,8 @@ msgid "Can only fave notices."
 msgstr "Só pode por actualizações nos favoritos."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Nota desconhecida."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1597,6 +1598,7 @@ msgstr "Apagar este grupo."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3094,6 +3096,10 @@ msgstr "É necessária a URL de origem."
 msgid "Could not create application."
 msgstr "Não foi possível criar a aplicação."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Tamanho inválido."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Grupo novo"
@@ -3376,49 +3382,74 @@ msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 "Esta é a sua caixa de saída, que apresenta as mensagens privadas que enviou."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Modificar senha"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Modificar a sua senha."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Mudança da senha"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Antiga"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nova"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 ou mais caracteres."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirmação"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Repita a nova senha."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Modificar"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Senha tem de ter 6 ou mais caracteres."
 
 msgid "Passwords don't match."
 msgstr "Senhas não coincidem."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Senha antiga incorrecta."
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Erro ao guardar utilizador; inválido."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Não é possível salvar a nova senha."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Senha gravada."
 
@@ -3468,6 +3499,7 @@ msgstr "Site"
 msgid "Server"
 msgstr "Servidor"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nome do servidor do site."
 
@@ -3475,6 +3507,7 @@ msgstr "Nome do servidor do site."
 msgid "Path"
 msgstr "Localização"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Localização do site."
 
@@ -3482,6 +3515,7 @@ msgstr "Localização do site."
 msgid "Locale directory"
 msgstr "Directório local"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Directory path to locales."
 msgstr "Localização do directório das línguas"
@@ -3490,9 +3524,14 @@ msgstr "Localização do directório das línguas"
 msgid "Fancy URLs"
 msgstr "URLs bonitas"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Usar URLs bonitas (mais legíveis e memoráveis)"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema"
 
@@ -3613,6 +3652,8 @@ msgid "Directory where attachments are located."
 msgstr "Localização do directório das línguas"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3660,10 +3701,14 @@ msgstr ""
 msgid "People search"
 msgstr "Pesquisa de pessoas"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Categoria de pessoas inválida: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Utilizadores auto-categorizados com %1$s - página %2$d"
@@ -3673,15 +3718,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr "Desabilitado"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Esta operação só aceita pedidos POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Não pode apagar utilizadores."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Página não foi encontrada."
@@ -3692,7 +3741,8 @@ msgid "Enabled"
 msgstr "Habilitado"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Plugins"
 
@@ -3707,15 +3757,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Plugins padrão"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Conteúdo da nota é inválido."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "A licença ‘%1$s’ da nota não é compatível com a licença ‘%2$s’ do site."
 
@@ -3868,29 +3922,39 @@ msgstr "Configurações gravadas."
 msgid "Restore account"
 msgstr "Criar uma conta"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Além do limite de página (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Não foi possível importar as notas públicas."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Notas públicas, página %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Notas públicas"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fonte de Notas Públicas (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fonte de Notas Públicas (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Fonte de Notas Públicas (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3899,9 +3963,11 @@ msgstr ""
 "Estas são as notas públicas do site %%site.name%% mas ninguém publicou nada "
 "ainda."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Seja a primeira pessoa a publicar!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3909,6 +3975,8 @@ msgstr ""
 "Podia [registar uma conta](%%action.register%%) e ser a primeira pessoa a "
 "publicar!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3921,6 +3989,8 @@ msgstr ""
 "[StatusNet](http://status.net/). [Registe-se agora](%%action.register%%) "
 "para partilhar notas sobre si, família e amigos! ([Saber mais](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5640,6 +5710,10 @@ msgstr ""
 "Juntamente com este programa deve ter recebido uma cópia da GNU Affero "
 "General Public License. Se não a tiver recebido, consulte %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Plugins"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nome"
@@ -6152,6 +6226,9 @@ msgstr "saveSettings() não implementado."
 msgid "Unable to delete design setting."
 msgstr "Não foi possível apagar a configuração do estilo."
 
+msgid "Home"
+msgstr "Página pessoal"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuração básica do site"
@@ -6778,9 +6855,6 @@ msgstr "Ir para o instalador."
 msgid "Database error"
 msgstr "Erro de base de dados"
 
-msgid "Home"
-msgstr "Página pessoal"
-
 msgid "Public"
 msgstr "Público"
 
@@ -7587,7 +7661,6 @@ msgstr "Enviar uma nota"
 msgid "What's up, %s?"
 msgstr "Novidades, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Anexar"
 
@@ -7656,6 +7729,9 @@ msgstr "Apagar esta nota"
 msgid "Notice repeated"
 msgstr "Nota repetida"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Tocar este utilizador"
 
@@ -8167,10 +8243,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Notas de %s"
-
-#~ msgid "Everyone on this site"
-#~ msgstr "Todos neste site"
index ade9fcc57c382699fc90aa33f747a177db734f45..66957c90c936bf183f21718a55d19d58f0737365 100644 (file)
@@ -15,18 +15,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:29+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:25+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: pt-br\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1051,7 +1051,8 @@ msgid "Can only fave notices."
 msgstr "Só é possível tornar favoritas as mensagens."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Mensagem desconhecida."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1639,6 +1640,7 @@ msgstr "Excluir este grupo"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3163,6 +3165,10 @@ msgstr "A URL da fonte é obrigatória."
 msgid "Could not create application."
 msgstr "Não foi possível criar a aplicação."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Tamanho inválido."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Novo grupo"
@@ -3451,52 +3457,77 @@ msgstr ""
 "Essa é a sua caixa de mensagens enviadas, que lista as mensagens "
 "particulares que você enviou."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Alterar a senha"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Altere a sua senha"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Alterar a senha"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Senha anterior"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Senha nova"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "No mínimo 6 caracteres"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Confirmar"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Igual à senha acima"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Alterar"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "A senha deve ter, no mínimo, 6 caracteres."
 
 msgid "Passwords don't match."
 msgstr "As senhas não coincidem."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "A senha anterior está errada"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Erro ao salvar usuário; inválido."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Não é possível salvar a nova senha."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "A senha foi salva."
 
@@ -3547,6 +3578,7 @@ msgstr "Site"
 msgid "Server"
 msgstr "Servidor"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Nome de host do servidor do site."
 
@@ -3554,6 +3586,7 @@ msgstr "Nome de host do servidor do site."
 msgid "Path"
 msgstr "Caminho"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Caminho do site."
 
@@ -3561,6 +3594,7 @@ msgstr "Caminho do site."
 msgid "Locale directory"
 msgstr "Diretório dos locales"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Caminho do diretório de locales"
 
@@ -3568,9 +3602,14 @@ msgstr "Caminho do diretório de locales"
 msgid "Fancy URLs"
 msgstr "URLs limpas"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Utilizar URLs limpas (mais legíveis e memorizáveis)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Tema"
 
@@ -3683,6 +3722,8 @@ msgid "Directory where attachments are located."
 msgstr "Diretório onde os anexos estão localizados."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3727,10 +3768,14 @@ msgstr ""
 msgid "People search"
 msgstr "Procurar pessoas"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Não é uma etiqueta de pessoa válida: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Usuários auto-etiquetados com %1$s - pág. %2$d"
@@ -3740,15 +3785,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Esta ação aceita somente requisições POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Você não pode excluir usuários."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Esta página não existe."
@@ -3759,7 +3808,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Plugins"
 
@@ -3775,15 +3825,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Idioma padrão"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "O conteúdo da mensagem é inválido."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 "A licença ‘%1$s’ da mensagem não é compatível com a licença ‘%2$s’ do site."
 
@@ -3935,29 +3989,39 @@ msgstr "As configurações foram salvas."
 msgid "Restore account"
 msgstr "Criar uma conta"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Além do limite da página (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Não foi possível recuperar o fluxo público."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Mensagens públicas, pág. %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Mensagens públicas"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Fonte de mensagens públicas (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Fonte de mensagens públicas (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Fonte de mensagens públicas (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3966,9 +4030,11 @@ msgstr ""
 "Esse é o fluxo de mensagens públicas de %%site.name%%, mas ninguém publicou "
 "nada ainda."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Seja o primeiro a publicar!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3976,6 +4042,8 @@ msgstr ""
 "Por que você não [registra uma conta](%%action.register%%) pra ser o "
 "primeiro a publicar?"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3988,6 +4056,8 @@ msgstr ""
 "[Cadastre-se agora](%%action.register%%) para compartilhar notícias sobre "
 "você com seus amigos, família e colegas! ([Saiba mais](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5712,6 +5782,10 @@ msgstr ""
 "Você deve ter recebido uma cópia da GNU Affero General Public License com "
 "este programa. Caso contrário, veja %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Plugins"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Nome"
@@ -6216,6 +6290,9 @@ msgstr "saveSettings() não implementado."
 msgid "Unable to delete design setting."
 msgstr "Não foi possível excluir as configurações da aparência."
 
+msgid "Home"
+msgstr "Site"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Configuração básica do site"
@@ -6856,9 +6933,6 @@ msgstr "Ir para o instalador."
 msgid "Database error"
 msgstr "Erro no banco de dados"
 
-msgid "Home"
-msgstr "Site"
-
 msgid "Public"
 msgstr "Público"
 
@@ -7669,7 +7743,6 @@ msgstr "Enviar uma mensagem"
 msgid "What's up, %s?"
 msgstr "E aí, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Anexo"
 
@@ -7738,6 +7811,9 @@ msgstr "Excluir esta mensagem"
 msgid "Notice repeated"
 msgstr "Mensagem repetida"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Chamar a atenção deste usuário"
 
@@ -8247,11 +8323,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Mensagens de %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Encontre pessoas neste site"
index e3319efb959170fa8e71a33b13798630ad7fc307..69cfbaaae399ba6562c3c7f7bed00238bd15c2a3 100644 (file)
@@ -18,18 +18,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:30+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:26+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ru\n"
 "X-Message-Group: #out-statusnet-core\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"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1056,7 +1056,8 @@ msgid "Can only fave notices."
 msgstr "Возможно только добавление записей в число любимых."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Неизвестная запись"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1641,6 +1642,7 @@ msgstr "Удалить эту группу"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3166,6 +3168,10 @@ msgstr "URL источника обязателен."
 msgid "Could not create application."
 msgstr "Не удаётся создать приложение."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Неверный размер."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Новая группа"
@@ -3451,52 +3457,77 @@ msgstr ""
 "Это список исходящих писем, в котором перечислены отправленные вами личные "
 "сообщения."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Изменение пароля"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Измените ваш пароль."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Пароль сохранён."
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Старый пароль"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Новый пароль"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 или больше знаков"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Подтверждение"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Тот же пароль, что и выше"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Изменить"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Пароль должен быть длиной не менее 6 символов."
 
 msgid "Passwords don't match."
 msgstr "Пароли не совпадают."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Некорректный старый пароль"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Ошибка сохранения пользователя; неверное имя."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Не удаётся сохранить новый пароль."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Пароль сохранён."
 
@@ -3546,6 +3577,7 @@ msgstr "Сайт"
 msgid "Server"
 msgstr "Сервер"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Имя хоста сервера сайта."
 
@@ -3553,6 +3585,7 @@ msgstr "Имя хоста сервера сайта."
 msgid "Path"
 msgstr "Путь"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Путь к сайту."
 
@@ -3560,6 +3593,7 @@ msgstr "Путь к сайту."
 msgid "Locale directory"
 msgstr "Директория локализации"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Путь к директории локализаций"
 
@@ -3567,9 +3601,14 @@ msgstr "Путь к директории локализаций"
 msgid "Fancy URLs"
 msgstr "Короткие URL"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Использовать ли короткие (более читаемые и запоминаемые) URL-адреса?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Тема"
 
@@ -3682,6 +3721,8 @@ msgid "Directory where attachments are located."
 msgstr "Директория, в которой расположены вложения."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3726,10 +3767,14 @@ msgstr ""
 msgid "People search"
 msgstr "Поиск людей"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Неверный тег человека: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Пользователи, установившие себе тег %1$s — страница %2$d"
@@ -3739,15 +3784,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Это действие принимает только POST-запросы."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Вы не можете удалять пользователей."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Нет такой страницы."
@@ -3758,7 +3807,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Плагины"
 
@@ -3774,15 +3824,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Язык по умолчанию"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Ошибочное содержание записи."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Лицензия записи «%1$s» не совместима с лицензией сайта «%2$s»."
 
 #. TRANS: Page title for profile settings.
@@ -3935,38 +3989,50 @@ msgstr "Настройки сохранены."
 msgid "Restore account"
 msgstr "Создать новый аккаунт"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Превышен предел страницы (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Не удаётся вернуть публичный поток."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Общая лента, страница %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Общая лента"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Лента публичного потока (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Лента публичного потока (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Лента публичного потока (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr "Это общая лента %%site.name%%, однако пока никто ничего не отправил."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Создайте первую запись!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3974,6 +4040,8 @@ msgstr ""
 "Почему бы не [зарегистрироваться](%%action.register%%), чтобы стать первым "
 "отправителем?"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3987,6 +4055,8 @@ msgstr ""
 "register%%), чтобы держать в курсе своих  событий  поклонников, друзей, "
 "родственников и коллег! ([Читать далее](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5704,6 +5774,10 @@ msgstr ""
 "Вы должны были получить копию GNU Affero General Public License вместе с "
 "этой программой. Если нет, см. %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Плагины"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Имя"
@@ -6214,6 +6288,9 @@ msgstr "saveSettings() не реализована."
 msgid "Unable to delete design setting."
 msgstr "Не удаётся удалить настройки оформления."
 
+msgid "Home"
+msgstr "Главная"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Основная конфигурация сайта"
@@ -6850,9 +6927,6 @@ msgstr "Перейти к установщику"
 msgid "Database error"
 msgstr "Ошибка базы данных"
 
-msgid "Home"
-msgstr "Главная"
-
 msgid "Public"
 msgstr "Общее"
 
@@ -7665,7 +7739,6 @@ msgstr "Послать запись"
 msgid "What's up, %s?"
 msgstr "Что нового, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Прикрепить"
 
@@ -7734,6 +7807,9 @@ msgstr "Удалить эту запись"
 msgid "Notice repeated"
 msgstr "Запись повторена"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "«Подтолкнуть» этого пользователя"
 
@@ -8251,11 +8327,3 @@ msgstr "Неверный XML, отсутствует корень XRD."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Получение резервной копии из файла «%s»."
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "Лента %s"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Найти человека на этом сайте"
index 81cdbaba1ef7341292f7af6f3d83e547bb7884ba..8ffd6aab4dc3da1157d582731184ff46011d995d 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+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"
@@ -19,7 +19,7 @@ msgstr ""
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
-#: actions/accessadminpanel.php:53 lib/adminpanelnav.php:92
+#: actions/accessadminpanel.php:53 lib/adminpanelnav.php:110
 msgid "Access"
 msgstr ""
 
@@ -85,7 +85,7 @@ msgstr ""
 #. TRANS: Button text on profile design page to save settings.
 #: actions/accessadminpanel.php:193 actions/designadminpanel.php:732
 #: actions/emailsettings.php:251 actions/imsettings.php:199
-#: actions/licenseadminpanel.php:335 actions/pathsadminpanel.php:512
+#: actions/licenseadminpanel.php:335 actions/pathsadminpanel.php:517
 #: actions/profilesettings.php:198 actions/sitenoticeadminpanel.php:197
 #: actions/smssettings.php:204 actions/subscriptions.php:261
 #: actions/urlsettings.php:152 actions/useradminpanel.php:298
@@ -97,7 +97,7 @@ msgstr ""
 
 #. TRANS: Server error when page not found (404).
 #. TRANS: Server error when page not found (404)
-#: actions/all.php:68 actions/public.php:98 actions/replies.php:93
+#: actions/all.php:68 actions/public.php:99 actions/replies.php:93
 #: actions/showfavorites.php:140 actions/tag.php:52
 msgid "No such page."
 msgstr ""
@@ -176,7 +176,7 @@ msgstr ""
 #. TRANS: Timeline title for user and friends. %s is a user nickname.
 #: actions/all.php:94 actions/all.php:185 actions/allrss.php:117
 #: actions/apitimelinefriends.php:207 actions/apitimelinehome.php:113
-#: lib/personalgroupnav.php:72
+#: lib/adminpanelnav.php:70 lib/personalgroupnav.php:72 lib/settingsnav.php:71
 #, php-format
 msgid "%s and friends"
 msgstr ""
@@ -853,8 +853,8 @@ msgstr ""
 #: actions/invite.php:60 actions/makeadmin.php:67 actions/newmessage.php:140
 #: actions/newnotice.php:104 actions/nudge.php:81
 #: actions/oauthappssettings.php:162 actions/oauthconnectionssettings.php:135
-#: actions/passwordsettings.php:137 actions/pluginenable.php:87
-#: actions/profilesettings.php:218 actions/recoverpassword.php:383
+#: actions/passwordsettings.php:146 actions/pluginenable.php:87
+#: actions/profilesettings.php:218 actions/recoverpassword.php:387
 #: actions/register.php:157 actions/remotesubscribe.php:76
 #: actions/repeat.php:82 actions/smssettings.php:249 actions/subedit.php:40
 #: actions/subscribe.php:87 actions/tagother.php:145
@@ -943,7 +943,7 @@ msgstr ""
 #. TRANS: Field label on OAuth API authorisation form.
 #. TRANS: Field label on login page.
 #: actions/apioauthauthorize.php:463 actions/login.php:235
-#: actions/register.php:415 lib/settingsnav.php:74
+#: actions/register.php:415 lib/settingsnav.php:93
 msgid "Password"
 msgstr ""
 
@@ -1311,7 +1311,7 @@ msgstr ""
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #: actions/atompubfavoritefeed.php:259
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr ""
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1505,7 +1505,7 @@ msgid "Invalid size."
 msgstr ""
 
 #. TRANS: Title for avatar upload page.
-#: actions/avatarsettings.php:66 lib/settingsnav.php:69
+#: actions/avatarsettings.php:66 lib/settingsnav.php:88
 msgid "Avatar"
 msgstr ""
 
@@ -1865,8 +1865,8 @@ msgstr ""
 
 #. TRANS: Field label for delete account confirmation entry.
 #. TRANS: Field label for password reset form where the password has to be typed again.
-#: actions/deleteaccount.php:300 actions/passwordsettings.php:112
-#: actions/recoverpassword.php:262 actions/register.php:419
+#: actions/deleteaccount.php:300 actions/recoverpassword.php:262
+#: actions/register.php:419
 msgid "Confirm"
 msgstr ""
 
@@ -1902,7 +1902,7 @@ msgstr ""
 #. TRANS: Client error text when there is a problem with the session token.
 #: actions/deleteapplication.php:102 actions/editapplication.php:131
 #: actions/newapplication.php:112 actions/showapplication.php:113
-#: lib/action.php:1388
+#: lib/action.php:1409
 msgid "There was a problem with your session token."
 msgstr ""
 
@@ -1996,6 +1996,7 @@ msgstr ""
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -2003,7 +2004,7 @@ msgstr ""
 #: actions/deletenotice.php:52 actions/disfavor.php:61 actions/favor.php:62
 #: actions/groupblock.php:60 actions/groupunblock.php:60 actions/logout.php:69
 #: actions/makeadmin.php:62 actions/newmessage.php:89 actions/newnotice.php:87
-#: actions/nudge.php:64 actions/pluginenable.php:97 actions/subedit.php:33
+#: actions/nudge.php:64 actions/pluginenable.php:98 actions/subedit.php:33
 #: actions/subscribe.php:98 actions/tagother.php:33 actions/unsubscribe.php:52
 #: lib/adminpanelaction.php:71 lib/profileformaction.php:63
 #: lib/settingsaction.php:72
@@ -2077,7 +2078,7 @@ msgid "Delete this user."
 msgstr ""
 
 #. TRANS: Message used as title for design settings for the site.
-#: actions/designadminpanel.php:60 lib/settingsnav.php:84
+#: actions/designadminpanel.php:60 lib/settingsnav.php:103
 msgid "Design"
 msgstr ""
 
@@ -2969,7 +2970,7 @@ msgid "A list of the users in this group."
 msgstr ""
 
 #. TRANS: Indicator in group members list that this user is a group administrator.
-#: actions/groupmembers.php:190 lib/primarynav.php:63
+#: actions/groupmembers.php:190 lib/adminpanelnav.php:77 lib/primarynav.php:63
 msgid "Admin"
 msgstr ""
 
@@ -3355,7 +3356,7 @@ msgstr ""
 
 #. TRANS: Send button for inviting friends
 #. TRANS: Button text for sending notice.
-#: actions/invite.php:232 lib/noticeform.php:254
+#: actions/invite.php:232 lib/noticeform.php:256
 msgctxt "BUTTON"
 msgid "Send"
 msgstr ""
@@ -3688,6 +3689,10 @@ msgstr ""
 msgid "Could not create application."
 msgstr ""
 
+#: actions/newapplication.php:297
+msgid "Invalid image."
+msgstr ""
+
 #. TRANS: Title for form to create a group.
 #: actions/newgroup.php:53
 msgid "New group"
@@ -4013,70 +4018,92 @@ msgstr ""
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 
-#: actions/passwordsettings.php:58
+#. TRANS: Title for page where to change password.
+#: actions/passwordsettings.php:59
+msgctxt "TITLE"
 msgid "Change password"
 msgstr ""
 
-#: actions/passwordsettings.php:69
+#. TRANS: Instructions for page where to change password.
+#: actions/passwordsettings.php:71
 msgid "Change your password."
 msgstr ""
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
-#: actions/passwordsettings.php:96 actions/recoverpassword.php:251
+#: actions/passwordsettings.php:99 actions/recoverpassword.php:251
 msgid "Password change"
 msgstr ""
 
-#: actions/passwordsettings.php:104
+#. TRANS: Field label on page where to change password.
+#: actions/passwordsettings.php:108
 msgid "Old password"
 msgstr ""
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
-#: actions/passwordsettings.php:108 actions/recoverpassword.php:256
+#: actions/passwordsettings.php:113 actions/recoverpassword.php:256
 msgid "New password"
 msgstr ""
 
-#: actions/passwordsettings.php:109 actions/register.php:416
+#. TRANS: Field title on page where to change password.
+#: actions/passwordsettings.php:115 actions/register.php:416
 msgid "6 or more characters."
 msgstr ""
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#: actions/passwordsettings.php:119
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr ""
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
-#: actions/passwordsettings.php:113 actions/recoverpassword.php:264
+#: actions/passwordsettings.php:121 actions/recoverpassword.php:264
 #: actions/register.php:420
 msgid "Same as password above."
 msgstr ""
 
-#: actions/passwordsettings.php:117
+#. TRANS: Button text on page where to change password.
+#: actions/passwordsettings.php:126
+msgctxt "BUTTON"
 msgid "Change"
 msgstr ""
 
-#: actions/passwordsettings.php:153 actions/register.php:223
+#. TRANS: Form validation error on page where to change password.
+#: actions/passwordsettings.php:163 actions/register.php:223
 msgid "Password must be 6 or more characters."
 msgstr ""
 
-#: actions/passwordsettings.php:156 actions/register.php:226
+#: actions/passwordsettings.php:166 actions/register.php:226
 msgid "Passwords don't match."
 msgstr ""
 
-#: actions/passwordsettings.php:164
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#: actions/passwordsettings.php:175
+msgid "Incorrect old password."
 msgstr ""
 
-#: actions/passwordsettings.php:180
+#. TRANS: Form validation error on page where to change password.
+#: actions/passwordsettings.php:192
 msgid "Error saving user; invalid."
 msgstr ""
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
-#: actions/passwordsettings.php:185 actions/recoverpassword.php:418
+#: actions/passwordsettings.php:199 actions/recoverpassword.php:422
 msgid "Cannot save new password."
 msgstr ""
 
-#: actions/passwordsettings.php:191
+#. TRANS: Form validation notice on page where to change password.
+#: actions/passwordsettings.php:206
 msgid "Password saved."
 msgstr ""
 
 #. TRANS: Title for Paths admin panel.
 #. TRANS: Menu item for site administration
-#: actions/pathsadminpanel.php:58 lib/adminpanelnav.php:100
+#: actions/pathsadminpanel.php:58 lib/adminpanelnav.php:118
 msgid "Paths"
 msgstr ""
 
@@ -4125,221 +4152,228 @@ msgid "Site"
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:241 actions/pathsadminpanel.php:279
-#: actions/pathsadminpanel.php:370 actions/pathsadminpanel.php:425
+#: actions/pathsadminpanel.php:241 actions/pathsadminpanel.php:284
+#: actions/pathsadminpanel.php:375 actions/pathsadminpanel.php:430
 msgid "Server"
 msgstr ""
 
-#: actions/pathsadminpanel.php:242
+#. TRANS: Field title in Paths admin panel.
+#: actions/pathsadminpanel.php:243
 msgid "Site's server hostname."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:248 actions/pathsadminpanel.php:288
-#: actions/pathsadminpanel.php:379 actions/pathsadminpanel.php:434
+#: actions/pathsadminpanel.php:249 actions/pathsadminpanel.php:293
+#: actions/pathsadminpanel.php:384 actions/pathsadminpanel.php:439
 msgid "Path"
 msgstr ""
 
-#: actions/pathsadminpanel.php:249
+#. TRANS: Field title in Paths admin panel.
+#: actions/pathsadminpanel.php:251
 msgid "Site path."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:255
+#: actions/pathsadminpanel.php:257
 msgid "Locale directory"
 msgstr ""
 
-#: actions/pathsadminpanel.php:256
+#. TRANS: Field title in Paths admin panel.
+#: actions/pathsadminpanel.php:259
 msgid "Directory path to locales."
 msgstr ""
 
 #. TRANS: Checkbox label in Paths admin panel.
-#: actions/pathsadminpanel.php:263
+#: actions/pathsadminpanel.php:266
 msgid "Fancy URLs"
 msgstr ""
 
-#: actions/pathsadminpanel.php:265
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#: actions/pathsadminpanel.php:269
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
-#: actions/pathsadminpanel.php:272
+#. TRANS: Fieldset legend in Paths admin panel.
+#: actions/pathsadminpanel.php:277
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:281
+#: actions/pathsadminpanel.php:286
 msgid "Server for themes."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:290
+#: actions/pathsadminpanel.php:295
 msgid "Web path to themes."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:297 actions/pathsadminpanel.php:388
-#: actions/pathsadminpanel.php:443 actions/pathsadminpanel.php:495
+#: actions/pathsadminpanel.php:302 actions/pathsadminpanel.php:393
+#: actions/pathsadminpanel.php:448 actions/pathsadminpanel.php:500
 msgid "SSL server"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:299
+#: actions/pathsadminpanel.php:304
 msgid "SSL server for themes (default: SSL server)."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:306 actions/pathsadminpanel.php:397
-#: actions/pathsadminpanel.php:452
+#: actions/pathsadminpanel.php:311 actions/pathsadminpanel.php:402
+#: actions/pathsadminpanel.php:457
 msgid "SSL path"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:308
+#: actions/pathsadminpanel.php:313
 msgid "SSL path to themes (default: /theme/)."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:315 actions/pathsadminpanel.php:406
-#: actions/pathsadminpanel.php:461
+#: actions/pathsadminpanel.php:320 actions/pathsadminpanel.php:411
+#: actions/pathsadminpanel.php:466
 msgid "Directory"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:317
+#: actions/pathsadminpanel.php:322
 msgid "Directory where themes are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
-#: actions/pathsadminpanel.php:326
+#: actions/pathsadminpanel.php:331
 msgid "Avatars"
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:333
+#: actions/pathsadminpanel.php:338
 msgid "Avatar server"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:335
+#: actions/pathsadminpanel.php:340
 msgid "Server for avatars."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:342
+#: actions/pathsadminpanel.php:347
 msgid "Avatar path"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:344
+#: actions/pathsadminpanel.php:349
 msgid "Web path to avatars."
 msgstr ""
 
 #. TRANS: Field label in Paths admin panel.
-#: actions/pathsadminpanel.php:351
+#: actions/pathsadminpanel.php:356
 msgid "Avatar directory"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:353
+#: actions/pathsadminpanel.php:358
 msgid "Directory where avatars are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
-#: actions/pathsadminpanel.php:364
+#: actions/pathsadminpanel.php:369
 msgid "Backgrounds"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:372
+#: actions/pathsadminpanel.php:377
 msgid "Server for backgrounds."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:381
+#: actions/pathsadminpanel.php:386
 msgid "Web path to backgrounds."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:390
+#: actions/pathsadminpanel.php:395
 msgid "Server for backgrounds on SSL pages."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:399
+#: actions/pathsadminpanel.php:404
 msgid "Web path to backgrounds on SSL pages."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:408
+#: actions/pathsadminpanel.php:413
 msgid "Directory where backgrounds are located."
 msgstr ""
 
 #. TRANS: Fieldset legens in Paths admin panel.
-#: actions/pathsadminpanel.php:419
+#: actions/pathsadminpanel.php:424
 msgid "Attachments"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:427
+#: actions/pathsadminpanel.php:432
 msgid "Server for attachments."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:436
+#: actions/pathsadminpanel.php:441
 msgid "Web path to attachments."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:445
+#: actions/pathsadminpanel.php:450
 msgid "Server for attachments on SSL pages."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:454
+#: actions/pathsadminpanel.php:459
 msgid "Web path to attachments on SSL pages."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:463
+#: actions/pathsadminpanel.php:468
 msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
-#: actions/pathsadminpanel.php:472
+#: actions/pathsadminpanel.php:477
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr ""
 
 #. TRANS: Drop down option in Paths admin panel (option for "When to use SSL").
-#: actions/pathsadminpanel.php:477 actions/snapshotadminpanel.php:202
+#: actions/pathsadminpanel.php:482 actions/snapshotadminpanel.php:202
 msgid "Never"
 msgstr ""
 
 #. TRANS: Drop down option in Paths admin panel (option for "When to use SSL").
-#: actions/pathsadminpanel.php:479
+#: actions/pathsadminpanel.php:484
 msgid "Sometimes"
 msgstr ""
 
 #. TRANS: Drop down option in Paths admin panel (option for "When to use SSL").
-#: actions/pathsadminpanel.php:481
+#: actions/pathsadminpanel.php:486
 msgid "Always"
 msgstr ""
 
-#: actions/pathsadminpanel.php:485
+#: actions/pathsadminpanel.php:490
 msgid "Use SSL"
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:487
+#: actions/pathsadminpanel.php:492
 msgid "When to use SSL."
 msgstr ""
 
 #. TRANS: Tooltip for field label in Paths admin panel.
-#: actions/pathsadminpanel.php:497
+#: actions/pathsadminpanel.php:502
 msgid "Server to direct SSL requests to."
 msgstr ""
 
 #. TRANS: Button title text to store form data in the Paths admin panel.
-#: actions/pathsadminpanel.php:514
+#: actions/pathsadminpanel.php:519
 msgid "Save paths"
 msgstr ""
 
@@ -4357,51 +4391,58 @@ msgstr ""
 msgid "People search"
 msgstr ""
 
-#: actions/peopletag.php:68
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
+#: actions/peopletag.php:69
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr ""
 
-#: actions/peopletag.php:142
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
+#: actions/peopletag.php:145
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr ""
 
 #. TRANS: Page title for AJAX form return when a disabling a plugin.
-#: actions/plugindisable.php:69
+#: actions/plugindisable.php:68
 msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 #: actions/pluginenable.php:78 actions/subscribe.php:77
 msgid "This action only accepts POST requests."
 msgstr ""
 
-#: actions/pluginenable.php:102
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
+#: actions/pluginenable.php:104
 msgid "You cannot administer plugins."
 msgstr ""
 
-#: actions/pluginenable.php:109
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
+#: actions/pluginenable.php:112
 msgid "No such plugin."
 msgstr ""
 
 #. TRANS: Page title for AJAX form return when enabling a plugin.
-#: actions/pluginenable.php:159
+#: actions/pluginenable.php:161
 msgctxt "plugin"
 msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
-#: actions/pluginsadminpanel.php:56 actions/version.php:191
-#: lib/adminpanelnav.php:140
+#: actions/pluginsadminpanel.php:53
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr ""
 
 #. TRANS: Instructions at top of plugin admin page.
-#: actions/pluginsadminpanel.php:68
+#: actions/pluginsadminpanel.php:64
 msgid ""
 "Additional plugins can be enabled and configured manually. See the <a href="
 "\"http://status.net/wiki/Plugins\">online plugin documentation</a> for more "
@@ -4409,22 +4450,26 @@ msgid ""
 msgstr ""
 
 #. TRANS: Admin form section header
-#: actions/pluginsadminpanel.php:84
+#: actions/pluginsadminpanel.php:79
 msgid "Default plugins"
 msgstr ""
 
-#: actions/pluginsadminpanel.php:106
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
+#: actions/pluginsadminpanel.php:102
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
-#: actions/postnotice.php:95
+#. TRANS: Client error displayed if the notice posted has too many characters.
+#: actions/postnotice.php:96
 msgid "Invalid notice content."
 msgstr ""
 
-#: actions/postnotice.php:101
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#: actions/postnotice.php:104
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -4598,54 +4643,68 @@ msgstr ""
 msgid "Restore account"
 msgstr ""
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #: actions/public.php:83
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
-#: actions/public.php:92
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
+#: actions/public.php:93
 msgid "Could not retrieve public stream."
 msgstr ""
 
-#: actions/public.php:130
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
+#: actions/public.php:131
 #, php-format
 msgid "Public timeline, page %d"
 msgstr ""
 
-#: actions/public.php:132 lib/publicgroupnav.php:65
+#. TRANS: Title for the first public timeline page.
+#: actions/public.php:134 lib/publicgroupnav.php:65
 msgid "Public timeline"
 msgstr ""
 
-#: actions/public.php:160
+#. TRANS: Link description for public timeline feed.
+#: actions/public.php:162
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr ""
 
-#: actions/public.php:164
+#. TRANS: Link description for public timeline feed.
+#: actions/public.php:167
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr ""
 
-#: actions/public.php:168
+#. TRANS: Link description for public timeline feed.
+#: actions/public.php:172
 msgid "Public Stream Feed (Atom)"
 msgstr ""
 
-#: actions/public.php:173
+#. TRANS: Text displayed for public feed when there are no public notices.
+#: actions/public.php:178
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
-#: actions/public.php:176
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
+#: actions/public.php:182
 msgid "Be the first to post!"
 msgstr ""
 
-#: actions/public.php:180
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
+#: actions/public.php:187
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
-#: actions/public.php:227
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
+#: actions/public.php:235
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4654,7 +4713,9 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
-#: actions/public.php:232
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
+#: actions/public.php:242
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -4790,7 +4851,7 @@ msgstr ""
 
 #. TRANS: Title for password recovery page in email sent mode.
 #. TRANS: Subject for password recovery e-mail.
-#: actions/recoverpassword.php:227 actions/recoverpassword.php:366
+#: actions/recoverpassword.php:227 actions/recoverpassword.php:370
 msgid "Password recovery requested"
 msgstr ""
 
@@ -4822,49 +4883,49 @@ msgid "Enter a nickname or email address."
 msgstr ""
 
 #. TRANS: Information on password recovery form if no known username or e-mail address was specified.
-#: actions/recoverpassword.php:309
+#: actions/recoverpassword.php:313
 msgid "No user with that email address or username."
 msgstr ""
 
 #. TRANS: Client error displayed on password recovery form if a user does not have a registered e-mail address.
-#: actions/recoverpassword.php:327
+#: actions/recoverpassword.php:331
 msgid "No registered email address for that user."
 msgstr ""
 
 #. TRANS: Server error displayed if e-mail address confirmation fails in the database on the password recovery form.
-#: actions/recoverpassword.php:342
+#: actions/recoverpassword.php:346
 msgid "Error saving address confirmation."
 msgstr ""
 
 #. TRANS: User notification after an e-mail with instructions was sent from the password recovery form.
-#: actions/recoverpassword.php:370
+#: actions/recoverpassword.php:374
 msgid ""
 "Instructions for recovering your password have been sent to the email "
 "address registered to your account."
 msgstr ""
 
 #. TRANS: Client error displayed when trying to reset as password without providing a user.
-#: actions/recoverpassword.php:391
+#: actions/recoverpassword.php:395
 msgid "Unexpected password reset."
 msgstr ""
 
 #. TRANS: Reset password form validation error message.
-#: actions/recoverpassword.php:400
+#: actions/recoverpassword.php:404
 msgid "Password must be 6 characters or more."
 msgstr ""
 
 #. TRANS: Reset password form validation error message.
-#: actions/recoverpassword.php:405
+#: actions/recoverpassword.php:409
 msgid "Password and confirmation do not match."
 msgstr ""
 
 #. TRANS: Server error displayed when something does wrong with the user object during password reset.
-#: actions/recoverpassword.php:426 actions/register.php:241
+#: actions/recoverpassword.php:430 actions/register.php:241
 msgid "Error setting user."
 msgstr ""
 
 #. TRANS: Success message for user after password reset.
-#: actions/recoverpassword.php:434
+#: actions/recoverpassword.php:438
 msgid "New password successfully saved. You are now logged in."
 msgstr ""
 
@@ -4916,7 +4977,7 @@ msgid ""
 msgstr ""
 
 #: actions/register.php:424 actions/register.php:428
-#: actions/siteadminpanel.php:238 lib/settingsnav.php:79
+#: actions/siteadminpanel.php:238 lib/settingsnav.php:98
 msgid "Email"
 msgstr ""
 
@@ -5056,7 +5117,7 @@ msgstr ""
 msgid "You already repeated that notice."
 msgstr ""
 
-#: actions/repeat.php:112 lib/noticelist.php:697
+#: actions/repeat.php:112 lib/noticelistitem.php:602
 msgid "Repeated"
 msgstr ""
 
@@ -5225,7 +5286,7 @@ msgstr ""
 
 #. TRANS: Menu item for site administration
 #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
-#: lib/adminpanelnav.php:108
+#: lib/adminpanelnav.php:126
 msgid "Sessions"
 msgstr ""
 
@@ -5283,7 +5344,7 @@ msgstr ""
 
 #. TRANS: Title of form for deleting a user.
 #: actions/showapplication.php:228 lib/deletegroupform.php:121
-#: lib/deleteuserform.php:64 lib/noticelist.php:678
+#: lib/deleteuserform.php:64 lib/noticelistitem.php:583
 msgid "Delete"
 msgstr ""
 
@@ -5902,7 +5963,7 @@ msgstr ""
 
 #. TRANS: Menu item for site administration
 #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196
-#: lib/adminpanelnav.php:124
+#: lib/adminpanelnav.php:142
 msgid "Snapshots"
 msgstr ""
 
@@ -6082,12 +6143,12 @@ msgid "Subscription feed for %s (Atom)"
 msgstr ""
 
 #. TRANS: Checkbox label for enabling Jabber messages for a profile in a subscriptions list.
-#: actions/subscriptions.php:241 lib/settingsnav.php:97
+#: actions/subscriptions.php:241 lib/settingsnav.php:116
 msgid "IM"
 msgstr ""
 
 #. TRANS: Checkbox label for enabling SMS messages for a profile in a subscriptions list.
-#: actions/subscriptions.php:256 lib/settingsnav.php:104
+#: actions/subscriptions.php:256 lib/settingsnav.php:123
 msgid "SMS"
 msgstr ""
 
@@ -6279,7 +6340,7 @@ msgid "Invalid default subscripton: \"%1$s\" is not a user."
 msgstr ""
 
 #: actions/useradminpanel.php:215 lib/personalgroupnav.php:76
-#: lib/settingsnav.php:64 lib/subgroupnav.php:79
+#: lib/settingsnav.php:83 lib/subgroupnav.php:79
 msgid "Profile"
 msgstr ""
 
@@ -6540,7 +6601,7 @@ msgid "Contributors"
 msgstr ""
 
 #. TRANS: Menu item for site administration
-#: actions/version.php:167 lib/adminpanelnav.php:132
+#: actions/version.php:167 lib/adminpanelnav.php:150
 msgid "License"
 msgstr ""
 
@@ -6567,6 +6628,11 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+#: actions/version.php:191 lib/adminpanelnav.php:158
+msgid "Plugins"
+msgstr ""
+
 #. TRANS: Form input field label for application name.
 #: actions/version.php:197 lib/applicationeditform.php:190
 msgid "Name"
@@ -6939,23 +7005,23 @@ msgid "Untitled page"
 msgstr ""
 
 #. TRANS: Localized tooltip for '...' expansion button on overlong remote messages.
-#: lib/action.php:331
+#: lib/action.php:338
 msgctxt "TOOLTIP"
 msgid "Show more"
 msgstr ""
 
 #. TRANS: Inline reply form submit button: submits a reply comment.
-#: lib/action.php:334
+#: lib/action.php:341
 msgctxt "BUTTON"
 msgid "Reply"
 msgstr ""
 
 #. TRANS: Placeholder text for inline reply form. Clicking in this box will turn it into a mini notice form.
-#: lib/action.php:337
+#: lib/action.php:344
 msgid "Write a reply..."
 msgstr ""
 
-#: lib/action.php:583
+#: lib/action.php:590
 msgid "Status"
 msgstr ""
 
@@ -6963,7 +7029,7 @@ msgstr ""
 #. TRANS: Text between [] is a link description, text between () is the link itself.
 #. TRANS: Make sure there is no whitespace between "]" and "(".
 #. TRANS: "%%site.broughtby%%" is the value of the variable site.broughtby
-#: lib/action.php:918
+#: lib/action.php:939
 #, php-format
 msgid ""
 "**%%site.name%%** is a microblogging service brought to you by [%%site."
@@ -6971,7 +7037,7 @@ msgid ""
 msgstr ""
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set.
-#: lib/action.php:921
+#: lib/action.php:942
 #, php-format
 msgid "**%%site.name%%** is a microblogging service."
 msgstr ""
@@ -6980,7 +7046,7 @@ msgstr ""
 #. TRANS: Make sure there is no whitespace between "]" and "(".
 #. TRANS: Text between [] is a link description, text between () is the link itself.
 #. TRANS: %s is the version of StatusNet that is being used.
-#: lib/action.php:928
+#: lib/action.php:949
 #, php-format
 msgid ""
 "It runs the [StatusNet](http://status.net/) microblogging software, version %"
@@ -6990,39 +7056,39 @@ msgstr ""
 
 #. TRANS: Content license displayed when license is set to 'private'.
 #. TRANS: %1$s is the site name.
-#: lib/action.php:946
+#: lib/action.php:967
 #, php-format
 msgid "Content and data of %1$s are private and confidential."
 msgstr ""
 
 #. TRANS: Content license displayed when license is set to 'allrightsreserved'.
 #. TRANS: %1$s is the copyright owner.
-#: lib/action.php:953
+#: lib/action.php:974
 #, php-format
 msgid "Content and data copyright by %1$s. All rights reserved."
 msgstr ""
 
 #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set.
-#: lib/action.php:957
+#: lib/action.php:978
 msgid "Content and data copyright by contributors. All rights reserved."
 msgstr ""
 
 #. TRANS: license message in footer.
 #. TRANS: %1$s is the site name, %2$s is a link to the license URL, with a licence name set in configuration.
-#: lib/action.php:989
+#: lib/action.php:1010
 #, php-format
 msgid "All %1$s content and data are available under the %2$s license."
 msgstr ""
 
 #. TRANS: Pagination message to go to a page displaying information more in the
 #. TRANS: present than the currently displayed information.
-#: lib/action.php:1332
+#: lib/action.php:1353
 msgid "After"
 msgstr ""
 
 #. TRANS: Pagination message to go to a page displaying information more in the
 #. TRANS: past than the currently displayed information.
-#: lib/action.php:1342
+#: lib/action.php:1363
 msgid "Before"
 msgstr ""
 
@@ -7144,76 +7210,82 @@ msgstr ""
 msgid "Unable to delete design setting."
 msgstr ""
 
+#: lib/adminpanelnav.php:65 lib/adminpanelnav.php:69
+#: lib/defaultlocalnav.php:58 lib/personalgroupnav.php:71
+#: lib/settingsnav.php:66 lib/settingsnav.php:70
+msgid "Home"
+msgstr ""
+
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:66
+#: lib/adminpanelnav.php:84
 msgid "Basic site configuration"
 msgstr ""
 
 #. TRANS: Menu item for site administration
-#: lib/adminpanelnav.php:68
+#: lib/adminpanelnav.php:86
 msgctxt "MENU"
 msgid "Site"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:74
+#: lib/adminpanelnav.php:92
 msgid "Design configuration"
 msgstr ""
 
 #. TRANS: Menu item for site administration
 #. TRANS: Menu item in the group navigation page. Only shown for group administrators.
-#: lib/adminpanelnav.php:76 lib/groupnav.php:133
+#: lib/adminpanelnav.php:94 lib/groupnav.php:133
 msgctxt "MENU"
 msgid "Design"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:82
+#: lib/adminpanelnav.php:100
 msgid "User configuration"
 msgstr ""
 
 #. TRANS: Menu item for site administration
-#: lib/adminpanelnav.php:84 lib/personalgroupnav.php:88
+#: lib/adminpanelnav.php:102 lib/personalgroupnav.php:88
 msgid "User"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:90
+#: lib/adminpanelnav.php:108
 msgid "Access configuration"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:98
+#: lib/adminpanelnav.php:116
 msgid "Paths configuration"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:106
+#: lib/adminpanelnav.php:124
 msgid "Sessions configuration"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:114
+#: lib/adminpanelnav.php:132
 msgid "Edit site notice"
 msgstr ""
 
 #. TRANS: Menu item for site administration
-#: lib/adminpanelnav.php:116
+#: lib/adminpanelnav.php:134
 msgid "Site notice"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:122
+#: lib/adminpanelnav.php:140
 msgid "Snapshots configuration"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:130
+#: lib/adminpanelnav.php:148
 msgid "Set site license"
 msgstr ""
 
 #. TRANS: Menu item title/tooltip
-#: lib/adminpanelnav.php:138
+#: lib/adminpanelnav.php:156
 msgid "Plugins configuration"
 msgstr ""
 
@@ -7830,10 +7902,6 @@ msgstr ""
 msgid "Database error"
 msgstr ""
 
-#: lib/defaultlocalnav.php:58 lib/personalgroupnav.php:71
-msgid "Home"
-msgstr ""
-
 #: lib/defaultlocalnav.php:62 lib/publicgroupnav.php:64
 msgid "Public"
 msgstr ""
@@ -8223,13 +8291,13 @@ msgid "Login with a username and password"
 msgstr ""
 
 #. TRANS: Menu item for registering with the StatusNet site.
-#: lib/logingroupnav.php:72
+#: lib/logingroupnav.php:73
 msgctxt "MENU"
 msgid "Register"
 msgstr ""
 
 #. TRANS: Title for menu item for registering with the StatusNet site.
-#: lib/logingroupnav.php:74
+#: lib/logingroupnav.php:75
 msgid "Sign up for a new account"
 msgstr ""
 
@@ -8594,7 +8662,7 @@ msgstr ""
 msgid "Messages"
 msgstr ""
 
-#: lib/messagelistitem.php:123 lib/noticelist.php:527
+#: lib/messagelistitem.php:123 lib/noticelistitem.php:432
 msgid "from"
 msgstr ""
 
@@ -8602,15 +8670,15 @@ msgstr ""
 msgid "Can't get author for activity."
 msgstr ""
 
-#: lib/microappplugin.php:338
+#: lib/microappplugin.php:339
 msgid "Bookmark not posted to this group."
 msgstr ""
 
-#: lib/microappplugin.php:351
+#: lib/microappplugin.php:352
 msgid "Object not posted to this user."
 msgstr ""
 
-#: lib/microappplugin.php:355
+#: lib/microappplugin.php:356
 msgid "Don't know how to handle this kind of target."
 msgstr ""
 
@@ -8639,89 +8707,93 @@ msgid "What's up, %s?"
 msgstr ""
 
 #. TRANS: Input label in notice form for adding an attachment.
-#: lib/noticeform.php:190
+#: lib/noticeform.php:191
 msgid "Attach"
 msgstr ""
 
 #. TRANS: Title for input field to attach a file to a notice.
-#: lib/noticeform.php:195
+#: lib/noticeform.php:196
 msgid "Attach a file."
 msgstr ""
 
 #. TRANS: Field label to add location to a notice.
-#: lib/noticeform.php:224
+#: lib/noticeform.php:225
 msgid "Share my location"
 msgstr ""
 
 #. TRANS: Text to not share location for a notice in notice form.
-#: lib/noticeform.php:228
+#: lib/noticeform.php:230
 msgid "Do not share my location"
 msgstr ""
 
 #. TRANS: Timeout error text for location retrieval in notice form.
-#: lib/noticeform.php:230
+#: lib/noticeform.php:232
 msgid ""
 "Sorry, retrieving your geo location is taking longer than expected, please "
 "try again later"
 msgstr ""
 
 #. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:457
+#: lib/noticelistitem.php:362
 msgid "N"
 msgstr ""
 
 #. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:459
+#: lib/noticelistitem.php:364
 msgid "S"
 msgstr ""
 
 #. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:461
+#: lib/noticelistitem.php:366
 msgid "E"
 msgstr ""
 
 #. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:463
+#: lib/noticelistitem.php:368
 msgid "W"
 msgstr ""
 
-#: lib/noticelist.php:465
+#: lib/noticelistitem.php:370
 #, php-format
 msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
 msgstr ""
 
-#: lib/noticelist.php:474
+#: lib/noticelistitem.php:379
 msgid "at"
 msgstr ""
 
-#: lib/noticelist.php:523
+#: lib/noticelistitem.php:428
 msgid "web"
 msgstr ""
 
-#: lib/noticelist.php:589
+#: lib/noticelistitem.php:494
 msgid "in context"
 msgstr ""
 
-#: lib/noticelist.php:624
+#: lib/noticelistitem.php:529
 msgid "Repeated by"
 msgstr ""
 
-#: lib/noticelist.php:651
+#: lib/noticelistitem.php:556
 msgid "Reply to this notice"
 msgstr ""
 
-#: lib/noticelist.php:652
+#: lib/noticelistitem.php:557
 msgid "Reply"
 msgstr ""
 
-#: lib/noticelist.php:678
+#: lib/noticelistitem.php:583
 msgid "Delete this notice"
 msgstr ""
 
-#: lib/noticelist.php:696
+#: lib/noticelistitem.php:601
 msgid "Notice repeated"
 msgstr ""
 
+#: lib/noticeplaceholderform.php:54
+msgid "Update your status..."
+msgstr ""
+
 #: lib/nudgeform.php:116
 msgid "Nudge this user"
 msgstr ""
@@ -8795,7 +8867,7 @@ msgctxt "plugin-description"
 msgid "(Plugin descriptions unavailable when disabled.)"
 msgstr ""
 
-#: lib/primarynav.php:57
+#: lib/primarynav.php:57 lib/settingsnav.php:78
 msgid "Settings"
 msgstr ""
 
@@ -9014,47 +9086,47 @@ msgstr ""
 msgid "More..."
 msgstr ""
 
-#: lib/settingsnav.php:65
+#: lib/settingsnav.php:84
 msgid "Change your profile settings"
 msgstr ""
 
-#: lib/settingsnav.php:70
+#: lib/settingsnav.php:89
 msgid "Upload an avatar"
 msgstr ""
 
-#: lib/settingsnav.php:75
+#: lib/settingsnav.php:94
 msgid "Change your password"
 msgstr ""
 
-#: lib/settingsnav.php:80
+#: lib/settingsnav.php:99
 msgid "Change email handling"
 msgstr ""
 
-#: lib/settingsnav.php:85
+#: lib/settingsnav.php:104
 msgid "Design your profile"
 msgstr ""
 
-#: lib/settingsnav.php:89
+#: lib/settingsnav.php:108
 msgid "URL"
 msgstr ""
 
-#: lib/settingsnav.php:90
+#: lib/settingsnav.php:109
 msgid "URL shorteners"
 msgstr ""
 
-#: lib/settingsnav.php:98
+#: lib/settingsnav.php:117
 msgid "Updates by instant messenger (IM)"
 msgstr ""
 
-#: lib/settingsnav.php:105
+#: lib/settingsnav.php:124
 msgid "Updates by SMS"
 msgstr ""
 
-#: lib/settingsnav.php:110
+#: lib/settingsnav.php:129
 msgid "Connections"
 msgstr ""
 
-#: lib/settingsnav.php:111
+#: lib/settingsnav.php:130
 msgid "Authorized connected applications"
 msgstr ""
 
@@ -9109,7 +9181,7 @@ msgid "None"
 msgstr ""
 
 #. TRANS: Server exception displayed if a theme name was invalid.
-#: lib/theme.php:74
+#: lib/theme.php:77
 msgid "Invalid theme name."
 msgstr ""
 
index 54b5404f051d4a15fa43772453939e3f4725709f..8550a1fdd8afb1c287e49c09b07569c3965b83a8 100644 (file)
@@ -13,17 +13,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:31+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:27+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: sv\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -327,9 +327,9 @@ msgid "%s favorites"
 msgstr "%s favoriter"
 
 #. TRANS: Title for Atom feed with a user's memberships. %s is a user nickname.
-#, fuzzy, php-format
+#, php-format
 msgid "%s memberships"
-msgstr "%s gruppmedlemmar"
+msgstr "%s medlemskap"
 
 #. TRANS: Client error displayed when users try to block themselves.
 msgid "You cannot block yourself!"
@@ -948,9 +948,9 @@ msgstr "%1$s uppdateringar med svar på uppdatering från %2$s / %3$s."
 msgid "Repeats of %s"
 msgstr "Upprepningar av %s"
 
-#, fuzzy, php-format
+#, php-format
 msgid "%1$s notices that %2$s / %3$s has repeated."
-msgstr "%s (@%s) lade till din notis som en favorit"
+msgstr "%1$s meddelanden som %2$s / %3$s har upprepat."
 
 #. TRANS: Title for timeline with lastest notices with a given tag.
 #. TRANS: %s is the tag.
@@ -967,9 +967,8 @@ msgid "Updates tagged with %1$s on %2$s!"
 msgstr "Uppdateringar taggade med %1$s på %2$s!"
 
 #. TRANS: Client error displayed trying to add a notice to another user's timeline.
-#, fuzzy
 msgid "Only the user can add to their own timeline."
-msgstr "Bara användaren kan läsa sina egna brevlådor."
+msgstr "Bara användaren kan lägga till sin egen tidslinje."
 
 #. TRANS: Client error displayed when using another format than AtomPub.
 msgid "Only accept AtomPub for Atom feeds."
@@ -1047,7 +1046,7 @@ msgstr "Hitta innehåll i notiser"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Okänd"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1079,28 +1078,24 @@ msgid "Can only handle join activities."
 msgstr "Hitta innehåll i notiser"
 
 #. TRANS: Client exception thrown when trying to subscribe to a non-existing group.
-#, fuzzy
 msgid "Unknown group."
-msgstr "Okänd"
+msgstr "Okänd grupp."
 
 #. TRANS: Client exception thrown when trying to subscribe to an already subscribed group.
-#, fuzzy
 msgid "Already a member."
-msgstr "Alla medlemmar"
+msgstr "Redan medlem."
 
 #. TRANS: Client exception thrown when trying to subscribe to group while blocked from that group.
 msgid "Blocked by admin."
-msgstr ""
+msgstr "Blockerad av admin."
 
 #. TRANS: Client exception thrown when referencing a non-existing favorite.
-#, fuzzy
 msgid "No such favorite."
-msgstr "Ingen sådan fil."
+msgstr "Ingen sådan favorit."
 
 #. TRANS: Client exception thrown when trying to remove a favorite notice of another user.
-#, fuzzy
 msgid "Cannot delete someone else's favorite."
-msgstr "Kunde inte ta bort favoriten."
+msgstr "Kan inte ta bort någon annans favoriter."
 
 #. TRANS: Client exception thrown when referencing a non-existing group.
 #. TRANS: Client error displayed when requesting a list of blocked users for a non-local group.
@@ -1133,20 +1128,18 @@ msgid "No such group."
 msgstr "Ingen sådan grupp."
 
 #. TRANS: Client exception thrown when trying to show membership of a non-subscribed group
-#, fuzzy
 msgid "Not a member."
-msgstr "Alla medlemmar"
+msgstr "Inte medlem."
 
 #. TRANS: Client exception thrown when deleting someone else's membership.
-#, fuzzy
 msgid "Cannot delete someone else's membership."
-msgstr "Kunde inte spara prenumeration."
+msgstr "Kan inte ta bort någon annans medlemskap."
 
 #. TRANS: Client exception thrown when trying to display a subscription for a non-existing profile ID.
 #. TRANS: %d is the non-existing profile ID number.
-#, fuzzy, php-format
+#, php-format
 msgid "No such profile id: %d."
-msgstr "Ingen sådan profil."
+msgstr "Inget sådant profil-ID: %d."
 
 #. TRANS: Client exception thrown when trying to display a subscription for a non-subscribed profile ID.
 #. TRANS: %1$d is the non-existing subscriber ID number, $2$d is the ID of the profile that was not subscribed to.
@@ -1481,24 +1474,22 @@ msgstr "Du kan inte ta bort användare."
 
 #. TRANS: Confirmation text for user deletion. The user has to type this exactly the same, including punctuation.
 msgid "I am sure."
-msgstr ""
+msgstr "Jag är säker."
 
 #. TRANS: Notification for user about the text that must be input to be able to delete a user account.
 #. TRANS: %s is the text that needs to be input.
 #, php-format
 msgid "You must write \"%s\" exactly in the box."
-msgstr ""
+msgstr "Du måste skriva precis \"%s\" i rutan."
 
 #. TRANS: Confirmation that a user account has been deleted.
-#, fuzzy
 msgid "Account deleted."
-msgstr "Avatar borttagen."
+msgstr "Konto borttaget."
 
 #. TRANS: Page title for page on which a user account can be deleted.
 #. TRANS: Option in profile settings to delete the account of the currently logged in user.
-#, fuzzy
 msgid "Delete account"
-msgstr "Skapa ett konto"
+msgstr "Ta bort konto"
 
 #. TRANS: Form text for user deletion form.
 msgid ""
@@ -1633,6 +1624,7 @@ msgstr "Ta bort denna grupp"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -1796,7 +1788,6 @@ msgid "Tile background image"
 msgstr "Upprepa bakgrundsbild"
 
 #. TRANS: Fieldset legend for theme colors.
-#, fuzzy
 msgid "Change colors"
 msgstr "Byt färger"
 
@@ -3142,6 +3133,10 @@ msgstr "Webbadress till källa krävs."
 msgid "Could not create application."
 msgstr "Kunde inte skapa applikation."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Ogiltig storlek."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Ny grupp"
@@ -3425,52 +3420,77 @@ msgstr "Utkorg för %s"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "Detta är din utkorg som innehåller privata meddelanden du har skickat."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Byt lösenord"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Byt ditt lösenord."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Byte av lösenord"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Gammalt lösenord"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Nytt lösenord"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "Minst 6 tecken"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Bekräfta"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "Samma som lösenordet ovan"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Ändra"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Lösenordet måste vara minst 6 tecken."
 
 msgid "Passwords don't match."
 msgstr "Lösenorden matchar inte."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Felaktigt gammalt lösenord"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Fel vid sparande av användare; ogiltig."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Kan inte spara nytt lösenord."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Lösenord sparat."
 
@@ -3520,6 +3540,7 @@ msgstr "Webbplats"
 msgid "Server"
 msgstr "Server"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Värdnamn för webbplatsens server."
 
@@ -3527,6 +3548,7 @@ msgstr "Värdnamn för webbplatsens server."
 msgid "Path"
 msgstr "Sökväg"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Sökväg till webbplats."
 
@@ -3534,6 +3556,7 @@ msgstr "Sökväg till webbplats."
 msgid "Locale directory"
 msgstr "Katalog med lokaliseringsfiler (locales)"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Katalogsökväg till lokaliseringfiler (locales)."
 
@@ -3541,10 +3564,15 @@ msgstr "Katalogsökväg till lokaliseringfiler (locales)."
 msgid "Fancy URLs"
 msgstr "Utsmyckade URL:er"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 "Skall utsmyckade URL:er användas (mer läsbara och lättare att komma ihåg)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Teman"
 
@@ -3667,6 +3695,8 @@ msgid "Directory where attachments are located."
 msgstr "Katalogsökväg till lokaliseringfiler (locales)"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3711,10 +3741,14 @@ msgstr ""
 msgid "People search"
 msgstr "Personsökning"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Inte en giltig persontagg: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Användare som taggat sig själv med %1$s - sida %2$d"
@@ -3724,15 +3758,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Denna åtgärd accepterar endast POST-begäran."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Du kan inte ta bort användare."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Ingen sådan sida"
@@ -3743,7 +3781,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Insticksmoduler"
 
@@ -3759,15 +3798,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Standardspråk"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Ogiltigt notisinnehåll."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Licensen för notiser ‘%1$s’ är inte förenlig webbplatslicensen ‘%2$s’."
 
 #. TRANS: Page title for profile settings.
@@ -3922,29 +3965,39 @@ msgstr "Inställningar sparade."
 msgid "Restore account"
 msgstr "Skapa ett konto"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Bortom sidbegränsningen (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Kunde inte hämta publik ström."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Publik tidslinje, sida %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Publik tidslinje"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Publikt flöde av ström (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Publikt flöde av ström (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Publikt flöde av ström (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3953,9 +4006,11 @@ msgstr ""
 "Detta är den publika tidslinjen för %%site.name%% men ingen har postat något "
 "än."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Bli först att posta!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3963,6 +4018,8 @@ msgstr ""
 "Varför inte [registrera ett konto](%%action.register%%) och bli först att "
 "posta!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3975,6 +4032,8 @@ msgstr ""
 "net/). [Gå med nu](%%action.register%%) för att dela notiser om dig själv "
 "med vänner, familj och kollegor! ([Läs mer](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5695,6 +5754,10 @@ msgstr ""
 "Du bör ha fått en kopia av GNU Affero General Public License tillsammans med "
 "detta program. Om inte, se %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Insticksmoduler"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Namn"
@@ -6196,6 +6259,9 @@ msgstr "saveSetting() är inte implementerat."
 msgid "Unable to delete design setting."
 msgstr "Kunde inte ta bort utseendeinställning."
 
+msgid "Home"
+msgstr "Hemsida"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Grundläggande webbplatskonfiguration"
@@ -6823,9 +6889,6 @@ msgstr "Gå till installeraren."
 msgid "Database error"
 msgstr "Databasfel"
 
-msgid "Home"
-msgstr "Hemsida"
-
 msgid "Public"
 msgstr "Publikt"
 
@@ -7628,7 +7691,6 @@ msgstr "Skicka en notis"
 msgid "What's up, %s?"
 msgstr "Vad är på gång, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Bifoga"
 
@@ -7697,6 +7759,9 @@ msgstr "Ta bort denna notis"
 msgid "Notice repeated"
 msgstr "Notis upprepad"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "Knuffa denna användare"
 
@@ -8204,11 +8269,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s tidslinje"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Hitta personer på denna webbplats"
index a79be5da684f4ca583d09cc5247ccf254da226df..a9718f4c0153f9cb70039e335e198c6ded59c49b 100644 (file)
@@ -10,17 +10,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:32+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:29+0000\n"
 "Language-Team: Telugu <http://translatewiki.net/wiki/Portal:te>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: te\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -482,7 +482,7 @@ msgstr "పూర్తి పేరు చాలా పెద్దగా ఉ
 #. TRANS: %d is the maximum number of characters for the description.
 #. TRANS: Group create form validation error.
 #. TRANS: %d is the maximum number of allowed characters.
-#, fuzzy, php-format
+#, php-format
 msgid "Description is too long (maximum %d character)."
 msgid_plural "Description is too long (maximum %d characters)."
 msgstr[0] "వివరణ చాలా పెద్దగా ఉంది (%d అక్షరాలు గరిష్ఠం)."
@@ -493,7 +493,6 @@ msgstr[1] "వివరణ చాలా పెద్దగా ఉంది (%d 
 #. TRANS: Group edit form validation error.
 #. TRANS: Group create form validation error.
 #. TRANS: Validation error in form for profile settings.
-#, fuzzy
 msgid "Location is too long (maximum 255 characters)."
 msgstr "ప్రాంతం పేరు మరీ పెద్దగా ఉంది (255 అక్షరాలు గరిష్ఠం)."
 
@@ -505,7 +504,7 @@ msgstr "ప్రాంతం పేరు మరీ పెద్దగా ఉ
 #. TRANS: %d is the maximum number of allowed aliases.
 #. TRANS: Group create form validation error.
 #. TRANS: %d is the maximum number of allowed aliases.
-#, fuzzy, php-format
+#, php-format
 msgid "Too many aliases! Maximum %d allowed."
 msgid_plural "Too many aliases! Maximum %d allowed."
 msgstr[0] "చాలా మారుపేర్లు! %d గరిష్ఠం."
@@ -1030,25 +1029,24 @@ msgstr "సైటు గమనికని భద్రపరచు"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "తెలియని చర్య"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
-#, fuzzy
 msgid "Already a favorite."
-msgstr "à°\87à°·à±\8dà°\9fà°¾à°\82శాలà°\95à±\81 à°\9aà±\87à°°à±\8dà°\9aà±\81"
+msgstr "à°\85ది à°\87à°ªà±\8dà°ªà°\9fà°¿à°\95à±\87 à°\87à°·à±\8dà°\9fà°¾à°\82à°¶à°\82."
 
 #. TRANS: Title for group membership feed.
 #. TRANS: %s is a username.
-#, fuzzy, php-format
+#, php-format
 msgid "%s group memberships"
-msgstr "%s à°\97à±\81à°\82à°ªà±\81 à°¸à°­à±\8dà°¯à±\81లు"
+msgstr "%s à°\97à±\81à°\82à°ªà±\81 à°¸à°­à±\8dయతà±\8dవాలు"
 
 #. TRANS: Subtitle for group membership feed.
 #. TRANS: %1$s is a username, %2$s is the StatusNet sitename.
-#, fuzzy, php-format
+#, php-format
 msgid "Groups %1$s is a member of on %2$s"
-msgstr "%s సభ్యులుగా ఉన్న గుంపులు"
+msgstr "%2$sలో %1$s సభ్యులుగా ఉన్న గుంపులు"
 
 #. TRANS: Client exception thrown when trying subscribe someone else to a group.
 #, fuzzy
@@ -1062,9 +1060,8 @@ msgid "Can only handle join activities."
 msgstr "సైటు గమనికని భద్రపరచు"
 
 #. TRANS: Client exception thrown when trying to subscribe to a non-existing group.
-#, fuzzy
 msgid "Unknown group."
-msgstr "à°¤à±\86లియని à°\9aà°°à±\8dà°¯"
+msgstr "à°\97à±\81à°°à±\8dà°¤à±\81à°¤à±\86లియని à°\97à±\81à°\82à°ªà±\81."
 
 #. TRANS: Client exception thrown when trying to subscribe to an already subscribed group.
 msgid "Already a member."
@@ -1072,17 +1069,15 @@ msgstr "ఇప్పటికే సభ్యులు."
 
 #. TRANS: Client exception thrown when trying to subscribe to group while blocked from that group.
 msgid "Blocked by admin."
-msgstr ""
+msgstr "నిర్వాహకులు నిరోధించారు."
 
 #. TRANS: Client exception thrown when referencing a non-existing favorite.
-#, fuzzy
 msgid "No such favorite."
-msgstr "à°\85à°\9fà±\81à°µà°\82à°\9fà°¿ à°«à±\88à°²à±\81 లేదు."
+msgstr "à°\85à°\9fà±\81à°µà°\82à°\9fà°¿ à°\87à°·à±\8dà°\9fà°¾à°\82à°¶à°\82 లేదు."
 
 #. TRANS: Client exception thrown when trying to remove a favorite notice of another user.
-#, fuzzy
 msgid "Cannot delete someone else's favorite."
-msgstr "à°\87à°·à±\8dà°\9fà°¾à°\82శానà±\8dని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°²à±\87à°\95à°ªà±\8bయాà°\82."
+msgstr "మరà±\8aà°\95à°°à°¿ à°\87à°·à±\8dà°\9fà°¾à°\82శానà±\8dని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°²à±\87à°°à±\81."
 
 #. TRANS: Client exception thrown when referencing a non-existing group.
 #. TRANS: Client error displayed when requesting a list of blocked users for a non-local group.
@@ -1142,9 +1137,9 @@ msgstr "కొత్త చందాని చేర్చలేకపోయా
 
 #. TRANS: Subtitle for Atom subscription feed.
 #. TRANS: %1$s is a user nickname, %s$s is the StatusNet sitename.
-#, fuzzy, php-format
+#, php-format
 msgid "People %1$s has subscribed to on %2$s"
-msgstr "%sకి చందాచేరిన వ్యక్తులు"
+msgstr "%2$sలో %1$s చందాచేరిన వ్యక్తులు"
 
 #. TRANS: Client error displayed when not using the follow verb.
 msgid "Can only handle Follow activities."
@@ -1333,9 +1328,8 @@ msgid "No"
 msgstr "కాదు"
 
 #. TRANS: Submit button title for 'No' when blocking a user.
-#, fuzzy
 msgid "Do not block this user."
-msgstr "à°\88 à°µà°¾à°¡à±\81à°\95రిని à°¨à°¿à°°à±\8bధిà°\82à°\9aà°\95à±\81"
+msgstr "à°\88 à°µà°¾à°¡à±\81à°\95రిని à°¨à°¿à°°à±\8bధిà°\82à°\9aవదà±\8dà°¦à±\81."
 
 #. TRANS: Button label on the user block form.
 #. TRANS: Button label on the delete application form.
@@ -1474,9 +1468,8 @@ msgstr "ఖాతాని తొలగించాం."
 
 #. TRANS: Page title for page on which a user account can be deleted.
 #. TRANS: Option in profile settings to delete the account of the currently logged in user.
-#, fuzzy
 msgid "Delete account"
-msgstr "ఖాతాని సృష్టించుకోండి"
+msgstr "ఖాతా తొలగింపు"
 
 #. TRANS: Form text for user deletion form.
 msgid ""
@@ -1539,14 +1532,12 @@ msgstr ""
 "వాడుకరుల అనుసంధానాలతో సహా, డాటాబేసు నుండి తొలగిస్తుంది."
 
 #. TRANS: Submit button title for 'No' when deleting an application.
-#, fuzzy
 msgid "Do not delete this application."
-msgstr "à°\88 à°\89à°ªà°\95రణానà±\8dని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°\95à±\81"
+msgstr "à°\88 à°\89à°ªà°\95రణానà±\8dని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aవదà±\8dà°¦à±\81."
 
 #. TRANS: Submit button title for 'Yes' when deleting an application.
-#, fuzzy
 msgid "Delete this application."
-msgstr "ఈ ఉపకరణాన్ని తొలగించు"
+msgstr "ఈ ఉపకరణాన్ని తొలగించు."
 
 #. TRANS: Client error when trying to delete group while not logged in.
 msgid "You must be logged in to delete a group."
@@ -1590,14 +1581,12 @@ msgstr ""
 "వెనక్కి తేలేకుండా."
 
 #. TRANS: Submit button title for 'No' when deleting a group.
-#, fuzzy
 msgid "Do not delete this group."
-msgstr "à°\88 à°\97à±\81à°\82à°ªà±\81à°¨à±\81 à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°\95à±\81"
+msgstr "à°\88 à°\97à±\81à°\82à°ªà±\81à°¨à±\81 à°¤à±\8aà°²à°\97à°¿à°\82à°\9aవదà±\8dà°¦à±\81."
 
 #. TRANS: Submit button title for 'Yes' when deleting a group.
-#, fuzzy
 msgid "Delete this group."
-msgstr "ఈ గుంపుని తొలగించు"
+msgstr "ఈ గుంపుని తొలగించు."
 
 #. TRANS: Error message displayed trying to delete a notice while not logged in.
 #. TRANS: Client error displayed when trying to remove a favorite while not logged in.
@@ -1609,6 +1598,7 @@ msgstr "ఈ గుంపుని తొలగించు"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -1632,14 +1622,12 @@ msgid "Are you sure you want to delete this notice?"
 msgstr "మీరు నిజంగానే ఈ నోటీసుని తొలగించాలనుకుంటున్నారా?"
 
 #. TRANS: Submit button title for 'No' when deleting a notice.
-#, fuzzy
 msgid "Do not delete this notice."
-msgstr "à°\88 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°\95à±\81"
+msgstr "à°\88 à°¨à±\8bà°\9fà±\80à°¸à±\81ని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aవదà±\8dà°¦à±\81."
 
 #. TRANS: Submit button title for 'Yes' when deleting a notice.
-#, fuzzy
 msgid "Delete this notice."
-msgstr "ఈ నోటీసుని తొలగించు"
+msgstr "ఈ నోటీసుని తొలగించు."
 
 #. TRANS: Client error displayed when trying to delete a user without having the right to delete users.
 msgid "You cannot delete users."
@@ -1650,10 +1638,9 @@ msgid "You can only delete local users."
 msgstr "మీరు స్థానిక వాడుకరులను మాత్రమే తొలగించగలరు."
 
 #. TRANS: Title of delete user page.
-#, fuzzy
 msgctxt "TITLE"
 msgid "Delete user"
-msgstr "వాడుకరిని తొలగించు"
+msgstr "వాడుకరి తొలగింపు"
 
 #. TRANS: Fieldset legend on delete user page.
 msgid "Delete user"
@@ -1722,9 +1709,8 @@ msgid "Theme for the site."
 msgstr "సైటుకి అలంకారం."
 
 #. TRANS: Field label for uploading a cutom theme.
-#, fuzzy
 msgid "Custom theme"
-msgstr "à°¸à±\88à°\9fà±\81 అలంకారం"
+msgstr "à°\85భిమత అలంకారం"
 
 #. TRANS: Form instructions for uploading a cutom StatusNet theme.
 msgid "You can upload a custom StatusNet theme as a .ZIP archive."
@@ -1831,9 +1817,9 @@ msgstr "ఇష్టాంశాలకు చేర్చు"
 
 #. TRANS: Client exception thrown when requesting a document from the documentation that does not exist.
 #. TRANS: %s is the non-existing document.
-#, fuzzy, php-format
+#, php-format
 msgid "No such document \"%s\"."
-msgstr "అటువంటి జోడింపు లేదు."
+msgstr "\"%s\" అనే పత్రం లేదు."
 
 #. TRANS: Title for "Edit application" form.
 #. TRANS: Form legend.
@@ -1859,7 +1845,6 @@ msgstr "పేరు తప్పనిసరి."
 
 #. TRANS: Validation error shown when providing too long a name in the "Edit application" form.
 #. TRANS: Validation error shown when providing too long a name in the "New application" form.
-#, fuzzy
 msgid "Name is too long (maximum 255 characters)."
 msgstr "పేరు చాలా పెద్దగా ఉంది (గరిష్ఠంగా 255 అక్షరాలు)."
 
@@ -1889,7 +1874,6 @@ msgid "Organization is required."
 msgstr "సంస్థ తప్పనిసరి."
 
 #. TRANS: Validation error shown when providing too long an arganisation name in the "Edit application" form.
-#, fuzzy
 msgid "Organization is too long (maximum 255 characters)."
 msgstr "సంస్థ పేరు మరీ పెద్దగా ఉంది (255 అక్షరాలు గరిష్ఠం)."
 
@@ -2344,9 +2328,8 @@ msgstr ""
 "తొలగిస్తాం, ఇక భవిష్యత్తులో వారు గుంపులో ప్రచురించలేరు, మరియు గుంపుకి చందాచేరలేరు."
 
 #. TRANS: Submit button title for 'No' when blocking a user from a group.
-#, fuzzy
 msgid "Do not block this user from this group."
-msgstr "à°\88 à°µà°¾à°¡à±\81à°\95రిని à°\88 à°\97à±\81à°\82à°ªà±\81 à°¨à±\81à°\82à°¡à°¿ à°¨à°¿à°°à±\8bధిà°\82à°\9aà°\95à±\81"
+msgstr "à°\88 à°µà°¾à°¡à±\81à°\95రిని à°\88 à°\97à±\81à°\82à°ªà±\81 à°¨à±\81à°\82à°¡à°¿ à°¨à°¿à°°à±\8bధిà°\82à°\9aవదà±\8dà°¦à±\81."
 
 #. TRANS: Submit button title for 'Yes' when blocking a user from a group.
 msgid "Block this user from this group."
@@ -2481,7 +2464,7 @@ msgstr "గుంపులు, పుట %d"
 #. TRANS: Page notice of group list. %%%%site.name%%%% is the StatusNet site name,
 #. TRANS: %%%%action.groupsearch%%%% and %%%%action.newgroup%%%% are URLs. Do not change them.
 #. TRANS: This message contains Markdown links in the form [link text](link).
-#, fuzzy, php-format
+#, php-format
 msgid ""
 "%%%%site.name%%%% groups let you find and talk with people of similar "
 "interests. After you join a group you can send messages to all other members "
@@ -2491,8 +2474,8 @@ msgid ""
 msgstr ""
 "ఒకే రకమైన ఆసక్తులు ఉన్న వ్యక్తులు కలుసుకోడానికి మరియు మాట్లాడుకోడానికి %%%%site.name%%%% "
 "గుంపులు వీలుకల్పిస్తాయి. ఒక గుంపులో చేరిన తర్వాత మీరు \"!groupname\" అన్న సంకేతం ద్వారా ఆ "
-"à°\97à±\81à°\82à°ªà±\81 à°²à±\8bని à°¸à°­à±\8dà°¯à±\81à°²à°\82దరిà°\95à±\80 à°¸à°\82à°¦à±\87శాలని à°ªà°\82పిà°\82à°\9aà°µà°\9aà±\8dà°\9aà±\81. à°®à±\80à°\95à±\81 à°¨à°\9aà±\8dà°\9aà°¿à°¨ à°\97à±\81à°\82à°ªà±\81 à°\95నబడలà±\87దా? [దాని à°\95à±\8bà°¸à°\82 à°µà±\86à°¤à°\95à°\82à°¡à°¿](%%"
-"%%action.groupsearch%%%%) లేదా [మీరే కొత్తది సృష్టించండి!](%%%%action.newgroup%%%%)"
+"à°\97à±\81à°\82à°ªà±\81 à°²à±\8bని à°¸à°­à±\8dà°¯à±\81à°²à°\82దరిà°\95à±\80 à°¸à°\82à°¦à±\87శాలనà±\81 à°ªà°\82పిà°\82à°\9aà°µà°\9aà±\8dà°\9aà±\81. à°®à±\80à°\95à±\81 à°¨à°\9aà±\8dà°\9aà°¿à°¨ à°\97à±\81à°\82à°ªà±\81 à°\95నబడలà±\87దా? [దాని à°\95à±\8bà°¸à°\82 à°µà±\86à°¤à°\95à°\82à°¡à°¿](%"
+"%%%action.groupsearch%%%%) లేదా [మీరే కొత్తది సృష్టించండి!](%%%%action.newgroup%%%%)"
 
 #. TRANS: Link to create a new group on the group list page.
 msgid "Create a new group"
@@ -2940,9 +2923,8 @@ msgid "Type"
 msgstr "రకం"
 
 #. TRANS: Dropdown field instructions in the license admin panel.
-#, fuzzy
 msgid "Select a license."
-msgstr "లైసెన్సును ఎంచుకోండి"
+msgstr "లైసెన్సును ఎంచుకోండి."
 
 #. TRANS: Form legend in the license admin panel.
 msgid "License details"
@@ -3016,7 +2998,6 @@ msgid "Automatically login in the future; not for shared computers!"
 msgstr "భవిష్యత్తులో ఆటోమెటిగ్గా లోనికి ప్రవేశించు; బయటి కంప్యూర్ల కొరకు కాదు!"
 
 #. TRANS: Button text for log in on login page.
-#, fuzzy
 msgctxt "BUTTON"
 msgid "Login"
 msgstr "ప్రవేశించండి"
@@ -3092,14 +3073,17 @@ msgstr "పేరు తప్పనిసరి."
 msgid "Could not create application."
 msgstr "ఉపకరణాన్ని సృష్టించలేకపోయాం."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "తప్పుడు పరిమాణం."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "కొత్త గుంపు"
 
 #. TRANS: Client exception thrown when a user tries to create a group while banned.
-#, fuzzy
 msgid "You are not allowed to create groups on this site."
-msgstr "à°\88 à°\97à±\81à°\82à°ªà±\81à°¨à±\81 à°¤à±\8aà°²à°\97ించడానికి మీకు అనుమతి లేదు."
+msgstr "à°\88 à°¸à±\88à°\9fà±\81à°²à±\8b à°\97à±\81à°\82à°ªà±\81లనà±\81 à°¸à±\83à°·à±\8dà°\9fించడానికి మీకు అనుమతి లేదు."
 
 #. TRANS: Form instructions for group create form.
 msgid "Use this form to create a new group."
@@ -3374,51 +3358,74 @@ msgstr "%sకి వచ్చినవి"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "ఇవి మీరు పంపివున్న అంతరంగిక సందేశాలు."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "సంకేతపదం మార్చుకోండి"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "మీ సంకేతపదం మార్చుకోండి."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "సంకేతపదం మార్పు"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "పాత సంకేతపదం"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "కొత్త సంకేతపదం"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 లేదా అంతకంటే ఎక్కువ అక్షరాలు."
 
-#. TRANS: Ttile for field label for password reset form where the password has to be typed again.
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
 #, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "నిర్థారించు"
+
+#. TRANS: Field title on page where to change password.
+#. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
-msgstr "పై సంకేతపదం వలెనే"
+msgstr "పై సంకేతపదం వలెనే."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "మార్చు"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "సంకేతపదం తప్పనిసరిగా 6 లేదా అంతకంటే ఎక్కువ అక్షరాలుండాలి."
 
 msgid "Passwords don't match."
 msgstr "సంకేతపదాలు సరిపోలలేదు."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "పాత సంకేతపదం తప్పు"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "వాడుకరిని భద్రపరచడంలో పొరపాటు: సరికాదు."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
-#, fuzzy
 msgid "Cannot save new password."
-msgstr "à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°\95à±\87తపదానà±\8dని à°­à°¦à±\8dరపరà°\9aà°²à±\87à°®à±\81."
+msgstr "à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°\95à±\87తపదానà±\8dని à°­à°¦à±\8dరపరà°\9aà°²à±\87à°\95à±\81à°¨à±\8dనాà°\82."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "సంకేతపదం భద్రమయ్యింది."
 
@@ -3469,6 +3476,7 @@ msgstr "సైటు"
 msgid "Server"
 msgstr "సేవకి"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3476,6 +3484,7 @@ msgstr ""
 msgid "Path"
 msgstr "త్రోవ"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "సైటు అలంకారం"
@@ -3485,6 +3494,7 @@ msgstr "సైటు అలంకారం"
 msgid "Locale directory"
 msgstr "అలంకార సంచయం"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3492,9 +3502,13 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "అలంకారం"
 
@@ -3618,6 +3632,7 @@ msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
 #, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSLని ఉపయోగించు"
 
@@ -3664,10 +3679,14 @@ msgstr ""
 msgid "People search"
 msgstr "వ్యక్తుల అన్వేషణ"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, fuzzy, php-format
 msgid "Not a valid people tag: %s."
 msgstr "సరైన ఈమెయిల్ చిరునామా కాదు:"
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "%2$sలో %1$s అనే ట్యాగుతో ఉన్న నోటీసులు!"
@@ -3677,15 +3696,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "మీరు వాడుకరులని తొలగించలేరు."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "అటువంటి పేజీ లేదు."
@@ -3696,7 +3719,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "ప్లగిన్లు"
 
@@ -3712,15 +3736,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "అప్రమేయ భాష"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "తప్పుడు దస్త్రపుపేరు.."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3839,9 +3867,9 @@ msgstr "భాష మరీ పెద్దగా ఉంది (50 అక్ష
 
 #. TRANS: Validation error in form for profile settings.
 #. TRANS: %s is an invalid tag.
-#, fuzzy, php-format
+#, php-format
 msgid "Invalid tag: \"%s\"."
-msgstr "తపà±\8dà°ªà±\81à°¡à±\81 à°®à°¾à°°à±\81à°ªà±\87à°°ు: \"%s\""
+msgstr "à°\9aà±\86à°²à±\8dలని à°\9fà±\8dయాà°\97ు: \"%s\""
 
 #. TRANS: Server error thrown when user profile settings could not be updated to
 #. TRANS: automatically subscribe to any subscriber.
@@ -3869,58 +3897,72 @@ msgstr "అమరికలు భద్రమయ్యాయి."
 msgid "Restore account"
 msgstr "ఖాతాని సృష్టించుకోండి"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 #, fuzzy
 msgid "Could not retrieve public stream."
 msgstr "మారుపేర్లని సృష్టించలేకపోయాం."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "ప్రజా కాలరేఖ, పేజీ %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "ప్రజా కాలరేఖ"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "ప్రజా వాహిని ఫీడు (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "ప్రజా వాహిని ఫీడు (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "ప్రజా వాహిని ఫీడు (ఆటమ్)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, fuzzy, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr "ఇది %s మరియు మిత్రుల కాలరేఖ కానీ ఇంకా ఎవరూ ఏమీ రాయలేదు."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "[ఖాతా నమోదు చేసుకుని](%%action.register%%) మొదటగా వ్రాసేది మీరే ఎందుకు కాకూడదు!"
 
-#, fuzzy, php-format
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
+#, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
 "blogging) service based on the Free Software [StatusNet](http://status.net/) "
 "tool. [Join now](%%action.register%%) to share notices about yourself with "
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
-"**%s** అనేది [స్టేటస్‌నెట్](http://status.net/) అనే స్వేచ్ఛా ఉపకరణ అధారిత [సూక్ష్మ-బ్లాగింగు]"
-"(http://en.wikipedia.org/wiki/Micro-blogging) సేవ అయిన %%%%site.name%%%%లో ఒక "
-"వాడుకరి గుంపు.\n"
-"దీని సభ్యులు వారి జీవితం మరియు ఆసక్తుల గురించి చిన్న సందేశాలని పంచుకుంటారు. ఈ గుంపు మరియు ఇంకా "
-"చాల వాటిలో భాగస్తులవ్వడానికి [ఇప్పుడే చేరండి](%%%%action.register%%%%)! ([మరింత చదవండి](%%%%"
-"doc.help%%%%))"
+"ఇది %%site.name%%, [స్టేటస్‌నెట్](http://status.net/) అనే స్వేచ్ఛా ఉపకరణ అధారిత [సూక్ష్మ-"
+"బ్లాగింగు](http://en.wikipedia.org/wiki/Micro-blogging) సేవ. మీ సంగతులను మీ "
+"మిత్రులతో, కుటుంబంతో మరియు సహోద్యోగులతో పంచుకోడానికి [ఇప్పుడే చేరండి](%%action.register%%)! "
+"([మరింత తెలుసుకోండి](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3931,9 +3973,9 @@ msgstr ""
 "ఆధారపడిన ఒక [మైక్రో-బ్లాగింగు](http://en.wikipedia.org/wiki/Micro-blogging) సేవ."
 
 #. TRANS: Public RSS feed description. %s is the StatusNet site name.
-#, fuzzy, php-format
+#, php-format
 msgid "%s updates from everyone."
-msgstr "అందరి నుండి %s తాజాకరణలు!"
+msgstr "అందరి నుండి %s తాజాకరణలు."
 
 #. TRANS: Title for public tag cloud.
 msgid "Public tag cloud"
@@ -4115,9 +4157,9 @@ msgstr "మీ కొత్త సంకేతపదం భద్రమైంద
 msgid "No id parameter"
 msgstr "జోడింపులు లేవు."
 
-#, fuzzy, php-format
+#, php-format
 msgid "No such file \"%d\""
-msgstr "అటువంటి ఫైలు లేదు."
+msgstr "\"%d\" అనే దస్త్రం లేదు"
 
 msgid "Sorry, only invited people can register."
 msgstr "క్షమించండి, ఆహ్వానితులు మాత్రమే నమోదుకాగలరు."
@@ -4160,9 +4202,8 @@ msgstr "తాజా విశేషాలు, ప్రకటనలు, మర
 msgid "Longer name, preferably your \"real\" name."
 msgstr "పొడుగాటి పేరు, మీ \"అసలు\" పేరైతే మంచిది"
 
-#, fuzzy
 msgid "Where you are, like \"City, State (or Region), Country\"."
-msgstr "మీరు ఎక్కడ నుండి, \"నగరం, రాష్ట్రం (లేదా ప్రాంతం), దేశం\""
+msgstr "మీరు ఎక్కడివారు, \"నగరం, రాష్ట్రం (లేదా ప్రాంతం), దేశం\"."
 
 #, php-format
 msgid ""
@@ -4260,9 +4301,8 @@ msgstr ""
 msgid "Subscribe"
 msgstr "చందాచేరు"
 
-#, fuzzy
 msgid "Invalid profile URL (bad format)."
-msgstr "à°ªà±\8dà°°à±\8aà°ªà±\88à°²à±\8d URL à°¤à°ªà±\8dà°ªà±\81 (à°\9aà±\86à°¡à±\81 à°«à°¾à°°à±\8dమాà°\9fà±\8d)"
+msgstr "à°ªà±\8dà°°à±\8aà°ªà±\88à°²à±\8d URL à°¤à°ªà±\8dà°ªà±\81 (à°\9aà±\86à°²à±\8dలని à°«à°¾à°°à±\8dమాà°\9fà±\8d)."
 
 msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)."
 msgstr ""
@@ -4288,9 +4328,8 @@ msgstr "మీ నోటీసుని మీరే పునరావృతి
 msgid "You already repeated that notice."
 msgstr "మీరు ఇప్పటికే ఆ నోటీసుని పునరావృతించారు."
 
-#, fuzzy
 msgid "Repeated"
-msgstr "à°¸à±\83à°·à±\8dà°\9fà°¿తం"
+msgstr "à°ªà±\81నరావà±\83తం"
 
 msgid "Repeated!"
 msgstr "పునరావృతించారు!"
@@ -4413,9 +4452,8 @@ msgid ""
 msgstr ""
 
 #. TRANS: Title for submit button to confirm upload of a user backup file for account restore.
-#, fuzzy
 msgid "Upload the file"
-msgstr "à°«à±\88à°²à±\81ని à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aà±\81"
+msgstr "à°\88 à°¦à°¸à±\8dà°¤à±\8dరానà±\8dని à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aà°\82à°¡à°¿"
 
 msgid "You cannot revoke user roles on this site."
 msgstr "ఈ సైటులో మీరు వాడుకరలకి పాత్రలను ఇవ్వలేరు."
@@ -5265,9 +5303,8 @@ msgid ""
 "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
 msgstr ""
 
-#, fuzzy
 msgid "URL settings"
-msgstr "IM అమరికలు"
+msgstr "URL అమరికలు"
 
 #. TRANS: Instructions for tab "Other" in user profile settings.
 msgid "Manage various other options."
@@ -5391,9 +5428,8 @@ msgid "Whether to allow users to invite new users."
 msgstr "వాడుకరులను కొత్త వారిని ఆహ్వానించడానికి అనుమతించాలా వద్దా."
 
 #. TRANS: Title for button to save user settings in user admin panel.
-#, fuzzy
 msgid "Save user settings."
-msgstr "వాడుకరి అమరికలను భద్రపరచు"
+msgstr "వాడుకరి అమరికలను భద్రపరచు."
 
 #. TRANS: Page title.
 msgid "Authorize subscription"
@@ -5512,9 +5548,8 @@ msgstr "నేపథ్య చిత్రం మరియు రంగుల 
 msgid "Enjoy your hotdog!"
 msgstr ""
 
-#, fuzzy
 msgid "Design settings"
-msgstr "à°¸à±\88à°\9fà±\81 à°\85మరిà°\95లనà±\81 à°­à°¦à±\8dరపరà°\9aు"
+msgstr "à°°à±\82à°ªà±\81à°°à±\87à°\96à°² à°\85మరిà°\95à°²ు"
 
 msgid "View profile designs"
 msgstr "ఫ్రొఫైలు రూపురేఖలు"
@@ -5590,6 +5625,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "ప్లగిన్లు"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "పేరు"
@@ -5909,18 +5948,16 @@ msgid "Show more"
 msgstr "మరింత చూపించు"
 
 #. TRANS: Inline reply form submit button: submits a reply comment.
-#, fuzzy
 msgctxt "BUTTON"
 msgid "Reply"
 msgstr "స్పందించండి"
 
 #. TRANS: Placeholder text for inline reply form. Clicking in this box will turn it into a mini notice form.
 msgid "Write a reply..."
-msgstr ""
+msgstr "మీ స్పందనని వ్రాయండి..."
 
-#, fuzzy
 msgid "Status"
-msgstr "à°¸à±\8dà°\9fà±\87à°\9fà°¸à±\8dâ\80\8cà°¨à±\86à°\9fà±\8d"
+msgstr "à°¸à±\8dథితి"
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
 #. TRANS: Text between [] is a link description, text between () is the link itself.
@@ -6086,6 +6123,9 @@ msgstr ""
 msgid "Unable to delete design setting."
 msgstr "మీ రూపురేఖల అమరికలని భద్రపరచలేకున్నాం."
 
+msgid "Home"
+msgstr "ముంగిలి"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "ప్రాథమిక సైటు స్వరూపణం"
@@ -6321,14 +6361,12 @@ msgid "Notices where this attachment appears"
 msgstr ""
 
 #. TRANS: Title.
-#, fuzzy
 msgid "Tags for this attachment"
-msgstr "à°\85à°\9fà±\81à°µà°\82à°\9fà°¿ à°\9cà±\8bà°¡à°¿à°\82à°ªà±\81 à°²à±\87à°¦à±\81."
+msgstr "à°\88 à°\9cà±\8bà°¡à°¿à°\82à°ªà±\81à°\95à°¿ à°\9fà±\8dయాà°\97à±\81à°²à±\81"
 
 #. TRANS: Exception thrown when a password change fails.
-#, fuzzy
 msgid "Password changing failed."
-msgstr "à°¸à°\82à°\95à±\87తపదà°\82 à°®à°¾à°°à±\8dà°ªà±\81 à°µà°¿à°«à°²à°®à±\88à°\82ది"
+msgstr "à°¸à°\82à°\95à±\87తపదపà±\81 à°®à°¾à°°à±\8dà°ªà±\81 à°µà°¿à°«à°²à°®à±\88à°\82ది."
 
 #. TRANS: Exception thrown when a password change attempt fails because it is not allowed.
 msgid "Password changing is not allowed."
@@ -6685,9 +6723,6 @@ msgstr "సైటు లోనికి ప్రవేశించండి"
 msgid "Database error"
 msgstr ""
 
-msgid "Home"
-msgstr "ముంగిలి"
-
 msgid "Public"
 msgstr "ప్రజా"
 
@@ -6810,9 +6845,8 @@ msgstr "అన్నీ"
 msgid "Select tag to filter"
 msgstr ""
 
-#, fuzzy
 msgid "Tag"
-msgstr "ట్యాగులు"
+msgstr "ట్యాగు"
 
 msgid "Choose a tag to narrow list"
 msgstr ""
@@ -7476,7 +7510,6 @@ msgstr "సైటు గమనిక"
 msgid "What's up, %s?"
 msgstr "%s, ఏమిటి సంగతులు?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "జోడించు"
 
@@ -7545,6 +7578,9 @@ msgstr "ఈ నోటీసుని తొలగించు"
 msgid "Notice repeated"
 msgstr "నోటీసుని పునరావృతించారు"
 
+msgid "Update your status..."
+msgstr ""
+
 #, fuzzy
 msgid "Nudge this user"
 msgstr "ఈ వాడుకరిని తొలగించు"
@@ -7613,9 +7649,8 @@ msgstr "SMS అమరికలు"
 msgid "Change your personal settings"
 msgstr "ఫ్రొఫైలు అమరికలని మార్చు"
 
-#, fuzzy
 msgid "Site configuration"
-msgstr "వాడà±\81à°\95à°°à°¿ స్వరూపణం"
+msgstr "à°¸à±\88à°\9fà±\81 స్వరూపణం"
 
 msgid "Logout"
 msgstr "నిష్క్రమించు"
@@ -7854,9 +7889,8 @@ msgid "None"
 msgstr "ఏమీలేదు"
 
 #. TRANS: Server exception displayed if a theme name was invalid.
-#, fuzzy
 msgid "Invalid theme name."
-msgstr "తపà±\8dà°ªà±\81à°¡à±\81 à°¦à°¸à±\8dà°¤à±\8dà°°à°ªà±\81à°ªà±\87à°°à±\81.."
+msgstr "à°\9aà±\86à°²à±\8dలని à°\85à°²à°\82à°\95ారపà±\81 à°ªà±\87à°°à±\81."
 
 msgid "This server cannot handle theme uploads without ZIP support."
 msgstr ""
@@ -7864,9 +7898,8 @@ msgstr ""
 msgid "The theme file is missing or the upload failed."
 msgstr ""
 
-#, fuzzy
 msgid "Failed saving theme."
-msgstr "à°\85వతారపà±\81 à°¤à°¾à°\9cà°¾à°\95à°°à°£ విఫలమైంది."
+msgstr "à°\85à°²à°\82à°\95ారానà±\8dని à°­à°¦à±\8dరపరà°\9aà°¡à°\82 విఫలమైంది."
 
 msgid "Invalid theme: bad directory structure."
 msgstr ""
@@ -7981,9 +8014,8 @@ msgctxt "role"
 msgid "Moderator"
 msgstr "సమన్వయకర్త"
 
-#, fuzzy
 msgid "Not allowed to log in."
-msgstr "à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aలేదు."
+msgstr "à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aడానిà°\95à°¿ à°\85à°¨à±\81మతి లేదు."
 
 #. TRANS: Used in notices to indicate when the notice was made compared to now.
 msgid "a few seconds ago"
@@ -8039,14 +8071,13 @@ msgstr "ఒక సంవత్సరం క్రితం"
 
 #. TRANS: Web color exception thrown when a hexadecimal color code does not validate.
 #. TRANS: %s is the provided (invalid) color code.
-#, fuzzy, php-format
+#, php-format
 msgid "%s is not a valid color! Use 3 or 6 hex characters."
 msgstr "%s అనేది సరైన రంగు కాదు! 3 లేదా 6 హెక్స్ అక్షరాలను వాడండి."
 
 #. TRANS: Exception.
-#, fuzzy
 msgid "Invalid XML."
-msgstr "తపà±\8dà°ªà±\81à°¡à±\81 à°ªà°°à°¿à°®à°¾à°£à°\82."
+msgstr "à°\9aà±\86à°²à±\8dలని XML."
 
 #. TRANS: Exception.
 msgid "Invalid XML, missing XRD root."
@@ -8056,11 +8087,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s కాలరేఖ"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "ఈ సైటులోని వ్యక్తులని కనుగొనండి"
index a0278b8b99f379b4bedeff2673e85ee61799c7f1..89e5b94c84d577d4eb7a646990acb9791f2df260 100644 (file)
@@ -12,17 +12,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:33+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:30+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: tr\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1045,7 +1045,7 @@ msgstr "Durum mesajını kaydederken hata oluştu."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
 #, fuzzy
-msgid "Unknown note."
+msgid "Unknown notice."
 msgstr "Böyle bir durum mesajı yok."
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1637,6 +1637,7 @@ msgstr "Bu kullanıcıyı sil"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3115,6 +3116,10 @@ msgstr ""
 msgid "Could not create application."
 msgstr "Eposta onayı silinemedi."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Geçersiz büyüklük."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Yeni grup"
@@ -3393,52 +3398,77 @@ msgstr ""
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr ""
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Parolayı değiştir"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Parolanızı değiştirin."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Parola değiştirildi"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Eski parola"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Yeni parola"
 
+#. TRANS: Field title on page where to change password.
 #, fuzzy
 msgid "6 or more characters."
 msgstr "6 veya daha fazla karakter"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Onayla"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 #, fuzzy
 msgid "Same as password above."
 msgstr "yukarıdaki parolanın aynısı"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Değiştir"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Parola 6 veya daha fazla karakterden oluşmalıdır."
 
 msgid "Passwords don't match."
 msgstr "Parolalar birbirini tutmuyor."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Eski parola yanlış"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Kullanıcıyı kaydetmede hata oluştu; geçersiz."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 #, fuzzy
 msgid "Cannot save new password."
 msgstr "Yeni parola kaydedilemedi."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Parola kaydedildi."
 
@@ -3488,6 +3518,7 @@ msgstr "Site"
 msgid "Server"
 msgstr "Sunucu"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr ""
 
@@ -3495,6 +3526,7 @@ msgstr ""
 msgid "Path"
 msgstr "Yol"
 
+#. TRANS: Field title in Paths admin panel.
 #, fuzzy
 msgid "Site path."
 msgstr "Site yolu"
@@ -3504,6 +3536,7 @@ msgstr "Site yolu"
 msgid "Locale directory"
 msgstr "Avatar güncellendi."
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr ""
 
@@ -3511,9 +3544,12 @@ msgstr ""
 msgid "Fancy URLs"
 msgstr ""
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr ""
 
+#. TRANS: Fieldset legend in Paths admin panel.
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr ""
 
@@ -3638,6 +3674,7 @@ msgid "Directory where attachments are located."
 msgstr ""
 
 #. TRANS: Fieldset legend in Paths admin panel.
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr ""
 
@@ -3685,10 +3722,14 @@ msgstr ""
 msgid "People search"
 msgstr "Kişi Arama"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, fuzzy, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Geçersiz bir eposta adresi."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, fuzzy, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "%s adli kullanicinin durum mesajlari"
@@ -3698,15 +3739,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr ""
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "Kullanıcıları silemezsiniz."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "Böyle bir sayfa yok."
@@ -3717,7 +3762,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Eklentiler"
 
@@ -3733,15 +3779,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Öntanımlı dil"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Geçersiz büyüklük."
 
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
 #, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr ""
 
 #. TRANS: Page title for profile settings.
@@ -3896,47 +3946,61 @@ msgstr "Ayarlar kaydedildi."
 msgid "Restore account"
 msgstr "Bir hesap oluştur"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr ""
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 #, fuzzy
 msgid "Could not retrieve public stream."
 msgstr "Kullanıcı güncellenemedi."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, fuzzy, php-format
 msgid "Public timeline, page %d"
 msgstr "Genel zaman çizgisi"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Genel zaman çizgisi"
 
+#. TRANS: Link description for public timeline feed.
 #, fuzzy
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Genel Durum Akış RSS Beslemesi"
 
+#. TRANS: Link description for public timeline feed.
 #, fuzzy
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Genel Durum Akış RSS Beslemesi"
 
+#. TRANS: Link description for public timeline feed.
 #, fuzzy
 msgid "Public Stream Feed (Atom)"
 msgstr "Genel Durum Akış RSS Beslemesi"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr ""
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr ""
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3945,6 +4009,8 @@ msgid ""
 "friends, family, and colleagues! ([Read more](%%doc.help%%))"
 msgstr ""
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5595,6 +5661,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr ""
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Eklentiler"
+
 #. TRANS: Form input field label for application name.
 #, fuzzy
 msgid "Name"
@@ -6092,6 +6162,9 @@ msgstr "saveSettings() gerçeklenmemiş."
 msgid "Unable to delete design setting."
 msgstr "Dizayn ayarı silinemedi."
 
+msgid "Home"
+msgstr "Başlangıç Sayfası"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Temel site yapılandırması"
@@ -6687,9 +6760,6 @@ msgstr ""
 msgid "Database error"
 msgstr ""
 
-msgid "Home"
-msgstr "Başlangıç Sayfası"
-
 msgid "Public"
 msgstr "Genel"
 
@@ -7399,7 +7469,6 @@ msgstr "Yeni durum mesajı"
 msgid "What's up, %s?"
 msgstr "N'aber %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr ""
 
@@ -7470,6 +7539,9 @@ msgstr "Bu durum mesajını sil"
 msgid "Notice repeated"
 msgstr "Durum mesajları"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr ""
 
@@ -7990,11 +8062,3 @@ msgstr ""
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr ""
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s zaman çizelgesi"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "Siteye giriş"
index 3077a745977ac2e729fe4bfc08a615a3f985143c..f2f3cdd6dfa21db8518da7217143d55d33a27287 100644 (file)
@@ -12,18 +12,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:34+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:31+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: uk\n"
 "X-Message-Group: #out-statusnet-core\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"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1060,7 +1060,8 @@ msgid "Can only fave notices."
 msgstr "Можна лише додавати дописи до обраних."
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "Невідома примітка"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1631,6 +1632,7 @@ msgstr "Видалити спільноту."
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3108,6 +3110,10 @@ msgstr "Потрібна URL-адреса."
 msgid "Could not create application."
 msgstr "Не вдалося створити додаток."
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "Недійсний розмір."
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "Нова спільнота"
@@ -3393,49 +3399,74 @@ msgstr ""
 "Це ваші вихідні повідомлення, тут містяться повідомлення, які ви надіслали "
 "приватно."
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "Змінити пароль"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "Змінити пароль."
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "Пароль замінено"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "Старий пароль"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "Новий пароль"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 або більше знаків."
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "Підтвердити"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "Такий само, як і пароль вище."
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "Змінити"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "Пароль має складатись з 6-ти або більше знаків."
 
 msgid "Passwords don't match."
 msgstr "Паролі не співпадають."
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "Старий пароль є неточним"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "Помилка при збереженні користувача; недійсний."
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "Не вдається зберегти новий пароль."
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "Пароль збережено."
 
@@ -3485,6 +3516,7 @@ msgstr "Сайт"
 msgid "Server"
 msgstr "Сервер"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "Ім’я хосту сервера на якому знаходиться сайт."
 
@@ -3492,6 +3524,7 @@ msgstr "Ім’я хосту сервера на якому знаходитьс
 msgid "Path"
 msgstr "Шлях"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "Шлях до сайту."
 
@@ -3499,6 +3532,7 @@ msgstr "Шлях до сайту."
 msgid "Locale directory"
 msgstr "Директорія локалі"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "Шлях до директорії локалей."
 
@@ -3506,9 +3540,14 @@ msgstr "Шлях до директорії локалей."
 msgid "Fancy URLs"
 msgstr "Надзвичайні URL-адреси"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "Використовувати надзвичайні (найбільш пам’ятні і визначні) URL-адреси?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "Тема"
 
@@ -3621,6 +3660,8 @@ msgid "Directory where attachments are located."
 msgstr "Директорія, в якій знаходяться вкладення."
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL-шифрування"
 
@@ -3666,10 +3707,14 @@ msgstr ""
 msgid "People search"
 msgstr "Пошук людей"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "Це недійсний особистий теґ: %s."
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "Користувачі з особистим теґом «%1$s» — сторінка %2$d"
@@ -3679,14 +3724,18 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr "Вимкнений"
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "Ця дія приймає лише запити POST."
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 msgid "You cannot administer plugins."
 msgstr "Ви не можете керувати додатками."
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 msgid "No such plugin."
 msgstr "Немає такого додатку."
 
@@ -3696,7 +3745,8 @@ msgid "Enabled"
 msgstr "Увімкнений"
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "Додатки"
 
@@ -3714,16 +3764,20 @@ msgstr ""
 msgid "Default plugins"
 msgstr "Додатки за замовчуванням"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 "Всі додатки за замовчуванням було вимкнено у файлі конфігурації даного сайту."
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "Недійсний зміст допису."
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "Ліцензія допису «%1$s» є несумісною з ліцензією сайту «%2$s»."
 
 #. TRANS: Page title for profile settings.
@@ -3869,29 +3923,39 @@ msgstr "Налаштування збережено."
 msgid "Restore account"
 msgstr "Відновити акаунт"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "Перевищено ліміт сторінки (%s)."
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "Не вдається відновити загальну стрічку."
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "Загальна стрічка, сторінка %d"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "Загальна стрічка"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "Стрічка публічних дописів (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "Стрічка публічних дописів (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "Стрічка публічних дописів (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
@@ -3899,9 +3963,11 @@ msgid ""
 msgstr ""
 "Це публічна стрічка дописів сайту %%site.name%%, але вона поки що порожня."
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "Станьте першим! Напишіть щось!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
@@ -3909,6 +3975,8 @@ msgstr ""
 "Чому б не [зареєструватись](%%action.register%%) і не зробити свій перший "
 "допис!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3922,6 +3990,8 @@ msgstr ""
 "розділити своє життя з друзями, родиною і колегами! ([Дізнатися більше](%%"
 "doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5610,6 +5680,10 @@ msgstr ""
 "Разом з програмою ви маєте отримати копію ліцензійних умов GNU Affero "
 "General Public License. Якщо ні, перейдіть на %s."
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "Додатки"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "Ім’я"
@@ -5945,9 +6019,8 @@ msgstr "Відповісти"
 msgid "Write a reply..."
 msgstr "Пише відповідь..."
 
-#, fuzzy
 msgid "Status"
-msgstr "StatusNet"
+msgstr "Статус"
 
 #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
 #. TRANS: Text between [] is a link description, text between () is the link itself.
@@ -6112,6 +6185,9 @@ msgstr "saveSettings() не виконано."
 msgid "Unable to delete design setting."
 msgstr "Немає можливості видалити налаштування дизайну."
 
+msgid "Home"
+msgstr "Веб-сторінка"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "Основна конфігурація сайту"
@@ -6743,9 +6819,6 @@ msgstr "Іти до файлу інсталяції."
 msgid "Database error"
 msgstr "Помилка бази даних"
 
-msgid "Home"
-msgstr "Веб-сторінка"
-
 msgid "Public"
 msgstr "Загал"
 
@@ -7525,18 +7598,16 @@ msgid "from"
 msgstr "з"
 
 msgid "Can't get author for activity."
-msgstr ""
+msgstr "Не вдається отримати автора для діяльності."
 
-#, fuzzy
 msgid "Bookmark not posted to this group."
-msgstr "Ð\92ам Ð½Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ Ð²Ð¸Ð´Ð°Ð»Ñ\8fÑ\82и Ñ\86Ñ\8e Ñ\81пÑ\96лÑ\8cноÑ\82Ñ\83."
+msgstr "Ð\97акладкÑ\83 Ð½Ðµ Ð´Ð¾Ð´Ð°Ð½Ð¾ Ð´Ð¾ Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81пÑ\96лÑ\8cноÑ\82и."
 
-#, fuzzy
 msgid "Object not posted to this user."
-msgstr "Ð\9dе Ð²Ð¸Ð´Ð°Ð»Ñ\8fÑ\82и цього користувача."
+msgstr "Ð\9eбâ\80\99Ñ\94кÑ\82 Ð½Ðµ Ð´Ð¾Ð´Ð°Ð½Ð¾ Ð´Ð¾ цього користувача."
 
 msgid "Don't know how to handle this kind of target."
-msgstr ""
+msgstr "Не знаю, як обробити такого роду мету."
 
 #. TRANS: Validation error in form for registration, profile and group settings, etc.
 msgid "Nickname cannot be empty."
@@ -7559,7 +7630,6 @@ msgstr "Надіслати допис"
 msgid "What's up, %s?"
 msgstr "Що нового, %s?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "Вкласти"
 
@@ -7627,6 +7697,9 @@ msgstr "Видалити допис"
 msgid "Notice repeated"
 msgstr "Допис повторили"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "«Розштовхати» користувача"
 
@@ -8139,9 +8212,3 @@ msgstr "Неправильний XML, корінь XRD відсутній."
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "Отримання резервної копії файлу «%s»."
-
-#~ msgid "Friends timeline"
-#~ msgstr "Стрічка друзів"
-
-#~ msgid "Everyone on this site"
-#~ msgstr "Всі на цьому сайті"
index c8367a9bd1e947141e2d5111cd4091e6f152342f..022e28922e4cc660971e10f53adef7590dc58bf9 100644 (file)
@@ -15,18 +15,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Core\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:35+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:32+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-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: zh-hans\n"
 "X-Message-Group: #out-statusnet-core\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-POT-Import-Date: 2011-03-06 02:16:47+0000\n"
+"X-POT-Import-Date: 2011-03-08 01:25:01+0000\n"
 
 #. TRANS: Page title for Access admin panel that allows configuring site access.
 #. TRANS: Menu item for site administration
@@ -1017,7 +1017,8 @@ msgid "Can only fave notices."
 msgstr "可以只为心目中的绝对通知书。"
 
 #. TRANS: Client exception thrown when trying favorite a notice without content.
-msgid "Unknown note."
+#, fuzzy
+msgid "Unknown notice."
 msgstr "未知的注意。"
 
 #. TRANS: Client exception thrown when trying favorite an already favorited notice.
@@ -1577,6 +1578,7 @@ msgstr "删除此组。"
 #. TRANS: Client error displayed trying to create a new direct message while not logged in.
 #. TRANS: Client error displayed trying to send a notice while not logged in.
 #. TRANS: Client error displayed trying to nudge a user without being logged in.
+#. TRANS: Client error displayed when trying to enable or disable a plugin while not logged in.
 #. TRANS: Client error displayed trying a change a subscription while not logged in.
 #. TRANS: Client error displayed trying to subscribe when not logged in.
 #. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
@@ -3020,6 +3022,10 @@ msgstr "Source URL 必填。"
 msgid "Could not create application."
 msgstr "无法创建应用。"
 
+#, fuzzy
+msgid "Invalid image."
+msgstr "大小不正确。"
+
 #. TRANS: Title for form to create a group.
 msgid "New group"
 msgstr "新小组"
@@ -3298,49 +3304,74 @@ msgstr "%s 的发件箱"
 msgid "This is your outbox, which lists private messages you have sent."
 msgstr "这是你的发件箱,包含你发送的私信。"
 
+#. TRANS: Title for page where to change password.
+#, fuzzy
+msgctxt "TITLE"
 msgid "Change password"
 msgstr "修改密码"
 
+#. TRANS: Instructions for page where to change password.
 msgid "Change your password."
 msgstr "修改你的密码"
 
+#. TRANS: Fieldset legend on page where to change password.
 #. TRANS: Fieldset legend for password reset form.
 msgid "Password change"
 msgstr "修改密码"
 
+#. TRANS: Field label on page where to change password.
 msgid "Old password"
 msgstr "旧密码"
 
+#. TRANS: Field label on page where to change password.
 #. TRANS: Field label for password reset form.
 msgid "New password"
 msgstr "新密码"
 
+#. TRANS: Field title on page where to change password.
 msgid "6 or more characters."
 msgstr "6 个或更多字符"
 
+#. TRANS: Field label on page where to change password. In this field the new password should be typed a second time.
+#, fuzzy
+msgctxt "LABEL"
+msgid "Confirm"
+msgstr "密码确认"
+
+#. TRANS: Field title on page where to change password.
 #. TRANS: Ttile for field label for password reset form where the password has to be typed again.
 msgid "Same as password above."
 msgstr "与上面相同的密码"
 
+#. TRANS: Button text on page where to change password.
+#, fuzzy
+msgctxt "BUTTON"
 msgid "Change"
 msgstr "修改"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Password must be 6 or more characters."
 msgstr "密码必须包含 6 个或更多字符。"
 
 msgid "Passwords don't match."
 msgstr "密码不匹配。"
 
-msgid "Incorrect old password"
+#. TRANS: Form validation error on page where to change password.
+#, fuzzy
+msgid "Incorrect old password."
 msgstr "旧密码不正确"
 
+#. TRANS: Form validation error on page where to change password.
 msgid "Error saving user; invalid."
 msgstr "保存用户时出错;无效。"
 
+#. TRANS: Server error displayed on page where to change password when password change
+#. TRANS: could not be made because of a server error.
 #. TRANS: Reset password form validation error message.
 msgid "Cannot save new password."
 msgstr "无法保存新密码。"
 
+#. TRANS: Form validation notice on page where to change password.
 msgid "Password saved."
 msgstr "密码已保存。"
 
@@ -3390,6 +3421,7 @@ msgstr "网站"
 msgid "Server"
 msgstr "服务器"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site's server hostname."
 msgstr "网站的服务器主机名。"
 
@@ -3397,6 +3429,7 @@ msgstr "网站的服务器主机名。"
 msgid "Path"
 msgstr "路径"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Site path."
 msgstr "网站路径"
 
@@ -3404,6 +3437,7 @@ msgstr "网站路径"
 msgid "Locale directory"
 msgstr "本地化目录"
 
+#. TRANS: Field title in Paths admin panel.
 msgid "Directory path to locales."
 msgstr "本地化文件的目录路径"
 
@@ -3411,9 +3445,14 @@ msgstr "本地化文件的目录路径"
 msgid "Fancy URLs"
 msgstr "优化 URLs"
 
-msgid "Use fancy (more readable and memorable) URLs?"
+#. TRANS: Field title in Paths admin panel.
+#, fuzzy
+msgid "Use fancy URLs (more readable and memorable)?"
 msgstr "使用优化的 URLs(更简洁易记)?"
 
+#. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "Theme"
 msgstr "主题"
 
@@ -3526,6 +3565,8 @@ msgid "Directory where attachments are located."
 msgstr "附件文件的目录。"
 
 #. TRANS: Fieldset legend in Paths admin panel.
+#, fuzzy
+msgctxt "LEGEND"
 msgid "SSL"
 msgstr "SSL"
 
@@ -3570,10 +3611,14 @@ msgstr ""
 msgid "People search"
 msgstr "搜索用户"
 
+#. TRANS: Client error displayed when trying to tag a profile with an invalid tag.
+#. TRANS: %s is the invalid tag.
 #, php-format
 msgid "Not a valid people tag: %s."
 msgstr "不是有效的标签:%s。"
 
+#. TRANS: Page title for users with a certain self-tag.
+#. TRANS: %1$s is the tag, %2$s is the page number.
 #, php-format
 msgid "Users self-tagged with %1$s - page %2$d"
 msgstr "用户自加标签%s - 第%d 页"
@@ -3583,15 +3628,19 @@ msgctxt "plugin"
 msgid "Disabled"
 msgstr ""
 
+#. TRANS: Client error displayed when trying to use another method than POST.
+#. TRANS: Do not translate POST.
 #. TRANS: Client error displayed trying to perform any request method other than POST.
 #. TRANS: Do not translate POST.
 msgid "This action only accepts POST requests."
 msgstr "这个动作只接受 POST 请求"
 
+#. TRANS: Client error displayed when trying to enable or disable a plugin without access rights.
 #, fuzzy
 msgid "You cannot administer plugins."
 msgstr "你不能删除用户。"
 
+#. TRANS: Client error displayed when trying to enable or disable a non-existing plugin.
 #, fuzzy
 msgid "No such plugin."
 msgstr "没有这个页面。"
@@ -3602,7 +3651,8 @@ msgid "Enabled"
 msgstr ""
 
 #. TRANS: Tab and title for plugins admin panel.
-#. TRANS: Menu item for site administration
+#, fuzzy
+msgctxt "TITLE"
 msgid "Plugins"
 msgstr "插件"
 
@@ -3618,15 +3668,19 @@ msgstr ""
 msgid "Default plugins"
 msgstr "默认语言"
 
+#. TRANS: Text displayed on plugin admin page when no plugin are enabled.
 msgid ""
 "All default plugins have been disabled from the site's configuration file."
 msgstr ""
 
+#. TRANS: Client error displayed if the notice posted has too many characters.
 msgid "Invalid notice content."
 msgstr "无效的消息内容。"
 
-#, php-format
-msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+#. TRANS: Exception thrown if a notice's license is not compatible with the StatusNet site license.
+#. TRANS: %1$s is the notice license, %2$s is the StatusNet site's license.
+#, fuzzy, php-format
+msgid "Notice license \"%1$s\" is not compatible with site license \"%2$s\"."
 msgstr "消息许可证“%1$s”与这个网站的许可证“%2$s”不兼容。"
 
 #. TRANS: Page title for profile settings.
@@ -3765,43 +3819,57 @@ msgstr "设置已保存。"
 msgid "Restore account"
 msgstr "还原账户"
 
+#. TRANS: Client error displayed when requesting a public timeline page beyond the page limit.
+#. TRANS: %s is the page limit.
 #, php-format
 msgid "Beyond the page limit (%s)."
 msgstr "超出页面限制(%s)。"
 
+#. TRANS: Server error displayed when a public timeline cannot be retrieved.
 msgid "Could not retrieve public stream."
 msgstr "无法获取到公共的时间线。"
 
+#. TRANS: Title for all public timeline pages but the first.
+#. TRANS: %d is the page number.
 #, php-format
 msgid "Public timeline, page %d"
 msgstr "公共时间线,第%d页"
 
+#. TRANS: Title for the first public timeline page.
 msgid "Public timeline"
 msgstr "公共时间线"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 1.0)"
 msgstr "公开的 RSS 聚合 (RSS 1.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (RSS 2.0)"
 msgstr "公开的 RSS 聚合 (RSS 2.0)"
 
+#. TRANS: Link description for public timeline feed.
 msgid "Public Stream Feed (Atom)"
 msgstr "公开的 RSS 聚合 (Atom)"
 
+#. TRANS: Text displayed for public feed when there are no public notices.
 #, php-format
 msgid ""
 "This is the public timeline for %%site.name%% but no one has posted anything "
 "yet."
 msgstr "这是%%site.name%%的公共时间线,但是还没有人发布任何内容。"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a logged in user.
 msgid "Be the first to post!"
 msgstr "成为第一个发布消息的人!"
 
+#. TRANS: Additional text displayed for public feed when there are no public notices for a not logged in user.
 #, php-format
 msgid ""
 "Why not [register an account](%%action.register%%) and be the first to post!"
 msgstr "现在就 [注册](%%action.register%%) 并成为第一个发布消息的人!"
 
+#. TRANS: Message for not logged in users at an invite-only site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3814,6 +3882,8 @@ msgstr ""
 "务。[现在加入](%%action.register%%) 并与你的朋友、家人和同事们一起分享你的消"
 "息。([查看更多](%%doc.help%%))"
 
+#. TRANS: Message for not logged in users at a closed site trying to view the public feed of notices.
+#. TRANS: This message contains Markdown links. Please mind the formatting.
 #, php-format
 msgid ""
 "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -5434,6 +5504,10 @@ msgid ""
 "along with this program.  If not, see %s."
 msgstr "你应该在本程序中收到了一份 GNU Affero GPL 的副本,如果没有收到请看%s。"
 
+#. TRANS: Menu item for site administration
+msgid "Plugins"
+msgstr "插件"
+
 #. TRANS: Form input field label for application name.
 msgid "Name"
 msgstr "名称"
@@ -5916,6 +5990,9 @@ msgstr "saveSettings() 尚未实现。"
 msgid "Unable to delete design setting."
 msgstr "无法删除外观设置。"
 
+msgid "Home"
+msgstr "主页"
+
 #. TRANS: Menu item title/tooltip
 msgid "Basic site configuration"
 msgstr "基本网站配置"
@@ -6525,9 +6602,6 @@ msgstr "去安装程序。"
 msgid "Database error"
 msgstr "数据库错误"
 
-msgid "Home"
-msgstr "主页"
-
 msgid "Public"
 msgstr "公共"
 
@@ -7307,7 +7381,6 @@ msgstr "发送一个通知"
 msgid "What's up, %s?"
 msgstr "%s,最近怎么样?"
 
-#. TRANS: Input label in notice form for adding an attachment.
 msgid "Attach"
 msgstr "附件"
 
@@ -7374,6 +7447,9 @@ msgstr "删除"
 msgid "Notice repeated"
 msgstr "消息已转发"
 
+msgid "Update your status..."
+msgstr ""
+
 msgid "Nudge this user"
 msgstr "呼叫用户"
 
@@ -7868,11 +7944,3 @@ msgstr "不合法的XML, 缺少XRD根"
 #, php-format
 msgid "Getting backup from file '%s'."
 msgstr "从文件'%s'获取备份。"
-
-#, fuzzy
-#~ msgid "Friends timeline"
-#~ msgstr "%s的时间线"
-
-#, fuzzy
-#~ msgid "Everyone on this site"
-#~ msgstr "搜索本站用户"
diff --git a/plugins/AccountManager/locale/de/LC_MESSAGES/AccountManager.po b/plugins/AccountManager/locale/de/LC_MESSAGES/AccountManager.po
new file mode 100644 (file)
index 0000000..338a911
--- /dev/null
@@ -0,0 +1,27 @@
+# Translation of StatusNet - AccountManager to German (Deutsch)
+# Exported from translatewiki.net
+#
+# Author: Habi
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - AccountManager\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17: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: 2011-03-08 01:21:58+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: de\n"
+"X-Message-Group: #out-statusnet-plugin-accountmanager\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid ""
+"The Account Manager plugin implements the Account Manager specification."
+msgstr ""
+"Das Account-Manager-Plugin implementiert die Account-Manager-Spezifikation."
diff --git a/plugins/Aim/locale/sv/LC_MESSAGES/Aim.po b/plugins/Aim/locale/sv/LC_MESSAGES/Aim.po
new file mode 100644 (file)
index 0000000..d0799bc
--- /dev/null
@@ -0,0 +1,34 @@
+# Translation of StatusNet - Aim to Swedish (Svenska)
+# Exported from translatewiki.net
+#
+# Author: WikiPhoenix
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Aim\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:36+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: 2011-03-08 01:22:52+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: sv\n"
+"X-Message-Group: #out-statusnet-plugin-aim\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Send me a message to post a notice"
+msgstr ""
+
+msgid "AIM"
+msgstr "AIM"
+
+msgid ""
+"The AIM plugin allows users to send and receive notices over the AIM network."
+msgstr ""
+"AIM-tillägget tillåter användare skicka och ta emot meddelanden över AIM-"
+"nätverket."
index cc028a1f72f677cebcc041f32e7aaea156073e52..1c4b44c399688c6f776f7c09745fcfd71394a814 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-06 02:34+0100\n"
+"POT-Creation-Date: 2011-03-11 18:15+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,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: AutocompletePlugin.php:80
+#: AutocompletePlugin.php:82
 msgid ""
 "The autocomplete plugin allows users to autocomplete screen names in @ "
 "replies. When an \"@\" is typed into the notice text area, an autocomplete "
index c7fc76af604b366abdd0fee3dc4f0c8e9cd9c728..34c2bf6121dec2de04649564c6e9e9512634f4c5 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+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"
@@ -20,7 +20,7 @@ msgstr ""
 msgid "Simple extension for supporting bookmarks."
 msgstr ""
 
-#: BookmarkPlugin.php:639
+#: BookmarkPlugin.php:642
 msgid "Bookmark"
 msgstr ""
 
index 7513e1830e00e732dd2191a139ef2b163e9257b2..130286382036291b5d23e775d81fc3f0b0d7117c 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Bookmark\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:50+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17: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: 2011-03-06 02:12:57+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:22:22+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: ia\n"
 "X-Message-Group: #out-statusnet-plugin-bookmark\n"
@@ -25,7 +25,7 @@ msgid "Simple extension for supporting bookmarks."
 msgstr "Extension simple pro supportar marcapaginas."
 
 msgid "Bookmark"
-msgstr ""
+msgstr "Marcapaginas"
 
 msgctxt "BUTTON"
 msgid "Upload"
index 8621cf30933f21c8ebb9c5a49ab2f1b48360ba94..7b4b0d7da84bd6eb0f28056d5c572818ed0bc090 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Bookmark\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:50+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17: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: 2011-03-06 02:12:57+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:22:22+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: mk\n"
 "X-Message-Group: #out-statusnet-plugin-bookmark\n"
@@ -25,7 +25,7 @@ msgid "Simple extension for supporting bookmarks."
 msgstr "Прост додаток за поддршка на обележувачи."
 
 msgid "Bookmark"
-msgstr ""
+msgstr "Одбележи"
 
 msgctxt "BUTTON"
 msgid "Upload"
index ca207809ec741e48c7f2b910c412b88a06f88322..33bc7c28e15d5f763af1ccaaecc2984f938ac784 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Bookmark\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:50+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17: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: 2011-03-06 02:12:57+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:22:22+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: nl\n"
 "X-Message-Group: #out-statusnet-plugin-bookmark\n"
@@ -25,7 +25,7 @@ msgid "Simple extension for supporting bookmarks."
 msgstr "Eenvoudige extensie voor de ondersteuning van bladwijzers."
 
 msgid "Bookmark"
-msgstr ""
+msgstr "Bladwijzer"
 
 msgctxt "BUTTON"
 msgid "Upload"
index b23106c1134582c2bc66677fed2bed083c9b89bc..d46085720d564e873f512fa36d70a91322cd9f5d 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - Bookmark\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 01:03+0000\n"
-"PO-Revision-Date: 2011-03-08 01:05:50+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:17:50+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: 2011-03-06 02:12:57+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83429); Translate extension (2011-03-07)\n"
+"X-POT-Import-Date: 2011-03-08 01:22:22+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: uk\n"
 "X-Message-Group: #out-statusnet-plugin-bookmark\n"
@@ -26,7 +26,7 @@ msgid "Simple extension for supporting bookmarks."
 msgstr "Простий додаток, що підтримує додавання закладок."
 
 msgid "Bookmark"
-msgstr ""
+msgstr "Закладка"
 
 msgctxt "BUTTON"
 msgid "Upload"
index 24d91ad7725a26c4d664edde9fe1d46f9f97b5f8..85835e2c1f85b3e70bddfe6f54c9f06e2ed62736 100644 (file)
@@ -187,18 +187,6 @@ class UserdirectoryAction extends Action
         $this->elementEnd('div');
     }
 
-    /**
-     * Local navigation
-     *
-     * This page is part of the public group, so show that.
-     *
-     * @return void
-     */
-    function showLocalNav()
-    {
-        $nav = new PublicGroupNav($this);
-        $nav->show();
-    }
 
     /**
      * Content area
index dadb58909442c65409851c4bf1f6ad986ae45ad1..87e2f18f187cd0aa6afc32bd6158f5863d8fd429 100644 (file)
@@ -128,8 +128,8 @@ class AlphaNav extends Widget
             $current = $this->action->arg('filter');
 
             // Highlight the selected filter. If there is no selected
-            // filter, highlight the first filter in the list
-            if (!isset($current) && $i == 0
+            // filter, highlight the last filter in the list (all)
+            if (!isset($current) && $i == ($size - 1)
                 || $current === strtolower($filter)) {
                 $classes .= 'current ';
             }
diff --git a/plugins/Directory/locale/Directory.pot b/plugins/Directory/locale/Directory.pot
new file mode 100644 (file)
index 0000000..6cc17de
--- /dev/null
@@ -0,0 +1,58 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: actions/userdirectory.php:94
+#, php-format
+msgid "User Directory, page %d"
+msgstr ""
+
+#: actions/userdirectory.php:96
+msgid "User directory"
+msgstr ""
+
+#: actions/userdirectory.php:99
+#, php-format
+msgid "User directory - %s"
+msgstr ""
+
+#: actions/userdirectory.php:104
+#, php-format
+msgid "User directory - %s, page %d"
+msgstr ""
+
+#: actions/userdirectory.php:265
+msgctxt "BUTTON"
+msgid "Search"
+msgstr ""
+
+#: actions/userdirectory.php:370
+#, php-format
+msgid "No users starting with %s"
+msgstr ""
+
+#: DirectoryPlugin.php:187
+msgid "Add a user directory."
+msgstr ""
+
+#: lib/sortablesubscriptionlist.php:66
+msgid "Nickname"
+msgstr ""
+
+#: lib/sortablesubscriptionlist.php:67
+msgid "Created"
+msgstr ""
diff --git a/plugins/Event/locale/Event.pot b/plugins/Event/locale/Event.pot
new file mode 100644 (file)
index 0000000..5bc2222
--- /dev/null
@@ -0,0 +1,50 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: cancelrsvpform.php:126
+msgctxt "BUTTON"
+msgid "Cancel"
+msgstr ""
+
+#: rsvpform.php:116
+msgctxt "BUTTON"
+msgid "Yes"
+msgstr ""
+
+#: rsvpform.php:117
+msgctxt "BUTTON"
+msgid "No"
+msgstr ""
+
+#: rsvpform.php:118
+msgctxt "BUTTON"
+msgid "Maybe"
+msgstr ""
+
+#: eventform.php:162
+msgctxt "BUTTON"
+msgid "Save"
+msgstr ""
+
+#: EventPlugin.php:133
+msgid "Event invitations and RSVPs."
+msgstr ""
+
+#: EventPlugin.php:138
+msgid "Event"
+msgstr ""
index 3f541c000835868b7a666fef391022dd9be4fd5e..d1572ce9fdcc3bd286ad7845ce43fe4fbd30df6b 100644 (file)
@@ -54,6 +54,7 @@ class ExtendedProfilePlugin extends Plugin
     function onAutoload($cls)
     {
         $lower = strtolower($cls);
+
         switch ($lower)
         {
         case 'extendedprofile':
@@ -62,6 +63,9 @@ class ExtendedProfilePlugin extends Plugin
         case 'profiledetailsettingsaction':
             require_once dirname(__FILE__) . '/' . $lower . '.php';
             return false;
+        case 'userautocompleteaction':
+            require_once dirname(__FILE__) . '/action/' . mb_substr($lower, 0, -6) . '.php';
+            return false;
         case 'profile_detail':
             require_once dirname(__FILE__) . '/' . ucfirst($lower) . '.php';
             return false;
@@ -81,11 +85,19 @@ class ExtendedProfilePlugin extends Plugin
      */
     function onStartInitializeRouter($m)
     {
-        $m->connect(':nickname/detail',
-                array('action' => 'profiledetail'),
-                array('nickname' => Nickname::DISPLAY_FMT));
-        $m->connect('settings/profile/detail',
-                array('action' => 'profiledetailsettings'));
+        $m->connect(
+            ':nickname/detail',
+            array('action' => 'profiledetail'),
+            array('nickname' => Nickname::DISPLAY_FMT)
+        );
+        $m->connect(
+            '/settings/profile/finduser',
+            array('action' => 'Userautocomplete')
+        );
+        $m->connect(
+            'settings/profile/detail',
+            array('action' => 'profiledetailsettings')
+        );
 
         return true;
     }
@@ -95,8 +107,6 @@ class ExtendedProfilePlugin extends Plugin
         $schema = Schema::get();
         $schema->ensureTable('profile_detail', Profile_detail::schemaDef());
 
-        // @hack until key definition support is merged
-        Profile_detail::fixIndexes($schema);
         return true;
     }
 
index 6fd96cca706f2dafde444cc5f02c0ecd06d7b537..96869b0e63bc252cc0452184d89180794a9739f3 100644 (file)
@@ -21,130 +21,122 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-class Profile_detail extends Memcached_DataObject
+/**
+ * DataObject class to store extended profile fields. Allows for storing
+ * multiple values per a "field_name" (field_name property is not unique).
+ *
+ * Example:
+ *
+ *     Jed's Phone Numbers
+ *     home  : 510-384-1992
+ *     mobile: 510-719-1139
+ *     work  : 415-231-1121
+ *
+ * We can store these phone numbers in a "field" represented by three
+ * Profile_detail objects, each named 'phone_number' like this:
+ *
+ *     $phone1 = new Profile_detail();
+ *     $phone1->field_name  = 'phone_number';
+ *     $phone1->rel         = 'home';
+ *     $phone1->field_value = '510-384-1992';
+ *     $phone1->value_index = 1;
+ *
+ *     $phone1 = new Profile_detail();
+ *     $phone1->field_name  = 'phone_number';
+ *     $phone1->rel         = 'mobile';
+ *     $phone1->field_value = '510-719-1139';
+ *     $phone1->value_index = 2;
+ *
+ *     $phone1 = new Profile_detail();
+ *     $phone1->field_name  = 'phone_number';
+ *     $phone1->rel         = 'work';
+ *     $phone1->field_value = '415-231-1121';
+ *     $phone1->value_index = 3;
+ *
+ */
+class Profile_detail extends Managed_DataObject
 {
-    public $__table = 'submirror';
+    public $__table = 'profile_detail';
 
     public $id;
-
-    public $profile_id;
-    public $field;
-    public $field_index; // relative ordering of multiple values in the same field
-
-    public $value; // primary text value
-    public $rel; // detail for some field types; eg "home", "mobile", "work" for phones or "aim", "irc", "xmpp" for IM
+    public $profile_id;  // profile this is for
+    public $rel;         // detail for some field types; eg "home", "mobile", "work" for phones or "aim", "irc", "xmpp" for IM
+    public $field_name;  // name
+    public $field_value; // primary text value
+    public $value_index; // relative ordering of multiple values in the same field
+    public $date;        // related date
     public $ref_profile; // for people types, allows pointing to a known profile in the system
-
     public $created;
     public $modified;
 
-    public /*static*/ function staticGet($k, $v=null)
-    {
-        return parent::staticGet(__CLASS__, $k, $v);
-    }
-
     /**
-     * return table definition for DB_DataObject
+     * Get an instance by key
      *
-     * DB_DataObject needs to know something about the table to manipulate
-     * instances. This method provides all the DB_DataObject needs to know.
+     * This is a utility method to get a single instance with a given key value.
      *
-     * @return array array of column definitions
-     */
-
-    function table()
-    {
-        return array('id' =>  DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-
-                     'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'field' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'field_index' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-
-                     'value' => DB_DATAOBJECT_STR,
-                     'rel' => DB_DATAOBJECT_STR,
-                     'ref_profile' => DB_DATAOBJECT_ID,
-
-                     'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL,
-                     'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL);
-    }
-
-    static function schemaDef()
-    {
-        // @fixme need a reverse key on (subscribed, subscriber) as well
-        return array(new ColumnDef('id', 'integer',
-                                   null, false, 'PRI'),
-
-                     // @fixme need a unique index on these three
-                     new ColumnDef('profile_id', 'integer',
-                                   null, false),
-                     new ColumnDef('field', 'varchar',
-                                   16, false),
-                     new ColumnDef('field_index', 'integer',
-                                   null, false),
-
-                     new ColumnDef('value', 'text',
-                                   null, true),
-                     new ColumnDef('rel', 'varchar',
-                                   16, true),
-                     new ColumnDef('ref_profile', 'integer',
-                                   null, true),
-
-                     new ColumnDef('created', 'datetime',
-                                   null, false),
-                     new ColumnDef('modified', 'datetime',
-                                   null, false));
-    }
-
-    /**
-     * Temporary hack to set up the compound index, since we can't do
-     * it yet through regular Schema interface. (Coming for 1.0...)
+     * @param string $k Key to use to lookup
+     * @param mixed  $v Value to lookup
      *
-     * @param Schema $schema
-     * @return void
-     */
-    static function fixIndexes($schema)
-    {
-        try {
-            // @fixme this won't be a unique index... SIGH
-            $schema->createIndex('profile_detail', array('profile_id', 'field', 'field_index'));
-        } catch (Exception $e) {
-            common_log(LOG_ERR, __METHOD__ . ': ' . $e->getMessage());
-        }
-    }
-
-    /**
-     * return key definitions for DB_DataObject
+     * @return User_greeting_count object found, or null for no hits
      *
-     * DB_DataObject needs to know about keys that the table has; this function
-     * defines them.
-     *
-     * @return array key definitions
      */
 
-    function keys()
+    function staticGet($k, $v=null)
     {
-        return array_keys($this->keyTypes());
+        return Memcached_DataObject::staticGet('Profile_detail', $k, $v);
     }
 
     /**
-     * return key definitions for Memcached_DataObject
+     * Get an instance by compound key
+     *
+     * This is a utility method to get a single instance with a given set of
+     * key-value pairs. Usually used for the primary key for a compound key; thus
+     * the name.
      *
-     * Our caching system uses the same key definitions, but uses a different
-     * method to get them.
+     * @param array $kv array of key-value mappings
+     *
+     * @return Bookmark object found, or null for no hits
      *
-     * @return array key definitions
      */
 
-    function keyTypes()
+    function pkeyGet($kv)
     {
-        // @fixme keys
-        // need a sane key for reverse lookup too
-        return array('id' => 'K');
+        return Memcached_DataObject::pkeyGet('Profile_detail', $kv);
     }
 
-    function sequenceKey()
+    static function schemaDef()
     {
-        return array('id', true);
+        return array(
+            'description'
+                => 'Additional profile details for the ExtendedProfile plugin',
+            'fields'      => array(
+                'id'          => array('type' => 'serial', 'not null' => true),
+                'profile_id'  => array('type' => 'int', 'not null' => true),
+                'field_name'  => array(
+                    'type'     => 'varchar',
+                    'length'   => 16,
+                    'not null' => true
+                ),
+                'value_index' => array('type' => 'int'),
+                'field_value' => array('type' => 'text'),
+                'date'        => array('type' => 'datetime'),
+                'rel'         => array('type' => 'varchar', 'length' => 16),
+                'rel_profile' => array('type' => 'int'),
+                'created'     => array(
+                    'type'     => 'datetime',
+                    'not null' => true
+                 ),
+                'modified'    => array(
+                    'type' => 'timestamp',
+                    'not null' => true
+                ),
+            ),
+            'primary key' => array('id'),
+            'unique keys' => array(
+                'profile_detail_profile_id_field_name_value_index'
+                    => array('profile_id', 'field_name', 'value_index'),
+            )
+        );
     }
 
 }
diff --git a/plugins/ExtendedProfile/action/userautocomplete.php b/plugins/ExtendedProfile/action/userautocomplete.php
new file mode 100644 (file)
index 0000000..d485742
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Action for showing Twitter-like JSON search results
+ *
+ * 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  Search
+ * @package   StatusNet
+ * @author    Zach Copley <zach@status.net>
+ * @copyright 2011 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);
+}
+
+
+class UserautocompleteAction extends Action
+{
+    var $query;
+
+    /**
+     * Initialization.
+     *
+     * @param array $args Web and URL arguments
+     *
+     * @return boolean true if nothing goes wrong
+     */
+    function prepare($args)
+    {
+        parent::prepare($args);
+        $this->query = $this->trimmed('term');
+        return true;
+    }
+
+    /**
+     * Handle a request
+     *
+     * @param array $args Arguments from $_REQUEST
+     *
+     * @return void
+     */
+    function handle($args)
+    {
+        parent::handle($args);
+        $this->showResults();
+    }
+
+    /**
+     * Search for users matching the query and spit the results out
+     * as a quick-n-dirty JSON document
+     *
+     * @return void
+     */
+    function showResults()
+    {
+        $people = array();
+
+        $profile = new Profile();
+
+        $search_engine = $profile->getSearchEngine('profile');
+        $search_engine->set_sort_mode('nickname_desc');
+        $search_engine->limit(0, 10);
+        $search_engine->query(strtolower($this->query . '*'));
+
+        $cnt = $profile->find();
+
+        if ($cnt > 0) {
+
+            $sql = 'SELECT profile.* FROM profile, user WHERE profile.id = user.id '
+                . ' AND LEFT(LOWER(profile.nickname), '
+                . strlen($this->query)
+                . ') = \'%s\' '
+                . ' LIMIT 0, 10';
+
+            $profile->query(sprintf($sql, $this->query));
+        }
+        
+        while ($profile->fetch()) {
+             $people[] = $profile->nickname;
+        }
+
+        header('Content-Type: application/json; charset=utf-8');
+        print json_encode($people);
+    }
+
+    /**
+     * Do we need to write to the database?
+     *
+     * @return boolean true
+     */
+    function isReadOnly($args)
+    {
+        return true;
+    }
+}
diff --git a/plugins/ExtendedProfile/css/profiledetail.css b/plugins/ExtendedProfile/css/profiledetail.css
new file mode 100644 (file)
index 0000000..3af9bcb
--- /dev/null
@@ -0,0 +1,164 @@
+/* Note the #content is only needed to override weird crap in default styles */
+
+#profiledetail .entity_actions {
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+#profiledetail #content h3 {
+    margin-bottom: 5px;
+}
+
+#content table.extended-profile {
+    width: 100%;
+    border-collapse: separate;
+    border-spacing: 0px 8px;
+    margin-bottom: 10px;
+}
+
+#content table.extended-profile th {
+    color: #777;
+    background-color: #ECECF2;
+    width: 150px;
+    text-align: right;
+    padding: 2px 8px 2px 0px;
+}
+
+#content table.extended-profile th.employer, #content table.extended-profile th.institution {
+    display: none;
+}
+
+#content table.extended-profile td {
+    padding: 2px 0px 2px 8px;        
+}
+
+.experience-item, .education-item {
+    float: left;
+    padding-bottom: 4px;
+}
+
+.experience-item .label, .education-item .label {
+    float: left;
+    clear: left;
+    position: relative;
+    left: -8px;
+    margin-right: 2px;
+    margin-bottom: 8px;
+    color: #777;
+    background-color: #ECECF2;
+    width: 150px;
+    text-align: right;
+    padding: 2px 8px 2px 0px;
+}
+
+.experience-item .field, .education-item .field {
+    float: left;
+    padding-top: 2px;
+    padding-bottom: 2px;
+}
+
+#profiledetailsettings #content table.extended-profile td {
+    padding: 0px 0px 0px 8px;
+}
+
+#profiledetailsettings input {
+    margin-right: 8px;
+}
+
+.form_settings .extended-profile label {
+    display: none;
+}
+
+.extended-profile textarea {
+    width: 280px;
+}
+
+.extended-profile input[type=text] {
+    width: 280px;
+}
+
+.extended-profile .phone-item input[type=text], .extended-profile .im-item input[type=text], .extended-profile .website-item input[type=text] {
+    width: 175px;
+}
+
+.extended-profile input.hasDatepicker {
+    width: 100px;
+}
+
+.experience-item input[type=text], .education-item input[type=text] {
+    float: left;
+}
+
+.extended-profile .current-checkbox {
+    float: left;
+    position: relative;
+    top: 2px;
+}
+
+.form_settings .extended-profile input.checkbox {
+    margin-left: 0px;
+    left: 0px;
+    top: 2px;
+}
+
+.form_settings .extended-profile label.checkbox {
+    max-width: 100%;
+    float: none;
+    display: inline;
+    left: -20px;
+}
+
+.extended-profile select {
+    padding-right: 2px;
+    font-size: 0.88em;
+}
+
+.extended-profile a.add_row, .extended-profile a.remove_row {
+    display: block;
+    height: 16px;
+    width: 16px;
+    overflow: hidden;
+    background-image: url('../../../theme/rebase/images/icons/icons-01.gif');
+    background-repeat: no-repeat;
+}
+
+.extended-profile a.remove_row {
+    background-position: 0px -1252px;
+    float: right;
+    position: relative;
+    top: 6px;
+    line-height: 4em;
+}
+
+.extended-profile a.add_row {
+    clear: both;
+    position: relative;
+    top: 6px;
+    left: 2px; 
+    background-position: 0px -1186px;
+    width: 120px;
+    padding-left: 20px;
+    line-height: 1.2em;
+}
+
+#content table.extended-profile .supersizeme th {
+    border-bottom: 28px solid #fff;
+}
+
+#profiledetailsettings .experience-item, #profiledetailsettings .education-item {
+    margin-bottom: 10px;
+    width: 100%;
+}
+
+#profiledetailsettings .education-item textarea {
+    float: left;
+    margin-bottom: 8px;
+}
+
+#profiledetailsettings tr:last-child .experience-item, #profiledetailsettings tr:last-child .education-item {
+    margin-bottom: 0px;
+}
+
+#profiledetailsettings .experience-item a.add_row, #profiledetailsettings .education-item a.add_row {
+    left: 160px;
+}
index 7f69f90899237e479cb8e09d276352a41d4d5343..fa632e5073886b9eca4fe2664db1329516049345 100644 (file)
@@ -21,27 +21,256 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
+/**
+ * Class to represent extended profile data
+ */
 class ExtendedProfile
 {
+    protected $fields;
+
+    /**
+     * Constructor
+     *
+     * @param Profile $profile
+     */
     function __construct(Profile $profile)
     {
-        $this->profile = $profile;
+        $this->profile  = $profile;
+        $this->user     = $profile->getUser();
+        $this->fields   = $this->loadFields();
         $this->sections = $this->getSections();
-        $this->fields = $this->loadFields();
+        //common_debug(var_export($this->sections, true));
+
+        //common_debug(var_export($this->fields, true));
     }
 
+    /**
+     * Load extended profile fields
+     *
+     * @return array $fields the list of fields
+     */
     function loadFields()
     {
         $detail = new Profile_detail();
         $detail->profile_id = $this->profile->id;
         $detail->find();
-        
-        while ($detail->get()) {
-            $fields[$detail->field][] = clone($detail);
+
+        $fields = array();
+
+        while ($detail->fetch()) {
+            $fields[$detail->field_name][] = clone($detail);
         }
+
         return $fields;
     }
 
+    /**
+     * Get a the self-tags associated with this profile
+     *
+     * @return string the concatenated string of tags
+     */
+    function getTags()
+    {
+        return implode(' ', $this->user->getSelfTags());
+    }
+
+    /**
+     * Return a simple string value. Checks for fields that should
+     * be stored in the regular profile and returns values from it
+     * if appropriate.
+     *
+     * @param string $name name of the detail field to get the
+     *                     value from
+     *
+     * @return string the value
+     */
+    function getTextValue($name)
+    {
+        $key           = strtolower($name);
+        $profileFields = array('fullname', 'location', 'bio');
+
+        if (in_array($key, $profileFields)) {
+            return $this->profile->$name;
+        } else if (array_key_exists($key, $this->fields)) {
+            return $this->fields[$key][0]->field_value;
+        } else {
+            return null;
+        }
+    }
+
+    function getDateValue($name) {
+        $key = strtolower($name);
+        if (array_key_exists($key, $this->fields)) {
+            return $this->fields[$key][0]->date;
+        } else {
+            return null;
+        }
+    }
+
+    // XXX: getPhones, getIms, and getWebsites pretty much do the same thing,
+    //      so refactor.
+    function getPhones()
+    {
+        $phones = (isset($this->fields['phone'])) ? $this->fields['phone'] : null;
+        $pArrays = array();
+
+        if (empty($phones)) {
+            $pArrays[] = array(
+                'label' => _m('Phone'),
+                'index' => 0,
+                'type'  => 'phone',
+                'vcard' => 'tel',
+                'rel'   => 'office',
+                'value' => null
+            );
+        } else {
+            for ($i = 0; $i < sizeof($phones); $i++) {
+                $pa = array(
+                    'label' => _m('Phone'),
+                    'type'  => 'phone',
+                    'index' => intval($phones[$i]->value_index),
+                    'rel'   => $phones[$i]->rel,
+                    'value' => $phones[$i]->field_value,
+                    'vcard' => 'tel'
+                );
+
+               $pArrays[] = $pa;
+            }
+        }
+        return $pArrays;
+    }
+
+    function getIms()
+    {
+        $ims = (isset($this->fields['im'])) ? $this->fields['im'] : null;
+        $iArrays = array();
+
+        if (empty($ims)) {
+            $iArrays[] = array(
+                'label' => _m('IM'),
+                'type' => 'im'
+            );
+        } else {
+            for ($i = 0; $i < sizeof($ims); $i++) {
+                $ia = array(
+                    'label' => _m('IM'),
+                    'type'  => 'im',
+                    'index' => intval($ims[$i]->value_index),
+                    'rel'   => $ims[$i]->rel,
+                    'value' => $ims[$i]->field_value,
+                );
+
+                $iArrays[] = $ia;
+            }
+        }
+        return $iArrays;
+    }
+
+    function getWebsites()
+    {
+        $sites = (isset($this->fields['website'])) ? $this->fields['website'] : null;
+        $wArrays = array();
+
+        if (empty($sites)) {
+            $wArrays[] = array(
+                'label' => _m('Website'),
+                'type' => 'website'
+            );
+        } else {
+            for ($i = 0; $i < sizeof($sites); $i++) {
+                $wa = array(
+                    'label' => _m('Website'),
+                    'type'  => 'website',
+                    'index' => intval($sites[$i]->value_index),
+                    'rel'   => $sites[$i]->rel,
+                    'value' => $sites[$i]->field_value,
+                );
+
+                $wArrays[] = $wa;
+            }
+        }
+        return $wArrays;
+    }
+
+    function getExperiences()
+    {
+        $companies = (isset($this->fields['company'])) ? $this->fields['company'] : null;
+        $start = (isset($this->fields['start'])) ? $this->fields['start'] : null;
+        $end   = (isset($this->fields['end'])) ? $this->fields['end'] : null;
+
+        $eArrays = array();
+
+        if (empty($companies)) {
+            $eArrays[] = array(
+                'label'   => _m('Employer'),
+                'type'    => 'experience',
+                'company' => null,
+                'start'   => null,
+                'end'     => null,
+                'current' => false,
+                'index'   => 0
+            );
+        } else {
+            for ($i = 0; $i < sizeof($companies); $i++) {
+                $ea = array(
+                    'label'   => _m('Employer'),
+                    'type'    => 'experience',
+                    'company' => $companies[$i]->field_value,
+                    'index'   => intval($companies[$i]->value_index),
+                    'current' => $end[$i]->rel,
+                    'start'   => $start[$i]->date,
+                    'end'     => $end[$i]->date
+                );
+               $eArrays[] = $ea;
+            }
+        }
+        return $eArrays;
+    }
+
+    function getEducation()
+    {
+        $schools = (isset($this->fields['school'])) ? $this->fields['school'] : null;
+        $degrees = (isset($this->fields['degree'])) ? $this->fields['degree'] : null;
+        $descs = (isset($this->fields['degree_descr'])) ? $this->fields['degree_descr'] : null;
+        $start = (isset($this->fields['school_start'])) ? $this->fields['school_start'] : null;
+        $end = (isset($this->fields['school_end'])) ? $this->fields['school_end'] : null;
+        $iArrays = array();
+
+        if (empty($schools)) {
+            $iArrays[] = array(
+                'type' => 'education',
+                'label' => _m('Institution'),
+                'school' => null,
+                'degree' => null,
+                'description' => null,
+                'start' => null,
+                'end' => null,
+                'index' => 0
+            );
+        } else {
+            for ($i = 0; $i < sizeof($schools); $i++) {
+                $ia = array(
+                    'type'    => 'education',
+                    'label'   => _m('Institution'),
+                    'school'  => $schools[$i]->field_value,
+                    'degree'  => isset($degrees[$i]->field_value) ? $degrees[$i]->field_value : null,
+                    'description' => isset($descs[$i]->field_value) ? $descs[$i]->field_value : null,
+                    'index'   => intval($schools[$i]->value_index),
+                    'start'   => $start[$i]->date,
+                    'end'     => $end[$i]->date
+                );
+               $iArrays[] = $ia;
+            }
+        }
+
+        return $iArrays;
+    }
+
+    /**
+     *  Return all the sections of the extended profile
+     *
+     * @return array the big list of sections and fields
+     */
     function getSections()
     {
         return array(
@@ -81,22 +310,9 @@ class ExtendedProfile
             'contact' => array(
                 'label' => _m('Contact'),
                 'fields' => array(
-                    'phone' => array(
-                        'label' => _m('Phone'),
-                        'type' => 'phone',
-                        'multi' => true,
-                        'vcard' => 'tel',
-                    ),
-                    'im' => array(
-                        'label' => _m('IM'),
-                        'type' => 'im',
-                        'multi' => true,
-                    ),
-                    'website' => array(
-                        'label' => _m('Websites'),
-                        'type' => 'website',
-                        'multi' => true,
-                    ),
+                    'phone'   => $this->getPhones(),
+                    'im'      => $this->getIms(),
+                    'website' => $this->getWebsites()
                 ),
             ),
             'personal' => array(
@@ -119,19 +335,13 @@ class ExtendedProfile
             'experience' => array(
                 'label' => _m('Work experience'),
                 'fields' => array(
-                    'experience' => array(
-                        'type' => 'experience',
-                        'label' => _m('Employer'),
-                    ),
+                    'experience' => $this->getExperiences()
                 ),
             ),
             'education' => array(
                 'label' => _m('Education'),
                 'fields' => array(
-                    'education' => array(
-                        'type' => 'education',
-                        'label' => _m('Institution'),
-                    ),
+                    'education' => $this->getEducation()
                 ),
             ),
         );
index bf9b4056cd2177bff8367b4c6cb5ba1e48456400..1ef6440ed69bc1d3932821eba870866b49c8efed 100644 (file)
@@ -21,13 +21,35 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-class ExtendedProfileWidget extends Widget
+/**
+ * Class for outputting a widget to display or edit
+ * extended profiles
+ */
+class ExtendedProfileWidget extends Form
 {
-    const EDITABLE=true;
+    const EDITABLE = true;
 
+    /**
+     * The parent profile
+     *
+     * @var Profile
+     */
     protected $profile;
+
+    /**
+     * The extended profile
+     *
+     * @var Extended_profile
+     */
     protected $ext;
 
+    /**
+     * Constructor
+     *
+     * @param XMLOutputter  $out
+     * @param Profile       $profile
+     * @param boolean       $editable
+     */
     public function __construct(XMLOutputter $out=null, Profile $profile=null, $editable=false)
     {
         parent::__construct($out);
@@ -38,7 +60,37 @@ class ExtendedProfileWidget extends Widget
         $this->editable = $editable;
     }
 
+    /**
+     * Show the extended profile, or the edit form
+     */
     public function show()
+    {
+        if ($this->editable) {
+            parent::show();
+        } else {
+            $this->showSections();
+        }
+    }
+
+    /**
+     * Show form data
+     */
+    public function formData()
+    {
+        // For JQuery UI modal dialog
+        $this->out->elementStart(
+            'div',
+            array('id' => 'confirm-dialog', 'title' => 'Confirmation Required')
+        );
+        $this->out->text('Really delete this entry?');
+        $this->out->elementEnd('div');
+        $this->showSections();
+    }
+
+    /**
+     * Show each section of the extended profile
+     */
+    public function showSections()
     {
         $sections = $this->ext->getSections();
         foreach ($sections as $name => $section) {
@@ -46,21 +98,45 @@ class ExtendedProfileWidget extends Widget
         }
     }
 
+    /**
+     * Show an extended profile section
+     *
+     * @param string $name      name of the section
+     * @param array  $section   array of fields for the section
+     */
     protected function showExtendedProfileSection($name, $section)
     {
         $this->out->element('h3', null, $section['label']);
         $this->out->elementStart('table', array('class' => 'extended-profile'));
+
         foreach ($section['fields'] as $fieldName => $field) {
-            $this->showExtendedProfileField($fieldName, $field);
+
+            switch($fieldName) {
+            case 'phone':
+            case 'im':
+            case 'website':
+            case 'experience':
+            case 'education':
+                $this->showMultiple($fieldName, $field);
+                break;
+            default:
+                $this->showExtendedProfileField($fieldName, $field);
+            }
         }
         $this->out->elementEnd('table');
     }
 
+    /**
+     * Show an extended profile field
+     *
+     * @param string $name  name of the field
+     * @param array  $field set of key/value pairs for the field
+     */
     protected function showExtendedProfileField($name, $field)
     {
         $this->out->elementStart('tr');
 
-        $this->out->element('th', null, $field['label']);
+        $this->out->element('th', str_replace(' ','_',strtolower($field['label'])), $field['label']);
 
         $this->out->elementStart('td');
         if ($this->editable) {
@@ -73,30 +149,504 @@ class ExtendedProfileWidget extends Widget
         $this->out->elementEnd('tr');
     }
 
+    protected function showMultiple($name, $fields) {
+        foreach ($fields as $field) {
+            $this->showExtendedProfileField($name, $field);
+        }
+    }
+
+    // XXX: showPhone, showIm and showWebsite all work the same, so
+    //      combine
+    protected function showPhone($name, $field)
+    {
+        $this->out->elementStart('div', array('class' => 'phone-display'));
+        $this->out->text($field['value']);
+        if (!empty($field['rel'])) {
+            $this->out->text(' (' . $field['rel'] . ')');
+        }
+        $this->out->elementEnd('div');
+    }
+
+    protected function showIm($name, $field)
+    {
+        $this->out->elementStart('div', array('class' => 'im-display'));
+        $this->out->text($field['value']);
+        if (!empty($field['rel'])) {
+            $this->out->text(' (' . $field['rel'] . ')');
+        }
+        $this->out->elementEnd('div');
+    }
+
+    protected function showWebsite($name, $field)
+    {
+        $this->out->elementStart('div', array('class' => 'website-display'));
+
+        $url = $field['value'];
+
+        $this->out->element(
+            "a",
+            array(
+                'href'   => $url,
+                'class'  => 'extended-profile-link',
+                'target' => "_blank"
+            ),
+            $url
+        );
+
+        if (!empty($field['rel'])) {
+            $this->out->text(' (' . $field['rel'] . ')');
+        }
+        $this->out->elementEnd('div');
+    }
+
+    protected function showEditableIm($name, $field)
+    {
+        $index = isset($field['index']) ? $field['index'] : 0;
+        $id    = "extprofile-$name-$index";
+        $rel   = $id . '-rel';
+        $this->out->elementStart(
+            'div', array(
+                'id' => $id . '-edit',
+                'class' => 'im-item'
+            )
+        );
+        $this->out->input(
+            $id,
+            null,
+            isset($field['value']) ? $field['value'] : null
+        );
+        $this->out->dropdown(
+            $id . '-rel',
+            'Type',
+            array(
+                'jabber' => 'Jabber',
+                'gtalk'  => 'GTalk',
+                'aim'    => 'AIM',
+                'yahoo'  => 'Yahoo! Messenger',
+                'msn'    => 'MSN',
+                'skype'  => 'Skype',
+                'other'  => 'Other'
+            ),
+            null,
+            false,
+            isset($field['rel']) ? $field['rel'] : null
+        );
+
+        $this->showMultiControls();
+        $this->out->elementEnd('div');
+    }
+
+    protected function showEditablePhone($name, $field)
+    {
+        $index = isset($field['index']) ? $field['index'] : 0;
+        $id    = "extprofile-$name-$index";
+        $rel   = $id . '-rel';
+        $this->out->elementStart(
+            'div', array(
+                'id' => $id . '-edit',
+                'class' => 'phone-item'
+            )
+        );
+        $this->out->input(
+            $id,
+            null,
+            isset($field['value']) ? $field['value'] : null
+        );
+        $this->out->dropdown(
+            $id . '-rel',
+            'Type',
+            array(
+                'office' => 'Office',
+                'mobile' => 'Mobile',
+                'home'   => 'Home',
+                'pager'  => 'Pager',
+                'other'  => 'Other'
+            ),
+            null,
+            false,
+            isset($field['rel']) ? $field['rel'] : null
+        );
+
+        $this->showMultiControls();
+        $this->out->elementEnd('div');
+    }
+
+    protected function showEditableWebsite($name, $field)
+    {
+        $index = isset($field['index']) ? $field['index'] : 0;
+        $id    = "extprofile-$name-$index";
+        $rel   = $id . '-rel';
+        $this->out->elementStart(
+            'div', array(
+                'id' => $id . '-edit',
+                'class' => 'website-item'
+            )
+        );
+        $this->out->input(
+            $id,
+            null,
+            isset($field['value']) ? $field['value'] : null
+        );
+        $this->out->dropdown(
+            $id . '-rel',
+            'Type',
+            array(
+                'blog'     => 'Blog',
+                'homepage' => 'Homepage',
+                'facebook' => 'Facebook',
+                'linkedin' => 'LinkedIn',
+                'flickr'   => 'Flickr',
+                'google'   => 'Google Profile',
+                'other'    => 'Other',
+                'twitter'  => 'Twitter'
+            ),
+            null,
+            false,
+            isset($field['rel']) ? $field['rel'] : null
+        );
+
+        $this->showMultiControls();
+        $this->out->elementEnd('div');
+    }
+
+    protected function showExperience($name, $field)
+    {
+        $this->out->elementStart('div', 'experience-item');
+        $this->out->element('div', 'label', _m('Company'));
+
+        if (!empty($field['company'])) {
+            $this->out->element('div', 'field', $field['company']);
+
+            $this->out->element('div', 'label', _m('Start'));
+            $this->out->element(
+                'div',
+                array('class' => 'field date'),
+                date('j M Y', strtotime($field['start'])
+                )
+            );
+            $this->out->element('div', 'label', _m('End'));
+            $this->out->element(
+                'div',
+                array('class' => 'field date'),
+                date('j M Y', strtotime($field['end'])
+                )
+            );
+
+            if ($field['current']) {
+                $this->out->element(
+                    'div',
+                    array('class' => 'field current'),
+                    '(' . _m('Current') . ')'
+                );
+            }
+        }
+        $this->out->elementEnd('div');
+    }
+
+    protected function showEditableExperience($name, $field)
+    {
+        $index = isset($field['index']) ? $field['index'] : 0;
+        $id    = "extprofile-$name-$index";
+        $this->out->elementStart(
+            'div', array(
+                'id' => $id . '-edit',
+                'class' => 'experience-item'
+            )
+        );
+
+        $this->out->element('div', 'label', _m('Company'));
+        $this->out->input(
+            $id,
+            null,
+            isset($field['company']) ? $field['company'] : null
+        );
+
+        $this->out->element('div', 'label', _m('Start'));
+        $this->out->input(
+            $id . '-start',
+            null,
+            isset($field['start']) ? date('j M Y', strtotime($field['start'])) : null
+        );
+
+        $this->out->element('div', 'label', _m('End'));
+
+        $this->out->input(
+            $id . '-end',
+            null,
+            isset($field['end']) ? date('j M Y', strtotime($field['end'])) : null
+        );
+        $this->out->hidden(
+            $id . '-current',
+            'false'
+        );
+        $this->out->elementStart('div', 'current-checkbox');
+        $this->out->checkbox(
+            $id . '-current',
+            _m('Current'),
+            $field['current']
+        );
+        $this->out->elementEnd('div');
+
+        $this->showMultiControls();
+        $this->out->elementEnd('div');
+    }
+
+    protected function showEducation($name, $field)
+    {
+        $this->out->elementStart('div', 'education-item');
+        $this->out->element('div', 'label', _m('Institution'));
+        $this->out->element('div', 'field', $field['school']);
+        $this->out->element('div', 'label', _m('Degree'));
+        $this->out->element('div', 'field', $field['degree']);
+        $this->out->element('div', 'label', _m('Description'));
+        $this->out->element('div', 'field', $field['description']);
+        $this->out->element('div', 'label', _m('Start'));
+        $this->out->element(
+            'div',
+            array('class' => 'field date'),
+            date('j M Y', strtotime($field['start'])
+            )
+        );
+        $this->out->element('div', 'label', _m('End'));
+        $this->out->element(
+            'div',
+            array('class' => 'field date'),
+            date('j M Y', strtotime($field['end'])
+            )
+        );
+        $this->out->elementEnd('div');
+    }
+
+    protected function showEditableEducation($name, $field)
+    {
+        $index = isset($field['index']) ? $field['index'] : 0;
+        $id    = "extprofile-$name-$index";
+        $this->out->elementStart(
+            'div', array(
+                'id' => $id . '-edit',
+                'class' => 'education-item'
+            )
+        );
+        $this->out->element('div', 'label', _m('Institution'));
+        $this->out->input(
+            $id,
+            null,
+            isset($field['school']) ? $field['school'] : null
+        );
+
+        $this->out->element('div', 'label', _m('Degree'));
+        $this->out->input(
+            $id . '-degree',
+            null,
+            isset($field['degree']) ? $field['degree'] : null
+        );
+
+        $this->out->element('div', 'label', _m('Description'));
+        $this->out->element('div', 'field', $field['description']);
+
+        $this->out->textarea(
+            $id . '-description',
+            null,
+            isset($field['description']) ? $field['description'] : null
+        );
+
+        $this->out->element('div', 'label', _m('Start'));
+        $this->out->input(
+            $id . '-start',
+            null,
+            isset($field['start']) ? date('j M Y', strtotime($field['start'])) : null
+        );
+
+        $this->out->element('div', 'label', _m('End'));
+        $this->out->input(
+            $id . '-end',
+            null,
+            isset($field['end']) ? date('j M Y', strtotime($field['end'])) : null
+        );
+
+        $this->showMultiControls();
+        $this->out->elementEnd('div');
+    }
+
+    function showMultiControls()
+    {
+        $this->out->element(
+            'a',
+            array(
+                'class' => 'remove_row',
+                'href' => 'javascript://',
+                'style' => 'display: none;'
+            ),
+            '-'
+        );
+
+        $this->out->element(
+            'a',
+            array(
+                'class' => 'add_row',
+                'href' => 'javascript://',
+                'style' => 'display: none;'
+            ),
+            'Add another item'
+        );
+    }
+
+    /**
+     * Outputs the value of a field
+     *
+     * @param string $name  name of the field
+     * @param array  $field set of key/value pairs for the field
+     */
     protected function showFieldValue($name, $field)
     {
-        $this->out->text($name);
+        $type = strval(@$field['type']);
+
+        switch($type)
+        {
+        case '':
+        case 'text':
+        case 'textarea':
+            $this->out->text($this->ext->getTextValue($name));
+            break;
+        case 'date':
+            $value = $this->ext->getDateValue($name);
+            if (!empty($value)) {
+                $this->out->element(
+                    'div',
+                    array('class' => 'field date'),
+                    date('j M Y', strtotime($value))
+                );
+            }
+            break;
+        case 'person':
+            $this->out->text($this->ext->getTextValue($name));
+            break;
+        case 'tags':
+            $this->out->text($this->ext->getTags());
+            break;
+        case 'phone':
+            $this->showPhone($name, $field);
+            break;
+        case 'website':
+            $this->showWebsite($name, $field);
+            break;
+        case 'im':
+            $this->showIm($name, $field);
+            break;
+        case 'experience':
+            $this->showExperience($name, $field);
+            break;
+        case 'education':
+            $this->showEducation($name, $field);
+            break;
+        default:
+            $this->out->text("TYPE: $type");
+        }
     }
 
+    /**
+     * Show an editable version of the field
+     *
+     * @param string $name  name fo the field
+     * @param array  $field array of key/value pairs for the field
+     */
     protected function showEditableField($name, $field)
     {
         $out = $this->out;
-        //$out = new HTMLOutputter();
-        // @fixme
+
         $type = strval(@$field['type']);
         $id = "extprofile-" . $name;
+
         $value = 'placeholder';
 
         switch ($type) {
-            case '':
-            case 'text':
-                $out->input($id, null, $value);
-                break;
-            case 'textarea':
-                $out->textarea($id, null, $value);
-                break;
-            default:
-                $out->input($id, null, "TYPE: $type");
+        case '':
+        case 'text':
+            $out->input($id, null, $this->ext->getTextValue($name));
+            break;
+        case 'date':
+            $out->input(
+                $id,
+                null,
+                date('j M Y', strtotime($this->ext->getDateValue($name)))
+            );
+            break;
+        case 'person':
+            $out->input($id, null, $this->ext->getTextValue($name));
+            break;
+        case 'textarea':
+            $out->textarea($id, null,  $this->ext->getTextValue($name));
+            break;
+        case 'tags':
+            $out->input($id, null, $this->ext->getTags());
+            break;
+        case 'phone':
+            $this->showEditablePhone($name, $field);
+            break;
+        case 'im':
+            $this->showEditableIm($name, $field);
+            break;
+        case 'website':
+            $this->showEditableWebsite($name, $field);
+            break;
+        case 'experience':
+            $this->showEditableExperience($name, $field);
+            break;
+        case 'education':
+            $this->showEditableEducation($name, $field);
+            break;
+        default:
+            $out->input($id, null, "TYPE: $type");
         }
     }
+
+    /**
+     * Action elements
+     *
+     * @return void
+     */
+
+    function formActions()
+    {
+        $this->out->submit(
+            'save',
+            _m('BUTTON','Save'),
+            'submit form_action-secondary',
+            'save',
+            _('Save details')
+       );
+    }
+
+    /**
+     * ID of the form
+     *
+     * @return string ID of the form
+     */
+
+    function id()
+    {
+        return 'profile-details-' . $this->profile->id;
+    }
+
+    /**
+     * class of the form
+     *
+     * @return string of the form class
+     */
+
+    function formClass()
+    {
+        return 'form_profile_details form_settings';
+    }
+
+    /**
+     * Action of the form
+     *
+     * @return string URL of the action
+     */
+
+    function action()
+    {
+        return common_local_url('profiledetailsettings');
+    }
 }
diff --git a/plugins/ExtendedProfile/js/profiledetail.js b/plugins/ExtendedProfile/js/profiledetail.js
new file mode 100644 (file)
index 0000000..99a3f78
--- /dev/null
@@ -0,0 +1,144 @@
+var SN_EXTENDED = SN_EXTENDED || {};
+
+SN_EXTENDED.reorder = function(cls) {
+
+    var divs = $('div[class=' + cls + ']');
+
+    $(divs).each(function(i, div) {
+        $(div).find('a.add_row').hide();
+        $(div).find('a.remove_row').show();
+        SN_EXTENDED.replaceIndex(SN_EXTENDED.rowIndex(div), i);
+    });
+
+    var lastDiv = $(divs).last().closest('tr');
+    lastDiv.addClass('supersizeme');
+
+    $(divs).last().find('a.add_row').show();
+
+    if (divs.length == 1) {
+        $(divs).find('a.remove_row').fadeOut("slow");
+    }
+};
+
+SN_EXTENDED.rowIndex = function(div) {
+    var idstr = $(div).attr('id');
+    var id = idstr.match(/\d+/);
+    return id;
+};
+
+SN_EXTENDED.rowCount = function(cls) {
+    var divs = $.find('div[class=' + cls + ']');
+    return divs.length;
+};
+
+SN_EXTENDED.replaceIndex = function(elem, oldIndex, newIndex) {
+    $(elem).find('*').each(function() {
+        $.each(this.attributes, function(i, attrib) {
+            var regexp = /extprofile-.*-\d.*/;
+            var value = attrib.value;
+            var match = value.match(regexp);
+            if (match !== null) {
+                attrib.value = value.replace("-" + oldIndex, "-" + newIndex);
+            }
+        });
+    });
+}
+
+SN_EXTENDED.resetRow = function(elem) {
+    $(elem).find('input, textarea').attr('value', '');
+    $(elem).find('input').removeAttr('disabled');
+    $(elem).find("select option[value='office']").attr("selected", true);
+    $(elem).find("input:checkbox").attr('checked', false);
+    $(elem).find("input[name$=-start], input[name$=-end]").each(function() {
+        $(this).removeClass('hasDatepicker');
+        $(this).datepicker({ dateFormat: 'd M yy' });
+    });
+};
+
+SN_EXTENDED.addRow = function() {
+    var div = $(this).closest('div');
+    var id = div.attr('id');
+    var cls = div.attr('class');
+    var index = id.match(/\d+/);
+    var newIndex = parseInt(index) + 1;
+    var newtr = $(div).closest('tr').removeClass('supersizeme').clone();
+    SN_EXTENDED.replaceIndex(newtr, index, newIndex);
+    SN_EXTENDED.resetRow(newtr);
+    $(div).closest('tr').after(newtr);
+    SN_EXTENDED.reorder(cls);
+};
+
+SN_EXTENDED.removeRow = function() {
+
+    var div = $(this).closest('div');
+    var id = $(div).attr('id');
+    var cls = $(div).attr('class');
+    var that = this;
+
+    $("#confirm-dialog").dialog({
+        buttons : {
+            "Confirm" : function() {
+                $(this).dialog("close");
+                var target = $(that).closest('tr');
+                target.fadeOut("slow", function() {
+                    $(target).remove();
+                    SN_EXTENDED.reorder(cls);
+                });
+            },
+            "Cancel" : function() {
+                $(this).dialog("close");
+            }
+        }
+    });
+
+    var cnt = SN_EXTENDED.rowCount(cls);
+
+    if (cnt > 1) {
+        $("#confirm-dialog").dialog("open");
+    }
+};
+
+$(document).ready(function() {
+
+    $("#confirm-dialog").dialog({
+        autoOpen: false,
+        modal: true
+    });
+
+    $("input#extprofile-manager").autocomplete({
+        source: 'finduser',
+        minLength: 2 });
+
+    $("input[name$=-start], input[name$=-end], #extprofile-birthday").datepicker({ dateFormat: 'd M yy' });
+
+    var multifields = ["phone-item", "experience-item", "education-item", "im-item", 'website-item'];
+
+    for (f in multifields) {
+        SN_EXTENDED.reorder(multifields[f]);
+    }
+
+    $("input#extprofile-manager").autocomplete({
+        source: 'finduser',
+        minLength: 2 });
+
+    $('.add_row').live('click', SN_EXTENDED.addRow);
+    $('.remove_row').live('click', SN_EXTENDED.removeRow);
+
+    $('input:checkbox[name$=current]').each(function() {
+        var input = $(this).parent().siblings('input[id$=-end]');
+        if ($(this).is(':checked')) {
+            $(input).attr('disabled', 'true');
+        }
+    });
+
+    $('input:checkbox[name$=current]').live('click', function()  {
+        var input = $(this).parent().siblings('input[id$=-end]');
+        if ($(this).is(':checked')) {
+            $(input).val('');
+            $(input).attr('disabled', 'true');
+        } else {
+            $(input).removeAttr('disabled');
+        }
+    });
+
+});
diff --git a/plugins/ExtendedProfile/locale/sv/LC_MESSAGES/ExtendedProfile.po b/plugins/ExtendedProfile/locale/sv/LC_MESSAGES/ExtendedProfile.po
new file mode 100644 (file)
index 0000000..98224ba
--- /dev/null
@@ -0,0 +1,97 @@
+# Translation of StatusNet - ExtendedProfile to Swedish (Svenska)
+# Exported from translatewiki.net
+#
+# Author: WikiPhoenix
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - ExtendedProfile\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:18:04+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: 2011-03-08 01:22:06+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: sv\n"
+"X-Message-Group: #out-statusnet-plugin-extendedprofile\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "UI extensions for additional profile fields."
+msgstr ""
+
+#. TRANS: Link description in user account settings menu.
+msgid "Details"
+msgstr "Detaljer"
+
+msgid "More details..."
+msgstr "Mer detaljer..."
+
+msgid "Personal"
+msgstr "Personlig"
+
+msgid "Full name"
+msgstr "Fullt namn"
+
+msgid "Title"
+msgstr "Titel"
+
+msgid "Manager"
+msgstr ""
+
+msgid "Location"
+msgstr "Ort"
+
+msgid "Bio"
+msgstr ""
+
+msgid "Tags"
+msgstr "Taggar"
+
+msgid "Contact"
+msgstr "Kontakt"
+
+msgid "Phone"
+msgstr "Telefon"
+
+msgid "IM"
+msgstr ""
+
+msgid "Websites"
+msgstr "Webbsidor"
+
+msgid "Birthday"
+msgstr "Födelsedag"
+
+msgid "Spouse's name"
+msgstr "Partnerns namn"
+
+msgid "Kids' names"
+msgstr "Barnens namn"
+
+msgid "Work experience"
+msgstr "Arbetserfarenhet"
+
+msgid "Employer"
+msgstr "Arbetsgivare"
+
+msgid "Education"
+msgstr "Utbildning"
+
+msgid "Institution"
+msgstr "Institution"
+
+#. TRANS: Link title for link on user profile.
+msgid "Edit extended profile settings"
+msgstr "Redigera utökade profilinställningar"
+
+#. TRANS: Link text for link on user profile.
+msgid "Edit"
+msgstr "Redigera"
+
+msgid "Extended profile settings"
+msgstr "Utökade profilinställningar"
diff --git a/plugins/ExtendedProfile/locale/te/LC_MESSAGES/ExtendedProfile.po b/plugins/ExtendedProfile/locale/te/LC_MESSAGES/ExtendedProfile.po
new file mode 100644 (file)
index 0000000..cda6454
--- /dev/null
@@ -0,0 +1,97 @@
+# Translation of StatusNet - ExtendedProfile to Telugu (తెలుగు)
+# Exported from translatewiki.net
+#
+# Author: Veeven
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - ExtendedProfile\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:18:04+0000\n"
+"Language-Team: Telugu <http://translatewiki.net/wiki/Portal:te>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-POT-Import-Date: 2011-03-08 01:22:06+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: te\n"
+"X-Message-Group: #out-statusnet-plugin-extendedprofile\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "UI extensions for additional profile fields."
+msgstr ""
+
+#. TRANS: Link description in user account settings menu.
+msgid "Details"
+msgstr "వివరాలు"
+
+msgid "More details..."
+msgstr "మరిన్ని వివరాలు..."
+
+msgid "Personal"
+msgstr "వ్యక్తిగతం"
+
+msgid "Full name"
+msgstr "పూర్తి పేరు"
+
+msgid "Title"
+msgstr "శీర్షిక"
+
+msgid "Manager"
+msgstr ""
+
+msgid "Location"
+msgstr "ప్రాంతం"
+
+msgid "Bio"
+msgstr ""
+
+msgid "Tags"
+msgstr "ట్యాగులు"
+
+msgid "Contact"
+msgstr "సంప్రదించండి"
+
+msgid "Phone"
+msgstr ""
+
+msgid "IM"
+msgstr ""
+
+msgid "Websites"
+msgstr "జాలగూళ్ళు"
+
+msgid "Birthday"
+msgstr "పుట్టినరోజు"
+
+msgid "Spouse's name"
+msgstr ""
+
+msgid "Kids' names"
+msgstr "పిల్లల పేర్లు"
+
+msgid "Work experience"
+msgstr "ఉద్యోగ అనుభవం"
+
+msgid "Employer"
+msgstr ""
+
+msgid "Education"
+msgstr "చదువు"
+
+msgid "Institution"
+msgstr ""
+
+#. TRANS: Link title for link on user profile.
+msgid "Edit extended profile settings"
+msgstr ""
+
+#. TRANS: Link text for link on user profile.
+msgid "Edit"
+msgstr "మార్చు"
+
+msgid "Extended profile settings"
+msgstr ""
diff --git a/plugins/ExtendedProfile/profiledetail.css b/plugins/ExtendedProfile/profiledetail.css
deleted file mode 100644 (file)
index 836b647..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Note the #content is only needed to override weird crap in default styles */
-
-#content table.extended-profile {
-    width: 100%;
-    border-collapse: separate;
-    border-spacing: 8px;
-}
-#content table.extended-profile th {
-    color: #777;
-    background-color: #eee;
-    width: 150px;
-
-    padding-top: 0; /* override bizarre theme defaults */
-
-    text-align: right;
-    padding-right: 8px;
-}
-#content table.extended-profile td {
-    padding: 0; /* override bizarre theme defaults */
-
-    padding-left: 8px;
-}
\ No newline at end of file
index a4bb12956e5e002016c661809c9febd6a56740a7..a777a28e031cacbab9a47b2335fc97ad12c689da 100644 (file)
@@ -21,8 +21,9 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-class ProfileDetailAction extends ProfileAction
+class ProfileDetailAction extends ShowstreamAction
 {
+
     function isReadOnly($args)
     {
         return true;
@@ -33,28 +34,18 @@ class ProfileDetailAction extends ProfileAction
         return $this->profile->getFancyName();
     }
 
-    function showLocalNav()
-    {
-        $nav = new PersonalGroupNav($this);
-        $nav->show();
-    }
-
     function showStylesheets() {
         parent::showStylesheets();
-        $this->cssLink('plugins/ExtendedProfile/profiledetail.css');
+        $this->cssLink('plugins/ExtendedProfile/css/profiledetail.css');
         return true;
     }
 
-    function handle($args)
-    {
-        $this->showPage();
-    }
-
     function showContent()
     {
         $cur = common_current_user();
         if ($cur && $cur->id == $this->profile->id) { // your own page
             $this->elementStart('div', 'entity_actions');
+            $this->elementStart('ul');
             $this->elementStart('li', 'entity_edit');
             $this->element('a', array('href' => common_local_url('profiledetailsettings'),
                                       // TRANS: Link title for link on user profile.
@@ -62,6 +53,7 @@ class ProfileDetailAction extends ProfileAction
                            // TRANS: Link text for link on user profile.
                            _m('Edit'));
             $this->elementEnd('li');
+            $this->elementEnd('ul');
             $this->elementEnd('div');
         }
 
index 77d755c0b0f6be9813472c111d00d5e71f4f8459..7b03f247edc24c4f2b74973c0750edced615e701 100644 (file)
@@ -21,7 +21,7 @@ if (!defined('STATUSNET')) {
     exit(1);
 }
 
-class ProfileDetailSettingsAction extends AccountSettingsAction
+class ProfileDetailSettingsAction extends ProfileSettingsAction
 {
 
     function title()
@@ -43,13 +43,38 @@ class ProfileDetailSettingsAction extends AccountSettingsAction
 
     function showStylesheets() {
         parent::showStylesheets();
-        $this->cssLink('plugins/ExtendedProfile/profiledetail.css');
+        $this->cssLink('plugins/ExtendedProfile/css/profiledetail.css');
+        $this->cssLink('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css');
         return true;
     }
 
-    function handle($args)
+    function  showScripts() {
+        parent::showScripts();
+        $this->script('plugins/ExtendedProfile/js/profiledetail.js');
+        $this->script('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js');
+        return true;
+    }
+
+    function handlePost()
     {
-        $this->showPage();
+        // CSRF protection
+        $token = $this->trimmed('token');
+        if (!$token || $token != common_session_token()) {
+            $this->showForm(
+                _m(
+                    'There was a problem with your session token. '
+                    .   'Try again, please.'
+                  )
+            );
+            return;
+        }
+
+        if ($this->arg('save')) {
+            $this->saveDetails();
+        } else {
+            // TRANS: Message given submitting a form with an unknown action
+            $this->showForm(_m('Unexpected form submission.'));
+        }
     }
 
     function showContent()
@@ -57,7 +82,554 @@ class ProfileDetailSettingsAction extends AccountSettingsAction
         $cur = common_current_user();
         $profile = $cur->getProfile();
 
-        $widget = new ExtendedProfileWidget($this, $profile, ExtendedProfileWidget::EDITABLE);
+        $widget = new ExtendedProfileWidget(
+            $this,
+            $profile,
+            ExtendedProfileWidget::EDITABLE
+        );
         $widget->show();
     }
+
+    function saveDetails()
+    {
+        common_debug(var_export($_POST, true));
+
+        $user = common_current_user();
+
+        try {
+            $this->saveStandardProfileDetails($user);
+
+            $profile = $user->getProfile();
+
+            $simpleFieldNames = array('title', 'spouse', 'kids', 'manager');
+            $dateFieldNames   = array('birthday');
+
+            foreach ($simpleFieldNames as $name) {
+                $value = $this->trimmed('extprofile-' . $name);
+                if (!empty($value)) {
+                    $this->saveField($user, $name, $value);
+                }
+            }
+
+            foreach ($dateFieldNames as $name) {
+                $value = $this->trimmed('extprofile-' . $name);
+                $dateVal = $this->parseDate($name, $value);
+                $this->saveField(
+                    $user,
+                    $name,
+                    null,
+                    null,
+                    null,
+                    $dateVal
+                );
+            }
+
+            $this->savePhoneNumbers($user);
+            $this->saveIms($user);
+            $this->saveWebsites($user);
+            $this->saveExperiences($user);
+            $this->saveEducations($user);
+
+        } catch (Exception $e) {
+            $this->showForm($e->getMessage(), false);
+            return;
+        }
+
+        $this->showForm(_('Details saved.'), true);
+
+    }
+
+    function parseDate($fieldname, $datestr, $required = false)
+    {
+        if (empty($datestr) && $required) {
+            $msg = sprintf(
+                _m('You must supply a date for "%s".'),
+                $fieldname
+            );
+            throw new Exception($msg);
+        } else {
+            $ts = strtotime($datestr);
+            if ($ts === false) {
+                throw new Exception(
+                    sprintf(
+                        _m('Invalid date entered for "%s": %s'),
+                        $fieldname,
+                        $ts
+                    )
+                );
+            }
+            return common_sql_date($ts);
+        }
+        return null;
+    }
+
+    function savePhoneNumbers($user) {
+        $phones = $this->findPhoneNumbers();
+        $this->removeAll($user, 'phone');
+        $i = 0;
+        foreach($phones as $phone) {
+            if (!empty($phone['value'])) {
+                ++$i;
+                $this->saveField(
+                    $user,
+                    'phone',
+                    $phone['value'],
+                    $phone['rel'],
+                    $i
+                );
+            }
+        }
+    }
+
+    function findPhoneNumbers() {
+
+        // Form vals look like this:
+        // 'extprofile-phone-1' => '11332',
+        // 'extprofile-phone-1-rel' => 'mobile',
+
+        $phones     = $this->sliceParams('phone', 2);
+        $phoneArray = array();
+
+        foreach ($phones as $phone) {
+            list($number, $rel) = array_values($phone);
+            $phoneArray[] = array(
+                'value' => $number,
+                'rel'   => $rel
+            );
+        }
+
+        return $phoneArray;
+    }
+
+    function findIms() {
+
+        //  Form vals look like this:
+        // 'extprofile-im-0' => 'jed',
+        // 'extprofile-im-0-rel' => 'yahoo',
+
+        $ims     = $this->sliceParams('im', 2);
+        $imArray = array();
+
+        foreach ($ims as $im) {
+            list($id, $rel) = array_values($im);
+            $imArray[] = array(
+                'value' => $id,
+                'rel'   => $rel
+            );
+        }
+
+        return $imArray;
+    }
+
+    function saveIms($user) {
+        $ims = $this->findIms();
+        $this->removeAll($user, 'im');
+        $i = 0;
+        foreach($ims as $im) {
+            if (!empty($im['value'])) {
+                ++$i;
+                $this->saveField(
+                    $user,
+                    'im',
+                    $im['value'],
+                    $im['rel'],
+                    $i
+                );
+            }
+        }
+    }
+
+    function findWebsites() {
+
+        //  Form vals look like this:
+
+        $sites = $this->sliceParams('website', 2);
+        $wsArray = array();
+
+        foreach ($sites as $site) {
+            list($id, $rel) = array_values($site);
+            $wsArray[] = array(
+                'value' => $id,
+                'rel'   => $rel
+            );
+        }
+
+        return $wsArray;
+    }
+
+    function saveWebsites($user) {
+        $sites = $this->findWebsites();
+        $this->removeAll($user, 'website');
+        $i = 0;
+        foreach($sites as $site) {
+
+            if (!Validate::uri(
+                $site['value'],
+                array('allowed_schemes' => array('http', 'https')))
+            ) {
+                throw new Exception(sprintf(_m('Invalid URL: %s'), $site['value']));
+            }
+
+            if (!empty($site['value'])) {
+                ++$i;
+                $this->saveField(
+                    $user,
+                    'website',
+                    $site['value'],
+                    $site['rel'],
+                    $i
+                );
+            }
+        }
+    }
+
+    function findExperiences() {
+
+        // Form vals look like this:
+        // 'extprofile-experience-0'         => 'Bozotronix',
+        // 'extprofile-experience-0-current' => 'true'
+        // 'extprofile-experience-0-start'   => '1/5/10',
+        // 'extprofile-experience-0-end'     => '2/3/11',
+
+        $experiences = $this->sliceParams('experience', 4);
+        $expArray = array();
+
+        foreach ($experiences as $exp) {
+            if (sizeof($experiences) == 4) {
+                list($company, $current, $end, $start) = array_values($exp);
+            } else {
+                $end = null;
+                list($company, $current, $start) = array_values($exp);
+            }
+            if (!empty($company)) {
+                $expArray[] = array(
+                    'company' => $company,
+                    'start'   => $this->parseDate('Start', $start, true),
+                    'end'     => ($current == 'false') ? $this->parseDate('End', $end, true) : null,
+                    'current' => ($current == 'false') ? false : true
+                );
+            }
+        }
+
+        return $expArray;
+    }
+
+    function saveExperiences($user) {
+        common_debug('save experiences');
+        $experiences = $this->findExperiences();
+
+        $this->removeAll($user, 'company');
+        $this->removeAll($user, 'start');
+        $this->removeAll($user, 'end'); // also stores 'current'
+
+        $i = 0;
+        foreach($experiences as $experience) {
+            if (!empty($experience['company'])) {
+                ++$i;
+                $this->saveField(
+                    $user,
+                    'company',
+                    $experience['company'],
+                    null,
+                    $i
+                );
+
+                $this->saveField(
+                    $user,
+                    'start',
+                    null,
+                    null,
+                    $i,
+                    $experience['start']
+                );
+
+                // Save "current" employer indicator in rel
+                if ($experience['current']) {
+                    $this->saveField(
+                        $user,
+                        'end',
+                        null,
+                        'current', // rel
+                        $i
+                    );
+                } else {
+                    $this->saveField(
+                        $user,
+                        'end',
+                        null,
+                        null,
+                        $i,
+                        $experience['end']
+                    );
+                }
+
+            }
+        }
+    }
+
+    function findEducations() {
+
+        // Form vals look like this:
+        // 'extprofile-education-0-school' => 'Pigdog',
+        // 'extprofile-education-0-degree' => 'BA',
+        // 'extprofile-education-0-description' => 'Blar',
+        // 'extprofile-education-0-start' => '05/22/99',
+        // 'extprofile-education-0-end' => '05/22/05',
+
+        $edus = $this->sliceParams('education', 5);
+        $eduArray = array();
+
+        foreach ($edus as $edu) {
+            list($school, $degree, $description, $end, $start) = array_values($edu);
+            if (!empty($school)) {
+                $eduArray[] = array(
+                    'school'      => $school,
+                    'degree'      => $degree,
+                    'description' => $description,
+                    'start'       => $this->parseDate('Start', $start, true),
+                    'end'         => $this->parseDate('End', $end, true)
+                );
+            }
+        }
+
+        return $eduArray;
+    }
+
+
+    function saveEducations($user) {
+         common_debug('save education');
+         $edus = $this->findEducations();
+         common_debug(var_export($edus, true));
+
+         $this->removeAll($user, 'school');
+         $this->removeAll($user, 'degree');
+         $this->removeAll($user, 'degree_descr');
+         $this->removeAll($user, 'school_start');
+         $this->removeAll($user, 'school_end');
+
+         $i = 0;
+         foreach($edus as $edu) {
+             if (!empty($edu['school'])) {
+                 ++$i;
+                 $this->saveField(
+                     $user,
+                     'school',
+                     $edu['school'],
+                     null,
+                     $i
+                 );
+                 $this->saveField(
+                     $user,
+                     'degree',
+                     $edu['degree'],
+                     null,
+                     $i
+                 );
+                 $this->saveField(
+                     $user,
+                     'degree_descr',
+                     $edu['description'],
+                     null,
+                     $i
+                 );
+                 $this->saveField(
+                     $user,
+                     'school_start',
+                     null,
+                     null,
+                     $i,
+                     $edu['start']
+                 );
+
+                 $this->saveField(
+                     $user,
+                     'school_end',
+                     null,
+                     null,
+                     $i,
+                     $edu['end']
+                 );
+            }
+         }
+     }
+
+    function arraySplit($array, $pieces)
+    {
+        if ($pieces < 2) {
+            return array($array);
+        }
+
+        $newCount = ceil(count($array) / $pieces);
+        $a = array_slice($array, 0, $newCount);
+        $b = $this->arraySplit(array_slice($array, $newCount), $pieces - 1);
+
+        return array_merge(array($a), $b);
+    }
+
+    function findMultiParams($type) {
+        $formVals = array();
+        $target   = $type;
+        foreach ($_POST as $key => $val) {
+            if (strrpos('extprofile-' . $key, $target) !== false) {
+                $formVals[$key] = $val;
+            }
+        }
+        return $formVals;
+    }
+
+    function sliceParams($key, $size) {
+        $slice = array();
+        $params = $this->findMultiParams($key);
+        ksort($params);
+        $slice = $this->arraySplit($params, sizeof($params) / $size);
+        return $slice;
+    }
+
+    /**
+     * Save an extended profile field as a Profile_detail
+     *
+     * @param User   $user    the current user
+     * @param string $name    field name
+     * @param string $value   field value
+     * @param string $rel     field rel (type)
+     * @param int    $index   index (fields can have multiple values)
+     * @param date   $date    related date
+     */
+    function saveField($user, $name, $value, $rel = null, $index = null, $date = null)
+    {
+        $profile = $user->getProfile();
+        $detail  = new Profile_detail();
+
+        $detail->profile_id  = $profile->id;
+        $detail->field_name  = $name;
+        $detail->value_index = $index;
+
+        $result = $detail->find(true);
+
+        if (empty($result)) {
+            $detial->value_index = $index;
+            $detail->rel         = $rel;
+            $detail->field_value = $value;
+            $detail->date        = $date;
+            $detail->created     = common_sql_now();
+            $result = $detail->insert();
+            if (empty($result)) {
+                common_log_db_error($detail, 'INSERT', __FILE__);
+                $this->serverError(_m('Could not save profile details.'));
+            }
+        } else {
+            $orig = clone($detail);
+
+            $detail->field_value = $value;
+            $detail->rel         = $rel;
+            $detail->date        = $date;
+
+            $result = $detail->update($orig);
+            if (empty($result)) {
+                common_log_db_error($detail, 'UPDATE', __FILE__);
+                $this->serverError(_m('Could not save profile details.'));
+            }
+        }
+
+        $detail->free();
+    }
+
+    function removeAll($user, $name)
+    {
+        $profile = $user->getProfile();
+        $detail  = new Profile_detail();
+        $detail->profile_id  = $profile->id;
+        $detail->field_name  = $name;
+        $detail->delete();
+        $detail->free();
+    }
+
+    /**
+     * Save fields that should be stored in the main profile object
+     *
+     * XXX: There's a lot of dupe code here from ProfileSettingsAction.
+     *      Do not want.
+     *
+     * @param User $user the current user
+     */
+    function saveStandardProfileDetails($user)
+    {
+        $fullname  = $this->trimmed('extprofile-fullname');
+        $location  = $this->trimmed('extprofile-location');
+        $tagstring = $this->trimmed('extprofile-tags');
+        $bio       = $this->trimmed('extprofile-bio');
+
+        if ($tagstring) {
+            $tags = array_map(
+                'common_canonical_tag',
+                preg_split('/[\s,]+/', $tagstring)
+            );
+        } else {
+            $tags = array();
+        }
+
+        foreach ($tags as $tag) {
+            if (!common_valid_profile_tag($tag)) {
+                // TRANS: Validation error in form for profile settings.
+                // TRANS: %s is an invalid tag.
+                throw new Exception(sprintf(_m('Invalid tag: "%s".'), $tag));
+            }
+        }
+
+        $profile = $user->getProfile();
+
+        $oldTags = $user->getSelfTags();
+        $newTags = array_diff($tags, $oldTags);
+
+        if ($fullname    != $profile->fullname
+            || $location != $profile->location
+            || !empty($newTags)
+            || $bio      != $profile->bio) {
+
+            $orig = clone($profile);
+
+            $profile->nickname = $user->nickname;
+            $profile->fullname = $fullname;
+            $profile->bio      = $bio;
+            $profile->location = $location;
+
+            $loc = Location::fromName($location);
+
+            if (empty($loc)) {
+                $profile->lat         = null;
+                $profile->lon         = null;
+                $profile->location_id = null;
+                $profile->location_ns = null;
+            } else {
+                $profile->lat         = $loc->lat;
+                $profile->lon         = $loc->lon;
+                $profile->location_id = $loc->location_id;
+                $profile->location_ns = $loc->location_ns;
+            }
+
+            $profile->profileurl = common_profile_url($user->nickname);
+
+            $result = $profile->update($orig);
+
+            if ($result === false) {
+                common_log_db_error($profile, 'UPDATE', __FILE__);
+                // TRANS: Server error thrown when user profile settings could not be saved.
+                $this->serverError(_('Could not save profile.'));
+                return;
+            }
+
+            // Set the user tags
+            $result = $user->setSelfTags($tags);
+
+            if (!$result) {
+                // TRANS: Server error thrown when user profile settings tags could not be saved.
+                $this->serverError(_('Could not save tags.'));
+                return;
+            }
+
+            Event::handle('EndProfileSaveForm', array($this));
+            common_broadcast_profile($profile);
+        }
+    }
+
 }
diff --git a/plugins/Irc/locale/sv/LC_MESSAGES/Irc.po b/plugins/Irc/locale/sv/LC_MESSAGES/Irc.po
new file mode 100644 (file)
index 0000000..e554f17
--- /dev/null
@@ -0,0 +1,39 @@
+# Translation of StatusNet - Irc to Swedish (Svenska)
+# Exported from translatewiki.net
+#
+# Author: WikiPhoenix
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Irc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:18:23+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: 2011-03-08 01:22:54+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: sv\n"
+"X-Message-Group: #out-statusnet-plugin-irc\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "IRC"
+msgstr "IRC"
+
+msgid ""
+"The IRC plugin allows users to send and receive notices over an IRC network."
+msgstr ""
+"IRC-tillägget tillåter användare skicka och ta emot meddelanden över IRC-"
+"nätverket."
+
+#, php-format
+msgid "Could not increment attempts count for %d"
+msgstr ""
+
+msgid "Your nickname is not registered so IRC connectivity cannot be enabled"
+msgstr ""
+"Ditt smeknamn är inte registrerat, så IRC-anslutningar kan inte aktiveras"
index 435688ea722be13af6e84525844aae7039df2d03..62b39f6ff9cee70ed94e86c29c71ddf5859f9065 100644 (file)
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - MobileProfile\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-06 02:34+0100\n"
-"PO-Revision-Date: 2011-03-06 01:37:37+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:18:38+0000\n"
 "Language-Team: Telugu <http://translatewiki.net/wiki/Portal:te>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2011-03-03 17:49:34+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83348); Translate extension (2011-03-04)\n"
+"X-POT-Import-Date: 2011-03-08 01:22:09+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: te\n"
 "X-Message-Group: #out-statusnet-plugin-mobileprofile\n"
@@ -55,10 +55,10 @@ msgid "Search"
 msgstr "వెతుకు"
 
 msgid "Attach"
-msgstr ""
+msgstr "జోడించు"
 
 msgid "Attach a file"
-msgstr ""
+msgstr "ఒక దస్త్రాన్ని జోడించండి"
 
 #. TRANS: Link to switch site layout from mobile to desktop mode. Appears at very bottom of page.
 msgid "Switch to desktop site layout."
diff --git a/plugins/Msn/locale/sv/LC_MESSAGES/Msn.po b/plugins/Msn/locale/sv/LC_MESSAGES/Msn.po
new file mode 100644 (file)
index 0000000..6077703
--- /dev/null
@@ -0,0 +1,31 @@
+# Translation of StatusNet - Msn to Swedish (Svenska)
+# Exported from translatewiki.net
+#
+# Author: WikiPhoenix
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Msn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:18:41+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: 2011-03-08 01:22:11+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: sv\n"
+"X-Message-Group: #out-statusnet-plugin-msn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "MSN"
+msgstr "MSN"
+
+msgid ""
+"The MSN plugin allows users to send and receive notices over the MSN network."
+msgstr ""
+"MSN-tillägget tillåter användare skicka och ta emot meddelanden över MSN-"
+"nätverket."
index 6fbf6cc9770331fc8ff4cd0caa1ef2ef39dbac5f..11048a707aa35ff0fa956f2983f1f1cc587aa15e 100644 (file)
@@ -2,6 +2,7 @@
 # Exported from translatewiki.net
 #
 # Author: Fujnky
+# Author: George Animal
 # Author: The Evil IP address
 # --
 # This file is distributed under the same license as the StatusNet package.
@@ -10,13 +11,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - OpenX\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-06 02:34+0100\n"
-"PO-Revision-Date: 2011-03-06 01:37:51+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:18:54+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: 2011-03-03 17:45:43+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r83348); Translate extension (2011-03-04)\n"
+"X-POT-Import-Date: 2011-03-06 02:18:35+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: de\n"
 "X-Message-Group: #out-statusnet-plugin-openx\n"
@@ -61,7 +62,7 @@ msgstr ""
 
 #. TRANS: Form label in OpenX admin panel. Refers to advertisement format.
 msgid "Rectangle"
-msgstr ""
+msgstr "Rechteck"
 
 #. TRANS: Tooltip for form label in OpenX admin panel. Refers to advertisement format.
 msgid "Rectangle zone"
index 65aad4830ee31abe8146d448873faef5072ecc18..f5fa9bade553c12b5a12ca3991616817992837c1 100644 (file)
@@ -47,6 +47,7 @@ class Poll extends Managed_DataObject
 {
     public $__table = 'poll'; // table name
     public $id;          // char(36) primary key not null -> UUID
+    public $uri;
     public $profile_id;  // int -> profile.id
     public $question;    // text
     public $options;     // text; newline(?)-delimited
@@ -63,7 +64,6 @@ class Poll extends Managed_DataObject
      * @return User_greeting_count object found, or null for no hits
      *
      */
-
     function staticGet($k, $v=null)
     {
         return Memcached_DataObject::staticGet('Poll', $k, $v);
@@ -81,7 +81,6 @@ class Poll extends Managed_DataObject
      * @return Bookmark object found, or null for no hits
      *
      */
-
     function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Poll', $kv);
@@ -116,7 +115,6 @@ class Poll extends Managed_DataObject
      *
      * @return Poll found poll or null
      */
-
     function getByNotice($notice)
     {
         return self::staticGet('uri', $notice->uri);
@@ -127,6 +125,23 @@ class Poll extends Managed_DataObject
         return explode("\n", $this->options);
     }
 
+    /**
+     * Is this a valid selection index?
+     *
+     * @param numeric $selection (1-based)
+     * @return boolean
+     */
+    function isValidSelection($selection)
+    {
+        if ($selection != intval($selection)) {
+            return false;
+        }
+        if ($selection < 1 || $selection > count($this->getOptions())) {
+            return false;
+        }
+        return true;
+    }
+
     function getNotice()
     {
         return Notice::staticGet('uri', $this->uri);
@@ -191,7 +206,6 @@ class Poll extends Managed_DataObject
      *
      * @return Notice saved notice
      */
-
     static function saveNew($profile, $question, $opts, $options=null)
     {
         if (empty($options)) {
@@ -221,12 +235,15 @@ class Poll extends Managed_DataObject
         common_log(LOG_DEBUG, "Saving poll: $p->id $p->uri");
         $p->insert();
 
-        $content  = sprintf(_m('Poll: %s %s'),
+        // TRANS: Notice content creating a poll.
+        // TRANS: %1$s is the poll question, %2$s is a link to the poll.
+        $content  = sprintf(_m('Poll: %1$s %2$s'),
                             $question,
                             $p->uri);
-        $rendered = sprintf(_m('Poll: <a href="%s">%s</a>'),
-                            htmlspecialchars($p->uri),
-                            htmlspecialchars($question));
+        $link = '<a href="' . htmlspecialchars($p->uri) . '">' . htmlspecialchars($question) . '</a>';
+        // TRANS: Rendered version of the notice content creating a poll.
+        // TRANS: %s a link to the poll with the question as link description.
+        $rendered = sprintf(_m('Poll: %s'), $link);
 
         $tags    = array('poll');
         $replies = array();
index 6fa95aa0e7a0f0afbc3c037a408d4c0309f09d87..ea6ab9ecd99170a13eeee02191748454975162e5 100644 (file)
@@ -43,11 +43,13 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class PollPlugin extends MicroAppPlugin
 {
     const VERSION         = '0.1';
-    const POLL_OBJECT     = 'http://apinamespace.org/activitystreams/object/poll';
+
+    // @fixme which domain should we use for these namespaces?
+    const POLL_OBJECT          = 'http://activityschema.org/object/poll';
+    const POLL_RESPONSE_OBJECT = 'http://activityschema.org/object/poll-response';
 
     /**
      * Database schema setup
@@ -57,7 +59,6 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return boolean hook value; true means continue processing, false means stop.
      */
-
     function onCheckSchema()
     {
         $schema = Schema::get();
@@ -73,7 +74,6 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return boolean hook value
      */
-
     function onEndShowStyles($action)
     {
         $action->cssLink($this->path('poll.css'));
@@ -87,7 +87,6 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return boolean hook value; true means continue processing, false means stop.
      */
-
     function onAutoload($cls)
     {
         $dir = dirname(__FILE__);
@@ -120,12 +119,18 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return boolean hook value; true means continue processing, false means stop.
      */
-
     function onRouterInitialized($m)
     {
         $m->connect('main/poll/new',
-                    array('action' => 'newpoll'),
-                    array('id' => '[0-9]+'));
+                    array('action' => 'newpoll'));
+
+        $m->connect('main/poll/:id',
+                    array('action' => 'showpoll'),
+                    array('id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'));
+
+        $m->connect('main/poll/response/:id',
+                    array('action' => 'showpollresponse'),
+                    array('id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'));
 
         $m->connect('main/poll/:id/respond',
                     array('action' => 'respondpoll'),
@@ -141,7 +146,6 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return value
      */
-
     function onPluginVersion(&$versions)
     {
         $versions[] = array('name' => 'Poll',
@@ -149,13 +153,14 @@ class PollPlugin extends MicroAppPlugin
                             'author' => 'Brion Vibber',
                             'homepage' => 'http://status.net/wiki/Plugin:Poll',
                             'rawdescription' =>
+                            // TRANS: Plugin description.
                             _m('Simple extension for supporting basic polls.'));
         return true;
     }
 
     function types()
     {
-        return array(self::POLL_OBJECT);
+        return array(self::POLL_OBJECT, self::POLL_RESPONSE_OBJECT);
     }
 
     /**
@@ -165,7 +170,6 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return boolean hook value
      */
-
     function deleteRelated($notice)
     {
         $p = Poll::getByNotice($notice);
@@ -186,65 +190,238 @@ class PollPlugin extends MicroAppPlugin
      *
      * @return Notice resulting notice
      */
-
     function saveNoticeFromActivity($activity, $profile, $options=array())
     {
         // @fixme
+        common_log(LOG_DEBUG, "XXX activity: " . var_export($activity, true));
+        common_log(LOG_DEBUG, "XXX profile: " . var_export($profile, true));
+        common_log(LOG_DEBUG, "XXX options: " . var_export($options, true));
+
+        // Ok for now, we can grab stuff from the XML entry directly.
+        // This won't work when reading from JSON source
+        if ($activity->entry) {
+            $pollElements = $activity->entry->getElementsByTagNameNS(self::POLL_OBJECT, 'poll');
+            $responseElements = $activity->entry->getElementsByTagNameNS(self::POLL_OBJECT, 'response');
+            if ($pollElements->length) {
+                $question = '';
+                $opts = array();
+
+                $data = $pollElements->item(0);
+                foreach ($data->getElementsByTagNameNS(self::POLL_OBJECT, 'question') as $node) {
+                    $question = $node->textContent;
+                }
+                foreach ($data->getElementsByTagNameNS(self::POLL_OBJECT, 'option') as $node) {
+                    $opts[] = $node->textContent;
+                }
+                try {
+                    $notice = Poll::saveNew($profile, $question, $opts, $options);
+                    common_log(LOG_DEBUG, "Saved Poll from ActivityStream data ok: notice id " . $notice->id);
+                    return $notice;
+                } catch (Exception $e) {
+                    common_log(LOG_DEBUG, "Poll save from ActivityStream data failed: " . $e->getMessage());
+                }
+            } else if ($responseElements->length) {
+                $data = $responseElements->item(0);
+                $pollUri = $data->getAttribute('poll');
+                $selection = intval($data->getAttribute('selection'));
+
+                if (!$pollUri) {
+                    // TRANS: Exception thrown trying to respond to a poll without a poll reference.
+                    throw new Exception(_m('Invalid poll response: no poll reference.'));
+                }
+                $poll = Poll::staticGet('uri', $pollUri);
+                if (!$poll) {
+                    // TRANS: Exception thrown trying to respond to a non-existing poll.
+                    throw new Exception(_m('Invalid poll response: poll is unknown.'));
+                }
+                try {
+                    $notice = Poll_response::saveNew($profile, $poll, $selection, $options);
+                    common_log(LOG_DEBUG, "Saved Poll_response ok, notice id: " . $notice->id);
+                    return $notice;
+                } catch (Exception $e) {
+                    common_log(LOG_DEBUG, "Poll response  save fail: " . $e->getMessage());
+                }
+            } else {
+                common_log(LOG_DEBUG, "YYY no poll data");
+            }
+        }
     }
 
     function activityObjectFromNotice($notice)
     {
         assert($this->isMyNotice($notice));
 
+        switch ($notice->object_type) {
+        case self::POLL_OBJECT:
+            return $this->activityObjectFromNoticePoll($notice);
+        case self::POLL_RESPONSE_OBJECT:
+            return $this->activityObjectFromNoticePollResponse($notice);
+        default:
+            // TRANS: Exception thrown when performing an unexpected action on a poll.
+            // TRANS: %s is the unpexpected object type.
+            throw new Exception(sprintf(_m('Unexpected type for poll plugin: %s.'), $notice->object_type));
+        }
+    }
+
+    function activityObjectFromNoticePollResponse($notice)
+    {
         $object = new ActivityObject();
         $object->id      = $notice->uri;
         $object->type    = self::POLL_OBJECT;
-        $object->title   = 'Poll title';
-        $object->summary = 'Poll summary';
+        $object->title   = $notice->content;
+        $object->summary = $notice->content;
+        $object->link    = $notice->bestUrl();
+
+        $response = Poll_response::getByNotice($notice);
+        if ($response) {
+            $poll = $response->getPoll();
+            if ($poll) {
+                // Stash data to be formatted later by
+                // $this->activityObjectOutputAtom() or
+                // $this->activityObjectOutputJson()...
+                $object->pollSelection = intval($response->selection);
+                $object->pollUri = $poll->uri;
+            }
+        }
+        return $object;
+    }
+
+    function activityObjectFromNoticePoll($notice)
+    {
+        $object = new ActivityObject();
+        $object->id      = $notice->uri;
+        $object->type    = self::POLL_RESPONSE_OBJECT;
+        $object->title   = $notice->content;
+        $object->summary = $notice->content;
         $object->link    = $notice->bestUrl();
 
         $poll = Poll::getByNotice($notice);
-        /**
-         * Adding the poll-specific data. There's no standard in AS for polls,
-         * so we're making stuff up.
-         *
-         * For the moment, using a kind of icky-looking schema that happens to
-         * work with out code for generating both Atom and JSON forms, though
-         * I don't like it:
-         *
-         * <poll:data xmlns:poll="http://apinamespace.org/activitystreams/object/poll"
-         *            question="Who wants a poll question?"
-         *            option1="Option one"
-         *            option2="Option two"
-         *            option3="Option three"></poll:data>
-         *
-         * "poll:data": {
-         *     "xmlns:poll": http://apinamespace.org/activitystreams/object/poll
-         *     "question": "Who wants a poll question?"
-         *     "option1": "Option one"
-         *     "option2": "Option two"
-         *     "option3": "Option three"
-         * }
-         *
-         */
-        // @fixme there's no way to specify an XML node tree here, like <poll><option/><option/></poll>
-        // @fixme there's no way to specify a JSON array or multi-level tree unless you break the XML attribs
-        // @fixme XML node contents don't get shown in JSON
-        $data = array('xmlns:poll' => self::POLL_OBJECT,
-                      'question'   => $poll->question);
-        foreach ($poll->getOptions() as $i => $opt) {
-            $data['option' . ($i + 1)] = $opt;
+        if ($poll) {
+            // Stash data to be formatted later by
+            // $this->activityObjectOutputAtom() or
+            // $this->activityObjectOutputJson()...
+            $object->pollQuestion = $poll->question;
+            $object->pollOptions = $poll->getOptions();
         }
-        $object->extra[] = array('poll:data', $data, '');
+
         return $object;
     }
 
+    /**
+     * Called when generating Atom XML ActivityStreams output from an
+     * ActivityObject belonging to this plugin. Gives the plugin
+     * a chance to add custom output.
+     *
+     * Note that you can only add output of additional XML elements,
+     * not change existing stuff here.
+     *
+     * If output is already handled by the base Activity classes,
+     * you can leave this base implementation as a no-op.
+     *
+     * @param ActivityObject $obj
+     * @param XMLOutputter $out to add elements at end of object
+     */
+    function activityObjectOutputAtom(ActivityObject $obj, XMLOutputter $out)
+    {
+        if (isset($obj->pollQuestion)) {
+            /**
+             * <poll:poll xmlns:poll="http://apinamespace.org/activitystreams/object/poll">
+             *   <poll:question>Who wants a poll question?</poll:question>
+             *   <poll:option>Option one</poll:option>
+             *   <poll:option>Option two</poll:option>
+             *   <poll:option>Option three</poll:option>
+             * </poll:poll>
+             */
+            $data = array('xmlns:poll' => self::POLL_OBJECT);
+            $out->elementStart('poll:poll', $data);
+            $out->element('poll:question', array(), $obj->pollQuestion);
+            foreach ($obj->pollOptions as $opt) {
+                $out->element('poll:option', array(), $opt);
+            }
+            $out->elementEnd('poll:poll');
+        }
+        if (isset($obj->pollSelection)) {
+            /**
+             * <poll:response xmlns:poll="http://apinamespace.org/activitystreams/object/poll">
+             *                poll="http://..../poll/...."
+             *                selection="3" />
+             */
+            $data = array('xmlns:poll' => self::POLL_OBJECT,
+                          'poll'       => $obj->pollUri,
+                          'selection'  => $obj->pollSelection);
+            $out->element('poll:response', $data, '');
+        }
+    }
+
+    /**
+     * Called when generating JSON ActivityStreams output from an
+     * ActivityObject belonging to this plugin. Gives the plugin
+     * a chance to add custom output.
+     *
+     * Modify the array contents to your heart's content, and it'll
+     * all get serialized out as JSON.
+     *
+     * If output is already handled by the base Activity classes,
+     * you can leave this base implementation as a no-op.
+     *
+     * @param ActivityObject $obj
+     * @param array &$out JSON-targeted array which can be modified
+     */
+    public function activityObjectOutputJson(ActivityObject $obj, array &$out)
+    {
+        common_log(LOG_DEBUG, 'QQQ: ' . var_export($obj, true));
+        if (isset($obj->pollQuestion)) {
+            /**
+             * "poll": {
+             *   "question": "Who wants a poll question?",
+             *   "options": [
+             *     "Option 1",
+             *     "Option 2",
+             *     "Option 3"
+             *   ]
+             * }
+             */
+            $data = array('question' => $obj->pollQuestion,
+                          'options' => array());
+            foreach ($obj->pollOptions as $opt) {
+                $data['options'][] = $opt;
+            }
+            $out['poll'] = $data;
+        }
+        if (isset($obj->pollSelection)) {
+            /**
+             * "pollResponse": {
+             *   "poll": "http://..../poll/....",
+             *   "selection": 3
+             * }
+             */
+            $data = array('poll'       => $obj->pollUri,
+                          'selection'  => $obj->pollSelection);
+            $out['pollResponse'] = $data;
+        }
+    }
+
+
     /**
      * @fixme WARNING WARNING WARNING parent class closes the final div that we
      * open here, but we probably shouldn't open it here. Check parent class
      * and Bookmark plugin for if that's right.
      */
     function showNotice($notice, $out)
+    {
+        switch ($notice->object_type) {
+        case self::POLL_OBJECT:
+            return $this->showNoticePoll($notice, $out);
+        case self::POLL_RESPONSE_OBJECT:
+            return $this->showNoticePollResponse($notice, $out);
+        default:
+            // TRANS: Exception thrown when performing an unexpected action on a poll.
+            // TRANS: %s is the unpexpected object type.
+            throw new Exception(sprintf(_m('Unexpected type for poll plugin: %s.'), $notice->object_type));
+        }
+    }
+
+    function showNoticePoll($notice, $out)
     {
         $user = common_current_user();
 
@@ -267,7 +444,7 @@ class PollPlugin extends MicroAppPlugin
                 $form->show();
             }
         } else {
-            $out->text('Poll data is missing');
+            $out->text(_('Poll data is missing'));
         }
         $out->elementEnd('div');
 
@@ -275,6 +452,18 @@ class PollPlugin extends MicroAppPlugin
         $out->elementStart('div', array('class' => 'entry-content'));
     }
 
+    function showNoticePollResponse($notice, $out)
+    {
+        $user = common_current_user();
+
+        // @hack we want regular rendering, then just add stuff after that
+        $nli = new NoticeListItem($notice, $out);
+        $nli->showNotice();
+
+        // @fixme
+        $out->elementStart('div', array('class' => 'entry-content'));
+    }
+
     function entryForm($out)
     {
         return new NewPollForm($out);
@@ -288,6 +477,7 @@ class PollPlugin extends MicroAppPlugin
 
     function appTitle()
     {
-        return _m('Poll');
+        // TRANS: Application title.
+        return _m('APPTITLE','Poll');
     }
 }
index 44bc421c221780bc3a0530ee01a164f178460966..a4ea999933ecdd146a7a80070d17cd9f355c8217 100644 (file)
@@ -42,11 +42,11 @@ if (!defined('STATUSNET')) {
  *
  * @see      DB_DataObject
  */
-
 class Poll_response extends Managed_DataObject
 {
     public $__table = 'poll_response'; // table name
-    public $poll_id;     // char(36) primary key not null -> UUID
+    public $id;          // char(36) primary key not null -> UUID
+    public $poll_id;     // char(36) -> poll.id UUID
     public $profile_id;  // int -> profile.id
     public $selection;   // int -> choice #
     public $created;     // datetime
@@ -62,7 +62,6 @@ class Poll_response extends Managed_DataObject
      * @return User_greeting_count object found, or null for no hits
      *
      */
-
     function staticGet($k, $v=null)
     {
         return Memcached_DataObject::staticGet('Poll_response', $k, $v);
@@ -80,7 +79,6 @@ class Poll_response extends Managed_DataObject
      * @return Bookmark object found, or null for no hits
      *
      */
-
     function pkeyGet($kv)
     {
         return Memcached_DataObject::pkeyGet('Poll_response', $kv);
@@ -94,12 +92,16 @@ class Poll_response extends Managed_DataObject
         return array(
             'description' => 'Record of responses to polls',
             'fields' => array(
-                'poll_id' => array('type' => 'char', 'length' => 36, 'not null' => true, 'description' => 'UUID'),
+                'id' => array('type' => 'char', 'length' => 36, 'not null' => true, 'description' => 'UUID of the response'),
+                'uri' => array('type' => 'varchar', 'length' => 255, 'not null' => true, 'description' => 'UUID to the response notice'),
+                'poll_id' => array('type' => 'char', 'length' => 36, 'not null' => true, 'description' => 'UUID of poll being responded to'),
                 'profile_id' => array('type' => 'int'),
                 'selection' => array('type' => 'int'),
                 'created' => array('type' => 'datetime', 'not null' => true),
             ),
+            'primary key' => array('id'),
             'unique keys' => array(
+                'poll_uri_key' => array('uri'),
                 'poll_response_poll_id_profile_id_key' => array('poll_id', 'profile_id'),
             ),
             'indexes' => array(
@@ -107,4 +109,117 @@ class Poll_response extends Managed_DataObject
             )
         );
     }
+
+    /**
+     * Get a poll response based on a notice
+     *
+     * @param Notice $notice Notice to check for
+     *
+     * @return Poll_response found response or null
+     */
+    function getByNotice($notice)
+    {
+        return self::staticGet('uri', $notice->uri);
+    }
+
+    /**
+     * Get the notice that belongs to this response...
+     *
+     * @return Notice
+     */
+    function getNotice()
+    {
+        return Notice::staticGet('uri', $this->uri);
+    }
+
+    function bestUrl()
+    {
+        return $this->getNotice()->bestUrl();
+    }
+
+    /**
+     *
+     * @return Poll
+     */
+    function getPoll()
+    {
+        return Poll::staticGet('id', $this->poll_id);
+    }
+    /**
+     * Save a new poll notice
+     *
+     * @param Profile $profile
+     * @param Poll    $poll the poll being responded to
+     * @param int     $selection (1-based)
+     * @param array   $opts (poll responses)
+     *
+     * @return Notice saved notice
+     */
+    static function saveNew($profile, $poll, $selection, $options=null)
+    {
+        if (empty($options)) {
+            $options = array();
+        }
+
+        if (!$poll->isValidSelection($selection)) {
+            // TRANS: Client exception thrown when responding to a poll with an invalid option.
+            throw new ClientException(_m('Invalid poll selection.'));
+        }
+        $opts = $poll->getOptions();
+        $answer = $opts[$selection - 1];
+
+        $pr = new Poll_response();
+        $pr->id          = UUID::gen();
+        $pr->profile_id  = $profile->id;
+        $pr->poll_id     = $poll->id;
+        $pr->selection   = $selection;
+
+        if (array_key_exists('created', $options)) {
+            $pr->created = $options['created'];
+        } else {
+            $pr->created = common_sql_now();
+        }
+
+        if (array_key_exists('uri', $options)) {
+            $pr->uri = $options['uri'];
+        } else {
+            $pr->uri = common_local_url('showpollresponse',
+                                        array('id' => $pr->id));
+        }
+
+        common_log(LOG_DEBUG, "Saving poll response: $pr->id $pr->uri");
+        $pr->insert();
+
+        // TRANS: Notice content voting for a poll.
+        // TRANS: %s is the chosen option in the poll.
+        $content  = sprintf(_m('voted for "%s"'),
+                            $answer);
+        $link = '<a href="' . htmlspecialchars($poll->uri) . '">' . htmlspecialchars($answer) . '</a>';
+        // TRANS: Rendered version of the notice content voting for a poll.
+        // TRANS: %s a link to the poll with the chosen option as link description.
+        $rendered = sprintf(_m('voted for "%s"'), $link);
+
+        $tags    = array();
+        $replies = array();
+
+        $options = array_merge(array('urls' => array(),
+                                     'rendered' => $rendered,
+                                     'tags' => $tags,
+                                     'replies' => $replies,
+                                     'reply_to' => $poll->getNotice()->id,
+                                     'object_type' => PollPlugin::POLL_RESPONSE_OBJECT),
+                               $options);
+
+        if (!array_key_exists('uri', $options)) {
+            $options['uri'] = $pr->uri;
+        }
+
+        $saved = Notice::saveNew($profile->id,
+                                 $content,
+                                 array_key_exists('source', $options) ?
+                                 $options['source'] : 'web',
+                                 $options);
+
+        return $saved;
+    }
 }
diff --git a/plugins/Poll/locale/Poll.pot b/plugins/Poll/locale/Poll.pot
new file mode 100644 (file)
index 0000000..85b1b74
--- /dev/null
@@ -0,0 +1,175 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. TRANS: Client exception thrown trying to view a non-existing poll.
+#: showpoll.php:68
+msgid "No such poll."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to view a non-existing poll notice.
+#: showpoll.php:76
+msgid "No such poll notice."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to view a poll of a non-existing user.
+#: showpoll.php:83
+msgid "No such user."
+msgstr ""
+
+#. TRANS: Server exception thrown trying to view a poll for a user for which the profile could not be loaded.
+#: showpoll.php:90
+msgid "User without a profile."
+msgstr ""
+
+#. TRANS: Page title for a poll.
+#. TRANS: %1$s is the nickname of the user that created the poll, %2$s is the poll question.
+#: showpoll.php:109
+#, php-format
+msgid "%1$s's poll: %2$s"
+msgstr ""
+
+#. TRANS: Field label on the page to create a poll.
+#: newpollform.php:107
+msgid "Question"
+msgstr ""
+
+#. TRANS: Field title on the page to create a poll.
+#: newpollform.php:110
+msgid "What question are people answering?"
+msgstr ""
+
+#. TRANS: Field label for an answer option on the page to create a poll.
+#. TRANS: %d is the option number.
+#: newpollform.php:128
+#, php-format
+msgid "Option %d"
+msgstr ""
+
+#. TRANS: Button text for saving a new poll.
+#: newpollform.php:145
+msgctxt "BUTTON"
+msgid "Save"
+msgstr ""
+
+#. TRANS: Plugin description.
+#: PollPlugin.php:157
+msgid "Simple extension for supporting basic polls."
+msgstr ""
+
+#. TRANS: Exception thrown trying to respond to a poll without a poll reference.
+#: PollPlugin.php:234
+msgid "Invalid poll response: no poll reference."
+msgstr ""
+
+#. TRANS: Exception thrown trying to respond to a non-existing poll.
+#: PollPlugin.php:239
+msgid "Invalid poll response: poll is unknown."
+msgstr ""
+
+#. TRANS: Exception thrown when performing an unexpected action on a poll.
+#. TRANS: %s is the unpexpected object type.
+#: PollPlugin.php:266 PollPlugin.php:371
+#, php-format
+msgid "Unexpected type for poll plugin: %s."
+msgstr ""
+
+#. TRANS: Application title.
+#: PollPlugin.php:432
+msgctxt "APPTITLE"
+msgid "Poll"
+msgstr ""
+
+#. TRANS: Client exception thrown when responding to a poll with an invalid option.
+#. TRANS: Client exception thrown responding to a poll with an invalid answer.
+#: Poll_response.php:166 respondpoll.php:102
+msgid "Invalid poll selection."
+msgstr ""
+
+#. TRANS: Notice content voting for a poll.
+#. TRANS: %s is the chosen option in the poll.
+#. TRANS: Rendered version of the notice content voting for a poll.
+#. TRANS: %s a link to the poll with the chosen option as link description.
+#: Poll_response.php:195 Poll_response.php:200
+#, php-format
+msgid "voted for \"%s\""
+msgstr ""
+
+#. TRANS: Button text for submitting a poll response.
+#: pollresponseform.php:127
+msgctxt "BUTTON"
+msgid "Submit"
+msgstr ""
+
+#. TRANS: Notice content creating a poll.
+#. TRANS: %1$s is the poll question, %2$s is a link to the poll.
+#: Poll.php:240
+#, php-format
+msgid "Poll: %1$s %2$s"
+msgstr ""
+
+#. TRANS: Rendered version of the notice content creating a poll.
+#. TRANS: %s a link to the poll with the question as link description.
+#: Poll.php:246
+#, php-format
+msgid "Poll: %s"
+msgstr ""
+
+#. TRANS: Title for poll page.
+#: newpoll.php:63
+msgid "New poll"
+msgstr ""
+
+#. TRANS: Client exception thrown trying to create a poll while not logged in.
+#: newpoll.php:81
+msgid "You must be logged in to post a poll."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to create a poll without a question.
+#: newpoll.php:133
+msgid "Poll must have a question."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to create a poll with fewer than two options.
+#: newpoll.php:138
+msgid "Poll must have at least two options."
+msgstr ""
+
+#. TRANS: Page title after sending a notice.
+#: newpoll.php:157
+msgid "Notice posted"
+msgstr ""
+
+#. TRANS: Page title for poll response.
+#: respondpoll.php:63
+msgid "Poll response"
+msgstr ""
+
+#. TRANS: Client exception thrown trying to respond to a poll while not logged in.
+#: respondpoll.php:84
+msgid "You must be logged in to respond to a poll."
+msgstr ""
+
+#. TRANS: Client exception thrown trying to respond to a non-existing poll.
+#: respondpoll.php:96
+msgid "Invalid or missing poll."
+msgstr ""
+
+#. TRANS: Page title after sending a poll response.
+#: respondpoll.php:152
+msgid "Poll results"
+msgstr ""
index fa6eb798d7228eae2c95c91093c6b8465d0cbad9..1048b0a1edd930d87b89cb4a99d600993b56bda1 100644 (file)
@@ -43,7 +43,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class NewPollAction extends Action
 {
     protected $user        = null;
@@ -58,10 +57,10 @@ class NewPollAction extends Action
      *
      * @return string Action title
      */
-
     function title()
     {
-        return _('New poll');
+        // TRANS: Title for poll page.
+        return _m('New poll');
     }
 
     /**
@@ -71,7 +70,6 @@ class NewPollAction extends Action
      *
      * @return boolean true
      */
-
     function prepare($argarray)
     {
         parent::prepare($argarray);
@@ -79,7 +77,8 @@ class NewPollAction extends Action
         $this->user = common_current_user();
 
         if (empty($this->user)) {
-            throw new ClientException(_("Must be logged in to post a poll."),
+            // TRANS: Client exception thrown trying to create a poll while not logged in.
+            throw new ClientException(_m('You must be logged in to post a poll.'),
                                       403);
         }
 
@@ -105,7 +104,6 @@ class NewPollAction extends Action
      *
      * @return void
      */
-
     function handle($argarray=null)
     {
         parent::handle($argarray);
@@ -124,7 +122,6 @@ class NewPollAction extends Action
      *
      * @return void
      */
-
     function newPoll()
     {
         if ($this->boolean('ajax')) {
@@ -132,18 +129,19 @@ class NewPollAction extends Action
         }
         try {
             if (empty($this->question)) {
-                throw new ClientException(_('Poll must have a question.'));
+            // TRANS: Client exception thrown trying to create a poll without a question.
+                throw new ClientException(_m('Poll must have a question.'));
             }
 
             if (count($this->options) < 2) {
-                throw new ClientException(_('Poll must have at least two options.'));
+                // TRANS: Client exception thrown trying to create a poll with fewer than two options.
+                throw new ClientException(_m('Poll must have at least two options.'));
             }
 
 
             $saved = Poll::saveNew($this->user->getProfile(),
                                               $this->question,
                                               $this->options);
-
         } catch (ClientException $ce) {
             $this->error = $ce->getMessage();
             $this->showPage();
@@ -156,7 +154,7 @@ class NewPollAction extends Action
             $this->elementStart('html');
             $this->elementStart('head');
             // TRANS: Page title after sending a notice.
-            $this->element('title', null, _('Notice posted'));
+            $this->element('title', null, _m('Notice posted'));
             $this->elementEnd('head');
             $this->elementStart('body');
             $this->showNotice($saved);
@@ -188,7 +186,6 @@ class NewPollAction extends Action
      *
      * @return void
      */
-
     function showContent()
     {
         if (!empty($this->error)) {
@@ -213,7 +210,6 @@ class NewPollAction extends Action
      *
      * @return boolean is read only action?
      */
-
     function isReadOnly($args)
     {
         if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
index 73e516c891c39770101038581e205b87a438e24a..295619b1b9ea3bf2366da66195b9aa79eda9d195 100644 (file)
@@ -44,10 +44,8 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class NewpollForm extends Form
 {
-
     protected $question = null;
     protected $options = array();
 
@@ -58,7 +56,6 @@ class NewpollForm extends Form
      *
      * @return void
      */
-
     function __construct($out=null, $question=null, $options=null)
     {
         parent::__construct($out);
@@ -69,7 +66,6 @@ class NewpollForm extends Form
      *
      * @return int ID of the form
      */
-
     function id()
     {
         return 'newpoll-form';
@@ -80,7 +76,6 @@ class NewpollForm extends Form
      *
      * @return string class of the form
      */
-
     function formClass()
     {
         return 'form_settings ajax-notice';
@@ -91,7 +86,6 @@ class NewpollForm extends Form
      *
      * @return string URL of the action
      */
-
     function action()
     {
         return common_local_url('newpoll');
@@ -102,7 +96,6 @@ class NewpollForm extends Form
      *
      * @return void
      */
-
     function formData()
     {
         $this->out->elementStart('fieldset', array('id' => 'newpoll-data'));
@@ -110,8 +103,10 @@ class NewpollForm extends Form
 
         $this->li();
         $this->out->input('question',
+                          // TRANS: Field label on the page to create a poll.
                           _m('Question'),
                           $this->question,
+                          // TRANS: Field title on the page to create a poll.
                           _m('What question are people answering?'));
         $this->unli();
 
@@ -128,6 +123,8 @@ class NewpollForm extends Form
             }
             $this->li();
             $this->out->input('option' . ($i + 1),
+                              // TRANS: Field label for an answer option on the page to create a poll.
+                              // TRANS: %d is the option number.
                               sprintf(_m('Option %d'), $i + 1),
                               $default);
             $this->unli();
@@ -142,9 +139,9 @@ class NewpollForm extends Form
      *
      * @return void
      */
-
     function formActions()
     {
+        // TRANS: Button text for saving a new poll.
         $this->out->submit('submit', _m('BUTTON', 'Save'));
     }
 }
index 015dbb1b1f65105df1289401b022b629442a6bbd..ce1c31f6c20eeb1eb1691b2dd39b94de01ea8d0b 100644 (file)
@@ -44,7 +44,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class PollResponseForm extends Form
 {
     protected $poll;
@@ -57,7 +56,6 @@ class PollResponseForm extends Form
      *
      * @return void
      */
-
     function __construct(Poll $poll, HTMLOutputter $out)
     {
         parent::__construct($out);
@@ -69,7 +67,6 @@ class PollResponseForm extends Form
      *
      * @return int ID of the form
      */
-
     function id()
     {
         return 'pollresponse-form';
@@ -80,7 +77,6 @@ class PollResponseForm extends Form
      *
      * @return string class of the form
      */
-
     function formClass()
     {
         return 'form_settings ajax';
@@ -91,7 +87,6 @@ class PollResponseForm extends Form
      *
      * @return string URL of the action
      */
-
     function action()
     {
         return common_local_url('respondpoll', array('id' => $this->poll->id));
@@ -102,7 +97,6 @@ class PollResponseForm extends Form
      *
      * @return void
      */
-
     function formData()
     {
         $poll = $this->poll;
@@ -127,9 +121,9 @@ class PollResponseForm extends Form
      *
      * @return void
      */
-
     function formActions()
     {
+        // TRANS: Button text for submitting a poll response.
         $this->out->submit('submit', _m('BUTTON', 'Submit'));
     }
 }
index f4da10cb535747a270f725446cddc646d5669db4..0701482e6840f6b194270b275c34e4f703649d4c 100644 (file)
@@ -44,7 +44,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class PollResultForm extends Form
 {
     protected $poll;
@@ -57,7 +56,6 @@ class PollResultForm extends Form
      *
      * @return void
      */
-
     function __construct(Poll $poll, HTMLOutputter $out)
     {
         parent::__construct($out);
@@ -69,7 +67,6 @@ class PollResultForm extends Form
      *
      * @return int ID of the form
      */
-
     function id()
     {
         return 'pollresult-form';
@@ -80,7 +77,6 @@ class PollResultForm extends Form
      *
      * @return string class of the form
      */
-
     function formClass()
     {
         return 'form_settings ajax';
@@ -91,7 +87,6 @@ class PollResultForm extends Form
      *
      * @return string URL of the action
      */
-
     function action()
     {
         return common_local_url('respondpoll', array('id' => $this->poll->id));
@@ -102,7 +97,6 @@ class PollResultForm extends Form
      *
      * @return void
      */
-
     function formData()
     {
         $poll = $this->poll;
@@ -143,7 +137,6 @@ class PollResultForm extends Form
      *
      * @return void
      */
-
     function formActions()
     {
     }
index 07a5235406dec8505378a32b21d5a73d781487dc..74629c3604b2ba10846b6c5cc1b7164b519fb772 100644 (file)
@@ -3,7 +3,7 @@
  * StatusNet - the distributed open-source microblogging tool
  * Copyright (C) 2011, StatusNet, Inc.
  *
- * Add a new Poll
+ * Respond to a Poll
  *
  * PHP version 5
  *
@@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
 }
 
 /**
- * Add a new Poll
+ * Respond to a Poll
  *
  * @category  Poll
  * @package   StatusNet
@@ -43,7 +43,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class RespondPollAction extends Action
 {
     protected $user        = null;
@@ -58,9 +57,9 @@ class RespondPollAction extends Action
      *
      * @return string Action title
      */
-
     function title()
     {
+        // TRANS: Page title for poll response.
         return _m('Poll response');
     }
 
@@ -71,15 +70,18 @@ class RespondPollAction extends Action
      *
      * @return boolean true
      */
-
     function prepare($argarray)
     {
         parent::prepare($argarray);
+        if ($this->boolean('ajax')) {
+            StatusNet::setApi(true);
+        }
 
         $this->user = common_current_user();
 
         if (empty($this->user)) {
-            throw new ClientException(_m("Must be logged in to respond to a poll."),
+            // TRANS: Client exception thrown trying to respond to a poll while not logged in.
+            throw new ClientException(_m("You must be logged in to respond to a poll."),
                                       403);
         }
 
@@ -90,11 +92,13 @@ class RespondPollAction extends Action
         $id = $this->trimmed('id');
         $this->poll = Poll::staticGet('id', $id);
         if (empty($this->poll)) {
-            throw new ClientException(_m("Invalid or missing poll."), 404);
+            // TRANS: Client exception thrown trying to respond to a non-existing poll.
+            throw new ClientException(_m('Invalid or missing poll.'), 404);
         }
 
         $selection = intval($this->trimmed('pollselection'));
         if ($selection < 1 || $selection > count($this->poll->getOptions())) {
+            // TRANS: Client exception thrown responding to a poll with an invalid answer.
             throw new ClientException(_m('Invalid poll selection.'));
         }
         $this->selection = $selection;
@@ -109,7 +113,6 @@ class RespondPollAction extends Action
      *
      * @return void
      */
-
     function handle($argarray=null)
     {
         parent::handle($argarray);
@@ -128,24 +131,19 @@ class RespondPollAction extends Action
      *
      * @return void
      */
-
     function respondPoll()
     {
         try {
-            $response = new Poll_response();
-            $response->poll_id = $this->poll->id;
-            $response->profile_id = $this->user->id;
-            $response->selection = $this->selection;
-            $response->created = common_sql_now();
-            $response->insert();
-
+            $notice = Poll_response::saveNew($this->user->getProfile(),
+                                             $this->poll,
+                                             $this->selection);
         } catch (ClientException $ce) {
             $this->error = $ce->getMessage();
             $this->showPage();
             return;
         }
 
-        if ($this->arg('ajax')) {
+        if ($this->boolean('ajax')) {
             header('Content-Type: text/xml;charset=utf-8');
             $this->xw->startDocument('1.0', 'UTF-8');
             $this->elementStart('html');
@@ -168,7 +166,6 @@ class RespondPollAction extends Action
      *
      * @return void
      */
-
     function showContent()
     {
         if (!empty($this->error)) {
@@ -191,7 +188,6 @@ class RespondPollAction extends Action
      *
      * @return boolean is read only action?
      */
-
     function isReadOnly($args)
     {
         if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
index 21ac7647c00f0e8dd4bd052cfff23915ca83af9a..d95b1c512ef34acfcae72858827ccd58d0869b71 100644 (file)
@@ -44,7 +44,6 @@ if (!defined('STATUSNET')) {
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
  * @link      http://status.net/
  */
-
 class ShowPollAction extends ShownoticeAction
 {
     protected $poll = null;
@@ -56,7 +55,6 @@ class ShowPollAction extends ShownoticeAction
      *
      * @return boolean true
      */
-
     function prepare($argarray)
     {
         OwnerDesignAction::prepare($argarray);
@@ -66,6 +64,7 @@ class ShowPollAction extends ShownoticeAction
         $this->poll = Poll::staticGet('id', $this->id);
 
         if (empty($this->poll)) {
+            // TRANS: Client exception thrown trying to view a non-existing poll.
             throw new ClientException(_m('No such poll.'), 404);
         }
 
@@ -73,18 +72,21 @@ class ShowPollAction extends ShownoticeAction
 
         if (empty($this->notice)) {
             // Did we used to have it, and it got deleted?
+            // TRANS: Client exception thrown trying to view a non-existing poll notice.
             throw new ClientException(_m('No such poll notice.'), 404);
         }
 
         $this->user = User::staticGet('id', $this->poll->profile_id);
 
         if (empty($this->user)) {
+            // TRANS: Client exception thrown trying to view a poll of a non-existing user.
             throw new ClientException(_m('No such user.'), 404);
         }
 
         $this->profile = $this->user->getProfile();
 
         if (empty($this->profile)) {
+            // TRANS: Server exception thrown trying to view a poll for a user for which the profile could not be loaded.
             throw new ServerException(_m('User without a profile.'));
         }
 
@@ -100,10 +102,11 @@ class ShowPollAction extends ShownoticeAction
      *
      * @return string page tile
      */
-
     function title()
     {
-        return sprintf(_('%s\'s poll: %s'),
+        // TRANS: Page title for a poll.
+        // TRANS: %1$s is the nickname of the user that created the poll, %2$s is the poll question.
+        return sprintf(_m('%1$s\'s poll: %2$s'),
                        $this->user->nickname,
                        $this->poll->question);
     }
@@ -124,5 +127,4 @@ class ShowPollAction extends ShownoticeAction
     {
         return Action::etag();
     }
-
 }
index 9b36d87f3795b8c27084b10e2020274f40059a5b..0c52427eb6a70ab069a15e6c91c4e25b2abc0efc 100644 (file)
@@ -1,9 +1,12 @@
+As of StatusNet 1.0.x, actual formatting of the notices is done server-side,
+loaded by AJAX after the real-time notification comes in. This has the drawback
+that we may make extra HTTP requests and delay incoming notices a little, but
+means that formatting and internationalization is consistent.
+
 == TODO ==
-* i18n
 * Update mark behaviour (on notice send)
 * Pause, Send a notice ~ should not update counter
 * Pause ~ retain up to 50-100 most recent notices
-* Add geo data
 * Make it work for Conversation page (perhaps a little tricky)
 * IE is updating the counter in document title all the time (Not sure if this
   is still an issue)
index 246b1f9735d9ef8596115c17cf95708404239649..108a6c3b60ff60b8e284f98f4d037ec9eeaa8701 100644 (file)
@@ -45,9 +45,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  */
 class RealtimePlugin extends Plugin
 {
-    protected $replyurl = null;
-    protected $favorurl = null;
-    protected $deleteurl = null;
+    protected $showurl = null;
 
     /**
      * When it's time to initialize the plugin, calculate and
@@ -56,11 +54,8 @@ class RealtimePlugin extends Plugin
 
     function onInitializePlugin()
     {
-        $this->replyurl = common_local_url('newnotice');
-        $this->favorurl = common_local_url('favor');
-        $this->repeaturl = common_local_url('repeat');
         // FIXME: need to find a better way to pass this pattern in
-        $this->deleteurl = common_local_url('deletenotice',
+        $this->showurl = common_local_url('shownotice',
                                             array('notice' => '0000000000'));
         return true;
     }
@@ -323,7 +318,12 @@ class RealtimePlugin extends Plugin
 
     function _getScripts()
     {
-        return array(Plugin::staticPath('Realtime', 'realtimeupdate.min.js'));
+        if (common_config('site', 'minify')) {
+            $js = 'realtimeupdate.min.js';
+        } else {
+            $js = 'realtimeupdate.js';
+        }
+        return array(Plugin::staticPath('Realtime', $js));
     }
 
     /**
@@ -354,7 +354,7 @@ class RealtimePlugin extends Plugin
 
     function _updateInitialize($timeline, $user_id)
     {
-        return "RealtimeUpdate.init($user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->repeaturl\", \"$this->deleteurl\"); ";
+        return "RealtimeUpdate.init($user_id, \"$this->showurl\"); ";
     }
 
     function _connect()
index e615895cab9e3989ec9667d71be50041403d39b6..59e3fe72d770f19249bd26a99b8a94900eade18a 100644 (file)
  */
 RealtimeUpdate = {
      _userid: 0,
-     _replyurl: '',
-     _favorurl: '',
-     _repeaturl: '',
-     _deleteurl: '',
+     _showurl: '',
      _updatecounter: 0,
      _maxnotices: 50,
      _windowhasfocus: true,
@@ -66,21 +63,15 @@ RealtimeUpdate = {
       * feed data into the RealtimeUpdate object!
       *
       * @param {int} userid: local profile ID of the currently logged-in user
-      * @param {String} replyurl: URL for newnotice action, used when generating reply buttons
-      * @param {String} favorurl: URL for favor action, used when generating fave buttons
-      * @param {String} repeaturl: URL for repeat action, used when generating repeat buttons
-      * @param {String} deleteurl: URL template for deletenotice action, used when generating delete buttons.
+      * @param {String} showurl: URL for shownotice action, used when fetching formatting notices.
       *                            This URL contains a stub value of 0000000000 which will be replaced with the notice ID.
       *
       * @access public
       */
-     init: function(userid, replyurl, favorurl, repeaturl, deleteurl)
+     init: function(userid, showurl)
      {
         RealtimeUpdate._userid = userid;
-        RealtimeUpdate._replyurl = replyurl;
-        RealtimeUpdate._favorurl = favorurl;
-        RealtimeUpdate._repeaturl = repeaturl;
-        RealtimeUpdate._deleteurl = deleteurl;
+        RealtimeUpdate._showurl = showurl;
 
         RealtimeUpdate._documenttitle = document.title;
 
@@ -163,50 +154,51 @@ RealtimeUpdate = {
             return;
         }
 
-        var noticeItem = RealtimeUpdate.makeNoticeItem(data);
-        var noticeItemID = $(noticeItem).attr('id');
-
-        var list = $("#notices_primary .notices:first")
-        var prepend = true;
-
-        var threaded = list.hasClass('threaded-notices');
-        if (threaded && data.in_reply_to_status_id) {
-            // aho!
-            var parent = $('#notice-' + data.in_reply_to_status_id);
-            if (parent.length == 0) {
-                // @todo fetch the original, insert it, and finish the rest
-            } else {
-                // Check the parent notice to make sure it's not a reply itself.
-                // If so, use it's parent as the parent.
-                var parentList = parent.closest('.notices');
-                if (parentList.hasClass('threaded-replies')) {
-                    parent = parentList.closest('.notice');
-                }
-                list = parent.find('.threaded-replies');
-                if (list.length == 0) {
-                    list = $('<ul class="notices threaded-replies xoxo"></ul>');
-                    parent.append(list);
+        RealtimeUpdate.makeNoticeItem(data, function(noticeItem) {
+            var noticeItemID = $(noticeItem).attr('id');
+
+            var list = $("#notices_primary .notices:first")
+            var prepend = true;
+
+            var threaded = list.hasClass('threaded-notices');
+            if (threaded && data.in_reply_to_status_id) {
+                // aho!
+                var parent = $('#notice-' + data.in_reply_to_status_id);
+                if (parent.length == 0) {
+                    // @todo fetch the original, insert it, and finish the rest
+                } else {
+                    // Check the parent notice to make sure it's not a reply itself.
+                    // If so, use it's parent as the parent.
+                    var parentList = parent.closest('.notices');
+                    if (parentList.hasClass('threaded-replies')) {
+                        parent = parentList.closest('.notice');
+                    }
+                    list = parent.find('.threaded-replies');
+                    if (list.length == 0) {
+                        list = $('<ul class="notices threaded-replies xoxo"></ul>');
+                        parent.append(list);
+                    }
+                    prepend = false;
                 }
-                prepend = false;
             }
-        }
 
-        var newNotice = $(noticeItem);
-        if (prepend) {
-            list.prepend(newNotice);
-        } else {
-            var placeholder = list.find('li.notice-reply-placeholder')
-            if (placeholder.length > 0) {
-                newNotice.insertBefore(placeholder)
+            var newNotice = $(noticeItem);
+            if (prepend) {
+                list.prepend(newNotice);
             } else {
-                newNotice.appendTo(list);
-                SN.U.NoticeInlineReplyPlaceholder(parent);
+                var placeholder = list.find('li.notice-reply-placeholder')
+                if (placeholder.length > 0) {
+                    newNotice.insertBefore(placeholder)
+                } else {
+                    newNotice.appendTo(list);
+                    SN.U.NoticeInlineReplyPlaceholder(parent);
+                }
             }
-        }
-        newNotice.css({display:"none"}).fadeIn(1000);
+            newNotice.css({display:"none"}).fadeIn(1000);
 
-        SN.U.NoticeReplyTo($('#'+noticeItemID));
-        SN.U.NoticeWithAttachment($('#'+noticeItemID));
+            SN.U.NoticeReplyTo($('#'+noticeItemID));
+            SN.U.NoticeWithAttachment($('#'+noticeItemID));
+        });
      },
 
      /**
@@ -263,86 +255,24 @@ RealtimeUpdate = {
      },
 
      /**
-      * Builds a notice HTML block from JSON API-style data.
+      * Builds a notice HTML block from JSON API-style data;
+      * loads data from server, so runs async.
       *
       * @param {Object} data: extended JSON API-formatted notice
-      * @return {String} HTML fragment
-      *
-      * @fixme this replicates core StatusNet code, making maintenance harder
-      * @fixme sloppy HTML building (raw concat without escaping)
-      * @fixme no i18n support
-      * @fixme local variables pollute global namespace
+      * @param {function} callback: function(DOMNode) to receive new code
       *
       * @access private
       */
-     makeNoticeItem: function(data)
+     makeNoticeItem: function(data, callback)
      {
-          if (data.hasOwnProperty('retweeted_status')) {
-               original = data['retweeted_status'];
-               repeat   = data;
-               data     = original;
-               unique   = repeat['id'];
-               responsible = repeat['user'];
-          } else {
-               original = null;
-               repeat = null;
-               unique = data['id'];
-               responsible = data['user'];
-          }
-
-          user = data['user'];
-          html = data['html'].replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/g,'"').replace(/&amp;/g,'&');
-          source = data['source'].replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/g,'"').replace(/&amp;/g,'&');
-
-          ni = "<li class=\"hentry notice\" id=\"notice-"+unique+"\">"+
-               "<div class=\"entry-title\">"+
-               "<span class=\"vcard author\">"+
-               "<a href=\""+user['profile_url']+"\" class=\"url\" title=\""+user['name']+"\">"+
-               "<img src=\""+user['profile_image_url']+"\" class=\"avatar photo\" width=\"48\" height=\"48\" alt=\""+user['screen_name']+"\"/>"+
-               "<span class=\"nickname fn\">"+user['screen_name']+"</span>"+
-               "</a>"+
-               "</span>"+
-               "<p class=\"entry-content\">"+html+"</p>"+
-               "</div>"+
-               "<div class=\"entry-content\">"+
-               "<a class=\"timestamp\" rel=\"bookmark\" href=\""+data['url']+"\" >"+
-               "<abbr class=\"published\" title=\""+data['created_at']+"\">a few seconds ago</abbr>"+
-               "</a> "+
-               "<span class=\"source\">"+
-               "from "+
-                "<span class=\"device\">"+source+"</span>"+ // may have a link
-               "</span>";
-          if (data['conversation_url']) {
-               ni = ni+" <a class=\"response\" href=\""+data['conversation_url']+"\">in context</a>";
-          }
-
-          if (repeat) {
-               ru = repeat['user'];
-               ni = ni + "<span class=\"repeat vcard\">Repeated by " +
-                    "<a href=\"" + ru['profile_url'] + "\" class=\"url\">" +
-                    "<span class=\"nickname\">"+ ru['screen_name'] + "</span></a></span>";
-          }
-
-          ni = ni+"</div>";
-
-          ni = ni + "<div class=\"notice-options\">";
-
-          if (RealtimeUpdate._userid != 0) {
-               var input = $("form#form_notice fieldset input#token");
-               var session_key = input.val();
-               ni = ni+RealtimeUpdate.makeFavoriteForm(data['id'], session_key);
-               ni = ni+RealtimeUpdate.makeReplyLink(data['id'], data['user']['screen_name']);
-               if (RealtimeUpdate._userid == responsible['id']) {
-                    ni = ni+RealtimeUpdate.makeDeleteLink(data['id']);
-               } else if (RealtimeUpdate._userid != user['id']) {
-                    ni = ni+RealtimeUpdate.makeRepeatForm(data['id'],  session_key);
-               }
-          }
-
-          ni = ni+"</div>";
-
-          ni = ni+"</li>";
-          return ni;
+         var url = RealtimeUpdate._showurl.replace('0000000000', data.id);
+         $.get(url, {ajax: 1}, function(data, textStatus, xhr) {
+             var notice = $('li.notice:first', data);
+             if (notice.length) {
+                 var node = document._importNode(notice[0], true);
+                 callback(node);
+             }
+         });
      },
 
      /**
index 931de982efdc4d4d7342390c54ae2fff556b25ac..7e77f9070999aa49709a638f37b354733e0ef121 100644 (file)
@@ -1 +1 @@
-RealtimeUpdate={_userid:0,_replyurl:"",_favorurl:"",_repeaturl:"",_deleteurl:"",_updatecounter:0,_maxnotices:50,_windowhasfocus:true,_documenttitle:"",_paused:false,_queuedNotices:[],init:function(c,b,d,e,a){RealtimeUpdate._userid=c;RealtimeUpdate._replyurl=b;RealtimeUpdate._favorurl=d;RealtimeUpdate._repeaturl=e;RealtimeUpdate._deleteurl=a;RealtimeUpdate._documenttitle=document.title;$(window).bind("focus",function(){RealtimeUpdate._windowhasfocus=true;RealtimeUpdate._updatecounter=0;RealtimeUpdate.removeWindowCounter()});$(window).bind("blur",function(){$("#notices_primary .notice").removeClass("mark-top");$("#notices_primary .notice:first").addClass("mark-top");RealtimeUpdate._windowhasfocus=false;return false})},receive:function(a){if(RealtimeUpdate.isNoticeVisible(a.id)){return}if(RealtimeUpdate._paused===false){RealtimeUpdate.purgeLastNoticeItem();RealtimeUpdate.insertNoticeItem(a)}else{RealtimeUpdate._queuedNotices.push(a);RealtimeUpdate.updateQueuedCounter()}RealtimeUpdate.updateWindowCounter()},insertNoticeItem:function(b){if(RealtimeUpdate.isNoticeVisible(b.id)){return}var a=RealtimeUpdate.makeNoticeItem(b);var c=$(a).attr("id");var d=$("#notices_primary .notices:first");var j=true;var e=d.hasClass("threaded-notices");if(e&&b.in_reply_to_status_id){var g=$("#notice-"+b.in_reply_to_status_id);if(g.length==0){}else{var h=g.closest(".notices");if(h.hasClass("threaded-replies")){g=h.closest(".notice")}d=g.find(".threaded-replies");if(d.length==0){d=$('<ul class="notices threaded-replies xoxo"></ul>');g.append(d)}j=false}}var i=$(a);if(j){d.prepend(i)}else{var f=d.find("li.notice-reply-placeholder");if(f.length>0){i.insertBefore(f)}else{i.appendTo(d);SN.U.NoticeInlineReplyPlaceholder(g)}}i.css({display:"none"}).fadeIn(1000);SN.U.NoticeReplyTo($("#"+c));SN.U.NoticeWithAttachment($("#"+c))},isNoticeVisible:function(a){return($("#notice-"+a).length>0)},purgeLastNoticeItem:function(){if($("#notices_primary .notice").length>RealtimeUpdate._maxnotices){$("#notices_primary .notice:last").remove()}},updateWindowCounter:function(){if(RealtimeUpdate._windowhasfocus===false){RealtimeUpdate._updatecounter+=1;document.title="("+RealtimeUpdate._updatecounter+") "+RealtimeUpdate._documenttitle}},removeWindowCounter:function(){document.title=RealtimeUpdate._documenttitle},makeNoticeItem:function(c){if(c.hasOwnProperty("retweeted_status")){original=c.retweeted_status;repeat=c;c=original;unique=repeat.id;responsible=repeat.user}else{original=null;repeat=null;unique=c.id;responsible=c.user}user=c.user;html=c.html.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&amp;/g,"&");source=c.source.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&amp;/g,"&");ni='<li class="hentry notice" id="notice-'+unique+'"><div class="entry-title"><span class="vcard author"><a href="'+user.profile_url+'" class="url" title="'+user.name+'"><img src="'+user.profile_image_url+'" class="avatar photo" width="48" height="48" alt="'+user.screen_name+'"/><span class="nickname fn">'+user.screen_name+'</span></a></span><p class="entry-content">'+html+'</p></div><div class="entry-content"><a class="timestamp" rel="bookmark" href="'+c.url+'" ><abbr class="published" title="'+c.created_at+'">a few seconds ago</abbr></a> <span class="source">from <span class="device">'+source+"</span></span>";if(c.conversation_url){ni=ni+' <a class="response" href="'+c.conversation_url+'">in context</a>'}if(repeat){ru=repeat.user;ni=ni+'<span class="repeat vcard">Repeated by <a href="'+ru.profile_url+'" class="url"><span class="nickname">'+ru.screen_name+"</span></a></span>"}ni=ni+"</div>";ni=ni+'<div class="notice-options">';if(RealtimeUpdate._userid!=0){var a=$("form#form_notice fieldset input#token");var b=a.val();ni=ni+RealtimeUpdate.makeFavoriteForm(c.id,b);ni=ni+RealtimeUpdate.makeReplyLink(c.id,c.user["screen_name"]);if(RealtimeUpdate._userid==responsible.id){ni=ni+RealtimeUpdate.makeDeleteLink(c.id)}else{if(RealtimeUpdate._userid!=user.id){ni=ni+RealtimeUpdate.makeRepeatForm(c.id,b)}}}ni=ni+"</div>";ni=ni+"</li>";return ni},makeFavoriteForm:function(c,b){var a;a='<form id="favor-'+c+'" class="form_favor" method="post" action="'+RealtimeUpdate._favorurl+'"><fieldset><legend>Favor this notice</legend><input name="token-'+c+'" type="hidden" id="token-'+c+'" value="'+b+'"/><input name="notice" type="hidden" id="notice-n'+c+'" value="'+c+'"/><input type="submit" id="favor-submit-'+c+'" name="favor-submit-'+c+'" class="submit" value="Favor" title="Favor this notice"/></fieldset></form>';return a},makeReplyLink:function(c,a){var b;b='<a class="notice_reply" href="'+RealtimeUpdate._replyurl+"?replyto="+a+'" title="Reply to this notice">Reply <span class="notice_id">'+c+"</span></a>";return b},makeRepeatForm:function(c,b){var a;a='<form id="repeat-'+c+'" class="form_repeat" method="post" action="'+RealtimeUpdate._repeaturl+'"><fieldset><legend>Repeat this notice?</legend><input name="token-'+c+'" type="hidden" id="token-'+c+'" value="'+b+'"/><input name="notice" type="hidden" id="notice-'+c+'" value="'+c+'"/><input type="submit" id="repeat-submit-'+c+'" name="repeat-submit-'+c+'" class="submit" value="Yes" title="Repeat this notice"/></fieldset></form>';return a},makeDeleteLink:function(c){var b,a;a=RealtimeUpdate._deleteurl.replace("0000000000",c);b='<a class="notice_delete" href="'+a+'" title="Delete this notice">Delete</a>';return b},initActions:function(a,b,c){$("#notices_primary").prepend('<ul id="realtime_actions"><li id="realtime_playpause"></li><li id="realtime_timeline"></li></ul>');RealtimeUpdate._pluginPath=c;RealtimeUpdate.initPlayPause();RealtimeUpdate.initAddPopup(a,b,RealtimeUpdate._pluginPath)},initPlayPause:function(){if(typeof(localStorage)=="undefined"){RealtimeUpdate.showPause()}else{if(localStorage.getItem("RealtimeUpdate_paused")==="true"){RealtimeUpdate.showPlay()}else{RealtimeUpdate.showPause()}}},showPause:function(){RealtimeUpdate.setPause(false);RealtimeUpdate.showQueuedNotices();RealtimeUpdate.addNoticesHover();$("#realtime_playpause").remove();$("#realtime_actions").prepend('<li id="realtime_playpause"><button id="realtime_pause" class="pause"></button></li>');$("#realtime_pause").text(SN.msg("realtime_pause")).attr("title",SN.msg("realtime_pause_tooltip")).bind("click",function(){RealtimeUpdate.removeNoticesHover();RealtimeUpdate.showPlay();return false})},showPlay:function(){RealtimeUpdate.setPause(true);$("#realtime_playpause").remove();$("#realtime_actions").prepend('<li id="realtime_playpause"><span id="queued_counter"></span> <button id="realtime_play" class="play"></button></li>');$("#realtime_play").text(SN.msg("realtime_play")).attr("title",SN.msg("realtime_play_tooltip")).bind("click",function(){RealtimeUpdate.showPause();return false})},setPause:function(a){RealtimeUpdate._paused=a;if(typeof(localStorage)!="undefined"){localStorage.setItem("RealtimeUpdate_paused",RealtimeUpdate._paused)}},showQueuedNotices:function(){$.each(RealtimeUpdate._queuedNotices,function(a,b){RealtimeUpdate.insertNoticeItem(b)});RealtimeUpdate._queuedNotices=[];RealtimeUpdate.removeQueuedCounter()},updateQueuedCounter:function(){$("#realtime_playpause #queued_counter").html("("+RealtimeUpdate._queuedNotices.length+")")},removeQueuedCounter:function(){$("#realtime_playpause #queued_counter").empty()},addNoticesHover:function(){$("#notices_primary .notices").hover(function(){if(RealtimeUpdate._paused===false){RealtimeUpdate.showPlay()}},function(){if(RealtimeUpdate._paused===true){RealtimeUpdate.showPause()}})},removeNoticesHover:function(){$("#notices_primary .notices").unbind()},initAddPopup:function(a,b,c){$("#realtime_timeline").append('<button id="realtime_popup"></button>');$("#realtime_popup").text(SN.msg("realtime_popup")).attr("title",SN.msg("realtime_popup_tooltip")).bind("click",function(){window.open(a,"","toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550");return false})},initPopupWindow:function(){$(".notices .entry-title a, .notices .entry-content a").bind("click",function(){window.open(this.href,"");return false});$("#showstream .entity_profile").css({width:"69%"})}};
\ No newline at end of file
+RealtimeUpdate={_userid:0,_showurl:"",_updatecounter:0,_maxnotices:50,_windowhasfocus:true,_documenttitle:"",_paused:false,_queuedNotices:[],init:function(a,b){RealtimeUpdate._userid=a;RealtimeUpdate._showurl=b;RealtimeUpdate._documenttitle=document.title;$(window).bind("focus",function(){RealtimeUpdate._windowhasfocus=true;RealtimeUpdate._updatecounter=0;RealtimeUpdate.removeWindowCounter()});$(window).bind("blur",function(){$("#notices_primary .notice").removeClass("mark-top");$("#notices_primary .notice:first").addClass("mark-top");RealtimeUpdate._windowhasfocus=false;return false})},receive:function(a){if(RealtimeUpdate.isNoticeVisible(a.id)){return}if(RealtimeUpdate._paused===false){RealtimeUpdate.purgeLastNoticeItem();RealtimeUpdate.insertNoticeItem(a)}else{RealtimeUpdate._queuedNotices.push(a);RealtimeUpdate.updateQueuedCounter()}RealtimeUpdate.updateWindowCounter()},insertNoticeItem:function(a){if(RealtimeUpdate.isNoticeVisible(a.id)){return}RealtimeUpdate.makeNoticeItem(a,function(b){var c=$(b).attr("id");var d=$("#notices_primary .notices:first");var j=true;var e=d.hasClass("threaded-notices");if(e&&a.in_reply_to_status_id){var g=$("#notice-"+a.in_reply_to_status_id);if(g.length==0){}else{var h=g.closest(".notices");if(h.hasClass("threaded-replies")){g=h.closest(".notice")}d=g.find(".threaded-replies");if(d.length==0){d=$('<ul class="notices threaded-replies xoxo"></ul>');g.append(d)}j=false}}var i=$(b);if(j){d.prepend(i)}else{var f=d.find("li.notice-reply-placeholder");if(f.length>0){i.insertBefore(f)}else{i.appendTo(d);SN.U.NoticeInlineReplyPlaceholder(g)}}i.css({display:"none"}).fadeIn(1000);SN.U.NoticeReplyTo($("#"+c));SN.U.NoticeWithAttachment($("#"+c))})},isNoticeVisible:function(a){return($("#notice-"+a).length>0)},purgeLastNoticeItem:function(){if($("#notices_primary .notice").length>RealtimeUpdate._maxnotices){$("#notices_primary .notice:last").remove()}},updateWindowCounter:function(){if(RealtimeUpdate._windowhasfocus===false){RealtimeUpdate._updatecounter+=1;document.title="("+RealtimeUpdate._updatecounter+") "+RealtimeUpdate._documenttitle}},removeWindowCounter:function(){document.title=RealtimeUpdate._documenttitle},makeNoticeItem:function(b,c){var a=RealtimeUpdate._showurl.replace("0000000000",b.id);$.get(a,{ajax:1},function(f,h,g){var e=$("li.notice:first",f);if(e.length){var d=document._importNode(e[0],true);c(d)}})},makeFavoriteForm:function(c,b){var a;a='<form id="favor-'+c+'" class="form_favor" method="post" action="'+RealtimeUpdate._favorurl+'"><fieldset><legend>Favor this notice</legend><input name="token-'+c+'" type="hidden" id="token-'+c+'" value="'+b+'"/><input name="notice" type="hidden" id="notice-n'+c+'" value="'+c+'"/><input type="submit" id="favor-submit-'+c+'" name="favor-submit-'+c+'" class="submit" value="Favor" title="Favor this notice"/></fieldset></form>';return a},makeReplyLink:function(c,a){var b;b='<a class="notice_reply" href="'+RealtimeUpdate._replyurl+"?replyto="+a+'" title="Reply to this notice">Reply <span class="notice_id">'+c+"</span></a>";return b},makeRepeatForm:function(c,b){var a;a='<form id="repeat-'+c+'" class="form_repeat" method="post" action="'+RealtimeUpdate._repeaturl+'"><fieldset><legend>Repeat this notice?</legend><input name="token-'+c+'" type="hidden" id="token-'+c+'" value="'+b+'"/><input name="notice" type="hidden" id="notice-'+c+'" value="'+c+'"/><input type="submit" id="repeat-submit-'+c+'" name="repeat-submit-'+c+'" class="submit" value="Yes" title="Repeat this notice"/></fieldset></form>';return a},makeDeleteLink:function(c){var b,a;a=RealtimeUpdate._deleteurl.replace("0000000000",c);b='<a class="notice_delete" href="'+a+'" title="Delete this notice">Delete</a>';return b},initActions:function(a,b,c){$("#notices_primary").prepend('<ul id="realtime_actions"><li id="realtime_playpause"></li><li id="realtime_timeline"></li></ul>');RealtimeUpdate._pluginPath=c;RealtimeUpdate.initPlayPause();RealtimeUpdate.initAddPopup(a,b,RealtimeUpdate._pluginPath)},initPlayPause:function(){if(typeof(localStorage)=="undefined"){RealtimeUpdate.showPause()}else{if(localStorage.getItem("RealtimeUpdate_paused")==="true"){RealtimeUpdate.showPlay()}else{RealtimeUpdate.showPause()}}},showPause:function(){RealtimeUpdate.setPause(false);RealtimeUpdate.showQueuedNotices();RealtimeUpdate.addNoticesHover();$("#realtime_playpause").remove();$("#realtime_actions").prepend('<li id="realtime_playpause"><button id="realtime_pause" class="pause"></button></li>');$("#realtime_pause").text(SN.msg("realtime_pause")).attr("title",SN.msg("realtime_pause_tooltip")).bind("click",function(){RealtimeUpdate.removeNoticesHover();RealtimeUpdate.showPlay();return false})},showPlay:function(){RealtimeUpdate.setPause(true);$("#realtime_playpause").remove();$("#realtime_actions").prepend('<li id="realtime_playpause"><span id="queued_counter"></span> <button id="realtime_play" class="play"></button></li>');$("#realtime_play").text(SN.msg("realtime_play")).attr("title",SN.msg("realtime_play_tooltip")).bind("click",function(){RealtimeUpdate.showPause();return false})},setPause:function(a){RealtimeUpdate._paused=a;if(typeof(localStorage)!="undefined"){localStorage.setItem("RealtimeUpdate_paused",RealtimeUpdate._paused)}},showQueuedNotices:function(){$.each(RealtimeUpdate._queuedNotices,function(a,b){RealtimeUpdate.insertNoticeItem(b)});RealtimeUpdate._queuedNotices=[];RealtimeUpdate.removeQueuedCounter()},updateQueuedCounter:function(){$("#realtime_playpause #queued_counter").html("("+RealtimeUpdate._queuedNotices.length+")")},removeQueuedCounter:function(){$("#realtime_playpause #queued_counter").empty()},addNoticesHover:function(){$("#notices_primary .notices").hover(function(){if(RealtimeUpdate._paused===false){RealtimeUpdate.showPlay()}},function(){if(RealtimeUpdate._paused===true){RealtimeUpdate.showPause()}})},removeNoticesHover:function(){$("#notices_primary .notices").unbind()},initAddPopup:function(a,b,c){$("#realtime_timeline").append('<button id="realtime_popup"></button>');$("#realtime_popup").text(SN.msg("realtime_popup")).attr("title",SN.msg("realtime_popup_tooltip")).bind("click",function(){window.open(a,"","toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550");return false})},initPopupWindow:function(){$(".notices .entry-title a, .notices .entry-content a").bind("click",function(){window.open(this.href,"");return false});$("#showstream .entity_profile").css({width:"69%"})}};
\ No newline at end of file
diff --git a/plugins/SearchSub/SearchSub.php b/plugins/SearchSub/SearchSub.php
new file mode 100644 (file)
index 0000000..cbf64d3
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+/**
+ * Data class to store local search subscriptions
+ *
+ * PHP version 5
+ *
+ * @category SearchSubPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, 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')) {
+    exit(1);
+}
+
+/**
+ * For storing the search subscriptions
+ *
+ * @category PollPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ * @see      DB_DataObject
+ */
+
+class SearchSub extends Managed_DataObject
+{
+    public $__table = 'searchsub'; // table name
+    public $search;         // text
+    public $profile_id;  // int -> profile.id
+    public $created;     // datetime
+
+    /**
+     * Get an instance by key
+     *
+     * This is a utility method to get a single instance with a given key value.
+     *
+     * @param string $k Key to use to lookup (usually 'user_id' for this class)
+     * @param mixed  $v Value to lookup
+     *
+     * @return SearchSub object found, or null for no hits
+     *
+     */
+    function staticGet($k, $v=null)
+    {
+        return Memcached_DataObject::staticGet('SearchSub', $k, $v);
+    }
+
+    /**
+     * Get an instance by compound key
+     *
+     * This is a utility method to get a single instance with a given set of
+     * key-value pairs. Usually used for the primary key for a compound key; thus
+     * the name.
+     *
+     * @param array $kv array of key-value mappings
+     *
+     * @return SearchSub object found, or null for no hits
+     *
+     */
+    function pkeyGet($kv)
+    {
+        return Memcached_DataObject::pkeyGet('SearchSub', $kv);
+    }
+
+    /**
+     * The One True Thingy that must be defined and declared.
+     */
+    public static function schemaDef()
+    {
+        return array(
+            'description' => 'SearchSubPlugin search subscription records',
+            'fields' => array(
+                'search' => array('type' => 'varchar', 'length' => 64, 'not null' => true, 'description' => 'hash search associated with this subscription'),
+                'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'profile ID of subscribing user'),
+                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
+            ),
+            'primary key' => array('search', 'profile_id'),
+            'foreign keys' => array(
+                'searchsub_profile_id_fkey' => array('profile', array('profile_id' => 'id')),
+            ),
+            'indexes' => array(
+                'searchsub_created_idx' => array('created'),
+                'searchsub_profile_id_tag_idx' => array('profile_id', 'search'),
+            ),
+        );
+    }
+
+    /**
+     * Start a search subscription!
+     *
+     * @param profile $profile subscriber
+     * @param string $search subscribee
+     * @return SearchSub
+     */
+    static function start(Profile $profile, $search)
+    {
+        $ts = new SearchSub();
+        $ts->search = $search;
+        $ts->profile_id = $profile->id;
+        $ts->created = common_sql_now();
+        $ts->insert();
+        return $ts;
+    }
+
+    /**
+     * End a search subscription!
+     *
+     * @param profile $profile subscriber
+     * @param string $search subscribee
+     */
+    static function cancel(Profile $profile, $search)
+    {
+        $ts = SearchSub::pkeyGet(array('search' => $search,
+                                    'profile_id' => $profile->id));
+        if ($ts) {
+            $ts->delete();
+        }
+    }
+}
diff --git a/plugins/SearchSub/SearchSubPlugin.php b/plugins/SearchSub/SearchSubPlugin.php
new file mode 100644 (file)
index 0000000..130600a
--- /dev/null
@@ -0,0 +1,212 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * A plugin to enable local tab subscription
+ *
+ * PHP version 5
+ *
+ * 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  SearchSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * SearchSub plugin main class
+ *
+ * @category  SearchSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brionv@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+class SearchSubPlugin extends Plugin
+{
+    const VERSION         = '0.1';
+
+    /**
+     * Database schema setup
+     *
+     * @see Schema
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+    function onCheckSchema()
+    {
+        $schema = Schema::get();
+        $schema->ensureTable('searchsub', SearchSub::schemaDef());
+        return true;
+    }
+
+    /**
+     * Load related modules when needed
+     *
+     * @param string $cls Name of the class to be loaded
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+    function onAutoload($cls)
+    {
+        $dir = dirname(__FILE__);
+
+        switch ($cls)
+        {
+        case 'SearchSub':
+            include_once $dir.'/'.$cls.'.php';
+            return false;
+        case 'SearchsubAction':
+        case 'SearchunsubAction':
+        case 'SearchSubForm':
+        case 'SearchUnsubForm':
+            include_once $dir.'/'.strtolower($cls).'.php';
+            return false;
+        default:
+            return true;
+        }
+    }
+
+    /**
+     * Map URLs to actions
+     *
+     * @param Net_URL_Mapper $m path-to-action mapper
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+    function onRouterInitialized($m)
+    {
+        $m->connect('search/:search/subscribe',
+                    array('action' => 'searchsub'),
+                    array('search' => Router::REGEX_TAG));
+        $m->connect('search/:search/unsubscribe',
+                    array('action' => 'searchunsub'),
+                    array('search' => Router::REGEX_TAG));
+
+        return true;
+    }
+
+    /**
+     * Plugin version data
+     *
+     * @param array &$versions array of version data
+     *
+     * @return value
+     */
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'SearchSub',
+                            'version' => self::VERSION,
+                            'author' => 'Brion Vibber',
+                            'homepage' => 'http://status.net/wiki/Plugin:SearchSub',
+                            'rawdescription' =>
+                            // TRANS: Plugin description.
+                            _m('Plugin to allow following all messages with a given search.'));
+        return true;
+    }
+
+    /**
+     * Hook inbox delivery setup so search subscribers receive all
+     * notices with that search in their inbox.
+     *
+     * Currently makes no distinction between local messages and
+     * remote ones which happen to come in to the system. Remote
+     * notices that don't come in at all won't ever reach this.
+     *
+     * @param Notice $notice
+     * @param array $ni in/out map of profile IDs to inbox constants
+     * @return boolean hook result
+     */
+    function onStartNoticeWhoGets(Notice $notice, array &$ni)
+    {
+        // Warning: this is potentially very slow
+        // with a lot of searches!
+        $sub = new SearchSub();
+        $sub->groupBy('search');
+        $sub->find();
+        while ($sub->fetch()) {
+            $search = $sub->search;
+
+            if ($this->matchSearch($notice, $search)) {
+                // Match? Find all those who subscribed to this
+                // search term and get our delivery on...
+                $searchsub = new SearchSub();
+                $searchsub->search = $search;
+                $searchsub->find();
+
+                while ($searchsub->fetch()) {
+                    // These constants are currently not actually used, iirc
+                    $ni[$searchsub->profile_id] = NOTICE_INBOX_SOURCE_SUB;
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Does the given notice match the given fulltext search query?
+     *
+     * Warning: not guaranteed to match other search engine behavior, etc.
+     * Currently using a basic case-insensitive substring match, which
+     * probably fits with the 'LIKE' search but not the default MySQL
+     * or Sphinx search backends.
+     *
+     * @param Notice $notice
+     * @param string $search 
+     * @return boolean
+     */
+    function matchSearch(Notice $notice, $search)
+    {
+        return (mb_stripos($notice->content, $search) !== false);
+    }
+
+    /**
+     *
+     * @param NoticeSearchAction $action
+     * @param string $q
+     * @param Notice $notice
+     * @return boolean hook result
+     */
+    function onStartNoticeSearchShowResults($action, $q, $notice)
+    {
+        $user = common_current_user();
+        if ($user) {
+            $search = $q;
+            $searchsub = SearchSub::pkeyGet(array('search' => $search,
+                                                  'profile_id' => $user->id));
+            if ($searchsub) {
+                $form = new SearchUnsubForm($action, $search);
+            } else {
+                $form = new SearchSubForm($action, $search);
+            }
+            $action->elementStart('div', 'entity_actions');
+            $action->elementStart('ul');
+            $action->elementStart('li', 'entity_subscribe');
+            $form->show();
+            $action->elementEnd('li');
+            $action->elementEnd('ul');
+            $action->elementEnd('div');
+        }
+        return true;
+    }
+}
diff --git a/plugins/SearchSub/searchsubaction.php b/plugins/SearchSub/searchsubaction.php
new file mode 100644 (file)
index 0000000..67bc178
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2011, StatusNet, Inc.
+ *
+ * Search subscription action.
+ *
+ * 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/>.
+ *
+ * PHP version 5
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Search subscription action
+ *
+ * Takes parameters:
+ *
+ *    - token: session token to prevent CSRF attacks
+ *    - ajax: boolean; whether to return Ajax or full-browser results
+ *
+ * Only works if the current user is logged in.
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Brion Vibber <brion@status.net>
+ * @copyright 2008-2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+class SearchsubAction extends Action
+{
+    var $user;
+    var $search;
+
+    /**
+     * Check pre-requisites and instantiate attributes
+     *
+     * @param Array $args array of arguments (URL, GET, POST)
+     *
+     * @return boolean success flag
+     */
+    function prepare($args)
+    {
+        parent::prepare($args);
+        if ($this->boolean('ajax')) {
+            StatusNet::setApi(true);
+        }
+
+        // Only allow POST requests
+
+        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+            // TRANS: Client error displayed trying to perform any request method other than POST.
+            // TRANS: Do not translate POST.
+            $this->clientError(_('This action only accepts POST requests.'));
+            return false;
+        }
+
+        // CSRF protection
+
+        $token = $this->trimmed('token');
+
+        if (!$token || $token != common_session_token()) {
+            // TRANS: Client error displayed when the session token is not okay.
+            $this->clientError(_('There was a problem with your session token.'.
+                                 ' Try again, please.'));
+            return false;
+        }
+
+        // Only for logged-in users
+
+        $this->user = common_current_user();
+
+        if (empty($this->user)) {
+            // TRANS: Client error displayed trying to subscribe when not logged in.
+            $this->clientError(_('Not logged in.'));
+            return false;
+        }
+
+        // Profile to subscribe to
+
+        $this->search = $this->arg('search');
+
+        if (empty($this->search)) {
+            // TRANS: Client error displayed trying to subscribe to a non-existing profile.
+            $this->clientError(_('No such profile.'));
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Handle request
+     *
+     * Does the subscription and returns results.
+     *
+     * @param Array $args unused.
+     *
+     * @return void
+     */
+    function handle($args)
+    {
+        // Throws exception on error
+
+        SearchSub::start($this->user->getProfile(),
+                      $this->search);
+
+        if ($this->boolean('ajax')) {
+            $this->startHTML('text/xml;charset=utf-8');
+            $this->elementStart('head');
+            // TRANS: Page title when search subscription succeeded.
+            $this->element('title', null, _m('Subscribed'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+            $unsubscribe = new SearchUnsubForm($this, $this->search);
+            $unsubscribe->show();
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            $url = common_local_url('search',
+                                    array('search' => $this->search));
+            common_redirect($url, 303);
+        }
+    }
+}
diff --git a/plugins/SearchSub/searchsubform.php b/plugins/SearchSub/searchsubform.php
new file mode 100644 (file)
index 0000000..8078cdd
--- /dev/null
@@ -0,0 +1,142 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Form for subscribing to a search
+ *
+ * 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  SearchSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2009-2011 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') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Form for subscribing to a user
+ *
+ * @category SearchSubPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@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/
+ *
+ * @see      UnsubscribeForm
+ */
+
+class SearchSubForm extends Form
+{
+    /**
+     * Name of search to subscribe to
+     */
+
+    var $search = '';
+
+    /**
+     * Constructor
+     *
+     * @param HTMLOutputter $out     output channel
+     * @param string        $search     name of search to subscribe to
+     */
+
+    function __construct($out=null, $search=null)
+    {
+        parent::__construct($out);
+
+        $this->search = $search;
+    }
+
+    /**
+     * ID of the form
+     *
+     * @return int ID of the form
+     */
+
+    function id()
+    {
+        return 'search-subscribe-' . $this->search;
+    }
+
+
+    /**
+     * class of the form
+     *
+     * @return string of the form class
+     */
+
+    function formClass()
+    {
+        // class to match existing styles...
+        return 'form_user_subscribe ajax';
+    }
+
+
+    /**
+     * Action of the form
+     *
+     * @return string URL of the action
+     */
+
+    function action()
+    {
+        return common_local_url('searchsub', array('search' => $this->search));
+    }
+
+
+    /**
+     * Legend of the Form
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+        $this->out->element('legend', null, _m('Subscribe to this search'));
+    }
+
+    /**
+     * Data elements of the form
+     *
+     * @return void
+     */
+
+    function formData()
+    {
+        $this->out->hidden('subscribeto-' . $this->search,
+                           $this->search,
+                           'subscribeto');
+    }
+
+    /**
+     * Action elements
+     *
+     * @return void
+     */
+
+    function formActions()
+    {
+        $this->out->submit('submit', _('Subscribe'), 'submit', null, _m('Subscribe to this search'));
+    }
+}
diff --git a/plugins/SearchSub/searchunsubaction.php b/plugins/SearchSub/searchunsubaction.php
new file mode 100644 (file)
index 0000000..f7f006e
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2011, StatusNet, Inc.
+ *
+ * Search subscription action.
+ *
+ * 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/>.
+ *
+ * PHP version 5
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Search unsubscription action
+ *
+ * Takes parameters:
+ *
+ *    - token: session token to prevent CSRF attacks
+ *    - ajax: boolean; whether to return Ajax or full-browser results
+ *
+ * Only works if the current user is logged in.
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Brion Vibber <brion@status.net>
+ * @copyright 2008-2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+class SearchunsubAction extends SearchsubAction
+{
+    /**
+     * Handle request
+     *
+     * Does the subscription and returns results.
+     *
+     * @param Array $args unused.
+     *
+     * @return void
+     */
+    function handle($args)
+    {
+        // Throws exception on error
+
+        SearchSub::cancel($this->user->getProfile(),
+                       $this->search);
+
+        if ($this->boolean('ajax')) {
+            $this->startHTML('text/xml;charset=utf-8');
+            $this->elementStart('head');
+            // TRANS: Page title when search unsubscription succeeded.
+            $this->element('title', null, _m('Unsubscribed'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+            $subscribe = new SearchSubForm($this, $this->search);
+            $subscribe->show();
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            $url = common_local_url('search',
+                                    array('search' => $this->search));
+            common_redirect($url, 303);
+        }
+    }
+}
diff --git a/plugins/SearchSub/searchunsubform.php b/plugins/SearchSub/searchunsubform.php
new file mode 100644 (file)
index 0000000..296b74f
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Form for subscribing to a search
+ *
+ * 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  SearchSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2009-2011 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') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Form for subscribing to a user
+ *
+ * @category SearchSubPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@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/
+ *
+ * @see      UnsubscribeForm
+ */
+
+class SearchUnsubForm extends SearchSubForm
+{
+    /**
+     * ID of the form
+     *
+     * @return int ID of the form
+     */
+
+    function id()
+    {
+        return 'search-unsubscribe-' . $this->search;
+    }
+
+
+    /**
+     * class of the form
+     *
+     * @return string of the form class
+     */
+
+    function formClass()
+    {
+        // class to match existing styles...
+        return 'form_user_unsubscribe ajax';
+    }
+
+
+    /**
+     * Action of the form
+     *
+     * @return string URL of the action
+     */
+
+    function action()
+    {
+        return common_local_url('searchunsub', array('search' => $this->search));
+    }
+
+
+    /**
+     * Legend of the Form
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+        $this->out->element('legend', null, _m('Unsubscribe from this search'));
+    }
+
+    /**
+     * Action elements
+     *
+     * @return void
+     */
+
+    function formActions()
+    {
+        $this->out->submit('submit', _('Unsubscribe'), 'submit', null, _m('Unsubscribe from this search'));
+    }
+}
index 779d511c034903ede4c97641f3d46bde5ddd5f02..abf9d8f21164b50853d09adfd0902f3bb78e96bb 100644 (file)
@@ -1,5 +1,5 @@
 # Translation of StatusNet - ShareNotice to Telugu (తెలుగు)
-# Expored from translatewiki.net
+# Exported from translatewiki.net
 #
 # Author: Veeven
 # --
@@ -9,13 +9,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: StatusNet - ShareNotice\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-16 15:08+0000\n"
-"PO-Revision-Date: 2010-12-16 15:12:54+0000\n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:19:17+0000\n"
 "Language-Team: Telugu <http://translatewiki.net/wiki/Portal:te>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-POT-Import-Date: 2010-11-30 20:43:55+0000\n"
-"X-Generator: MediaWiki 1.18alpha (r78478); Translate extension (2010-09-17)\n"
+"X-POT-Import-Date: 2011-03-06 02:18:45+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
 "X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
 "X-Language-Code: te\n"
 "X-Message-Group: #out-statusnet-plugin-sharenotice\n"
@@ -23,30 +23,25 @@ msgstr ""
 
 #. TRANS: Leave this message unchanged.
 #. TRANS: %s is notice content that is shared on Twitter, Facebook or another platform.
-#: ShareNoticePlugin.php:106 ShareNoticePlugin.php:194
 #, php-format
 msgid "\"%s\""
 msgstr "\"%s\""
 
 #. TRANS: Tooltip for image to share a notice on Twitter.
-#: ShareNoticePlugin.php:130
 msgid "Share on Twitter"
-msgstr ""
+msgstr "ట్విట్టర్లో పంచుకోండి"
 
 #. TRANS: Tooltip for image to share a notice on another platform (other than Twitter or Facebook).
 #. TRANS: %s is a host name.
-#: ShareNoticePlugin.php:163
 #, php-format
 msgid "Share on %s"
 msgstr ""
 
 #. TRANS: Tooltip for image to share a notice on Facebook.
-#: ShareNoticePlugin.php:186
 msgid "Share on Facebook"
-msgstr ""
+msgstr "ఫేస్‌బుక్‌లో పంచుకోండి"
 
 #. TRANS: Plugin description.
-#: ShareNoticePlugin.php:219
 msgid ""
 "This plugin allows sharing of notices to Twitter, Facebook and other "
 "platforms."
index 2748722d2348bfcbef616d812cd26bee016382d4..b91e5ba5cf5991e786ad89bad71e41f22b350d68 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-06 02:34+0100\n"
+"POT-Creation-Date: 2011-03-11 18:15+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,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #. TRANS: Server exception thrown when a database name cannot be identified.
-#: sphinxsearch.php:96
+#: sphinxsearch.php:126
 msgid "Sphinx search could not identify database name."
 msgstr ""
 
index 38a4c40d481aeea69e3f5a15e426221f65d7acb6..a9cb2315b45e040cb1726914b41dafc10e7e1c86 100644 (file)
@@ -35,6 +35,9 @@ class SubMirrorPlugin extends Plugin
     {
         $m->connect('settings/mirror',
                     array('action' => 'mirrorsettings'));
+        $m->connect('settings/mirror/add/:provider',
+                    array('action' => 'mirrorsettings'),
+                    array('provider' => '[A-Za-z0-9_-]+'));
         $m->connect('settings/mirror/add',
                     array('action' => 'addmirror'));
         $m->connect('settings/mirror/edit',
index 8c3a9740f3cd3528dd051ae596c621b362717070..31805c166936088e19c8f9306093384c8cfc1d57 100644 (file)
@@ -59,11 +59,27 @@ class AddMirrorAction extends BaseMirrorAction
     function prepare($args)
     {
         parent::prepare($args);
-        $this->feedurl = $this->validateFeedUrl($this->trimmed('feedurl'));
+        $feedurl = $this->getFeedUrl();
+        $this->feedurl = $this->validateFeedUrl($feedurl);
         $this->profile = $this->profileForFeed($this->feedurl);
         return true;
     }
 
+    function getFeedUrl()
+    {
+        $provider = $this->trimmed('provider');
+        switch ($provider) {
+        case 'feed':
+            return $this->trimmed('feedurl');
+        case 'twitter':
+            $screenie = $this->trimmed('screen_name');
+            $base = 'http://api.twitter.com/1/statuses/user_timeline.atom?screen_name=';
+            return $base . urlencode($screenie);
+        default:
+            throw new Exception('Internal form error: unrecognized feed provider.');
+        }
+    }
+
     function saveMirror()
     {
         if ($this->oprofile->subscribe()) {
index 3e3431103f1a0b030e699b06c50af5d2f7c56297..843dfb92e1600c671866d7c6c1945b304ac1dbf6 100644 (file)
@@ -68,7 +68,7 @@ abstract class BaseMirrorAction extends Action
         if (common_valid_http_url($url)) {
             return $url;
         } else {
-            $this->clientError(_m("Invalid feed URL."));
+            $this->clientError(sprintf(_m("Invalid feed URL: %s"), $url));
         }
     }
 
index 856099afa3c6aadebdb24ab4ff6dab07c9d056e6..90bbf3dffb30f0dd0e3e301ac67a74f7dfb62318 100644 (file)
@@ -65,18 +65,30 @@ class MirrorSettingsAction extends SettingsAction
     function showContent()
     {
         $user = common_current_user();
+        $provider = $this->trimmed('provider');
+        if ($provider) {
+            $this->showAddFeedForm($provider);
+        } else {
+            $this->elementStart('div', array('id' => 'add-mirror'));
+            $this->showAddWizard();
+            $this->elementEnd('div');
 
-        $this->showAddFeedForm();
-
-        $mirror = new SubMirror();
-        $mirror->subscriber = $user->id;
-        if ($mirror->find()) {
-            while ($mirror->fetch()) {
-                $this->showFeedForm($mirror);
+            $mirror = new SubMirror();
+            $mirror->subscriber = $user->id;
+            if ($mirror->find()) {
+                while ($mirror->fetch()) {
+                    $this->showFeedForm($mirror);
+                }
             }
         }
     }
 
+    function showAddWizard()
+    {
+        $form = new AddMirrorWizard($this);
+        $form->show();
+    }
+
     function showFeedForm($mirror)
     {
         $profile = Profile::staticGet('id', $mirror->subscribed);
@@ -88,10 +100,47 @@ class MirrorSettingsAction extends SettingsAction
 
     function showAddFeedForm()
     {
-        $form = new AddMirrorForm($this);
+        switch ($this->arg('provider')) {
+        case 'statusnet':
+            break;
+        case 'twitter':
+            $form = new AddTwitterMirrorForm($this);
+            break;
+        case 'wordpress':
+            break;
+        case 'linkedin':
+            break;
+        case 'feed':
+        default:
+            $form = new AddMirrorForm($this);
+        }
         $form->show();
     }
 
+    /**
+     *
+     * @param array $args
+     *
+     * @todo move the ajax display handling to common code
+     */
+    function handle($args)
+    {
+        if ($this->boolean('ajax')) {
+            header('Content-Type: text/html;charset=utf-8');
+            $this->elementStart('html');
+            $this->elementStart('head');
+            $this->element('title', null, _('Provider add'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+
+            $this->showAddFeedForm();
+
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            return parent::handle($args);
+        }
+    }
     /**
      * Handle a POST request
      *
@@ -108,4 +157,16 @@ class MirrorSettingsAction extends SettingsAction
         $nav = new SubGroupNav($this, common_current_user());
         $nav->show();
     }
+
+    function showScripts()
+    {
+        parent::showScripts();
+        $this->script('plugins/SubMirror/js/mirrorsettings.js');
+    }
+
+    function showStylesheets()
+    {
+        parent::showStylesheets();
+        $this->cssLink('plugins/SubMirror/css/mirrorsettings.css');
+    }
 }
diff --git a/plugins/SubMirror/css/mirrorsettings.css b/plugins/SubMirror/css/mirrorsettings.css
new file mode 100644 (file)
index 0000000..c91bb73
--- /dev/null
@@ -0,0 +1,26 @@
+/* undo insane stuff from core styles */
+#add-mirror-wizard img {
+    display: inline;
+}
+
+/* we need #something to override most of the #content crap */
+
+#add-mirror-wizard {
+    margin-left: 20px;
+    margin-right: 20px;
+}
+
+#add-mirror-wizard .provider-list table {
+    width: 100%;
+}
+
+#add-mirror-wizard .provider-heading img {
+    vertical-align: middle;
+}
+#add-mirror-wizard .provider-heading {
+    cursor: pointer;
+}
+#add-mirror-wizard .provider-detail fieldset {
+    margin-top: 8px; /* hack */
+    margin-bottom: 8px; /* hack */
+}
\ No newline at end of file
diff --git a/plugins/SubMirror/images/providers/facebook.png b/plugins/SubMirror/images/providers/facebook.png
new file mode 100644 (file)
index 0000000..13a53aa
Binary files /dev/null and b/plugins/SubMirror/images/providers/facebook.png differ
diff --git a/plugins/SubMirror/images/providers/feed.png b/plugins/SubMirror/images/providers/feed.png
new file mode 100644 (file)
index 0000000..bd1da4f
Binary files /dev/null and b/plugins/SubMirror/images/providers/feed.png differ
diff --git a/plugins/SubMirror/images/providers/linkedin.png b/plugins/SubMirror/images/providers/linkedin.png
new file mode 100644 (file)
index 0000000..82103d1
Binary files /dev/null and b/plugins/SubMirror/images/providers/linkedin.png differ
diff --git a/plugins/SubMirror/images/providers/statusnet.png b/plugins/SubMirror/images/providers/statusnet.png
new file mode 100644 (file)
index 0000000..6edca21
Binary files /dev/null and b/plugins/SubMirror/images/providers/statusnet.png differ
diff --git a/plugins/SubMirror/images/providers/twitter.png b/plugins/SubMirror/images/providers/twitter.png
new file mode 100644 (file)
index 0000000..41dabc8
Binary files /dev/null and b/plugins/SubMirror/images/providers/twitter.png differ
diff --git a/plugins/SubMirror/images/providers/wordpress.png b/plugins/SubMirror/images/providers/wordpress.png
new file mode 100644 (file)
index 0000000..dfafc75
Binary files /dev/null and b/plugins/SubMirror/images/providers/wordpress.png differ
diff --git a/plugins/SubMirror/js/mirrorsettings.js b/plugins/SubMirror/js/mirrorsettings.js
new file mode 100644 (file)
index 0000000..a27abe7
--- /dev/null
@@ -0,0 +1,47 @@
+$(function() {
+    /**
+     * Append 'ajax=1' parameter onto URL.
+     */
+    function ajaxize(url) {
+        if (url.indexOf('?') == '-1') {
+            return url + '?ajax=1';
+        } else {
+            return url + '&ajax=1';
+        }
+    }
+
+    var addMirror = $('#add-mirror');
+    var wizard = $('#add-mirror-wizard');
+    if (wizard.length > 0) {
+        var list = wizard.find('.provider-list');
+        var providers = list.find('.provider-heading');
+        providers.click(function(event) {
+            console.log(this);
+            var targetUrl = $(this).find('a').attr('href');
+            if (targetUrl) {
+                // Make sure we don't accidentally follow the direct link
+                event.preventDefault();
+
+                var node = this;
+                function showNew() {
+                    var detail = $('<div class="provider-detail" style="display: none"></div>').insertAfter(node);
+                    detail.load(ajaxize(targetUrl), function(responseText, testStatus, xhr) {
+                        detail.slideDown('fast', function() {
+                            detail.find('input[type="text"]').focus();
+                        });
+                    });
+                }
+
+                var old = addMirror.find('.provider-detail');
+                if (old.length) {
+                    old.slideUp('fast', function() {
+                        old.remove();
+                        showNew();
+                    });
+                } else {
+                    showNew();
+                }
+            }
+        });
+    }
+});
\ No newline at end of file
index e1d50c272c80954959fd1471b0ee52df5e687f8b..17edbd5e968c1cf8db34fc7ed1ca41ce5392028a 100644 (file)
@@ -49,6 +49,7 @@ class AddMirrorForm extends Form
      */
     function formData()
     {
+        $this->out->hidden('provider', 'feed');
         $this->out->elementStart('fieldset');
 
         $this->out->elementStart('ul');
@@ -67,7 +68,7 @@ class AddMirrorForm extends Form
         $this->out->elementEnd('fieldset');
     }
 
-    private function doInput($id, $name, $label, $value=null, $instructions=null)
+    protected function doInput($id, $name, $label, $value=null, $instructions=null)
     {
         $this->out->element('label', array('for' => $id), $label);
         $attrs = array('name' => $name,
diff --git a/plugins/SubMirror/lib/addmirrorwizard.php b/plugins/SubMirror/lib/addmirrorwizard.php
new file mode 100644 (file)
index 0000000..920db0b
--- /dev/null
@@ -0,0 +1,187 @@
+<?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/>.
+ *
+ * @package   StatusNet
+ * @copyright 2010-2011 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') && !defined('LACONICA')) {
+    exit(1);
+}
+
+class AddMirrorWizard extends Widget
+{
+    /**
+     * Name of the form
+     *
+     * Sub-classes should overload this with the name of their form.
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+    }
+
+    /**
+     * Visible or invisible data elements
+     *
+     * Display the form fields that make up the data of the form.
+     * Sub-classes should overload this to show their data.
+     *
+     * @return void
+     */
+    function show()
+    {
+        $this->out->elementStart('div', array('id' => 'add-mirror-wizard'));
+
+        $providers = $this->providers();
+        $this->showProviders($providers);
+
+        $this->out->elementEnd('div');
+    }
+
+    function providers()
+    {
+        return array(
+            /*
+            // We could accept hostname & username combos here, or
+            // webfingery combinations as for remote users.
+            array(
+                'id' => 'statusnet',
+                'name' => _m('StatusNet'),
+            ),
+             */
+            // Accepts a Twitter username and pulls their user timeline as a
+            // public Atom feed. Requires a working alternate hub which, one
+            // hopes, is getting timely updates.
+            array(
+                'id' => 'twitter',
+                'name' => _m('Twitter'),
+            ),
+            /*
+            // WordPress was on our list some whiles ago, but not sure
+            // what we can actually do here. Search on Wordpress.com hosted
+            // sites, or ?
+            array(
+                'id' => 'wordpress',
+                'name' => _m('WordPress'),
+            ),
+             */
+            /*
+            // In theory, Facebook lets you pull public updates over RSS,
+            // but the URLs for your own update feed that I can find from
+            // 2009-era websites no longer seem to work and there's no
+            // good current documentation. May not still be available...
+            // Mirroring from an FB account is probably better done with
+            // the dedicated plugin. (As of March 2011)
+            array(
+                'id' => 'facebook',
+                'name' => _m('Facebook'),
+            ),
+             */
+            /*
+            // LinkedIn doesn't currently seem to have public feeds
+            // for users or groups (March 2011)
+            array(
+                'id' => 'linkedin',
+                'name' => _m('LinkedIn'),
+            ),
+             */
+            array(
+                'id' => 'feed',
+                'name' => _m('RSS or Atom feed'),
+            ),
+        );
+    }
+
+    function showProviders(array $providers)
+    {
+        $out = $this->out;
+
+        $out->elementStart('div', 'provider-list');
+        $out->element('h2', null, _m('Select a feed provider'));
+        $out->elementStart('table');
+        foreach ($providers as $provider) {
+            $icon = common_path('plugins/SubMirror/images/providers/' . $provider['id'] . '.png');
+            $targetUrl = common_local_url('mirrorsettings', array('provider' => $provider['id']));
+
+            $out->elementStart('tr', array('class' => 'provider'));
+            $out->elementStart('td');
+
+            $out->elementStart('div', 'provider-heading');
+            $out->element('img', array('src' => $icon));
+            $out->element('a', array('href' => $targetUrl), $provider['name']);
+            $out->elementEnd('div');
+
+            $out->elementEnd('td');
+            $out->elementEnd('tr');
+        }
+        $out->elementEnd('table');
+        $out->elementEnd('div');
+    }
+
+    /**
+     * Buttons for form actions
+     *
+     * Submit and cancel buttons (or whatever)
+     * Sub-classes should overload this to show their own buttons.
+     *
+     * @return void
+     */
+    function formActions()
+    {
+    }
+
+    /**
+     * ID of the form
+     *
+     * Should be unique on the page. Sub-classes should overload this
+     * to show their own IDs.
+     *
+     * @return string ID of the form
+     */
+    function id()
+    {
+        return 'add-mirror-wizard';
+    }
+
+    /**
+     * Action of the form.
+     *
+     * URL to post to. Should be overloaded by subclasses to give
+     * somewhere to post to.
+     *
+     * @return string URL to post to
+     */
+    function action()
+    {
+        return common_local_url('addmirror');
+    }
+
+    /**
+     * Class of the form.
+     *
+     * @return string the form's class
+     */
+    function formClass()
+    {
+        return 'form_settings';
+    }
+}
diff --git a/plugins/SubMirror/lib/addtwittermirrorform.php b/plugins/SubMirror/lib/addtwittermirrorform.php
new file mode 100644 (file)
index 0000000..eb28aa0
--- /dev/null
@@ -0,0 +1,60 @@
+<?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/>.
+ *
+ * @package   StatusNet
+ * @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/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+class AddTwitterMirrorForm extends AddMirrorForm
+{
+
+    /**
+     * Visible or invisible data elements
+     *
+     * Display the form fields that make up the data of the form.
+     * Sub-classes should overload this to show their data.
+     *
+     * @return void
+     */
+    function formData()
+    {
+        $this->out->hidden('provider', 'twitter');
+        $this->out->elementStart('fieldset');
+
+        $this->out->elementStart('ul');
+
+        $this->li();
+        $this->doInput('addmirror-feedurl',
+                       'screen_name',
+                       _m('Twitter username:'),
+                       $this->out->trimmed('screen_name'));
+        $this->unli();
+
+        $this->li();
+        $this->out->submit('addmirror-save', _m('BUTTON','Add feed'));
+        $this->unli();
+        $this->out->elementEnd('ul');
+        $this->out->elementEnd('fieldset');
+    }
+}
diff --git a/plugins/TagSub/TagSub.php b/plugins/TagSub/TagSub.php
new file mode 100644 (file)
index 0000000..a734b4f
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+/**
+ * Data class to store local tag subscriptions
+ *
+ * PHP version 5
+ *
+ * @category TagSubPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, 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')) {
+    exit(1);
+}
+
+/**
+ * For storing the tag subscriptions
+ *
+ * @category PollPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link     http://status.net/
+ *
+ * @see      DB_DataObject
+ */
+
+class TagSub extends Managed_DataObject
+{
+    public $__table = 'tagsub'; // table name
+    public $tag;         // text
+    public $profile_id;  // int -> profile.id
+    public $created;     // datetime
+
+    /**
+     * Get an instance by key
+     *
+     * This is a utility method to get a single instance with a given key value.
+     *
+     * @param string $k Key to use to lookup (usually 'user_id' for this class)
+     * @param mixed  $v Value to lookup
+     *
+     * @return TagSub object found, or null for no hits
+     *
+     */
+    function staticGet($k, $v=null)
+    {
+        return Memcached_DataObject::staticGet('TagSub', $k, $v);
+    }
+
+    /**
+     * Get an instance by compound key
+     *
+     * This is a utility method to get a single instance with a given set of
+     * key-value pairs. Usually used for the primary key for a compound key; thus
+     * the name.
+     *
+     * @param array $kv array of key-value mappings
+     *
+     * @return TagSub object found, or null for no hits
+     *
+     */
+    function pkeyGet($kv)
+    {
+        return Memcached_DataObject::pkeyGet('TagSub', $kv);
+    }
+
+    /**
+     * The One True Thingy that must be defined and declared.
+     */
+    public static function schemaDef()
+    {
+        return array(
+            'description' => 'TagSubPlugin tag subscription records',
+            'fields' => array(
+                'tag' => array('type' => 'varchar', 'length' => 64, 'not null' => true, 'description' => 'hash tag associated with this subscription'),
+                'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'profile ID of subscribing user'),
+                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
+            ),
+            'primary key' => array('tag', 'profile_id'),
+            'foreign keys' => array(
+                'tagsub_profile_id_fkey' => array('profile', array('profile_id' => 'id')),
+            ),
+            'indexes' => array(
+                'tagsub_created_idx' => array('created'),
+                'tagsub_profile_id_tag_idx' => array('profile_id', 'tag'),
+            ),
+        );
+    }
+
+    /**
+     * Start a tag subscription!
+     *
+     * @param profile $profile subscriber
+     * @param string $tag subscribee
+     * @return TagSub
+     */
+    static function start(Profile $profile, $tag)
+    {
+        $ts = new TagSub();
+        $ts->tag = $tag;
+        $ts->profile_id = $profile->id;
+        $ts->created = common_sql_now();
+        $ts->insert();
+        return $ts;
+    }
+
+    /**
+     * End a tag subscription!
+     *
+     * @param profile $profile subscriber
+     * @param string $tag subscribee
+     */
+    static function cancel(Profile $profile, $tag)
+    {
+        $ts = TagSub::pkeyGet(array('tag' => $tag,
+                                    'profile_id' => $profile->id));
+        if ($ts) {
+            $ts->delete();
+        }
+    }
+}
diff --git a/plugins/TagSub/TagSubPlugin.php b/plugins/TagSub/TagSubPlugin.php
new file mode 100644 (file)
index 0000000..e51a7a8
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * A plugin to enable local tab subscription
+ *
+ * PHP version 5
+ *
+ * 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  TagSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * TagSub plugin main class
+ *
+ * @category  TagSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brionv@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link      http://status.net/
+ */
+class TagSubPlugin extends Plugin
+{
+    const VERSION         = '0.1';
+
+    /**
+     * Database schema setup
+     *
+     * @see Schema
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+    function onCheckSchema()
+    {
+        $schema = Schema::get();
+        $schema->ensureTable('tagsub', TagSub::schemaDef());
+        return true;
+    }
+
+    /**
+     * Load related modules when needed
+     *
+     * @param string $cls Name of the class to be loaded
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+    function onAutoload($cls)
+    {
+        $dir = dirname(__FILE__);
+
+        switch ($cls)
+        {
+        case 'TagSub':
+            include_once $dir.'/'.$cls.'.php';
+            return false;
+        case 'TagsubAction':
+        case 'TagunsubAction':
+        case 'TagSubForm':
+        case 'TagUnsubForm':
+            include_once $dir.'/'.strtolower($cls).'.php';
+            return false;
+        default:
+            return true;
+        }
+    }
+
+    /**
+     * Map URLs to actions
+     *
+     * @param Net_URL_Mapper $m path-to-action mapper
+     *
+     * @return boolean hook value; true means continue processing, false means stop.
+     */
+    function onRouterInitialized($m)
+    {
+        $m->connect('tag/:tag/subscribe',
+                    array('action' => 'tagsub'),
+                    array('tag' => Router::REGEX_TAG));
+        $m->connect('tag/:tag/unsubscribe',
+                    array('action' => 'tagunsub'),
+                    array('tag' => Router::REGEX_TAG));
+
+        return true;
+    }
+
+    /**
+     * Plugin version data
+     *
+     * @param array &$versions array of version data
+     *
+     * @return value
+     */
+    function onPluginVersion(&$versions)
+    {
+        $versions[] = array('name' => 'TagSub',
+                            'version' => self::VERSION,
+                            'author' => 'Brion Vibber',
+                            'homepage' => 'http://status.net/wiki/Plugin:TagSub',
+                            'rawdescription' =>
+                            // TRANS: Plugin description.
+                            _m('Plugin to allow following all messages with a given tag.'));
+        return true;
+    }
+
+    /**
+     * Hook inbox delivery setup so tag subscribers receive all
+     * notices with that tag in their inbox.
+     *
+     * Currently makes no distinction between local messages and
+     * remote ones which happen to come in to the system. Remote
+     * notices that don't come in at all won't ever reach this.
+     *
+     * @param Notice $notice
+     * @param array $ni in/out map of profile IDs to inbox constants
+     * @return boolean hook result
+     */
+    function onStartNoticeWhoGets(Notice $notice, array &$ni)
+    {
+        foreach ($notice->getTags() as $tag) {
+            $tagsub = new TagSub();
+            $tagsub->tag = $tag;
+            $tagsub->find();
+
+            while ($tagsub->fetch()) {
+                // These constants are currently not actually used, iirc
+                $ni[$tagsub->profile_id] = NOTICE_INBOX_SOURCE_SUB;
+            }
+        }
+        return true;
+    }
+
+    /**
+     *
+     * @param TagAction $action
+     * @return boolean hook result
+     */
+    function onStartTagShowContent(TagAction $action)
+    {
+        $user = common_current_user();
+        if ($user) {
+            $tag = $action->trimmed('tag');
+            $tagsub = TagSub::pkeyGet(array('tag' => $tag,
+                                            'profile_id' => $user->id));
+            if ($tagsub) {
+                $form = new TagUnsubForm($action, $tag);
+            } else {
+                $form = new TagSubForm($action, $tag);
+            }
+            $action->elementStart('div', 'entity_actions');
+            $action->elementStart('ul');
+            $action->elementStart('li', 'entity_subscribe');
+            $form->show();
+            $action->elementEnd('li');
+            $action->elementEnd('ul');
+            $action->elementEnd('div');
+        }
+        return true;
+    }
+}
diff --git a/plugins/TagSub/tagsubaction.php b/plugins/TagSub/tagsubaction.php
new file mode 100644 (file)
index 0000000..2e4e25d
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2011, StatusNet, Inc.
+ *
+ * Tag subscription action.
+ *
+ * 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/>.
+ *
+ * PHP version 5
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Tag subscription action
+ *
+ * Takes parameters:
+ *
+ *    - token: session token to prevent CSRF attacks
+ *    - ajax: boolean; whether to return Ajax or full-browser results
+ *
+ * Only works if the current user is logged in.
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Brion Vibber <brion@status.net>
+ * @copyright 2008-2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+class TagsubAction extends Action
+{
+    var $user;
+    var $tag;
+
+    /**
+     * Check pre-requisites and instantiate attributes
+     *
+     * @param Array $args array of arguments (URL, GET, POST)
+     *
+     * @return boolean success flag
+     */
+    function prepare($args)
+    {
+        parent::prepare($args);
+        if ($this->boolean('ajax')) {
+            StatusNet::setApi(true);
+        }
+
+        // Only allow POST requests
+
+        if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+            // TRANS: Client error displayed trying to perform any request method other than POST.
+            // TRANS: Do not translate POST.
+            $this->clientError(_('This action only accepts POST requests.'));
+            return false;
+        }
+
+        // CSRF protection
+
+        $token = $this->trimmed('token');
+
+        if (!$token || $token != common_session_token()) {
+            // TRANS: Client error displayed when the session token is not okay.
+            $this->clientError(_('There was a problem with your session token.'.
+                                 ' Try again, please.'));
+            return false;
+        }
+
+        // Only for logged-in users
+
+        $this->user = common_current_user();
+
+        if (empty($this->user)) {
+            // TRANS: Client error displayed trying to subscribe when not logged in.
+            $this->clientError(_('Not logged in.'));
+            return false;
+        }
+
+        // Profile to subscribe to
+
+        $this->tag = $this->arg('tag');
+
+        if (empty($this->tag)) {
+            // TRANS: Client error displayed trying to subscribe to a non-existing profile.
+            $this->clientError(_('No such profile.'));
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Handle request
+     *
+     * Does the subscription and returns results.
+     *
+     * @param Array $args unused.
+     *
+     * @return void
+     */
+    function handle($args)
+    {
+        // Throws exception on error
+
+        TagSub::start($this->user->getProfile(),
+                      $this->tag);
+
+        if ($this->boolean('ajax')) {
+            $this->startHTML('text/xml;charset=utf-8');
+            $this->elementStart('head');
+            // TRANS: Page title when tag subscription succeeded.
+            $this->element('title', null, _m('Subscribed'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+            $unsubscribe = new TagUnsubForm($this, $this->tag);
+            $unsubscribe->show();
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            $url = common_local_url('tag',
+                                    array('tag' => $this->tag));
+            common_redirect($url, 303);
+        }
+    }
+}
diff --git a/plugins/TagSub/tagsubform.php b/plugins/TagSub/tagsubform.php
new file mode 100644 (file)
index 0000000..108558b
--- /dev/null
@@ -0,0 +1,142 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Form for subscribing to a tag
+ *
+ * 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  TagSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2009-2011 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') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Form for subscribing to a user
+ *
+ * @category TagSubPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@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/
+ *
+ * @see      UnsubscribeForm
+ */
+
+class TagSubForm extends Form
+{
+    /**
+     * Name of tag to subscribe to
+     */
+
+    var $tag = '';
+
+    /**
+     * Constructor
+     *
+     * @param HTMLOutputter $out     output channel
+     * @param string        $tag     name of tag to subscribe to
+     */
+
+    function __construct($out=null, $tag=null)
+    {
+        parent::__construct($out);
+
+        $this->tag = $tag;
+    }
+
+    /**
+     * ID of the form
+     *
+     * @return int ID of the form
+     */
+
+    function id()
+    {
+        return 'tag-subscribe-' . $this->tag;
+    }
+
+
+    /**
+     * class of the form
+     *
+     * @return string of the form class
+     */
+
+    function formClass()
+    {
+        // class to match existing styles...
+        return 'form_user_subscribe ajax';
+    }
+
+
+    /**
+     * Action of the form
+     *
+     * @return string URL of the action
+     */
+
+    function action()
+    {
+        return common_local_url('tagsub', array('tag' => $this->tag));
+    }
+
+
+    /**
+     * Legend of the Form
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+        $this->out->element('legend', null, _m('Subscribe to this tag'));
+    }
+
+    /**
+     * Data elements of the form
+     *
+     * @return void
+     */
+
+    function formData()
+    {
+        $this->out->hidden('subscribeto-' . $this->tag,
+                           $this->tag,
+                           'subscribeto');
+    }
+
+    /**
+     * Action elements
+     *
+     * @return void
+     */
+
+    function formActions()
+    {
+        $this->out->submit('submit', _('Subscribe'), 'submit', null, _m('Subscribe to this tag'));
+    }
+}
diff --git a/plugins/TagSub/tagunsubaction.php b/plugins/TagSub/tagunsubaction.php
new file mode 100644 (file)
index 0000000..26fb9ff
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2011, StatusNet, Inc.
+ *
+ * Tag subscription action.
+ *
+ * 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/>.
+ *
+ * PHP version 5
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2010 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+/**
+ * Tag unsubscription action
+ *
+ * Takes parameters:
+ *
+ *    - token: session token to prevent CSRF attacks
+ *    - ajax: boolean; whether to return Ajax or full-browser results
+ *
+ * Only works if the current user is logged in.
+ *
+ * @category  Action
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Brion Vibber <brion@status.net>
+ * @copyright 2008-2011 StatusNet, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3
+ * @link      http://status.net/
+ */
+class TagunsubAction extends TagsubAction
+{
+    /**
+     * Handle request
+     *
+     * Does the subscription and returns results.
+     *
+     * @param Array $args unused.
+     *
+     * @return void
+     */
+    function handle($args)
+    {
+        // Throws exception on error
+
+        TagSub::cancel($this->user->getProfile(),
+                       $this->tag);
+
+        if ($this->boolean('ajax')) {
+            $this->startHTML('text/xml;charset=utf-8');
+            $this->elementStart('head');
+            // TRANS: Page title when tag unsubscription succeeded.
+            $this->element('title', null, _m('Unsubscribed'));
+            $this->elementEnd('head');
+            $this->elementStart('body');
+            $subscribe = new TagSubForm($this, $this->tag);
+            $subscribe->show();
+            $this->elementEnd('body');
+            $this->elementEnd('html');
+        } else {
+            $url = common_local_url('tag',
+                                    array('tag' => $this->tag));
+            common_redirect($url, 303);
+        }
+    }
+}
diff --git a/plugins/TagSub/tagunsubform.php b/plugins/TagSub/tagunsubform.php
new file mode 100644 (file)
index 0000000..0b44648
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Form for subscribing to a tag
+ *
+ * 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  TagSubPlugin
+ * @package   StatusNet
+ * @author    Brion Vibber <brion@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2009-2011 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') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Form for subscribing to a user
+ *
+ * @category TagSubPlugin
+ * @package  StatusNet
+ * @author   Brion Vibber <brion@status.net>
+ * @author   Evan Prodromou <evan@status.net>
+ * @author   Sarven Capadisli <csarven@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/
+ *
+ * @see      UnsubscribeForm
+ */
+
+class TagUnsubForm extends TagSubForm
+{
+    /**
+     * ID of the form
+     *
+     * @return int ID of the form
+     */
+
+    function id()
+    {
+        return 'tag-unsubscribe-' . $this->tag;
+    }
+
+
+    /**
+     * class of the form
+     *
+     * @return string of the form class
+     */
+
+    function formClass()
+    {
+        // class to match existing styles...
+        return 'form_user_unsubscribe ajax';
+    }
+
+
+    /**
+     * Action of the form
+     *
+     * @return string URL of the action
+     */
+
+    function action()
+    {
+        return common_local_url('tagunsub', array('tag' => $this->tag));
+    }
+
+
+    /**
+     * Legend of the Form
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+        $this->out->element('legend', null, _m('Unsubscribe from this tag'));
+    }
+
+    /**
+     * Action elements
+     *
+     * @return void
+     */
+
+    function formActions()
+    {
+        $this->out->submit('submit', _('Unsubscribe'), 'submit', null, _m('Unsubscribe from this tag'));
+    }
+}
index 8930e08c9ec8980b3cdbd7c63e26f31cc4fa513d..0e06dd3a8abce5bfe09ba47f01964927fc464b57 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-06 02:34+0100\n"
+"POT-Creation-Date: 2011-03-11 18:15+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"
@@ -29,7 +29,7 @@ msgid "Flagged"
 msgstr ""
 
 #. TRANS: Plugin description.
-#: UserFlagPlugin.php:294
+#: UserFlagPlugin.php:279
 msgid ""
 "This plugin allows flagging of profiles for review and reviewing flagged "
 "profiles."
diff --git a/plugins/UserFlag/locale/de/LC_MESSAGES/UserFlag.po b/plugins/UserFlag/locale/de/LC_MESSAGES/UserFlag.po
new file mode 100644 (file)
index 0000000..49506be
--- /dev/null
@@ -0,0 +1,95 @@
+# Translation of StatusNet - UserFlag to German (Deutsch)
+# Exported from translatewiki.net
+#
+# Author: Habi
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - UserFlag\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:19:37+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: 2011-03-06 02:19:38+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: de\n"
+"X-Message-Group: #out-statusnet-plugin-userflag\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. TRANS: AJAX form title for a flagged profile.
+msgid "Flagged for review"
+msgstr "Zum Überprüfen markiert"
+
+#. TRANS: Body text for AJAX form when a profile has been flagged for review.
+#. TRANS: Message added to a profile if it has been flagged for review.
+msgid "Flagged"
+msgstr "Markiert"
+
+#. TRANS: Plugin description.
+msgid ""
+"This plugin allows flagging of profiles for review and reviewing flagged "
+"profiles."
+msgstr ""
+"Dieser Plugin ermöglicht, Profile zur Überprüfung zu markieren und diese "
+"markierten Profile zu überprüfen."
+
+#. TRANS: Form title for flagging a profile for review.
+msgid "Flag"
+msgstr "Markieren"
+
+#. TRANS: Form description.
+msgid "Flag profile for review."
+msgstr "Profil zur Überprüfung markieren."
+
+#. TRANS: Form title for action on a profile.
+msgid "Clear"
+msgstr "Löschen"
+
+msgid "Clear all flags"
+msgstr "Alle Markierungen löschen"
+
+#. TRANS: Title for page with a list of profiles that were flagged for review.
+msgid "Flagged profiles"
+msgstr "Markierte Profile"
+
+#. TRANS: Header for moderation menu with action buttons for flagged profiles (like 'sandbox', 'silence', ...).
+msgid "Moderate"
+msgstr "Moderieren"
+
+#. TRANS: Message displayed on a profile if it has been flagged.
+#. TRANS: %1$s is a comma separated list of at most 5 user nicknames that flagged.
+#. TRANS: %2$d is a positive integer of additional flagging users. Also used for the plural.
+#, php-format
+msgid "Flagged by %1$s and %2$d other"
+msgid_plural "Flagged by %1$s and %2$d others"
+msgstr[0] "Markiert durch %1$s und %2$d weitere Konten"
+msgstr[1] "Markiert durch %1$s und %2$d Andere"
+
+#. TRANS: Message displayed on a profile if it has been flagged.
+#. TRANS: %s is a comma separated list of at most 5 user nicknames that flagged.
+#, php-format
+msgid "Flagged by %s"
+msgstr "Durch %s markiert"
+
+#. TRANS: Server exception given when flags could not be cleared.
+#, php-format
+msgid "Couldn't clear flags for profile \"%s\"."
+msgstr "Konnte Markierung für Profil \"%s\" nicht entfernen."
+
+#. TRANS: Title for AJAX form to indicated that flags were removed.
+msgid "Flags cleared"
+msgstr ""
+
+#. TRANS: Body element for "flags cleared" form.
+msgid "Cleared"
+msgstr ""
+
+#. TRANS: Server exception.
+#, php-format
+msgid "Couldn't flag profile \"%d\" for review."
+msgstr ""
diff --git a/plugins/Xmpp/locale/sv/LC_MESSAGES/Xmpp.po b/plugins/Xmpp/locale/sv/LC_MESSAGES/Xmpp.po
new file mode 100644 (file)
index 0000000..ae1791d
--- /dev/null
@@ -0,0 +1,35 @@
+# Translation of StatusNet - Xmpp to Swedish (Svenska)
+# Exported from translatewiki.net
+#
+# Author: WikiPhoenix
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet - Xmpp\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-11 18:15+0000\n"
+"PO-Revision-Date: 2011-03-11 18:19:44+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: 2011-03-08 01:22:14+0000\n"
+"X-Generator: MediaWiki 1.18alpha (r83703); Translate extension (2011-03-11)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: sv\n"
+"X-Message-Group: #out-statusnet-plugin-xmpp\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Send me a message to post a notice"
+msgstr ""
+
+msgid "XMPP/Jabber/GTalk"
+msgstr "XMPP/Jabber/GTalk"
+
+msgid ""
+"The XMPP plugin allows users to send and receive notices over the XMPP/"
+"Jabber network."
+msgstr ""
+"XMPP-tillägget tillåter användare skicka och ta emot meddelanden över XMPP/"
+"Jabber-nätverket."
diff --git a/theme/neo/README b/theme/neo/README
new file mode 100644 (file)
index 0000000..39d9e0f
--- /dev/null
@@ -0,0 +1,2 @@
+Default avatars are modified from an image by Francesco 'Architetto' Rollandin.
+http://www.openclipart.org/detail/34957
index d230fc0a4225ef4bc7208b5e984f7689c63575fc..7cb5e119111cc4fd3ec4a56d3956661adc3de7f6 100644 (file)
 body {
     background-color: #C6C8CC;
     background-image: url(../images/bg.png);
-    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 
-    font-size: 82%;
+    font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; 
+    font-size: 14px;
+    line-height: 1.6;
+    color: #222;
+}
+
+input, textarea, select, option {
+    font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; 
+    font-size: 1em;
 }
 
 a {color: #3e3e8c;}
+a:hover {color: blue;}
 
 h1 {font-size: 1.6em;}
 h2 {font-size: 1.6em;}
@@ -27,59 +35,48 @@ h5 {font-size: 1.2em;}
 h6 {font-size: 1em;}
 
 #wrap {
-    width: 930px;
+    width: 960px;
     margin: 0px auto;
-    padding: 0px 15px 10px 15px;
-    background-color: #fff;
-    border-left: 10px solid #E0E0E0;
-    border-right: 10px solid #E0E0E0;
+    background: #fff url('../images/brdr_black_dot.png') repeat-x 0px 10px;
+    border-left: 10px solid #fff;
+    border-right: 10px solid #fff;
+    padding-top: 10px;
 }
 
 #header {
-    width: 940px;
+    width: 960px;
     padding: 0px;
-    padding-top: 50px;
+    padding-top: 12px;
 }
 
 address {
     float: left;
-    margin-right: 20px;
-    margin-top: 0px;
-}
-
-.poweredby {
-    background: url(../images/sn-tiny.png) no-repeat top left;
-    height: 40px;
-    font-size: 0.8em;
-    color: #fff;
-    line-height: 42px;
-    padding-left: 50px;
-    position: absolute;
-    top: 6px;
-    left: 0;
+    position: relative;
+    top: 1px;
+    left: 2px;
+    margin: 0px;
+    padding: 0px;
+    height: 24px;
+    width: 148px;
     z-index: 99;
-    font-style: normal;
-}
-
-.poweredby a {
-    color: #fff !important;
-    font-weight: bold;
 }
 
 #site_nav_global_primary {
     display: block;
     position: absolute;
-    top: 0;
-    left: 0;
-    z-index: 98;
-    background-color: #364A84;
-    width: 960px;
-    margin-left: -15px; 
-    margin-top: 0px;
+    top: 10px;
+    right: 0;
+    width: 800px;
+    margin: 0px;
     height: 24px;
     line-height: 20px;
-    border-top: 10px solid #fff;
-    border-bottom: 1px solid #fff;
+    -webkit-border-top-right-radius: 6px;
+    -moz-border-radius-topright: 6px;
+    border-top-right-radius: 6px;
+    background: #364A84;
+    background: -moz-linear-gradient(top, #516499 , #364a84);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#516499), color-stop(100%,#364a84));
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#516499', endColorstr='#364a84',GradientType=0 ); /* XXX move all to ie.css */ 
 }
 
 #site_nav_global_primary ul {
@@ -91,13 +88,13 @@ address {
 }
 
 #site_nav_global_primary li:last-child {
-    margin-right: 16px;
+    margin-right: 10px;
 }
 
 #site_nav_global_primary a {
     color: #fff !important;
     text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
-    padding: 2px 12px 2px 12px;
+    padding: 2px 10px 2px 10px;
     height: 20px;
     display: block;
     float: left;
@@ -137,145 +134,287 @@ address {
     color: #3e3e8c;
 }
 
-.form_notice {
-    float: left;
-    margin-top: 0px;
-    width: 510px;
-    padding: 10px;
-    -webkit-border-radius: 6px;
-    -moz-border-radius: 6px;
-    border-radius: 6px;
-    background: #cdd1dd;
+#core {
+    clear: both;
+    margin: 0px;
+    width: 958px;
+    border-top: 5px solid #FB6104;
+    border-left: 1px solid #d8dae6;
+    border-right: 1px solid #d8dae6;
 }
 
-.form_notice fieldset {
+#aside_primary_wrapper {
     width: 100%;
-}
+    float: left;
+    overflow: hidden;
+    position: relative;
+    background-color: #ececf2;  
+}    
 
-.form_notice textarea {
-    width: 378px;
-    height: 54px;
-    -webkit-border-radius: 6px;
-    -moz-border-radius: 6px;
-    border-radius: 6px;
-}
+#content_wrapper  {  
+    width: 100%;  
+    float: left;
+    position: relative;  
+    right: 239px; 
+    background-color: #fff;  
+    border-right: 1px solid #d8dae6;
+}  
+
+#site_nav_local_views_wrapper  {  
+    width: 100%;  
+    float: left;
+    position: relative;  
+    right: 561px;
+    background-color: #ececf2;  
+    border-right: 1px solid #d8dae6;
+}  
 
-.form_notice label.notice_data-attach {
-    top: 27px;
-    right: 86px;
+#site_nav_local_views {
+    width: 138px;
+    float: left;
+    overflow: hidden;
+    position: relative;
+    left: 800px;
+    margin-top: 0px;
+    padding: 22px 10px 40px 10px;
 }
 
-.form_notice #notice_data-geo_wrap label,
-.form_notice #notice_data-geo_wrap input {
-    top: 52px;
-    right: 86px;
+#site_nav_local_views H3 {
+    margin-bottom: 10px;
+    padding-bottom: 6px;
+    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
+    color: #7a7c87;
+    font-size: 1.1em;
+    letter-spacing: 2px;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
+    text-transform: uppercase;
 }
 
-.form_notice #notice_action-submit {
-    font-size: 0.9em;
-    top: 80px;
-       right: -2px;
-    height: 2.4em;
-    width: 106px;
+#site_nav_local_views li {
+    display: block;
+    margin: 0px 0px 8px 0px;
 }
 
-.form_notice .error,
-.form_notice .success,
-.form_notice .notice-status {
-    width: 341px;
+#site_nav_local_views li ul {
+    margin-bottom: 20px;
 }
 
-.form_notice .error {
-    margin-left: 0px;
+#site_nav_local_views a {
+    display: block;
+    padding: 0px 0px 1px 10px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+    text-transform: uppercase;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
 }
 
-#core {
-    clear: both;
-    margin: 0px;
-    width: 930px;
-    margin-left: 0px;
-    margin-top: 8px;
+#site_nav_local_views a:hover, #site_nav_local_views .current a {
+    color: #fff;
+    text-decoration: none;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
+    background: #364a84;
+    background: -moz-linear-gradient(top, #7b8dbb , #364a84);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#364a84',GradientType=0 );
 }
 
 #content {
-    width: 530px;
-    margin-right: 0px;
-    padding-left: 30px;
-    padding-right: 30px;
+    width: 520px;
+    float: left;
+    overflow: hidden;
+    position: relative;
+    left: 801px;
+    margin: 0px;
+    padding: 20px 20px 40px 20px;
 }
 
-#site_nav_local_views {
-    display: block;
+/* Input forms */
+
+.input_forms {
     float: left;
-    width: 130px;
-    margin-top: 5px;
+    position: relative;
+    top: -20px;
+    left: -20px;
+    padding: 18px 20px 0px 20px;
+    background: #fafafa url('../images/brdr_black_dot.png') repeat-x bottom left;
 }
 
-#site_nav_local_views H3 {
-    border-bottom: 3px solid #A6ADBF;
-    color: #A6ADBF;
-    font-size: 1.1em;
-    letter-spacing: 2px;
+#input_form_nav {
+    float: left;
     margin-bottom: 10px;
-    text-transform: uppercase;
 }
 
-#site_nav_local_views li {
+#input_form_nav li a {
     display: block;
-    margin: 0px 0px 6px 0px;
+    float: left;
+    padding: 0px 10px 1px 10px;
+    margin-right: 10px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+    border: 1px solid #ECECF2;
+    font-weight: bold;
+    line-height: 1.4em;
+    text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.9);
+    background: #ececf2;
+    background: -moz-linear-gradient(top, #fff , #ececf2);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fff), color-stop(100%,#ececf2));
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#ececf2',GradientType=0 );
 }
 
-#site_nav_local_views li ul {
-    margin-bottom: 20px;
+#input_form_nav li:hover a, #input_form_nav li.current a {
+    color: #fff;
+    text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.5);
+    border: 1px solid #ececf2;
+    background: #364a84;
+    background: -moz-linear-gradient(top, #7b8dbb , #364a84);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#364a84',GradientType=0 );
 }
 
-#site_nav_local_views a {
-    padding: 2px 0px 2px 10px;
-    display: block;
-    -webkit-border-radius: 6px;
-    -moz-border-radius: 6px;
-    border-radius: 6px;
+.input_form_nav_tab a, .input_form_nav_tab.current {
+    text-decoration: none !important; /* XXX cf rebase */
 }
 
-#site_nav_local_views a:hover {
-    background: #8e98b4 !important;
-    color: #fff !important;
-    text-decoration: none;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
+.input_form {
+    position: relative;
+    float: left;
+    width: 520px;
+    padding-bottom: 15px;
 }
 
-#site_nav_local_views .current a {
-    text-decoration: none;
-    background: #8e98b4 !important;
-    color: #fff !important;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
+#input_form_status {
+    padding-bottom: 45px;
 }
 
-#aside_primary {
+.form_notice {
+    padding: 0px;
     background: none;
-    width: 210px;
-    padding-top: 0px;
+}
+
+.form_notice fieldset {
+    width: auto;
+    position: static;
+}
+
+.form_notice #notice_data-text-label {
+    display: none; /* XXX move into input with js */
+}
+
+.form_notice textarea,
+.form_notice_placeholder .placeholder {
+    width: 473px;
+}
+.form_notice textarea {
+    height: 42px;
+    padding: 6px 10px 18px 10px;
+    border: 1px solid #a6a6a6;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
+    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
+    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
+    z-index: 97;
+    font-size: 1.2em;
+}
+
+.form_notice label.notice_data-attach {
+    top: 0px;
+    right: 0px;
+    z-index: 96;
+}
+
+.form_notice .notice_data-geo_wrap label,
+.form_notice .notice_data-geo_wrap input {
+    top: 26px;
+    right: 0px;
+    z-index: 99;
+}
+
+.form_notice .count {
+    position: absolute;
+    top: 50px;
+    right: 35px;
+    font-size: 0.8em; 
+    height: 1em;
+    z-index: 99;
+}
+
+.form_notice #notice_action-submit {
+    position: absolute;
+    top: 100%;
+    left: 0px;
+    margin-top: -44px;
+    float: left;
+    width: 90px;
+    padding: 0px;
+    z-index: 99;
+}
+
+.form_notice .error,
+.form_notice .success,
+.form_notice .notice-status {
+    width: 478px; 
+    position: relative;
+    top: 0px;
+    float: none;
+    clear: none;
+    margin-left: 0px;
     margin-top: 5px;
+    padding: 5px 5px 5px 10px;
+    border: 1px solid #ccc;
+}
+
+.form_notice .error {
+    border: 1px solid #d05858;
+}
+
+.form_notice .attach-status code {
+    font-size: 1em;
+}
+
+.input_form fieldset {
+    margin: 0px;
+    padding: 0px;
+}
+
+.input_form fieldset fieldset {
+    margin-bottom: 10px !important;
+}
+
+#aside_primary {
+    width: 218px;
+    float: left;
+    overflow: hidden;
+    position: relative;
+    left: 802px;
+    padding: 22px 10px 40px 10px;
+    margin-top: 0px;
+    background: none;
 }
 
 #aside_primary .section {
     width: 100%;
     margin-left: 0px;
     margin-right: 0px;
+    font-size: 0.88em;
 }
 
 #aside_primary h2 {
-    border-bottom: 3px solid #A6ADBF;
-    color: #A6ADBF;
-    font-size: 1.1em;
-    letter-spacing: 2px;
     margin-bottom: 10px;
+    padding-bottom: 6px;
+    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
+    color: #7a7c87;
+    font-size: 1.25em;
+    letter-spacing: 2px;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
     text-transform: uppercase;
-    text-align: right;
 }
 
 .section ul.entities {
-    width: 290px;
+    width: 220px;
 }
 
 .section .entities li {
@@ -286,8 +425,8 @@ address {
 
 #popular_notices .avatar {
     position: relative;
-    top: 2px;
-    margin-bottom: 4px;
+    top: 4px;
+    margin-bottom: 6px;
 }
 
 #aside_primary td {
@@ -310,7 +449,7 @@ address {
     color: #A6ADBF;
     font-size: 1.4em;
     letter-spacing: 4px;
-    text-transform: uppercase;
+    text-transform: none;
 }
 
 #notices_primary {
@@ -323,17 +462,17 @@ address {
 }
 
 .notice {
-    line-height: 1.35em;
+    line-height: 1.36em;
     margin-bottom: 10px;
 }
 
 #content .notice .author .photo {
     left: 0px;
-    top: 6px;
+    top: 9px;
 }
 
 #content .notice .entry-title {
-    min-height: 34px;
+    min-height: 35px;
 }
 
 #showstream .notice .entry-title {
@@ -345,7 +484,7 @@ address {
 }
 
 .notice div.entry-content {
-    font-size: 0.9em;
+    font-size: 0.88em;
     line-height: 1.2em;
     margin-top: 6px;
     opacity: 0.6;
@@ -371,6 +510,103 @@ div.entry-content a.response:after {
     margin-top: 4px;
 }
 
+.threaded-replies {
+    clear: both;
+    float: left;
+    width: 458px;
+    margin-left: 59px;
+    margin-top: 10px;
+    padding-right: 2px;
+    border-left: 3px solid #ECECF2;
+    background: #fafafa;
+    font-size: 1em;
+}
+
+#content .notice .threaded-replies .notice {
+    padding-bottom: 14px;
+    padding-top: 5px;
+    border-bottom: 2px dotted #eee;
+    line-height: 1.36em;
+    margin-top: 0px;
+    margin-bottom: 0px;
+    margin-left: 10px;
+    background: none;
+}
+
+#content .notice .threaded-replies .entry-title {
+    min-height: 1px;
+}
+
+#content .threaded-replies .notice .author .photo {
+    height: 24px;
+    width: 24px;
+    top: 14px;
+    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
+    -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
+    -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
+}
+
+#content .notice .threaded-replies .notice .entry-title {
+    margin: 2px 7px 0px 35px;
+}
+
+#content .notice .threaded-replies .notice div.entry-content {
+    clear:left;
+    float:left;
+    margin-left: 35px;
+    margin-top: 10px;
+}
+
+.threaded-replies li {
+    list-style-type: none;
+}
+
+.threaded-replies .notice-reply-comments {
+    margin: 2px 0px 4px 10px;
+}
+
+.threaded-replies .placeholder {
+    margin: 10px;
+    width: 426px;
+}
+
+.threaded-replies .notice-reply {
+    clear: left;
+    position: relative;
+    padding: 10px;
+    padding-bottom: 44px;
+}
+
+.threaded-replies .form_notice textarea {
+    width: 385px;
+}
+
+.threaded-replies .form_notice label.notice_data-attach {
+    top: 10px;
+    right: 10px;
+}
+
+.threaded-replies .form_notice .notice_data-geo_wrap label,
+.threaded-replies .form_notice .notice_data-geo_wrap input {
+    top: 36px;
+    right: 10px;
+}
+
+.threaded-replies .form_notice .count {
+    top: 60px;
+    right: 50px;
+}
+
+.threaded-replies .form_notice #notice_action-submit {
+    left: 10px;
+}
+
+.threaded-replies .form_notice .error,
+.threaded-replies .form_notice .success,
+.threaded-replies .form_notice .notice-status {
+    width: 390px; 
+}
+
 .pagination {
     height: 1.2em;
 }
@@ -382,14 +618,10 @@ div.entry-content a.response:after {
 
 .entity_profile {
     float: left;
-    width: 435px;
+    width: 360px;
     margin-top: 4px;
 }
 
-td.entity_profile { /* cf directory table */
-    width: auto;
-}
-
 .entity_profile .entity_depiction {
     margin-top: 4px;
 }
@@ -453,7 +685,7 @@ td.entity_profile { /* cf directory table */
   top: -3px;
 }
 
-.pagination {
+#pagination {
     height: 1.2em;
     padding-bottom: 12px;
     -webkit-border-radius: 6px;
@@ -462,6 +694,8 @@ td.entity_profile { /* cf directory table */
 }
 
 #footer {
+    position: relative;
+    top: -6px;
     color: #000;
     margin-left: 0px;
     margin-right: 0px;
@@ -493,29 +727,29 @@ td.entity_profile { /* cf directory table */
 }
 
 .form_notice input.submit, .form_settings input.submit, .form_settings input.cancel {
-    border-radius: 3px;
-    -moz-border-radius: 3px;
-    -webkit-border-radius: 3px;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
+    height: 1.9em;
+    padding: 0px 10px;
     color:#fff;
-    font-weight: normal;
-    font-size: 1em;
-    height: 2.2em;
-    padding-left: 1em;
-    padding-right: 1em;
-    background: #7080aa;
-    background: -moz-linear-gradient(top, #7b8dbb , #7080aa);
-    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#7080aa)); 
-    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#7080aa',GradientType=0 );
-    border-width: 1px;
+    font-weight: bold;
+    text-transform: uppercase;
+    font-size: 1.2em;
+    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
+    border: 1px solid #d7621c;
+    border-radius: 4px;
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    background: #FB6104;
+    background: -moz-linear-gradient(top, #ff9d63 , #FB6104);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff9d63), color-stop(100%,#FB6104)); 
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff9d63', endColorstr='#FB6104',GradientType=0 );
 }
 
 .form_notice input.submit:hover, .form_settings input.submit:hover, .form_settings input.cancel:hover {
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.8);
-    background: #7b8dbb;
-    background: -moz-linear-gradient(top, #7080aa , #7b8dbb);
-    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7080aa), color-stop(100%,#7b8dbb));
-    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7080aa', endColorstr='#7b8dbb',GradientType=0 );
+    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
+    background: #ff9d63;
+    background: -moz-linear-gradient(top, #FB6104 , #fc8035);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FB6104), color-stop(100%,#fc8035));
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FB6104', endColorstr='#fc8035',GradientType=0 );
 }
 
 .form_settings input#settings_design_reset, .form_settings input.cancel {
@@ -825,4 +1059,63 @@ ul.bookmark-tags a:hover {
     margin-right: 0px;
 }
 
+/* Directory specific styles */
+
+td.entity_profile {
+    width: auto;
+}
+
+#user_directory {
+    position: relative;
+    top: -20px;
+}
+
+div#user_directory div.alpha_nav > a {
+    border-left: 1px solid #ccc !important;
+    padding-left: 3.5px !important;
+    padding-right: 4px !important;
+    margin-right: 0px;
+    float: left;
+    line-height: 1.4em;
+}
+
+div#user_directory div.alpha_nav > a.first {
+    border-left: none !important;
+}
+
+div#user_directory div.alpha_nav a.current {
+    background-color: #ECECF2 !important;
+}
+
+table.profile_list {
+    margin-top: 10px;
+}
+
+.profile_list th#created {
+    width: 100px;
+}
+
+.profile_list th#subscriptions {
+    width: 120px;
+}
+
+table.profile_list tr.alt {
+    background-color: #fafafa !important;
+}
+
+.profile_list .entity_actions {
+    width: 30px;
+    height: 26px;
+    margin-right: 5px;
+}
+
+.profile_list .entity_actions input {
+    width: 26px;
+    height: 26px;
+    display: block;
+    overflow: hidden;
+    font-size: 0em;
+}
+
+
 }/*end of @media screen, projection, tv*/
index a3410e307ede7b70f4878fb83e7fd7c81353887e..3f3f026ab7056c2abb76a6bbc14c3b6e3d1c4c77 100644 (file)
Binary files a/theme/neo/default-avatar-mini.png and b/theme/neo/default-avatar-mini.png differ
index 8f635d1aa657ecbab286f32ca274ba13f1f6c47c..f9addc06b4416eee5d372ac5fff9b6105d3b4255 100644 (file)
Binary files a/theme/neo/default-avatar-profile.png and b/theme/neo/default-avatar-profile.png differ
index a3024639f481200223f0640450f65d4d3ffae513..e542854e77d8a7655356b430c7ff96dad270cedb 100644 (file)
Binary files a/theme/neo/default-avatar-stream.png and b/theme/neo/default-avatar-stream.png differ
diff --git a/theme/neo/images/brdr_black_dot.png b/theme/neo/images/brdr_black_dot.png
new file mode 100644 (file)
index 0000000..8a300b1
Binary files /dev/null and b/theme/neo/images/brdr_black_dot.png differ
diff --git a/theme/neo/images/brdr_white_dot.png b/theme/neo/images/brdr_white_dot.png
new file mode 100644 (file)
index 0000000..cdb2d5b
Binary files /dev/null and b/theme/neo/images/brdr_white_dot.png differ
index 61a445a61a952eb71507419aa052774c96603c72..389197953086b2d6b50dddd4bc6d7e7dddea6e6c 100644 (file)
Binary files a/theme/neo/logo.png and b/theme/neo/logo.png differ
index 0209008d4016175780d31192682999f6ad94dda5..05d914c5e8fa5328ceb313343611723c4fa9cfef 100644 (file)
@@ -1 +1,2 @@
+external[]="http://fonts.googleapis.com/css?family=Lato:100,100italic,300,300italic,400,400italic,700,700italic,900,900italic"
 include=rebase
index c1ac1e8f4d7a8cd6972f09d50d8e9635c08afe4b..ee88b312a791f67930668fca227dfb06700f9d36 100644 (file)
@@ -928,7 +928,7 @@ outline:none;
 text-indent:-9999px;
 }
 
-.pagination {
+#pagination {
     background-color: #f2f2f2;
     clear: left;
     margin-top: 20px;
@@ -936,19 +936,15 @@ text-indent:-9999px;
     height: 1em;
 }
 
-.pagination dt {
-    display: none;
-}
-
-.pagination li {
+#pagination li {
     display: inline;
 }
 
-.pagination .nav_prev {
+#pagination .nav_prev {
     float: left;
 }
 
-.pagination .nav_next {
+#pagination .nav_next {
     float: right;
 }
 
@@ -1737,7 +1733,7 @@ body.realtime-popup {
     right: 70px;
 }
 
-.realtime-popup .form_notice .notice_data-geo_wrap label, .form_notice .notice_data-geo_wrap input {
+.realtime-popup .form_notice .notice_data-geo_wrap label, .realtime-popup .form_notice .notice_data-geo_wrap input {
     right: 2px;
 }
 
@@ -1763,8 +1759,8 @@ body.realtime-popup {
 .notice-options .notice_delete,
 .notice-options form.form_repeat input.submit,
 #new_group a,
-.pagination .nav_prev a,
-.pagination .nav_next a,
+#pagination .nav_prev a,
+#pagination .nav_next a,
 button.close,
 .form_group_leave input.submit,
 .form_user_unsubscribe input.submit,
@@ -1940,12 +1936,12 @@ background-position:0 -1054px;
     background-position: 0 -1846px;
 }
 
-.pagination .nav_prev a {
+#pagination .nav_prev a {
     padding-top: 8px;
     padding-left: 25px;
     background-position:0 -187px;
 }
-.pagination .nav_next a { 
+#pagination .nav_next a { 
     padding-top: 9px;
     padding-right: 25px;
     background-position: 115% -252px;