? path_alias_lang.patch Index: path.module =================================================================== RCS file: /cvs/drupal/drupal/modules/path/path.module,v retrieving revision 1.138.2.3 diff -u -p -r1.138.2.3 path.module --- path.module 22 Nov 2008 10:49:15 -0000 1.138.2.3 +++ path.module 8 Oct 2010 22:54:21 -0000 @@ -105,7 +105,7 @@ function path_set_alias($path = NULL, $a if ($alias == drupal_get_path_alias($path, $language)) { // There is already such an alias, neutral or in this language. // Update the alias based on alias; setting the language if not yet done. - db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE dst = '%s'", $path, $alias, $language, $alias); + db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE dst = '%s' AND language = '%s'", $path, $alias, $language, $alias, $language); } else { // A new alias. Add it to the database. @@ -115,10 +115,20 @@ function path_set_alias($path = NULL, $a else { // Delete the alias. if ($alias) { - db_query("DELETE FROM {url_alias} WHERE dst = '%s'", $alias); + if ($language) { + db_query("DELETE FROM {url_alias} WHERE dst = '%s' AND language = '%s'", $alias, $language); + } + else { + db_query("DELETE FROM {url_alias} WHERE dst = '%s'", $alias); + } } else { - db_query("DELETE FROM {url_alias} WHERE src = '%s'", $path); + if ($language) { + db_query("DELETE FROM {url_alias} WHERE src = '%s' AND language = '%s'", $path, $language); + } + else { + db_query("DELETE FROM {url_alias} WHERE src = '%s'", $path); + } } } drupal_clear_path_cache(); @@ -168,7 +178,7 @@ function path_nodeapi(&$node, $op, $arg) case 'delete': $path = 'node/'. $node->nid; if (drupal_get_path_alias($path) != $path) { - path_set_alias($path); + path_set_alias($path, NULL, NULL, $language); } break; }