diff -rupN galler21.ori/modules/core/classes/GalleryDataItem.class gallery21/modules/core/classes/GalleryDataItem.class
--- galler21.ori/modules/core/classes/GalleryDataItem.class	2009-12-28 16:24:27.836391680 +0530
+++ gallery21/modules/core/classes/GalleryDataItem.class	2009-12-28 18:06:39.961913623 +0530
@@ -410,12 +410,12 @@ class GalleryDataItem extends GalleryIte
 	    $target = $this;
 	}
 
-	list($ret, $containerPath) = $target->fetchContainerPath();
+	list($ret, $containerPath) = $target->fetchContainerPath(false);
 	if ($ret) {
 	    return array($ret->wrap(__FILE__, __LINE__), null);
 	}
 
-	return array(null, $containerPath . $target->getPathComponent());
+	return array(null, $containerPath . $target->getPathComponent(false));
     }
 
     /**
diff -rupN galler21.ori/modules/core/classes/GalleryFileSystemEntity.class gallery21/modules/core/classes/GalleryFileSystemEntity.class
--- galler21.ori/modules/core/classes/GalleryFileSystemEntity.class	2009-12-28 16:24:27.846388760 +0530
+++ gallery21/modules/core/classes/GalleryFileSystemEntity.class	2009-12-28 18:15:20.570680728 +0530
@@ -68,6 +68,11 @@ class GalleryFileSystemEntity extends Ga
     var $pathComponent;
 
     /**
+	 * language specific path component, introduced for the multilanguage URL feature
+	 */
+    var $pathLangComponent;
+
+    /**
      * Create a new instance of this FileSystemEntity in the persistent store
      *
      * Let the parent do its work, then add any initialization specific to this
@@ -310,12 +315,15 @@ class GalleryFileSystemEntity extends Ga
      *
      * @return array object GalleryStatus a status code,
      *               string a path where children can store their data files
-     */
-    function fetchContainerPath() {
+     *
+	 * $multilang is introduced for multlanguage URL feature,
+     * if the value is TRUE returns the multilang path, false returns the default path,
+     * which is required for physical path of the file */
+    function fetchContainerPath($multilang=true) {
 	global $gallery;
 
 	if ($this->isContainer()) {
-	    list ($ret, $path) = $this->fetchPath();
+	    list ($ret, $path) = $this->fetchPath($multilang);
 	    if ($ret) {
 		return array($ret->wrap(__FILE__, __LINE__), null);
 	    }
@@ -327,7 +335,7 @@ class GalleryFileSystemEntity extends Ga
 	    }
 
 	    if (isset($parent)) {
-		list ($ret, $path) = $parent->fetchContainerPath();
+		list ($ret, $path) = $parent->fetchContainerPath($multilang);
 		if ($ret) {
 		    return array($ret->wrap(__FILE__, __LINE__), null);
 		}
@@ -355,9 +363,12 @@ class GalleryFileSystemEntity extends Ga
      * @access public
      * @return array object GalleryStatus a status code,
      *         array path component names
-     */
-    function fetchLogicalPath() {
-	global $gallery;
+     *
+     * $multilang is introduced for multlanguage URL feature,
+     * if the value is TRUE returns the multilang path, false returns the default path,
+     * which is required for physical path of the file */
+    function fetchLogicalPath($multilang=true) {
+    global $gallery;
 
 	$parentId = $this->getParentId();
 	if (!empty($parentId)) {
@@ -366,7 +377,7 @@ class GalleryFileSystemEntity extends Ga
 		return array($ret->wrap(__FILE__, __LINE__), null);
 	    }
 
-	    list($ret, $parentPath) = $parent->fetchLogicalPath();
+	    list($ret, $parentPath) = $parent->fetchLogicalPath($multilang);
 	    if ($ret) {
 		return array($ret->wrap(__FILE__, __LINE__), null);
 	    }
@@ -374,7 +385,7 @@ class GalleryFileSystemEntity extends Ga
 	    $parentPath = '';
 	}
 
-	$path = $parentPath . $this->getPathComponent();
+	$path = $parentPath . $this->getPathComponent($multilang);
 	if ($this->isContainer()) {
 	    $path .= '/';
 	}
@@ -389,18 +400,18 @@ class GalleryFileSystemEntity extends Ga
      * @access public
      * @return array a GalleryStatus status, string a path
      */
-    function fetchPath() {
+    function fetchPath($multilang=true) {
 	global $gallery;
 	$absolutePath = $gallery->getConfig('data.gallery.albums');
 
 	if ($this->isLinked()) {
 	    $linkedEntity = $this->getLinkedEntity();
-	    list ($ret, $logicalPath) = $linkedEntity->fetchLogicalPath();
+	    list ($ret, $logicalPath) = $linkedEntity->fetchLogicalPath($multilang);
 	    if ($ret) {
 		return array($ret->wrap(__FILE__, __LINE__), null);
 	    }
 	} else {
-	    list ($ret, $logicalPath) = $this->fetchLogicalPath();
+	    list ($ret, $logicalPath) = $this->fetchLogicalPath($multilang);
 	    if ($ret) {
 		return array($ret->wrap(__FILE__, __LINE__), null);
 	    }
@@ -431,12 +442,22 @@ class GalleryFileSystemEntity extends Ga
 	return 'GalleryFileSystemEntity';
     }
 
-    function getPathComponent() {
-	return $this->pathComponent;
+    function getPathComponent($multilang=true) {
+		if ($multilang && !empty($this->pathLangComponent)) {
+			return $this->pathLangComponent;
+		}
+		else {
+			return $this->pathComponent;
+		}
     }
 
-    function setPathComponent($pathComponent) {
-	$this->pathComponent = $pathComponent;
-    }
+    function setPathComponent($pathComponent, $multilang=false) {
+		if ($multilang){
+		   $this->pathLangComponent = $pathComponent;
+		}
+		else{
+			$this->pathComponent = $pathComponent;
+		}
+	}
 }
 ?>
diff -rupN galler21.ori/modules/multilang/classes/GalleryStorage/schema.tpl gallery21/modules/multilang/classes/GalleryStorage/schema.tpl
--- galler21.ori/modules/multilang/classes/GalleryStorage/schema.tpl	2009-12-28 16:24:27.586391537 +0530
+++ gallery21/modules/multilang/classes/GalleryStorage/schema.tpl	2009-12-28 17:42:39.360675970 +0530
@@ -6,6 +6,7 @@ CREATE TABLE DB_TABLE_PREFIXMultiLangIte
  DB_COLUMN_PREFIXtitle varchar(128),
  DB_COLUMN_PREFIXsummary varchar(255),
  DB_COLUMN_PREFIXdescription text,
+ DB_COLUMN_PREFIXpathComponent varchar(128),
  PRIMARY KEY(DB_COLUMN_PREFIXitemId, DB_COLUMN_PREFIXlanguage)
 ) TYPE=DB_TABLE_TYPE
 /*!40100 DEFAULT CHARACTER SET utf8 */;
@@ -23,7 +24,8 @@ CREATE TABLE DB_TABLE_PREFIXMultiLangIte
  DB_COLUMN_PREFIXlanguage VARCHAR(32) NOT NULL,
  DB_COLUMN_PREFIXtitle VARCHAR(128),
  DB_COLUMN_PREFIXsummary VARCHAR(255),
- DB_COLUMN_PREFIXdescription text
+ DB_COLUMN_PREFIXdescription text,
+ DB_COLUMN_PREFIXpathComponent VARCHAR(128)
 );
 
 ALTER TABLE DB_TABLE_PREFIXMultiLangItemMap ADD PRIMARY KEY (DB_COLUMN_PREFIXitemId, DB_COLUMN_PREFIXlanguage);
@@ -41,7 +43,8 @@ CREATE TABLE DB_TABLE_PREFIXMultiLangIte
  DB_COLUMN_PREFIXlanguage VARCHAR2(32) NOT NULL,
  DB_COLUMN_PREFIXtitle VARCHAR2(128),
  DB_COLUMN_PREFIXsummary VARCHAR2(255),
- DB_COLUMN_PREFIXdescription VARCHAR2(4000)
+ DB_COLUMN_PREFIXdescription VARCHAR2(4000),
+ DB_COLUMN_PREFIXpathComponent VARCHAR2(128)
 );
 
 ALTER TABLE DB_TABLE_PREFIXMultiLangItemMap
@@ -61,7 +64,8 @@ CREATE TABLE DB_TABLE_PREFIXMultiLangIte
  DB_COLUMN_PREFIXlanguage VARCHAR(32) NOT NULL,
  DB_COLUMN_PREFIXtitle VARCHAR(128),
  DB_COLUMN_PREFIXsummary VARCHAR(255),
- DB_COLUMN_PREFIXdescription VARCHAR(10000)
+ DB_COLUMN_PREFIXdescription VARCHAR(10000),
+ DB_COLUMN_PREFIXpathComponent VARCHAR(128)
 );
 
 ALTER TABLE DB_TABLE_PREFIXMultiLangItemMap ADD PRIMARY KEY (DB_COLUMN_PREFIXitemId, DB_COLUMN_PREFIXlanguage);
diff -rupN galler21.ori/modules/multilang/classes/GalleryStorage/tmp/dbxml/MultiLangItemMap.xml gallery21/modules/multilang/classes/GalleryStorage/tmp/dbxml/MultiLangItemMap.xml
--- galler21.ori/modules/multilang/classes/GalleryStorage/tmp/dbxml/MultiLangItemMap.xml	1970-01-01 05:30:00.000000000 +0530
+++ gallery21/modules/multilang/classes/GalleryStorage/tmp/dbxml/MultiLangItemMap.xml	2009-12-28 17:42:39.320657337 +0530
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!DOCTYPE table
+  SYSTEM "../../../../../../../lib/tools/dtd/DatabaseTableDefinition2.0.dtd">
+<table>
+   <table-name>MultiLangItemMap</table-name>
+   <schema>
+      <schema-major>1</schema-major>
+      <schema-minor>0</schema-minor>
+   </schema>
+   <column>
+      <column-name>itemId</column-name>
+      <column-type>INTEGER</column-type>
+      <column-size>MEDIUM</column-size>
+      <not-null empty="disallowed"/>
+   </column>
+   <column>
+      <column-name>language</column-name>
+      <column-type>STRING</column-type>
+      <column-size>SMALL</column-size>
+      <not-null empty="disallowed"/>
+   </column>
+   <column>
+      <column-name>title</column-name>
+      <column-type>STRING</column-type>
+      <column-size>MEDIUM</column-size>
+   </column>
+   <column>
+      <column-name>summary</column-name>
+      <column-type>STRING</column-type>
+      <column-size>LARGE</column-size>
+   </column>
+   <column>
+      <column-name>description</column-name>
+      <column-type>TEXT</column-type>
+      <column-size>SMALL</column-size>
+   </column>
+   <column>
+      <column-name>pathComponent</column-name>
+      <column-type>STRING</column-type>
+      <column-size>MEDIUM</column-size>
+   </column>
+   <key primary="true">
+     <column-name>itemId</column-name>
+     <column-name>language</column-name>
+   </key>
+</table>
\ No newline at end of file
diff -rupN galler21.ori/modules/multilang/classes/Maps.inc gallery21/modules/multilang/classes/Maps.inc
--- galler21.ori/modules/multilang/classes/Maps.inc	2009-12-28 16:24:27.586391537 +0530
+++ gallery21/modules/multilang/classes/Maps.inc	2009-12-28 17:42:38.820674588 +0530
@@ -1,4 +1,4 @@
 <?php
 /* This file is automatically generated from Maps.xml by lib/tools/bin/generate-maps.php */
-$mapInfo['MultiLangItemMap'] = array('itemId'=>array('type'=>STORAGE_TYPE_INTEGER,'size'=>STORAGE_SIZE_MEDIUM,'notNull'=>true),'language'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_SMALL,'notNull'=>true),'title'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_MEDIUM),'summary'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_LARGE),'description'=>array('type'=>STORAGE_TYPE_TEXT,'size'=>STORAGE_SIZE_SMALL));
+$mapInfo['MultiLangItemMap'] = array('itemId'=>array('type'=>STORAGE_TYPE_INTEGER,'size'=>STORAGE_SIZE_MEDIUM,'notNull'=>true),'language'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_SMALL,'notNull'=>true),'title'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_MEDIUM),'summary'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_LARGE),'description'=>array('type'=>STORAGE_TYPE_TEXT,'size'=>STORAGE_SIZE_SMALL),'pathComponent'=>array('type'=>STORAGE_TYPE_STRING,'size'=>STORAGE_SIZE_MEDIUM));
 ?>
