diff -ubr intl.orig/bindtextdom.c intl/bindtextdom.c
--- intl.orig/bindtextdom.c	Sun Aug  3 17:05:20 1997
+++ intl/bindtextdom.c	Fri Aug 29 22:42:00 1997
@@ -91,15 +91,15 @@
 
   if (dirname == NULL)
     /* The current binding has be to returned.  */
-    return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
+    return binding == NULL ? (char *) __XOS2RedirRoot(_nl_default_dirname) : binding->dirname;
 
   if (binding != NULL)
     {
       /* The domain is already bound.  Replace the old binding.  */
       char *new_dirname;
 
-      if (strcmp (dirname, _nl_default_dirname) == 0)
-	new_dirname = (char *) _nl_default_dirname;
+      if (strcmp (dirname, __XOS2RedirRoot(_nl_default_dirname)) == 0)
+	new_dirname = (char *) __XOS2RedirRoot(_nl_default_dirname);
       else
 	{
 	  size_t len = strlen (dirname) + 1;
@@ -110,7 +110,7 @@
 	  memcpy (new_dirname, dirname, len);
 	}
 
-      if (strcmp (binding->dirname, _nl_default_dirname) != 0)
+      if (strcmp (binding->dirname, __XOS2RedirRoot(_nl_default_dirname)) != 0)
         free (binding->dirname);
 
       binding->dirname = new_dirname;
@@ -131,8 +131,8 @@
 	  return NULL;
       memcpy (new_binding->domainname, domainname, len);
 
-      if (strcmp (dirname, _nl_default_dirname) == 0)
-	new_binding->dirname = (char *) _nl_default_dirname;
+      if (strcmp (dirname, __XOS2RedirRoot(_nl_default_dirname)) == 0)
+	new_binding->dirname = (char *) __XOS2RedirRoot(_nl_default_dirname);
       else
 	{
 	  len = strlen (dirname) + 1;
diff -ubr intl.orig/dcgettext.c intl/dcgettext.c
--- intl.orig/dcgettext.c	Sun Aug  3 17:05:20 1997
+++ intl/dcgettext.c	Fri Aug 29 22:42:00 1997
@@ -144,6 +144,7 @@
 const char *_nl_current_default_domain = _nl_default_default_domain;
 
 /* Contains the default location of the message catalogs.  */
+
 const char _nl_default_dirname[] = GNULOCALEDIR;
 
 /* List with bindings of specific domains created by bindtextdomain()
@@ -209,8 +210,12 @@
     }
 
   if (binding == NULL)
-    dirname = (char *) _nl_default_dirname;
+    dirname = (char *) __XOS2RedirRoot(_nl_default_dirname);
+#ifdef __EMX__
+  else if (binding->dirname[0] == '/' || (isalpha(binding->dirname[0]) && binding->dirname[1] == ':'))
+#else
   else if (binding->dirname[0] == '/')
+#endif
     dirname = binding->dirname;
   else
     {
diff -ubr intl.orig/gettext.h intl/gettext.h
--- intl.orig/gettext.h	Sun Aug  3 17:05:20 1997
+++ intl/gettext.h	Thu Aug 28 15:51:08 1997
@@ -25,6 +25,12 @@
 # include <limits.h>
 #endif
 
+#ifdef __EMX__
+#define PATH_SEPARATOR ';'
+#else
+#define PATH_SEPARATOR ':'
+#endif
+
 /* @@ end of prolog @@ */
 
 /* The magic number of the GNU message catalog format.  */
diff -ubr intl.orig/libgettext.h intl/libgettext.h
--- intl.orig/libgettext.h	Sun Aug  3 17:05:22 1997
+++ intl/libgettext.h	Fri Aug 29 22:46:04 1997
@@ -36,6 +36,12 @@
 # include <locale.h>
 #endif
 
+#ifdef __EMX__
+#undef GNULOCALEDIR
+#define GNULOCALEDIR "/XFree86/lib/X11/locale"
+#else
+#define __XOS2RedirRoot(path) path
+#endif
 
 #ifdef __cplusplus
 extern "C" {
diff -ubr intl.orig/localealias.c intl/localealias.c
--- intl.orig/localealias.c	Sun Aug  3 17:05:22 1997
+++ intl/localealias.c	Fri Aug 29 22:46:00 1997
@@ -64,6 +64,11 @@
 #include "gettext.h"
 #include "gettextP.h"
 
+#ifdef __EMX__
+#undef LOCALE_ALIAS_PATH
+#define LOCALE_ALIAS_PATH "/XFree86/lib/X11/locale"
+#endif
+
 /* @@ end of prolog @@ */
 
 #ifdef _LIBC
@@ -125,11 +130,11 @@
 	{
 	  const char *start;
 
-	  while (locale_alias_path[0] == ':')
+	  while (locale_alias_path[0] == PATH_SEPARATOR)
 	    ++locale_alias_path;
 	  start = locale_alias_path;
 
-	  while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
+	  while (locale_alias_path[0] != '\0' && locale_alias_path[0] != PATH_SEPARATOR)
 	    ++locale_alias_path;
 
 	  if (start < locale_alias_path)
@@ -291,6 +296,9 @@
      const struct alias_map *map1;
      const struct alias_map *map2;
 {
+#ifdef __EMX__
+#define strcasecmp stricmp
+#endif
 #if defined _LIBC || defined HAVE_STRCASECMP
   return strcasecmp (map1->alias, map2->alias);
 #else
