Index: plugins/buildtools/_admin.php
===================================================================
--- plugins/buildtools/_admin.php	(revision 1977)
+++ plugins/buildtools/_admin.php	(revision 1977)
@@ -0,0 +1,20 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_CONTEXT_ADMIN')) { return; }
+$core->addBehavior('dcMaintenanceRegister', array('dcBuildTools', 'maintenanceAdmin'));
+
+class dcBuildTools
+{
+	public static function maintenanceAdmin($core, $tasks, $groups, $tabs) {
+		$tasks[] = 'dcMaintenanceBuildtools';
+	}
+}
Index: plugins/buildtools/_define.php
===================================================================
--- plugins/buildtools/_define.php	(revision 1977)
+++ plugins/buildtools/_define.php	(revision 1977)
@@ -0,0 +1,23 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_RC_PATH')) { return; }
+
+$this->registerModule(
+	/* Name */			"buildtools",
+	/* Description*/		"Internal build tools for dotclear team",
+	/* Author */			"dcTeam",
+	/* Version */			'1.0',
+	array(
+		'permissions' =>	'admin'
+	)
+);
+?>
Index: plugins/buildtools/_prepend.php
===================================================================
--- plugins/buildtools/_prepend.php	(revision 1977)
+++ plugins/buildtools/_prepend.php	(revision 1977)
@@ -0,0 +1,5 @@
+<?php
+
+global $__autoload;
+
+$__autoload['dcMaintenanceBuildtools'] = dirname(__FILE__).'/class.dc.maintenance.buildtools.php';
Index: plugins/buildtools/class.dc.maintenance.buildtools.php
===================================================================
--- plugins/buildtools/class.dc.maintenance.buildtools.php	(revision 1978)
+++ plugins/buildtools/class.dc.maintenance.buildtools.php	(revision 1978)
@@ -0,0 +1,80 @@
+<?php
+
+
+class dcMaintenanceBuildtools extends dcMaintenanceTask
+{
+	protected $group = 'other';
+
+	protected function init()
+	{
+		$this->task 		= __('Generate fake l10n');
+		$this->success 		= __('fake l10n file generated.');
+		$this->error 		= __('Failed to generate fake l10n file.');
+	}
+
+	public function execute()
+	{
+		global $core;
+		$widget = $this->core->plugins->getModules("widgets");
+		include $widget['root'].'/_default_widgets.php';
+		
+		$faker = new l10nFaker($GLOBALS['core']);
+		$faker->generate_file();
+		return true;
+	}
+}
+
+class l10nFaker {
+	protected $core;
+	protected $bundled_plugins;
+	
+	public function __construct($core) {
+		$this->core = $core;
+		$this->bundled_plugins = array(
+			"aboutConfig","akismet","antispam","attachments","blogroll",
+			"blowupConfig","daInstaller","fairTrackbacks","importExport",
+			"maintenance","pages","pings","simpleMenu","tags","themeEditor",
+			"userPref","widgets"
+		);
+		$this->core->media = new dcMedia($this->core);
+	}
+
+	protected function fake_l10n($str) {
+		return sprintf('__("%s");'."\n",str_replace('"','\\"',$str));
+	}
+	public function generate_file() {
+		global $__widgets;
+		global $__autoload;
+		
+		$main = "<?php\n";
+		$plugin = "<?php\n";
+		$main .= "# Media sizes\n\n";
+		foreach ($this->core->media->thumb_sizes as $k=> $v) {
+			$main .= $this->fake_l10n($v[2]);
+		}
+		$post_types = $this->core->getPostTypes();
+		$main .= "\n# Post types \n\n";
+		foreach ($post_types as $k => $v) {
+			$main .= $this->fake_l10n($v['label']);
+		}
+		$ws = $this->core->auth->user_prefs->favorites;
+		$main .= "\n# Favorites \n\n";
+		foreach ($ws->dumpPrefs() as $k => $v) {
+			$fav = unserialize($v['value']);
+			$main .= $this->fake_l10n($fav['title']);
+		}
+		file_put_contents(dirname($__autoload['dcCore']).'/_fake_l10n.php', $main);
+		$plugin .= "\n# Plugin names \n\n";
+		foreach ($this->bundled_plugins as $id) {
+			$p = $this->core->plugins->getModules($id);
+			$plugin .= $this->fake_l10n($p['desc']);
+		}
+		$plugin .= "\n# Widget settings names \n\n";
+		$widgets = $__widgets->elements();
+		foreach ($widgets as $w) {
+			$plugin .= $this->fake_l10n($w->desc());
+		}
+		mkdir(dirname(__FILE__)."/../_fake_plugin");
+		file_put_contents(dirname(__FILE__).'/../_fake_plugin/_fake_l10n.php', $plugin);
+	}
+}
Index: plugins/pages/page.php
===================================================================
--- plugins/pages/page.php	(revision 1964)
+++ plugins/pages/page.php	(revision 1981)
@@ -456,5 +456,5 @@
 					'</p>'.
 					'<p class="form-note warn">'.
-					__('Warning: If you set the URL manually, it may conflict with another entry.').
+					__('Warning: If you set the URL manually, it may conflict with another page.').
 					'</p></div>'
 	))));