\ No newline at end of file
diff -rupN galler21.ori/modules/multilang/classes/Maps.xml gallery21/modules/multilang/classes/Maps.xml
--- galler21.ori/modules/multilang/classes/Maps.xml	2009-12-28 16:24:27.586391537 +0530
+++ gallery21/modules/multilang/classes/Maps.xml	2009-12-28 17:41:55.560681063 +0530
@@ -32,6 +32,11 @@
       <member-type>TEXT</member-type>
       <member-size>SMALL</member-size>
     </member>
+    <member>
+      <member-name>pathComponent</member-name>
+      <member-type>STRING</member-type>
+      <member-size>MEDIUM</member-size>
+    </member>
     <key primary="true">
       <member-name>itemId</member-name>
       <member-name>language</member-name>
diff -rupN galler21.ori/modules/multilang/classes/MultilangExtHelper.class gallery21/modules/multilang/classes/MultilangExtHelper.class
--- galler21.ori/modules/multilang/classes/MultilangExtHelper.class	1970-01-01 05:30:00.000000000 +0530
+++ gallery21/modules/multilang/classes/MultilangExtHelper.class	2009-12-28 17:44:24.720672490 +0530
@@ -0,0 +1,122 @@
+<?php
+/*
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+/**
+ * This class provides basic URL keyword functions
+ * @package Multilang
+ * @subpackage Classes
+ * @author gopu <gopo@mywingsoflove.com>
+ * @version $Revision: 17581 $
+ * @static
+ */
+class MultilangExtHelper {
+
+    /**
+     * This is an onLoad function called by RewriteUrlGenerator::init if there's a path keyword
+     * that needs to be parsed to an itemId. Used by other modules that has %path%.
+     *
+     * @return GalleryStatus a status code
+     */
+    function fetchItemIdByPath($path) {
+	global $gallery;
+	if (empty($path)) {
+	    return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER), null);
+	}
+
+	list ($ret, $rootId) = GalleryCoreApi::getPluginParameter('module', 'core', 'id.rootAlbum');
+	if ($ret) {
+	    return array($ret, null);
+	}
+	$rootId = (int)$rootId;
+
+	if ($path == '/') {
+	    return array(null, $rootId);
+	}
+
+	$currentId = $rootId;
+	GalleryCoreApi::requireOnce(
+	    'modules/core/classes/helpers/GalleryFileSystemEntityHelper_simple.class');
+	
+	foreach (preg_split('|/|', $path, -1, PREG_SPLIT_NO_EMPTY) as $pathComponent) {
+	    $curId = $currentId;
+	    list ($ret, $currentId) =
+		GalleryCoreApi::fetchChildIdByPathComponent($currentId, $pathComponent);
+	    if ($ret)
+	    {
+	        $currentId = $curId;
+		list ($ret, $currentId) =
+		    MultilangExtHelper::fetchChildIdByPathComponent($currentId, $pathComponent);
+		if ($ret) {
+		    return array($ret, null);
+		}
+	    }
+	}
+
+	return array(null, $currentId);
+    }
+    
+    function fetchChildIdByPathComponent($parentId, $pathComponent) {
+	global $gallery;
+
+	if (empty($parentId) || empty($pathComponent)) {
+	    return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER),
+			 null);
+	}
+
+	$storage =& $gallery->getStorage();
+
+	$query = '
+	SELECT
+	  [GalleryMultiLangItemMap::itemId]
+	FROM
+	  [GalleryMultiLangItemMap], [GalleryChildEntity]
+	WHERE
+	  [GalleryChildEntity::parentId] = ?
+	  AND
+	  [GalleryChildEntity::id] = [GalleryMultiLangItemMap::itemId]
+	  AND
+	  [GalleryMultiLangItemMap::pathComponent] = ?
+	';
+	$data = array();
+	$data[] = (int)$parentId;
+	$data[] = $pathComponent;
+
+	list ($ret, $searchResults) = $gallery->search($query, $data);
+	if ($ret) {
+	    return array($ret, null);
+	}
+
+	if ($searchResults->resultCount() == 0) {
+	    return array(GalleryCoreApi::error(ERROR_MISSING_OBJECT, __FILE__, __LINE__,
+					      "Parent $parentId path $pathComponent"), null);
+	}
+
+	if ($searchResults->resultCount() > 1) {
+	    return array(GalleryCoreApi::error(ERROR_COLLISION), null);
+	}
+
+	$data = array();
+	$result = $searchResults->nextResult();
+	$targetId = (int)$result[0];
+
+	return array(null, $targetId);
+    }
+}
+?>
diff -rupN galler21.ori/modules/multilang/classes/MultiLangHelper.class gallery21/modules/multilang/classes/MultiLangHelper.class
--- galler21.ori/modules/multilang/classes/MultiLangHelper.class	2009-12-28 16:24:27.586391537 +0530
+++ gallery21/modules/multilang/classes/MultiLangHelper.class	2009-12-28 23:25:55.054632625 +0530
@@ -46,7 +46,7 @@ class MultiLangHelper {
 
 	$query = '
 	SELECT [MultiLangItemMap::language], [MultiLangItemMap::title],
-	       [MultiLangItemMap::summary], [MultiLangItemMap::description]
+	       [MultiLangItemMap::summary], [MultiLangItemMap::description], [MultiLangItemMap::pathComponent]
 	FROM [MultiLangItemMap]
 	WHERE [MultiLangItemMap::itemId] = ?
 	';
@@ -59,7 +59,7 @@ class MultiLangHelper {
 	$data = array();
 	while ($result = $searchResults->nextResult()) {
 	    $data[$result[0]] = array('title' => $result[1], 'summary' => $result[2],
-				      'description' => $result[3]);
+				      'description' => $result[3], 'pathComponent' => $result[4]);
 	}
 	return array(null, $data);
     }
