1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-18 12:52:42 +01:00

Various translation improvements

Summary: Depends on D14070.

Test Plan: Eyeball it.

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, hach-que

Differential Revision: https://secure.phabricator.com/D14073
This commit is contained in:
Joshua Spence 2015-11-03 06:54:38 +11:00
parent 495cb7a2e0
commit c35b564f4d
53 changed files with 217 additions and 142 deletions

View file

@ -102,7 +102,7 @@ function commit_symbols(
$repository->getPHID()); $repository->getPHID());
} }
echo pht('Loading %s symbols...', new PhutilNumber(count($sql))), "\n"; echo pht('Loading %s symbols...', phutil_count($sql)), "\n";
foreach (array_chunk($sql, 128) as $chunk) { foreach (array_chunk($sql, 128) as $chunk) {
queryfx( queryfx(
$conn_w, $conn_w,

View file

@ -109,7 +109,7 @@ final class PhabricatorAuthListController
'only users with a verified email address at one of these %s '. 'only users with a verified email address at one of these %s '.
'allowed domain(s) will be able to register an account: %s', 'allowed domain(s) will be able to register an account: %s',
$domains_link, $domains_link,
new PhutilNumber(count($domains_value)), phutil_count($domains_value),
phutil_tag('strong', array(), implode(', ', $domains_value))); phutil_tag('strong', array(), implode(', ', $domains_value)));
} else { } else {
$issues[] = pht( $issues[] = pht(

View file

@ -78,7 +78,7 @@ final class PhabricatorAuthManagementRefreshWorkflow
"%s\n", "%s\n",
pht( pht(
'Found %s account(s) to refresh.', 'Found %s account(s) to refresh.',
new PhutilNumber(count($accounts)))); phutil_count($accounts)));
} }
$providers = PhabricatorAuthProvider::getAllEnabledProviders(); $providers = PhabricatorAuthProvider::getAllEnabledProviders();

View file

