From c8dab140f41a397c245a8858cb6030e2c985012c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 29 Oct 2010 11:13:33 -0400 Subject: add a hack to show ads on single-notice pages --- lib/uapplugin.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lib') diff --git a/lib/uapplugin.php b/lib/uapplugin.php index ef35bafbf..277781768 100644 --- a/lib/uapplugin.php +++ b/lib/uapplugin.php @@ -95,6 +95,24 @@ abstract class UAPPlugin extends Plugin $action->elementEnd('div'); } + // XXX: Hack to force ads to show on single-notice pages + + if (!is_null($this->rectangle) && + $action->trimmed('action') == 'shownotice') { + + $action->elementStart('div', array('id' => 'aside_primary', + 'class' => 'aside')); + + if (Event::handle('StartShowSections', array($action))) { + $action->showSections(); + Event::handle('EndShowSections', array($action)); + } + + $action->elementEnd('div'); + + return false; + } + return true; } -- cgit v1.2.3-54-g00ecf From 8391058ea409f02d12060e62c919752b58ba9a0c Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sat, 30 Oct 2010 13:47:19 +0200 Subject: Tabs to spaces, superfluous whitespace removed. --- lib/ping.php | 75 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 36 insertions(+), 39 deletions(-) (limited to 'lib') diff --git a/lib/ping.php b/lib/ping.php index abf1c4048..e1c7c748e 100644 --- a/lib/ping.php +++ b/lib/ping.php @@ -20,13 +20,12 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } function ping_broadcast_notice($notice) { + if ($notice->is_local != Notice::LOCAL_PUBLIC && $notice->is_local != Notice::LOCAL_NONPUBLIC) { + return true; + } - if ($notice->is_local != Notice::LOCAL_PUBLIC && $notice->is_local != Notice::LOCAL_NONPUBLIC) { - return true; - } - - # Array of servers, URL => type - $notify = common_config('ping', 'notify'); + # Array of servers, URL => type + $notify = common_config('ping', 'notify'); try { $profile = $notice->getProfile(); } catch (Exception $e) { @@ -35,21 +34,21 @@ function ping_broadcast_notice($notice) { common_log(LOG_ERR, "Exception getting notice profile: " . $e->getMessage()); return true; } - $tags = ping_notice_tags($notice); + $tags = ping_notice_tags($notice); - foreach ($notify as $notify_url => $type) { - switch ($type) { - case 'xmlrpc': - case 'extended': - $req = xmlrpc_encode_request('weblogUpdates.ping', - array($profile->nickname, # site name - common_local_url('showstream', - array('nickname' => $profile->nickname)), - common_local_url('shownotice', - array('notice' => $notice->id)), - common_local_url('userrss', - array('nickname' => $profile->nickname)), - $tags)); + foreach ($notify as $notify_url => $type) { + switch ($type) { + case 'xmlrpc': + case 'extended': + $req = xmlrpc_encode_request('weblogUpdates.ping', + array($profile->nickname, # site name + common_local_url('showstream', + array('nickname' => $profile->nickname)), + common_local_url('shownotice', + array('notice' => $notice->id)), + common_local_url('userrss', + array('nickname' => $profile->nickname)), + $tags)); $request = HTTPClient::start(); $request->setConfig('connect_timeout', common_config('ping', 'timeout')); @@ -79,9 +78,8 @@ function ping_broadcast_notice($notice) { "Ping success for $notify_url $notice->id"); } break; - - case 'get': - case 'post': + case 'get': + case 'post': $args = array('name' => $profile->nickname, 'url' => common_local_url('showstream', array('nickname' => $profile->nickname)), @@ -108,26 +106,25 @@ function ping_broadcast_notice($notice) { "'$result->body'"); } break; - - default: - common_log(LOG_WARNING, 'Unknown notify type for ' . $notify_url . ': ' . $type); + default: + common_log(LOG_WARNING, 'Unknown notify type for ' . $notify_url . ': ' . $type); } - } + } return true; } function ping_notice_tags($notice) { - $tag = new Notice_tag(); - $tag->notice_id = $notice->id; - $tags = array(); - if ($tag->find()) { - while ($tag->fetch()) { - $tags[] = $tag->tag; - } - $tag->free(); - unset($tag); - return implode('|', $tags); - } - return NULL; + $tag = new Notice_tag(); + $tag->notice_id = $notice->id; + $tags = array(); + if ($tag->find()) { + while ($tag->fetch()) { + $tags[] = $tag->tag; + } + $tag->free(); + unset($tag); + return implode('|', $tags); + } + return NULL; } -- cgit v1.2.3-54-g00ecf From 234b03d945b64ce43d2460be67ff11df74857da8 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sat, 30 Oct 2010 14:36:54 +0200 Subject: * translator documentation updates. * added FIXMEs in actions/showgroup.php. * superfluous whitespace removed. --- actions/showgroup.php | 60 +++++++++++++++++++++++++++++++++++---------------- lib/feedlist.php | 1 + lib/uapplugin.php | 9 -------- 3 files changed, 43 insertions(+), 27 deletions(-) (limited to 'lib') diff --git a/actions/showgroup.php b/actions/showgroup.php index 8e8ff717c..c87282844 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -46,10 +46,8 @@ define('MEMBERS_PER_SECTION', 27); * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class ShowgroupAction extends GroupDesignAction { - /** page we're viewing. */ var $page = null; @@ -58,7 +56,6 @@ class ShowgroupAction extends GroupDesignAction * * @return boolean true */ - function isReadOnly($args) { return true; @@ -69,18 +66,21 @@ class ShowgroupAction extends GroupDesignAction * * @return string page title, with page number */ - function title() { if (!empty($this->group->fullname)) { + // @todo FIXME: Needs proper i18n. Maybe use a generic method for this? $base = $this->group->fullname . ' (' . $this->group->nickname . ')'; } else { $base = $this->group->nickname; } if ($this->page == 1) { + // TRANS: Page title for first group page. %s is a group name. return sprintf(_('%s group'), $base); } else { + // TRANS: Page title for any but first group page. + // TRANS: %1$s is a group name, $2$s is a page number. return sprintf(_('%1$s group, page %2$d'), $base, $this->page); @@ -96,7 +96,6 @@ class ShowgroupAction extends GroupDesignAction * * @return boolean success flag */ - function prepare($args) { parent::prepare($args); @@ -118,6 +117,7 @@ class ShowgroupAction extends GroupDesignAction } if (!$nickname) { + // TRANS: Client error displayed if no nickname argument was given requesting a group page. $this->clientError(_('No nickname.'), 404); return false; } @@ -135,6 +135,7 @@ class ShowgroupAction extends GroupDesignAction return false; } else { common_log(LOG_NOTICE, "Couldn't find local group for nickname '$nickname'"); + // TRANS: Client error displayed if no remote group with a given name was found requesting group page. $this->clientError(_('No such group.'), 404); return false; } @@ -143,6 +144,7 @@ class ShowgroupAction extends GroupDesignAction $this->group = User_group::staticGet('id', $local->group_id); if (!$this->group) { + // TRANS: Client error displayed if no local group with a given name was found requesting group page. $this->clientError(_('No such group.'), 404); return false; } @@ -160,7 +162,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function handle($args) { $this->showPage(); @@ -171,7 +172,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showLocalNav() { $nav = new GroupNav($this, $this->group); @@ -183,7 +183,6 @@ class ShowgroupAction extends GroupDesignAction * * Shows a group profile and a list of group notices */ - function showContent() { $this->showGroupProfile(); @@ -195,7 +194,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showGroupNotices() { $notice = $this->group->getNotices(($this->page-1)*NOTICES_PER_PAGE, @@ -218,15 +216,16 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showGroupProfile() { $this->elementStart('div', array('id' => 'i', 'class' => 'entity_profile vcard author')); + // TRANS: Group profile header (h2). Text hidden by default. $this->element('h2', null, _('Group profile')); $this->elementStart('dl', 'entity_depiction'); + // TRANS: Label for group avatar (dt). Text hidden by default. $this->element('dt', null, _('Avatar')); $this->elementStart('dd'); @@ -242,6 +241,7 @@ class ShowgroupAction extends GroupDesignAction $this->elementEnd('dl'); $this->elementStart('dl', 'entity_nickname'); + // TRANS: Label for group nickname (dt). Text hidden by default. $this->element('dt', null, _('Nickname')); $this->elementStart('dd'); $hasFN = ($this->group->fullname) ? 'nickname url uid' : 'fn org nickname url uid'; @@ -253,6 +253,7 @@ class ShowgroupAction extends GroupDesignAction if ($this->group->fullname) { $this->elementStart('dl', 'entity_fn'); + // TRANS: Label for full group name (dt). Text hidden by default. $this->element('dt', null, _('Full name')); $this->elementStart('dd'); $this->element('span', 'fn org', $this->group->fullname); @@ -262,6 +263,7 @@ class ShowgroupAction extends GroupDesignAction if ($this->group->location) { $this->elementStart('dl', 'entity_location'); + // TRANS: Label for group location (dt). Text hidden by default. $this->element('dt', null, _('Location')); $this->element('dd', 'label', $this->group->location); $this->elementEnd('dl'); @@ -269,6 +271,7 @@ class ShowgroupAction extends GroupDesignAction if ($this->group->homepage) { $this->elementStart('dl', 'entity_url'); + // TRANS: Label for group URL (dt). Text hidden by default. $this->element('dt', null, _('URL')); $this->elementStart('dd'); $this->element('a', array('href' => $this->group->homepage, @@ -280,6 +283,7 @@ class ShowgroupAction extends GroupDesignAction if ($this->group->description) { $this->elementStart('dl', 'entity_note'); + // TRANS: Label for group description or group note (dt). Text hidden by default. $this->element('dt', null, _('Note')); $this->element('dd', 'note', $this->group->description); $this->elementEnd('dl'); @@ -290,6 +294,7 @@ class ShowgroupAction extends GroupDesignAction if (!empty($aliases)) { $this->elementStart('dl', 'entity_aliases'); + // TRANS: Label for group aliases (dt). Text hidden by default. $this->element('dt', null, _('Aliases')); $this->element('dd', 'aliases', implode(' ', $aliases)); $this->elementEnd('dl'); @@ -300,6 +305,7 @@ class ShowgroupAction extends GroupDesignAction $cur = common_current_user(); $this->elementStart('div', 'entity_actions'); + // TRANS: Group actions header (h2). Text hidden by default. $this->element('h2', null, _('Group actions')); $this->elementStart('ul'); $this->elementStart('li', 'entity_subscribe'); @@ -331,7 +337,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function getFeeds() { $url = @@ -341,23 +346,27 @@ class ShowgroupAction extends GroupDesignAction return array(new Feed(Feed::RSS1, common_local_url('grouprss', array('nickname' => $this->group->nickname)), + // TRANS: Tooltip for feed link. %s is a group nickname. sprintf(_('Notice feed for %s group (RSS 1.0)'), $this->group->nickname)), new Feed(Feed::RSS2, common_local_url('ApiTimelineGroup', array('format' => 'rss', 'id' => $this->group->id)), + // TRANS: Tooltip for feed link. %s is a group nickname. sprintf(_('Notice feed for %s group (RSS 2.0)'), $this->group->nickname)), new Feed(Feed::ATOM, common_local_url('ApiTimelineGroup', array('format' => 'atom', 'id' => $this->group->id)), + // TRANS: Tooltip for feed link. %s is a group nickname. sprintf(_('Notice feed for %s group (Atom)'), $this->group->nickname)), new Feed(Feed::FOAF, common_local_url('foafgroup', array('nickname' => $this->group->nickname)), + // TRANS: Tooltip for feed link. %s is a group nickname. sprintf(_('FOAF for %s group'), $this->group->nickname))); } @@ -367,7 +376,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showSections() { $this->showMembers(); @@ -382,7 +390,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showMembers() { $member = $this->group->getMembers(0, MEMBERS_PER_SECTION); @@ -396,17 +403,22 @@ class ShowgroupAction extends GroupDesignAction if (Event::handle('StartShowGroupMembersMiniList', array($this))) { + // TRANS: Header for mini list of group members on a group page (h2). $this->element('h2', null, _('Members')); $gmml = new GroupMembersMiniList($member, $this); $cnt = $gmml->show(); if ($cnt == 0) { + // TRANS: Description for mini list of group members on a group page when the group has no members. $this->element('p', null, _('(None)')); } + // @todo FIXME: Should be shown if a group has more than 27 members, but I do not see it displayed at + // for example http://identi.ca/group/statusnet. Broken? if ($cnt > MEMBERS_PER_SECTION) { $this->element('a', array('href' => common_local_url('groupmembers', array('nickname' => $this->group->nickname))), + // TRANS: Link to all group members from mini list of group members if group has more than n members. _('All members')); } @@ -421,7 +433,6 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showAdmins() { $adminSection = new GroupAdminSection($this, $this->group); @@ -433,22 +444,26 @@ class ShowgroupAction extends GroupDesignAction * * @return void */ - function showStatistics() { $this->elementStart('div', array('id' => 'entity_statistics', 'class' => 'section')); + // TRANS: Header for group statistics on a group page (h2). $this->element('h2', null, _('Statistics')); $this->elementStart('dl', 'entity_created'); - $this->element('dt', null, _('Created')); + // @todo FIXME: i18n issue. This label gets a colon added from somewhere. Should be part of the message. + // TRANS: Label for creation date in statistics on group page. + $this->element('dt', null, _m('LABEL','Created')); $this->element('dd', null, date('j M Y', strtotime($this->group->created))); $this->elementEnd('dl'); $this->elementStart('dl', 'entity_members'); - $this->element('dt', null, _('Members')); + // @todo FIXME: i18n issue. This label gets a colon added from somewhere. Should be part of the message. + // TRANS: Label for member count in statistics on group page. + $this->element('dt', null, _m('LABEL','Members')); $this->element('dd', null, $this->group->getMemberCount()); $this->elementEnd('dl'); @@ -458,12 +473,21 @@ class ShowgroupAction extends GroupDesignAction function showAnonymousMessage() { if (!(common_config('site','closed') || common_config('site','inviteonly'))) { + // @todo FIXME: use group full name here if available instead of (uglier) primary alias. + // TRANS: Notice on group pages for anonymous users for StatusNet sites that accept new registrations. + // TRANS: **%s** is the group alias, %%%%site.name%%%% is the site name, + // TRANS: %%%%action.register%%%% is the URL for registration, %%%%doc.help%%%% is a URL to help. + // TRANS: This message contains Markdown links. Ensure they are formatted correctly: [Description](link). $m = sprintf(_('**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . 'based on the Free Software [StatusNet](http://status.net/) tool. Its members share ' . 'short messages about their life and interests. '. '[Join now](%%%%action.register%%%%) to become part of this group and many more! ([Read more](%%%%doc.help%%%%))'), $this->group->nickname); } else { + // @todo FIXME: use group full name here if available instead of (uglier) primary alias. + // TRANS: Notice on group pages for anonymous users for StatusNet sites that accept no new registrations. + // TRANS: **%s** is the group alias, %%%%site.name%%%% is the site name, + // TRANS: This message contains Markdown links. Ensure they are formatted correctly: [Description](link). $m = sprintf(_('**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . 'based on the Free Software [StatusNet](http://status.net/) tool. Its members share ' . 'short messages about their life and interests. '), @@ -492,6 +516,7 @@ class GroupAdminSection extends ProfileSection function title() { + // TRANS: Header for list of group administrators on a group page (h2). return _('Admins'); } @@ -527,4 +552,3 @@ class GroupMembersMiniListItem extends ProfileMiniListItem return $aAttrs; } } - diff --git a/lib/feedlist.php b/lib/feedlist.php index 076576028..bbe66b2e7 100644 --- a/lib/feedlist.php +++ b/lib/feedlist.php @@ -62,6 +62,7 @@ class FeedList extends Widget if (!empty($feeds)) { $this->out->elementStart('div', array('id' => 'export_data', 'class' => 'section')); + // TRANS: Header for feed links (h2). $this->out->element('h2', null, _('Feeds')); $this->out->elementStart('ul', array('class' => 'xoxo')); diff --git a/lib/uapplugin.php b/lib/uapplugin.php index 277781768..26d6a72d8 100644 --- a/lib/uapplugin.php +++ b/lib/uapplugin.php @@ -51,7 +51,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - abstract class UAPPlugin extends Plugin { public $mediumRectangle = null; @@ -66,7 +65,6 @@ abstract class UAPPlugin extends Plugin * * @return boolean hook flag */ - function onEndShowStatusNetStyles($action) { // XXX: allow override by theme @@ -81,7 +79,6 @@ abstract class UAPPlugin extends Plugin * * @return boolean hook flag */ - function onStartShowAside($action) { if (!is_null($this->mediumRectangle)) { @@ -144,7 +141,6 @@ abstract class UAPPlugin extends Plugin * * @return boolean hook flag */ - function onStartShowSections($action) { if (!is_null($this->rectangle)) { @@ -165,7 +161,6 @@ abstract class UAPPlugin extends Plugin * * @return boolean hook flag */ - function onEndShowAside($action) { if (!is_null($this->wideSkyscraper)) { @@ -187,7 +182,6 @@ abstract class UAPPlugin extends Plugin * * @return void */ - abstract protected function showMediumRectangle($action); /** @@ -197,7 +191,6 @@ abstract class UAPPlugin extends Plugin * * @return void */ - abstract protected function showRectangle($action); /** @@ -207,7 +200,6 @@ abstract class UAPPlugin extends Plugin * * @return void */ - abstract protected function showWideSkyscraper($action); /** @@ -217,6 +209,5 @@ abstract class UAPPlugin extends Plugin * * @return void */ - abstract protected function showLeaderboard($action); } -- cgit v1.2.3-54-g00ecf From 83233a8a43d45b10ad64f05123ee9b7f4d3b160b Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sun, 31 Oct 2010 00:34:28 +0200 Subject: Fix i18n for B/kB/MB and add translator documentation. --- lib/imagefile.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/imagefile.php b/lib/imagefile.php index e47287741..b70fd248e 100644 --- a/lib/imagefile.php +++ b/lib/imagefile.php @@ -85,6 +85,8 @@ class ImageFile break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: + // TRANS: Exception thrown when too large a file is uploaded. + // TRANS: %s is the maximum file size, for example "500b", "10kB" or "2MB". throw new Exception(sprintf(_('That file is too big. The maximum file size is %s.'), ImageFile::maxFileSize())); return; @@ -241,11 +243,16 @@ class ImageFile $value = ImageFile::maxFileSizeInt(); if ($value > 1024 * 1024) { - return ($value/(1024*1024)) . _('MB'); + $value = $value/(1024*1024); + // TRANS: Number of megabytes. %d is the number. + return sprintf(_m('%dMB','%dMB',$value),$value); } else if ($value > 1024) { - return ($value/(1024)) . _('kB'); + $value = $value/1024; + // TRANS: Number of kilobytes. %d is the number. + return sprintf(_m('%dkB','%dkB',$value),$value); } else { - return $value; + // TRANS: Number of bytes. %d is the number. + return sprintf(_m('%dB','%dB',$value),$value); } } -- cgit v1.2.3-54-g00ecf From 08edd1fedfab532b1266a99f4d4b4b13a2e3aa6b Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sun, 31 Oct 2010 00:58:35 +0200 Subject: * i18n/L10n updates. * translator documentation added/updated. * superfluous whitespace removed. --- actions/attachment.php | 8 +------ actions/attachment_ajax.php | 2 -- actions/attachment_thumbnail.php | 4 ---- actions/avatarbynickname.php | 8 +++++-- actions/avatarsettings.php | 48 +++++++++++++++++++++++++--------------- actions/block.php | 12 +++++----- actions/blockedfromgroup.php | 25 +++++++++++++-------- actions/bookmarklet.php | 5 ++--- actions/confirmaddress.php | 19 ++++++++++------ actions/conversation.php | 17 +++----------- actions/editgroup.php | 36 +++++++++++++++++++++++++----- actions/newgroup.php | 20 ++++++++++++----- lib/unblockform.php | 6 +---- 13 files changed, 122 insertions(+), 88 deletions(-) (limited to 'lib') diff --git a/actions/attachment.php b/actions/attachment.php index 6981354d1..45aa78728 100644 --- a/actions/attachment.php +++ b/actions/attachment.php @@ -42,7 +42,6 @@ require_once INSTALLDIR.'/lib/attachmentlist.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class AttachmentAction extends Action { /** @@ -70,6 +69,7 @@ class AttachmentAction extends Action } if (empty($this->attachment)) { + // TRANS: Client error displayed trying to get a non-existing attachment. $this->clientError(_('No such attachment.'), 404); return false; } @@ -81,7 +81,6 @@ class AttachmentAction extends Action * * @return boolean true */ - function isReadOnly($args) { return true; @@ -129,7 +128,6 @@ class AttachmentAction extends Action * * @return void */ - function handle($args) { parent::handle($args); @@ -150,7 +148,6 @@ class AttachmentAction extends Action * * @return void */ - function showLocalNavBlock() { } @@ -162,7 +159,6 @@ class AttachmentAction extends Action * * @return void */ - function showContent() { $ali = new Attachment($this->attachment, $this); @@ -174,7 +170,6 @@ class AttachmentAction extends Action * * @return void */ - function showPageNoticeBlock() { } @@ -191,4 +186,3 @@ class AttachmentAction extends Action $atcs->show(); } } - diff --git a/actions/attachment_ajax.php b/actions/attachment_ajax.php index 1e0728075..fb7d15f8a 100644 --- a/actions/attachment_ajax.php +++ b/actions/attachment_ajax.php @@ -42,7 +42,6 @@ require_once INSTALLDIR.'/actions/attachment.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class Attachment_ajaxAction extends AttachmentAction { /** @@ -80,4 +79,3 @@ class Attachment_ajaxAction extends AttachmentAction $this->elementEnd('div'); } } - diff --git a/actions/attachment_thumbnail.php b/actions/attachment_thumbnail.php index 7d0ac97a6..38648b8be 100644 --- a/actions/attachment_thumbnail.php +++ b/actions/attachment_thumbnail.php @@ -42,10 +42,8 @@ require_once INSTALLDIR.'/actions/attachment.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class Attachment_thumbnailAction extends AttachmentAction { - function handle($args) { $this->showPage(); @@ -79,6 +77,4 @@ class Attachment_thumbnailAction extends AttachmentAction } $this->element('img', array('src' => $file_thumbnail->url, 'alt' => 'Thumbnail')); } - } - diff --git a/actions/avatarbynickname.php b/actions/avatarbynickname.php index 537950792..fa97a86eb 100644 --- a/actions/avatarbynickname.php +++ b/actions/avatarbynickname.php @@ -48,7 +48,7 @@ class AvatarbynicknameAction extends Action * Class handler. * * @param array $args query arguments - * + * * @return boolean false if nickname or user isn't found */ function handle($args) @@ -56,27 +56,32 @@ class AvatarbynicknameAction extends Action parent::handle($args); $nickname = $this->trimmed('nickname'); if (!$nickname) { + // TRANS: Client error displayed trying to get an avatar without providing a nickname. $this->clientError(_('No nickname.')); return; } $size = $this->trimmed('size'); if (!$size) { + // TRANS: Client error displayed trying to get an avatar without providing an avatar size. $this->clientError(_('No size.')); return; } $size = strtolower($size); if (!in_array($size, array('original', '96', '48', '24'))) { + // TRANS: Client error displayed trying to get an avatar providing an invalid avatar size. $this->clientError(_('Invalid size.')); return; } $user = User::staticGet('nickname', $nickname); if (!$user) { + // TRANS: Client error displayed trying to get an avatar for a non-existing user. $this->clientError(_('No such user.')); return; } $profile = $user->getProfile(); if (!$profile) { + // TRANS: Client error displayed trying to get an avatar for a user without a profile. $this->clientError(_('User has no profile.')); return; } @@ -103,4 +108,3 @@ class AvatarbynicknameAction extends Action return true; } } - diff --git a/actions/avatarsettings.php b/actions/avatarsettings.php index 9d4040e75..63dc8c8fe 100644 --- a/actions/avatarsettings.php +++ b/actions/avatarsettings.php @@ -49,7 +49,6 @@ define('MAX_ORIGINAL', 480); * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class AvatarsettingsAction extends AccountSettingsAction { var $mode = null; @@ -61,9 +60,9 @@ class AvatarsettingsAction extends AccountSettingsAction * * @return string Title of the page */ - function title() { + // TRANS: Title for avatar upload page. return _('Avatar'); } @@ -72,10 +71,12 @@ class AvatarsettingsAction extends AccountSettingsAction * * @return instructions for use */ - function getInstructions() { - return sprintf(_('You can upload your personal avatar. The maximum file size is %s.'), ImageFile::maxFileSize()); + // TRANS: Instruction for avatar upload page. + // TRANS: %s is the maximum file size, for example "500b", "10kB" or "2MB". + return sprintf(_('You can upload your personal avatar. The maximum file size is %s.'), + ImageFile::maxFileSize()); } /** @@ -103,6 +104,7 @@ class AvatarsettingsAction extends AccountSettingsAction if (!$profile) { common_log_db_error($user, 'SELECT', __FILE__); + // TRANS: Server error displayed in avatar upload page when no matching profile can be found for a user. $this->serverError(_('User without matching profile.')); return; } @@ -116,14 +118,16 @@ class AvatarsettingsAction extends AccountSettingsAction 'action' => common_local_url('avatarsettings'))); $this->elementStart('fieldset'); + // TRANS: Avatar upload page form legend. $this->element('legend', null, _('Avatar settings')); $this->hidden('token', common_session_token()); - + if (Event::handle('StartAvatarFormData', array($this))) { $this->elementStart('ul', 'form_data'); if ($original) { $this->elementStart('li', array('id' => 'avatar_original', 'class' => 'avatar_view')); + // TRANS: Header on avatar upload page for thumbnail of originally uploaded avatar (h2). $this->element('h2', null, _("Original")); $this->elementStart('div', array('id'=>'avatar_original_view')); $this->element('img', array('src' => $original->url, @@ -139,6 +143,7 @@ class AvatarsettingsAction extends AccountSettingsAction if ($avatar) { $this->elementStart('li', array('id' => 'avatar_preview', 'class' => 'avatar_view')); + // TRANS: Header on avatar upload page for thumbnail of to be used rendition of uploaded avatar (h2). $this->element('h2', null, _("Preview")); $this->elementStart('div', array('id'=>'avatar_preview_view')); $this->element('img', array('src' => $original->url, @@ -146,7 +151,8 @@ class AvatarsettingsAction extends AccountSettingsAction 'height' => AVATAR_PROFILE_SIZE, 'alt' => $user->nickname)); $this->elementEnd('div'); - $this->submit('delete', _('Delete')); + // TRANS: Button on avatar upload page to delete current avatar. + $this->submit('delete', _m('BUTTON','Delete')); $this->elementEnd('li'); } @@ -163,7 +169,8 @@ class AvatarsettingsAction extends AccountSettingsAction $this->elementStart('ul', 'form_actions'); $this->elementStart('li'); - $this->submit('upload', _('Upload')); + // TRANS: Button on avatar upload page to upload an avatar. + $this->submit('upload', _m('BUTTON','Upload')); $this->elementEnd('li'); $this->elementEnd('ul'); } @@ -171,7 +178,6 @@ class AvatarsettingsAction extends AccountSettingsAction $this->elementEnd('fieldset'); $this->elementEnd('form'); - } function showCropForm() @@ -182,6 +188,7 @@ class AvatarsettingsAction extends AccountSettingsAction if (!$profile) { common_log_db_error($user, 'SELECT', __FILE__); + // TRANS: Server error displayed in avatar upload page when no matching profile can be found for a user. $this->serverError(_('User without matching profile.')); return; } @@ -194,6 +201,7 @@ class AvatarsettingsAction extends AccountSettingsAction 'action' => common_local_url('avatarsettings'))); $this->elementStart('fieldset'); + // TRANS: Avatar upload page crop form legend. $this->element('legend', null, _('Avatar settings')); $this->hidden('token', common_session_token()); @@ -202,6 +210,7 @@ class AvatarsettingsAction extends AccountSettingsAction $this->elementStart('li', array('id' => 'avatar_original', 'class' => 'avatar_view')); + // TRANS: Header on avatar upload crop form for thumbnail of originally uploaded avatar (h2). $this->element('h2', null, _("Original")); $this->elementStart('div', array('id'=>'avatar_original_view')); $this->element('img', array('src' => Avatar::url($this->filedata['filename']), @@ -214,6 +223,7 @@ class AvatarsettingsAction extends AccountSettingsAction $this->elementStart('li', array('id' => 'avatar_preview', 'class' => 'avatar_view')); + // TRANS: Header on avatar upload crop form for thumbnail of to be used rendition of uploaded avatar (h2). $this->element('h2', null, _("Preview")); $this->elementStart('div', array('id'=>'avatar_preview_view')); $this->element('img', array('src' => Avatar::url($this->filedata['filename']), @@ -228,13 +238,14 @@ class AvatarsettingsAction extends AccountSettingsAction 'type' => 'hidden', 'id' => $crop_info)); } - $this->submit('crop', _('Crop')); + + // TRANS: Button on avatar upload crop form to confirm a selected crop as avatar. + $this->submit('crop', _m('BUTTON','Crop')); $this->elementEnd('li'); $this->elementEnd('ul'); $this->elementEnd('fieldset'); $this->elementEnd('form'); - } /** @@ -244,7 +255,6 @@ class AvatarsettingsAction extends AccountSettingsAction * * @return void */ - function handlePost() { // Workaround for PHP returning empty $_POST and $_FILES when POST @@ -271,7 +281,7 @@ class AvatarsettingsAction extends AccountSettingsAction 'Try again, please.')); return; } - + if (Event::handle('StartAvatarSaveForm', array($this))) { if ($this->arg('upload')) { $this->uploadAvatar(); @@ -280,6 +290,7 @@ class AvatarsettingsAction extends AccountSettingsAction } else if ($this->arg('delete')) { $this->deleteAvatar(); } else { + // TRANS: Unexpected validation error on avatar upload form. $this->showForm(_('Unexpected form submission.')); } Event::handle('EndAvatarSaveForm', array($this)); @@ -294,7 +305,6 @@ class AvatarsettingsAction extends AccountSettingsAction * * @return void */ - function uploadAvatar() { try { @@ -304,6 +314,7 @@ class AvatarsettingsAction extends AccountSettingsAction return; } if ($imagefile === null) { + // TRANS: Validation error on avatar upload form when no file was uploaded. $this->showForm(_('No file uploaded.')); return; } @@ -331,6 +342,7 @@ class AvatarsettingsAction extends AccountSettingsAction $this->mode = 'crop'; + // TRANS: Avatar upload form unstruction after uploading a file. $this->showForm(_('Pick a square area of the image to be your avatar'), true); } @@ -340,12 +352,12 @@ class AvatarsettingsAction extends AccountSettingsAction * * @return void */ - function cropAvatar() { $filedata = $_SESSION['FILEDATA']; if (!$filedata) { + // TRANS: Server error displayed if an avatar upload went wrong somehow server side. $this->serverError(_('Lost our file data.')); return; } @@ -372,21 +384,21 @@ class AvatarsettingsAction extends AccountSettingsAction $this->showForm(_('Avatar updated.'), true); common_broadcast_profile($profile); } else { + // TRANS: Error displayed on the avatar upload page if the avatar could not be updated for an unknown reason. $this->showForm(_('Failed updating avatar.')); } } - + /** * Get rid of the current avatar. * * @return void */ - function deleteAvatar() { $user = common_current_user(); $profile = $user->getProfile(); - + $avatar = $profile->getOriginalAvatar(); if($avatar) $avatar->delete(); $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); @@ -396,6 +408,7 @@ class AvatarsettingsAction extends AccountSettingsAction $avatar = $profile->getAvatar(AVATAR_MINI_SIZE); if($avatar) $avatar->delete(); + // TRANS: Success message for deleting a user avatar. $this->showForm(_('Avatar deleted.'), true); } @@ -416,7 +429,6 @@ class AvatarsettingsAction extends AccountSettingsAction * * @return void */ - function showScripts() { parent::showScripts(); diff --git a/actions/block.php b/actions/block.php index 93f8ec937..e87353b4e 100644 --- a/actions/block.php +++ b/actions/block.php @@ -42,7 +42,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ - class BlockAction extends ProfileFormAction { var $profile = null; @@ -54,7 +53,6 @@ class BlockAction extends ProfileFormAction * * @return boolean success flag */ - function prepare($args) { if (!parent::prepare($args)) { @@ -66,6 +64,7 @@ class BlockAction extends ProfileFormAction assert(!empty($cur)); // checked by parent if ($cur->hasBlocked($this->profile)) { + // TRANS: Client error displayed when blocking a user that has already been blocked. $this->clientError(_('You already blocked that user.')); return false; } @@ -82,7 +81,6 @@ class BlockAction extends ProfileFormAction * * @return void */ - function handle($args) { if ($_SERVER['REQUEST_METHOD'] == 'POST') { @@ -104,6 +102,7 @@ class BlockAction extends ProfileFormAction } function title() { + // TRANS: Title for block user page. return _('Block user'); } @@ -133,8 +132,10 @@ class BlockAction extends ProfileFormAction 'action' => common_local_url('block'))); $this->elementStart('fieldset'); $this->hidden('token', common_session_token()); + // TRANS: Legend for block user form. $this->element('legend', _('Block user')); $this->element('p', null, + // TRANS: Explanation of consequences when blocking a user on the block user page. _('Are you sure you want to block this user? '. 'Afterwards, they will be unsubscribed from you, '. 'unable to subscribe to you in the future, and '. @@ -184,6 +185,7 @@ class BlockAction extends ProfileFormAction } if (!$result) { + // TRANS: Server error displayed when blocking a user fails. $this->serverError(_('Failed to save block information.')); return; } @@ -199,7 +201,7 @@ class BlockAction extends ProfileFormAction * Override for form session token checks; on our first hit we're just * requesting confirmation, which doesn't need a token. We need to be * able to take regular GET requests from email! - * + * * @throws ClientException if token is bad on POST request or if we have * confirmation parameters which could trigger something. */ @@ -216,7 +218,7 @@ class BlockAction extends ProfileFormAction /** * If we reached this form without returnto arguments, return to the * current user's subscription list. - * + * * @return string URL */ function defaultReturnTo() diff --git a/actions/blockedfromgroup.php b/actions/blockedfromgroup.php index a0598db27..6ff572c05 100644 --- a/actions/blockedfromgroup.php +++ b/actions/blockedfromgroup.php @@ -40,7 +40,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class BlockedfromgroupAction extends GroupDesignAction { var $page = null; @@ -70,6 +69,7 @@ class BlockedfromgroupAction extends GroupDesignAction } if (!$nickname) { + // TRANS: Client error displayed when requesting a list of blocked users for a group without providing a group nickname. $this->clientError(_('No nickname.'), 404); return false; } @@ -77,6 +77,7 @@ class BlockedfromgroupAction extends GroupDesignAction $local = Local_group::staticGet('nickname', $nickname); if (!$local) { + // TRANS: Client error displayed when requesting a list of blocked users for a non-local group. $this->clientError(_('No such group.'), 404); return false; } @@ -84,6 +85,7 @@ class BlockedfromgroupAction extends GroupDesignAction $this->group = User_group::staticGet('id', $local->group_id); if (!$this->group) { + // TRANS: Client error displayed when requesting a list of blocked users for a non-existing group. $this->clientError(_('No such group.'), 404); return false; } @@ -94,9 +96,13 @@ class BlockedfromgroupAction extends GroupDesignAction function title() { if ($this->page == 1) { + // TRANS: Title for first page with list of users blocked from a group. + // TRANS: %s is a group nickname. return sprintf(_('%s blocked profiles'), $this->group->nickname); } else { + // TRANS: Title for any but the first page with list of users blocked from a group. + // TRANS: %1$s is a group nickname, %2$d is a page number. return sprintf(_('%1$s blocked profiles, page %2$d'), $this->group->nickname, $this->page); @@ -112,6 +118,7 @@ class BlockedfromgroupAction extends GroupDesignAction function showPageNotice() { $this->element('p', 'instructions', + // TRANS: Instructions for list of users blocked from a group. _('A list of the users blocked from joining this group.')); } @@ -205,7 +212,6 @@ class GroupBlockListItem extends ProfileListItem * * @see UnblockForm */ - class GroupUnblockForm extends Form { /** @@ -234,7 +240,6 @@ class GroupUnblockForm extends Form * @param User_group $group group to block user from * @param array $args return-to args */ - function __construct($out=null, $profile=null, $group=null, $args=null) { parent::__construct($out); @@ -249,7 +254,6 @@ class GroupUnblockForm extends Form * * @return int ID of the form */ - function id() { // This should be unique for the page. @@ -261,7 +265,6 @@ class GroupUnblockForm extends Form * * @return string class of the form */ - function formClass() { return 'form_group_unblock'; @@ -272,7 +275,6 @@ class GroupUnblockForm extends Form * * @return string URL of the action */ - function action() { return common_local_url('groupunblock'); @@ -285,6 +287,7 @@ class GroupUnblockForm extends Form */ function formLegend() { + // TRANS: Form legend for unblocking a user from a group. $this->out->element('legend', null, _('Unblock user from group')); } @@ -293,7 +296,6 @@ class GroupUnblockForm extends Form * * @return void */ - function formData() { $this->out->hidden('unblockto-' . $this->profile->id, @@ -314,9 +316,14 @@ class GroupUnblockForm extends Form * * @return void */ - function formActions() { - $this->out->submit('submit', _('Unblock'), 'submit', null, _('Unblock this user')); + $this->out->submit('submit', + // TRANS: Button text for unblocking a user from a group. + _m('BUTTON','Unblock'), + 'submit', + null, + // TRANS: Tooltip for button for unblocking a user from a group. + _('Unblock this user')); } } diff --git a/actions/bookmarklet.php b/actions/bookmarklet.php index 041c2e894..9cf4e58f8 100644 --- a/actions/bookmarklet.php +++ b/actions/bookmarklet.php @@ -34,7 +34,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { require_once INSTALLDIR . '/actions/newnotice.php'; /** - * Action for posting a notice + * Action for posting a notice * * @category Bookmarklet * @package StatusNet @@ -42,12 +42,12 @@ require_once INSTALLDIR . '/actions/newnotice.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class BookmarkletAction extends NewnoticeAction { function showTitle() { // TRANS: Title for mini-posting window loaded from bookmarklet. + // TRANS: %s is the StatusNet site name. $this->element('title', null, sprintf(_('Post to %s'), common_config('site', 'name'))); } @@ -73,4 +73,3 @@ class BookmarkletAction extends NewnoticeAction { } } - diff --git a/actions/confirmaddress.php b/actions/confirmaddress.php index 8bf8c8c4d..5617c5339 100644 --- a/actions/confirmaddress.php +++ b/actions/confirmaddress.php @@ -44,7 +44,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class ConfirmaddressAction extends Action { /** type of confirmation. */ @@ -61,7 +60,6 @@ class ConfirmaddressAction extends Action * * @return void */ - function handle($args) { parent::handle($args); @@ -72,27 +70,30 @@ class ConfirmaddressAction extends Action } $code = $this->trimmed('code'); if (!$code) { + // TRANS: Client error displayed when not providing a confirmation code in the contact address confirmation action. $this->clientError(_('No confirmation code.')); return; } $confirm = Confirm_address::staticGet('code', $code); if (!$confirm) { + // TRANS: Client error displayed when providing a non-existing confirmation code in the contact address confirmation action. $this->clientError(_('Confirmation code not found.')); return; } $cur = common_current_user(); if ($cur->id != $confirm->user_id) { + // TRANS: Client error displayed when not providing a confirmation code for another user in the contact address confirmation action. $this->clientError(_('That confirmation code is not for you!')); return; } $type = $confirm->address_type; if (!in_array($type, array('email', 'jabber', 'sms'))) { - // TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. + // TRANS: Server error for a unknow address type %s, which can be 'email', 'jabber', or 'sms'. $this->serverError(sprintf(_('Unrecognized address type %s.'), $type)); return; } if ($cur->$type == $confirm->address) { - // TRANS: Client error for an already confirmed email/jabbel/sms address. + // TRANS: Client error for an already confirmed email/jabber/sms address. $this->clientError(_('That address has already been confirmed.')); return; } @@ -113,6 +114,7 @@ class ConfirmaddressAction extends Action if (!$result) { common_log_db_error($cur, 'UPDATE', __FILE__); + // TRANS: Server error displayed when a user update to the database fails in the contact address confirmation action. $this->serverError(_('Couldn\'t update user.')); return; } @@ -125,7 +127,9 @@ class ConfirmaddressAction extends Action if (!$result) { common_log_db_error($confirm, 'DELETE', __FILE__); - $this->serverError(_('Couldn\'t delete email confirmation.')); + // TRANS: Server error displayed when an address confirmation code deletion from the + // TRANS: database fails in the contact address confirmation action. + $this->serverError(_('Could not delete address confirmation.')); return; } @@ -140,9 +144,9 @@ class ConfirmaddressAction extends Action * * @return string title */ - function title() { + // TRANS: Title for the contact address confirmation action. return _('Confirm address'); } @@ -151,13 +155,14 @@ class ConfirmaddressAction extends Action * * @return void */ - function showContent() { $cur = common_current_user(); $type = $this->type; $this->element('p', null, + // TRANS: Success message for the contact address confirmation action. + // TRANS: %s can be 'email', 'jabber', or 'sms'. sprintf(_('The address "%s" has been '. 'confirmed for your account.'), $cur->$type)); diff --git a/actions/conversation.php b/actions/conversation.php index 900a724ef..8d11df37b 100644 --- a/actions/conversation.php +++ b/actions/conversation.php @@ -45,7 +45,6 @@ require_once INSTALLDIR.'/lib/noticelist.php'; * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ - class ConversationAction extends Action { var $id = null; @@ -58,7 +57,6 @@ class ConversationAction extends Action * * @return boolean false if id not passed in */ - function prepare($args) { parent::prepare($args); @@ -81,7 +79,6 @@ class ConversationAction extends Action * * @return void */ - function handle($args) { parent::handle($args); @@ -93,10 +90,10 @@ class ConversationAction extends Action * * @return string page title */ - function title() { - return _("Conversation"); + // TRANS: Title for page with a conversion (multiple notices in context). + return _('Conversation'); } /** @@ -107,7 +104,6 @@ class ConversationAction extends Action * * @return void */ - function showContent() { $notices = Notice::conversationStream($this->id, null, null); @@ -134,7 +130,6 @@ class ConversationAction extends Action * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ - class ConversationTree extends NoticeList { var $tree = null; @@ -145,12 +140,12 @@ class ConversationTree extends NoticeList * * @return void */ - function show() { $cnt = $this->_buildTree(); $this->out->elementStart('div', array('id' =>'notices_primary')); + // TRANS: Header on conversation page. Hidden by default (h2). $this->out->element('h2', null, _('Notices')); $this->out->elementStart('ol', array('class' => 'notices xoxo')); @@ -200,7 +195,6 @@ class ConversationTree extends NoticeList * * @return void */ - function showNoticePlus($id) { $notice = $this->table[$id]; @@ -237,7 +231,6 @@ class ConversationTree extends NoticeList * * @return NoticeListItem a list item to show */ - function newListItem($notice) { return new ConversationTreeItem($notice, $this->out); @@ -255,7 +248,6 @@ class ConversationTree extends NoticeList * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ - class ConversationTreeItem extends NoticeListItem { /** @@ -266,7 +258,6 @@ class ConversationTreeItem extends NoticeListItem * * @return void */ - function showStart() { return; @@ -280,7 +271,6 @@ class ConversationTreeItem extends NoticeListItem * * @return void */ - function showEnd() { return; @@ -293,7 +283,6 @@ class ConversationTreeItem extends NoticeListItem * * @return void */ - function showContext() { return; diff --git a/actions/editgroup.php b/actions/editgroup.php index eaadbabe4..4d3af34c7 100644 --- a/actions/editgroup.php +++ b/actions/editgroup.php @@ -45,14 +45,13 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class EditgroupAction extends GroupDesignAction { - var $msg; function title() { + // TRANS: Title for form to edit a group. %s is a group nickname. return sprintf(_('Edit %s group'), $this->group->nickname); } @@ -65,6 +64,7 @@ class EditgroupAction extends GroupDesignAction parent::prepare($args); if (!common_logged_in()) { + // TRANS: Client error displayed trying to edit a group while not logged in. $this->clientError(_('You must be logged in to create a group.')); return false; } @@ -81,6 +81,7 @@ class EditgroupAction extends GroupDesignAction } if (!$nickname) { + // TRANS: Client error displayed trying to edit a group while not proving a nickname for the group to edit. $this->clientError(_('No nickname.'), 404); return false; } @@ -97,6 +98,7 @@ class EditgroupAction extends GroupDesignAction } if (!$this->group) { + // TRANS: Client error displayed trying to edit a non-existing group. $this->clientError(_('No such group.'), 404); return false; } @@ -104,6 +106,7 @@ class EditgroupAction extends GroupDesignAction $cur = common_current_user(); if (!$cur->isAdmin($this->group)) { + // TRANS: Client error displayed trying to edit a group while not being a group admin. $this->clientError(_('You must be an admin to edit the group.'), 403); return false; } @@ -120,7 +123,6 @@ class EditgroupAction extends GroupDesignAction * * @return void */ - function handle($args) { parent::handle($args); @@ -155,6 +157,7 @@ class EditgroupAction extends GroupDesignAction $this->element('p', 'error', $this->msg); } else { $this->element('p', 'instructions', + // TRANS: Form instructions for group edit form. _('Use this form to edit the group.')); } } @@ -169,6 +172,7 @@ class EditgroupAction extends GroupDesignAction { $cur = common_current_user(); if (!$cur->isAdmin($this->group)) { + // TRANS: Client error displayed trying to edit a group while not being a group admin. $this->clientError(_('You must be an admin to edit the group.'), 403); return; } @@ -183,28 +187,39 @@ class EditgroupAction extends GroupDesignAction if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { + // TRANS: Group edit form validation error. $this->showForm(_('Nickname must have only lowercase letters '. 'and numbers and no spaces.')); return; } else if ($this->nicknameExists($nickname)) { + // TRANS: Group edit form validation error. $this->showForm(_('Nickname already in use. Try another one.')); return; } else if (!User_group::allowedNickname($nickname)) { + // TRANS: Group edit form validation error. $this->showForm(_('Not a valid nickname.')); return; } else if (!is_null($homepage) && (strlen($homepage) > 0) && !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { + // TRANS: Group edit form validation error. $this->showForm(_('Homepage is not a valid URL.')); return; } else if (!is_null($fullname) && mb_strlen($fullname) > 255) { + // TRANS: Group edit form validation error. $this->showForm(_('Full name is too long (maximum 255 characters).')); return; } else if (User_group::descriptionTooLong($description)) { - $this->showForm(sprintf(_('Description is too long (max %d chars).'), User_group::maxDescription())); + $this->showForm(sprintf( + // TRANS: Group edit form validation error. + _m('Description is too long (maximum %d character).', + 'Description is too long (maximum %d characters).', + User_group::maxDescription()), + User_group::maxDescription())); return; } else if (!is_null($location) && mb_strlen($location) > 255) { + // TRANS: Group edit form validation error. $this->showForm(_('Location is too long (maximum 255 characters).')); return; } @@ -216,7 +231,11 @@ class EditgroupAction extends GroupDesignAction } if (count($aliases) > common_config('group', 'maxaliases')) { - $this->showForm(sprintf(_('Too many aliases! Maximum %d.'), + // TRANS: Group edit form validation error. + // TRANS: %d is the maximum number of allowed aliases. + $this->showForm(sprintf(_m('Too many aliases! Maximum %d allowed.', + 'Too many aliases! Maximum %d allowed.', + common_config('group', 'maxaliases')), common_config('group', 'maxaliases'))); return; } @@ -225,16 +244,19 @@ class EditgroupAction extends GroupDesignAction if (!Validate::string($alias, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { + // TRANS: Group edit form validation error. $this->showForm(sprintf(_('Invalid alias: "%s"'), $alias)); return; } if ($this->nicknameExists($alias)) { + // TRANS: Group edit form validation error. $this->showForm(sprintf(_('Alias "%s" already in use. Try another one.'), $alias)); return; } // XXX assumes alphanum nicknames if (strcmp($alias, $nickname) == 0) { + // TRANS: Group edit form validation error. $this->showForm(_('Alias can\'t be the same as nickname.')); return; } @@ -255,12 +277,14 @@ class EditgroupAction extends GroupDesignAction if (!$result) { common_log_db_error($this->group, 'UPDATE', __FILE__); + // TRANS: Server error displayed when editing a group fails. $this->serverError(_('Could not update group.')); } $result = $this->group->setAliases($aliases); if (!$result) { + // TRANS: Server error displayed when group aliases could not be added. $this->serverError(_('Could not create aliases.')); } @@ -277,6 +301,7 @@ class EditgroupAction extends GroupDesignAction array('nickname' => $nickname)), 303); } else { + // TRANS: Group edit form success message. $this->showForm(_('Options saved.')); } } @@ -300,4 +325,3 @@ class EditgroupAction extends GroupDesignAction return false; } } - diff --git a/actions/newgroup.php b/actions/newgroup.php index 295192036..9c1870b1c 100644 --- a/actions/newgroup.php +++ b/actions/newgroup.php @@ -43,25 +43,25 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class NewgroupAction extends Action { var $msg; function title() { + // TRANS: Title for form to create a group. return _('New group'); } /** * Prepare to run */ - function prepare($args) { parent::prepare($args); if (!common_logged_in()) { + // TRANS: Client error displayed trying to create a group while not logged in. $this->clientError(_('You must be logged in to create a group.')); return false; } @@ -78,7 +78,6 @@ class NewgroupAction extends Action * * @return void */ - function handle($args) { parent::handle($args); @@ -107,6 +106,7 @@ class NewgroupAction extends Action $this->element('p', 'error', $this->msg); } else { $this->element('p', 'instructions', + // TRANS: Form instructions for group create form. _('Use this form to create a new group.')); } } @@ -123,26 +123,31 @@ class NewgroupAction extends Action if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { + // TRANS: Group create form validation error. $this->showForm(_('Nickname must have only lowercase letters '. 'and numbers and no spaces.')); return; } else if ($this->nicknameExists($nickname)) { + // TRANS: Group create form validation error. $this->showForm(_('Nickname already in use. Try another one.')); return; } else if (!User_group::allowedNickname($nickname)) { + // TRANS: Group create form validation error. $this->showForm(_('Not a valid nickname.')); return; } else if (!is_null($homepage) && (strlen($homepage) > 0) && !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { + // TRANS: Group create form validation error. $this->showForm(_('Homepage is not a valid URL.')); return; } else if (!is_null($fullname) && mb_strlen($fullname) > 255) { + // TRANS: Group create form validation error. $this->showForm(_('Full name is too long (maximum 255 characters).')); return; } else if (User_group::descriptionTooLong($description)) { - // TRANS: Form validation error creating a new group because the description is too long. + // TRANS: Group create form validation error. // TRANS: %d is the maximum number of allowed characters. $this->showForm(sprintf(_m('Description is too long (maximum %d character).', 'Description is too long (maximum %d characters).', @@ -150,6 +155,7 @@ class NewgroupAction extends Action User_group::maxDescription())); return; } else if (!is_null($location) && mb_strlen($location) > 255) { + // TRANS: Group create form validation error. $this->showForm(_('Location is too long (maximum 255 characters).')); return; } @@ -161,7 +167,7 @@ class NewgroupAction extends Action } if (count($aliases) > common_config('group', 'maxaliases')) { - // TRANS: Client error shown when providing too many aliases during group creation. + // TRANS: Group create form validation error. // TRANS: %d is the maximum number of allowed aliases. $this->showForm(sprintf(_m('Too many aliases! Maximum %d allowed.', 'Too many aliases! Maximum %d allowed.', @@ -174,16 +180,19 @@ class NewgroupAction extends Action if (!Validate::string($alias, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { + // TRANS: Group create form validation error. $this->showForm(sprintf(_('Invalid alias: "%s"'), $alias)); return; } if ($this->nicknameExists($alias)) { + // TRANS: Group create form validation error. $this->showForm(sprintf(_('Alias "%s" already in use. Try another one.'), $alias)); return; } // XXX assumes alphanum nicknames if (strcmp($alias, $nickname) == 0) { + // TRANS: Group create form validation error. $this->showForm(_('Alias can\'t be the same as nickname.')); return; } @@ -227,4 +236,3 @@ class NewgroupAction extends Action return false; } } - diff --git a/lib/unblockform.php b/lib/unblockform.php index b89d7ff78..8daad3c92 100644 --- a/lib/unblockform.php +++ b/lib/unblockform.php @@ -44,7 +44,6 @@ if (!defined('STATUSNET')) { * * @see BlockForm */ - class UnblockForm extends ProfileActionForm { /** @@ -52,7 +51,6 @@ class UnblockForm extends ProfileActionForm * * @return string Name of the action, lowercased. */ - function target() { return 'unblock'; @@ -63,11 +61,10 @@ class UnblockForm extends ProfileActionForm * * @return string Title of the form, internationalized */ - function title() { // TRANS: Title for the form to unblock a user. - return _('Unblock'); + return _m('TITLE','Unblock'); } /** @@ -75,7 +72,6 @@ class UnblockForm extends ProfileActionForm * * @return string description of the form, internationalized */ - function description() { // TRANS: Description of the form to unblock a user. -- cgit v1.2.3-54-g00ecf From b89dfa3a5b5d0febdbf1a45f2a8b855315204b69 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 1 Nov 2010 13:50:24 +0100 Subject: Fix i18n issues that are solved by using plural. --- lib/command.php | 12 ++++++++---- lib/groupeditform.php | 13 +++++++++---- lib/themeuploader.php | 7 ++++--- 3 files changed, 21 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/command.php b/lib/command.php index 658262a09..329617b3b 100644 --- a/lib/command.php +++ b/lib/command.php @@ -483,9 +483,11 @@ class MessageCommand extends Command if (Message::contentTooLong($this->text)) { // XXX: i18n. Needs plural support. - // TRANS: Message given if content is too long. + // TRANS: Message given if content is too long. %1$sd is used for plural. // TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. - $channel->error($this->user, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'), + $channel->error($this->user, sprintf(_m('Message too long - maximum is %1$d character, you sent %2$d.', + 'Message too long - maximum is %1$d characters, you sent %2$d.', + Message::maxContent()), Message::maxContent(), mb_strlen($this->text))); return; } @@ -584,9 +586,11 @@ class ReplyCommand extends Command if (Notice::contentTooLong($this->text)) { // XXX: i18n. Needs plural support. - // TRANS: Message given if content of a notice for a reply is too long. + // TRANS: Message given if content of a notice for a reply is too long. %1$d is used for plural. // TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. - $channel->error($this->user, sprintf(_('Notice too long - maximum is %1$d characters, you sent %2$d.'), + $channel->error($this->user, sprintf(_m('Notice too long - maximum is %1$d character, you sent %2$d.', + 'Notice too long - maximum is %1$d characters, you sent %2$d.', + Notice::maxContent()), Notice::maxContent(), mb_strlen($this->text))); return; } diff --git a/lib/groupeditform.php b/lib/groupeditform.php index 433f6a138..f939fc1b6 100644 --- a/lib/groupeditform.php +++ b/lib/groupeditform.php @@ -160,14 +160,17 @@ class GroupEditForm extends Form $this->out->elementStart('li'); $this->out->input('homepage', _('Homepage'), ($this->out->arg('homepage')) ? $this->out->arg('homepage') : $homepage, - _('URL of the homepage or blog of the group or topic')); + _('URL of the homepage or blog of the group or topic.')); $this->out->elementEnd('li'); $this->out->elementStart('li'); $desclimit = User_group::maxDescription(); if ($desclimit == 0) { $descinstr = _('Describe the group or topic'); } else { - $descinstr = sprintf(_('Describe the group or topic in %d characters'), $desclimit); + $descinstr = sprintf(_m('Describe the group or topic in %d character or less', + 'Describe the group or topic in %d characters or less', + $desclimit), + $desclimit); } $this->out->textarea('description', _('Description'), ($this->out->arg('description')) ? $this->out->arg('description') : $description, @@ -176,7 +179,7 @@ class GroupEditForm extends Form $this->out->elementStart('li'); $this->out->input('location', _('Location'), ($this->out->arg('location')) ? $this->out->arg('location') : $location, - _('Location for the group, if any, like "City, State (or Region), Country"')); + _('Location for the group, if any, like "City, State (or Region), Country".')); $this->out->elementEnd('li'); if (common_config('group', 'maxaliases') > 0) { $aliases = (empty($this->group)) ? array() : $this->group->getAliases(); @@ -184,7 +187,9 @@ class GroupEditForm extends Form $this->out->input('aliases', _('Aliases'), ($this->out->arg('aliases')) ? $this->out->arg('aliases') : (!empty($aliases)) ? implode(' ', $aliases) : '', - sprintf(_('Extra nicknames for the group, comma- or space- separated, max %d'), + sprintf(_m('Extra nicknames for the group, separated with commas or spaces. Maximum %d alias allowed.', + 'Extra nicknames for the group, separated with commas or spaces. Maximum %d aliases allowed.', + common_config('group', 'maxaliases')), common_config('group', 'maxaliases')));; $this->out->elementEnd('li'); } diff --git a/lib/themeuploader.php b/lib/themeuploader.php index 5a48e884e..b7b14d7b9 100644 --- a/lib/themeuploader.php +++ b/lib/themeuploader.php @@ -163,9 +163,10 @@ class ThemeUploader $estSize = $blockSize * max(1, intval(ceil($size / $blockSize))); $totalSize += $estSize; if ($totalSize > $sizeLimit) { - $msg = sprintf(_("Uploaded theme is too large; " . - "must be less than %d bytes uncompressed."), - $sizeLimit); + $msg = sprintf(_m('Uploaded theme is too large; must be less than %d byte uncompressed.', + 'Uploaded theme is too large; must be less than %d bytes uncompressed.', + $sizeLimit), + $sizeLimit); throw new ClientException($msg); } -- cgit v1.2.3-54-g00ecf From 9b7ac27c69520aad00230aab7067e83642e38fe7 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 1 Nov 2010 13:55:24 +0100 Subject: * add translator documentation. * i18n FIXME tagging. --- lib/searchaction.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/searchaction.php b/lib/searchaction.php index 14c3ed016..6d7f46cd6 100644 --- a/lib/searchaction.php +++ b/lib/searchaction.php @@ -70,7 +70,6 @@ class SearchAction extends Action * @return void * @see SearchGroupNav */ - function showLocalNav() { $nav = new SearchGroupNav($this, $this->trimmed('q')); @@ -127,6 +126,7 @@ class SearchAction extends Action // TRANS: Used as a field label for the field where one or more keywords // TRANS: for searching can be entered. $this->input('q', _('Keyword(s)'), $q); + // TRANS: Button text for searching site. $this->submit('search', _m('BUTTON','Search')); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -138,7 +138,7 @@ class SearchAction extends Action } function searchSuggestions($q) { - // @todo FIXME: This formatting does not make this string get picked up by gettext. + // @todo FIXME: i18n issue: This formatting does not make this string get picked up by gettext. // TRANS: Standard search suggestions shown when a search does not give any results. $message = _(<< Date: Mon, 1 Nov 2010 14:44:37 +0100 Subject: * i18n/L10n updates. * translator documentation added. * superfluous whitespace removed. --- actions/editapplication.php | 2 +- actions/licenseadminpanel.php | 2 +- actions/newapplication.php | 4 ++-- actions/newnotice.php | 17 ++++++++------- actions/othersettings.php | 2 +- actions/recoverpassword.php | 2 +- actions/sitenoticeadminpanel.php | 19 ++++++++++------- actions/useradminpanel.php | 45 +++++++++++++++++++++++----------------- lib/groupeditform.php | 2 +- lib/mailhandler.php | 5 +++-- 10 files changed, 56 insertions(+), 44 deletions(-) (limited to 'lib') diff --git a/actions/editapplication.php b/actions/editapplication.php index d1c7a5c3d..760b1d284 100644 --- a/actions/editapplication.php +++ b/actions/editapplication.php @@ -185,7 +185,7 @@ class EditApplicationAction extends OwnerDesignAction return; } elseif (mb_strlen($name) > 255) { // TRANS: Validation error shown when providing too long a name in the "Edit application" form. - $this->showForm(_('Name is too long (max 255 characters).')); + $this->showForm(_('Name is too long (maximum 255 characters).')); return; } else if ($this->nameExists($name)) { // TRANS: Validation error shown when providing a name for an application that already exists in the "Edit application" form. diff --git a/actions/licenseadminpanel.php b/actions/licenseadminpanel.php index 9165ca19d..95ac48cc8 100644 --- a/actions/licenseadminpanel.php +++ b/actions/licenseadminpanel.php @@ -153,7 +153,7 @@ class LicenseadminpanelAction extends AdminPanelAction // Make sure the license title is not too long if (mb_strlen($values['license']['type']) > 255) { $this->clientError( - _("Invalid license title. Max length is 255 characters.") + _('Invalid license title. Maximum length is 255 characters.') ); } diff --git a/actions/newapplication.php b/actions/newapplication.php index 033c0852d..ae1754558 100644 --- a/actions/newapplication.php +++ b/actions/newapplication.php @@ -166,7 +166,7 @@ class NewApplicationAction extends OwnerDesignAction $this->showForm(_('Name already in use. Try another one.')); return; } elseif (mb_strlen($name) > 255) { - $this->showForm(_('Name is too long (maximum 255 chars).')); + $this->showForm(_('Name is too long (maximum 255 characters).')); return; } elseif (empty($description)) { $this->showForm(_('Description is required.')); @@ -196,7 +196,7 @@ class NewApplicationAction extends OwnerDesignAction $this->showForm(_('Organization is required.')); return; } elseif (mb_strlen($organization) > 255) { - $this->showForm(_('Organization is too long (maximum 255 chars).')); + $this->showForm(_('Organization is too long (maximum 255 characters).')); return; } elseif (empty($homepage)) { $this->showForm(_('Organization homepage is required.')); diff --git a/actions/newnotice.php b/actions/newnotice.php index 57cd847c6..0d4dcfccd 100644 --- a/actions/newnotice.php +++ b/actions/newnotice.php @@ -156,8 +156,11 @@ class NewnoticeAction extends Action $content_shortened = common_shorten_links($content); if (Notice::contentTooLong($content_shortened)) { - $this->clientError(sprintf(_('That\'s too long. '. - 'Max notice size is %d chars.'), + // TRANS: Client error displayed when the parameter "status" is missing. + // TRANS: %d is the maximum number of character for a notice. + $this->clientError(sprintf(_m('That\'s too long. Maximum notice size is %d character.', + 'That\'s too long. Maximum notice size is %d characters.', + Notice::maxContent()), Notice::maxContent())); } @@ -178,12 +181,10 @@ class NewnoticeAction extends Action if (Notice::contentTooLong($content_shortened)) { $upload->delete(); - $this->clientError( - sprintf( - _('Max notice size is %d chars, including attachment URL.'), - Notice::maxContent() - ) - ); + $this->clientError(sprintf(_m('Maximum notice size is %d character, including attachment URL.', + 'Maximum notice size is %d characters, including attachment URL.', + Notice::maxContent()), + Notice::maxContent())); } } diff --git a/actions/othersettings.php b/actions/othersettings.php index e2366b79e..13460a4bf 100644 --- a/actions/othersettings.php +++ b/actions/othersettings.php @@ -159,7 +159,7 @@ class OthersettingsAction extends AccountSettingsAction if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) { // TRANS: Form validation error for form "Other settings" in user profile. - $this->showForm(_('URL shortening service is too long (maximum 50 chars).')); + $this->showForm(_('URL shortening service is too long (maximum 50 characters).')); return; } diff --git a/actions/recoverpassword.php b/actions/recoverpassword.php index f9956897f..33b0440e4 100644 --- a/actions/recoverpassword.php +++ b/actions/recoverpassword.php @@ -362,7 +362,7 @@ class RecoverpasswordAction extends Action $confirm = $this->trimmed('confirm'); if (!$newpassword || strlen($newpassword) < 6) { - $this->showPasswordForm(_('Password must be 6 chars or more.')); + $this->showPasswordForm(_('Password must be 6 characters or more.')); return; } if ($newpassword != $confirm) { diff --git a/actions/sitenoticeadminpanel.php b/actions/sitenoticeadminpanel.php index bdcaa2355..797a6c4f4 100644 --- a/actions/sitenoticeadminpanel.php +++ b/actions/sitenoticeadminpanel.php @@ -42,7 +42,6 @@ require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class SitenoticeadminpanelAction extends AdminPanelAction { /** @@ -50,9 +49,9 @@ class SitenoticeadminpanelAction extends AdminPanelAction * * @return string page title */ - function title() { + // TRANS: Page title for site-wide notice tab in admin panel. return _('Site Notice'); } @@ -61,9 +60,9 @@ class SitenoticeadminpanelAction extends AdminPanelAction * * @return string instructions */ - function getInstructions() { + // TRANS: Instructions for site-wide notice tab in admin panel. return _('Edit site-wide message'); } @@ -72,7 +71,6 @@ class SitenoticeadminpanelAction extends AdminPanelAction * * @return void */ - function showForm() { $form = new SiteNoticeAdminPanelForm($this); @@ -85,7 +83,6 @@ class SitenoticeadminpanelAction extends AdminPanelAction * * @return void */ - function saveSettings() { $siteNotice = $this->trimmed('site-notice'); @@ -100,6 +97,7 @@ class SitenoticeadminpanelAction extends AdminPanelAction $result = Config::save('site', 'notice', $siteNotice); if (!$result) { + // TRANS: Server error displayed when saving a site-wide notice was impossible. $this->ServerError(_("Unable to save site notice.")); } } @@ -110,7 +108,8 @@ class SitenoticeadminpanelAction extends AdminPanelAction if (mb_strlen($siteNotice) > 255) { $this->clientError( - _('Max length for the site-wide notice is 255 chars.') + // TRANS: Client error displayed when a site-wide notice was longer than allowed. + _('Maximum length for the site-wide notice is 255 characters.') ); } @@ -173,9 +172,11 @@ class SiteNoticeAdminPanelForm extends AdminForm $this->out->elementStart('li'); $this->out->textarea( 'site-notice', + // TRANS: Label for site-wide notice text field in admin panel. _('Site notice text'), common_config('site', 'notice'), - _('Site-wide notice text (255 chars max; HTML okay)') + // TRANS: Tooltip for site-wide notice text field in admin panel. + _('Site-wide notice text (255 characters maximum; HTML allowed)') ); $this->out->elementEnd('li'); @@ -192,9 +193,11 @@ class SiteNoticeAdminPanelForm extends AdminForm { $this->out->submit( 'submit', - _('Save'), + // TRANS: Button text for saving site notice in admin panel. + _m('BUTTON','Save'), 'submit', null, + // TRANS: Title for button to save site notice in admin panel. _('Save site notice') ); } diff --git a/actions/useradminpanel.php b/actions/useradminpanel.php index 04e0ca3e7..fc75e83b2 100644 --- a/actions/useradminpanel.php +++ b/actions/useradminpanel.php @@ -45,7 +45,6 @@ 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 UseradminpanelAction extends AdminPanelAction { /** @@ -53,7 +52,6 @@ class UseradminpanelAction extends AdminPanelAction * * @return string page title */ - function title() { // TRANS: User admin panel title @@ -65,9 +63,9 @@ class UseradminpanelAction extends AdminPanelAction * * @return string instructions */ - function getInstructions() { + // TRANS: Instruction for user admin panel. return _('User settings for this StatusNet site'); } @@ -76,7 +74,6 @@ class UseradminpanelAction extends AdminPanelAction * * @return void */ - function showForm() { $form = new UserAdminPanelForm($this); @@ -89,7 +86,6 @@ class UseradminpanelAction extends AdminPanelAction * * @return void */ - function saveSettings() { static $settings = array( @@ -147,13 +143,15 @@ class UseradminpanelAction extends AdminPanelAction // Validate biolimit if (!Validate::number($values['profile']['biolimit'])) { - $this->clientError(_("Invalid bio limit. Must be numeric.")); + // TRANS: Form validation error in user admin panel when a non-numeric character limit was set. + $this->clientError(_('Invalid bio limit. Must be numeric.')); } // Validate welcome text if (mb_strlen($values['newuser']['welcome']) > 255) { - $this->clientError(_("Invalid welcome text. Max length is 255 characters.")); + // TRANS: Form validation error in user admin panel when welcome text is too long. + $this->clientError(_('Invalid welcome text. Maximum length is 255 characters.')); } // Validate default subscription @@ -163,7 +161,9 @@ class UseradminpanelAction extends AdminPanelAction if (empty($defuser)) { $this->clientError( sprintf( - _('Invalid default subscripton: \'%1$s\' is not user.'), + // TRANS: Client error displayed when trying to set a non-existing user as default subscription for new + // TRANS: users in user admin panel. %1$s is the invalid nickname. + _('Invalid default subscripton: \'%1$s\' is not a user.'), $values['newuser']['default'] ) ); @@ -179,7 +179,6 @@ class UserAdminPanelForm extends AdminForm * * @return int ID of the form */ - function id() { return 'useradminpanel'; @@ -190,7 +189,6 @@ class UserAdminPanelForm extends AdminForm * * @return string class of the form */ - function formClass() { return 'form_settings'; @@ -201,7 +199,6 @@ class UserAdminPanelForm extends AdminForm * * @return string URL of the action */ - function action() { return common_local_url('useradminpanel'); @@ -212,7 +209,6 @@ class UserAdminPanelForm extends AdminForm * * @return void */ - function formData() { $this->out->elementStart('fieldset', array('id' => 'settings_user-profile')); @@ -220,7 +216,9 @@ class UserAdminPanelForm extends AdminForm $this->out->elementStart('ul', 'form_data'); $this->li(); + // TRANS: Field label in user admin panel for setting the character limit for the bio field. $this->input('biolimit', _('Bio Limit'), + // TRANS: Tooltip in user admin panel for setting the character limit for the bio field. _('Maximum length of a profile bio in characters.'), 'profile'); $this->unli(); @@ -229,17 +227,22 @@ class UserAdminPanelForm extends AdminForm $this->out->elementEnd('fieldset'); $this->out->elementStart('fieldset', array('id' => 'settings_user-newusers')); + // TRANS: Form legend in user admin panel. $this->out->element('legend', null, _('New users')); $this->out->elementStart('ul', 'form_data'); $this->li(); + // TRANS: Field label in user admin panel for setting new user welcome text. $this->input('welcome', _('New user welcome'), - _('Welcome text for new users (Max 255 chars).'), + // TRANS: Tooltip in user admin panel for setting new user welcome text. + _('Welcome text for new users (maximum 255 characters).'), 'newuser'); $this->unli(); $this->li(); + // TRANS: Field label in user admin panel for setting default subscription for new users. $this->input('default', _('Default subscription'), + // TRANS: Tooltip in user admin panel for setting default subscription for new users. _('Automatically subscribe new users to this user.'), 'newuser'); $this->unli(); @@ -249,21 +252,21 @@ class UserAdminPanelForm extends AdminForm $this->out->elementEnd('fieldset'); $this->out->elementStart('fieldset', array('id' => 'settings_user-invitations')); + // TRANS: Form legend in user admin panel. $this->out->element('legend', null, _('Invitations')); $this->out->elementStart('ul', 'form_data'); $this->li(); + // TRANS: Field label for checkbox in user admin panel for allowing users to invite friend using site e-mail. $this->out->checkbox('invite-enabled', _('Invitations enabled'), (bool) $this->value('enabled', 'invite'), + // TRANS: Tooltip for checkbox in user admin panel for allowing users to invite friend using site e-mail. _('Whether to allow users to invite new users.')); $this->unli(); $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); - - - } /** @@ -278,7 +281,6 @@ class UserAdminPanelForm extends AdminForm * * @return void */ - function input($setting, $title, $instructions, $section='site') { $this->out->input("$section-$setting", $title, $this->value($setting, $section), $instructions); @@ -289,9 +291,14 @@ class UserAdminPanelForm extends AdminForm * * @return void */ - function formActions() { - $this->out->submit('submit', _('Save'), 'submit', null, _('Save user settings')); + $this->out->submit('submit', + // TRANS: Button text to save user settings in user admin panel. + _m('BUTTON','Save'), + 'submit', + null, + // TRANS: Title for button to save user settings in user admin panel. + _('Save user settings')); } } diff --git a/lib/groupeditform.php b/lib/groupeditform.php index f939fc1b6..cc25f0688 100644 --- a/lib/groupeditform.php +++ b/lib/groupeditform.php @@ -204,6 +204,6 @@ class GroupEditForm extends Form function formActions() { - $this->out->submit('submit', _('Save')); + $this->out->submit('submit', _m('BUTTON','Save')); } } diff --git a/lib/mailhandler.php b/lib/mailhandler.php index e9ba41839..69eb26bdd 100644 --- a/lib/mailhandler.php +++ b/lib/mailhandler.php @@ -57,8 +57,9 @@ class MailHandler $msg = $this->cleanup_msg($msg); $msg = common_shorten_links($msg); if (Notice::contentTooLong($msg)) { - $this->error($from, sprintf(_('That\'s too long. '. - 'Max notice size is %d chars.'), + $this->error($from, sprintf(_('That\'s too long. Maximum notice size is %d character.', + 'That\'s too long. Maximum notice size is %d characters.', + Notice::maxContent()), Notice::maxContent())); } -- cgit v1.2.3-54-g00ecf From 5a9bb0adc4555bf67bb668edb587d4440cca61e5 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 2 Nov 2010 13:05:16 -0700 Subject: Tossing in a basic i18n message export to script code. Plugins can hook StartScriptMessage/EndScriptMessage, or directly add needed mappings in Action::getScriptMessages(). Exported entries are accessible as SN.msg(key) at runtime. StatusNet core code now sets the tooltip text on .attachment.more links when they receive their attachment-expansion magic; this will override the hardcoded tooltip text saved from OStatus plugin when displaying timelines in the web UI. --- js/util.js | 11 ++++++- lib/action.php | 49 +++++++++++++++++++++++++++++ plugins/OStatus/classes/Ostatus_profile.php | 3 +- 3 files changed, 61 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/js/util.js b/js/util.js index 1989e92c0..1be3f3053 100644 --- a/js/util.js +++ b/js/util.js @@ -56,6 +56,15 @@ var SN = { // StatusNet NoticeDataGeoCookie: 'NoticeDataGeo', NoticeDataGeoSelected: 'notice_data-geo_selected', StatusNetInstance:'StatusNetInstance' + }, + }, + + messages: {}, + msg: function(key) { + if (typeof SN.messages[key] == "undefined") { + return '[' + key + ']'; + } else { + return SN.messages[key]; } }, @@ -416,7 +425,7 @@ var SN = { // StatusNet }); return false; - }); + }).attr('title', SN.msg('showmore_tooltip')); } else { $.fn.jOverlay.options = { diff --git a/lib/action.php b/lib/action.php index 01bb0f7e9..becd734b1 100644 --- a/lib/action.php +++ b/lib/action.php @@ -283,6 +283,7 @@ class Action extends HTMLOutputter // lawsuit if (Event::handle('StartShowStatusNetScripts', array($this)) && Event::handle('StartShowLaconicaScripts', array($this))) { $this->script('util.js'); + $this->showScriptMessages(); // Frame-busting code to avoid clickjacking attacks. $this->inlineScript('if (window.top !== window.self) { window.top.location.href = window.self.location.href; }'); Event::handle('EndShowStatusNetScripts', array($this)); @@ -292,6 +293,54 @@ class Action extends HTMLOutputter // lawsuit } } + /** + * Exports a map of localized text strings to JavaScript code. + * + * Plugins can add to what's exported by hooking the StartScriptMessages or EndScriptMessages + * events and appending to the array. Try to avoid adding strings that won't be used, as + * they'll be added to HTML output. + */ + function showScriptMessages() + { + $messages = array(); + if (Event::handle('StartScriptMessages', array($this, &$messages))) { + // Common messages needed for timeline views etc... + + // TRANS: Localized tooltip for '...' expansion button on overlong remote messages. + $messages['showmore_tooltip'] = _m('TOOLTIP', 'Show more'); + + $messages = array_merge($messages, $this->getScriptMessages()); + } + if ($messages) { + $this->inlineScript('SN.messages=' . json_encode($messages)); + } + Event::handle('EndScriptMessages', array($this, &$messages)); + return $messages; + } + + /** + * If the action will need localizable text strings, export them here like so: + * + * return array('pool_deepend' => _('Deep end'), + * 'pool_shallow' => _('Shallow end')); + * + * The exported map will be available via SN.msg() to JS code: + * + * $('#pool').html('
'); + * $('#pool .deepend').text(SN.msg('pool_deepend')); + * $('#pool .shallow').text(SN.msg('pool_shallow')); + * + * Exports a map of localized text strings to JavaScript code. + * + * Plugins can add to what's exported on any action by hooking the StartScriptMessages or + * EndScriptMessages events and appending to the array. Try to avoid adding strings that won't + * be used, as they'll be added to HTML output. + */ + function getScriptMessages() + { + return array(); + } + /** * Show OpenSearch headers * diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 03fcb71df..90bf671eb 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -588,7 +588,8 @@ class Ostatus_profile extends Memcached_DataObject // We mark up the attachment link specially for the HTML output // so we can fold-out the full version inline. - // TRANS: Shown when a notice is longer than supported and/or when attachments are present. + // @fixme I18N this tooltip will be saved with the site's default language + // TRANS: Shown when a notice is longer than supported and/or when attachments are present. At runtime this will usually be replaced with localized text from StatusNet core messages. $showMoreText = _m('Show more'); $attachUrl = common_local_url('attachment', array('attachment' => $attachment->id)); -- cgit v1.2.3-54-g00ecf From 86201761eadef3b124ee13e6ba2f9e661e697a5a Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 2 Nov 2010 13:12:58 -0700 Subject: Use SN.msg() and onEndScriptMessages() to export localized UI messages from Realtime plugin and its descendents. --- lib/action.php | 2 +- plugins/Realtime/RealtimePlugin.php | 40 +++++++++++++++++++------------------ plugins/Realtime/realtimeupdate.js | 13 ++++++------ 3 files changed, 28 insertions(+), 27 deletions(-) (limited to 'lib') diff --git a/lib/action.php b/lib/action.php index becd734b1..766cfca26 100644 --- a/lib/action.php +++ b/lib/action.php @@ -311,10 +311,10 @@ class Action extends HTMLOutputter // lawsuit $messages = array_merge($messages, $this->getScriptMessages()); } + Event::handle('EndScriptMessages', array($this, &$messages)); if ($messages) { $this->inlineScript('SN.messages=' . json_encode($messages)); } - Event::handle('EndScriptMessages', array($this, &$messages)); return $messages; } diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index 7a40cdca3..479e8cef2 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -106,9 +106,7 @@ class RealtimePlugin extends Plugin $realtimeUI = ' RealtimeUpdate.initActions("'.$url.'", "'.$timeline.'", "'. $pluginPath .'");'; } - $i18n = $this->_getMessages(); $script = ' $(document).ready(function() { '. - 'RealtimeUpdate._messages=' . json_encode($i18n) . ';' . $realtimeUI. $this->_updateInitialize($timeline, $user_id). '}); '; @@ -329,25 +327,29 @@ class RealtimePlugin extends Plugin } /** - * Any i18n messages that need to be loaded at runtime. - * @return array of string key to output text string pairs + * Export any i18n messages that need to be loaded at runtime... + * + * @param Action $action + * @param array $messages + * + * @return boolean hook return value */ - function _getMessages() + function onEndScriptMessages($action, &$messages) { - return array( - // TRANS: Text label for realtime view "play" button, usually replaced by an icon. - 'play' => _m('BUTTON', 'Play'), - // TRANS: Tooltip for realtime view "play" button. - 'play_tooltip' => _m('TOOLTIP', 'Play'), - // TRANS: Text label for realtime view "pause" button - 'pause' => _m('BUTTON', 'Pause'), - // TRANS: Tooltip for realtime view "pause" button - 'pause_tooltip' => _m('TOOLTIP', 'Pause'), - // TRANS: Text label for realtime view "popup" button, usually replaced by an icon. - 'popup' => _m('BUTTON', 'Pop up'), - // TRANS: Tooltip for realtime view "popup" button. - 'popup_tooltip' => _m('TOOLTIP', 'Pop up in a window'), - ); + // TRANS: Text label for realtime view "play" button, usually replaced by an icon. + $messages['realtime_play'] = _m('BUTTON', 'Play'); + // TRANS: Tooltip for realtime view "play" button. + $messages['realtime_play_tooltip'] = _m('TOOLTIP', 'Play'); + // TRANS: Text label for realtime view "pause" button + $messages['realtime_pause'] = _m('BUTTON', 'Pause'); + // TRANS: Tooltip for realtime view "pause" button + $messages['realtime_pause_tooltip'] = _m('TOOLTIP', 'Pause'); + // TRANS: Text label for realtime view "popup" button, usually replaced by an icon. + $messages['realtime_popup'] = _m('BUTTON', 'Pop up'); + // TRANS: Tooltip for realtime view "popup" button. + $messages['realtime_popup_tooltip'] = _m('TOOLTIP', 'Pop up in a window'); + + return true; } function _updateInitialize($timeline, $user_id) diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index f764ca738..f49cef95e 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -40,7 +40,6 @@ RealtimeUpdate = { _documenttitle: '', _paused:false, _queuedNotices:[], - _messages:{}, init: function(userid, replyurl, favorurl, repeaturl, deleteurl) { @@ -263,8 +262,8 @@ RealtimeUpdate = { $('#realtime_playpause').remove(); $('#realtime_actions').prepend('
  • '); - $('#realtime_pause').text(RealtimeUpdate._messages['pause']) - .attr('title', RealtimeUpdate._messages['pause_tooltip']) + $('#realtime_pause').text(SN.msg('realtime_pause')) + .attr('title', SN.msg('realtime_pause_tooltip')) .bind('click', function() { RealtimeUpdate.removeNoticesHover(); RealtimeUpdate.showPlay(); @@ -277,8 +276,8 @@ RealtimeUpdate = { RealtimeUpdate.setPause(true); $('#realtime_playpause').remove(); $('#realtime_actions').prepend('
  • '); - $('#realtime_play').text(RealtimeUpdate._messages['play']) - .attr('title', RealtimeUpdate._messages['play_tooltip']) + $('#realtime_play').text(SN.msg('realtime_play')) + .attr('title', SN.msg('realtime_play_tooltip')) .bind('click', function() { RealtimeUpdate.showPause(); return false; @@ -338,8 +337,8 @@ RealtimeUpdate = { initAddPopup: function(url, timeline, path) { $('#realtime_timeline').append(''); - $('#realtime_popup').text(RealtimeUpdate._messages['popup']) - .attr('title', RealtimeUpdate._messages['popup_tooltip']) + $('#realtime_popup').text(SN.msg('realtime_popup')) + .attr('title', SN.msg('realtime_popup_tooltip')) .bind('click', function() { window.open(url, '', -- cgit v1.2.3-54-g00ecf