diff --git a/scripts/arcanist.php b/scripts/arcanist.php
--- a/scripts/arcanist.php
+++ b/scripts/arcanist.php
@@ -15,7 +15,7 @@
     array(
       'name'    => 'load-phutil-library',
       'param'   => 'path',
-      'help'    => 'Load a libphutil library.',
+      'help'    => pht('Load a libphutil library.'),
       'repeat'  => true,
     ),
     array(
@@ -28,25 +28,26 @@
     array(
       'name'    => 'conduit-uri',
       'param'   => 'uri',
-      'help'    => 'Connect to Phabricator install specified by __uri__.',
+      'help'    => pht('Connect to Phabricator install specified by __uri__.'),
     ),
     array(
       'name'    => 'conduit-version',
       'param'   => 'version',
-      'help'    => '(Developers) Mock client version in protocol handshake.',
+      'help'    => pht(
+        '(Developers) Mock client version in protocol handshake.'),
     ),
     array(
       'name'    => 'conduit-timeout',
       'param'   => 'timeout',
-      'help'    => 'Set Conduit timeout (in seconds).',
+      'help'    => pht('Set Conduit timeout (in seconds).'),
     ),
     array(
       'name'   => 'config',
       'param'  => 'key=value',
       'repeat' => true,
-      'help'   =>
+      'help'   => pht(
         'Specify a runtime configuration value. This will take precedence '.
-        'over static values, and only affect the current arcanist invocation.',
+        'over static values, and only affect the current arcanist invocation.'),
     ),
 ));
 
@@ -69,17 +70,24 @@
 try {
 
   $console->writeLog(
-    "libphutil loaded from '%s'.\n",
-    phutil_get_library_root('phutil'));
+    "%s\n",
+    pht(
+      "libphutil loaded from '%s'.",
+      phutil_get_library_root('phutil')));
   $console->writeLog(
-    "arcanist loaded from '%s'.\n",
-    phutil_get_library_root('arcanist'));
+    "%s\n",
+    pht(
+      "arcanist loaded from '%s'.",
+      phutil_get_library_root('arcanist')));
 
   if (!$args) {
     if ($help) {
       $args = array('help');
     } else {
-      throw new ArcanistUsageException("No command provided. Try 'arc help'.");
+      throw new ArcanistUsageException(
+        pht(
+          'No command provided. Try `%s`.',
+          'arc help'));
     }
   } else if ($help) {
     array_unshift($args, 'help');
@@ -116,14 +124,17 @@
   // specific libraries to load regardless of the state of the world.
   if ($load) {
     $console->writeLog(
-      "Using '--load-phutil-library' flag, configuration will be ignored ".
-      "and configured libraries will not be loaded."."\n");
+      "%s\n",
+      pht(
+        'Using `%s` flag, configuration will be ignored and configured '.
+        'libraries will not be loaded.',
+        '--load-phutil-library'));
     // Load the flag libraries. These must load, since the user specified them
     // explicitly.
     arcanist_load_libraries(
       $load,
       $must_load = true,
-      $lib_source = 'a "--load-phutil-library" flag',
+      $lib_source = pht('a "%s" flag', '--load-phutil-library'),
       $working_copy);
   } else {
     // Load libraries in system 'load' config. In contrast to global config, we
@@ -132,7 +143,7 @@
     arcanist_load_libraries(
       idx($system_config, 'load', array()),
       $must_load = true,
-      $lib_source = 'the "load" setting in system config',
+      $lib_source = pht('the "%s" setting in system config', 'load'),
       $working_copy);
 
     // Load libraries in global 'load' config, as per "arc set-config load". We
@@ -141,21 +152,21 @@
     arcanist_load_libraries(
       idx($global_config, 'load', array()),
       $must_load = false,
-      $lib_source = 'the "load" setting in global config',
+      $lib_source = pht('the "%s" setting in global config', 'load'),
       $working_copy);
 
     // Load libraries in ".arcconfig". Libraries here must load.
     arcanist_load_libraries(
       $working_copy->getProjectConfig('load'),
       $must_load = true,
-      $lib_source = 'the "load" setting in ".arcconfig"',
+      $lib_source = pht('the "%s" setting in "%s"', 'load', '.arcconfig'),
       $working_copy);
 
     // Load libraries in ".arcconfig". Libraries here must load.
     arcanist_load_libraries(
       idx($runtime_config, 'load', array()),
       $must_load = true,
-      $lib_source = 'the --config "load=[...]" argument',
+      $lib_source = pht('the %s argument', '--config "load=[...]"'),
       $working_copy);
 
   }