@@ -75,14 +75,14 @@ class MultiLangHelper {
      * @return object GalleryStatus a status code
      * @static
      */
-    function setItemData($item, $language, $title=null, $summary=null, $description=null) {
+    function setItemData($item, $language, $title=null, $summary=null, $description=null, $pathComponent=null) {
 	$itemId = $item->getId();
 	list ($ret, $data) = MultiLangHelper::getItemData($itemId);
 	if ($ret) {
 	    return $ret->wrap(__FILE__, __LINE__);
 	}
 
-	if (empty($title) && empty($summary) && empty($description)) {
+	if (empty($title) && empty($summary) && empty($description) && empty($pathComponent)) {
 	    /* Remove data for this item/language (if there is any to remove) */
 	    if (isset($data[$language])) {
 		$ret = GalleryCoreApi::removeMapEntry(
@@ -115,7 +115,7 @@ class MultiLangHelper {
 		$ret = GalleryCoreApi::updateMapEntry(
 		    'MultiLangItemMap',
 		    array('itemId' => $itemId, 'language' => $language),
-		    array('title' => $title, 'summary' => $summary, 'description' => $description));
+		    array('title' => $title, 'summary' => $summary, 'description' => $description, 'pathComponent' => $pathComponent));
 		if ($ret) {
 		    return $ret->wrap(__FILE__, __LINE__);
 		}
@@ -123,7 +123,7 @@ class MultiLangHelper {
 		$ret = GalleryCoreApi::addMapEntry(
 		    'MultiLangItemMap',
 		    array('itemId' => $itemId, 'language' => $language,
-			  'title' => $title, 'summary' => $summary, 'description' => $description));
+			  'title' => $title, 'summary' => $summary, 'description' => $description, 'pathComponent' => $pathComponent));
 		if ($ret) {
 		    return $ret->wrap(__FILE__, __LINE__);
 		}
@@ -183,6 +183,7 @@ class MultiLangHelper {
 	    $item->setTitle($data[$language]['title']);
 	    $item->setSummary($data[$language]['summary']);
 	    $item->setDescription($data[$language]['description']);
+		$item->setPathComponent($data[$language]['pathComponent'], true);
 	}
 
 	return null;
diff -rupN galler21.ori/modules/multilang/MultiLangItemEdit.inc gallery21/modules/multilang/MultiLangItemEdit.inc
--- galler21.ori/modules/multilang/MultiLangItemEdit.inc	2009-12-28 16:24:27.586391537 +0530
+++ gallery21/modules/multilang/MultiLangItemEdit.inc	2009-12-28 18:24:05.391912060 +0530
@@ -55,9 +55,14 @@ class MultiLangItemEdit extends ItemEdit
 
 	    if (($item->getId() == $rootAlbumId) && empty($form['title'])) {
 		$error[] = 'form[error][title][missingRootTitle]';
+	    } else if (empty($form['pathComponent'])){
+		$error[] = 'form[error][pathComponent][missing]';
+	    }
+	    else if (!$gallery->getPlatform()->isLegalPathComponent($form['pathComponent'], true)) {
+		$error[] = 'form[error][pathComponent][invalid]';
 	    } else {
 		$ret = MultiLangHelper::setItemData($item, $form['language'],
-		$form['title'], $form['summary'], $form['description']);
+		$form['title'], $form['summary'], $form['description'], $form['pathComponent']);
 		if ($ret) {
 		    return array($ret->wrap(__FILE__, __LINE__), null, null, null);
 		}
@@ -91,6 +96,7 @@ class MultiLangItemEdit extends ItemEdit
 	$form['mainTitle'] = $item->getTitle();
 	$form['mainSummary'] = $item->getSummary();
 	$form['mainDescription'] = $item->getDescription();
+	$form['mainPathComponent'] = $item->getPathComponent();
 	list ($ret, $form['languageData']) = MultiLangHelper::getItemData($item->getId());
 	if ($ret) {
 	    return array($ret->wrap(__FILE__, __LINE__), null, null);
@@ -103,6 +109,7 @@ class MultiLangItemEdit extends ItemEdit
 	    $form['languageData'][$form['language']]['title'] = $form['title'];
 	    $form['languageData'][$form['language']]['summary'] = $form['summary'];
 	    $form['languageData'][$form['language']]['description'] = $form['description'];
+		$form['languageData'][$form['language']]['pathComponent'] = $form['pathComponent'];
 	}
 
 	$supportedLanguages = $translator->getSupportedLanguages();
diff -rupN galler21.ori/modules/multilang/templates/MultiLangItemEdit.tpl gallery21/modules/multilang/templates/MultiLangItemEdit.tpl
--- galler21.ori/modules/multilang/templates/MultiLangItemEdit.tpl	2009-12-28 16:24:27.586391537 +0530
+++ gallery21/modules/multilang/templates/MultiLangItemEdit.tpl	2009-12-28 18:02:28.980664678 +0530
@@ -19,6 +19,8 @@ function pick(idx) {
   o.value = document.getElementById('sum_' + idx).innerHTML;
   o = document.getElementById('description');
   o.value = document.getElementById('dsc_' + idx).innerHTML;
+  o = document.getElementById('pathComponent');
+  o.value = document.getElementById('path_' + idx).innerHTML;
   index = idx;
   isChanged = 0;
 }
@@ -32,6 +34,7 @@ function changed() { isChanged = 1; }
 <div id="ttl_{$idx}">{$form.languageData[$language].title}</div>
 <div id="sum_{$idx}">{$form.languageData[$language].summary}</div>
 <div id="dsc_{$idx}">{$form.languageData[$language].description}</div>
+<div id="path_{$idx}">{$form.languageData[$language].pathComponent}</div>
 {else}
 <div id="ttl_{$idx}"></div><div id="sum_{$idx}"></div><div id="dsc_{$idx}"></div>
 {/if}
@@ -54,6 +57,9 @@ function changed() { isChanged = 1; }
   </tr><tr>
     <td> {g->text text="Description"} </td>
     <td> {$form.mainDescription|markup} </td>
+  </tr><tr>
+    <td> {g->text text="pathComponent"} </td>
+    <td> {$form.mainPathComponent|markup} </td>
   </tr></table>
 
   <h4> {g->text text="Language"} </h4>
@@ -78,6 +84,19 @@ function changed() { isChanged = 1; }
     {g->text text="The root album must have a title."}
   </div>
   {/if}
+  
+  <h4> {g->text text="URL"} </h4>
+  {strip}
+  {foreach from=$ItemAdmin.parents item=parent}
+  {if empty($parent.parentId)}
+  /
+  {else}
+  {$parent.pathComponent}/
+  {/if}
+  {/foreach}
+  {/strip}
+  <input type="text" size="40"
+   name="{g->formVar var="form[pathComponent]"}" value="{$form.pathComponent}"/>
 
   <h4> {g->text text="Summary"} </h4>
   <p class="giDescription">
diff -rupN galler21.ori/modules/rewrite/classes/RewriteSimpleHelper.class gallery21/modules/rewrite/classes/RewriteSimpleHelper.class
--- galler21.ori/modules/rewrite/classes/RewriteSimpleHelper.class	2009-12-28 16:24:27.766388859 +0530
+++ gallery21/modules/rewrite/classes/RewriteSimpleHelper.class	2009-12-28 22:58:06.135865364 +0530
@@ -47,7 +47,9 @@ class RewriteSimpleHelper {
 		$path = substr($path, 0, -5);
 	    }
 
-	    list ($ret, $itemId) = GalleryCoreApi::fetchItemIdByPath($path);
+	    GalleryCoreApi::requireOnce('modules/multilang/classes/MultilangExtHelper.class');
+        list ($ret, $itemId) = MultilangExtHelper::fetchItemIdByPath($path);
+
 	    if ($ret) {
 		return $ret->wrap(__FILE__, __LINE__);
 	    }

