Add translator documentation for a few files

* added a few XXX (that's StatusNet for FIXME, right?)
** proposing de-duplication of a message appearing ~50 times
** marking bad pagination implementation
* moved the TRANS: comments in action.php down to exactly before the line in which the message appears. Otherwise gettext does not put them in the pot file
* fixed a XXX in action.php removing double spaces
This commit is contained in:
Siebrand Mazeland 2010-04-10 21:12:14 +02:00
parent 86a3016a6f
commit ddc116cffe
3 changed files with 68 additions and 17 deletions

View File

@ -105,27 +105,45 @@ class AccountSettingsNav extends Widget
$user = common_current_user(); $user = common_current_user();
if(Event::handle('StartAccountSettingsProfileMenuItem', array($this, &$menu))){ if(Event::handle('StartAccountSettingsProfileMenuItem', array($this, &$menu))){
$this->showMenuItem('profilesettings',_('Profile'),_('Change your profile settings')); // TRANS: Link title attribute in user account settings menu.
$title = _('Change your profile settings');
// TRANS: Link description in user account settings menu.
$this->showMenuItem('profilesettings',_('Profile'),$title);
Event::handle('EndAccountSettingsProfileMenuItem', array($this, &$menu)); Event::handle('EndAccountSettingsProfileMenuItem', array($this, &$menu));
} }
if(Event::handle('StartAccountSettingsAvatarMenuItem', array($this, &$menu))){ if(Event::handle('StartAccountSettingsAvatarMenuItem', array($this, &$menu))){
$this->showMenuItem('avatarsettings',_('Avatar'),_('Upload an avatar')); // TRANS: Link title attribute in user account settings menu.
$title = _('Upload an avatar');
// TRANS: Link description in user account settings menu.
$this->showMenuItem('avatarsettings',_('Avatar'),$title);
Event::handle('EndAccountSettingsAvatarMenuItem', array($this, &$menu)); Event::handle('EndAccountSettingsAvatarMenuItem', array($this, &$menu));
} }
if(Event::handle('StartAccountSettingsPasswordMenuItem', array($this, &$menu))){ if(Event::handle('StartAccountSettingsPasswordMenuItem', array($this, &$menu))){
$this->showMenuItem('passwordsettings',_('Password'),_('Change your password')); // TRANS: Link title attribute in user account settings menu.
$title = _('Change your password');
// TRANS: Link description in user account settings menu.
$this->showMenuItem('passwordsettings',_('Password'),$title);
Event::handle('EndAccountSettingsPasswordMenuItem', array($this, &$menu)); Event::handle('EndAccountSettingsPasswordMenuItem', array($this, &$menu));
} }
if(Event::handle('StartAccountSettingsEmailMenuItem', array($this, &$menu))){ if(Event::handle('StartAccountSettingsEmailMenuItem', array($this, &$menu))){
$this->showMenuItem('emailsettings',_('Email'),_('Change email handling')); // TRANS: Link title attribute in user account settings menu.
$title = _('Change email handling');
// TRANS: Link description in user account settings menu.
$this->showMenuItem('emailsettings',_('Email'),$title);
Event::handle('EndAccountSettingsEmailMenuItem', array($this, &$menu)); Event::handle('EndAccountSettingsEmailMenuItem', array($this, &$menu));
} }
if(Event::handle('StartAccountSettingsDesignMenuItem', array($this, &$menu))){ if(Event::handle('StartAccountSettingsDesignMenuItem', array($this, &$menu))){
$this->showMenuItem('userdesignsettings',_('Design'),_('Design your profile')); // TRANS: Link title attribute in user account settings menu.
$title = _('Design your profile');
// TRANS: Link description in user account settings menu.
$this->showMenuItem('userdesignsettings',_('Design'),$title);
Event::handle('EndAccountSettingsDesignMenuItem', array($this, &$menu)); Event::handle('EndAccountSettingsDesignMenuItem', array($this, &$menu));
} }
if(Event::handle('StartAccountSettingsOtherMenuItem', array($this, &$menu))){ if(Event::handle('StartAccountSettingsOtherMenuItem', array($this, &$menu))){
$this->showMenuItem('othersettings',_('Other'),_('Other options')); // TRANS: Link title attribute in user account settings menu.
$title = _('Other options');
// TRANS: Link description in user account settings menu.
$this->showMenuItem('othersettings',_('Other'),$title);
Event::handle('EndAccountSettingsOtherMenuItem', array($this, &$menu)); Event::handle('EndAccountSettingsOtherMenuItem', array($this, &$menu));
} }

View File

@ -141,6 +141,7 @@ class Action extends HTMLOutputter // lawsuit
function showTitle() function showTitle()
{ {
$this->element('title', null, $this->element('title', null,
// TRANS: Page title. %1$s is the title, %2$s is the site name.
sprintf(_("%1\$s - %2\$s"), sprintf(_("%1\$s - %2\$s"),
$this->title(), $this->title(),
common_config('site', 'name'))); common_config('site', 'name')));
@ -156,6 +157,7 @@ class Action extends HTMLOutputter // lawsuit
function title() function title()
{ {
// TRANS: Page title for a page without a title set.
return _("Untitled page"); return _("Untitled page");
} }
@ -420,6 +422,7 @@ class Action extends HTMLOutputter // lawsuit
{ {
$user = common_current_user(); $user = common_current_user();
$this->elementStart('dl', array('id' => 'site_nav_global_primary')); $this->elementStart('dl', array('id' => 'site_nav_global_primary'));
// TRANS: DT element for primary navigation menu. String is hidden in default CSS.
$this->element('dt', null, _('Primary site navigation')); $this->element('dt', null, _('Primary site navigation'));
$this->elementStart('dd'); $this->elementStart('dd');
$this->elementStart('ul', array('class' => 'nav')); $this->elementStart('ul', array('class' => 'nav'));
@ -427,31 +430,31 @@ class Action extends HTMLOutputter // lawsuit
if ($user) { if ($user) {
// TRANS: Tooltip for main menu option "Personal" // TRANS: Tooltip for main menu option "Personal"
$tooltip = _m('TOOLTIP', 'Personal profile and friends timeline'); $tooltip = _m('TOOLTIP', 'Personal profile and friends timeline');
// TRANS: Main menu option when logged in for access to personal profile and friends timeline
$this->menuItem(common_local_url('all', array('nickname' => $user->nickname)), $this->menuItem(common_local_url('all', array('nickname' => $user->nickname)),
// TRANS: Main menu option when logged in for access to personal profile and friends timeline
_m('MENU', 'Personal'), $tooltip, false, 'nav_home'); _m('MENU', 'Personal'), $tooltip, false, 'nav_home');
// TRANS: Tooltip for main menu option "Account" // TRANS: Tooltip for main menu option "Account"
$tooltip = _m('TOOLTIP', 'Change your email, avatar, password, profile'); $tooltip = _m('TOOLTIP', 'Change your email, avatar, password, profile');
// TRANS: Main menu option when logged in for access to user settings
$this->menuItem(common_local_url('profilesettings'), $this->menuItem(common_local_url('profilesettings'),
// TRANS: Main menu option when logged in for access to user settings
_('Account'), $tooltip, false, 'nav_account'); _('Account'), $tooltip, false, 'nav_account');
// TRANS: Tooltip for main menu option "Services" // TRANS: Tooltip for main menu option "Services"
$tooltip = _m('TOOLTIP', 'Connect to services'); $tooltip = _m('TOOLTIP', 'Connect to services');
// TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services
$this->menuItem(common_local_url('oauthconnectionssettings'), $this->menuItem(common_local_url('oauthconnectionssettings'),
// TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services
_('Connect'), $tooltip, false, 'nav_connect'); _('Connect'), $tooltip, false, 'nav_connect');
if ($user->hasRight(Right::CONFIGURESITE)) { if ($user->hasRight(Right::CONFIGURESITE)) {
// TRANS: Tooltip for menu option "Admin" // TRANS: Tooltip for menu option "Admin"
$tooltip = _m('TOOLTIP', 'Change site configuration'); $tooltip = _m('TOOLTIP', 'Change site configuration');
// TRANS: Main menu option when logged in and site admin for access to site configuration
$this->menuItem(common_local_url('siteadminpanel'), $this->menuItem(common_local_url('siteadminpanel'),
// TRANS: Main menu option when logged in and site admin for access to site configuration
_m('MENU', 'Admin'), $tooltip, false, 'nav_admin'); _m('MENU', 'Admin'), $tooltip, false, 'nav_admin');
} }
if (common_config('invite', 'enabled')) { if (common_config('invite', 'enabled')) {
// TRANS: Tooltip for main menu option "Invite" // TRANS: Tooltip for main menu option "Invite"
$tooltip = _m('TOOLTIP', 'Invite friends and colleagues to join you on %s'); $tooltip = _m('TOOLTIP', 'Invite friends and colleagues to join you on %s');
// TRANS: Main menu option when logged in and invitations are allowed for inviting new users
$this->menuItem(common_local_url('invite'), $this->menuItem(common_local_url('invite'),
// TRANS: Main menu option when logged in and invitations are allowed for inviting new users
_m('MENU', 'Invite'), _m('MENU', 'Invite'),
sprintf($tooltip, sprintf($tooltip,
common_config('site', 'name')), common_config('site', 'name')),
@ -459,16 +462,16 @@ class Action extends HTMLOutputter // lawsuit
} }
// TRANS: Tooltip for main menu option "Logout" // TRANS: Tooltip for main menu option "Logout"
$tooltip = _m('TOOLTIP', 'Logout from the site'); $tooltip = _m('TOOLTIP', 'Logout from the site');
// TRANS: Main menu option when logged in to log out the current user
$this->menuItem(common_local_url('logout'), $this->menuItem(common_local_url('logout'),
// TRANS: Main menu option when logged in to log out the current user
_m('MENU', 'Logout'), $tooltip, false, 'nav_logout'); _m('MENU', 'Logout'), $tooltip, false, 'nav_logout');
} }
else { else {
if (!common_config('site', 'closed')) { if (!common_config('site', 'closed')) {
// TRANS: Tooltip for main menu option "Register" // TRANS: Tooltip for main menu option "Register"
$tooltip = _m('TOOLTIP', 'Create an account'); $tooltip = _m('TOOLTIP', 'Create an account');
// TRANS: Main menu option when not logged in to register a new account
$this->menuItem(common_local_url('register'), $this->menuItem(common_local_url('register'),
// TRANS: Main menu option when not logged in to register a new account
_m('MENU', 'Register'), $tooltip, false, 'nav_register'); _m('MENU', 'Register'), $tooltip, false, 'nav_register');
} }
// TRANS: Tooltip for main menu option "Login" // TRANS: Tooltip for main menu option "Login"
@ -575,6 +578,7 @@ class Action extends HTMLOutputter // lawsuit
function showLocalNavBlock() function showLocalNavBlock()
{ {
$this->elementStart('dl', array('id' => 'site_nav_local_views')); $this->elementStart('dl', array('id' => 'site_nav_local_views'));
// TRANS: DT element for local views block. String is hidden in default CSS.
$this->element('dt', null, _('Local views')); $this->element('dt', null, _('Local views'));
$this->elementStart('dd'); $this->elementStart('dd');
$this->showLocalNav(); $this->showLocalNav();
@ -641,6 +645,7 @@ class Action extends HTMLOutputter // lawsuit
$this->elementStart('dl', array('id' => 'page_notice', $this->elementStart('dl', array('id' => 'page_notice',
'class' => 'system_notice')); 'class' => 'system_notice'));
// TRANS: DT element for page notice. String is hidden in default CSS.
$this->element('dt', null, _('Page notice')); $this->element('dt', null, _('Page notice'));
$this->elementStart('dd'); $this->elementStart('dd');
if (Event::handle('StartShowPageNotice', array($this))) { if (Event::handle('StartShowPageNotice', array($this))) {
@ -743,28 +748,37 @@ class Action extends HTMLOutputter // lawsuit
function showSecondaryNav() function showSecondaryNav()
{ {
$this->elementStart('dl', array('id' => 'site_nav_global_secondary')); $this->elementStart('dl', array('id' => 'site_nav_global_secondary'));
// TRANS: DT element for secondary navigation menu. String is hidden in default CSS.
$this->element('dt', null, _('Secondary site navigation')); $this->element('dt', null, _('Secondary site navigation'));
$this->elementStart('dd', null); $this->elementStart('dd', null);
$this->elementStart('ul', array('class' => 'nav')); $this->elementStart('ul', array('class' => 'nav'));
if (Event::handle('StartSecondaryNav', array($this))) { if (Event::handle('StartSecondaryNav', array($this))) {
$this->menuItem(common_local_url('doc', array('title' => 'help')), $this->menuItem(common_local_url('doc', array('title' => 'help')),
// TRANS: Secondary navigation menu option leading to help on StatusNet.
_('Help')); _('Help'));
$this->menuItem(common_local_url('doc', array('title' => 'about')), $this->menuItem(common_local_url('doc', array('title' => 'about')),
// TRANS: Secondary navigation menu option leading to text about StatusNet site.
_('About')); _('About'));
$this->menuItem(common_local_url('doc', array('title' => 'faq')), $this->menuItem(common_local_url('doc', array('title' => 'faq')),
// TRANS: Secondary navigation menu option leading to Frequently Asked Questions.
_('FAQ')); _('FAQ'));
$bb = common_config('site', 'broughtby'); $bb = common_config('site', 'broughtby');
if (!empty($bb)) { if (!empty($bb)) {
$this->menuItem(common_local_url('doc', array('title' => 'tos')), $this->menuItem(common_local_url('doc', array('title' => 'tos')),
// TRANS: Secondary navigation menu option leading to Terms of Service.
_('TOS')); _('TOS'));
} }
$this->menuItem(common_local_url('doc', array('title' => 'privacy')), $this->menuItem(common_local_url('doc', array('title' => 'privacy')),
// TRANS: Secondary navigation menu option leading to privacy policy.
_('Privacy')); _('Privacy'));
$this->menuItem(common_local_url('doc', array('title' => 'source')), $this->menuItem(common_local_url('doc', array('title' => 'source')),
// TRANS: Secondary navigation menu option.
_('Source')); _('Source'));
$this->menuItem(common_local_url('version'), $this->menuItem(common_local_url('version'),
// TRANS: Secondary navigation menu option leading to version information on the StatusNet site.
_('Version')); _('Version'));
$this->menuItem(common_local_url('doc', array('title' => 'contact')), $this->menuItem(common_local_url('doc', array('title' => 'contact')),
// TRANS: Secondary navigation menu option leading to contact information on the StatusNet site.
_('Contact')); _('Contact'));
$this->menuItem(common_local_url('doc', array('title' => 'badge')), $this->menuItem(common_local_url('doc', array('title' => 'badge')),
_('Badge')); _('Badge'));
@ -795,16 +809,18 @@ class Action extends HTMLOutputter // lawsuit
*/ */
function showStatusNetLicense() function showStatusNetLicense()
{ {
// TRANS: DT element for StatusNet software license.
$this->element('dt', array('id' => 'site_statusnet_license'), _('StatusNet software license')); $this->element('dt', array('id' => 'site_statusnet_license'), _('StatusNet software license'));
$this->elementStart('dd', null); $this->elementStart('dd', null);
// @fixme drop the final spaces in the messages when at good spot
// to let translations get updated.
if (common_config('site', 'broughtby')) { if (common_config('site', 'broughtby')) {
$instr = _('**%%site.name%%** is a microblogging service brought to you by [%%site.broughtby%%](%%site.broughtbyurl%%). '); // TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
$instr = _('**%%site.name%%** is a microblogging service brought to you by [%%site.broughtby%%](%%site.broughtbyurl%%).');
} else { } else {
$instr = _('**%%site.name%%** is a microblogging service. '); // TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set.
$instr = _('**%%site.name%%** is a microblogging service.');
} }
$instr .= ' '; $instr .= ' ';
// TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license.
$instr .= sprintf(_('It runs the [StatusNet](http://status.net/) microblogging software, version %s, available under the [GNU Affero General Public License](http://www.fsf.org/licensing/licenses/agpl-3.0.html).'), STATUSNET_VERSION); $instr .= sprintf(_('It runs the [StatusNet](http://status.net/) microblogging software, version %s, available under the [GNU Affero General Public License](http://www.fsf.org/licensing/licenses/agpl-3.0.html).'), STATUSNET_VERSION);
$output = common_markup_to_html($instr); $output = common_markup_to_html($instr);
$this->raw($output); $this->raw($output);
@ -820,19 +836,25 @@ class Action extends HTMLOutputter // lawsuit
function showContentLicense() function showContentLicense()
{ {
if (Event::handle('StartShowContentLicense', array($this))) { if (Event::handle('StartShowContentLicense', array($this))) {
// TRANS: DT element for StatusNet site content license.
$this->element('dt', array('id' => 'site_content_license'), _('Site content license')); $this->element('dt', array('id' => 'site_content_license'), _('Site content license'));
$this->elementStart('dd', array('id' => 'site_content_license_cc')); $this->elementStart('dd', array('id' => 'site_content_license_cc'));
switch (common_config('license', 'type')) { switch (common_config('license', 'type')) {
case 'private': case 'private':
// TRANS: Content license displayed when license is set to 'private'.
// TRANS: %1$s is the site name.
$this->element('p', null, sprintf(_('Content and data of %1$s are private and confidential.'), $this->element('p', null, sprintf(_('Content and data of %1$s are private and confidential.'),
common_config('site', 'name'))); common_config('site', 'name')));
// fall through // fall through
case 'allrightsreserved': case 'allrightsreserved':
if (common_config('license', 'owner')) { if (common_config('license', 'owner')) {
// TRANS: Content license displayed when license is set to 'allrightsreserved'.
// TRANS: %1$s is the copyright owner.
$this->element('p', null, sprintf(_('Content and data copyright by %1$s. All rights reserved.'), $this->element('p', null, sprintf(_('Content and data copyright by %1$s. All rights reserved.'),
common_config('license', 'owner'))); common_config('license', 'owner')));
} else { } else {
// TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set.
$this->element('p', null, _('Content and data copyright by contributors. All rights reserved.')); $this->element('p', null, _('Content and data copyright by contributors. All rights reserved.'));
} }
break; break;
@ -1148,11 +1170,15 @@ class Action extends HTMLOutputter // lawsuit
* *
* @return nothing * @return nothing
*/ */
// XXX: The messages in this pagination method only tailor to navigating
// notices. In other lists, "Previous"/"Next" type navigation is
// desirable, but not available.
function pagination($have_before, $have_after, $page, $action, $args=null) function pagination($have_before, $have_after, $page, $action, $args=null)
{ {
// Does a little before-after block for next/prev page // Does a little before-after block for next/prev page
if ($have_before || $have_after) { if ($have_before || $have_after) {
$this->elementStart('dl', 'pagination'); $this->elementStart('dl', 'pagination');
// TRANS: DT element for pagination (previous/next, etc.).
$this->element('dt', null, _('Pagination')); $this->element('dt', null, _('Pagination'));
$this->elementStart('dd', null); $this->elementStart('dd', null);
$this->elementStart('ul', array('class' => 'nav')); $this->elementStart('ul', array('class' => 'nav'));
@ -1162,6 +1188,8 @@ class Action extends HTMLOutputter // lawsuit
$this->elementStart('li', array('class' => 'nav_prev')); $this->elementStart('li', array('class' => 'nav_prev'));
$this->element('a', array('href' => common_local_url($action, $args, $pargs), $this->element('a', array('href' => common_local_url($action, $args, $pargs),
'rel' => 'prev'), 'rel' => 'prev'),
// TRANS: Pagination message to go to a page displaying information more in the
// TRANS: present than the currently displayed information.
_('After')); _('After'));
$this->elementEnd('li'); $this->elementEnd('li');
} }
@ -1170,6 +1198,8 @@ class Action extends HTMLOutputter // lawsuit
$this->elementStart('li', array('class' => 'nav_next')); $this->elementStart('li', array('class' => 'nav_next'));
$this->element('a', array('href' => common_local_url($action, $args, $pargs), $this->element('a', array('href' => common_local_url($action, $args, $pargs),
'rel' => 'next'), 'rel' => 'next'),
// TRANS: Pagination message to go to a page displaying information more in the
// TRANS: past than the currently displayed information.
_('Before')); _('Before'));
$this->elementEnd('li'); $this->elementEnd('li');
} }
@ -1213,6 +1243,8 @@ class Action extends HTMLOutputter // lawsuit
* @return void * @return void
*/ */
// XXX: Finding this type of check with the same message about 50 times.
// Possible to refactor?
function checkSessionToken() function checkSessionToken()
{ {
// CSRF protection // CSRF protection

View File

@ -100,6 +100,7 @@ class HTMLOutputter extends XMLOutputter
$type = common_negotiate_type($cp, $sp); $type = common_negotiate_type($cp, $sp);
if (!$type) { if (!$type) {
// TRANS: Client exception 406
throw new ClientException(_('This page is not available in a '. throw new ClientException(_('This page is not available in a '.
'media type you accept'), 406); 'media type you accept'), 406);
} }