@ -18,7 +18,7 @@ final class CelerityManagementMapWorkflow
$this->log( $this->log(
pht( pht(
'Rebuilding %d resource source(s).', 'Rebuilding %d resource source(s).',
new PhutilNumber(count($resources_map)))); phutil_count($resources_map)));
foreach ($resources_map as $name => $resources) { foreach ($resources_map as $name => $resources) {
$this->rebuildResources($resources); $this->rebuildResources($resources);

View file

@ -115,7 +115,7 @@ final class PhabricatorDaemonsSetupCheck extends PhabricatorSetupCheck {
$list_section = array( $list_section = array(
pht( pht(
'The configurations differ in the following %s way(s):', 'The configurations differ in the following %s way(s):',
new PhutilNumber(count($issues))), phutil_count($issues)),
phutil_tag( phutil_tag(
'ul', 'ul',
array(), array(),

View file

@ -111,7 +111,7 @@ final class PhabricatorPathSetupCheck extends PhabricatorSetupCheck {
$this $this
->newIssue('config.PATH.'.$digest) ->newIssue('config.PATH.'.$digest)
->setName(pht('$PATH Component Unusable')) ->setName(pht('%s Component Unusable', '$PATH'))
->setSummary( ->setSummary(
pht( pht(
'A component of the configured PATH can not be used by '. 'A component of the configured PATH can not be used by '.

View file

@ -387,7 +387,7 @@ final class PhabricatorSetupIssueView extends AphrontView {
array(), array(),
pht( pht(
'PHP also loaded these %s configuration file(s):', 'PHP also loaded these %s configuration file(s):',
new PhutilNumber(count($more_loc)))); phutil_count($more_loc)));
$info[] = phutil_tag( $info[] = phutil_tag(
'pre', 'pre',
array(), array(),

View file

@ -29,14 +29,13 @@ final class ConpherenceUpdateThreadConduitAPIMethod
protected function defineErrorTypes() { protected function defineErrorTypes() {
return array( return array(
'ERR_USAGE_NO_ROOM_ID' => pht( 'ERR_USAGE_NO_ROOM_ID' => pht(
'You must specify a room id or room phid to query transactions '. 'You must specify a room ID or room PHID to query transactions from.'),
'from.'),
'ERR_USAGE_ROOM_NOT_FOUND' => pht( 'ERR_USAGE_ROOM_NOT_FOUND' => pht(
'room does not exist or logged in user can not see it.'), 'Room does not exist or logged in user can not see it.'),
'ERR_USAGE_ONLY_SELF_REMOVE' => pht( 'ERR_USAGE_ONLY_SELF_REMOVE' => pht(
'Only a user can remove themselves from a room.'), 'Only a user can remove themselves from a room.'),
'ERR_USAGE_NO_UPDATES' => pht( 'ERR_USAGE_NO_UPDATES' => pht(
'You must specify data that actually updates the conpherence.'), 'You must specify data that actually updates the Conpherence.'),
); );
} }

View file

@ -325,8 +325,7 @@ final class ConpherenceUpdateController
$remove_person = $request->getStr('remove_person'); $remove_person = $request->getStr('remove_person');
$participants = $conpherence->getParticipants(); $participants = $conpherence->getParticipants();
$message = pht( $message = pht('Are you sure you want to leave this room?');
'Are you sure you want to leave this room?');
$test_conpherence = clone $conpherence; $test_conpherence = clone $conpherence;
$test_conpherence->attachParticipants(array()); $test_conpherence->attachParticipants(array());
if (!PhabricatorPolicyFilter::hasCapability( if (!PhabricatorPolicyFilter::hasCapability(
@ -334,17 +333,14 @@ final class ConpherenceUpdateController
$test_conpherence, $test_conpherence,
PhabricatorPolicyCapability::CAN_VIEW)) { PhabricatorPolicyCapability::CAN_VIEW)) {
if (count($participants) == 1) { if (count($participants) == 1) {
$message .= pht( $message .= ' '.pht('The room will be inaccessible forever and ever.');
' The room will be inaccessible forever and ever.');
} else { } else {
$message .= pht( $message .= ' '.pht('Someone else in the room can add you back later.');
' Someone else in the room can add you back later.');
} }
} }
$body = phutil_tag( $body = phutil_tag(
'p', 'p',
array( array(),
),
$message); $message);
require_celerity_resource('conpherence-update-css'); require_celerity_resource('conpherence-update-css');

View file

@ -77,14 +77,14 @@ final class ConpherenceTransaction extends PhabricatorApplicationTransaction {
count($rem)); count($rem));
} else if ($add) { } else if ($add) {
$title = pht( $title = pht(
'%s added %d files(s).', '%s added %s files(s).',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
count($add)); phutil_count($add));
} else { } else {
$title = pht( $title = pht(
'%s removed %d file(s).', '%s removed %s file(s).',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
count($rem)); phutil_count($rem));
} }
return $title; return $title;
break; break;

View file

@ -226,7 +226,9 @@ abstract class PhabricatorDaemonManagementWorkflow
// Retry without sudo // Retry without sudo
$console->writeOut( $console->writeOut(
"%s\n", "%s\n",
pht('sudo command failed. Starting daemon as current user.')); pht(
'%s command failed. Starting daemon as current user.',
'sudo'));
$this->executeDaemonLaunchCommand( $this->executeDaemonLaunchCommand(
$command, $command,
$daemon_script_dir, $daemon_script_dir,
@ -265,8 +267,9 @@ abstract class PhabricatorDaemonManagementWorkflow
if (preg_match('/sudo: a password is required/', $stderr)) { if (preg_match('/sudo: a password is required/', $stderr)) {
throw new Exception( throw new Exception(
pht( pht(
'sudo exited with a zero exit code, but emitted output '. '%s exited with a zero exit code, but emitted output '.
'consistent with failure under OSX.')); 'consistent with failure under OSX.',
'sudo'));
} }
} }
} }

View file

@ -218,21 +218,21 @@ final class DifferentialJIRAIssuesField
return pht( return pht(
'%s updated JIRA issue(s): added %d %s; removed %d %s.', '%s updated JIRA issue(s): added %d %s; removed %d %s.',
$xaction->renderHandleLink($author_phid), $xaction->renderHandleLink($author_phid),
new PhutilNumber(count($add)), phutil_count($add),
implode(', ', $add), implode(', ', $add),
new PhutilNumber(count($rem)), phutil_count($rem),
implode(', ', $rem)); implode(', ', $rem));
} else if ($add) { } else if ($add) {
return pht( return pht(
'%s added %d JIRA issue(s): %s.', '%s added %d JIRA issue(s): %s.',
$xaction->renderHandleLink($author_phid), $xaction->renderHandleLink($author_phid),
new PhutilNumber(count($add)), phutil_count($add),
implode(', ', $add)); implode(', ', $add));
} else if ($rem) { } else if ($rem) {
return pht( return pht(
'%s removed %d JIRA issue(s): %s.', '%s removed %d JIRA issue(s): %s.',
$xaction->renderHandleLink($author_phid), $xaction->renderHandleLink($author_phid),
new PhutilNumber(count($rem)), phutil_count($rem),
implode(', ', $rem)); implode(', ', $rem));
} }

View file

@ -125,7 +125,7 @@ final class DifferentialUnitField
)) + $groups; )) + $groups;
foreach ($groups as $result => $group) { foreach ($groups as $result => $group) {
$count = new PhutilNumber(count($group)); $count = phutil_count($group);
switch ($result) { switch ($result) {
case ArcanistUnitTestResult::RESULT_PASS: case ArcanistUnitTestResult::RESULT_PASS:
$note[] = pht('%s Passed Test(s)', $count); $note[] = pht('%s Passed Test(s)', $count);

View file

@ -135,12 +135,12 @@ abstract class DifferentialReviewersHeraldAction
case self::DO_ADD_REVIEWERS: case self::DO_ADD_REVIEWERS:
return pht( return pht(
'Added %s reviewer(s): %s.', 'Added %s reviewer(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_ADD_BLOCKING_REVIEWERS: case self::DO_ADD_BLOCKING_REVIEWERS:
return pht( return pht(
'Added %s blocking reviewer(s): %s.', 'Added %s blocking reviewer(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -81,14 +81,14 @@ final class DifferentialCreateMailReceiver extends PhabricatorMailReceiver {
} else { } else {
$subject = pht( $subject = pht(
'Diff creation failed; see body for %s error(s).', 'Diff creation failed; see body for %s error(s).',
new PhutilNumber(count($errors))); phutil_count($errors));
} }
$body = new PhabricatorMetaMTAMailBody(); $body = new PhabricatorMetaMTAMailBody();
$body->addRawSection($subject); $body->addRawSection($subject);
if (count($diffs)) { if (count($diffs)) {
$text_body = ''; $text_body = '';
$html_body = array(); $html_body = array();
$body_label = pht('%s DIFF LINK(S)', new PhutilNumber(count($diffs))); $body_label = pht('%s DIFF LINK(S)', phutil_count($diffs));
foreach ($diffs as $filename => $diff_uri) { foreach ($diffs as $filename => $diff_uri) {
$text_body .= $filename.': '.$diff_uri."\n"; $text_body .= $filename.': '.$diff_uri."\n";
$html_body[] = phutil_tag( $html_body[] = phutil_tag(
@ -105,7 +105,7 @@ final class DifferentialCreateMailReceiver extends PhabricatorMailReceiver {
if (count($errors)) { if (count($errors)) {
$body_section = new PhabricatorMetaMTAMailSection(); $body_section = new PhabricatorMetaMTAMailSection();
$body_label = pht('%s ERROR(S)', new PhutilNumber(count($errors))); $body_label = pht('%s ERROR(S)', phutil_count($errors));
foreach ($errors as $error) { foreach ($errors as $error) {
$body_section->addFragment($error); $body_section->addFragment($error);
} }

View file

@ -68,7 +68,7 @@ abstract class DiffusionAuditorsHeraldAction
case self::DO_ADD_AUDITORS: case self::DO_ADD_AUDITORS:
return pht( return pht(
'Added %s auditor(s): %s.', 'Added %s auditor(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -152,8 +152,8 @@ final class DivinerPHPAtomizer extends DivinerAtomizer {
$atom->addWarning( $atom->addWarning(
pht( pht(
'This call takes %s parameter(s), but only %s are documented.', 'This call takes %s parameter(s), but only %s are documented.',
new PhutilNumber(count($params)), phutil_count($params),
new PhutilNumber(count($docs)))); phutil_count($docs)));
} }
} }

View file

@ -140,14 +140,14 @@ abstract class DivinerPublisher extends Phobject {
"%s\n", "%s\n",
pht( pht(
'Deleting %s document(s).', 'Deleting %s document(s).',
new PhutilNumber(count($deleted)))); phutil_count($deleted)));
$this->deleteDocumentsByHash($deleted); $this->deleteDocumentsByHash($deleted);
$console->writeOut( $console->writeOut(
"%s\n", "%s\n",
pht( pht(
'Creating %s document(s).', 'Creating %s document(s).',
new PhutilNumber(count($created)))); phutil_count($created)));
$this->createDocumentsByHash($created); $this->createDocumentsByHash($created);
} }

View file

@ -69,7 +69,7 @@ final class DivinerGenerateWorkflow extends DivinerWorkflow {
'.book', '.book',
'--book <book>')); '--book <book>'));
} else { } else {
$this->log(pht('Found %s book(s).', new PhutilNumber(count($books)))); $this->log(pht('Found %s book(s).', phutil_count($books)));
} }
} }
@ -224,26 +224,26 @@ final class DivinerGenerateWorkflow extends DivinerWorkflow {
$this->log( $this->log(
pht( pht(
'Found %s file(s) in project.', 'Found %s file(s) in project.',
new PhutilNumber(count($file_hashes)))); phutil_count($file_hashes)));
$this->deleteDeadAtoms($file_hashes); $this->deleteDeadAtoms($file_hashes);
$atomize = $this->getFilesToAtomize($file_hashes); $atomize = $this->getFilesToAtomize($file_hashes);
$this->log( $this->log(
pht( pht(
'Found %s unatomized, uncached file(s).', 'Found %s unatomized, uncached file(s).',
new PhutilNumber(count($atomize)))); phutil_count($atomize)));
$file_atomizers = $this->getAtomizersForFiles($atomize); $file_atomizers = $this->getAtomizersForFiles($atomize);
$this->log( $this->log(
pht( pht(
'Found %s file(s) to atomize.', 'Found %s file(s) to atomize.',
new PhutilNumber(count($file_atomizers)))); phutil_count($file_atomizers)));
$futures = $this->buildAtomizerFutures($file_atomizers); $futures = $this->buildAtomizerFutures($file_atomizers);
$this->log( $this->log(
pht( pht(
'Atomizing %s file(s).', 'Atomizing %s file(s).',
new PhutilNumber(count($file_atomizers)))); phutil_count($file_atomizers)));
if ($futures) { if ($futures) {
$this->resolveAtomizerFutures($futures, $file_hashes); $this->resolveAtomizerFutures($futures, $file_hashes);
@ -452,7 +452,7 @@ final class DivinerGenerateWorkflow extends DivinerWorkflow {
$this->log( $this->log(
pht( pht(
'Found %s obsolete atom(s) in graph.', 'Found %s obsolete atom(s) in graph.',
new PhutilNumber(count($del_atoms)))); phutil_count($del_atoms)));
foreach ($del_atoms as $nhash => $shash) { foreach ($del_atoms as $nhash => $shash) {
$atom_cache->deleteSymbol($nhash); $atom_cache->deleteSymbol($nhash);
@ -466,7 +466,7 @@ final class DivinerGenerateWorkflow extends DivinerWorkflow {
$this->log( $this->log(
pht( pht(
'Found %s new atom(s) in graph.', 'Found %s new atom(s) in graph.',
new PhutilNumber(count($new_atoms)))); phutil_count($new_atoms)));
foreach ($new_atoms as $nhash => $ignored) { foreach ($new_atoms as $nhash => $ignored) {
$shash = $this->computeSymbolHash($nhash); $shash = $this->computeSymbolHash($nhash);
@ -505,7 +505,7 @@ final class DivinerGenerateWorkflow extends DivinerWorkflow {
$this->log( $this->log(
pht( pht(
'Found %s affected atoms.', 'Found %s affected atoms.',
new PhutilNumber(count($dirty_nhashes)))); phutil_count($dirty_nhashes)));
foreach ($dirty_nhashes as $nhash => $ignored) { foreach ($dirty_nhashes as $nhash => $ignored) {
$atom_cache->addGraph($nhash, $this->computeGraphHash($nhash)); $atom_cache->addGraph($nhash, $this->computeGraphHash($nhash));

View file

@ -96,7 +96,10 @@ final class PhabricatorAsanaConfigOptions
} }
$out = array(); $out = array();
$out[] = pht('| Workspace ID | Workspace Name |'); $out[] = sprintf(
'| %s | %s |',
pht('Workspace ID'),
pht('Workspace Name'));
$out[] = '| ------------ | -------------- |'; $out[] = '| ------------ | -------------- |';
foreach ($workspaces as $workspace) { foreach ($workspaces as $workspace) {
$out[] = sprintf('| `%s` | `%s` |', $workspace['id'], $workspace['name']); $out[] = sprintf('| `%s` | `%s` |', $workspace['id'], $workspace['name']);

View file

@ -557,7 +557,7 @@ final class PhabricatorFile extends PhabricatorFileDAO
'Failed to fetch remote URI "%s" after following %s redirect(s) '. 'Failed to fetch remote URI "%s" after following %s redirect(s) '.
'(%s): %s', '(%s): %s',
$uri, $uri,
new PhutilNumber(count($redirects)), phutil_count($redirects),
implode(' > ', array_keys($redirects)), implode(' > ', array_keys($redirects)),
$ex->getMessage()), $ex->getMessage()),
$ex); $ex);

View file

@ -37,7 +37,7 @@ final class HarbormasterSendMessageConduitAPIMethod
$unit_spec = HarbormasterBuildUnitMessage::getParameterSpec(); $unit_spec = HarbormasterBuildUnitMessage::getParameterSpec();
foreach ($unit_spec as $key => $parameter) { foreach ($unit_spec as $key => $parameter) {
$type = idx($parameter, 'type'); $type = idx($parameter, 'type');
$type = str_replace('|', pht(' or '), $type); $type = str_replace('|', ' '.pht('or').' ', $type);
$description = idx($parameter, 'description'); $description = idx($parameter, 'description');
$rows[] = "| `{$key}` | //{$type}// | {$description} |"; $rows[] = "| `{$key}` | //{$type}// | {$description} |";
} }
@ -61,7 +61,7 @@ final class HarbormasterSendMessageConduitAPIMethod
$lint_spec = HarbormasterBuildLintMessage::getParameterSpec(); $lint_spec = HarbormasterBuildLintMessage::getParameterSpec();
foreach ($lint_spec as $key => $parameter) { foreach ($lint_spec as $key => $parameter) {
$type = idx($parameter, 'type'); $type = idx($parameter, 'type');
$type = str_replace('|', pht(' or '), $type); $type = str_replace('|', ' '.pht('or').' ', $type);
$description = idx($parameter, 'description'); $description = idx($parameter, 'description');
$rows[] = "| `{$key}` | //{$type}// | {$description} |"; $rows[] = "| `{$key}` | //{$type}// | {$description} |";
} }

View file

@ -377,7 +377,7 @@ final class HarbormasterBuildViewController
array( array(
pht( pht(
'%s empty logs are hidden.', '%s empty logs are hidden.',
new PhutilNumber(count($empty_logs))), phutil_count($empty_logs)),
' ', ' ',
javelin_tag( javelin_tag(
'a', 'a',

View file

@ -231,7 +231,10 @@ final class HarbormasterStepEditController extends HarbormasterController {
'The following variables can be used in most fields. '. 'The following variables can be used in most fields. '.
'To reference a variable, use `%s` in a field.', 'To reference a variable, use `%s` in a field.',
'${name}'); '${name}');
$rows[] = pht('| Variable | Description |'); $rows[] = sprintf(
'| %s | %s |',
pht('Variable'),
pht('Description'));
$rows[] = '|---|---|'; $rows[] = '|---|---|';
foreach ($variables as $name => $description) { foreach ($variables as $name => $description) {
$rows[] = '| `'.$name.'` | '.$description.' |'; $rows[] = '| `'.$name.'` | '.$description.' |';

View file

@ -54,7 +54,7 @@ final class HarbormasterRunBuildPlansHeraldAction
case self::DO_BUILD: case self::DO_BUILD:
return pht( return pht(
'Started %s build(s): %s.', 'Started %s build(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -346,22 +346,22 @@ abstract class HeraldAction extends Phobject {
case self::DO_STANDARD_NO_EFFECT: case self::DO_STANDARD_NO_EFFECT:
return pht( return pht(
'This action has no effect on %s target(s): %s.', 'This action has no effect on %s target(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_STANDARD_INVALID: case self::DO_STANDARD_INVALID:
return pht( return pht(
'%s target(s) are invalid or of the wrong type: %s.', '%s target(s) are invalid or of the wrong type: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_STANDARD_UNLOADABLE: case self::DO_STANDARD_UNLOADABLE:
return pht( return pht(
'%s target(s) could not be loaded: %s.', '%s target(s) could not be loaded: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_STANDARD_PERMISSION: case self::DO_STANDARD_PERMISSION:
return pht( return pht(
'%s target(s) do not have permission to see this object: %s.', '%s target(s) do not have permission to see this object: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_STANDARD_INVALID_ACTION: case self::DO_STANDARD_INVALID_ACTION:
return pht( return pht(

View file

@ -95,12 +95,12 @@ final class LegalpadRequireSignatureHeraldAction
case self::DO_SIGNED: case self::DO_SIGNED:
return pht( return pht(
'%s document(s) are already signed: %s.', '%s document(s) are already signed: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_REQUIRED: case self::DO_REQUIRED:
return pht( return pht(
'Required %s signature(s): %s.', 'Required %s signature(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -546,23 +546,23 @@ final class ManiphestTransaction
$removed = array_diff($old, $new); $removed = array_diff($old, $new);
if ($added && !$removed) { if ($added && !$removed) {
return pht( return pht(
'%s attached %d file(s): %s.', '%s attached %s file(s): %s.',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
count($added), phutil_count($added),
$this->renderHandleList($added)); $this->renderHandleList($added));
} else if ($removed && !$added) { } else if ($removed && !$added) {
return pht( return pht(
'%s detached %d file(s): %s.', '%s detached %s file(s): %s.',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
count($removed), phutil_count($removed),
$this->renderHandleList($removed)); $this->renderHandleList($removed));
} else { } else {
return pht( return pht(
'%s changed file(s), attached %d: %s; detached %d: %s.', '%s changed file(s), attached %s: %s; detached %s: %s.',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
count($added), phutil_count($added),
$this->renderHandleList($added), $this->renderHandleList($added),
count($removed), phutil_count($removed),
$this->renderHandleList($removed)); $this->renderHandleList($removed));
} }
@ -585,9 +585,9 @@ final class ManiphestTransaction
case self::TYPE_MERGED_FROM: case self::TYPE_MERGED_FROM:
return pht( return pht(
'%s merged %d task(s): %s.', '%s merged %s task(s): %s.',
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
count($new), phutil_count($new),
$this->renderHandleList($new)); $this->renderHandleList($new));
break; break;

View file

@ -82,7 +82,7 @@ final class ManiphestTaskResultListView extends ManiphestView {
$header = id(new PHUIHeaderView()) $header = id(new PHUIHeaderView())
->addSigil('task-group') ->addSigil('task-group')
->setMetadata(array('priority' => head($list)->getPriority())) ->setMetadata(array('priority' => head($list)->getPriority()))
->setHeader(pht('%s (%s)', $group, new PhutilNumber(count($list)))); ->setHeader(pht('%s (%s)', $group, phutil_count($list)));
$lists[] = id(new PHUIObjectBoxView()) $lists[] = id(new PHUIObjectBoxView())
->setHeader($header) ->setHeader($header)

View file

@ -75,13 +75,13 @@ abstract class PhabricatorMetaMTAEmailHeraldAction
case self::DO_SEND: case self::DO_SEND:
return pht( return pht(
'Queued email to be delivered to %s target(s): %s.', 'Queued email to be delivered to %s target(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_FORCE: case self::DO_FORCE:
return pht( return pht(
'Queued email to be delivered to %s target(s), ignoring their '. 'Queued email to be delivered to %s target(s), ignoring their '.
'notification preferences: %s.', 'notification preferences: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -90,7 +90,7 @@ final class MultimeterSampleController extends MultimeterController {
$events_col = $this->renderGroupingLink( $events_col = $this->renderGroupingLink(
$group, $group,
'id', 'id',
pht('%s Events', new PhutilNumber($row['N']))); pht('%s Event(s)', new PhutilNumber($row['N'])));
} }
if (isset($group['request'])) { if (isset($group['request'])) {

View file

@ -49,9 +49,9 @@ final class PhabricatorPeopleDeleteController
$form = id(new AphrontFormView()) $form = id(new AphrontFormView())
->setUser($admin) ->setUser($admin)
->appendRemarkupInstructions( ->appendRemarkupInstructions(
pht( csprintf(
" phabricator/ $ ./bin/remove destroy %s\n", " phabricator/ $ ./bin/remove destroy %R\n",
csprintf('%R', '@'.$user->getUsername()))); '@'.$user->getUsername()));
return $this->newDialog() return $this->newDialog()
->setWidth(AphrontDialogView::WIDTH_FORM) ->setWidth(AphrontDialogView::WIDTH_FORM)

View file

@ -156,7 +156,7 @@ final class PholioMockThumbGridView extends AphrontView {
array( array(
'class' => 'pholio-mock-thumb-grid-comment-count', 'class' => 'pholio-mock-thumb-grid-comment-count',
), ),
pht('%s', new PhutilNumber(count($image->getInlineComments())))); pht('%s', phutil_count($image->getInlineComments())));
} }
return javelin_tag( return javelin_tag(

View file

@ -199,7 +199,9 @@ abstract class PhragmentController extends PhabricatorController {
$alt = PhabricatorEnv::getEnvConfig('security.alternate-file-domain'); $alt = PhabricatorEnv::getEnvConfig('security.alternate-file-domain');
if ($alt === null) { if ($alt === null) {
return id(new PHUIInfoView()) return id(new PHUIInfoView())
->setTitle(pht('security.alternate-file-domain must be configured!')) ->setTitle(pht(
'%s must be configured!',
'security.alternate-file-domain'))
->setSeverity(PHUIInfoView::SEVERITY_ERROR) ->setSeverity(PHUIInfoView::SEVERITY_ERROR)
->appendChild( ->appendChild(
phutil_tag( phutil_tag(

View file

@ -292,7 +292,9 @@ final class PonderQuestionViewController extends PonderController {
$item->setObject($question); $item->setObject($question);
$item->addAttribute( $item->addAttribute(
pht('%d Answer(s)', $question->getAnswerCount())); pht(
'%s Answer(s)',
new PhutilNumber($question->getAnswerCount())));
$list->addItem($item); $list->addItem($item);
} }

View file

@ -158,7 +158,9 @@ final class PonderQuestionSearchEngine
$handles[$question->getAuthorPHID()]->renderLink())); $handles[$question->getAuthorPHID()]->renderLink()));
$item->addAttribute( $item->addAttribute(
pht('%d Answer(s)', $question->getAnswerCount())); pht(
'%s Answer(s)',
new PhutilNumber($question->getAnswerCount())));
if ($project_handles) { if ($project_handles) {
$item->addAttribute( $item->addAttribute(

View file

@ -112,12 +112,12 @@ abstract class PhabricatorProjectHeraldAction
case self::DO_ADD_PROJECTS: case self::DO_ADD_PROJECTS:
return pht( return pht(
'Added %s project(s): %s.', 'Added %s project(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_REMOVE_PROJECTS: case self::DO_REMOVE_PROJECTS:
return pht( return pht(
'Removed %s project(s): %s.', 'Removed %s project(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -49,7 +49,7 @@ final class ReleephProductEditController extends ReleephProductController {
if (!$product_name) { if (!$product_name) {
$e_name = pht('Required'); $e_name = pht('Required');
$errors[] = $errors[] =
pht('Your releeph product should have a simple descriptive name.'); pht('Your Releeph product should have a simple descriptive name.');
} }
if (!$trunk_branch) { if (!$trunk_branch) {

View file

@ -31,6 +31,7 @@ final class ReleephDiffChurnFieldSpecification
$rejections = 0; $rejections = 0;
$comments = 0; $comments = 0;
$updates = 0; $updates = 0;
foreach ($xactions as $xaction) { foreach ($xactions as $xaction) {
switch ($xaction->getTransactionType()) { switch ($xaction->getTransactionType()) {
case PhabricatorTransactions::TYPE_COMMENT: case PhabricatorTransactions::TYPE_COMMENT:
@ -60,13 +61,13 @@ final class ReleephDiffChurnFieldSpecification
} else { } else {
$parts = array(); $parts = array();
if ($rejections) { if ($rejections) {
$parts[] = pht('%d rejection(s)', $rejections); $parts[] = pht('%s rejection(s)', new PhutilNumber($rejections));
} }
if ($comments) { if ($comments) {
$parts[] = pht('%d comment(s)', $comments); $parts[] = pht('%s comment(s)', new PhutilNumber($comments));
} }
if ($updates) { if ($updates) {
$parts[] = pht('%d update(s)', $updates); $parts[] = pht('%s update(s)', new PhutilNumber($updates));
} }
if (count($parts) === 0) { if (count($parts) === 0) {

View file

@ -55,7 +55,7 @@ final class ReleephDiffSizeFieldSpecification
$mr_changes['tests']['lines'], $mr_changes['tests']['lines'],
count($mr_changes['tests']['paths'])); count($mr_changes['tests']['paths']));
foreach ($mr_changes['tests']['paths'] as $mr_test_path) { foreach ($mr_changes['tests']['paths'] as $mr_test_path) {
$test_blurb .= pht("%s\n", $mr_test_path); $test_blurb .= sprintf("%s\n", $mr_test_path);
} }
$test_tag = javelin_tag( $test_tag = javelin_tag(

View file

@ -182,7 +182,9 @@ final class ReleephBranchSearchEngine
$item->setStatusIcon('fa-code-fork orange'); $item->setStatusIcon('fa-code-fork orange');
$item->addIcon( $item->addIcon(
'fa-code-fork', 'fa-code-fork',
pht('%d Open Pull Request(s)', new PhutilNumber($open_count))); pht(
'%s Open Pull Request(s)',
new PhutilNumber($open_count)));
} }
$list->addItem($item); $list->addItem($item);

View file

@ -172,7 +172,7 @@ final class PhabricatorRepositoryPullLocalDaemon
pht( pht(
'Not enough process slots to schedule the other %s '. 'Not enough process slots to schedule the other %s '.
'repository(s) for updates yet.', 'repository(s) for updates yet.',
new PhutilNumber(count($queue)))); phutil_count($queue)));
} }
if ($futures) { if ($futures) {

View file

@ -91,7 +91,7 @@ final class PhabricatorRepositoryManagementParentsWorkflow
"%s\n", "%s\n",
pht( pht(
'Found %s total commit(s); updating...', 'Found %s total commit(s); updating...',
new PhutilNumber(count($graph)))); phutil_count($graph)));
$commit_table = id(new PhabricatorRepositoryCommit()); $commit_table = id(new PhabricatorRepositoryCommit());
$commit_table_name = $commit_table->getTableName(); $commit_table_name = $commit_table->getTableName();

View file

@ -260,11 +260,12 @@ final class PhabricatorRepositoryManagementReparseWorkflow
if ($all_from_repo && !$force_local) { if ($all_from_repo && !$force_local) {
$console->writeOut("%s\n", pht( $console->writeOut("%s\n", pht(
'**NOTE**: This script will queue tasks to reparse the data. Once the '. "**NOTE**: This script will queue tasks to reparse the data. Once the ".
'tasks have been queued, you need to run Taskmaster daemons to '. "tasks have been queued, you need to run Taskmaster daemons to ".
'execute them.'."\n\n". "execute them.\n\n%s",
"QUEUEING TASKS (%s Commits):", pht(
new PhutilNumber(count($commits)))); 'QUEUEING TASKS (%s Commit(s)):',
phutil_count($commits))));
} }
$progress = new PhutilConsoleProgressBar(); $progress = new PhutilConsoleProgressBar();

View file

@ -163,22 +163,22 @@ abstract class PhabricatorSubscriptionsHeraldAction
return pht( return pht(
'Declined to resubscribe %s target(s) because they previously '. 'Declined to resubscribe %s target(s) because they previously '.
'unsubscribed: %s.', 'unsubscribed: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_AUTOSUBSCRIBED: case self::DO_AUTOSUBSCRIBED:
return pht( return pht(
'%s automatically subscribed target(s) were not affected: %s.', '%s automatically subscribed target(s) were not affected: %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_SUBSCRIBED: case self::DO_SUBSCRIBED:
return pht( return pht(
'Added %s subscriber(s): %s.', 'Added %s subscriber(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
case self::DO_UNSUBSCRIBED: case self::DO_UNSUBSCRIBED:
return pht( return pht(
'Removed %s subscriber(s): %s.', 'Removed %s subscriber(s): %s.',
new PhutilNumber(count($data)), phutil_count($data),
$this->renderHandleList($data)); $this->renderHandleList($data));
} }
} }

View file

@ -119,7 +119,7 @@ EOBANNER;
$console->writeOut( $console->writeOut(
pht( pht(
'These %s object(s) will be destroyed forever:', 'These %s object(s) will be destroyed forever:',
new PhutilNumber(count($named_objects)))."\n\n"); phutil_count($named_objects))."\n\n");
foreach ($named_objects as $object_name => $object) { foreach ($named_objects as $object_name => $object) {
$phid = $object->getPHID(); $phid = $object->getPHID();
@ -136,7 +136,7 @@ EOBANNER;
$ok = $console->confirm( $ok = $console->confirm(
pht( pht(
'Are you absolutely certain you want to destroy these %s object(s)?', 'Are you absolutely certain you want to destroy these %s object(s)?',
new PhutilNumber(count($named_objects)))); phutil_count($named_objects)));
if (!$ok) { if (!$ok) {
throw new PhutilArgumentUsageException( throw new PhutilArgumentUsageException(
pht('Aborted, your objects are safe.')); pht('Aborted, your objects are safe.'));
@ -160,7 +160,7 @@ EOBANNER;
"%s\n", "%s\n",
pht( pht(
'Permanently destroyed %s object(s).', 'Permanently destroyed %s object(s).',
new PhutilNumber(count($named_objects)))); phutil_count($named_objects)));
return 0; return 0;
} }

View file

@ -32,16 +32,16 @@ final class PhabricatorApplicationTransactionNoEffectResponse
$only_empty_comment = (count($xactions) == 1) && $only_empty_comment = (count($xactions) == 1) &&
(head($xactions)->getTransactionType() == $type_comment); (head($xactions)->getTransactionType() == $type_comment);
$count = new PhutilNumber(count($xactions)); $count = phutil_count($xactions);
if ($ex->hasAnyEffect()) { if ($ex->hasAnyEffect()) {
$title = pht('%d Action(s) With No Effect', $count); $title = pht('%s Action(s) With No Effect', $count);
$head = pht('Some of your %d action(s) have no effect:', $count); $head = pht('Some of your %s action(s) have no effect:', $count);
$tail = pht('Apply remaining actions?'); $tail = pht('Apply remaining actions?');
$continue = pht('Apply Remaining Actions'); $continue = pht('Apply Remaining Actions');
} else if ($ex->hasComment()) { } else if ($ex->hasComment()) {
$title = pht('Post as Comment'); $title = pht('Post as Comment');
$head = pht('The %d action(s) you are taking have no effect:', $count); $head = pht('The %s action(s) you are taking have no effect:', $count);
$tail = pht('Do you want to post your comment anyway?'); $tail = pht('Do you want to post your comment anyway?');
$continue = pht('Post Comment'); $continue = pht('Post Comment');
} else if ($only_empty_comment) { } else if ($only_empty_comment) {
@ -52,8 +52,8 @@ final class PhabricatorApplicationTransactionNoEffectResponse
$tail = null; $tail = null;
$continue = null; $continue = null;
} else { } else {
$title = pht('%d Action(s) Have No Effect', $count); $title = pht('%s Action(s) Have No Effect', $count);
$head = pht('The %d action(s) you are taking have no effect:', $count); $head = pht('The %s action(s) you are taking have no effect:', $count);
$tail = null; $tail = null;
$continue = null; $continue = null;
} }

View file

@ -710,19 +710,19 @@ abstract class PhabricatorApplicationTransaction
return $type_obj->getTransactionEditString( return $type_obj->getTransactionEditString(
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
new PhutilNumber(count($add) + count($rem)), new PhutilNumber(count($add) + count($rem)),
new PhutilNumber(count($add)), phutil_count($add),
$this->renderHandleList($add), $this->renderHandleList($add),
new PhutilNumber(count($rem)), phutil_count($rem),
$this->renderHandleList($rem)); $this->renderHandleList($rem));
} else if ($add) { } else if ($add) {
return $type_obj->getTransactionAddString( return $type_obj->getTransactionAddString(
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
new PhutilNumber(count($add)), phutil_count($add),
$this->renderHandleList($add)); $this->renderHandleList($add));
} else if ($rem) { } else if ($rem) {
return $type_obj->getTransactionRemoveString( return $type_obj->getTransactionRemoveString(
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
new PhutilNumber(count($rem)), phutil_count($rem),
$this->renderHandleList($rem)); $this->renderHandleList($rem));
} else { } else {
return $type_obj->getTransactionPreviewString( return $type_obj->getTransactionPreviewString(
@ -871,21 +871,21 @@ abstract class PhabricatorApplicationTransaction
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
$this->renderHandleLink($object_phid), $this->renderHandleLink($object_phid),
new PhutilNumber(count($add) + count($rem)), new PhutilNumber(count($add) + count($rem)),
new PhutilNumber(count($add)), phutil_count($add),
$this->renderHandleList($add), $this->renderHandleList($add),
new PhutilNumber(count($rem)), phutil_count($rem),
$this->renderHandleList($rem)); $this->renderHandleList($rem));
} else if ($add) { } else if ($add) {
return $type_obj->getFeedAddString( return $type_obj->getFeedAddString(
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
$this->renderHandleLink($object_phid), $this->renderHandleLink($object_phid),
new PhutilNumber(count($add)), phutil_count($add),
$this->renderHandleList($add)); $this->renderHandleList($add));
} else if ($rem) { } else if ($rem) {
return $type_obj->getFeedRemoveString( return $type_obj->getFeedRemoveString(
$this->renderHandleLink($author_phid), $this->renderHandleLink($author_phid),
$this->renderHandleLink($object_phid), $this->renderHandleLink($object_phid),
new PhutilNumber(count($rem)), phutil_count($rem),
$this->renderHandleList($rem)); $this->renderHandleList($rem));
} else { } else {
return pht( return pht(

View file

@ -117,23 +117,23 @@ abstract class PhabricatorStandardCustomFieldPHIDs
'%s updated %s, added %d: %s.', '%s updated %s, added %d: %s.',
$xaction->renderHandleLink($author_phid), $xaction->renderHandleLink($author_phid),
$this->getFieldName(), $this->getFieldName(),
new PhutilNumber(count($add)), phutil_count($add),
$xaction->renderHandleList($add)); $xaction->renderHandleList($add));
} else if ($rem && !$add) { } else if ($rem && !$add) {
return pht( return pht(
'%s updated %s, removed %d: %s.', '%s updated %s, removed %s: %s.',
$xaction->renderHandleLink($author_phid), $xaction->renderHandleLink($author_phid),
$this->getFieldName(), $this->getFieldName(),
new PhutilNumber(count($rem)), phutil_count($rem),
$xaction->renderHandleList($rem)); $xaction->renderHandleList($rem));
} else { } else {
return pht( return pht(
'%s updated %s, added %d: %s; removed %d: %s.', '%s updated %s, added %s: %s; removed %s: %s.',
$xaction->renderHandleLink($author_phid), $xaction->renderHandleLink($author_phid),
$this->getFieldName(), $this->getFieldName(),
new PhutilNumber(count($add)), phutil_count($add),
$xaction->renderHandleList($add), $xaction->renderHandleList($add),
new PhutilNumber(count($rem)), phutil_count($rem),
$xaction->renderHandleList($rem)); $xaction->renderHandleList($rem));
} }
} }

View file

@ -37,7 +37,7 @@ final class PhabricatorInternationalizationManagementExtractWorkflow
$console->writeOut( $console->writeOut(
"%s\n", "%s\n",
pht('Found %s file(s)...', new PhutilNumber(count($futures)))); pht('Found %s file(s)...', phutil_count($futures)));
$results = array(); $results = array();

View file

@ -32,7 +32,7 @@ final class PhabricatorUSEnglishTranslation
'%d path(s)' => array('%d path', '%d paths'), '%d path(s)' => array('%d path', '%d paths'),
'%d diff(s)' => array('%d diff', '%d diffs'), '%d diff(s)' => array('%d diff', '%d diffs'),
'%d Answer(s)' => array('%d Answer', '%d Answers'), '%s Answer(s)' => array('%s Answer', '%s Answers'),
'Show %d Comment(s)' => array('Show %d Comment', 'Show %d Comments'), 'Show %d Comment(s)' => array('Show %d Comment', 'Show %d Comments'),
'%s DIFF LINK(S)' => array('DIFF LINK', 'DIFF LINKS'), '%s DIFF LINK(S)' => array('DIFF LINK', 'DIFF LINKS'),
@ -114,17 +114,17 @@ final class PhabricatorUSEnglishTranslation
'This is a binary file. It is %s bytes in length.', 'This is a binary file. It is %s bytes in length.',
), ),
'%d Action(s) Have No Effect' => array( '%s Action(s) Have No Effect' => array(
'Action Has No Effect', 'Action Has No Effect',
'Actions Have No Effect', 'Actions Have No Effect',
), ),
'%d Action(s) With No Effect' => array( '%s Action(s) With No Effect' => array(
'Action With No Effect', 'Action With No Effect',
'Actions With No Effect', 'Actions With No Effect',
), ),
'Some of your %d action(s) have no effect:' => array( 'Some of your %s action(s) have no effect:' => array(
'One of your actions has no effect:', 'One of your actions has no effect:',
'Some of your actions have no effect:', 'Some of your actions have no effect:',
), ),
@ -139,7 +139,7 @@ final class PhabricatorUSEnglishTranslation
'Apply Remaining Actions', 'Apply Remaining Actions',
), ),
'The %d action(s) you are taking have no effect:' => array( 'The %s action(s) you are taking have no effect:' => array(
'The action you are taking has no effect:', 'The action you are taking has no effect:',
'The actions you are taking have no effect:', 'The actions you are taking have no effect:',
), ),
@ -550,9 +550,9 @@ final class PhabricatorUSEnglishTranslation
), ),
), ),
'%d comment(s)' => array('%d comment', '%d comments'), '%s comment(s)' => array('%s comment', '%s comments'),
'%d rejection(s)' => array('%d rejection', '%d rejections'), '%s rejection(s)' => array('%s rejection', '%s rejections'),
'%d update(s)' => array('%d update', '%d updates'), '%s update(s)' => array('%s update', '%s updates'),
'This configuration value is defined in these %d '. 'This configuration value is defined in these %d '.
'configuration source(s): %s.' => array( 'configuration source(s): %s.' => array(
@ -562,9 +562,9 @@ final class PhabricatorUSEnglishTranslation
'configuration sources: %s.', 'configuration sources: %s.',
), ),
'%d Open Pull Request(s)' => array( '%s Open Pull Request(s)' => array(
'%d Open Pull Request', '%s Open Pull Request',
'%d Open Pull Requests', '%s Open Pull Requests',
), ),
'Stale (%s day(s))' => array( 'Stale (%s day(s))' => array(
@ -1153,6 +1153,10 @@ final class PhabricatorUSEnglishTranslation
'Found %s book.', 'Found %s book.',
'Found %s books.', 'Found %s books.',
), ),
'Found %s file(s)...' => array(
'Found %s file...',
'Found %s files...',
),
'Found %s file(s) in project.' => array( 'Found %s file(s) in project.' => array(
'Found %s file in project.', 'Found %s file in project.',
'Found %s files in project.', 'Found %s files in project.',
@ -1392,6 +1396,10 @@ final class PhabricatorUSEnglishTranslation
'%s Day', '%s Day',
'%s Days', '%s Days',
), ),
'%s Day(s) Ago' => array(
'%s Day Ago',
'%s Days Ago',
),
'Setting retention policy for "%s" to %s day(s).' => array( 'Setting retention policy for "%s" to %s day(s).' => array(
'Setting retention policy for "%s" to one day.', 'Setting retention policy for "%s" to one day.',
@ -1425,6 +1433,59 @@ final class PhabricatorUSEnglishTranslation
'WARNING: There are unapproved authorizations!', 'WARNING: There are unapproved authorizations!',
), ),
'Found %s Open Resource(s)' => array(
'Found %s Open Resource',
'Found %s Open Resources',
),
'%s Open Resource(s) Remain' => array(
'%s Open Resource Remain',
'%s Open Resources Remain',
),
'Found %s Blueprint(s)' => array(
'Found %s Blueprint',
'Found %s Blueprints',
),
'%s Blueprint(s) Can Allocate' => array(
'%s Blueprint Can Allocate',
'%s Blueprints Can Allocate',
),
'%s Blueprint(s) Enabled' => array(
'%s Blueprint Enabled',
'%s Blueprints Enabled',
),
'%s Event(s)' => array(
'%s Event',
'%s Events',
),
'%s Unit(s)' => array(
'%s Unit',
'%s Units',
),
'QUEUEING TASKS (%s Commit(s)):' => array(
'QUEUEING TASKS (%s Commit):',
'QUEUEING TASKS (%s Commits):',
),
'Found %s total commit(s); updating...' => array(
'Found %s total commit; updating...',
'Found %s total commits; updating...',
),
'Not enough process slots to schedule the other %s '.
'repository(s) for updates yet.' => array(
'Not enough process slots to schedule the other '.'
repository for update yet.',
'Not enough process slots to schedule the other %s '.
'repositories for updates yet.',
),
); );
} }

View file

@ -126,7 +126,7 @@ abstract class PhabricatorStorageManagementWorkflow
"documentation.\n\n". "documentation.\n\n".
"MySQL needs to copy table data to make some adjustments, so these ". "MySQL needs to copy table data to make some adjustments, so these ".
"migrations may take some time.", "migrations may take some time.",
new PhutilNumber(count($adjustments)))); phutil_count($adjustments)));
$prompt = pht('Fix these schema issues?'); $prompt = pht('Fix these schema issues?');
if (!phutil_console_confirm($prompt, $default_no = true)) { if (!phutil_console_confirm($prompt, $default_no = true)) {

View file

@ -128,7 +128,7 @@ final class PHUIHeaderView extends AphrontTagView {
} else if ($age == 1) { } else if ($age == 1) {
$when = pht('Yesterday'); $when = pht('Yesterday');
} else { } else {
$when = pht('%d Days Ago', $age); $when = pht('%s Day(s) Ago', new PhutilNumber($age));
} }
$this->setStatus('fa-clock-o bluegrey', null, pht('Updated %s', $when)); $this->setStatus('fa-clock-o bluegrey', null, pht('Updated %s', $when));