diff --git a/domain.module b/domain.module
index f8f4890..39af41d 100644
--- a/domain.module
+++ b/domain.module
@@ -1516,33 +1516,20 @@ function domain_domain_load(&$domain) {
  *
  * @param $domain
  *   The currently active $domain array, provided by domain_lookup().
+ * @param $language
+ *   An optional language object, passed when a language-sensitive path is
+ *   required. Normally, this may be left blank.
+ *
  * @return
  *   The base url of the requested domain.
  */
-function domain_get_path($domain) {
-  global $base_url;
-  if (empty($base_url)) {
-    return domain_check_scheme($domain['scheme']) .'://'. $domain['subdomain'];
-  }
-  // Badly malfored HTTP_HOST values can cause problems with PHP < 5.3.3,
-  // so we have to suppress error warnings for parse_url here.
-  // See php.net/manual/en/function.parse-url.php.
-  // See http://drupal.org/node/848856.
-  // With PHP > 5.1.2 we can pass a component parameter, too, but Drupal 6
-  // still supports PHP 4 and this code was originally tested there.
-  $url = array();
-  if ($_url = @parse_url($base_url)) {
-    $url = $_url;
-  }
-  // PHP 5 does not return an empty path element.
-  if (!isset($url['path'])) {
-    $url['path'] = '/';
-  }
-  // We need a trailing slash at the end of the path
-  if (substr($url['path'], -1) != '/') {
-    $url['path'] .= '/';
-  }
-  $path = domain_check_scheme($domain['scheme']) .'://'. $domain['subdomain'] . $url['path'];
+function domain_get_path($domain, $language = NULL) {
+  if (empty($language)) {
+    $path = domain_check_scheme($domain['scheme']) .'://'. $domain['subdomain'] . base_path();
+  }
+  else {
+    $path = domain_check_scheme($domain['scheme']) .'://'. $domain['subdomain'] . url('<front>');
+  }
   return $path;
 }
 
@@ -1551,11 +1538,14 @@ function domain_get_path($domain) {
  *
  * @param $domain
  *   The currently active $domain array, provided by domain_lookup().
+ * @param $language
+ *   An optional language object, passed when a language-sensitive path is
+ *   required.
  *
  * @return
  *   The absolute url to the current page on the requested domain.
  */
-function domain_get_uri($domain) {
+function domain_get_uri($domain, $language = NULL) {
   global $base_path;
   $modules = _domain_path_modules();
   if (!empty($modules) && !drupal_is_front_page()) {
@@ -1563,11 +1553,14 @@ function domain_get_uri($domain) {
     // call to url() below.
     $request_uri = request_path();
     $options = array();
+    if (!empty($language)) {
+      $options['language'] = $language;
+    }
     // If needed, let modules modify the path alias.
     // We cannot use URL here because we need the domain_id data.
     // TODO: use url() but pass a domain_id option?
     domain_path($domain['domain_id'], $request_uri, $options, $_GET['q']);
-    $request_uri = base_path() . $request_uri;
+    $request_uri = url($request_uri);
   }
   // The simple case just uses the inbound path, with the base path present.
   else {
diff --git a/domain_nav/domain_nav.module b/domain_nav/domain_nav.module
index 9474532..339a0f2 100644
--- a/domain_nav/domain_nav.module
+++ b/domain_nav/domain_nav.module
@@ -188,6 +188,7 @@ function domain_nav_block_save($delta = '', $edit = array()) {
  *   A themed HTML object for navigation.
  */
 function domain_nav_render($paths = NULL, $style = NULL) {
+  global $language;
   $_domain = domain_get_domain();
   if (!user_access('access domain navigation')) {
     return;
@@ -218,7 +219,7 @@ function domain_nav_render($paths = NULL, $style = NULL) {
       if ($_domain['subdomain'] == $value['subdomain']) {
         $value['active'] = TRUE;
       }
-      $path = $func($value);
+      $path = $func($value, $language);
       $value['path'] = $path;
       // Allow other modules to add elements to the array.
       $extra = array();
