Index: subversion/svnadmin/main.c
===================================================================
--- subversion/svnadmin/main.c	(revision 9287)
+++ subversion/svnadmin/main.c	(working copy)
@@ -31,6 +31,7 @@
 #include "svn_repos.h"
 #include "svn_fs.h"
 
+#include "svn_private_config.h"
 
 
 /*** Code. ***/
@@ -51,7 +52,7 @@ static svn_error_t *
 check_cancel (void *baton)
 {
   if (cancelled)
-    return svn_error_create (SVN_ERR_CANCELLED, NULL, "Caught signal");
+    return svn_error_create (SVN_ERR_CANCELLED, NULL, _("Caught signal"));
   else
     return SVN_NO_ERROR;
 }
@@ -67,7 +68,7 @@ create_stdio_stream (svn_stream_t **stre
   apr_status_t apr_err = open_fn (&stdio_file, pool);  
 
   if (apr_err)
-    return svn_error_wrap_apr (apr_err, "Can't open stdio file");
+    return svn_error_wrap_apr (apr_err, _("Can't open stdio file"));
   
   *stream = svn_stream_from_aprfile (stdio_file, pool);
   return SVN_NO_ERROR;   
@@ -95,12 +96,12 @@ parse_local_repos_path (apr_getopt_t *os
   if (*repos_path == NULL)
     {
       return svn_error_create (SVN_ERR_CL_ARG_PARSING_ERROR, NULL, 
-                               "Repository argument required");
+                               _("Repository argument required"));
     }
   else if (svn_path_is_url (*repos_path))
     {
       return svn_error_createf (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                                "'%s' is an url when it should be a path",
+                                _("'%s' is an url when it should be a path"),
                                 *repos_path);
     }
 
@@ -175,49 +176,49 @@ enum 
 static const apr_getopt_option_t options_table[] =
   {
     {"help",          'h', 0,
-     "show help on a subcommand"},
+     N_("show help on a subcommand")},
 
     {NULL,            '?', 0,
-     "show help on a subcommand"},
+     N_("show help on a subcommand")},
 
     {"version",       svnadmin__version, 0,
-     "show version information"},
+     N_("show version information")},
 
     {"revision",      'r', 1,
-     "specify revision number ARG (or X:Y range)"},
+     N_("specify revision number ARG (or X:Y range)")},
 
     {"incremental",   svnadmin__incremental, 0,
-     "dump incrementally"},
+     N_("dump incrementally")},
 
     {"deltas",        svnadmin__deltas, 0,
-     "use deltas in dump output"},
+     N_("use deltas in dump output")},
 
     {"bypass-hooks",  svnadmin__bypass_hooks, 0,
-     "bypass the repository hook system"},
+     N_("bypass the repository hook system")},
 
     {"quiet",           'q', 0,
-     "no progress (only errors) to stderr"},
+     N_("no progress (only errors) to stderr")},
 
     {"ignore-uuid", svnadmin__ignore_uuid, 0,
-     "ignore any repos UUID found in the stream"},
+     N_("ignore any repos UUID found in the stream")},
 
     {"force-uuid", svnadmin__force_uuid, 0,
-     "set repos UUID to that found in stream, if any"},
+     N_("set repos UUID to that found in stream, if any")},
 
     {"parent-dir", svnadmin__parent_dir, 1,
-     "load at specified directory in repository"},
+     N_("load at specified directory in repository")},
 
     {"bdb-txn-nosync", svnadmin__bdb_txn_nosync, 0,
-     "disable fsync at transaction commit [Berkeley DB]"},
+     N_("disable fsync at transaction commit [Berkeley DB]")},
 
     {"bdb-log-keep", svnadmin__bdb_log_keep, 0,
-     "disable automatic log file removal [Berkeley DB]"},
+     N_("disable automatic log file removal [Berkeley DB]")},
 
     {"config-dir", svnadmin__config_dir, 1,
-     "read user configuration files from directory ARG"},
+     N_("read user configuration files from directory ARG")},
 
     {"clean-logs", svnadmin__clean_logs, 0,
-     "remove redundant log files from source repository."},
+     N_("remove redundant log files from source repository.")},
 
     {NULL}
   };
