Index: subversion/libsvn_wc/relocate.c
===================================================================
--- subversion/libsvn_wc/relocate.c	(revision 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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 9280)
+++ 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;
         }
 


