Index: www/hacking.html
===================================================================
--- www/hacking.html	(Revision 33816)
+++ www/hacking.html	(Arbeitskopie)
@@ -3044,6 +3044,13 @@
 code.  For an example, look at how the header and footer are handled
 in subversion/svn/help-cmd.c.</p>
 
+<p>Beside _() and N_() macros also U_() is used to mark strings which
+will not be translated because it's in general not useful to translate
+internal error messages. This should affect only obscure error messages
+most user should never ever seen (caused by bugs in Subversion or
+very special repository corruptions). The reason for using U_() is to
+explicitely note that a gettext call was not just forgetten.</p>
+
 <p>When using direct calls to gettext routines (*gettext or
 *dgettext), keep in mind that most of Subversion code is library code.
 Therefore the default domain is not necessarily Subversion's own
Index: notes/l10n-problems
===================================================================
--- notes/l10n-problems	(Revision 33816)
+++ notes/l10n-problems	(Arbeitskopie)
@@ -55,7 +55,7 @@
 Translations on the client
 ==========================
 
-The translation effort is to translate all error messages generated on
+The translation effort is to translate most error messages generated on
 the system on which the user has invoked his subversion command (svnadmin,
 svnlook, svndumpfilter, svnversion or svn).
 
Index: subversion/svn_private_config.hw
===================================================================
--- subversion/svn_private_config.hw	(Revision 33816)
+++ subversion/svn_private_config.hw	(Arbeitskopie)
@@ -63,6 +63,7 @@
 
 /* Setup gettext macros */
 #define N_(x) x
+#define U_(x) x
 #define PACKAGE_NAME "subversion"
 
 #ifdef ENABLE_NLS
Index: subversion/svn/tree-conflicts.c
===================================================================
--- subversion/svn/tree-conflicts.c	(Revision 33816)
+++ subversion/svn/tree-conflicts.c	(Arbeitskopie)
@@ -239,7 +239,7 @@
   our_phrase = select_our_phrase(conflict, phrases);
   if (! our_phrase || ! their_phrase)
     return svn_error_createf(SVN_ERR_WC_CORRUPT, NULL,
-                             "Invalid tree conflict data for victim %s",
+                             U_("Invalid tree conflict data for victim %s"),
                              victim_name);
 
   /* Substitute the '%s' format in the phrases with the victim path. */
Index: subversion/libsvn_wc/tree_conflicts.c
===================================================================
--- subversion/libsvn_wc/tree_conflicts.c	(Revision 33816)
+++ subversion/libsvn_wc/tree_conflicts.c	(Arbeitskopie)
@@ -354,7 +354,7 @@
       len = strlen(path);
       if (len == 0)
         return svn_error_create(SVN_ERR_WC_CORRUPT, NULL,
-                        "Empty victim path in tree conflict description");
+                        U_("Empty victim path in tree conflict description"));
 
       /* Escape separator chars while writing victim path. */
       for (j = 0; j < len; j++)
Index: configure.ac
===================================================================
--- configure.ac	(Revision 33816)
+++ configure.ac	(Arbeitskopie)
@@ -419,6 +419,7 @@
 
 AH_BOTTOM(
 #define N_(x) x
+#define U_(x) x
 #ifdef ENABLE_NLS
 #include <locale.h>
 #include <libintl.h>