@@ -211,8 +222,9 @@
   if ($need_working_copy || $want_working_copy) {
     if ($need_working_copy && !$working_copy->getVCSType()) {
       throw new ArcanistUsageException(
-        'This command must be run in a Git, Mercurial or Subversion working '.
-        'copy.');
+        pht(
+          'This command must be run in a Git, Mercurial or Subversion working '.
+          'copy.'));
     }
     $configuration_manager->setWorkingCopyIdentity($working_copy);
   }
@@ -223,8 +235,7 @@
     $conduit_uri = $configuration_manager->getConfigFromAnySource(
       'phabricator.uri');
     if ($conduit_uri === null) {
-      $conduit_uri = $configuration_manager->getConfigFromAnySource(
-        'default');
+      $conduit_uri = $configuration_manager->getConfigFromAnySource('default');
     }
   }
 
@@ -258,12 +269,21 @@
     if (!$conduit_uri) {
 
       $message = phutil_console_format(
-        "This command requires arc to connect to a Phabricator install, but ".
-        "no Phabricator installation is configured. To configure a ".
-        "Phabricator URI:\n\n".
-        "  - set a default location with `arc set-config default <uri>`; or\n".
-        "  - specify '--conduit-uri=uri' explicitly; or\n".
-        "  - run 'arc' in a working copy with an '.arcconfig'.\n");
+        "%s\n\n  - %s\n  - %s\n  - %s\n",
+        pht(
+          'This command requires arc to connect to a Phabricator install, '.
+          'but no Phabricator installation is configured. To configure a '.
+          'Phabricator URI:'),
+        pht(
+          'set a default location with `%s`; or',
+          'arc set-config default <uri>'),
+        pht(
+          'specify `%s` explicitly; or',
+          '--conduit-uri=uri'),
+        pht(
+          "run `%s` in a working copy with an '%s'.",
+          'arc',
+          '.arcconfig'));
 
       $message = phutil_console_wrap($message);
       throw new ArcanistUsageException($message);
@@ -293,11 +313,13 @@
 
       throw new ArcanistUsageException(
         phutil_console_format(
-          "YOU NEED TO __INSTALL A CERTIFICATE__ TO LOGIN TO PHABRICATOR\n\n".
-          "You are trying to connect to '{$conduit_uri}' but do not have ".
-          "a certificate installed for this host. Run:\n\n".
-          "      $ **{$arc} install-certificate**\n\n".
-          "...to install one."));
+          "%s\n\n%s\n\n      $ **{$arc} install-certificate**\n\n%s",
+          pht('YOU NEED TO __INSTALL A CERTIFICATE__ TO LOGIN TO PHABRICATOR'),
+          pht(
+            "You are trying to connect to '%s' but do not have a ".
+            "certificate installed for this host. Run:",
+            $conduit_uri),
+          pht('...to install one.')));
     }
     $workflow->authenticateConduit();
   }
@@ -314,8 +336,10 @@
   if ($listeners) {
     foreach ($listeners as $listener) {
       $console->writeLog(
-        "Registering event listener '%s'.\n",
-        $listener);
+        "%s\n",
+        pht(
+          "Registering event listener '%s'.",
+          $listener));
       try {
         id(new $listener())->register();
       } catch (PhutilMissingSymbolException $ex) {
@@ -325,9 +349,11 @@
         // it might not have been triggered by the listener itself (for example,
         // the listener might use a bad class in its register() method).
         $console->writeErr(
-          "ERROR: Failed to load event listener '%s': %s\n",
-          $listener,
-          $ex->getMessage());
+          "%s\n",
+          pht(
+            "ERROR: Failed to load event listener '%s': %s",
+            $listener,
+            $ex->getMessage()));
       }
     }
   }
