Index: admin/js/meta-editor.js
===================================================================
--- admin/js/meta-editor.js	(revision 2545)
+++ admin/js/meta-editor.js	(revision 2546)
@@ -1,7 +1,15 @@
 //~ metaEditor & metaEditor.prototype should go to the core.
-function metaEditor(target,meta_field,meta_type) {
+function metaEditor(target,meta_field,meta_type,meta_options) {
 	this.target = target;
+
 	this.meta_field = meta_field;
 	this.meta_type = meta_type;
+	this.meta_url = meta_options.meta_url || this.meta_url;
+	this.list_type = meta_options.list_type || this.list_type;
+	this.text_confirm_remove = meta_options.text_confirm_remove || this.text_confirm_remove;
+	this.text_add_meta = meta_options.text_add_meta || this.text_add_meta;
+	this.text_choose = meta_options.text_choose || this.text_choose;
+	this.text_all = meta_options.text_all || this.text_all;
+	this.text_separation = meta_options.text_separation || this.text_separation;
 };
 
@@ -13,4 +21,5 @@
 	text_all: 'all',
 	text_separation: 'Separate each %s by comas',
+	list_type: 'more',
 
 	target: null,
@@ -124,9 +133,9 @@
 		}
 
-		this.showMetaList(metaEditor.prototype.meta_type,this.target);
-
-	},
-
-	showMetaList: function(type,target) {
+		this.showMetaList(this.list_type,this.target);
+
+	},
+
+	showMetaList: function(list_type,target) {
 
 		var params = {
@@ -136,5 +145,5 @@
 		};
 
-		if (type == 'more') {
+		if (list_type == 'more') {
 			params.limit = '30';
 		}
@@ -167,5 +176,5 @@
 				});
 