@@ -229,82 +230,82 @@ static const apr_getopt_option_t options
 static const svn_opt_subcommand_desc_t cmd_table[] =
   {
     {"create", subcommand_create, {0},
-     "usage: svnadmin create REPOS_PATH\n\n"
-     "Create a new, empty repository at REPOS_PATH.\n",
+     N_("usage: svnadmin create REPOS_PATH\n\n"
+     "Create a new, empty repository at REPOS_PATH.\n"),
      {svnadmin__bdb_txn_nosync, svnadmin__bdb_log_keep,
       svnadmin__config_dir} },
 
     {"deltify", subcommand_deltify, {0},
-     "usage: svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH\n\n"
+     N_("usage: svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH\n\n"
      "Run over the requested revision range, performing predecessor deltifi-\n"
      "cation on the paths changed in those revisions.  Deltification in\n"
      "essence compresses the repository by only storing the differences or\n"
      "delta from the preceding revision.  If no revisions are specified,\n"
-     "this will simply deltify the HEAD revision.\n",
+     "this will simply deltify the HEAD revision.\n"),
      {'r', 'q'} },
 
     {"dump", subcommand_dump, {0},
-     "usage: svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]\n\n"
+     N_("usage: svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]\n\n"
      "Dump the contents of filesystem to stdout in a 'dumpfile'\n"
      "portable format, sending feedback to stderr.  Dump revisions\n"
      "LOWER rev through UPPER rev.  If no revisions are given, dump all\n"
      "revision trees.  If only LOWER is given, dump that one revision tree.\n"
      "If --incremental is passed, then the first revision dumped will be\n"
-     "a diff against the previous revision, instead of the usual fulltext.\n",
+     "a diff against the previous revision, instead of the usual fulltext.\n"),
      {'r', svnadmin__incremental, svnadmin__deltas, 'q'} },
 
     {"help", subcommand_help, {"?", "h"},
-     "usage: svnadmin help [SUBCOMMAND...]\n\n"
-     "Describe the usage of this program or its subcommands.\n",
+     N_("usage: svnadmin help [SUBCOMMAND...]\n\n"
+     "Describe the usage of this program or its subcommands.\n"),
      {svnadmin__version} },
 
     {"hotcopy", subcommand_hotcopy, {0},
-     "usage: svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH\n\n"
-     "Makes a hot copy of a repository.\n",
+     N_("usage: svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH\n\n"
+     "Makes a hot copy of a repository.\n"),
      {svnadmin__clean_logs} },
 
     {"list-dblogs", subcommand_list_dblogs, {0},
-     "usage: svnadmin list-dblogs REPOS_PATH\n\n"
+     N_("usage: svnadmin list-dblogs REPOS_PATH\n\n"
      "List all Berkeley DB log files.\n\n"
      "WARNING: Modifying or deleting logfiles which are still in use\n"
-     "will cause your repository to be corrupted.\n",
+     "will cause your repository to be corrupted.\n"),
      {0} },
 
     {"list-unused-dblogs", subcommand_list_unused_dblogs, {0},
-     "usage: svnadmin list-unused-dblogs REPOS_PATH\n\n"
-     "List unused Berkeley DB log files.\n\n",
+     N_("usage: svnadmin list-unused-dblogs REPOS_PATH\n\n"
+     "List unused Berkeley DB log files.\n\n"),
      {0} },
 
     {"load", subcommand_load, {0},
-     "usage: svnadmin load REPOS_PATH\n\n"
+     N_("usage: svnadmin load REPOS_PATH\n\n"
      "Read a 'dumpfile'-formatted stream from stdin, committing\n"
      "new revisions into the repository's filesystem.  If the repository\n"
      "was previously empty, its UUID will, by default, be changed to the\n"
-     "one specified in the stream.  Progress feedback is sent to stdout.\n",
+     "one specified in the stream.  Progress feedback is sent to stdout.\n"),
      {'q', svnadmin__ignore_uuid, svnadmin__force_uuid, 
       svnadmin__parent_dir} },
 
     {"lstxns", subcommand_lstxns, {0},
-     "usage: svnadmin lstxns REPOS_PATH\n\n"
-     "Print the names of all uncommitted transactions.\n",
+     N_("usage: svnadmin lstxns REPOS_PATH\n\n"
+     "Print the names of all uncommitted transactions.\n"),
      {0} },
 
     {"recover", subcommand_recover, {0},
-     "usage: svnadmin recover REPOS_PATH\n\n"
+     N_("usage: svnadmin recover REPOS_PATH\n\n"
      "Run the Berkeley DB recovery procedure on a repository.  Do\n"
      "this if you've been getting errors indicating that recovery\n"
      "ought to be run.\n\n"
      "WARNING: only run this when you are SURE you're the only process\n"
-     "accessing the repository.  Requires exclusive access.\n\n",
+     "accessing the repository.  Requires exclusive access.\n\n"),
      {0} },
 
     {"rmtxns", subcommand_rmtxns, {0},
-     "usage: svnadmin rmtxns REPOS_PATH TXN_NAME...\n\n"
-     "Delete the named transaction(s).\n",
+     N_("usage: svnadmin rmtxns REPOS_PATH TXN_NAME...\n\n"
+     "Delete the named transaction(s).\n"),
      {'q'} },
 
     {"setlog", subcommand_setlog, {0},
-     "usage: svnadmin setlog REPOS_PATH -r REVISION FILE\n\n"
+     N_("usage: svnadmin setlog REPOS_PATH -r REVISION FILE\n\n"
      "Set the log-message on revision REVISION to the contents of FILE.  Use\n"
      "--bypass-hooks to avoid triggering the revision-property-related hooks\n"
      "(for example, if you do not want an email notification sent\n"
@@ -312,12 +313,12 @@ static const svn_opt_subcommand_desc_t c
      "revision properties has not been enabled in the pre-revprop-change\n"
      "hook).\n\n"
      "NOTE: revision properties are not historied, so this command\n"
-     "will permanently overwrite the previous log message.\n",
+     "will permanently overwrite the previous log message.\n"),
      {'r', svnadmin__bypass_hooks} },
 
     {"verify", subcommand_verify, {0},
-     "usage: svnadmin verify REPOS_PATH\n\n"
-     "Verifies the data stored in the repository.\n",
+     N_("usage: svnadmin verify REPOS_PATH\n\n"
+     "Verifies the data stored in the repository.\n"),
      {0} },
 
     { NULL, NULL, {0}, NULL, {0} }
@@ -412,7 +413,7 @@ subcommand_deltify (apr_getopt_t *os, vo
   if (start > end)
     return svn_error_create
       (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-       "First revision cannot be higher than second");
+       _("First revision cannot be higher than second"));
   if ((start > youngest) || (end > youngest))
     return svn_error_createf
       (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
@@ -429,7 +430,7 @@ subcommand_deltify (apr_getopt_t *os, vo
         printf ("Deltifying revision %" SVN_REVNUM_T_FMT "...", revision);
       SVN_ERR (svn_fs_deltify_revision (fs, revision, subpool));
       if (! opt_state->quiet)
-        printf ("done.\n");
+        printf (_("done.\n"));
     }
   svn_pool_destroy (subpool);
 
@@ -480,7 +481,7 @@ subcommand_dump (apr_getopt_t *os, void 
   if (lower > upper)
     return svn_error_create
       (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-       "First revision cannot be higher than second");
+       _("First revision cannot be higher than second"));
   if ((lower > youngest) || (upper > youngest))
     return svn_error_createf
       (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
@@ -512,10 +513,10 @@ subcommand_help (apr_getopt_t *os, void 
 {
   struct svnadmin_opt_state *opt_state = baton;
   const char *header =
-    "general usage: svnadmin SUBCOMMAND REPOS_PATH  [ARGS & OPTIONS ...]\n"
+    _("general usage: svnadmin SUBCOMMAND REPOS_PATH  [ARGS & OPTIONS ...]\n"
     "Type \"svnadmin help <subcommand>\" for help on a specific subcommand.\n"
     "\n"
-    "Available subcommands:\n";
+    "Available subcommands:\n");
 
   SVN_ERR (svn_opt_print_help (os, "svnadmin", 
                                opt_state ? opt_state->version : FALSE,
@@ -586,12 +587,12 @@ subcommand_recover (apr_getopt_t *os, vo
   svn_repos_t *repos;
   struct svnadmin_opt_state *opt_state = baton;
 
-  printf ("Please wait; recovering the repository may take some time...\n");
+  printf (_("Please wait; recovering the repository may take some time...\n"));
   fflush (stdout);
 
   SVN_ERR (svn_repos_recover (opt_state->repository_path, pool));
 
-  printf ("\nRecovery completed.\n");
+  printf (_("\nRecovery completed.\n"));
 
   /* Since db transactions may have been replayed, it's nice to tell
      people what the latest revision is.  It also proves that the
@@ -705,7 +706,7 @@ subcommand_rmtxns (apr_getopt_t *os, voi
         }
       else if (! opt_state->quiet)
         {
-          printf ("Transaction '%s' removed.\n", txn_name);
+          printf (_("Transaction '%s' removed.\n"), txn_name);
         }
 
       svn_pool_clear (subpool);
@@ -728,16 +729,16 @@ subcommand_setlog (apr_getopt_t *os, voi
 
   if (opt_state->start_revision.kind != svn_opt_revision_number)
     return svn_error_createf (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                              "Missing revision");
+                              _("Missing revision"));
   else if (opt_state->end_revision.kind != svn_opt_revision_unspecified)
     return svn_error_createf (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                              "Only one revision allowed");
+                              _("Only one revision allowed"));
     
   SVN_ERR (svn_opt_parse_all_args (&args, os, pool));
 
   if (args->nelts != 1)
     return svn_error_createf (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                              "Exactly one file argument required");
+                              _("Exactly one file argument required"));
   
   SVN_ERR (svn_utf_cstring_to_utf8 (&filename_utf8,
                                     APR_ARRAY_IDX (args, 0, const char *),
@@ -885,8 +886,8 @@ main (int argc, const char * const *argv
             {
               err = svn_error_create
                 (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                 "Multiple revision arguments encountered; "
-                 "try '-r M:N' instead of '-r M -r N'");
+                 _("Multiple revision arguments encountered; "
+                 "try '-r M:N' instead of '-r M -r N'"));
               svn_handle_error (err, stderr, FALSE);
               svn_error_clear (err);
               svn_pool_destroy (pool);
@@ -902,7 +903,7 @@ main (int argc, const char * const *argv
               if (! err)
                 err = svn_error_createf
                   (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                   "Syntax error in revision argument '%s'",
+                   _("Syntax error in revision argument '%s'"),
                    utf8_opt_arg);
               svn_handle_error (err, stderr, FALSE);
               svn_error_clear (err);
@@ -985,7 +986,7 @@ main (int argc, const char * const *argv
     {
       if (os->ind >= os->argc)
         {
-          fprintf (stderr, "subcommand argument required\n");
+          fprintf (stderr, _("subcommand argument required\n"));
           subcommand_help (NULL, NULL, pool);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
@@ -996,7 +997,7 @@ main (int argc, const char * const *argv
           subcommand = svn_opt_get_canonical_subcommand (cmd_table, first_arg);
           if (subcommand == NULL)
             {
-              fprintf (stderr, "unknown command: '%s'\n", first_arg);
+              fprintf (stderr, _("unknown command: '%s'\n"), first_arg);
               subcommand_help (NULL, NULL, pool);
               svn_pool_destroy (pool);
               return EXIT_FAILURE;
@@ -1062,8 +1063,8 @@ main (int argc, const char * const *argv
             svn_opt_get_option_from_code (opt_id, options_table);
           svn_opt_format_option (&optstr, badopt, FALSE, pool);
           fprintf (stderr,
-                   "subcommand '%s' doesn't accept option '%s'\n"
-                   "Type 'svnadmin help %s' for usage.\n",
+                   _("subcommand '%s' doesn't accept option '%s'\n"
+                   "Type 'svnadmin help %s' for usage.\n"),
                    subcommand->name, optstr, subcommand->name);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
Index: subversion/libsvn_wc/relocate.c
===================================================================
--- subversion/libsvn_wc/relocate.c	(revision 9287)
+++ subversion/libsvn_wc/relocate.c	(working copy)
@@ -30,6 +30,8 @@
 #include "entries.h"
 #include "props.h"
 
+#include "svn_private_config.h"
+
 
 /* Relocate the main URL and the copyfrom URL for ENTRY by changing FROM to
  * TO.  ADM_ACCESS is the access baton for ENTRY.  If DO_SYNC is set then
Index: subversion/libsvn_wc/merge.c
===================================================================
--- subversion/libsvn_wc/merge.c	(revision 9287)
+++ subversion/libsvn_wc/merge.c	(working copy)
@@ -28,6 +28,7 @@
 #include "translate.h"
 #include "questions.h"
 
+#include "svn_private_config.h"
 
 
 
@@ -296,13 +297,13 @@ svn_wc_merge (const char *left,
       /* Don't forget to clean up tmp_target, result_target, tmp_left,
          tmp_right.  There are a lot of scratch files lying around. */
       SVN_ERR_W (svn_io_remove_file (tmp_target, pool),
-                 "Unable to delete temporary file");
+                 _("Unable to delete temporary file"));
       SVN_ERR_W (svn_io_remove_file (result_target, pool),
-                 "Unable to delete temporary file");
+                 _("Unable to delete temporary file"));
       SVN_ERR_W (svn_io_remove_file (tmp_left, pool),
-                 "Unable to delete temporary file");
+                 _("Unable to delete temporary file"));
       SVN_ERR_W (svn_io_remove_file (tmp_right, pool),
-                 "Unable to delete temporary file");
+                 _("Unable to delete temporary file"));
 
     } /* end of merging for text files */
 
Index: subversion/libsvn_wc/props.c
===================================================================
--- subversion/libsvn_wc/props.c	(revision 9287)
+++ subversion/libsvn_wc/props.c	(working copy)
@@ -51,6 +51,7 @@
 #include "translate.h"
 #include "questions.h"
 
+#include "svn_private_config.h"
 
 /*---------------------------------------------------------------------*/
 
@@ -99,7 +100,7 @@ svn_wc__conflicting_propchanges_p (const
       *description =
         svn_string_createf
         (pool,
-         "Property '%s' locally changed to '%s', but update deletes it\n",
+         _("Property '%s' locally changed to '%s', but update deletes it\n"),
          local->name, local->value->data);
       return TRUE;  /* conflict */
     }
@@ -107,7 +108,7 @@ svn_wc__conflicting_propchanges_p (const
     {
       *description =
         svn_string_createf
-        (pool, "Property '%s' locally deleted, but update sets it to '%s'\n",
+        (pool, _("Property '%s' locally deleted, but update sets it to '%s'\n"),
          local->name, update->value->data);
       return TRUE;  /* conflict */
     }
@@ -123,8 +124,8 @@ svn_wc__conflicting_propchanges_p (const
     {
       *description =
         svn_string_createf
-        (pool, "Property '%s' locally changed to '%s', "
-         "but update sets it to '%s'\n",
+        (pool, _("Property '%s' locally changed to '%s', "
+         "but update sets it to '%s'\n"),
          local->name, local->value->data, update->value->data);
       return TRUE;  /* conflict */
     }
@@ -166,7 +167,7 @@ svn_wc__load_prop_file (const char *prop
                                  pool));
 
       SVN_ERR_W (svn_hash_read (hash, propfile, pool),
-                 apr_psprintf (pool, "Can't parse '%s'", propfile_path));
+                 apr_psprintf (pool, _("Can't parse '%s'"), propfile_path));
 
       SVN_ERR (svn_io_file_close (propfile, pool));
     }
@@ -192,7 +193,7 @@ svn_wc__save_prop_file (const char *prop
 
   SVN_ERR_W (svn_hash_write (hash, prop_tmp, pool),
              apr_psprintf (pool, 
-                           "Can't write property hash to '%s'", 
+                           _("Can't write property hash to '%s'"), 
                            propfile_path));
 
   SVN_ERR (svn_io_file_close (prop_tmp, pool));
@@ -245,7 +246,7 @@ svn_wc__get_existing_prop_reject_file (c
   if (! the_entry)
     return svn_error_createf
       (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-       "Can't find entry '%s' in '%s'", 
+       _("Can't find entry '%s' in '%s'"), 
        name, svn_wc_adm_access_path (adm_access));
 
   *reject_file = the_entry->prejfile 
@@ -277,7 +278,7 @@ svn_wc_merge_prop_diffs (svn_wc_notify_s
   SVN_ERR (svn_wc_entry (&entry, path, adm_access, FALSE, pool));
   if (entry == NULL)
     return svn_error_createf (SVN_ERR_UNVERSIONED_RESOURCE, NULL,
-                              "'%s' is not under version control", path);
+                              _("'%s' is not under version control"), path);
 
   /* Notice that we're not using svn_path_split_if_file(), because
      that looks at the actual working file.  It's existence shouldn't
@@ -313,7 +314,7 @@ svn_wc_merge_prop_diffs (svn_wc_notify_s
     {
       SVN_ERR_W (svn_io_file_write_full (log_fp, log_accum->data, 
                                          log_accum->len, NULL, pool),
-                 apr_psprintf (pool, "Error writing log for '%s'", path));
+                 apr_psprintf (pool, _("Error writing log for '%s'"), path));
 
       SVN_ERR (svn_wc__close_adm_file (log_fp, parent, SVN_WC__ADM_LOG,
                                        1, /* sync */ pool));
@@ -725,12 +726,12 @@ wcprop_list (apr_hash_t **props,
 #if 0
   if (kind == svn_node_none)
     return svn_error_createf (SVN_ERR_BAD_FILENAME, NULL,
-                              "'%s' does not exist",
+                              _("'%s' does not exist"),
                               path);
   
   if (kind == svn_node_unknown)
     return svn_error_createf (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-                              "Unknown node kind: '%s'",
+                              _("Unknown node kind: '%s'"),
                               path);
 #endif
 
@@ -766,7 +767,7 @@ svn_wc__wcprop_get (const svn_string_t *
   if (err)
     return
       svn_error_quick_wrap
-      (err, "Failed to load properties from disk");
+      (err, _("Failed to load properties from disk"));
 
   *value = apr_hash_get (prophash, name, APR_HASH_KEY_STRING);
   return SVN_NO_ERROR;
@@ -788,7 +789,7 @@ svn_wc__wcprop_set (const char *name,
   if (err)
     return
       svn_error_quick_wrap
-      (err, "Failed to load properties from disk");
+      (err, _("Failed to load properties from disk"));
 
   /* Now we have all the properties in our hash.  Simply merge the new
      property into it. */
@@ -804,7 +805,7 @@ svn_wc__wcprop_set (const char *name,
   /* Write. */
   SVN_ERR_W (svn_hash_write (prophash, fp, pool),
              apr_psprintf (pool,
-                           "Cannot write property hash for '%s'", path));
+                           _("Cannot write property hash for '%s'"), path));
   
   /* Close file, and doing an atomic "move". */
   SVN_ERR (svn_wc__close_props (fp, path, 0, 1,
@@ -874,7 +875,7 @@ svn_wc_prop_get (const svn_string_t **va
     {
       return svn_error_createf   /* we don't do entry properties here */
         (SVN_ERR_BAD_PROP_KIND, NULL,
-         "Property '%s' is an entry property", name);
+         _("Property '%s' is an entry property"), name);
     }
   else  /* regular prop */
     {
@@ -882,7 +883,7 @@ svn_wc_prop_get (const svn_string_t **va
       if (err)
         return
           svn_error_quick_wrap
-          (err, "Failed to load properties from disk");
+          (err, _("Failed to load properties from disk"));
       
       *value = apr_hash_get (prophash, name, APR_HASH_KEY_STRING);
 
@@ -924,13 +925,13 @@ validate_prop_against_node_kind (const c
       break;
     default:
       return svn_error_createf (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
-                                "'%s' is not a file or directory", path);
+                                _("'%s' is not a file or directory"), path);
     }
 
   while (*node_kind_prohibit)
     if (strcmp (name, *node_kind_prohibit++) == 0)
       return svn_error_createf (SVN_ERR_ILLEGAL_TARGET, NULL,
-                                "Cannot set '%s' on a %s (%s)",
+                                _("Cannot set '%s' on a %s (%s)"),
                                 name, node_kind_text, path);
 
   return SVN_NO_ERROR;
@@ -952,7 +953,7 @@ validate_eol_prop_against_file (const ch
                             pool));
   if (mime_type && svn_mime_type_is_binary (mime_type->data))
     return svn_error_createf (SVN_ERR_ILLEGAL_TARGET, NULL,
-                              "File '%s' has binary mime type property", path);
+                              _("File '%s' has binary mime type property"), path);
 
   /* Open PATH. */
   SVN_ERR (svn_io_file_open (&fp, path, 
@@ -973,7 +974,7 @@ validate_eol_prop_against_file (const ch
                                     "", FALSE, NULL, FALSE);
   if (err && err->apr_err == SVN_ERR_IO_INCONSISTENT_EOL)
     return svn_error_createf (SVN_ERR_ILLEGAL_TARGET, err,
-                              "File '%s' has inconsistent newlines", path);
+                              _("File '%s' has inconsistent newlines"), path);
   else if (err)
     return err;
 
@@ -1004,7 +1005,7 @@ svn_wc_prop_set (const char *name,
   else if (prop_kind == svn_prop_entry_kind)
     return svn_error_createf   /* we don't do entry properties here */
       (SVN_ERR_BAD_PROP_KIND, NULL,
-       "Property '%s' is an entry property", name);
+       _("Property '%s' is an entry property"), name);
 
   /* Else, handle a regular property: */
 
@@ -1083,7 +1084,7 @@ svn_wc_prop_set (const char *name,
   if (err)
     return
       svn_error_quick_wrap
-      (err, "Failed to load properties from disk");
+      (err, _("Failed to load properties from disk"));
 
   /* If we're changing this file's list of expanded keywords, then
    * we'll need to invalidate its text timestamp, since keyword
@@ -1113,7 +1114,7 @@ svn_wc_prop_set (const char *name,
   /* Write. */
   SVN_ERR_W (svn_hash_write (prophash, fp, pool),
              apr_psprintf (pool, 
-                           "Cannot write property hash for '%s'", path));
+                           _("Cannot write property hash for '%s'"), path));
   
   /* Close file, and doing an atomic "move". */
   SVN_ERR (svn_wc__close_props (fp, path, 0, 0,
@@ -1526,8 +1527,8 @@ svn_wc_parse_externals_description (apr_
         parse_error:
           return svn_error_createf
             (SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,
-             "Error parsing " SVN_PROP_EXTERNALS " property on '%s': '%s'",
-             parent_directory, line);
+             _("Error parsing %s property on '%s': '%s'"),
+             SVN_PROP_EXTERNALS, parent_directory, line);
         }
 
       item->target_dir = svn_path_canonicalize
@@ -1542,9 +1543,9 @@ svn_wc_parse_externals_description (apr_
             || (strncmp ((item->target_dir + tgt_dir_len - 3), "/..", 3) == 0))
           return svn_error_createf
             (SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,
-             "Invalid " SVN_PROP_EXTERNALS " property on '%s': "
-             "target involves '.' or '..' or is an absolute path",
-             parent_directory);
+             _("Invalid %s property on '%s': "
+             "target involves '.' or '..' or is an absolute path"),
+             SVN_PROP_EXTERNALS, parent_directory);
       }
 
       item->url = svn_path_canonicalize (item->url, pool);
Index: subversion/libsvn_wc/entries.c
===================================================================
--- subversion/libsvn_wc/entries.c	(revision 9287)
+++ subversion/libsvn_wc/entries.c	(working copy)
@@ -17,7 +17,6 @@
  */
 
 
-
 #include <string.h>
 #include <assert.h>
 
@@ -35,6 +34,8 @@
 #include "adm_ops.h"
 #include "entries.h"
 
+#include "svn_private_config.h"
+
 
 /** Overview **/
 
@@ -114,7 +115,7 @@ svn_wc__entries_init (const char *path,
                           SVN_WC__ENTRIES_TOPLEVEL);
 
   SVN_ERR_W (svn_io_file_write_full (f, accum->data, accum->len, NULL, pool),
-             apr_psprintf (pool, "Error writing entries file for '%s'", path));
+             apr_psprintf (pool, _("Error writing entries file for '%s'"), path));
 
   /* Now we have a `entries' file with exactly one entry, an entry
      for this dir.  Close the file and sync it up. */
@@ -215,7 +216,7 @@ svn_wc__atts_to_entry (svn_wc_entry_t **
         else
           return svn_error_createf 
             (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-             "Entry '%s' has invalid node kind",
+             _("Entry '%s' has invalid node kind"),
              (name ? name : SVN_WC_ENTRY_THIS_DIR));
         *modify_flags |= SVN_WC__ENTRY_MODIFY_KIND;
       }
@@ -240,7 +241,7 @@ svn_wc__atts_to_entry (svn_wc_entry_t **
         else
           return svn_error_createf 
             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,
-             "Entry '%s' has invalid '%s' value",
+             _("Entry '%s' has invalid '%s' value"),
              (name ? name : SVN_WC_ENTRY_THIS_DIR),
              SVN_WC__ENTRY_ATTR_SCHEDULE);
 
@@ -290,7 +291,7 @@ svn_wc__atts_to_entry (svn_wc_entry_t **
         else
           return svn_error_createf 
             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,
-             "Entry '%s' has invalid '%s' value",
+             _("Entry '%s' has invalid '%s' value"),
              (name ? name : SVN_WC_ENTRY_THIS_DIR),
              SVN_WC__ENTRY_ATTR_COPIED);
 
@@ -330,7 +331,7 @@ svn_wc__atts_to_entry (svn_wc_entry_t **
         else
           return svn_error_createf 
             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,
-             "Entry '%s' has invalid '%s' value",
+             _("Entry '%s' has invalid '%s' value"),
              (name ? name : SVN_WC_ENTRY_THIS_DIR),
              SVN_WC__ENTRY_ATTR_DELETED);
 
@@ -357,7 +358,7 @@ svn_wc__atts_to_entry (svn_wc_entry_t **
         else
           return svn_error_createf 
             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,
-             "Entry '%s' has invalid '%s' value",
+             _("Entry '%s' has invalid '%s' value"),
              (name ? name : SVN_WC_ENTRY_THIS_DIR),
              SVN_WC__ENTRY_ATTR_ABSENT);
 
@@ -384,7 +385,7 @@ svn_wc__atts_to_entry (svn_wc_entry_t **
         else
           return svn_error_createf 
             (SVN_ERR_ENTRY_ATTRIBUTE_INVALID, NULL,
-             "Entry '%s' has invalid '%s' value",
+             _("Entry '%s' has invalid '%s' value"),
              (name ? name : SVN_WC_ENTRY_THIS_DIR),
              SVN_WC__ENTRY_ATTR_INCOMPLETE);
 
@@ -565,17 +566,17 @@ resolve_to_defaults (apr_hash_t *entries
   if (! default_entry)
     return svn_error_create (SVN_ERR_ENTRY_NOT_FOUND,
                              NULL,
-                             "Missing default entry");
+                             _("Missing default entry"));
 
   if (default_entry->revision == SVN_INVALID_REVNUM)
     return svn_error_create (SVN_ERR_ENTRY_MISSING_REVISION,
                              NULL,
-                             "Default entry has no revision number");
+                             _("Default entry has no revision number"));
 
   if (! default_entry->url)
     return svn_error_create (SVN_ERR_ENTRY_MISSING_URL,
                              NULL,
-                             "Default entry is missing URL");
+                             _("Default entry is missing URL"));
   
     
   /* Then use it to fill in missing information in other entries. */
@@ -663,7 +664,7 @@ read_entries (svn_wc_adm_access_t *adm_a
     
     SVN_ERR_W (svn_xml_parse (svn_parser, buf, bytes_read, is_final),
                apr_psprintf (pool,
-                             "XML parser failed in '%s'", 
+                             _("XML parser failed in '%s'"), 
                              svn_wc_adm_access_path (adm_access)));
   } while (! is_final);
 
@@ -750,7 +751,7 @@ check_entries (apr_hash_t *entries,
   if (! default_entry)
     return svn_error_createf
       (SVN_ERR_WC_CORRUPT, NULL,
-       "Corrupt working copy: '%s' has no default entry", path);
+       _("Corrupt working copy: '%s' has no default entry"), path);
 
   /* Validate DEFAULT_ENTRY's current schedule. */
   switch (default_entry->schedule)
@@ -766,7 +767,7 @@ check_entries (apr_hash_t *entries,
       /* This is an invalid state */
       return svn_error_createf
         (SVN_ERR_WC_CORRUPT, NULL,
-         "Corrupt working copy: directory '%s' has an invalid schedule",
+         _("Corrupt working copy: directory '%s' has an invalid schedule"),
          path);
     }
   
@@ -800,8 +801,8 @@ check_entries (apr_hash_t *entries,
           /* This is an invalid state */
           return svn_error_createf
             (SVN_ERR_WC_CORRUPT, NULL,
-             "Corrupt working copy: "
-             "'%s' in directory '%s' has an invalid schedule",
+             _("Corrupt working copy: "
+             "'%s' in directory '%s' has an invalid schedule"),
              name, path);
         }
 
@@ -809,24 +810,24 @@ check_entries (apr_hash_t *entries,
           && (this_entry->schedule != svn_wc_schedule_add))
         return svn_error_createf
           (SVN_ERR_WC_CORRUPT, NULL,
-           "Corrupt working copy: '%s' in directory '%s' (which is scheduled "
-           "for addition) is not itself scheduled for addition",
+           _("Corrupt working copy: '%s' in directory '%s' (which is scheduled "
+           "for addition) is not itself scheduled for addition"),
            name, path);
   
       if ((default_entry->schedule == svn_wc_schedule_delete)
           && (this_entry->schedule != svn_wc_schedule_delete))
         return svn_error_createf
           (SVN_ERR_WC_CORRUPT, NULL,
-           "Corrupt working copy: '%s' in directory '%s' (which is scheduled "
-           "for deletion) is not itself scheduled for deletion",
+           _("Corrupt working copy: '%s' in directory '%s' (which is scheduled "
+           "for deletion) is not itself scheduled for deletion"),
            name, path);
 
       if ((default_entry->schedule == svn_wc_schedule_replace)
           && (this_entry->schedule == svn_wc_schedule_normal))
         return svn_error_createf
           (SVN_ERR_WC_CORRUPT, NULL,
-           "Corrupt working copy: '%s' in directory '%s' (which is scheduled "
-           "for replacement) has in invalid schedule",
+           _("Corrupt working copy: '%s' in directory '%s' (which is scheduled "
+           "for replacement) has in invalid schedule"),
            name, path);
     }
   
@@ -1104,7 +1105,7 @@ svn_wc__entries_write (apr_hash_t *entri
   /* If there is no "this dir" entry, something is wrong. */
   if (! this_dir)
     return svn_error_createf (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-                              "No default entry in directory '%s'", 
+                              _("No default entry in directory '%s'"), 
                               svn_wc_adm_access_path (adm_access));
 
   /* Open entries file for writing.  It's important we don't use APR_EXCL
@@ -1157,7 +1158,7 @@ svn_wc__entries_write (apr_hash_t *entri
   SVN_ERR_W (svn_io_file_write_full (outfile, bigstr->data, 
                                      bigstr->len, NULL, pool),
              apr_psprintf (pool,
-                           "Error writing to '%s'",
+                           _("Error writing to '%s'"),
                            svn_wc_adm_access_path (adm_access)));
 
   err = svn_wc__close_adm_file (outfile,
@@ -1369,7 +1370,7 @@ fold_scheduling (apr_hash_t *entries,
       else
         return 
           svn_error_createf (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-                             "'%s' is not under version control",
+                             _("'%s' is not under version control"),
                              name);
     }
 
@@ -1396,14 +1397,14 @@ fold_scheduling (apr_hash_t *entries,
       if (*schedule == svn_wc_schedule_add)
         return 
           svn_error_createf (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-                             "Can't add '%s' to deleted directory; "
-                             "try undeleting its parent directory first",
+                             _("Can't add '%s' to deleted directory; "
+                             "try undeleting its parent directory first"),
                              name);
       if (*schedule == svn_wc_schedule_replace)
         return 
           svn_error_createf (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-                             "Can't replace '%s' in deleted directory; "
-                             "try undeleting its parent directory first",
+                             _("Can't replace '%s' in deleted directory; "
+                             "try undeleting its parent directory first"),
                              name);
     }
 
@@ -1411,7 +1412,7 @@ fold_scheduling (apr_hash_t *entries,
     {
       return svn_error_createf 
         (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-         "'%s' is marked as absent, so it cannot be scheduled for addition",
+         _("'%s' is marked as absent, so it cannot be scheduled for addition"),
          name);
     }
 
@@ -1440,7 +1441,7 @@ fold_scheduling (apr_hash_t *entries,
             return 
               svn_error_createf 
               (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-               "Entry '%s' is already under version control", name);
+               _("Entry '%s' is already under version control"), name);
         }
       break;
 
@@ -1532,7 +1533,7 @@ fold_scheduling (apr_hash_t *entries,
       return 
         svn_error_createf 
         (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-         "Entry '%s' has illegal schedule", name);
+         _("Entry '%s' has illegal schedule"), name);
     }
   return SVN_NO_ERROR;
 }
@@ -1648,7 +1649,7 @@ svn_wc__tweak_entry (apr_hash_t *entries
   entry = apr_hash_get (entries, name, APR_HASH_KEY_STRING);
   if (! entry)
     return svn_error_createf (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-                              "No such entry: '%s'", name);
+                              _("No such entry: '%s'"), name);
 
   if (new_url != NULL
       && (! entry->url || strcmp (new_url, entry->url)))
@@ -1714,7 +1715,7 @@ walker_helper (const char *dirpath,
                             APR_HASH_KEY_STRING);
   if (! dot_entry)
     return svn_error_createf (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-                              "Directory '%s' has no THIS_DIR entry",
+                              _("Directory '%s' has no THIS_DIR entry"),
                               dirpath);
 
   SVN_ERR (walk_callbacks->found_entry (dirpath, dot_entry, walk_baton, pool));
@@ -1771,7 +1772,7 @@ svn_wc_walk_entries (const char *path,
 
   if (! entry)
     return svn_error_createf (SVN_ERR_UNVERSIONED_RESOURCE, NULL,
-                              "'%s' is not under version control", path);
+                              _("'%s' is not under version control"), path);
 
   if (entry->kind == svn_node_file)
     return walk_callbacks->found_entry (path, entry, walk_baton, pool);
@@ -1782,7 +1783,7 @@ svn_wc_walk_entries (const char *path,
 
   else
     return svn_error_createf (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-                              "'%s' has an unrecognized node kind", path);
+                              _("'%s' has an unrecognized node kind"), path);
 }
 
 
@@ -1817,6 +1818,6 @@ svn_wc_mark_missing_deleted (const char 
     }
   else
     return svn_error_createf (SVN_ERR_WC_PATH_FOUND, NULL,
-                              "Unexpectedly found '%s': "
-                              "path is marked 'missing'", path);
+                              _("Unexpectedly found '%s': "
+                              "path is marked 'missing'"), path);
 }
Index: subversion/libsvn_wc/copy.c
===================================================================
--- subversion/libsvn_wc/copy.c	(revision 9287)
+++ subversion/libsvn_wc/copy.c	(working copy)
@@ -33,6 +33,8 @@
 #include "adm_files.h"
 #include "props.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 
@@ -142,7 +144,7 @@ copy_file_administratively (const char *
   SVN_ERR (svn_io_check_path (dst_path, &dst_kind, pool));
   if (dst_kind != svn_node_none)
     return svn_error_createf (SVN_ERR_ENTRY_EXISTS, NULL,
-                              "'%s' already exists and is in the way",
+                              _("'%s' already exists and is in the way"),
                               dst_path);
 
   /* Even if DST_PATH doesn't exist it may still be a versioned file; it
@@ -154,12 +156,12 @@ copy_file_administratively (const char *
     {
       if (dst_entry->schedule == svn_wc_schedule_delete)
         return svn_error_createf (SVN_ERR_ENTRY_EXISTS, NULL,
-                                  "'%s' is scheduled for deletion; it must"
-                                  " be committed before being overwritten",
+                                  _("'%s' is scheduled for deletion; it must"
+                                  " be committed before being overwritten"),
                                   dst_path);
       else
         return svn_error_createf (SVN_ERR_ENTRY_EXISTS, NULL,
-                                  "There is already a versioned item '%s'",
+                                  _("There is already a versioned item '%s'"),
                                   dst_path);
     }
 
@@ -170,15 +172,15 @@ copy_file_administratively (const char *
   if (! src_entry)
     return svn_error_createf 
       (SVN_ERR_UNVERSIONED_RESOURCE, NULL,
-       "Cannot copy or move '%s': it's not under version control",
+       _("Cannot copy or move '%s': it's not under version control"),
        src_path);
   if ((src_entry->schedule == svn_wc_schedule_add)
       || (! src_entry->url)
       || (src_entry->copied))
     return svn_error_createf 
       (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-       "Cannot copy or move '%s': it's not in the repository yet; "
-       "try committing first",
+       _("Cannot copy or move '%s': it's not in the repository yet; "
+       "try committing first"),
        src_path);
 
   /* Now, make an actual copy of the working file. */
@@ -286,14 +288,14 @@ copy_dir_administratively (const char *s
   if (! src_entry)
     return svn_error_createf
       (SVN_ERR_ENTRY_NOT_FOUND, NULL, 
-       "'%s' is not under version control", src_path);
+       _("'%s' is not under version control"), src_path);
   if ((src_entry->schedule == svn_wc_schedule_add)
       || (! src_entry->url)
       || (src_entry->copied))
     return svn_error_createf 
       (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-       "Not allowed to copy or move '%s': it is not in the repository yet; "
-       "try committing first",
+       _("Not allowed to copy or move '%s': it is not in the repository yet; "
+       "try committing first"),
        src_path);
 
   /* Recursively copy the whole directory over.  This gets us all
Index: subversion/libsvn_wc/adm_crawler.c
===================================================================
--- subversion/libsvn_wc/adm_crawler.c	(revision 9287)
+++ subversion/libsvn_wc/adm_crawler.c	(working copy)
@@ -44,6 +44,8 @@
 #include "translate.h"
 #include "entries.h"
 
+#include "svn_private_config.h"
+
 
 /* Helper for report_revisions().
    
@@ -353,8 +355,8 @@ report_revisions (svn_wc_adm_access_t *a
             {
               return svn_error_createf
                 (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
-                 "The entry '%s' is no longer a directory; "
-                 "remove the entry before updating",
+                 _("The entry '%s' is no longer a directory; "
+                 "remove the entry before updating"),
                  this_path);
             }
 
@@ -572,7 +574,7 @@ svn_wc_crawl_revisions (const char *path
       svn_error_t *fserr;
       if ((fserr = reporter->abort_report (report_baton, pool)))
         {
-          fserr = svn_error_quick_wrap (fserr, "Error aborting report");
+          fserr = svn_error_quick_wrap (fserr, _("Error aborting report"));
           svn_error_compose (err, fserr);
         }
       return err;
@@ -669,8 +671,8 @@ svn_wc_transmit_text_deltas (const char 
                   
                   return svn_error_createf
                     (SVN_ERR_WC_CORRUPT_TEXT_BASE, NULL,
-                     "Checksum mismatch for '%s': "
-                     "expected '%s', actual: '%s'",
+                     _("Checksum mismatch for '%s': "
+                     "expected '%s', actual: '%s'"),
                      tb, ent->checksum, base_digest_hex);
                 }
             }
@@ -694,7 +696,7 @@ svn_wc_transmit_text_deltas (const char 
   /* Open a filehandle for tmp text-base. */
   SVN_ERR_W (svn_io_file_open (&localfile, tmp_base,
                                APR_READ, APR_OS_DEFAULT, pool),
-             "Error opening local file");
+             _("Error opening local file"));
 
   /* Create a text-delta stream object that pulls data out of the two
      files. */
Index: subversion/libsvn_wc/adm_ops.c
===================================================================
--- subversion/libsvn_wc/adm_ops.c	(revision 9287)
+++ subversion/libsvn_wc/adm_ops.c	(working copy)
@@ -50,6 +50,8 @@
 #include "props.h"
 #include "translate.h"
 
+#include "svn_private_config.h"
+
 
 /*** Finishing updates and commits. ***/
 
@@ -208,7 +210,7 @@ svn_wc__do_update_cleanup (const char *p
 
   else
     return svn_error_createf (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-                              "Unrecognized node kind: '%s'", path);
+                              _("Unrecognized node kind: '%s'"), path);
 
   return SVN_NO_ERROR;
 }
@@ -373,7 +375,7 @@ svn_wc_process_committed (const char *pa
 
   SVN_ERR_W (svn_io_file_write_full (log_fp, logtags->data, 
                                      logtags->len, NULL, pool),
-             apr_psprintf (pool, "Error writing log file for '%s'", path));
+             apr_psprintf (pool, _("Error writing log file for '%s'"), path));
       
   SVN_ERR (svn_wc__close_adm_file (log_fp, svn_wc_adm_access_path (adm_access),
                                    SVN_WC__ADM_LOG,
@@ -881,10 +883,10 @@ svn_wc_add (const char *path,
   SVN_ERR (svn_io_check_path (path, &kind, pool));
   if (kind == svn_node_none)
     return svn_error_createf (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
-                              "'%s' not found", path);
+                              _("'%s' not found"), path);
   if (kind == svn_node_unknown)
     return svn_error_createf (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-                              "Unsupported node kind for path '%s'", path);
+                              _("Unsupported node kind for path '%s'"), path);
 
   /* Get the original entry for this path if one exists (perhaps
      this is actually a replacement of a previously deleted thing).
@@ -913,7 +915,7 @@ svn_wc_add (const char *path,
         {
           return svn_error_createf 
             (SVN_ERR_ENTRY_EXISTS, NULL,
-             "'%s' is already under version control", path);
+             _("'%s' is already under version control"), path);
         }
       else if (orig_entry->kind != kind)
         {
@@ -924,8 +926,8 @@ svn_wc_add (const char *path,
              error so that clients can detect it. */
           return svn_error_createf 
             (SVN_ERR_WC_NODE_KIND_CHANGE, NULL,
-             "Can't replace '%s' with a node of a differing type; "
-             "commit the deletion, update the parent, and then add '%s'",
+             _("Can't replace '%s' with a node of a differing type; "
+             "commit the deletion, update the parent, and then add '%s'"),
              path, path);
         }
       if (orig_entry->schedule == svn_wc_schedule_delete)
@@ -939,12 +941,12 @@ svn_wc_add (const char *path,
   if (! parent_entry)
     return svn_error_createf 
       (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-       "Can't not find parent directory's entry while trying to add '%s'",
+       _("Can't not find parent directory's entry while trying to add '%s'"),
        path);
   if (parent_entry->schedule == svn_wc_schedule_delete)
     return svn_error_createf 
       (SVN_ERR_WC_SCHEDULE_CONFLICT, NULL,
-       "Can't add '%s' to a parent directory scheduled for deletion",
+       _("Can't add '%s' to a parent directory scheduled for deletion"),
        path);
 
   /* Init the modify flags. */
@@ -1139,7 +1141,7 @@ revert_error (svn_error_t *err,
               apr_pool_t *pool)
 {
   return svn_error_quick_wrap 
-    (err, apr_psprintf (pool, "Error '%s' for '%s'", verb, path));
+    (err, apr_psprintf (pool, _("Error '%s' for '%s'"), verb, path));
 }
 
 
@@ -1366,7 +1368,7 @@ svn_wc_revert (const char *path,
   if (! entry)
     return svn_error_createf 
       (SVN_ERR_UNVERSIONED_RESOURCE, NULL,
-       "Cannot revert: '%s' is not under version control", path);
+       _("Cannot revert: '%s' is not under version control"), path);
 
   /* Safeguard 1.5: is this a missing versioned directory? */
   if (entry->kind == svn_node_dir)
@@ -1397,7 +1399,7 @@ svn_wc_revert (const char *path,
   if ((entry->kind != svn_node_file) && (entry->kind != svn_node_dir))
     return svn_error_createf 
       (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-       "Cannot revert '%s': unsupported entry node kind", path);
+       _("Cannot revert '%s': unsupported entry node kind"), path);
 
   /* Safeguard 3:  can we deal with the node kind of PATH current in
      the working copy? */
@@ -1407,7 +1409,7 @@ svn_wc_revert (const char *path,
       && (kind != svn_node_dir))
     return svn_error_createf 
       (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-       "Cannot revert '%s': unsupported node kind in working copy", path);
+       _("Cannot revert '%s': unsupported node kind in working copy"), path);
 
   /* For directories, determine if PATH is a WC root so that we can
      tell if it is safe to split PATH into a parent directory and
@@ -1454,8 +1456,8 @@ svn_wc_revert (const char *path,
           if (path[0] == '\0')
             {
               return svn_error_create (SVN_ERR_WC_INVALID_OP_ON_CWD, NULL,
-                "Cannot revert addition of current directory; "
-                "please try again from the parent directory");
+                _("Cannot revert addition of current directory; "
+                "please try again from the parent directory"));
             }
               
           SVN_ERR (svn_wc_entries_read (&entries, parent_access, TRUE, pool));
@@ -1476,7 +1478,7 @@ svn_wc_revert (const char *path,
       else  /* Else it's `none', or something exotic like a symlink... */
         return svn_error_createf
           (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-           "Unknown or unexpected kind for path '%s'", path);
+           _("Unknown or unexpected kind for path '%s'"), path);
 
       /* Recursivity is taken care of by svn_wc_remove_from_revision_control, 
          and we've definitely reverted PATH at this point. */
@@ -1661,7 +1663,7 @@ svn_wc_remove_from_revision_control (svn
                                        FALSE, adm_access, pool));
       if (text_modified_p && instant_error)
         return svn_error_createf (SVN_ERR_WC_LEFT_LOCAL_MOD, NULL,
-                                  "File '%s' has local modifications",
+                                  _("File '%s' has local modifications"),
                                   name);
 
       /* Remove NAME from PATH's entries file: */