@@ -351,7 +377,8 @@
   $is_usage = ($ex instanceof ArcanistUsageException);
   if ($is_usage) {
     echo phutil_console_format(
-      "**Usage Exception:** %s\n",
+      "**%s** %s\n",
+      pht('Usage Exception:'),
       $ex->getMessage());
   }
 
@@ -365,7 +392,7 @@
   }
 
   if (!$is_usage) {
-    echo phutil_console_format("**Exception**\n");
+    echo phutil_console_format("**%s**\n", pht('Exception'));
 
     while ($ex) {
       echo $ex->getMessage()."\n";
@@ -377,9 +404,12 @@
       }
     }
 
-    echo "(Run with --trace for a full exception trace.)\n";
+    echo phutil_console_format(
+      "(%s)\n",
+      pht(
+        'Run with `%s` for a full exception trace.',
+        '--trace'));
   }
-
   exit(1);
 }
 
@@ -481,9 +511,10 @@
 }
 
 function die_with_bad_php($message) {
-  echo "\nPHP CONFIGURATION ERRORS\n\n";
-  echo $message;
-  echo "\n\n";
+  echo phutil_console_format(
+    "\n%s\n\n%s\n\n",
+    pht('PHP CONFIGURATION ERRORS'),
+    $message);
   exit(1);
 }
 
@@ -499,10 +530,12 @@
   }
 
   if (!is_array($load)) {
-    $error = "Libraries specified by {$lib_source} are invalid; expected ".
-             "a list. Check your configuration.";
+    $error = pht(
+      'Libraries specified by %s are invalid; expected a list. '.
+      'Check your configuration.',
+      $lib_source);
     $console = PhutilConsole::getConsole();
-    $console->writeErr("WARNING: %s\n", $error);
+    $console->writeErr("%s: %s\n", pht('WARNING'), $error);
     return;
   }
 
@@ -549,33 +582,42 @@
 
     $console = PhutilConsole::getConsole();
     $console->writeLog(
-      "Loading phutil library from '%s'...\n",
-      $location);
+      "%s\n",
+      pht(
+        "Loading phutil library from '%s'...",
+        $location));
 
     $error = null;
     try {
       phutil_load_library($location);
     } catch (PhutilBootloaderException $ex) {
-      $error = "Failed to load phutil library at location '{$location}'. ".
-               "This library is specified by {$lib_source}. Check that the ".
-               "setting is correct and the library is located in the right ".
-               "place.";
+      $error = pht(
+        "Failed to load phutil library at location '%s'. This library ".
+        "is specified by %s. Check that the setting is correct and the ".
+        "library is located in the right place.",
+        $location,
+        $lib_source);
       if ($must_load) {
         throw new ArcanistUsageException($error);
       } else {
-        fwrite(STDERR, phutil_console_wrap('WARNING: '.$error."\n\n"));
+        fwrite(STDERR, phutil_console_wrap(
+          "%s: %s\n\n",
+          pht('WARNING'),
+          $error));
       }
     } catch (PhutilLibraryConflictException $ex) {
       if ($ex->getLibrary() != 'arcanist') {
         throw $ex;
       }
       $arc_dir = dirname(dirname(__FILE__));
-      $error =
+      $error = pht(
         "You are trying to run one copy of Arcanist on another copy of ".
         "Arcanist. This operation is not supported. To execute Arcanist ".
-        "operations against this working copy, run './bin/arc' (from the ".
-        "current working copy) not some other copy of 'arc' (you ran one ".
-        "from '{$arc_dir}').";
+        "operations against this working copy, run `%s` (from the current ".
+        "working copy) not some other copy of '%s' (you ran one from '%s').",
+        './bin/arc',
+        'arc',
+        $arc_dir);
       throw new ArcanistUsageException($error);
     }
   }