-				if (type == 'more') {
+				if (list_type == 'more') {
 					var a_more = $('<a href="#" class="metaGetMore"></a>');
 					a_more.append(This.text_all + String.fromCharCode(160)+String.fromCharCode(187));
@@ -177,5 +186,5 @@
 				}
 
-				if (type != 'more-all') {
+				if (list_type != 'more-all') {
 					pl.addClass('hide');
 
Index: locales/fr/plugins.po
===================================================================
--- locales/fr/plugins.po	(revision 2509)
+++ locales/fr/plugins.po	(revision 2546)
@@ -1639,10 +1639,10 @@
 
 #, php-format
-msgid "Are you sure you want to remove this %s?"
-msgstr "Êtes-vous sûr de vouloir supprimer ce %s ?"
-
-#, php-format
-msgid "Add a %s to this entry"
-msgstr "Ajouter %s à ce billet"
+msgid "Are you sure you want to remove this tag?"
+msgstr "Êtes-vous sûr de vouloir supprimer ce mot-clé ?"
+
+#, php-format
+msgid "Add a tag to this entry"
+msgstr "Ajouter un mot-clé à ce billet"
 
 msgid "Choose from list"
@@ -1653,5 +1653,5 @@
 
 msgid "Enter tags separated by coma"
-msgstr "Entrez les mots-clés séparés par des virgules"
+msgstr "Séparez les mot-clés par des virgules"
 
 msgid "used in %e - frequency %p%"
Index: plugins/tags/_admin.php
===================================================================
--- plugins/tags/_admin.php	(revision 2322)
+++ plugins/tags/_admin.php	(revision 2546)
@@ -73,5 +73,5 @@
 		$wiki2xhtml->registerFunction('url:tag',array('tagsBehaviors','wiki2xhtmlTag'));
 	}
-	
+
 	public static function wiki2xhtmlTag($url,$content)
 	{
@@ -80,17 +80,17 @@
 			$content = substr($content,4);
 		}
-		
-		
+
+
 		$tag_url = html::stripHostURL($GLOBALS['core']->blog->url.$GLOBALS['core']->url->getURLFor('tag'));
 		$res['url'] = $tag_url.'/'.rawurlencode(dcMeta::sanitizeMetaID($url));
 		$res['content'] = $content;
-		
+
 		return $res;
 	}
-	
+
 	public static function tagsField($main,$sidebar,$post)
 	{
 		$meta =& $GLOBALS['core']->meta;
-		
+
 		if (!empty($_POST['post_tags'])) {
 			$value = $_POST['post_tags'];
@@ -102,14 +102,14 @@
 		'<div class="p s-tags" id="tags-edit">'.form::textarea('post_tags',20,3,$value,'maximal').'</div>';
 	}
-	
+
 	public static function setTags($cur,$post_id)
 	{
 		$post_id = (integer) $post_id;
-		
+
 		if (isset($_POST['post_tags'])) {
 			$tags = $_POST['post_tags'];
 			$meta =& $GLOBALS['core']->meta;
 			$meta->delPostMeta($post_id,'tag');
-			
+
 			foreach ($meta->splitMetaValues($tags) as $tag) {
 				$meta->setPostMeta($post_id,'tag',$tag);
@@ -117,6 +117,6 @@
 		}
 	}
-	
-	
+
+
 	public static function adminPostsActionsPage($core,$ap)
 	{
@@ -125,5 +125,5 @@
 			array('tagsBehaviors','adminAddTags')
 		);
-		
+
 		if ($core->auth->check('delete,contentadmin',$core->blog->id)) {
 			$ap->addAction(
@@ -133,5 +133,5 @@
 		}
 	}
-	
+
 	public static function adminAddTags($core, dcPostsActionsPage $ap, $post)
 	{
@@ -165,6 +165,6 @@
 			);
 			$ap->redirect(true);
-		} 
-		else 
+		}
+		else
 		{
 			$tag_url = $core->blog->url.$core->url->getURLFor('tag');
@@ -173,5 +173,5 @@
 			$type = isset($opts['tag_list_format']) ? $opts['tag_list_format'] : 'more';
 
-			
+
 			$ap->beginPage(
 				dcPage::breadcrumb(
@@ -183,15 +183,21 @@
 				dcPage::jsLoad('js/jquery/jquery.autocomplete.js').
 				dcPage::jsMetaEditor().
+				'<script type="text/javascript">'."\n".
+				"//<![CDATA[\n".
+				"var editor_tags_options = {\n".
+					"meta_url : 'plugin.php?p=tags&m=tag_posts&amp;tag=',\n".
+					"list_type : '".html::escapeJS($type)."',\n".
+					"text_confirm_remove : '".html::escapeJS(__('Are you sure you want to remove this tag?'))."',\n".
+					"text_add_meta : '".html::escapeJS(__('Add a tag to this entry'))."',\n".
+					"text_choose : '".html::escapeJS(__('Choose from list'))."',\n".
+					"text_all : '".html::escapeJS(__('all'))."',\n".
+					"text_separation : '".html::escapeJS(__('Enter tags separated by coma'))."',\n".
+				"};\n".
+				"\n//]]>\n".
+				"</script>\n".
 				'<script type="text/javascript" src="index.php?pf=tags/js/jquery.autocomplete.js"></script>'.
 				'<script type="text/javascript" src="index.php?pf=tags/js/posts_actions.js"></script>'.
 				'<script type="text/javascript">'."\n".
 				"//<![CDATA[\n".
-				"metaEditor.prototype.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';\n".
-				"metaEditor.prototype.meta_type = '".html::escapeJS($type)."';\n".
-				"metaEditor.prototype.text_confirm_remove = '".html::escapeJS(__('Are you sure you want to remove this %s?'))."';\n".
-				"metaEditor.prototype.text_add_meta = '".html::escapeJS(__('Add a %s to this entry'))."';\n".
-				"metaEditor.prototype.text_choose = '".html::escapeJS(__('Choose from list'))."';\n".
-				"metaEditor.prototype.text_all = '".html::escapeJS(__('all'))."';\n".
-				"metaEditor.prototype.text_separation = '".html::escapeJS(__('Enter tags separated by coma'))."';\n".
 				"dotclear.msg.tags_autocomplete = '".html::escapeJS(__('used in %e - frequency %p%'))."';\n".
 				"dotclear.msg.entry = '".html::escapeJS(__('entry'))."';\n".
@@ -217,5 +223,5 @@
 	public static function adminRemoveTags($core, dcPostsActionsPage $ap, $post)
 	{
-		if (!empty($post['meta_id']) && 
+		if (!empty($post['meta_id']) &&
 			$core->auth->check('delete,contentadmin',$core->blog->id))
 		{
@@ -242,5 +248,5 @@
 			$meta =& $core->meta;
 			$tags = array();
-			
+
 			foreach ($ap->getIDS() as $id) {
 				$post_tags = $meta->getMetadata(array(
@@ -257,5 +263,5 @@
 			if (empty($tags)) {
 				throw new Exception(__('No tags for selected entries'));
-			}			
+			}
 			$ap->beginPage(
 				dcPage::breadcrumb(
@@ -266,10 +272,10 @@
 			)));
 			$posts_count = count($_POST['entries']);
-			
+
 			echo
 			'<form action="'.$ap->getURI().'" method="post">'.
 			$ap->getCheckboxes().
 			'<div><p>'.__('Following tags have been found in selected entries:').'</p>';
-			
+
 			foreach ($tags as $k => $n) {
 				$label = '<label class="classic">%s %s</label>';
@@ -282,8 +288,8 @@
 					'</p>';
 			}
-			
+
 			echo
 			'<p><input type="submit" value="'.__('ok').'" />'.
-			
+
 			$core->formNonce().$ap->getHiddenFields().
 			form::hidden(array('action'),'tags_remove').
@@ -291,26 +297,32 @@
 			$ap->endPage();
 		}
-		
-	}
-	
+
+	}
+
 	public static function postHeaders()
 	{
 		$tag_url = $GLOBALS['core']->blog->url.$GLOBALS['core']->url->getURLFor('tag');
-		
+
 		$opts = $GLOBALS['core']->auth->getOptions();
 		$type = isset($opts['tag_list_format']) ? $opts['tag_list_format'] : 'more';
-		
-		return 
+
+		return
+		'<script type="text/javascript">'."\n".
+		"//<![CDATA[\n".
+		"var editor_tags_options = {\n".
+			"meta_url : 'plugin.php?p=tags&m=tag_posts&amp;tag=',\n".
+			"list_type : '".html::escapeJS($type)."',\n".
+			"text_confirm_remove : '".html::escapeJS(__('Are you sure you want to remove this tag?'))."',\n".
+			"text_add_meta : '".html::escapeJS(__('Add a tag to this entry'))."',\n".
+			"text_choose : '".html::escapeJS(__('Choose from list'))."',\n".
+			"text_all : '".html::escapeJS(__('all'))."',\n".
+			"text_separation : '".html::escapeJS(__('Enter tags separated by coma'))."',\n".
+		"};\n".
+		"\n//]]>\n".
+		"</script>\n".
 		'<script type="text/javascript" src="index.php?pf=tags/js/jquery.autocomplete.js"></script>'.
 		'<script type="text/javascript" src="index.php?pf=tags/js/post.js"></script>'.
 		'<script type="text/javascript">'."\n".
 		"//<![CDATA[\n".
-		"metaEditor.prototype.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';\n".
-		"metaEditor.prototype.meta_type = '".html::escapeJS($type)."';\n".
-		"metaEditor.prototype.text_confirm_remove = '".html::escapeJS(__('Are you sure you want to remove this %s?'))."';\n".
-		"metaEditor.prototype.text_add_meta = '".html::escapeJS(__('Add a %s to this entry'))."';\n".
-		"metaEditor.prototype.text_choose = '".html::escapeJS(__('Choose from list'))."';\n".
-		"metaEditor.prototype.text_all = '".html::escapeJS(__('all'))."';\n".
-		"metaEditor.prototype.text_separation = '';\n".
 		"jsToolBar.prototype.elements.tag.title = '".html::escapeJS(__('Tag'))."';\n".
 		"jsToolBar.prototype.elements.tag.url = '".html::escapeJS($tag_url)."';\n".
@@ -322,5 +334,5 @@
 		'<link rel="stylesheet" type="text/css" href="index.php?pf=tags/style.css" />';
 	}
-	
+
 	public static function adminUserForm($args)
 	{
@@ -334,11 +346,11 @@
 			$opts = array();
 		}
-		
+
 		$combo = array();
 		$combo[__('Short')] = 'more';
 		$combo[__('Extended')] = 'all';
-		
+
 		$value = array_key_exists('tag_list_format',$opts) ? $opts['tag_list_format'] : 'more';
-		
+
 		echo
 		'<p><label for="user_tag_list_format" class="classic">'.__('Tags list format:').'</label> '.
@@ -346,5 +358,5 @@
 		'</p>';
 	}
-	
+
 	public static function setTagListFormat($cur,$user_id = null)
 	{
Index: plugins/tags/_define.php
===================================================================
--- plugins/tags/_define.php	(revision 2257)
+++ plugins/tags/_define.php	(revision 2546)
@@ -16,5 +16,5 @@
 	/* Description*/		"Tags for posts",
 	/* Author */			"Olivier Meunier",
-	/* Version */			'1.2',
+	/* Version */			'1.2.1',
 	array(
 		'permissions' =>	'usage,contentadmin',
Index: plugins/tags/js/post.js
===================================================================
--- plugins/tags/js/post.js	(revision 2180)
+++ plugins/tags/js/post.js	(revision 2546)
@@ -4,5 +4,5 @@
 		var post_id = $('#id');
 		var meta_field = null;
-		
+
 		if (tags_edit.length > 0) {
 			post_id = (post_id.length > 0) ? post_id.get(0).value : false;
@@ -11,12 +11,12 @@
 				meta_field.val($('#post_tags').val());
 			}
-			var mEdit = new metaEditor(tags_edit,meta_field,'tag');
+			var mEdit = new metaEditor(tags_edit,meta_field,'tag',editor_tags_options);
 			mEdit.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';
 			mEdit.displayMeta('tag',post_id);
-			
+
 			// mEdit object reference for toolBar
 			window.dc_tag_editor = mEdit;
 		}
-		
+
 		$('#post_meta_input').autocomplete(mEdit.service_uri, {
 			extraParams: {
@@ -29,5 +29,5 @@
 			matchSubset: false,
 			matchContains: true,
-			parse: function(xml) { 
+			parse: function(xml) {
 				var results = [];
 				$(xml).find('meta').each(function(){
@@ -39,5 +39,5 @@
 						},
 						result: $(this).text()
-					}; 
+					};
 				});
 				return results;
@@ -69,5 +69,5 @@
 // Toolbar button for tags
 jsToolBar.prototype.elements.tagSpace = {
-	type: 'space', 
+	type: 'space',
 	format:{
 		wysiwyg:true,
@@ -105,8 +105,8 @@
 jsToolBar.prototype.elements.tag.fn.wysiwyg = function() {
 	var t = this.getSelectedText();
-	
+
 	if (t == '') { window.alert(dotclear.msg.no_selection); return; }
 	if (t.indexOf(',') != -1) { return; }
-	
+
 	var n = this.getSelectedNode();
 	var a = document.createElement('a');
Index: plugins/tags/js/posts_actions.js
===================================================================
--- plugins/tags/js/posts_actions.js	(revision 1112)
+++ plugins/tags/js/posts_actions.js	(revision 2546)
@@ -1,23 +1,23 @@
 $(function() {
 	var tag_field = $('#new_tags');
-	
+
 	tag_field.after('<div id="tags_list"></div>');
 	tag_field.hide();
-	
-	var target = $('#tags_list');	
-	var mEdit = new metaEditor(target,tag_field,'tag');
+
+	var target = $('#tags_list');
+	var mEdit = new metaEditor(target,tag_field,'tag',editor_tags_options);
 	mEdit.meta_url = 'plugin.php?p=tags&m=tag_posts&amp;tag=';
-	
+
 	mEdit.meta_dialog = $('<input type="text" />');
 	mEdit.meta_dialog.attr('title',mEdit.text_add_meta.replace(/%s/,mEdit.meta_type));
 	mEdit.meta_dialog.attr('id','post_meta_input');
 	mEdit.meta_dialog.css('width','90%');
-	
+
 	mEdit.addMetaDialog();
-	
+
 	$('input[name="save_tags"]').click(function() {
 		tag_field.val($('#post_meta_input').val());
 	});
-	
+
 	$('#post_meta_input').autocomplete(mEdit.service_uri, {
 		extraParams: {
@@ -29,5 +29,5 @@
 		matchSubset: false,
 		matchContains: true,
-		parse: function(xml) { 
+		parse: function(xml) {
 			var results = [];
 			$(xml).find('meta').each(function(){
@@ -39,5 +39,5 @@
 					},
 					result: $(this).text()
-				}; 
+				};
 			});
 			return results;
@@ -54,6 +54,6 @@
 			')</em>';
 		},
-		formatResult: function(tag) { 
-			return tag.result; 
+		formatResult: function(tag) {
+			return tag.result;
 		}
 	});