@@ -2066,7 +2068,7 @@ svn_wc_resolved_conflict (const char *pa
       SVN_ERR (svn_wc_entry (&entry, path, adm_access, FALSE, pool));
       if (! entry)
         return svn_error_createf (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-                                  "'%s' is not under version control", path);
+                                  _("'%s' is not under version control"), path);
 
       SVN_ERR (resolve_found_entry_callback (path, entry, baton, pool));
     }
Index: subversion/libsvn_wc/adm_files.c
===================================================================
--- subversion/libsvn_wc/adm_files.c	(revision 9287)
+++ subversion/libsvn_wc/adm_files.c	(working copy)
@@ -41,6 +41,8 @@
 #include "adm_files.h"
 #include "entries.h"
 
+#include "svn_private_config.h"
+
 
 /*** File names in the adm area. ***/
 
@@ -195,7 +197,7 @@ svn_wc__make_adm_thing (svn_wc_adm_acces
          segfault or other obvious indicator that something went
          wrong.  Even so, not sure if it's appropriate.  Thoughts? */
       err = svn_error_create 
-        (0, NULL, "Bad type indicator");
+        (0, NULL, _("Bad type indicator"));
     }
 
   return err;
@@ -402,7 +404,7 @@ open_adm_file (apr_file_t **handle,
           /* We don't handle append.  To do so we would need to copy the
              contents into the apr_file_t once it has been opened. */
           return svn_error_create (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
-                                   "APR_APPEND not supported for adm files");
+                                   _("APR_APPEND not supported for adm files"));
         }
 
       /* Need to own the temporary file, so don't reuse an existing one. */