@@ -626,12 +668,14 @@
 
   if ($project_id == 'libphutil') {
     $console->writeLog(
-      "This is libphutil! Forcing this copy to load...\n");
+      "%s\n",
+      pht('This is libphutil! Forcing this copy to load...'));
     $original_argv[0] = dirname(phutil_get_library_root('arcanist')).'/bin/arc';
     $libphutil_path = $project_root;
   } else {
     $console->writeLog(
-      "This is arcanist! Forcing this copy to run...\n");
+      "%s\n",
+      pht('This is arcanist! Forcing this copy to run...'));
     $original_argv[0] = $project_root.'/bin/arc';
     $libphutil_path = dirname(phutil_get_library_root('phutil'));
   }
diff --git a/scripts/hgdaemon/hgdaemon_client.php b/scripts/hgdaemon/hgdaemon_client.php
--- a/scripts/hgdaemon/hgdaemon_client.php
+++ b/scripts/hgdaemon/hgdaemon_client.php
@@ -9,10 +9,10 @@
   array(
     array(
       'name'      => 'skip-hello',
-      'help'      => 'Do not expect "capability" message when connecting. '.
-                     'The server must be configured not to send the message. '.
-                     'This deviates from the Mercurial protocol, but slightly '.
-                     'improves performance.',
+      'help'      => pht(
+        'Do not expect "capability" message when connecting. The server '.
+        'must be configured not to send the message. This deviates from '.
+        'the Mercurial protocol, but slightly improves performance.'),
     ),
     array(
       'name'      => 'repository',
@@ -22,7 +22,7 @@
 
 $repo = $args->getArg('repository');
 if (count($repo) !== 1) {
-  throw new Exception('Specify exactly one working copy!');
+  throw new Exception(pht('Specify exactly one working copy!'));
 }
 $repo = head($repo);
 
@@ -34,7 +34,12 @@
 $result = $client->executeCommand(
   array('log', '--template', '{node}', '--rev', 2));
 
-$t_end   = microtime(true);
+$t_end = microtime(true);
 var_dump($result);
 
-echo "\nExecuted in ".((int)(1000000 * ($t_end - $t_start)))."us.\n";
+$console = PhutilConsole::getConsole();
+$console->writeOut(
+  "\n%s\n",
+  pht(
+    'Executed in %d us.',
+    ((int)(1000000 * ($t_end - $t_start)))));
diff --git a/scripts/hgdaemon/hgdaemon_server.php b/scripts/hgdaemon/hgdaemon_server.php
--- a/scripts/hgdaemon/hgdaemon_server.php
+++ b/scripts/hgdaemon/hgdaemon_server.php
@@ -9,28 +9,28 @@
   array(
     array(
       'name'      => 'quiet',
-      'help'      => 'Do not print status messages to stdout.',
+      'help'      => pht('Do not print status messages to stdout.'),
     ),
     array(
       'name'      => 'skip-hello',
-      'help'      => 'Do not send "capability" message when clients connect. '.
-                     'Clients must be configured not to expect the message. '.
-                     'This deviates from the Mercurial protocol, but slightly '.
-                     'improves performance.',
+      'help'      => pht(
+        'Do not send "capability" message when clients connect. Clients '.
+        'must be configured not to expect the message. This deviates '.
+        'from the Mercurial protocol, but slightly improves performance.'),
     ),
     array(
       'name'      => 'do-not-daemonize',
-      'help'      => 'Remain in the foreground instead of daemonizing.',
+      'help'      => pht('Remain in the foreground instead of daemonizing.'),
     ),
     array(
       'name'      => 'client-limit',
       'param'     => 'limit',
-      'help'      => 'Exit after serving __limit__ clients.',
+      'help'      => pht('Exit after serving __limit__ clients.'),
     ),
     array(
       'name'      => 'idle-limit',
       'param'     => 'seconds',
-      'help'      => 'Exit after __seconds__ spent idle.',
+      'help'      => pht('Exit after __seconds__ spent idle.'),
     ),
     array(
       'name'      => 'repository',
@@ -40,7 +40,7 @@
 
 $repo = $args->getArg('repository');
 if (count($repo) !== 1) {
-  throw new Exception('Specify exactly one working copy!');
+  throw new Exception(pht('Specify exactly one working copy!'));
 }
 $repo = head($repo);