@@ -445,8 +447,8 @@ open_adm_file (apr_file_t **handle,
       if (APR_STATUS_IS_ENOENT(err->apr_err) && (flags & APR_WRITE))
         {
           err = svn_error_quick_wrap(err,
-                               "Your .svn/tmp directory may be missing or "
-                               "corrupt; run 'svn cleanup' and try again");
+                               _("Your .svn/tmp directory may be missing or "
+                               "corrupt; run 'svn cleanup' and try again"));
         }
     }
 
@@ -620,14 +622,14 @@ svn_wc__open_props (apr_file_t **handle,
   if (wc_format_version == 0)
     return svn_error_createf
       (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
-       "'%s' is not a working copy", parent_dir);
+       _("'%s' is not a working copy"), parent_dir);
 
   /* Then examine the flags to know -which- kind of prop file to get. */
 
   if (base && wcprops)
     return svn_error_create (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
-                             "No such thing as 'base' "
-                             "working copy properties!");
+                             _("No such thing as 'base' "
+                             "working copy properties!"));
 
   else if (base)
     {
@@ -695,14 +697,14 @@ svn_wc__close_props (apr_file_t *fp,
   if (wc_format_version == 0)
     return svn_error_createf
       (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
-       "'%s' is not a working copy", parent_dir);
+       _("'%s' is not a working copy"), parent_dir);
 
   /* Then examine the flags to know -which- kind of prop file to get. */
 
   if (base && wcprops)
     return svn_error_create (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
-                             "No such thing as 'base' "
-                             "working copy properties!");
+                             _("No such thing as 'base' "
+                             "working copy properties!"));
 
   else if (base)
     {
@@ -765,8 +767,8 @@ svn_wc__sync_props (const char *path,
 
   if (base && wcprops)
     return svn_error_create (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
-                             "No such thing as 'base' "
-                             "working copy properties!");
+                             _("No such thing as 'base' "
+                             "working copy properties!"));
 
   else if (base)
     {
@@ -834,7 +836,7 @@ check_adm_exists (svn_boolean_t *exists,
       /* If got an error other than dir non-existence, then
          something's weird and we should return a genuine error. */
       return svn_error_createf (APR_ENOTDIR, NULL,
-                                "'%s' is not a directory", tmp_path);
+                                _("'%s' is not a directory"), tmp_path);
     }
   else if (kind == svn_node_none)
     {
@@ -887,7 +889,7 @@ check_adm_exists (svn_boolean_t *exists,
       SVN_ERR (svn_wc_adm_close (adm_access));
       if (!entry)
         return svn_error_createf (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-                                  "No entry for '%s'", path);
+                                  _("No entry for '%s'"), path);
 
       /* The revisions must match except when adding a directory with a
          name that matches a directory scheduled for deletion. That's
@@ -907,7 +909,7 @@ check_adm_exists (svn_boolean_t *exists,
         return
           svn_error_createf
           (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
-           "URL '%s' doesn't match existing URL '%s' in '%s'",
+           _("URL '%s' doesn't match existing URL '%s' in '%s'"),
            url, entry->url, path);
     }
 
Index: subversion/libsvn_wc/lock.c
===================================================================
--- subversion/libsvn_wc/lock.c	(revision 9287)
+++ subversion/libsvn_wc/lock.c	(working copy)
@@ -28,6 +28,8 @@
 #include "adm_files.h"
 #include "questions.h"
 
+#include "svn_private_config.h"
+
 
 
 struct svn_wc_adm_access_t
@@ -153,7 +155,7 @@ create_lock (svn_wc_adm_access_t *adm_ac
     }
 
   return svn_error_createf (SVN_ERR_WC_LOCKED, NULL,
-                            "Working copy '%s' locked",
+                            _("Working copy '%s' locked"),
                             svn_path_local_style (adm_access->path, pool));
 }
 
@@ -273,7 +275,7 @@ probe (const char **dir,
         {
           return svn_error_createf
             (SVN_ERR_WC_BAD_PATH, NULL,
-             "Path '%s' ends in '%s', which is unsupported for this operation",
+             _("Path '%s' ends in '%s', which is unsupported for this operation"),
              svn_path_local_style (path, pool), base_name);
         }
 
@@ -350,7 +352,7 @@ do_open (svn_wc_adm_access_t **adm_acces
            locked: if it's not locked call svn_wc_adm_open, if it is locked
            call svn_wc_adm_retrieve.  */
         return svn_error_createf (SVN_ERR_WC_LOCKED, NULL,
-                                  "Working copy '%s' locked",
+                                  _("Working copy '%s' locked"),
                                   path);
     }
 
@@ -368,7 +370,7 @@ do_open (svn_wc_adm_access_t **adm_acces
           /* Should we attempt to distinguish certain errors? */
           svn_error_clear (err);
           return svn_error_createf (SVN_ERR_WC_NOT_DIRECTORY, NULL,
-                                    "'%s' is not a working copy",
+                                    _("'%s' is not a working copy"),
                                     svn_path_local_style (path, pool));
         }
 
@@ -593,7 +595,7 @@ svn_wc_adm_probe_open2 (svn_wc_adm_acces
         {
           svn_error_clear (err);
           return svn_error_createf (SVN_ERR_WC_NOT_DIRECTORY, NULL,
-                                    "'%s' is not a working copy",
+                                    _("'%s' is not a working copy"),
                                     svn_path_local_style (path, pool));
         }
       else
@@ -641,7 +643,7 @@ svn_wc_adm_retrieve (svn_wc_adm_access_t
      for NULL batons. */
   if (! *adm_access)
     return svn_error_createf (SVN_ERR_WC_NOT_LOCKED, NULL,
-                              "Working copy '%s' not locked",
+                              _("Working copy '%s' not locked"),
                               path);
 
   return SVN_NO_ERROR;
@@ -835,14 +837,14 @@ svn_wc__adm_write_check (svn_wc_adm_acce
           SVN_ERR (svn_wc_locked (&locked, adm_access->path, adm_access->pool));
           if (! locked)
             return svn_error_createf (SVN_ERR_WC_NOT_LOCKED, NULL, 
-                                      "Write-lock stolen in '%s'",
+                                      _("Write-lock stolen in '%s'"),
                                       adm_access->path); 
         }
     }
   else
     {
       return svn_error_createf (SVN_ERR_WC_NOT_LOCKED, NULL, 
-                                "No write-lock in '%s'", adm_access->path); 
+                                _("No write-lock in '%s'"), adm_access->path); 
     }
 
   return SVN_NO_ERROR;
@@ -862,7 +864,7 @@ svn_wc_locked (svn_boolean_t *locked, co
     *locked = FALSE;
   else
     return svn_error_createf (SVN_ERR_WC_LOCKED, NULL,
-                              "Lock file '%s' is not a regular file",
+                              _("Lock file '%s' is not a regular file"),
                               lockfile);
     
   return SVN_NO_ERROR;
Index: subversion/libsvn_wc/translate.c
===================================================================
--- subversion/libsvn_wc/translate.c	(revision 9287)
+++ subversion/libsvn_wc/translate.c	(working copy)
@@ -45,6 +45,7 @@
 #include "adm_files.h"
 #include "translate.h"
 
+#include "svn_private_config.h"
 
 svn_error_t *
 svn_wc_translated_file (const char **xlated_p,
@@ -122,7 +123,7 @@ svn_wc_translated_file (const char **xla
         {
           return svn_error_createf
             (SVN_ERR_IO_UNKNOWN_EOL, NULL,
-             "'%s' has unknown value for svn:eol-style property",
+             _("'%s' has unknown value for svn:eol-style property"),
              vfile);
         }
 
Index: subversion/libsvn_subr/opt.c
===================================================================
--- subversion/libsvn_subr/opt.c	(revision 9287)
+++ subversion/libsvn_subr/opt.c	(working copy)
@@ -135,7 +135,7 @@ print_command_info (const svn_opt_subcom
       const apr_getopt_option_t *option;
       svn_boolean_t have_options = FALSE;
 
-      fprintf (stream, ": %s", cmd->help);
+      fprintf (stream, ": %s", gettext(cmd->help));
 
       /* Loop over all valid option codes attached to the subcommand */
       for (i = 0; i < SVN_OPT_MAX_OPTIONS; i++)
@@ -144,7 +144,7 @@ print_command_info (const svn_opt_subcom
             {
               if (have_options == FALSE)
                 {
-                  fprintf (stream, "\nValid options:\n");
+                  fprintf (stream, _("\nValid options:\n"));
                   have_options = TRUE;
                 }
 
@@ -221,7 +221,7 @@ svn_opt_format_option (const char **stri
     opts = apr_pstrcat (pool, opts, " arg", NULL);
 
   if (doc)
-    opts = apr_psprintf (pool, "%-24s : %s", opts, opt->description);
+    opts = apr_psprintf (pool, "%-24s : %s", opts, gettext(opt->description));
 
   *string = opts;
 }
@@ -239,7 +239,7 @@ svn_opt_subcommand_help (const char *sub
   if (cmd)
     print_command_info (cmd, options_table, TRUE, pool, stdout);
   else
-    fprintf (stderr, "\"%s\": unknown command.\n\n", subcommand);
+    fprintf (stderr, _("\"%s\": unknown command.\n\n"), subcommand);
 }
 
 
@@ -424,7 +424,7 @@ svn_opt_parse_num_args (apr_array_header
       if (os->ind >= os->argc)
         {
           return svn_error_create (SVN_ERR_CL_ARG_PARSING_ERROR, 
-                                   0, "Too few arguments");
+                                   0, _("Too few arguments"));
         }
       array_push_str (args, os->argv[os->ind++], pool);
     }
@@ -495,7 +495,7 @@ parse_path (svn_opt_revision_t *rev,
                                       &end_revision,
                                       native_rev, subpool))
             return svn_error_createf (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                                      "Syntax error parsing revision '%s'",
+                                      _("Syntax error parsing revision '%s'"),
                                       path + i + 1);
 
           *truepath = apr_pstrndup (pool, path, i);
@@ -569,7 +569,7 @@ svn_opt_args_to_target_array (apr_array_
           /* No need to canonicalize a URL's case or path separators. */
           if (! svn_path_is_uri_safe (utf8_target))
             return svn_error_createf (SVN_ERR_BAD_URL, 0,
-                                      "URL '%s' is not properly URI-encoded",
+                                      _("URL '%s' is not properly URI-encoded"),
                                       utf8_target);
                                       
           /* strip any trailing '/' */
@@ -598,7 +598,7 @@ svn_opt_args_to_target_array (apr_array_
             ;
           else
             return svn_error_createf (apr_err, NULL,
-                                      "Error resolving case of '%s'",
+                                      _("Error resolving case of '%s'"),
                                       utf8_target);
 
           /* convert back to UTF-8. */
@@ -670,21 +670,19 @@ print_version_info (const char *pgm_name
                     svn_boolean_t quiet,
                     apr_pool_t *pool)
 {
-  static const char info[] =
-    "Copyright (C) 2000-2004 CollabNet.\n"
-    "Subversion is open source software, see http://subversion.tigris.org/\n"
-    "This product includes software developed by CollabNet "
-    "(http://www.Collab.Net/).\n";
-
   if (quiet)
     {
       printf ("%s\n", SVN_VER_NUMBER);
       return SVN_NO_ERROR;
     }
 
-  printf ("%s, version %s\n", pgm_name, SVN_VERSION);
-  printf ("   compiled %s, %s\n\n", __DATE__, __TIME__);
-  printf ("%s\n", info);
+  printf (_("%s, version %s\n"
+            "   compiled %s, %s\n\n"), pgm_name, SVN_VERSION,
+                                      __DATE__, __TIME__);
+  fputs (_("Copyright (C) 2000-2004 CollabNet.\n"
+    "Subversion is open source software, see http://subversion.tigris.org/\n"
+    "This product includes software developed by CollabNet "
+    "(http://www.Collab.Net/).\n\n"), stdout);
 
   if (footer)
     {
Index: subversion/svnlook/main.c
===================================================================
--- subversion/svnlook/main.c	(revision 9287)
+++ subversion/svnlook/main.c	(working copy)
@@ -44,6 +44,8 @@
 #include "svn_props.h"
 #include "svn_diff.h"
 
+#include "svn_private_config.h"
+
 
 /*** Some convenience macros and types. ***/
 
@@ -84,28 +86,28 @@ enum 
 static const apr_getopt_option_t options_table[] =
   {
     {"help",          'h', 0,
-     "show help on a subcommand"},
+     N_("show help on a subcommand")},
 
     {NULL,            '?', 0,
-     "show help on a subcommand"},
+     N_("show help on a subcommand")},
 
     {"version",       svnlook__version, 0,
-     "show version information"},
+     N_("show version information")},
 
     {"revision",      'r', 1,
-     "specify revision number ARG"},
+     N_("specify revision number ARG")},
 
     {"transaction",  't', 1,
-     "specify transaction name ARG"},
+     N_("specify transaction name ARG")},
 
     {"verbose",  'v', 0,
-     "be verbose"},
+     N_("be verbose")},
 
     {"show-ids",      svnlook__show_ids, 0,
-     "show node revision ids for each path"},
+     N_("show node revision ids for each path")},
 
     {"no-diff-deleted", svnlook__no_diff_deleted, 0,
-     "do not print differences for deleted files"},
+     N_("do not print differences for deleted files")},
 
     {0,               0, 0, 0}
   };
@@ -117,82 +119,82 @@ static const apr_getopt_option_t options
 static const svn_opt_subcommand_desc_t cmd_table[] =
   {
     {"author", subcommand_author, {0},
-     "usage: svnlook author REPOS_PATH\n\n"
-     "Print the author.\n",
+     N_("usage: svnlook author REPOS_PATH\n\n"
+     "Print the author.\n"),
      {'r', 't'} },
     
     {"cat", subcommand_cat, {0},
-     "usage: svnlook cat REPOS_PATH FILE_PATH\n\n"
-     "Print the contents of a file.  Leading '/' on FILE_PATH is optional.\n",
+     N_("usage: svnlook cat REPOS_PATH FILE_PATH\n\n"
+     "Print the contents of a file.  Leading '/' on FILE_PATH is optional.\n"),
      {'r', 't'} },
     
     {"changed", subcommand_changed, {0},
-     "usage: svnlook changed REPOS_PATH\n\n"
-     "Print the paths that were changed.\n",
+     N_("usage: svnlook changed REPOS_PATH\n\n"
+     "Print the paths that were changed.\n"),
      {'r', 't'} },
     
     {"date", subcommand_date, {0},
-     "usage: svnlook date REPOS_PATH\n\n"
-     "Print the datestamp.\n",
+     N_("usage: svnlook date REPOS_PATH\n\n"
+     "Print the datestamp.\n"),
      {'r', 't'} },
 
     {"diff", subcommand_diff, {0},
-     "usage: svnlook diff REPOS_PATH\n\n"
-     "Print GNU-style diffs of changed files and properties.\n",
+     N_("usage: svnlook diff REPOS_PATH\n\n"
+     "Print GNU-style diffs of changed files and properties.\n"),
      {'r', 't', svnlook__no_diff_deleted} },
 
     {"dirs-changed", subcommand_dirschanged, {0},
-     "usage: svnlook dirs-changed REPOS_PATH\n\n"
+     N_("usage: svnlook dirs-changed REPOS_PATH\n\n"
      "Print the directories that were themselves changed (property edits)\n"
-     "or whose file children were changed.\n",
+     "or whose file children were changed.\n"),
      {'r', 't'} },
     
     {"help", subcommand_help, {"?", "h"},
-     "usage: svnlook help [SUBCOMMAND...]\n\n"
-     "Describe the usage of this program or its subcommands.\n",
+     N_("usage: svnlook help [SUBCOMMAND...]\n\n"
+     "Describe the usage of this program or its subcommands.\n"),
      {svnlook__version} },
 
     {"history", subcommand_history, {0},
-     "usage: svnlook history REPOS_PATH [PATH_IN_REPOS]\n\n"
+     N_("usage: svnlook history REPOS_PATH [PATH_IN_REPOS]\n\n"
      "Print information about the history of a path in the repository (or\n"
-     "the root directory if no path is supplied).\n",
+     "the root directory if no path is supplied).\n"),
      {'r', svnlook__show_ids} },
 
     {"info", subcommand_info, {0},
-     "usage: svnlook info REPOS_PATH\n\n"
-     "Print the author, datestamp, log message size, and log message.\n",
+     N_("usage: svnlook info REPOS_PATH\n\n"
+     "Print the author, datestamp, log message size, and log message.\n"),
      {'r', 't'} },
 
     {"log", subcommand_log, {0},
-     "usage: svnlook log REPOS_PATH\n\n"
-     "Print the log message.\n",
+     N_("usage: svnlook log REPOS_PATH\n\n"
+     "Print the log message.\n"),
      {'r', 't'} },
 
     {"propget", subcommand_pget, {"pget", "pg"},
-     "usage: svnlook propget REPOS_PATH PROPNAME PATH_IN_REPOS\n\n"
-     "Print the raw value of a property on a path in the repository.\n",
+     N_("usage: svnlook propget REPOS_PATH PROPNAME PATH_IN_REPOS\n\n"
+     "Print the raw value of a property on a path in the repository.\n"),
      {'r', 't'} },
 
     {"proplist", subcommand_plist, {"plist", "pl"},
-     "usage: svnlook proplist REPOS_PATH PATH_IN_REPOS\n\n"
+     N_("usage: svnlook proplist REPOS_PATH PATH_IN_REPOS\n\n"
      "List the properties of a path in the repository.\n"
-     "With -v, show the property values too.\n",
+     "With -v, show the property values too.\n"),
      {'r', 't', 'v'} },
 
     {"tree", subcommand_tree, {0},
-     "usage: svnlook tree REPOS_PATH [PATH_IN_REPOS]\n\n"
+     N_("usage: svnlook tree REPOS_PATH [PATH_IN_REPOS]\n\n"
      "Print the tree, starting at PATH_IN_REPOS (if supplied, at the root\n"
-     "of the tree otherwise), optionally showing node revision ids.\n",
+     "of the tree otherwise), optionally showing node revision ids.\n"),
      {'r', 't', svnlook__show_ids} },
 
     {"uuid", subcommand_uuid, {0},
-     "usage: svnlook uuid REPOS_PATH\n\n"
-     "Print the repository's UUID.\n",
+     N_("usage: svnlook uuid REPOS_PATH\n\n"
+     "Print the repository's UUID.\n"),
      {0} },
 
     {"youngest", subcommand_youngest, {0},
-     "usage: svnlook youngest REPOS_PATH\n\n"
-     "Print the youngest revision number.\n",
+     N_("usage: svnlook youngest REPOS_PATH\n\n"
+     "Print the youngest revision number.\n"),
      {0} },
 
     { NULL, NULL, {0}, NULL, {0} }
@@ -711,7 +713,7 @@ display_prop_diffs (const apr_array_head
       else
         orig_value = NULL;
 
-      printf ("Name: %s\n", pc->name);
+      printf (_("Name: %s\n"), pc->name);
 
       /* For now, we have a rather simple heuristic: if this is an
          "svn:" property, then assume the value is UTF-8 and must
@@ -858,9 +860,9 @@ print_diff_tree (svn_fs_root_t *root,
     {
       if (! is_copy)
         printf ("%s: %s\n", 
-                ((node->action == 'A') ? "Added" : 
-                 ((node->action == 'D') ? "Deleted" :
-                  ((node->action == 'R') ? "Modified" : "Index"))),
+                ((node->action == 'A') ? _("Added") : 
+                 ((node->action == 'D') ? _("Deleted") :
+                  ((node->action == 'R') ? _("Modified") : _("Index")))),
                 path_native);
 
       if ((! no_diff_deleted) || (node->action != 'D'))
@@ -872,7 +874,7 @@ print_diff_tree (svn_fs_root_t *root,
 
           if (binary)
             {
-              printf ("(Binary files differ)\n");
+              printf (_("(Binary files differ)\n"));
             }
           else
             {
@@ -1012,7 +1014,7 @@ print_tree (svn_fs_root_t *root,
       svn_string_t *unparsed_id = NULL;
       if (id)
         unparsed_id = svn_fs_unparse_id (id, pool);
-      printf (" <%s>", unparsed_id ? unparsed_id->data : "unknown");
+      printf (" <%s>", unparsed_id ? unparsed_id->data : _("unknown"));
     }
   printf ("\n");
 
@@ -1131,7 +1133,7 @@ do_dirs_changed (svnlook_ctxt_t *c, apr_
   if (! SVN_IS_VALID_REVNUM (base_rev_id))
     return svn_error_createf 
       (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
-       "Transaction '%s' is not based on a revision; how odd",
+       _("Transaction '%s' is not based on a revision; how odd"),
        c->txn_name);
   
   SVN_ERR (generate_delta_tree (&tree, c->repos, root, base_rev_id, 
@@ -1161,10 +1163,10 @@ verify_path (svn_node_kind_t *kind,
       if (svn_path_is_url (path))  /* check for a common mistake. */
         return svn_error_createf
           (SVN_ERR_FS_NOT_FOUND, NULL,
-           "'%s' is a URL, probably should be a path", path);
+           _("'%s' is a URL, probably should be a path"), path);
       else
         return svn_error_createf 
-          (SVN_ERR_FS_NOT_FOUND, NULL, "Path '%s' does not exist", path);
+          (SVN_ERR_FS_NOT_FOUND, NULL, _("Path '%s' does not exist"), path);
     }
 
   return SVN_NO_ERROR;
@@ -1188,7 +1190,7 @@ do_cat (svnlook_ctxt_t *c, const char *p
 
   if (kind != svn_node_file)
     return svn_error_createf 
-      (SVN_ERR_FS_NOT_FILE, NULL, "Path '%s' is not a file", path);
+      (SVN_ERR_FS_NOT_FILE, NULL, _("Path '%s' is not a file"), path);
 
   /* Else. */
 
@@ -1222,7 +1224,7 @@ do_changed (svnlook_ctxt_t *c, apr_pool_
   if (! SVN_IS_VALID_REVNUM (base_rev_id))
     return svn_error_createf 
       (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
-       "Transaction '%s' is not based on a revision; how odd",
+       _("Transaction '%s' is not based on a revision; how odd"),
        c->txn_name);
   
   SVN_ERR (generate_delta_tree (&tree, c->repos, root, base_rev_id, 
@@ -1263,7 +1265,7 @@ create_unique_tmpdir (const char **name,
       if (apr_err)
         {
           *name = NULL;
-          return svn_error_wrap_apr (apr_err, "Can't create directory '%s'",
+          return svn_error_wrap_apr (apr_err, _("Can't create directory '%s'"),
                                      unique_name);
         }
       else
@@ -1275,7 +1277,7 @@ create_unique_tmpdir (const char **name,
 
   *name = NULL;
   return svn_error_createf (SVN_ERR_IO_UNIQUE_NAMES_EXHAUSTED,
-                            NULL, "Can't create temporary directory");
+                            NULL, _("Can't create temporary directory"));
 }
 
 /* Print some diff-y stuff in a TBD way. :-) */
@@ -1295,7 +1297,7 @@ do_diff (svnlook_ctxt_t *c, apr_pool_t *
   if (! SVN_IS_VALID_REVNUM (base_rev_id))
     return svn_error_createf 
       (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
-       "Transaction '%s' is not based on a revision; how odd",
+       _("Transaction '%s' is not based on a revision; how odd"),
        c->txn_name);
   
   SVN_ERR (generate_delta_tree (&tree, c->repos, root, base_rev_id, 
@@ -1375,13 +1377,13 @@ do_history (svnlook_ctxt_t *c, 
 
   if (show_ids)
     {
-      printf ("REVISION   PATH <ID>\n");
-      printf ("--------   ---------\n");
+      printf (_("REVISION   PATH <ID>\n"
+                "--------   ---------\n"));
     }
   else
     {
-      printf ("REVISION   PATH\n");
-      printf ("--------   ----\n");
+      printf (_("REVISION   PATH\n"
+                "--------   ----\n"));
     }
 
   /* Call our history crawler.  We want the whole lifetime of the path
@@ -1417,7 +1419,7 @@ do_pget (svnlook_ctxt_t *c,
   if (prop == NULL)
     return svn_error_createf
       (SVN_ERR_PROPERTY_NOT_FOUND, NULL,
-       "Property '%s' not found on path '%s'", propname, path);
+       _("Property '%s' not found on path '%s'"), propname, path);
 
   /* Else. */
 
@@ -1571,7 +1573,7 @@ subcommand_cat (apr_getopt_t *os, void *
   if (opt_state->arg1 == NULL)
     return svn_error_createf
       (SVN_ERR_CL_INSUFFICIENT_ARGS, NULL,
-       "Missing repository path argument");
+       _("Missing repository path argument"));
 
   SVN_ERR (get_ctxt_baton (&c, opt_state, pool));
   SVN_ERR (do_cat (c, opt_state->arg1, pool));
@@ -1632,13 +1634,13 @@ subcommand_help (apr_getopt_t *os, void 
 {
   struct svnlook_opt_state *opt_state = baton;
   const char *header =
-    "general usage: svnlook SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...]\n"
+    _("general usage: svnlook SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...]\n"
     "Note: any subcommand which takes the '--revision' and '--transaction'\n"
     "      options will, if invoked without one of those options, act on\n"
     "      the repository's youngest revision.\n"
     "Type \"svnlook help <subcommand>\" for help on a specific subcommand.\n"
     "\n"
-    "Available subcommands:\n";
+    "Available subcommands:\n");
 
   SVN_ERR (svn_opt_print_help (os, "svnlook", 
                                opt_state ? opt_state->version : FALSE, 
@@ -1702,13 +1704,13 @@ subcommand_pget (apr_getopt_t *os, void 
     {
       return svn_error_createf
         (SVN_ERR_CL_INSUFFICIENT_ARGS, NULL,
-         "Missing propname and repository path arguments");
+         _("Missing propname and repository path arguments"));
     }
   else if (opt_state->arg2 == NULL)
     {
       return svn_error_createf
         (SVN_ERR_CL_INSUFFICIENT_ARGS, NULL,
-         "Missing propname or repository path argument");
+         _("Missing propname or repository path argument"));
     }
 
   SVN_ERR (get_ctxt_baton (&c, opt_state, pool));
@@ -1726,7 +1728,7 @@ subcommand_plist (apr_getopt_t *os, void
   if (opt_state->arg1 == NULL)
     return svn_error_createf
       (SVN_ERR_CL_INSUFFICIENT_ARGS, NULL,
-       "Missing repository path argument");
+       _("Missing repository path argument"));
 
   SVN_ERR (get_ctxt_baton (&c, opt_state, pool));
   SVN_ERR (do_plist (c, opt_state->arg1, opt_state->verbose, pool));
@@ -1791,6 +1793,12 @@ main (int argc, const char * const *argv
   int received_opts[SVN_OPT_MAX_OPTIONS];
   int i, num_opts = 0;
 
+#ifdef ENABLE_NLS
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE_NAME, LOCALEDIR);
+  textdomain (PACKAGE_NAME);
+#endif
+
   /* Initialize the app. */
   if (svn_cmdline_init ("svnlook", stderr) != EXIT_SUCCESS)
     return EXIT_FAILURE;
@@ -1846,7 +1854,7 @@ main (int argc, const char * const *argv
           if (! SVN_IS_VALID_REVNUM (opt_state.rev))
             SVN_INT_ERR (svn_error_create
                          (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                          "Invalid revision number supplied"));
+                          _("Invalid revision number supplied")));
           break;
 
         case 't':
@@ -1887,8 +1895,8 @@ main (int argc, const char * const *argv
   if ((opt_state.rev != SVN_INVALID_REVNUM) && opt_state.txn)
     SVN_INT_ERR (svn_error_create 
                  (SVN_ERR_CL_MUTUALLY_EXCLUSIVE_ARGS, NULL,
-                  "The '--transaction' (-t) and '--revision' (-r) arguments "
-                  "can not co-exist"));
+                  _("The '--transaction' (-t) and '--revision' (-r) arguments "
+                  "can not co-exist")));
 
   /* If the user asked for help, then the rest of the arguments are
      the names of subcommands to get help on (if any), or else they're
@@ -1903,7 +1911,7 @@ main (int argc, const char * const *argv
     {
       if (os->ind >= os->argc)
         {
-          fprintf (stderr, "subcommand argument required\n");
+          fprintf (stderr, _("subcommand argument required\n"));
           subcommand_help (NULL, NULL, pool);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
@@ -1914,7 +1922,7 @@ main (int argc, const char * const *argv
           subcommand = svn_opt_get_canonical_subcommand (cmd_table, first_arg);
           if (subcommand == NULL)
             {
-              fprintf (stderr, "unknown command: '%s'\n", first_arg);
+              fprintf (stderr, _("unknown command: '%s'\n"), first_arg);
               subcommand_help (NULL, NULL, pool);
               svn_pool_destroy (pool);
               return EXIT_FAILURE;
@@ -1944,7 +1952,7 @@ main (int argc, const char * const *argv
 
       if (repos_path == NULL)
         {
-          fprintf (stderr, "repository argument required\n");
+          fprintf (stderr, _("repository argument required\n"));
           subcommand_help (NULL, NULL, pool);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
@@ -1952,7 +1960,7 @@ main (int argc, const char * const *argv
       else if (svn_path_is_url (repos_path))
         {
           fprintf (stderr,
-                   "'%s' is a URL when it should be a path\n",
+                   _("'%s' is a URL when it should be a path\n"),
                    repos_path);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
@@ -1998,8 +2006,8 @@ main (int argc, const char * const *argv
             svn_opt_get_option_from_code (opt_id, options_table);
           svn_opt_format_option (&optstr, badopt, FALSE, pool);
           fprintf (stderr,
-                   "subcommand '%s' doesn't accept option '%s'\n"
-                   "Type 'svnlook help %s' for usage.\n",
+                   _("subcommand '%s' doesn't accept option '%s'\n"
+                   "Type 'svnlook help %s' for usage.\n"),
                    subcommand->name, optstr, subcommand->name);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
Index: subversion/clients/cmdline/props.c
===================================================================
--- subversion/clients/cmdline/props.c	(revision 9287)
+++ subversion/clients/cmdline/props.c	(working copy)
@@ -33,6 +33,7 @@
 #include "svn_subst.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
 
 
 
@@ -41,8 +42,8 @@ svn_cl__revprop_no_rev_error (apr_pool_t
 {
   return svn_error_create
     (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-     "Must specify revision explicitly when operating on a "
-     "revision property");
+     _("Must specify revision explicitly when operating on a "
+     "revision property"));
 }
 
 
Index: subversion/clients/cmdline/mkdir-cmd.c
===================================================================
--- subversion/clients/cmdline/mkdir-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/mkdir-cmd.c	(working copy)
@@ -31,6 +31,7 @@
 #include "svn_error.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
 
 
 /*** Code. ***/
@@ -70,7 +71,7 @@ svn_cl__mkdir (apr_getopt_t *os,
     {
       if (err->apr_err == APR_EEXIST)
         return svn_error_quick_wrap
-          (err, "Try 'svn add' or 'svn add --non-recursive' instead?");
+          (err, _("Try 'svn add' or 'svn add --non-recursive' instead?"));
       else
         return err;
     }
Index: subversion/clients/cmdline/blame-cmd.c
===================================================================
--- subversion/clients/cmdline/blame-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/blame-cmd.c	(working copy)
@@ -18,6 +18,7 @@
 
 
 /*** Includes. ***/
+
 #include "svn_client.h"
 #include "svn_error.h"
 #include "svn_pools.h"
@@ -25,6 +26,8 @@
 #include "svn_time.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 typedef struct
 {
   svn_cl__opt_state_t *opt_state;
@@ -137,7 +140,7 @@ svn_cl__blame (apr_getopt_t *os,
         {
           if (err->apr_err == SVN_ERR_CLIENT_IS_BINARY_FILE)
             {
-              printf ("Skipping binary file: '%s'\n", target);
+              printf (_("Skipping binary file: '%s'\n"), target);
               svn_error_clear (err);
             }
           else
Index: subversion/clients/cmdline/log-cmd.c
===================================================================
--- subversion/clients/cmdline/log-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/log-cmd.c	(working copy)
@@ -39,6 +39,8 @@
 #include "svn_subst.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 
@@ -203,7 +205,7 @@ log_message_receiver (void *baton,
      for more on the fallback fuzzy conversions below. */
 
   if (author == NULL)
-    author = "(no author)";
+    author = _("(no author)");
 
   err = svn_cmdline_cstring_from_utf8 (&author_stdout, author, pool);
   if (err && (APR_STATUS_IS_EINVAL (err->apr_err)))
@@ -225,7 +227,7 @@ log_message_receiver (void *baton,
       SVN_ERR (svn_cmdline_cstring_from_utf8 (&date_stdout, date_utf8, pool));
     }
   else
-    date_stdout = "(no date)";
+    date_stdout = _("(no date)");
   
   if (! lb->omit_log_message)
     {
Index: subversion/clients/cmdline/help-cmd.c
===================================================================
--- subversion/clients/cmdline/help-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/help-cmd.c	(working copy)
@@ -29,25 +29,11 @@
 #include "svn_utf.h"
 #include "cl.h"
 
-
-/*** Code. ***/
+#include "svn_private_config.h"
 
-const char svn_cl__help_header[] =
-    "usage: svn <subcommand> [options] [args]\n"
-    "Type \"svn help <subcommand>\" for help on a specific subcommand.\n"
-    "\n"
-    "Most subcommands take file and/or directory arguments, recursing\n"
-    "on the directories.  If no arguments are supplied to such a\n"
-    "command, it will recurse on the current directory (inclusive) by\n" 
-    "default.\n"
-    "\n"
-    "Available subcommands:\n";
-
-const char svn_cl__help_footer[] =
-    "Subversion is a tool for version control.\n"
-    "For additional information, see http://subversion.tigris.org/\n"
-    "\n";
 
+
+/*** Code. ***/
 
 /* This implements the `svn_opt_subcommand_t' interface. */
 svn_error_t *
@@ -73,15 +59,25 @@ svn_cl__help (apr_getopt_t *os,
   svn_stringbuf_appendstr (ra_desc_all, ra_desc_body);
 
   SVN_ERR (svn_opt_print_help (os,
-                               "svn",   /* ### erm, derive somehow? */
-                               opt_state ? opt_state->version : FALSE,
-                               opt_state ? opt_state->quiet : FALSE,
-                               ra_desc_all->data,
-                               svn_cl__help_header,
-                               svn_cl__cmd_table,
-                               svn_cl__options,
-                               svn_cl__help_footer,
-                               pool));
+    "svn",   /* ### erm, derive somehow? */
+    opt_state ? opt_state->version : FALSE,
+    opt_state ? opt_state->quiet : FALSE,
+    ra_desc_all->data,
+    _("usage: svn <subcommand> [options] [args]\n"
+    "Type \"svn help <subcommand>\" for help on a specific subcommand.\n"
+    "\n"
+    "Most subcommands take file and/or directory arguments, recursing\n"
+    "on the directories.  If no arguments are supplied to such a\n"
+    "command, it will recurse on the current directory (inclusive) by\n" 
+    "default.\n"
+    "\n"
+    "Available subcommands:\n"),
+    svn_cl__cmd_table,
+    svn_cl__options,
+    _("Subversion is a tool for version control.\n"
+    "For additional information, see http://subversion.tigris.org/\n"
+    "\n"),
+    pool));
 
   return SVN_NO_ERROR;
 }
Index: subversion/clients/cmdline/delete-cmd.c
===================================================================
--- subversion/clients/cmdline/delete-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/delete-cmd.c	(working copy)
@@ -31,6 +31,7 @@
 #include "svn_pools.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
 
 
 /*** Code. ***/
@@ -45,7 +46,7 @@ svn_cl__may_need_force (svn_error_t *err
       /* Should this svn_error_compose a new error number? Probably not,
          the error hasn't changed. */
       err = svn_error_quick_wrap (err,
-                                  "Use --force to override this restriction" );
+                                  _("Use --force to override this restriction") );
     }
 
   return err;
Index: subversion/clients/cmdline/notify.c
===================================================================
--- subversion/clients/cmdline/notify.c	(revision 9287)
+++ subversion/clients/cmdline/notify.c	(working copy)
@@ -32,6 +32,8 @@
 #include "svn_pools.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /* Baton for notify and friends. */
 struct notify_baton
@@ -66,7 +68,7 @@ notify (void *baton,
   err = svn_cmdline_path_local_style_from_utf8 (&path_stdout, path, nb->pool);
   if (err)
     {
-      printf ("WARNING: error decoding UTF-8 for ?\n");
+      printf (_("WARNING: error decoding UTF-8 for ?\n"));
       svn_pool_clear (nb->pool);
       svn_error_clear (err);
       return;
@@ -75,9 +77,9 @@ notify (void *baton,
     {
     case svn_wc_notify_skip:
       if (content_state == svn_wc_notify_state_missing)
-        printf ("Skipped missing target: '%s'\n", path_stdout);
+        printf (_("Skipped missing target: '%s'\n"), path_stdout);
       else
-        printf ("Skipped '%s'\n", path_stdout);
+        printf (_("Skipped '%s'\n"), path_stdout);
       break;
 
     case svn_wc_notify_update_delete:
@@ -91,19 +93,19 @@ notify (void *baton,
       break;
 
     case svn_wc_notify_restore:
-      printf ("Restored '%s'\n", path_stdout);
+      printf (_("Restored '%s'\n"), path_stdout);
       break;
 
     case svn_wc_notify_revert:
-      printf ("Reverted '%s'\n", path_stdout);
+      printf (_("Reverted '%s'\n"), path_stdout);
       break;
 
     case svn_wc_notify_failed_revert:
-      printf ("Failed to revert '%s' -- try updating instead.\n", path_stdout);
+      printf (_("Failed to revert '%s' -- try updating instead.\n"), path_stdout);
       break;
 
     case svn_wc_notify_resolved:
-      printf ("Resolved conflicted state of '%s'\n", path_stdout);
+      printf (_("Resolved conflicted state of '%s'\n"), path_stdout);
       break;
 
     case svn_wc_notify_add:
@@ -162,7 +164,7 @@ notify (void *baton,
     case svn_wc_notify_update_external:
       /* Currently this is used for checkouts and switches too.  If we
          want different output, we'll have to add new actions. */
-      printf ("\nFetching external item into '%s'\n", path_stdout);
+      printf (_("\nFetching external item into '%s'\n"), path_stdout);
 
       /* Remember that we're now "inside" an externals definition. */
       nb->in_external = TRUE;
@@ -197,8 +199,7 @@ notify (void *baton,
             else  /* no revision */
               {
                 if (nb->is_export)
-                  printf ("%sxport complete.\n",
-                          nb->in_external ? "External e" : "E");
+                  printf (nb->in_external ? _("External export complete.\n") : _("Export complete.\n"));
                 else if (nb->is_checkout)
                   printf ("%sheckout complete.\n",
                           nb->in_external ? "External c" : "C");
@@ -214,7 +215,7 @@ notify (void *baton,
       break;
 
     case svn_wc_notify_status_external:
-      printf ("\nPerforming status on external item at '%s'\n", path_stdout);
+      printf (_("\nPerforming status on external item at '%s'\n"), path_stdout);
       break;
 
     case svn_wc_notify_status_completed:
@@ -223,7 +224,7 @@ notify (void *baton,
       break;
 
     case svn_wc_notify_commit_modified:
-      printf ("Sending        %s\n", path_stdout);
+      printf (_("Sending        %s\n"), path_stdout);
       break;
 
     case svn_wc_notify_commit_added:
@@ -238,13 +239,13 @@ notify (void *baton,
       break;
 
     case svn_wc_notify_commit_replaced:
-      printf ("Replacing      %s\n", path_stdout);
+      printf (_("Replacing      %s\n"), path_stdout);
       break;
 
     case svn_wc_notify_commit_postfix_txdelta:
       if (! nb->sent_first_txdelta)
         {
-          printf ("Transmitting file data ");
+          printf (_("Transmitting file data "));
           nb->sent_first_txdelta = TRUE;
         }
 
Index: subversion/clients/cmdline/export-cmd.c
===================================================================
--- subversion/clients/cmdline/export-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/export-cmd.c	(working copy)
@@ -29,6 +29,8 @@
 #include "svn_path.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 
@@ -73,8 +75,8 @@ svn_cl__export (apr_getopt_t *os,
                            opt_state->force, ctx, pool);
   if (err && err->apr_err == SVN_ERR_WC_OBSTRUCTED_UPDATE && !opt_state->force)
     SVN_ERR_W (err,
-               "Destination directory exists; please remove "
-               "the directory or use --force to overwrite");
+               _("Destination directory exists; please remove "
+               "the directory or use --force to overwrite"));
   else
     SVN_ERR (err);
 
Index: subversion/clients/cmdline/main.c
===================================================================
--- subversion/clients/cmdline/main.c	(revision 9287)
+++ subversion/clients/cmdline/main.c	(working copy)
@@ -47,6 +47,8 @@
 #include "svn_auth.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /*** Option Processing ***/
 
@@ -59,74 +61,74 @@
  */
 const apr_getopt_option_t svn_cl__options[] =
   {
-    {"force",         svn_cl__force_opt, 0, "force operation to run"},
-    {"force-log",     svn_cl__force_log_opt, 0, "force validity of log message source"},
-    {"help",          'h', 0, "show help on a subcommand"},
-    {NULL,            '?', 0, "show help on a subcommand"},
-    {"message",       'm', 1, "specify commit message ARG"},
-    {"quiet",         'q', 0, "print as little as possible"},
-    {"recursive",     'R', 0, "descend recursively"},
-    {"non-recursive", 'N', 0, "operate on single directory only"},
+    {"force",         svn_cl__force_opt, 0, N_("force operation to run")},
+    {"force-log",     svn_cl__force_log_opt, 0, N_("force validity of log message source")},
+    {"help",          'h', 0, N_("show help on a subcommand")},
+    {NULL,            '?', 0, N_("show help on a subcommand")},
+    {"message",       'm', 1, N_("specify commit message ARG")},
+    {"quiet",         'q', 0, N_("print as little as possible")},
+    {"recursive",     'R', 0, N_("descend recursively")},
+    {"non-recursive", 'N', 0, N_("operate on single directory only")},
     {"revision",      'r', 1,
-                  "ARG (some commands also take ARG1:ARG2 range)\n"
+                  N_("ARG (some commands also take ARG1:ARG2 range)\n"
      "                             A revision argument can be one of:\n"
      "                                NUMBER       revision number\n"
      "                                \"{\" DATE \"}\" revision at start of the date\n"
      "                                \"HEAD\"       latest in repository\n"
      "                                \"BASE\"       base rev of item's working copy\n"
      "                                \"COMMITTED\"  last commit at or before BASE\n"
-     "                                \"PREV\"       revision just before COMMITTED"
+     "                                \"PREV\"       revision just before COMMITTED")
      /* spacing corresponds to svn_opt_format_option */
     },
-    {"file",          'F', 1, "read data from file ARG"},
+    {"file",          'F', 1, N_("read data from file ARG")},
     {"incremental",   svn_cl__incremental_opt, 0,
-                      "give output suitable for concatenation"},
+                      N_("give output suitable for concatenation")},
     {"encoding",      svn_cl__encoding_opt, 1,
-                      "treat value as being in charset encoding ARG"},
-    {"version",       svn_cl__version_opt, 0, "print client version info"},
-    {"verbose",       'v', 0, "print extra information"},
-    {"show-updates",  'u', 0, "display update information"},
-    {"username",      svn_cl__auth_username_opt, 1, "specify a username ARG"},
-    {"password",      svn_cl__auth_password_opt, 1, "specify a password ARG"},
-    {"extensions",    'x', 1, "pass ARG as bundled options to GNU diff"},
+                      N_("treat value as being in charset encoding ARG")},
+    {"version",       svn_cl__version_opt, 0, N_("print client version info")},
+    {"verbose",       'v', 0, N_("print extra information")},
+    {"show-updates",  'u', 0, N_("display update information")},
+    {"username",      svn_cl__auth_username_opt, 1, N_("specify a username ARG")},
+    {"password",      svn_cl__auth_password_opt, 1, N_("specify a password ARG")},
+    {"extensions",    'x', 1, N_("pass ARG as bundled options to GNU diff")},
     {"targets",       svn_cl__targets_opt, 1,
-                      "pass contents of file ARG as additional args"},
-    {"xml",           svn_cl__xml_opt, 0, "output in XML"},
-    {"strict",        svn_cl__strict_opt, 0, "use strict semantics"},
+                      N_("pass contents of file ARG as additional args")},
+    {"xml",           svn_cl__xml_opt, 0, N_("output in XML")},
+    {"strict",        svn_cl__strict_opt, 0, N_("use strict semantics")},
     {"stop-on-copy",  svn_cl__stop_on_copy_opt, 0, 
-                      "do not cross copies while traversing history"},
+                      N_("do not cross copies while traversing history")},
     {"no-ignore",     svn_cl__no_ignore_opt, 0,
-                      "disregard default and svn:ignore property ignores"},
+                      N_("disregard default and svn:ignore property ignores")},
     {"no-auth-cache", svn_cl__no_auth_cache_opt, 0,
-                      "do not cache authentication tokens"},
+                      N_("do not cache authentication tokens")},
     {"non-interactive", svn_cl__non_interactive_opt, 0,
-                      "do no interactive prompting"},
+                      N_("do no interactive prompting")},
     {"dry-run",       svn_cl__dry_run_opt, 0,
-                      "try operation but make no changes"},
+                      N_("try operation but make no changes")},
     {"no-diff-deleted", svn_cl__no_diff_deleted, 0,
-                       "do not print differences for deleted files"},
+                       N_("do not print differences for deleted files")},
     {"notice-ancestry", svn_cl__notice_ancestry_opt, 0,
-                       "notice ancestry when calculating differences"},
+                       N_("notice ancestry when calculating differences")},
     {"ignore-ancestry", svn_cl__ignore_ancestry_opt, 0,
-                       "ignore ancestry when calculating merges"},
+                       N_("ignore ancestry when calculating merges")},
     {"diff-cmd",      svn_cl__diff_cmd_opt, 1,
-                      "use ARG as diff command"},
+                      N_("use ARG as diff command")},
     {"diff3-cmd",     svn_cl__merge_cmd_opt, 1,
-                      "use ARG as merge command"},
+                      N_("use ARG as merge command")},
     {"editor-cmd",    svn_cl__editor_cmd_opt, 1,
-                      "use ARG as external editor"},
-    {"old",           svn_cl__old_cmd_opt, 1, "use ARG as the older target"},
-    {"new",           svn_cl__new_cmd_opt, 1, "use ARG as the newer target"},
+                      N_("use ARG as external editor")},
+    {"old",           svn_cl__old_cmd_opt, 1, N_("use ARG as the older target")},
+    {"new",           svn_cl__new_cmd_opt, 1, N_("use ARG as the newer target")},
     {"revprop",       svn_cl__revprop_opt, 0,
-                      "operate on a revision property (use with -r)"},
+                      N_("operate on a revision property (use with -r)")},
     {"relocate",      svn_cl__relocate_opt, 0,
-                      "relocate via URL-rewriting"},
+                      N_("relocate via URL-rewriting")},
     {"config-dir",    svn_cl__config_dir_opt, 1,
-                      "read user configuration files from directory ARG"},
+                      N_("read user configuration files from directory ARG")},
     {"auto-props",    svn_cl__autoprops_opt, 0,
-                      "enable automatic properties"},
+                      N_("enable automatic properties")},
     {"no-auto-props", svn_cl__no_autoprops_opt, 0,
-                      "disable automatic properties"},
+                      N_("disable automatic properties")},
     {0,               0, 0, 0}
   };
 
@@ -151,63 +153,63 @@ const apr_getopt_option_t svn_cl__option
 const svn_opt_subcommand_desc_t svn_cl__cmd_table[] =
 {
   { "add", svn_cl__add, {0},
-    "Put files and directories under version control, scheduling\n"
+    N_("Put files and directories under version control, scheduling\n"
     "them for addition to repository.  They will be added in next commit.\n"
-    "usage: add PATH...\n",
+    "usage: add PATH...\n"),
     {svn_cl__targets_opt, 'N', 'q', svn_cl__config_dir_opt,
      svn_cl__autoprops_opt, svn_cl__no_autoprops_opt} },
 
   { "blame", svn_cl__blame, {"praise", "annotate", "ann"},
-    "Output the content of specified files or\n"
+    N_("Output the content of specified files or\n"
     "URLs with revision and author information in-line.\n"
-    "usage: blame TARGET...\n",
+    "usage: blame TARGET...\n"),
     {'r', 'v', SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
 
   { "cat", svn_cl__cat, {0},
-    "Output the content of specified files or URLs.\n"
-    "usage: cat TARGET...\n",
+    N_("Output the content of specified files or URLs.\n"
+    "usage: cat TARGET...\n"),
     {'r', SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
 
   { "checkout", svn_cl__checkout, {"co"},
-    "Check out a working copy from a repository.\n"
+    N_("Check out a working copy from a repository.\n"
     "usage: checkout URL... [PATH]\n"
     "\n"
     "  Note: If PATH is omitted, the basename of the URL will be used as\n"
     "  the destination. If multiple URLs are given each will be checked\n"
     "  out into a sub-directory of PATH, with the name of the sub-directory\n"
-    "  being the basename of the URL.\n",
+    "  being the basename of the URL.\n"),
     {'r', 'q', 'N', SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
 
   { "cleanup", svn_cl__cleanup, {0},
-    "Recursively clean up the working copy, removing locks, resuming\n"
+    N_("Recursively clean up the working copy, removing locks, resuming\n"
     "unfinished operations, etc.\n"
-    "usage: cleanup [PATH...]\n",
+    "usage: cleanup [PATH...]\n"),
     {svn_cl__merge_cmd_opt, svn_cl__config_dir_opt} },
   
   { "commit", svn_cl__commit, {"ci"},
-    "Send changes from your working copy to the repository.\n"
+    N_("Send changes from your working copy to the repository.\n"
     "usage: commit [PATH...]\n"
     "\n"
     "  A log message must be provided, but it can be empty.  If it is not\n"
-    "  given by a --message or --file option, an editor will be started.\n",
+    "  given by a --message or --file option, an editor will be started.\n"),
     {'m', 'F', 'q', 'N', svn_cl__targets_opt,
      svn_cl__force_log_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__editor_cmd_opt, svn_cl__encoding_opt, svn_cl__config_dir_opt} },
   
   { "copy", svn_cl__copy, {"cp"},
-    "Duplicate something in working copy or repos, remembering history.\n"
+    N_("Duplicate something in working copy or repos, remembering history.\n"
     "usage: copy SRC DST\n"
     "\n"
     "  SRC and DST can each be either a working copy (WC) path or URL:\n"
     "    WC  -> WC:   copy and schedule for addition (with history)\n"
     "    WC  -> URL:  immediately commit a copy of WC to URL\n"
     "    URL -> WC:   check out URL into WC, schedule for addition\n"
-    "    URL -> URL:  complete server-side copy;  used to branch & tag\n",
+    "    URL -> URL:  complete server-side copy;  used to branch & tag\n"),
     {'m', 'F', 'r', 'q', SVN_CL__AUTH_OPTIONS, svn_cl__force_log_opt,
      svn_cl__editor_cmd_opt, svn_cl__encoding_opt, svn_cl__config_dir_opt} },
   
   { "delete", svn_cl__delete, {"del", "remove", "rm"},
-    "Remove files and directories from version control.\n"
+    N_("Remove files and directories from version control.\n"
     "usage: 1. delete PATH...\n"
     "       2. delete URL...\n"
     "\n"
@@ -218,13 +220,13 @@ const svn_opt_subcommand_desc_t svn_cl__
     "    not be removed unless the --force option is given.\n"
     "\n"
     "  2. Each item specified by a URL is deleted from the repository\n"
-    "    via an immediate commit.\n",
+    "    via an immediate commit.\n"),
     {svn_cl__force_opt, svn_cl__force_log_opt, 'm', 'F', 'q', 
      svn_cl__targets_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__editor_cmd_opt, svn_cl__encoding_opt, svn_cl__config_dir_opt} },
   
   { "diff", svn_cl__diff, {"di"},
-    "Display the differences between two paths.\n"
+    N_("Display the differences between two paths.\n"
     "usage: 1. diff [-r N[:M]] [--old OLD-TGT] [--new NEW-TGT] [PATH...]\n"
     "       2. diff -r N:M URL\n"
     "       3. diff [-r N[:M]] URL1[@N] URL2[@M]\n"
@@ -246,14 +248,14 @@ const svn_opt_subcommand_desc_t svn_cl__
     "\n"
     "  3. Shorthand for 'svn diff [-r N[:M]] --old=URL1 --new=URL2'\n"
     "\n"
-    "  Use just 'svn diff' to display local modifications in a working copy\n",
+    "  Use just 'svn diff' to display local modifications in a working copy\n"),
     {'r', svn_cl__old_cmd_opt, svn_cl__new_cmd_opt, 'x', 'N',
      svn_cl__diff_cmd_opt, svn_cl__no_diff_deleted,
      svn_cl__notice_ancestry_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__config_dir_opt} },
 
   { "export", svn_cl__export, {0},
-    "Create an unversioned copy of a tree.\n"
+    N_("Create an unversioned copy of a tree.\n"
     "usage: 1. export [-r REV] URL [PATH]\n"
     "       2. export [-r REV] PATH1 [PATH2]\n"
     "\n"
@@ -267,13 +269,13 @@ const svn_opt_subcommand_desc_t svn_cl__
     "     PATH2.  If PATH2 is omitted, the last component of the PATH1 is used\n"
     "     for the local directory name. If REV is not specified, all local\n"
     "     changes will be preserved, but files not under version control will\n"
-    "     not be copied.\n",
+    "     not be copied.\n"),
     {'r', 'q', svn_cl__force_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__config_dir_opt} },
 
   { "help", svn_cl__help, {"?", "h"},
-    "Describe the usage of this program or its subcommands.\n"
-    "usage: help [SUBCOMMAND...]\n",
+    N_("Describe the usage of this program or its subcommands.\n"
+    "usage: help [SUBCOMMAND...]\n"),
     {svn_cl__version_opt, 'q', svn_cl__config_dir_opt} },
   /* We need to support "--help", "-?", and all that good stuff, of
      course.  But those options, since unknown, will result in the
@@ -281,25 +283,25 @@ const svn_opt_subcommand_desc_t svn_cl__
      support them explicitly. */
   
   { "import", svn_cl__import, {0},
-    "Commit an unversioned file or tree into the repository.\n"
+    N_("Commit an unversioned file or tree into the repository.\n"
     "usage: import [PATH] URL\n"
     "\n"
     "  Recursively commit a copy of PATH to URL.\n"
     "  If PATH is omitted '.' is assumed.  Parent directories are created\n"
-    "  as necessary in the repository.\n",
+    "  as necessary in the repository.\n"),
     {'m', 'F', 'q', 'N', SVN_CL__AUTH_OPTIONS, svn_cl__force_log_opt,
      svn_cl__editor_cmd_opt, svn_cl__encoding_opt, svn_cl__config_dir_opt,
      svn_cl__autoprops_opt, svn_cl__no_autoprops_opt} },
  
   { "info", svn_cl__info, {0},
-    "Display information about a file or directory.\n"
+    N_("Display information about a file or directory.\n"
     "usage: info [PATH...]\n"
     "\n"
-    "  Print information about each PATH (default: '.').\n",
+    "  Print information about each PATH (default: '.').\n"),
     {svn_cl__targets_opt, 'R', svn_cl__config_dir_opt} },
  
   { "list", svn_cl__ls, {"ls"},
-    "List directory entries in the repository.\n"
+    N_("List directory entries in the repository.\n"
     "usage: list [TARGET...]\n"
     "\n"
     "  List each TARGET file and the contents of each TARGET directory as\n"
@@ -314,11 +316,11 @@ const svn_opt_subcommand_desc_t svn_cl__
     "    Revision number of the last commit\n"
     "    Author of the last commit\n"
     "    Size (in bytes)\n"
-    "    Date and time of the last commit\n",
+    "    Date and time of the last commit\n"),
     {'r', 'v', 'R', SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
   
   { "log", svn_cl__log, {0},
-    "Show the log messages for a set of revision(s) and/or file(s).\n"
+    N_("Show the log messages for a set of revision(s) and/or file(s).\n"
     "usage: 1. log [PATH]\n"
     "       2. log URL [PATH...]\n"
     "\n"
@@ -341,13 +343,13 @@ const svn_opt_subcommand_desc_t svn_cl__
     "    svn log\n"
     "    svn log foo.c\n"
     "    svn log http://www.example.com/repo/project/foo.c\n"
-    "    svn log http://www.example.com/repo/project foo.c bar.c\n",
+    "    svn log http://www.example.com/repo/project foo.c bar.c\n"),
     {'r', 'q', 'v', svn_cl__targets_opt, svn_cl__stop_on_copy_opt,
      svn_cl__incremental_opt, svn_cl__xml_opt, SVN_CL__AUTH_OPTIONS, 
      svn_cl__config_dir_opt} },
 
   { "merge", svn_cl__merge, {0},
-    "Apply the differences between two sources to a working copy path.\n"
+    N_("Apply the differences between two sources to a working copy path.\n"
     "usage: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]\n"
     "       2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]\n"
     "       3. merge -r N:M SOURCE [WCPATH]\n"
@@ -367,13 +369,13 @@ const svn_opt_subcommand_desc_t svn_cl__
     "  WCPATH is the working copy path that will receive the changes.\n"
     "  If WCPATH is omitted, a default value of '.' is assumed, unless\n"
     "  the sources have identical basenames that match a file within '.':\n"
-    "  in which case, the differences will be applied to that file.\n",
+    "  in which case, the differences will be applied to that file.\n"),
     {'r', 'N', 'q', svn_cl__force_opt, svn_cl__dry_run_opt,
      svn_cl__merge_cmd_opt, svn_cl__ignore_ancestry_opt, 
      SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
   
   { "mkdir", svn_cl__mkdir, {0},
-    "Create a new directory under version control.\n"
+    N_("Create a new directory under version control.\n"
     "usage: 1. mkdir PATH...\n"
     "       2. mkdir URL...\n"
     "\n"
@@ -385,46 +387,46 @@ const svn_opt_subcommand_desc_t svn_cl__
     "  2. Each directory specified by a URL is created in the repository via\n"
     "    an immediate commit.\n"
     "\n"
-    "  In both cases, all the intermediate directories must already exist.\n",
+    "  In both cases, all the intermediate directories must already exist.\n"),
     {'m', 'F', 'q', SVN_CL__AUTH_OPTIONS, svn_cl__editor_cmd_opt,
      svn_cl__encoding_opt, svn_cl__force_log_opt, svn_cl__config_dir_opt} },
 
   { "move", svn_cl__move, {"mv", "rename", "ren"},
-    "Move and/or rename something in working copy or repository.\n"
+    N_("Move and/or rename something in working copy or repository.\n"
     "usage: move SRC DST\n"
     "\n"
     "  Note:  this subcommand is equivalent to a 'copy' and 'delete'.\n"
     "\n"
     "  SRC and DST can both be working copy (WC) paths or URLs:\n"
     "    WC  -> WC:   move and schedule for addition (with history)\n"
-    "    URL -> URL:  complete server-side rename.\n",    
+    "    URL -> URL:  complete server-side rename.\n"),    
     {'m', 'F', 'r', 'q', svn_cl__force_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__editor_cmd_opt, svn_cl__encoding_opt, svn_cl__force_log_opt,
      svn_cl__config_dir_opt} },
   
   { "propdel", svn_cl__propdel, {"pdel", "pd"},
-    "Remove PROPNAME from files, dirs, or revisions.\n"
+    N_("Remove PROPNAME from files, dirs, or revisions.\n"
     "usage: 1. propdel PROPNAME [PATH...]\n"
     "       2. propdel PROPNAME --revprop -r REV [URL]\n"
     "\n"
     "  1. Removes versioned props in working copy.\n"
-    "  2. Removes unversioned remote prop on repos revision.\n",
+    "  2. Removes unversioned remote prop on repos revision.\n"),
     {'q', 'R', 'r', svn_cl__revprop_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__config_dir_opt} },
   
   { "propedit", svn_cl__propedit, {"pedit", "pe"},
-    "Edit property PROPNAME with $EDITOR on targets.\n"
+    N_("Edit property PROPNAME with $EDITOR on targets.\n"
     "usage: 1. propedit PROPNAME PATH...\n"
     "       2. propedit PROPNAME --revprop -r REV [URL]\n"
     "\n"
     "  1. Edits versioned props in working copy.\n"
-    "  2. Edits unversioned remote prop on repos revision.\n",
+    "  2. Edits unversioned remote prop on repos revision.\n"),
     {'r', svn_cl__revprop_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__encoding_opt, svn_cl__editor_cmd_opt, svn_cl__force_opt,
      svn_cl__config_dir_opt} },
   
   { "propget", svn_cl__propget, {"pget", "pg"},
-    "Print value of PROPNAME on files, dirs, or revisions.\n"
+    N_("Print value of PROPNAME on files, dirs, or revisions.\n"
     "usage: 1. propget PROPNAME [PATH...]\n"
     "       2. propget PROPNAME --revprop -r REV [URL]\n"
     "\n"
@@ -436,22 +438,22 @@ const svn_opt_subcommand_desc_t svn_cl__
     "  whenever there are multiple paths involved, each property value\n"
     "  is prefixed with the path with which it is associated.  Use\n"
     "  the --strict option to disable these beautifications (useful,\n"
-    "  for example, when redirecting binary property values to a file).\n",
+    "  for example, when redirecting binary property values to a file).\n"),
     {'R', 'r', svn_cl__revprop_opt, svn_cl__strict_opt, 
      SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
 
   { "proplist", svn_cl__proplist, {"plist", "pl"},
-    "List all properties on files, dirs, or revisions.\n"
+    N_("List all properties on files, dirs, or revisions.\n"
     "usage: 1. proplist [PATH...]\n"
     "       2. proplist --revprop -r REV [URL]\n"
     "\n"
     "  1. Lists versioned props in working copy.\n"
-    "  2. Lists unversioned remote props on repos revision.\n",
+    "  2. Lists unversioned remote props on repos revision.\n"),
     {'v', 'R', 'r', 'q', svn_cl__revprop_opt, SVN_CL__AUTH_OPTIONS,
      svn_cl__config_dir_opt} },
 
   { "propset", svn_cl__propset, {"pset", "ps"},
-    "Set PROPNAME to PROPVAL on files, dirs, or revisions.\n"
+    N_("Set PROPNAME to PROPVAL on files, dirs, or revisions.\n"
     "usage: 1. propset PROPNAME [PROPVAL | -F VALFILE] PATH...\n"
     "       2. propset PROPNAME --revprop -r REV [PROPVAL | -F VALFILE] [URL]\n"
     "\n"
@@ -483,31 +485,31 @@ const svn_opt_subcommand_desc_t svn_cl__
     "      each of which consists of a relative directory path, optional\n"
     "      revision flags, and an URL.  For example\n"
     "        foo             http://example.com/repos/zig\n"
-    "        foo/bar -r 1234 http://example.com/repos/zag\n",
+    "        foo/bar -r 1234 http://example.com/repos/zag\n"),
     {'F', 'q', 'r', svn_cl__targets_opt, 'R', svn_cl__revprop_opt,
      SVN_CL__AUTH_OPTIONS, svn_cl__encoding_opt, svn_cl__force_opt,
      svn_cl__config_dir_opt} },
   
   { "resolved", svn_cl__resolved, {0},
-    "Remove 'conflicted' state on working copy files or directories.\n"
+    N_("Remove 'conflicted' state on working copy files or directories.\n"
     "usage: resolved PATH...\n"
     "\n"
     "  Note:  this subcommand does not semantically resolve conflicts or\n"
     "  remove conflict markers; it merely removes the conflict-related\n"
-    "  artifact files and allows PATH to be committed again.\n",
+    "  artifact files and allows PATH to be committed again.\n"),
     {svn_cl__targets_opt, 'R', 'q', svn_cl__config_dir_opt} },
  
   { "revert", svn_cl__revert, {0},
-    "Restore pristine working copy file (undo most local edits).\n"
+    N_("Restore pristine working copy file (undo most local edits).\n"
     "usage: revert PATH...\n"
     "\n"
     "  Note:  this subcommand does not require network access, and resolves\n"
     "  any conflicted states.  However, it does not restore removed "
-    "directories.\n",
+    "directories.\n"),
     {svn_cl__targets_opt, 'R', 'q', svn_cl__config_dir_opt} },
 
   { "status", svn_cl__status, {"stat", "st"},
-    "Print the status of working copy files and directories.\n"
+    N_("Print the status of working copy files and directories.\n"
     "usage: status [PATH...]\n"
     "\n"
     "  With no args, print only locally modified items (no network access).\n"
@@ -568,12 +570,12 @@ const svn_opt_subcommand_desc_t svn_cl__
     "           *     965       922 sussman      wc/foo.c\n"
     "    A  +         965       687 joe          wc/qax.c\n"
     "                 965       687 joe          wc/zig.c\n"
-    "    Head revision:   981\n",
+    "    Head revision:   981\n"),
     { 'u', 'v', 'N', 'q', svn_cl__no_ignore_opt, SVN_CL__AUTH_OPTIONS, 
       svn_cl__config_dir_opt} },
   
   { "switch", svn_cl__switch, {"sw"},
-    "Update the working copy to a different URL.\n"
+    N_("Update the working copy to a different URL.\n"
     "usage: 1. switch URL [PATH]\n"
     "       2. switch --relocate FROM TO [PATH...]\n"
     "\n"
@@ -584,12 +586,12 @@ const svn_opt_subcommand_desc_t svn_cl__
     "  2. Rewrite working copy URL metadata to reflect a syntactic change only.\n"
     "     This is used when repository's root URL changes (such as a schema\n"
     "     or hostname change) but your working copy still reflects the same\n"
-    "     directory within the same repository.\n",
+    "     directory within the same repository.\n"),
     { 'r', 'N', 'q', svn_cl__merge_cmd_opt, svn_cl__relocate_opt,
       SVN_CL__AUTH_OPTIONS, svn_cl__config_dir_opt} },
  
   { "update", svn_cl__update, {"up"}, 
-    "Bring changes from the repository into the working copy.\n"
+    N_("Bring changes from the repository into the working copy.\n"
     "usage: update [PATH...]\n"
     "\n"
     "  If no revision given, bring working copy up-to-date with HEAD rev.\n"
@@ -605,7 +607,7 @@ const svn_opt_subcommand_desc_t svn_cl__
     "    G  Merged\n"
     "\n"
     "  A character in the first column signifies an update to the actual file,\n"
-    "  while updates to the file's properties are shown in the second column.\n",
+    "  while updates to the file's properties are shown in the second column.\n"),
     {'r', 'N', 'q', svn_cl__merge_cmd_opt, SVN_CL__AUTH_OPTIONS, 
      svn_cl__config_dir_opt} },
 
@@ -629,7 +631,7 @@ svn_error_t *
 svn_cl__check_cancel (void *baton)
 {
   if (cancelled)
-    return svn_error_create (SVN_ERR_CANCELLED, NULL, "Caught signal");
+    return svn_error_create (SVN_ERR_CANCELLED, NULL, _("Caught signal"));
   else
     return SVN_NO_ERROR;
 }
@@ -656,7 +658,7 @@ main (int argc, const char * const *argv
   svn_cl__cmd_baton_t command_baton;
   svn_auth_baton_t *ab;
   svn_config_t *cfg;
-
+  
   /* Initialize the app. */
   if (svn_cmdline_init ("svn", stderr) != EXIT_SUCCESS)
     return EXIT_FAILURE;
@@ -720,8 +722,8 @@ main (int argc, const char * const *argv
           {
             err = svn_error_create
               (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-               "Multiple revision arguments encountered; "
-               "try '-r M:N' instead of '-r M -r N'");
+               _("Multiple revision arguments encountered; "
+               "try '-r M:N' instead of '-r M -r N'"));
             svn_handle_error (err, stderr, FALSE);
             svn_error_clear (err);
             svn_pool_destroy (pool);
@@ -735,7 +737,7 @@ main (int argc, const char * const *argv
             if (! err)
               err = svn_error_createf
                 (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                 "Syntax error in revision argument '%s'",
+                 _("Syntax error in revision argument '%s'"),
                  utf8_opt_arg);
             svn_handle_error (err, stderr, FALSE);
             svn_error_clear (err);
@@ -909,8 +911,8 @@ main (int argc, const char * const *argv
         if (opt_state.no_autoprops)
           {
             err = svn_error_create (SVN_ERR_CL_MUTUALLY_EXCLUSIVE_ARGS, NULL,
-                                    "--auto-props and --no-auto-props are "
-                                    "mutually exclusive");
+                                    _("--auto-props and --no-auto-props are "
+                                    "mutually exclusive"));
             svn_handle_error (err, stderr, FALSE);
             svn_error_clear (err);
             svn_pool_destroy (pool);
@@ -922,8 +924,8 @@ main (int argc, const char * const *argv
         if (opt_state.autoprops)
           {
             err = svn_error_create (SVN_ERR_CL_MUTUALLY_EXCLUSIVE_ARGS, NULL,
-                                    "--auto-props and --no-auto-props are "
-                                    "mutually exclusive");
+                                    _("--auto-props and --no-auto-props are "
+                                    "mutually exclusive"));
             svn_handle_error (err, stderr, FALSE);
             svn_error_clear (err);
             svn_pool_destroy (pool);
@@ -970,7 +972,7 @@ main (int argc, const char * const *argv
     {
       if (os->ind >= os->argc)
         {
-          fprintf (stderr, "subcommand argument required\n");
+          fprintf (stderr, _("subcommand argument required\n"));
           svn_cl__help (NULL, NULL, pool);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
@@ -982,7 +984,7 @@ main (int argc, const char * const *argv
                                                          first_arg);
           if (subcommand == NULL)
             {
-              fprintf (stderr, "unknown command: '%s'\n", first_arg);
+              fprintf (stderr, _("unknown command: '%s'\n"), first_arg);
               svn_cl__help (NULL, NULL, pool);
               svn_pool_destroy (pool);
               return EXIT_FAILURE;
@@ -1009,8 +1011,8 @@ main (int argc, const char * const *argv
             svn_opt_get_option_from_code (opt_id, svn_cl__options);
           svn_opt_format_option (&optstr, badopt, FALSE, pool);
           fprintf (stderr,
-                   "subcommand '%s' doesn't accept option '%s'\n"
-                   "Type 'svn help %s' for usage.\n",
+                   _("subcommand '%s' doesn't accept option '%s'\n"
+                   "Type 'svn help %s' for usage.\n"),
                    subcommand->name, optstr, subcommand->name);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
@@ -1043,8 +1045,8 @@ main (int argc, const char * const *argv
             {
               err = svn_error_create (SVN_ERR_CL_LOG_MESSAGE_IS_VERSIONED_FILE,
                                       NULL,
-                                      "Log message file is a versioned file; "
-                                      "use '--force-log' to override");
+                                      _("Log message file is a versioned file; "
+                                      "use '--force-log' to override"));
               svn_handle_error (err, stderr, FALSE);
               svn_error_clear (err);
               svn_pool_destroy (pool);
@@ -1063,9 +1065,9 @@ main (int argc, const char * const *argv
                         APR_FINFO_MIN, pool) == APR_SUCCESS)
             {
               err = svn_error_create (SVN_ERR_CL_LOG_MESSAGE_IS_PATHNAME, NULL,
-                                      "The log message is a pathname "
+                                      _("The log message is a pathname "
                                       "(was -F intended?); use '--force-log' "
-                                      "to override");
+                                      "to override"));
               svn_handle_error (err, stderr, FALSE);
               svn_error_clear (err);
               svn_pool_destroy (pool);
@@ -1274,8 +1274,8 @@ main (int argc, const char * const *argv
       for (tmp_err = err; tmp_err; tmp_err = tmp_err->child)
         if (tmp_err->apr_err == SVN_ERR_WC_LOCKED)
           {
-            fputs ("svn: run 'svn cleanup' to remove locks"
-                   " (type 'svn help cleanup' for details)\n", stderr);
+            fputs (_("svn: run 'svn cleanup' to remove locks"
+                   " (type 'svn help cleanup' for details)\n"), stderr);
             break;
           }
 
Index: subversion/clients/cmdline/info-cmd.c
===================================================================
--- subversion/clients/cmdline/info-cmd.c	(revision 9287)
+++ subversion/clients/cmdline/info-cmd.c	(working copy)
@@ -31,6 +31,8 @@
 #include "svn_time.h"
 #include "cl.h"
 
+#include "svn_private_config.h"
+
 
 /*** Code. ***/
 
@@ -59,7 +61,7 @@ print_entry (const char *target,
 
   /* Get a non-UTF8 version of the target. */
   SVN_ERR (svn_cmdline_path_local_style_from_utf8 (&name_stdout, target, pool));
-  printf ("Path: %s\n", name_stdout);
+  printf (_("Path: %s\n"), name_stdout);
 
   /* Note: we have to be paranoid about checking that these are
      valid, since svn_wc_entry() doesn't fill them in if they
@@ -69,25 +71,25 @@ print_entry (const char *target,
     {
       SVN_ERR (svn_cmdline_cstring_from_utf8 (&name_stdout,
                                               entry->name, pool));
-      printf ("Name: %s\n", name_stdout);
+      printf (_("Name: %s\n"), name_stdout);
     }
  
   if (entry->url) 
     {
       SVN_ERR (svn_cmdline_cstring_from_utf8 (&name_stdout, entry->url, pool));
-      printf ("URL: %s\n", name_stdout);
+      printf (_("URL: %s\n"), name_stdout);
     }
            
   if (entry->repos) 
     {
       SVN_ERR (svn_cmdline_cstring_from_utf8 (&name_stdout,
                                               entry->repos, pool));
-      printf ("Repository: %s\n", name_stdout);
+      printf (_("Repository: %s\n"), name_stdout);
     }
  
   if (entry->uuid) 
     {
-      printf ("Repository UUID: %s\n", entry->uuid);
+      printf (_("Repository UUID: %s\n"), entry->uuid);
     }
  
   if (SVN_IS_VALID_REVNUM (entry->revision))
@@ -96,7 +98,7 @@ print_entry (const char *target,
   switch (entry->kind) 
     {
     case svn_node_file:
-      printf ("Node Kind: file\n");
+      printf (_("Node Kind: file\n"));
       {
         const char *dir_name;
         svn_path_split (target, &dir_name, NULL, pool);
@@ -106,37 +108,37 @@ print_entry (const char *target,
       break;
           
     case svn_node_dir:
-      printf ("Node Kind: directory\n");
+      printf (_("Node Kind: directory\n"));
       SVN_ERR (svn_wc_conflicted_p (&text_conflict, &props_conflict,
                                     target, entry, pool));
       break;
           
     case svn_node_none:
-      printf ("Node Kind: none\n");
+      printf (_("Node Kind: none\n"));
       break;
           
     case svn_node_unknown:
     default:
-      printf ("Node Kind: unknown\n");
+      printf (_("Node Kind: unknown\n"));
       break;
     }
 
   switch (entry->schedule) 
     {
     case svn_wc_schedule_normal:
-      printf ("Schedule: normal\n");
+      printf (_("Schedule: normal\n"));
       break;
           
     case svn_wc_schedule_add:
-      printf ("Schedule: add\n");
+      printf (_("Schedule: add\n"));
       break;
           
     case svn_wc_schedule_delete:
-      printf ("Schedule: delete\n");
+      printf (_("Schedule: delete\n"));
       break;
           
     case svn_wc_schedule_replace:
-      printf ("Schedule: replace\n");
+      printf (_("Schedule: replace\n"));
       break;
           
     default:
@@ -150,7 +152,7 @@ print_entry (const char *target,
           SVN_ERR (svn_cmdline_cstring_from_utf8 (&name_stdout,
                                                   entry->copyfrom_url,
                                                   pool));
-          printf ("Copied From URL: %s\n", name_stdout);
+          printf (_("Copied From URL: %s\n"), name_stdout);
         }
  
       if (SVN_IS_VALID_REVNUM (entry->copyfrom_rev))
@@ -162,7 +164,7 @@ print_entry (const char *target,
     {
       SVN_ERR (svn_cmdline_cstring_from_utf8 (&name_stdout,
                                               entry->cmt_author, pool));
-      printf ("Last Changed Author: %s\n", name_stdout);
+      printf (_("Last Changed Author: %s\n"), name_stdout);
     }
  
   if (SVN_IS_VALID_REVNUM (entry->cmt_rev))
@@ -170,49 +172,49 @@ print_entry (const char *target,
 
   if (entry->cmt_date)
     SVN_ERR (svn_cl__info_print_time (entry->cmt_date, 
-                                      "Last Changed Date", pool));
+                                      _("Last Changed Date"), pool));
 
   if (entry->text_time)
     SVN_ERR (svn_cl__info_print_time (entry->text_time, 
-                                      "Text Last Updated", pool));
+                                      _("Text Last Updated"), pool));
 
   if (entry->prop_time)
     SVN_ERR (svn_cl__info_print_time (entry->prop_time, 
-                                      "Properties Last Updated", pool));
+                                      _("Properties Last Updated"), pool));
  
   if (entry->checksum) 
     {
       SVN_ERR (svn_cmdline_cstring_from_utf8 (&name_stdout,
                                               entry->checksum, pool));
-      printf ("Checksum: %s\n", name_stdout);
+      printf (_("Checksum: %s\n"), name_stdout);
     }
  
   if (text_conflict && entry->conflict_old) 
     {
       SVN_ERR (svn_cmdline_path_local_style_from_utf8
                (&name_stdout, entry->conflict_old, pool));
-      printf ("Conflict Previous Base File: %s\n", name_stdout);
+      printf (_("Conflict Previous Base File: %s\n"), name_stdout);
     }
  
   if (text_conflict && entry->conflict_wrk) 
     {
       SVN_ERR (svn_cmdline_path_local_style_from_utf8
                (&name_stdout, entry->conflict_wrk, pool));
-      printf ("Conflict Previous Working File: %s\n", name_stdout);
+      printf (_("Conflict Previous Working File: %s\n"), name_stdout);
     }
  
   if (text_conflict && entry->conflict_new) 
     {
       SVN_ERR (svn_cmdline_path_local_style_from_utf8
                (&name_stdout, entry->conflict_new, pool));
-      printf ("Conflict Current Base File: %s\n", name_stdout);
+      printf (_("Conflict Current Base File: %s\n"), name_stdout);
     }
  
   if (props_conflict && entry->prejfile) 
     {
       SVN_ERR (svn_cmdline_path_local_style_from_utf8
                (&name_stdout, entry->prejfile, pool));
-      printf ("Conflict Properties File: %s\n", name_stdout);
+      printf (_("Conflict Properties File: %s\n"), name_stdout);
     }
  
   /* Print extra newline separator. */
@@ -289,7 +291,7 @@ svn_cl__info (apr_getopt_t *os,
           SVN_ERR (svn_cmdline_path_local_style_from_utf8
                    (&target_stdout, target, subpool));
 
-          printf ("%s:  (Not a versioned resource)\n\n", target_stdout);
+          printf (_("%s:  (Not a versioned resource)\n\n"), target_stdout);
           continue;
         }
 
Index: subversion/svnversion/main.c
===================================================================
--- subversion/svnversion/main.c	(revision 9287)
+++ subversion/svnversion/main.c	(working copy)
@@ -22,6 +22,8 @@
 #include "svn_opt.h"
 #include <apr_tables.h>
 
+#include "svn_private_config.h"
+
 #define SVNVERSION_OPT_VERSION SVN_OPT_FIRST_LONGOPT_ID
 
 struct status_baton
@@ -119,7 +121,7 @@ static void
 usage(const apr_getopt_option_t *options, apr_pool_t *pool)
 {
   fprintf(stderr, 
-          "usage: svnversion [options] wc_path [trail_url]\n\n"
+          _("usage: svnversion [options] wc_path [trail_url]\n\n"
           "  Produce a compact \"version number\" for the working copy path\n"
           "  WC_PATH.  TRAIL_URL is the trailing portion of the URL used to\n"
           "  determine if WC_PATH itself is switched (detection of switches\n"
@@ -142,7 +144,7 @@ usage(const apr_getopt_option_t *options
           "  If invoked on a directory that is not a working copy, an\n"
           "  exported directory say, the program will output \"exported\".\n"
           "\n"
-          "Valid options:\n");
+          "Valid options:\n"));
   while (options->description)
     {
       const char *optstr;
@@ -175,9 +177,9 @@ main(int argc, const char *argv[])
   apr_getopt_t *os;
   const apr_getopt_option_t options[] =
     {
-      {"no-newline", 'n', 0, "do not output the trailing newline"},
-      {"committed",  'c', 0, "last changed rather than current revisions"},
-      {"version", SVNVERSION_OPT_VERSION, 0, "show version information"},
+      {"no-newline", 'n', 0, N_("do not output the trailing newline")},
+      {"committed",  'c', 0, N_("last changed rather than current revisions")},
+      {"version", SVNVERSION_OPT_VERSION, 0, N_("show version information")},
       {0,             0,  0,  0}
     };
 
@@ -259,7 +261,7 @@ main(int argc, const char *argv[])
         }
       else
         {
-          fprintf (stderr, "'%s' not versioned, and not exported\n", wc_path);
+          fprintf (stderr, _("'%s' not versioned, and not exported\n"), wc_path);
           svn_pool_destroy (pool);
           return EXIT_FAILURE;
         }


