[Pkg-mozext-commits] [sage-extension] 08/54: 1.2-branch merge

David Prévot taffit at moszumanska.debian.org
Fri May 1 03:10:36 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to tag sage_1_3
in repository sage-extension.

commit cf63064b0007ea3d1da0fdd9d38fe702bfd37e5a
Author: Peter Andrews <petea at jhu.edu>
Date:   Sat Sep 11 06:37:33 2004 +0000

    1.2-branch merge
---
 src/install.js                        |    2 +-
 src/install.rdf                       |    2 +-
 src/sage/content/feedlib.js           |   12 +-
 src/sage/content/opml/opml.js         |   13 +-
 src/sage/content/sage.js              | 1569 +++++++++++++++++----------------
 src/sage/content/updatechecker.js     |   10 +-
 src/sage/locale/en-US/sage.dtd        |  104 +--
 src/sage/locale/en-US/sage.properties |  180 ++--
 src/sage/locale/fr-FR/sage.dtd        |   29 +-
 src/sage/locale/fr-FR/sage.properties |  180 ++--
 src/sage/locale/hu-HU/sage.dtd        |  106 +--
 src/sage/locale/hu-HU/sage.properties |  182 ++--
 src/sage/locale/it-IT/sage.dtd        |  106 +--
 src/sage/locale/it-IT/sage.properties |  180 ++--
 src/sage/locale/ja-JP/sage.dtd        |  108 +--
 src/sage/locale/ja-JP/sage.properties |  182 ++--
 src/sage/locale/nl-NL/sage.dtd        |  104 +--
 src/sage/locale/nl-NL/sage.properties |  180 ++--
 18 files changed, 1631 insertions(+), 1618 deletions(-)

diff --git a/src/install.js b/src/install.js
index b77a05d..456c26d 100755
--- a/src/install.js
+++ b/src/install.js
@@ -1,6 +1,6 @@
 const APP_NAME			= "Sage";
 const APP_CHROME_NAME		= "sage";
-const APP_VERSION		= "1.2";
+const APP_VERSION		= "1.2.2";
 const APP_FILE 			= "sage.jar";
 const APP_CONTENTS_PATH		= "content/";
 const APP_SKIN_CLASSIC_PATH	= "skin/classic/";
diff --git a/src/install.rdf b/src/install.rdf
index 1643919..821cf8f 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
 
 <em:id>{a6ca9b3b-5e52-4f47-85d8-cca35bb57596}</em:id>
 <em:name>Sage</em:name>
-<em:version>1.2</em:version>
+<em:version>1.3</em:version>
 <em:description>A lightweight RSS and Atom feed aggregator.</em:description>
 <em:creator>The Sage Project</em:creator>
 <em:contributor>Peter Andrews</em:contributor>
diff --git a/src/sage/content/feedlib.js b/src/sage/content/feedlib.js
index f2cda39..5a4c11b 100644
--- a/src/sage/content/feedlib.js
+++ b/src/sage/content/feedlib.js
@@ -77,8 +77,10 @@ Feed.prototype.parseRSS = function() {
 	}
 
 	var itemNodes = feedXML.getElementsByTagName("item");
+	var item, guid;
 	for(i = 0; itemNodes.length > i; i++) {
-		var item = {title:"", link:"", content:"", pubDate:""};
+		item = {title:"", link:"", content:"", pubDate:""};
+		guid = null;
 
 		for(var j = itemNodes[i].firstChild; j!=null; j=j.nextSibling) {
 			if(j.nodeType != j.ELEMENT_NODE) continue;
@@ -92,8 +94,8 @@ Feed.prototype.parseRSS = function() {
 					}
 					break;
 				case "guid":
-					if(!item.link) {
-						item.link = CommonFunc.getInnerText(j);
+					if(!guid) {
+						guid = CommonFunc.getInnerText(j);
 					}
 					break;
 				case "description":
@@ -120,6 +122,10 @@ Feed.prototype.parseRSS = function() {
 			}
 		}
 
+		if(!item.link && guid) {
+			item.link = guid;
+		}
+
 		var tmpFeedItem = new FeedItem(item.title, item.link, item.content, item.pubDate);
 
 		if(tmpFeedItem.hasPubDate()) {
diff --git a/src/sage/content/opml/opml.js b/src/sage/content/opml/opml.js
index c02d0c4..cb881aa 100755
--- a/src/sage/content/opml/opml.js
+++ b/src/sage/content/opml/opml.js
@@ -152,19 +152,22 @@ function outlineFilter(aNode) {
 	}
 }
 
-	// outline �v�f���� �u�b�N�}�[�N�A�C�e����쐬
 function createRssItem(aOutlineNode, aRssFolder) {
 	var type = aOutlineNode.getAttribute("type");
 	var title = aOutlineNode.getAttribute("title");
 	if(!title) title = aOutlineNode.getAttribute("text");
-	var xmlUrl = aOutlineNode.getAttribute("xmlUrl");
-		// �s���S�� OUTLINE �͖�������
+	if(aOutlineNode.hasAttribute("xmlUrl")) {
+		var xmlUrl = aOutlineNode.getAttribute("xmlUrl");
+	} else {
+		var xmlUrl = aOutlineNode.getAttribute("xmlurl");
+	}
+
 	if(type!="rss" && !title && xmlUrl) return;
 
 	if(BMSVC.createBookmarkInContainer.length == 7) { // firefox 0.8 and lower
-		BMSVC.createBookmarkInContainer(title, xmlUrl, null, null, null, aRssFolder, null);
+		BMSVC.createBookmarkInContainer(title, xmlUrl, null, "no-updated", null, aRssFolder, null);
 	} else {
-		BMSVC.createBookmarkInContainer(title, xmlUrl, null, null, null, null, aRssFolder, null);
+		BMSVC.createBookmarkInContainer(title, xmlUrl, null, "no-updated", null, null, aRssFolder, null);
 	}
 	
 }
diff --git a/src/sage/content/sage.js b/src/sage/content/sage.js
index dc5636e..3904315 100755
--- a/src/sage/content/sage.js
+++ b/src/sage/content/sage.js
@@ -1,784 +1,785 @@
-const USER_AGENT = CommonFunc.USER_AGENT;
-
-const RESULT_OK = 0;
-const RESULT_PARSE_ERROR = 1;
-const RESULT_NOT_RSS = 2;
-const RESULT_NOT_FOUND = 3;
-const RESULT_NOT_AVAILABLE = 4;
-const RESULT_ERROR_FAILURE = 5;
-
-var resultStrArray = null;
-
-	// XUL Object
-var strRes, bmStrRes; // stringbundle Object
-var bookmarksTree;
-var rssItemListBox;
-var rssStatusImage;
-var rssStatusLabel;
-var rssTitleLabel;
-var rssItemToolTip;
-
-var currentFeed;
-var httpReq;
-var prefObserverSageFolder;
-var responseXML;
-var lastResource;
-var rssLoading = false;
-var sageFolderID = "";
-var enableTooltip = true;
-var popupTimeoutId=0;
-
-
-function init() {
-	bookmarksTree = document.getElementById("bookmarksTree");
-	rssItemListBox = document.getElementById("rssItemListBox");
-	rssStatusImage = document.getElementById("rssStatusImage");
-	rssStatusLabel = document.getElementById("rssStatusLabel");
-	rssTitleLabel = document.getElementById("rssTitleLabel");
-	rssItemToolTip = document.getElementById("rssItemToolTip");
-
-	strRes = document.getElementById("strRes");
-	bmStrRes = document.getElementById("bmStrRes");
-	resultStrArray = new Array(
-		strRes.getString("RESULT_OK_STR"),
-		strRes.getString("RESULT_PARSE_ERROR_STR"),
-		strRes.getString("RESULT_NOT_RSS_STR"),
-		strRes.getString("RESULT_NOT_FOUND_STR"),
-		strRes.getString("RESULT_NOT_AVAILABLE_STR"),
-		strRes.getString("RESULT_ERROR_FAILURE_STR")
-	);
-
-	// if feed folder has not been set, assume new user and install default feed folder and demo feeds
-	if(!CommonFunc.getPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", null)) {
-		logMessage("setting default preferences...");
-		var new_folder = BMSVC.createFolderInContainer("Sage Feeds", RDF.GetResource("NC:BookmarksRoot"), null);
-		CommonFunc.setPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", new_folder.Value);
-		if(BMSVC.createBookmarkInContainer.length == 7) { // firefox 0.8 and lower
-			BMSVC.createBookmarkInContainer("BBC News | News Front Page | World Edition", "http://news.bbc.co.uk/rss/newsonline_world_edition/front_page/rss091.xml", null, "updated", null, new_folder, null);
-			BMSVC.createBookmarkInContainer("Yahoo! News - Sports", "http://rss.news.yahoo.com/rss/sports", null, "updated", null, new_folder, null);
-			BMSVC.createBookmarkInContainer("Sage Project News", "http://sage.mozdev.org/rss.xml", null, "updated", null, new_folder, null);
-		} else {
-			BMSVC.createBookmarkInContainer("BBC News | News Front Page | World Edition", "http://news.bbc.co.uk/rss/newsonline_world_edition/front_page/rss091.xml", null, "updated", null, null, new_folder, null);
-			BMSVC.createBookmarkInContainer("Yahoo! News - Sports", "http://rss.news.yahoo.com/rss/sports", null, "updated", null, null, new_folder, null);
-			BMSVC.createBookmarkInContainer("Sage Project News", "http://sage.mozdev.org/rss.xml", null, "updated", null, null, new_folder, null);
-		}
-		setCheckbox("chkShowSearchBar", "false");
-		setCheckbox("chkShowTooltip", "true");
-		setCheckbox("chkShowFeedItemList", "true");
-	}
-
-	// get feed folder location
-	sageFolderID = CommonFunc.getPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", "NC:BookmarksRoot");
-	// check for changes to the feed folder
-	prefObserverSageFolder = CommonFunc.addPrefListener(CommonFunc.RSS_READER_FOLDER_ID, sageFolderChanged);
-	// set feed folder location
-	bookmarksTree.tree.setAttribute("ref", sageFolderID);
-	// select first entry
-	bookmarksTree.treeBoxObject.selection.select(0);
-
-	FeedSearch.init();
-	toggleShowSearchBar();
-	toggleShowFeedItemList();
-
-	logMessage("initialized");
-}
-
-function discoverFeeds() {
-	window.openDialog("chrome://sage/contents/discover_feeds.xul", "sage_discover_feeds", "chrome,modal,close", bookmarksTree);
-}
-
-// TODO: This does not work in 0.9.x since the implementation for smart bookmarks
-//       has been removed. Too bad because this feature was really nice
-function showOnlyUpdated() {
-	if(getCheckboxCheck("chkOnlyUpdate")) {
-		var findURL = "find:datasource=rdf:bookmarks&match=";
-			findURL += CommonFunc.BM_DESCRIPTION;
-			findURL += "&method=is&text=updated";
-		bookmarksTree.tree.setAttribute("ref", findURL);
-	} else {
-		bookmarksTree.tree.setAttribute("ref", sageFolderID);
-	}
-}
-
-function sageFolderChanged(subject, topic, prefName) {
-		// observe Preference
-	sageFolderID = CommonFunc.getPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", "NC:BookmarksRoot");
-	bookmarksTree.tree.setAttribute("ref", sageFolderID);
-	bookmarksTree.treeBoxObject.selection.select(0);
-}
-
-function done() {
-	if(prefObserverSageFolder) {
-		CommonFunc.removePrefListener(prefObserverSageFolder);
-	}
-
-	if(rssLoading) {
-		httpReq.abort();
-		rssLoading = false;
-	}
-	UpdateChecker.done();
-
-	logMessage("shutdown");
-}
-
-function openOPMLWizard() {
-	var dialogURL = "chrome://sage/content/opml/opml.xul";
-	window.openDialog(dialogURL, "", "chrome,modal,close");
-}
-
-function openSettingDialog() {
-	var dialogURL = "chrome://sage/content/settings/settings.xul";
-	window.openDialog(dialogURL, "", "chrome,modal,close");
-}
-
-function openSageProjectFeed() {
-	lastResource = null;
-	var feedURL = "http://sage.mozdev.org/rss.xml";
-	setStatusLoading("Sage Project News");
-	httpGet(feedURL);
-}
-
-function manageRSSList() {
-	var dialogURL = "chrome://browser/content/bookmarks/bookmarksManager.xul";
-	window.openDialog(dialogURL, "", "chrome,all,dialog=no", sageFolderID);
-}
-
-function updateCheck(aCheckFolderId) {
-	UpdateChecker.onCheck = function(aName, aURL) {
-			rssStatusImage.setAttribute("loading", "true");
-			rssStatusLabel.value = strRes.getString("RESULT_CHECKING") + ": " + aName;
-	}
-	UpdateChecker.onChecked = function(aName, aURL) {
-		setStatusDone();
-	}
-
-	if(aCheckFolderId) {
-		UpdateChecker.startCheck(aCheckFolderId);
-	} else {
-		UpdateChecker.startCheck(sageFolderID);
-	}
-}
-
-function BookmarkResource(aRes, aDB){
-	this.res = aRes;
-	this.db = aDB;
-	this.name = BookmarksUtils.getProperty(this.res, NC_NS + "Name", this.db);
-	this.url = BookmarksUtils.getProperty(this.res, NC_NS + "URL", this.db);
-}
-
-function bookmarksOpen(){
-	lastResource = new BookmarkResource(bookmarksTree.currentResource, bookmarksTree.db);
-	setStatusLoading();
-	httpGet(lastResource.url);
-}
-
-function createTreeContextMenu2(aEvent) {
-	var popup = aEvent.target;
-	if(popup.localName != "menupopup") return;
-
-	var selection = bookmarksTree._selection;
-	var itemId = selection.item[0].Value;
-	var cmdSrc = "";
-	var tempMenuItem;
-
-	if(selection.type == "Bookmark") {
-		cmdSrc = "GetRssTitle.getRssTitle('" + itemId + "')";
-		tempMenuItem = document.createElement("menuitem");
-		tempMenuItem.setAttribute("label", strRes.getString("GET_RSS_TITLE"));
-		tempMenuItem.setAttribute("oncommand", cmdSrc);
-		popup.appendChild(document.createElement("menuseparator"));
-		popup.appendChild(tempMenuItem);
-	} else if(selection.type == "Folder") {
-		cmdSrc = "updateCheck('" + itemId + "')";
-		tempMenuItem = document.createElement("menuitem");
-		tempMenuItem.setAttribute("label", strRes.getString("CHECK_UPDATE"));
-		tempMenuItem.setAttribute("oncommand", cmdSrc);
-		popup.appendChild(document.createElement("menuseparator"));
-		popup.appendChild(tempMenuItem);
-	}
-}
-
-function bookmarksTreeClick(aEvent){
-	if(aEvent.type == "click") {
-		if(aEvent.button == 2 || aEvent.originalTarget.localName != "treechildren") {
-			return;
-		}
-		var obj = {};
-		bookmarksTree.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, {}, {}, obj);
-		if(obj.value == "twisty") return;
-	} else if(aEvent.type == "keypress") {
-		if(aEvent.originalTarget.localName != "tree") {
-			return;
-		}
-	}
-
-	CreateHTML.tabbed = false;
-	if(aEvent.button == 1) { CreateHTML.tabbed = true; } // click middle button
-	if(aEvent.ctrlKey) { CreateHTML.tabbed = true; } // press Ctrl Key
-
-	const BOOKMARK_TYPE = RDF_NS + "type";
-	const BOOKMARK_SEPARATOR = NC_NS + "BookmarkSeparator";
-	const BOOKMARK_FOLDER = NC_NS + "Folder"
-	var bookmarkType = (BookmarksUtils.getProperty(bookmarksTree.currentResource, BOOKMARK_TYPE , bookmarksTree.db))
-	if(bookmarkType == BOOKMARK_SEPARATOR || bookmarkType == BOOKMARK_FOLDER) {
-		return;
-	}
-
-	bookmarksOpen();
-}
-
-function rssItemListBoxClick(aEvent) {
-	if(aEvent.type == "click") {
-		if(aEvent.button == 2 || aEvent.originalTarget.localName != "listitem") {
-			return;
-		}
-	} else if(aEvent.type == "keypress") {
-		if(aEvent.originalTarget.localName != "listbox") {
-			return;
-		}
-	}
-
-	var listItem = rssItemListBox.selectedItem;
-	var feedItem = getFeedItemFromListItem( listItem );
-
-	openURI( feedItem.getLink(), aEvent );
-	listItem.setAttribute("visited", "true");
-}
-
-function rssTitleLabelClick(aNode, aEvent){
-	var tabbed = false;
-	if(!aNode.hasAttribute("href") || aEvent.button == 2) {
-		return;
-	}
-
-	var link = aNode.getAttribute("href");
-	openURI( link, aEvent );
-}
-
-function setStatusLoading(label) {
-	rssStatusImage.setAttribute("loading", "true");
-	if(label) {
-		rssStatusLabel.value = strRes.getString("RESULT_LOADING") + ": " + label;
-	} else {
-		rssStatusLabel.value = strRes.getString("RESULT_LOADING") + ": " + lastResource.name;
-	}
-}
-
-function setStatusDone() {
-	rssStatusImage.setAttribute("loading", "false");
-	rssStatusLabel.value = "";
-
-	if(currentFeed) {
-		rssTitleLabel.value = htmlToText(currentFeed.getTitle());
-		if(currentFeed.getLink()) {
-			rssTitleLabel.setAttribute("href", currentFeed.getLink());
-			rssTitleLabel.tooltipText = currentFeed.getLink();
-		} else {
-			rssTitleLabel.removeAttribute("href");
-			rssTitleLabel.tooltipText = "";
-		}
-	}
-}
-
-function setStatusError(aStatus) {
-	rssStatusImage.setAttribute("loading", "error");
-	rssStatusLabel.value = "Error: " + aStatus;
-}
-
-function getContentBrowser() {
-	var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);
-	var topWindowOfType = windowManager.getMostRecentWindow("navigator:browser");
-	if (topWindowOfType) {
-		return topWindowOfType.document.getElementById('content');
-	}
-	return null;
-}
-
-function toggleShowSearchBar() {
-	var showSearchBar = getCheckboxCheck("chkShowSearchBar");
-	document.getElementById("barSearch").hidden = !showSearchBar;
-}
-
-function toggleShowFeedItemList() {
-	var showFeedItemList = getCheckboxCheck("chkShowFeedItemList");
-	document.getElementById("sage-splitter").hidden = !showFeedItemList;
-	document.getElementById("rssItemListBoxBox").hidden = !showFeedItemList;
-	if(showFeedItemList) setRssItemListBox();
-}
-
-function setRssItemListBox() {
-	if(!currentFeed) return;
-	if(document.getElementById("rssItemListBoxBox").hidden) return;
-
-	while(rssItemListBox.getRowCount() != 0) {
-		rssItemListBox.removeItemAt(0);
-	}
-
-	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
-
-	var items = currentFeed.getItems(feedItemOrder);
-
-	for(var i = 0; items.length > i; i++) {
-		var item = items[i];
-		var itemLabel = item.getTitle();
-		itemLabel = (i+1) + ". " + itemLabel;
-		var listItem = rssItemListBox.appendItem(itemLabel, i);
-		if(isVisited(item.getLink())) {
-			listItem.setAttribute("visited", "true");
-		}
-	}
-}
-
-function getCheckboxCheck(element_id) {
-	var checkboxNode = document.getElementById(element_id);
-	return checkboxNode.getAttribute("checked") == "true";
-}
-
-function setCheckbox(element_id, value) {
-	var checkboxNode = document.getElementById(element_id);
-	checkboxNode.setAttribute("checked", value);
-}
-
-// TODO: Is this still used?
-function showRssItemListPopup(aEvent) {
-	if(aEvent.originalTarget.localName != "listitem") {
-		rssItemListPopup.hidePopup();
-		return;
-	}
-	if(!getCheckboxCheck("chkShowTooltip")) {
-		rssItemListPopup.hidePopup();
-		return;
-	}
-
-	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
-
-	var items = currentFeed.getItems(feedItemOrder);
-
-	var description = htmlToText(items[aEvent.originalTarget.value].getContent());
-	if(description.indexOf("/") != -1) {
-		description = description.replace(/\//gm, "/\u200B");
-	}
-		// description 400ȓɂ
-	if(description.length > 400) {
-		description = description.substring(0,400) + "...";
-	}
-
-	var popX = aEvent.screenX + 10;
-	var popY = aEvent.screenY + 20;
-
-	rssItemListPopup.title = aEvent.originalTarget.label;
-	rssItemListPopup.description = description;
-	rssItemListPopup.autoPosition = false;
-	rssItemListPopup.moveTo(popX, popY);
-	popupTimeoutId = setTimeout("rssItemListPopup.showPopup(rssItemListBox)", 150);
-}
-
-function populateToolTip(e) {
-	// if setting disabled
-	if(!getCheckboxCheck("chkShowTooltip")) {
-		e.preventDefault();
-		return;
-	}
-
-	if(document.tooltipNode == rssItemListBox) {
-		e.preventDefault();
-		return;
-	}
-	var listItem = document.tooltipNode;
-	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
-	var items = currentFeed.getItems(feedItemOrder);
-	var description = htmlToText(items[listItem.value].getContent());
-  if(description.indexOf("/") != -1) {
-    description = description.replace(/\//gm, "/\u200B");
-  }
-  if(description.length > 400) {
-    description = description.substring(0,400) + "...";
-  }
-
-	rssItemToolTip.title = listItem.label;
-	rssItemToolTip.description = description;
-}
-
-// TODO: Is this still used?
-function hideRssItemListPopup(aEvent) {
-	clearTimeout(popupTimeoutId);
-	rssItemListPopup.hidePopup();
-}
-
-function htmlToText(aStr) {
-	var	formatConverter = Components.classes["@mozilla.org/widget/htmlformatconverter;1"].createInstance(Components.interfaces.nsIFormatConverter);
-	var fromStr = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
-	fromStr.data = aStr;
-	var toStr = { value: null };
-
-	try {
-		formatConverter.convert("text/html", fromStr, fromStr.toString().length, "text/unicode", toStr, {});
-	} catch(e) {
-		return aStr;
-	}
-	if(toStr.value) {
-		toStr = toStr.value.QueryInterface(Components.interfaces.nsISupportsString);
-		return toStr.toString();
-	}
-	return aStr;
-}
-
-
-
-// ++++++++++ +++++++++  HTTP	++++++++++ +++++++++
-
-function httpGet(aURL) {
-	if(rssLoading) {
-		httpReq.abort();
-		rssLoading = false;
-	}
-
-	responseXML = null;
-
-	httpReq = new XMLHttpRequest();
-
-	httpReq.open("GET", aURL);
-
-	httpReq.onload = httpLoaded;
-	httpReq.onerror = httpError;
-	httpReq.onreadystatechange = httpReadyStateChange;
-
-	try {
-		httpReq.setRequestHeader("User-Agent", USER_AGENT);
-		httpReq.overrideMimeType("application/xml");
-	} catch(e) {
-		httpGetResult(RESULT_ERROR_FAILURE);
-	}
-
-	try {
-		httpReq.send(null);
-		rssLoading = true;
-	} catch(e) {
-		httpGetResult(RESULT_ERROR_FAILURE);
-	}
-}
-
-function httpError(e) {
-	logMessage("HTTP Error");
-}
-
-function httpReadyStateChange() {
-
-	if(httpReq.readyState == 2) {
-		try {
-			if(httpReq.status == 404) {
-				httpGetResult(RESULT_NOT_FOUND);
-			}
-		} catch(e) {
-			httpGetResult(RESULT_NOT_AVAILABLE);
-			return;
-		}
-	} else if(httpReq.readyState == 3) {}
-}
-
-function httpLoaded(e) {
-	responseXML = httpReq.responseXML;
-	var rootNodeName = responseXML.documentElement.localName.toLowerCase();
-
-	switch(rootNodeName) {
-		case "parsererror":
-			// XML Parse Error
-			httpGetResult(RESULT_PARSE_ERROR);
-			break;
-		case "rss":
-		case "rdf":
-		case "feed":
-			httpGetResult(RESULT_OK);
-			break;
-		default:
-			// Not RSS or Atom
-			httpGetResult(RESULT_NOT_RSS);
-			break;
-	}
-}
-
-function httpGetResult(aResultCode) {
-	httpReq.abort();
-	rssLoading = false;
-
-	if(aResultCode == RESULT_OK) {
-		currentFeed = new Feed(responseXML);
-
-		if(lastResource && lastResource.res) {
-			if(CommonFunc.getPrefValue(CommonFunc.AUTO_FEED_TITLE, "bool", true)) {
-				if(CommonFunc.getBMDSProperty(lastResource.res, CommonFunc.BM_NAME) != currentFeed.getTitle()) {
-					CommonFunc.setBMDSProperty(lastResource.res, CommonFunc.BM_NAME, currentFeed.getTitle());
-				}
-			}
-
-			BMSVC.updateLastVisitedDate(lastResource.url, "UTF-8");
-			CommonFunc.setBMDSProperty(lastResource.res, CommonFunc.BM_DESCRIPTION, CommonFunc.STATUS_NO_UPDATE + " " + currentFeed.getSignature());
-		}
-
-		setStatusDone();
-		setRssItemListBox();
-
-		if(CommonFunc.getPrefValue(CommonFunc.RENDER_FEEDS, "bool", true)) {
-			CreateHTML.openHTML(currentFeed);
-		}
-	} else {
-		setStatusError(resultStrArray[aResultCode]);
-	}
-}
-
-
-// link visit code based on LinkVisitor.mozdev.org
-
-
-const _uriFixup = Components.classes["@mozilla.org/docshell/urifixup;1"].getService(Components.interfaces.nsIURIFixup);
-const _globalHistory = Components.classes['@mozilla.org/browser/global-history;2'].getService(Components.interfaces.nsIGlobalHistory2);
-const _browserHistory = Components.classes["@mozilla.org/browser/global-history;2"].getService(Components.interfaces.nsIBrowserHistory);
-
-function markURIAsRead( sURI )
-{
-	markURIReadState( sURI, true );
-}
-
-function markURIAsUnread( sURI )
-{
-	markURIReadState( sURI, false );
-}
-
-function markURIReadState( sURI, bRead )
-{
-	if ( !sURI )
-		return;
-
-	// why do we need to fixup the URI?
-	var fixupURI = _getFixupURI( sURI );
-	var visited = _globalHistory.isVisited( fixupURI );
-	if ( visited == bRead )
-		return;
-
-	if ( bRead )
-		_globalHistory.addURI( fixupURI, false, true );
-	else
-		_browserHistory.removePage( fixupURI.spec );
-}
-
-function _getFixupURI( sURI )
-{
-	try
-	{
-		return _uriFixup.createFixupURI( sURI, 0 );
-	}
-	catch( e )
-	{
-		return null;
-	}
-}
-
-function isVisited( sURI )
-{
-	var fixupURI = _getFixupURI( sURI );
-	return _globalHistory.isVisited( fixupURI );
-}
-
-
-// RSS Item Context Menu
-
-/**
- * This is called before the context menu for the listbox is shown. Here we enabled/disable
- * menu items as well as change the text to correctly reflect the read state
- * @param	e : Event
- * @returns	void
- */
-function updateItemContextMenu( e )
-{
-	var popupNode = document.popupNode;
-
-	var menuItemIds = ["rssOpenItem", "rssOpenNewTabItem", "rssOpenNewWindowItem",
-					   "rssMarkAsReadItem", "rssMarkAllAsReadItem", "rssMarkAllAsUnreadItem"];
-	var menuItems = {};
-	for ( var i = 0; i < menuItemIds.length; i++ )
-	{
-		menuItems[ menuItemIds[i] ] = document.getElementById( menuItemIds[i] );
-	}
-
-	// cmd_bm_open
-	// cmd_bm_openinnewwindow
-	// cmd_bm_openinnewtab
-	menuItems.rssOpenItem.label = bmStrRes.getString("cmd_bm_open");
-	menuItems.rssOpenNewTabItem.label = bmStrRes.getString("cmd_bm_openinnewtab");
-	menuItems.rssOpenNewWindowItem.label = bmStrRes.getString("cmd_bm_openinnewwindow");
-
-	menuItems.rssMarkAsReadItem.label = strRes.getString("itemcontext_markasread");
-	menuItems.rssMarkAllAsReadItem.label = strRes.getString("itemcontext_markallasread");
-	menuItems.rssMarkAllAsUnreadItem.label = strRes.getString("itemcontext_markallasunread");
-
-	if ( popupNode.localName == "listbox" )
-	{
-		// only mark all should work
-		for ( var id in menuItems )
-		{
-			if ( (id == "rssMarkAllAsReadItem" || id == "rssMarkAllAsUnreadItem") &&
-				 currentFeed && rssItemListBox.getRowCount() > 0 )
-				menuItems[id].removeAttribute( "disabled" );
-			else
-				menuItems[id].setAttribute( "disabled", "true" );;
-		}
-	}
-	else
-	{
-		for ( id in menuItems )
-			menuItems[id].removeAttribute( "disabled" );
-
-		// need to figure out if the current list item is visited
-		var listItem = popupNode;
-		var feedItem = getFeedItemFromListItem( listItem );
-		var visited = isVisited( feedItem.getLink() );
-		menuItems.rssMarkAsReadItem.label =
-			strRes.getString( visited ? "itemcontext_markasunread" : "itemcontext_markasread" );
-
-		// lets make sure the visited flag is correct in the ui
-		if ( visited )
-			listItem.setAttribute( "visited", "true" );
-		else
-			listItem.removeAttribute( "visited" );
-	}
-}
-
-
-/**
- * This marks the selected items as read/unread. This works with multiple
- * selection as well if we want to enable that in the future.
- * @param	e : Event
- * @returns	void
- */
-function toggleMarkAsRead( e )
-{
-	var listItems = rssItemListBox.selectedItems;
-	for ( var i = 0; i < listItems.length; i++ )
-	{
-		var listItem = listItems[i];
-		var feedItem = getFeedItemFromListItem( listItem );
-		var uri = feedItem.getLink();
-		var visited = isVisited( uri );
-		markURIReadState( uri, !visited );
-		if ( !visited )
-			listItem.setAttribute( "visited", "true" );
-		else
-			listItem.removeAttribute( "visited" );
-	}
-}
-
-/**
- * This called from the context menu.
- * @param	e : Event
- * @returns	void
- */
-function markAllAsRead( e )
-{
-	markAllReadState( true );
-}
-
-/**
- * This called from the context menu.
- * @param	e : Event
- * @returns	void
- */
-function markAllAsUnread( e )
-{
-	markAllReadState( false );
-}
-
-/**
- * Marks all read or unread
- * @param	bRead : Boolean	Whether to mark as read or unread
- * @returns	void
- */
-function markAllReadState( bRead )
-{
-	if ( currentFeed )
-	{
-		var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
-		var feedItems = currentFeed.getItems( feedItemOrder );
-
-		for ( var i = 0; i < feedItems.length; i++ )
-			markURIReadState( feedItems[i].getLink(), bRead );
-
-		var listItem;
-		for ( var y = 0; y < rssItemListBox.getRowCount(); y++ )
-		{
-			listItem = rssItemListBox.getItemAtIndex( y );
-			if ( bRead )
-				listItem.setAttribute( "visited", "true" );
-			else
-				listItem.removeAttribute( "visited" );
-		}
-	}
-}
-
-// This takes a list item from the rss list box and returns the uri it represents
-// this seems a bit inefficient. Shouldn't there be a direct mapping between these?
-
-/**
- * This takes a listitem element and returns the FeedItem it represents
- * @param	oListItem : XULListItem
- * @returns	FeedItem
- */
-function getFeedItemFromListItem( oListItem )
-{
-	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
-	var items = currentFeed.getItems( feedItemOrder );
-	return items[ oListItem.value ];
-}
-
-
-
-/**
- * Opens a link in the same window, a new tab or a new window
- *
- * @param	sURI : String
- * @param	oType : Object	If this is an Event object we check the modifiers.
- * 							Otherwise we assume it is a string describing the
- *                          window type.
- * @returns	void
- */
-function openURI( sURI, oType )
-{
-	var windowType;
-	if ( oType instanceof Event )
-	{
-		// figure out what kind of open we want
-		if ( oType.button == 1 || oType.ctrlKey ) // click middle button or ctrl click
-			windowType = "tab";
-		else if ( oType.shiftKey )
-			windowType = "window";
-	}
-	else
-	{
-		windowType = oType;
-	}
-
-	switch ( windowType )
-	{
-		case "tab":
-			getContentBrowser().addTab( sURI );
-			break;
-		case "window":
-			document.commandDispatcher.focusedWindow.open( sURI );
-			break;
-
-		default:
-			getContentBrowser().loadURI( sURI );
-	}
-}
-
-/**
- * This is called by the context menu
- * @param	oType : String
- * @returns	void
- */
-function openListItem( oType )
-{
-	var listItem = document.popupNode;
-	var feedItem = getFeedItemFromListItem( listItem );
-	openURI( feedItem.getLink(), oType );
-	listItem.setAttribute( "visited", "true" );
-}
+const USER_AGENT = CommonFunc.USER_AGENT;
+
+const RESULT_OK = 0;
+const RESULT_PARSE_ERROR = 1;
+const RESULT_NOT_RSS = 2;
+const RESULT_NOT_FOUND = 3;
+const RESULT_NOT_AVAILABLE = 4;
+const RESULT_ERROR_FAILURE = 5;
+
+var resultStrArray = null;
+
+	// XUL Object
+var strRes, bmStrRes; // stringbundle Object
+var bookmarksTree;
+var rssItemListBox;
+var rssStatusImage;
+var rssStatusLabel;
+var rssTitleLabel;
+var rssItemToolTip;
+
+var currentFeed;
+var httpReq;
+var prefObserverSageFolder;
+var responseXML;
+var lastResource;
+var rssLoading = false;
+var sageFolderID = "";
+var enableTooltip = true;
+var popupTimeoutId=0;
+
+
+function init() {
+	bookmarksTree = document.getElementById("bookmarksTree");
+	rssItemListBox = document.getElementById("rssItemListBox");
+	rssStatusImage = document.getElementById("rssStatusImage");
+	rssStatusLabel = document.getElementById("rssStatusLabel");
+	rssTitleLabel = document.getElementById("rssTitleLabel");
+	rssItemToolTip = document.getElementById("rssItemToolTip");
+
+	strRes = document.getElementById("strRes");
+	bmStrRes = document.getElementById("bmStrRes");
+	resultStrArray = new Array(
+		strRes.getString("RESULT_OK_STR"),
+		strRes.getString("RESULT_PARSE_ERROR_STR"),
+		strRes.getString("RESULT_NOT_RSS_STR"),
+		strRes.getString("RESULT_NOT_FOUND_STR"),
+		strRes.getString("RESULT_NOT_AVAILABLE_STR"),
+		strRes.getString("RESULT_ERROR_FAILURE_STR")
+	);
+
+	// if feed folder has not been set, assume new user and install default feed folder and demo feeds
+	if(!CommonFunc.getPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", null)) {
+		logMessage("setting default preferences...");
+		var new_folder = BMSVC.createFolderInContainer("Sage Feeds", RDF.GetResource("NC:BookmarksRoot"), null);
+		CommonFunc.setPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", new_folder.Value);
+		if(BMSVC.createBookmarkInContainer.length == 7) { // firefox 0.8 and lower
+			BMSVC.createBookmarkInContainer("BBC News | News Front Page | World Edition", "http://news.bbc.co.uk/rss/newsonline_world_edition/front_page/rss091.xml", null, "updated", null, new_folder, null);
+			BMSVC.createBookmarkInContainer("Yahoo! News - Sports", "http://rss.news.yahoo.com/rss/sports", null, "updated", null, new_folder, null);
+			BMSVC.createBookmarkInContainer("Sage Project News", "http://sage.mozdev.org/rss.xml", null, "updated", null, new_folder, null);
+		} else {
+			BMSVC.createBookmarkInContainer("BBC News | News Front Page | World Edition", "http://news.bbc.co.uk/rss/newsonline_world_edition/front_page/rss091.xml", null, "updated", null, null, new_folder, null);
+			BMSVC.createBookmarkInContainer("Yahoo! News - Sports", "http://rss.news.yahoo.com/rss/sports", null, "updated", null, null, new_folder, null);
+			BMSVC.createBookmarkInContainer("Sage Project News", "http://sage.mozdev.org/rss.xml", null, "updated", null, null, new_folder, null);
+		}
+		setCheckbox("chkShowSearchBar", "false");
+		setCheckbox("chkShowTooltip", "true");
+		setCheckbox("chkShowFeedItemList", "true");
+	}
+
+	// get feed folder location
+	sageFolderID = CommonFunc.getPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", "NC:BookmarksRoot");
+	// check for changes to the feed folder
+	prefObserverSageFolder = CommonFunc.addPrefListener(CommonFunc.RSS_READER_FOLDER_ID, sageFolderChanged);
+	// set feed folder location
+	bookmarksTree.tree.setAttribute("ref", sageFolderID);
+	// select first entry
+	bookmarksTree.treeBoxObject.selection.select(0);
+
+	FeedSearch.init();
+	toggleShowSearchBar();
+	toggleShowFeedItemList();
+
+	logMessage("initialized");
+}
+
+function discoverFeeds() {
+	window.openDialog("chrome://sage/contents/discover_feeds.xul", "sage_discover_feeds", "chrome,modal,close", bookmarksTree);
+}
+
+// TODO: This does not work in 0.9.x since the implementation for smart bookmarks
+//       has been removed. Too bad because this feature was really nice
+function showOnlyUpdated() {
+	if(getCheckboxCheck("chkOnlyUpdate")) {
+		var findURL = "find:datasource=rdf:bookmarks&match=";
+			findURL += CommonFunc.BM_DESCRIPTION;
+			findURL += "&method=is&text=updated";
+		bookmarksTree.tree.setAttribute("ref", findURL);
+	} else {
+		bookmarksTree.tree.setAttribute("ref", sageFolderID);
+	}
+}
+
+function sageFolderChanged(subject, topic, prefName) {
+		// observe Preference
+	sageFolderID = CommonFunc.getPrefValue(CommonFunc.RSS_READER_FOLDER_ID, "str", "NC:BookmarksRoot");
+	bookmarksTree.tree.setAttribute("ref", sageFolderID);
+	bookmarksTree.treeBoxObject.selection.select(0);
+}
+
+function done() {
+	if(prefObserverSageFolder) {
+		CommonFunc.removePrefListener(prefObserverSageFolder);
+	}
+
+	if(rssLoading) {
+		httpReq.abort();
+		rssLoading = false;
+	}
+	UpdateChecker.done();
+
+	logMessage("shutdown");
+}
+
+function openOPMLWizard() {
+	var dialogURL = "chrome://sage/content/opml/opml.xul";
+	window.openDialog(dialogURL, "", "chrome,modal,close");
+}
+
+function openSettingDialog() {
+	var dialogURL = "chrome://sage/content/settings/settings.xul";
+	window.openDialog(dialogURL, "", "chrome,modal,close");
+}
+
+function openSageProjectFeed() {
+	lastResource = null;
+	var feedURL = "http://sage.mozdev.org/rss.xml";
+	setStatusLoading("Sage Project News");
+	httpGet(feedURL);
+}
+
+function manageRSSList() {
+	var dialogURL = "chrome://browser/content/bookmarks/bookmarksManager.xul";
+	window.openDialog(dialogURL, "", "chrome,all,dialog=no", sageFolderID);
+}
+
+function updateCheck(aCheckFolderId) {
+	UpdateChecker.onCheck = function(aName, aURL) {
+			rssStatusImage.setAttribute("loading", "true");
+			rssStatusLabel.value = strRes.getString("RESULT_CHECKING") + ": " + aName;
+	}
+	UpdateChecker.onChecked = function(aName, aURL) {
+		setStatusDone();
+	}
+
+	if(aCheckFolderId) {
+		UpdateChecker.startCheck(aCheckFolderId);
+	} else {
+		UpdateChecker.startCheck(sageFolderID);
+	}
+}
+
+function BookmarkResource(aRes, aDB){
+	this.res = aRes;
+	this.db = aDB;
+	this.name = BookmarksUtils.getProperty(this.res, NC_NS + "Name", this.db);
+	this.url = BookmarksUtils.getProperty(this.res, NC_NS + "URL", this.db);
+}
+
+function bookmarksOpen(){
+	lastResource = new BookmarkResource(bookmarksTree.currentResource, bookmarksTree.db);
+	setStatusLoading();
+	httpGet(lastResource.url);
+}
+
+function createTreeContextMenu2(aEvent) {
+	var popup = aEvent.target;
+	if(popup.localName != "menupopup") return;
+
+	var selection = bookmarksTree._selection;
+	var itemId = selection.item[0].Value;
+	var cmdSrc = "";
+	var tempMenuItem;
+
+	if(selection.type == "Bookmark") {
+		cmdSrc = "GetRssTitle.getRssTitle('" + itemId + "')";
+		tempMenuItem = document.createElement("menuitem");
+		tempMenuItem.setAttribute("label", strRes.getString("GET_RSS_TITLE"));
+		tempMenuItem.setAttribute("oncommand", cmdSrc);
+		popup.appendChild(document.createElement("menuseparator"));
+		popup.appendChild(tempMenuItem);
+	} else if(selection.type == "Folder") {
+		cmdSrc = "updateCheck('" + itemId + "')";
+		tempMenuItem = document.createElement("menuitem");
+		tempMenuItem.setAttribute("label", strRes.getString("CHECK_UPDATE"));
+		tempMenuItem.setAttribute("oncommand", cmdSrc);
+		popup.appendChild(document.createElement("menuseparator"));
+		popup.appendChild(tempMenuItem);
+	}
+}
+
+function bookmarksTreeClick(aEvent){
+	if(aEvent.type == "click") {
+		if(aEvent.button == 2 || aEvent.originalTarget.localName != "treechildren") {
+			return;
+		}
+		var obj = {};
+		bookmarksTree.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, {}, {}, obj);
+		if(obj.value == "twisty") return;
+	} else if(aEvent.type == "keypress") {
+		if(aEvent.originalTarget.localName != "tree") {
+			return;
+		}
+	}
+
+	CreateHTML.tabbed = false;
+	if(aEvent.button == 1) { CreateHTML.tabbed = true; } // click middle button
+	if(aEvent.ctrlKey) { CreateHTML.tabbed = true; } // press Ctrl Key
+
+	const BOOKMARK_TYPE = RDF_NS + "type";
+	const BOOKMARK_SEPARATOR = NC_NS + "BookmarkSeparator";
+	const BOOKMARK_FOLDER = NC_NS + "Folder"
+	var bookmarkType = (BookmarksUtils.getProperty(bookmarksTree.currentResource, BOOKMARK_TYPE , bookmarksTree.db))
+	if(bookmarkType == BOOKMARK_SEPARATOR || bookmarkType == BOOKMARK_FOLDER) {
+		return;
+	}
+
+	bookmarksOpen();
+}
+
+function rssItemListBoxClick(aEvent) {
+	if(aEvent.type == "click") {
+		if(aEvent.button == 2 || aEvent.originalTarget.localName != "listitem") {
+			return;
+		}
+	} else if(aEvent.type == "keypress") {
+		if(aEvent.originalTarget.localName != "listbox") {
+			return;
+		}
+	}
+
+	var listItem = rssItemListBox.selectedItem;
+	var feedItem = getFeedItemFromListItem( listItem );
+
+	openURI( feedItem.getLink(), aEvent );
+	listItem.setAttribute("visited", "true");
+}
+
+function rssTitleLabelClick(aNode, aEvent){
+	var tabbed = false;
+	if(!aNode.hasAttribute("href") || aEvent.button == 2) {
+		return;
+	}
+
+	var link = aNode.getAttribute("href");
+	openURI( link, aEvent );
+}
+
+function setStatusLoading(label) {
+	rssStatusImage.setAttribute("loading", "true");
+	if(label) {
+		rssStatusLabel.value = strRes.getString("RESULT_LOADING") + ": " + label;
+	} else {
+		rssStatusLabel.value = strRes.getString("RESULT_LOADING") + ": " + lastResource.name;
+	}
+}
+
+function setStatusDone() {
+	rssStatusImage.setAttribute("loading", "false");
+	rssStatusLabel.value = "";
+
+	if(currentFeed) {
+		rssTitleLabel.value = htmlToText(currentFeed.getTitle());
+		if(currentFeed.getLink()) {
+			rssTitleLabel.setAttribute("href", currentFeed.getLink());
+			rssTitleLabel.tooltipText = currentFeed.getLink();
+		} else {
+			rssTitleLabel.removeAttribute("href");
+			rssTitleLabel.tooltipText = "";
+		}
+	}
+}
+
+function setStatusError(aStatus) {
+	rssStatusImage.setAttribute("loading", "error");
+	rssStatusLabel.value = "Error: " + aStatus;
+}
+
+function getContentBrowser() {
+	var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);
+	var topWindowOfType = windowManager.getMostRecentWindow("navigator:browser");
+	if (topWindowOfType) {
+		return topWindowOfType.document.getElementById('content');
+	}
+	return null;
+}
+
+function toggleShowSearchBar() {
+	var showSearchBar = getCheckboxCheck("chkShowSearchBar");
+	document.getElementById("barSearch").hidden = !showSearchBar;
+}
+
+function toggleShowFeedItemList() {
+	var showFeedItemList = getCheckboxCheck("chkShowFeedItemList");
+	document.getElementById("sage-splitter").hidden = !showFeedItemList;
+	document.getElementById("rssItemListBoxBox").hidden = !showFeedItemList;
+	if(showFeedItemList) setRssItemListBox();
+}
+
+function setRssItemListBox() {
+	if(!currentFeed) return;
+	if(document.getElementById("rssItemListBoxBox").hidden) return;
+
+	while(rssItemListBox.getRowCount() != 0) {
+		rssItemListBox.removeItemAt(0);
+	}
+
+	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
+
+	var items = currentFeed.getItems(feedItemOrder);
+
+	for(var i = 0; items.length > i; i++) {
+		var item = items[i];
+		var itemLabel = item.getTitle();
+		itemLabel = (i+1) + ". " + itemLabel;
+		var listItem = rssItemListBox.appendItem(itemLabel, i);
+		if(isVisited(item.getLink())) {
+			listItem.setAttribute("visited", "true");
+		}
+	}
+}
+
+function getCheckboxCheck(element_id) {
+	var checkboxNode = document.getElementById(element_id);
+	return checkboxNode.getAttribute("checked") == "true";
+}
+
+function setCheckbox(element_id, value) {
+	var checkboxNode = document.getElementById(element_id);
+	checkboxNode.setAttribute("checked", value);
+}
+
+// TODO: Is this still used?
+function showRssItemListPopup(aEvent) {
+	if(aEvent.originalTarget.localName != "listitem") {
+		rssItemListPopup.hidePopup();
+		return;
+	}
+	if(!getCheckboxCheck("chkShowTooltip")) {
+		rssItemListPopup.hidePopup();
+		return;
+	}
+
+	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
+
+	var items = currentFeed.getItems(feedItemOrder);
+
+	var description = htmlToText(items[aEvent.originalTarget.value].getContent());
+	if(description.indexOf("/") != -1) {
+		description = description.replace(/\//gm, "/\u200B");
+	}
+		// description 400ȓɂ
+	if(description.length > 400) {
+		description = description.substring(0,400) + "...";
+	}
+
+	var popX = aEvent.screenX + 10;
+	var popY = aEvent.screenY + 20;
+
+	rssItemListPopup.title = aEvent.originalTarget.label;
+	rssItemListPopup.description = description;
+	rssItemListPopup.autoPosition = false;
+	rssItemListPopup.moveTo(popX, popY);
+	popupTimeoutId = setTimeout("rssItemListPopup.showPopup(rssItemListBox)", 150);
+}
+
+function populateToolTip(e) {
+	// if setting disabled
+	if(!getCheckboxCheck("chkShowTooltip")) {
+		e.preventDefault();
+		return;
+	}
+
+	if(document.tooltipNode == rssItemListBox) {
+		e.preventDefault();
+		return;
+	}
+	var listItem = document.tooltipNode;
+	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
+	var items = currentFeed.getItems(feedItemOrder);
+	var description = htmlToText(items[listItem.value].getContent());
+  if(description.indexOf("/") != -1) {
+    description = description.replace(/\//gm, "/\u200B");
+  }
+  if(description.length > 400) {
+    description = description.substring(0,400) + "...";
+  }
+
+	rssItemToolTip.title = listItem.label;
+	rssItemToolTip.description = description;
+}
+
+// TODO: Is this still used?
+function hideRssItemListPopup(aEvent) {
+	clearTimeout(popupTimeoutId);
+	rssItemListPopup.hidePopup();
+}
+
+function htmlToText(aStr) {
+	var	formatConverter = Components.classes["@mozilla.org/widget/htmlformatconverter;1"].createInstance(Components.interfaces.nsIFormatConverter);
+	var fromStr = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
+	fromStr.data = aStr;
+	var toStr = { value: null };
+
+	try {
+		formatConverter.convert("text/html", fromStr, fromStr.toString().length, "text/unicode", toStr, {});
+	} catch(e) {
+		return aStr;
+	}
+	if(toStr.value) {
+		toStr = toStr.value.QueryInterface(Components.interfaces.nsISupportsString);
+		return toStr.toString();
+	}
+	return aStr;
+}
+
+
+
+// ++++++++++ +++++++++  HTTP	++++++++++ +++++++++
+
+function httpGet(aURL) {
+	if(rssLoading) {
+		httpReq.abort();
+		rssLoading = false;
+	}
+
+	responseXML = null;
+
+	httpReq = new XMLHttpRequest();
+
+	httpReq.open("GET", aURL);
+
+	httpReq.onload = httpLoaded;
+	httpReq.onerror = httpError;
+	httpReq.onreadystatechange = httpReadyStateChange;
+
+	try {
+		httpReq.setRequestHeader("User-Agent", USER_AGENT);
+		httpReq.overrideMimeType("application/xml");
+	} catch(e) {
+		httpGetResult(RESULT_ERROR_FAILURE);
+	}
+
+	try {
+		httpReq.send(null);
+		rssLoading = true;
+	} catch(e) {
+		httpGetResult(RESULT_ERROR_FAILURE);
+	}
+}
+
+function httpError(e) {
+	logMessage("HTTP Error: " + e.target.status + " - " + e.target.statusText);
+	httpGetResult(RESULT_NOT_AVAILABLE);
+}
+
+function httpReadyStateChange() {
+
+	if(httpReq.readyState == 2) {
+		try {
+			if(httpReq.status == 404) {
+				httpGetResult(RESULT_NOT_FOUND);
+			}
+		} catch(e) {
+			httpGetResult(RESULT_NOT_AVAILABLE);
+			return;
+		}
+	} else if(httpReq.readyState == 3) {}
+}
+
+function httpLoaded(e) {
+	responseXML = httpReq.responseXML;
+	var rootNodeName = responseXML.documentElement.localName.toLowerCase();
+
+	switch(rootNodeName) {
+		case "parsererror":
+			// XML Parse Error
+			httpGetResult(RESULT_PARSE_ERROR);
+			break;
+		case "rss":
+		case "rdf":
+		case "feed":
+			httpGetResult(RESULT_OK);
+			break;
+		default:
+			// Not RSS or Atom
+			httpGetResult(RESULT_NOT_RSS);
+			break;
+	}
+}
+
+function httpGetResult(aResultCode) {
+	httpReq.abort();
+	rssLoading = false;
+
+	if(aResultCode == RESULT_OK) {
+		currentFeed = new Feed(responseXML);
+
+		if(lastResource && lastResource.res) {
+			if(CommonFunc.getPrefValue(CommonFunc.AUTO_FEED_TITLE, "bool", true)) {
+				if(CommonFunc.getBMDSProperty(lastResource.res, CommonFunc.BM_NAME) != currentFeed.getTitle()) {
+					CommonFunc.setBMDSProperty(lastResource.res, CommonFunc.BM_NAME, currentFeed.getTitle());
+				}
+			}
+
+			BMSVC.updateLastVisitedDate(lastResource.url, "UTF-8");
+			CommonFunc.setBMDSProperty(lastResource.res, CommonFunc.BM_DESCRIPTION, CommonFunc.STATUS_NO_UPDATE + " " + currentFeed.getSignature());
+		}
+
+		setStatusDone();
+		setRssItemListBox();
+
+		if(CommonFunc.getPrefValue(CommonFunc.RENDER_FEEDS, "bool", true)) {
+			CreateHTML.openHTML(currentFeed);
+		}
+	} else {
+		setStatusError(resultStrArray[aResultCode]);
+	}
+}
+
+
+// link visit code based on LinkVisitor.mozdev.org
+
+
+const _uriFixup = Components.classes["@mozilla.org/docshell/urifixup;1"].getService(Components.interfaces.nsIURIFixup);
+const _globalHistory = Components.classes['@mozilla.org/browser/global-history;2'].getService(Components.interfaces.nsIGlobalHistory2);
+const _browserHistory = Components.classes["@mozilla.org/browser/global-history;2"].getService(Components.interfaces.nsIBrowserHistory);
+
+function markURIAsRead( sURI )
+{
+	markURIReadState( sURI, true );
+}
+
+function markURIAsUnread( sURI )
+{
+	markURIReadState( sURI, false );
+}
+
+function markURIReadState( sURI, bRead )
+{
+	if ( !sURI )
+		return;
+
+	// why do we need to fixup the URI?
+	var fixupURI = _getFixupURI( sURI );
+	var visited = _globalHistory.isVisited( fixupURI );
+	if ( visited == bRead )
+		return;
+
+	if ( bRead )
+		_globalHistory.addURI( fixupURI, false, true );
+	else
+		_browserHistory.removePage( fixupURI.spec );
+}
+
+function _getFixupURI( sURI )
+{
+	try
+	{
+		return _uriFixup.createFixupURI( sURI, 0 );
+	}
+	catch( e )
+	{
+		return null;
+	}
+}
+
+function isVisited( sURI )
+{
+	var fixupURI = _getFixupURI( sURI );
+	return _globalHistory.isVisited( fixupURI );
+}
+
+
+// RSS Item Context Menu
+
+/**
+ * This is called before the context menu for the listbox is shown. Here we enabled/disable
+ * menu items as well as change the text to correctly reflect the read state
+ * @param	e : Event
+ * @returns	void
+ */
+function updateItemContextMenu( e )
+{
+	var popupNode = document.popupNode;
+
+	var menuItemIds = ["rssOpenItem", "rssOpenNewTabItem", "rssOpenNewWindowItem",
+					   "rssMarkAsReadItem", "rssMarkAllAsReadItem", "rssMarkAllAsUnreadItem"];
+	var menuItems = {};
+	for ( var i = 0; i < menuItemIds.length; i++ )
+	{
+		menuItems[ menuItemIds[i] ] = document.getElementById( menuItemIds[i] );
+	}
+
+	// cmd_bm_open
+	// cmd_bm_openinnewwindow
+	// cmd_bm_openinnewtab
+	menuItems.rssOpenItem.label = bmStrRes.getString("cmd_bm_open");
+	menuItems.rssOpenNewTabItem.label = bmStrRes.getString("cmd_bm_openinnewtab");
+	menuItems.rssOpenNewWindowItem.label = bmStrRes.getString("cmd_bm_openinnewwindow");
+
+	menuItems.rssMarkAsReadItem.label = strRes.getString("itemcontext_markasread");
+	menuItems.rssMarkAllAsReadItem.label = strRes.getString("itemcontext_markallasread");
+	menuItems.rssMarkAllAsUnreadItem.label = strRes.getString("itemcontext_markallasunread");
+
+	if ( popupNode.localName == "listbox" )
+	{
+		// only mark all should work
+		for ( var id in menuItems )
+		{
+			if ( (id == "rssMarkAllAsReadItem" || id == "rssMarkAllAsUnreadItem") &&
+				 currentFeed && rssItemListBox.getRowCount() > 0 )
+				menuItems[id].removeAttribute( "disabled" );
+			else
+				menuItems[id].setAttribute( "disabled", "true" );;
+		}
+	}
+	else
+	{
+		for ( id in menuItems )
+			menuItems[id].removeAttribute( "disabled" );
+
+		// need to figure out if the current list item is visited
+		var listItem = popupNode;
+		var feedItem = getFeedItemFromListItem( listItem );
+		var visited = isVisited( feedItem.getLink() );
+		menuItems.rssMarkAsReadItem.label =
+			strRes.getString( visited ? "itemcontext_markasunread" : "itemcontext_markasread" );
+
+		// lets make sure the visited flag is correct in the ui
+		if ( visited )
+			listItem.setAttribute( "visited", "true" );
+		else
+			listItem.removeAttribute( "visited" );
+	}
+}
+
+
+/**
+ * This marks the selected items as read/unread. This works with multiple
+ * selection as well if we want to enable that in the future.
+ * @param	e : Event
+ * @returns	void
+ */
+function toggleMarkAsRead( e )
+{
+	var listItems = rssItemListBox.selectedItems;
+	for ( var i = 0; i < listItems.length; i++ )
+	{
+		var listItem = listItems[i];
+		var feedItem = getFeedItemFromListItem( listItem );
+		var uri = feedItem.getLink();
+		var visited = isVisited( uri );
+		markURIReadState( uri, !visited );
+		if ( !visited )
+			listItem.setAttribute( "visited", "true" );
+		else
+			listItem.removeAttribute( "visited" );
+	}
+}
+
+/**
+ * This called from the context menu.
+ * @param	e : Event
+ * @returns	void
+ */
+function markAllAsRead( e )
+{
+	markAllReadState( true );
+}
+
+/**
+ * This called from the context menu.
+ * @param	e : Event
+ * @returns	void
+ */
+function markAllAsUnread( e )
+{
+	markAllReadState( false );
+}
+
+/**
+ * Marks all read or unread
+ * @param	bRead : Boolean	Whether to mark as read or unread
+ * @returns	void
+ */
+function markAllReadState( bRead )
+{
+	if ( currentFeed )
+	{
+		var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
+		var feedItems = currentFeed.getItems( feedItemOrder );
+
+		for ( var i = 0; i < feedItems.length; i++ )
+			markURIReadState( feedItems[i].getLink(), bRead );
+
+		var listItem;
+		for ( var y = 0; y < rssItemListBox.getRowCount(); y++ )
+		{
+			listItem = rssItemListBox.getItemAtIndex( y );
+			if ( bRead )
+				listItem.setAttribute( "visited", "true" );
+			else
+				listItem.removeAttribute( "visited" );
+		}
+	}
+}
+
+// This takes a list item from the rss list box and returns the uri it represents
+// this seems a bit inefficient. Shouldn't there be a direct mapping between these?
+
+/**
+ * This takes a listitem element and returns the FeedItem it represents
+ * @param	oListItem : XULListItem
+ * @returns	FeedItem
+ */
+function getFeedItemFromListItem( oListItem )
+{
+	var feedItemOrder = CommonFunc.getPrefValue(CommonFunc.FEED_ITEM_ORDER, "str", "chrono");
+	var items = currentFeed.getItems( feedItemOrder );
+	return items[ oListItem.value ];
+}
+
+
+
+/**
+ * Opens a link in the same window, a new tab or a new window
+ *
+ * @param	sURI : String
+ * @param	oType : Object	If this is an Event object we check the modifiers.
+ * 							Otherwise we assume it is a string describing the
+ *                          window type.
+ * @returns	void
+ */
+function openURI( sURI, oType )
+{
+	var windowType;
+	if ( oType instanceof Event )
+	{
+		// figure out what kind of open we want
+		if ( oType.button == 1 || oType.ctrlKey ) // click middle button or ctrl click
+			windowType = "tab";
+		else if ( oType.shiftKey )
+			windowType = "window";
+	}
+	else
+	{
+		windowType = oType;
+	}
+
+	switch ( windowType )
+	{
+		case "tab":
+			getContentBrowser().addTab( sURI );
+			break;
+		case "window":
+			document.commandDispatcher.focusedWindow.open( sURI );
+			break;
+
+		default:
+			getContentBrowser().loadURI( sURI );
+	}
+}
+
+/**
+ * This is called by the context menu
+ * @param	oType : String
+ * @returns	void
+ */
+function openListItem( oType )
+{
+	var listItem = document.popupNode;
+	var feedItem = getFeedItemFromListItem( listItem );
+	openURI( feedItem.getLink(), oType );
+	listItem.setAttribute( "visited", "true" );
+}
diff --git a/src/sage/content/updatechecker.js b/src/sage/content/updatechecker.js
index 59e5a85..5273c6c 100755
--- a/src/sage/content/updatechecker.js
+++ b/src/sage/content/updatechecker.js
@@ -66,8 +66,10 @@ var UpdateChecker = {
 		}
 	},
 
-	httpError: function() {
-		logMessage("HTTP Error");
+	httpError: function(e) {
+		logMessage("HTTP Error: " + e.target.status + " - " + e.target.statusText);
+		UpdateChecker.httpReq.abort();
+		UpdateChecker.checkResult(false, 0);
 	},
 
 	httpReadyStateChange: function() {
@@ -112,14 +114,14 @@ var UpdateChecker = {
 		}
 
 		if(aSucceed) {
+			var sig = CommonFunc.getBMDSProperty(this.lastResource, CommonFunc.BM_DESCRIPTION).match(/\[.*\]/);
 			if(aLastModified) {
-				if(aLastModified > lastVisit) {
+				if((aLastModified > lastVisit) && (sig != feed.getSignature())) {
 					status = CommonFunc.STATUS_UPDATE;
 				} else {
 					status = CommonFunc.STATUS_NO_UPDATE;
 				}
 			} else {
-				var sig = CommonFunc.getBMDSProperty(this.lastResource, CommonFunc.BM_DESCRIPTION).match(/\[.*\]/);
 				if(sig != feed.getSignature()) {
 					//logMessage("signature mismatch: " + feed.getTitle() + "; old sig: " + sig + "  new sig: " + feed.getSignature());
 					status = CommonFunc.STATUS_UPDATE;
diff --git a/src/sage/locale/en-US/sage.dtd b/src/sage/locale/en-US/sage.dtd
index c7b6463..879fa04 100755
--- a/src/sage/locale/en-US/sage.dtd
+++ b/src/sage/locale/en-US/sage.dtd
@@ -1,52 +1,52 @@
-<!ENTITY sage.label				"Sage">
-<!ENTITY sage.version				"1.2">
-<!ENTITY sage.version.label				"version">
-
-<!ENTITY sage.toolbarLabel			"Sage">
-<!ENTITY sage.sidebarTitle			"Sage">
-<!ENTITY sage.tooltip				"Displays Sage">
-
-<!ENTITY menu.view				"View">
-<!ENTITY menu.showSearchBar			"Show Feed Search Bar">
-<!ENTITY menu.showFeedItemList			"Show Feed Item List">
-<!ENTITY menu.showDescTooltip			"Show Description Tooltips">
-<!ENTITY menu.openHTML				"Open Feeds In Contents Area">
-<!ENTITY menu.tools				"Options">
-<!ENTITY menu.checkUpdate			"Check Feeds">
-<!ENTITY menu.manageRSSList			"Manage Feed List...">
-<!ENTITY menu.opmlImportExport			"OPML Import/Export...">
-<!ENTITY menu.setting				"Settings...">
-<!ENTITY menu.sageProjectFeed				"Sage Project News">
-<!ENTITY menu.discoverFeeds				"Discover Feeds">
-
-<!-- Feed Discovery -->
-<!ENTITY discovery.status.searching     "Searching current page">
-<!ENTITY discovery.button.addFeed    "Add Feed">
-<!ENTITY discovery.button.close			 "Close">
-<!ENTITY discovery.header.title			 "Title">
-<!ENTITY discovery.header.format     "Format">
-<!ENTITY discovery.header.lastPubDate     "Last Update">
-<!ENTITY discovery.header.itemCount     "Items">
-<!ENTITY discovery.header.url     "URL">
-
-<!-- Settings Dialog -->
-<!ENTITY settings.general.caption     "General">
-<!ENTITY settings.autoFeedTitle.label     "Automatically update feed titles">
-<!ENTITY settings.renderFeeds.label     "Render feeds in contents area">
-<!ENTITY settings.twelveHourClock.label     "Use 12 hour clock">
-<!ENTITY settings.feedItemOrder.label     "Feed item order">
-<!ENTITY settings.feedItemOrder.chrono     "Chronological">
-<!ENTITY settings.feedItemOrder.source     "Source">
-<!ENTITY settings.feedDiscoveryMode.label     "Feed discovery mode">
-<!ENTITY settings.feedDiscoveryMode.exhaustive     "Exhaustive">
-<!ENTITY settings.feedDiscoveryMode.conservative     "Conservative">
-<!ENTITY settingWindow.title                    "Sage Settings">
-<!ENTITY selectFolder.label			"Select Feed Folder">
-<!ENTITY openInContentsArea.caption		"Feed Rendering">
-<!ENTITY enableUserCss.label			"Use custom CSS">
-<!ENTITY browseCss.label			"Browse...">
-<!ENTITY allowEContent.label			"Allow HTML tags">
-
-
-<!ENTITY openSageSidebar.commandkey		"S">
-<!ENTITY openSageSidebar.modifiersKey		"alt">
+<!ENTITY sage.label				"Sage">
+<!ENTITY sage.version				"1.3">
+<!ENTITY sage.version.label				"version">
+
+<!ENTITY sage.toolbarLabel			"Sage">
+<!ENTITY sage.sidebarTitle			"Sage">
+<!ENTITY sage.tooltip				"Displays Sage">
+
+<!ENTITY menu.view				"View">
+<!ENTITY menu.showSearchBar			"Show Feed Search Bar">
+<!ENTITY menu.showFeedItemList			"Show Feed Item List">
+<!ENTITY menu.showDescTooltip			"Show Description Tooltips">
+<!ENTITY menu.openHTML				"Open Feeds In Contents Area">
+<!ENTITY menu.tools				"Options">
+<!ENTITY menu.checkUpdate			"Check Feeds">
+<!ENTITY menu.manageRSSList			"Manage Feed List...">
+<!ENTITY menu.opmlImportExport			"OPML Import/Export...">
+<!ENTITY menu.setting				"Settings...">
+<!ENTITY menu.sageProjectFeed				"Sage Project News">
+<!ENTITY menu.discoverFeeds				"Discover Feeds">
+
+<!-- Feed Discovery -->
+<!ENTITY discovery.status.searching     "Searching current page">
+<!ENTITY discovery.button.addFeed    "Add Feed">
+<!ENTITY discovery.button.close			 "Close">
+<!ENTITY discovery.header.title			 "Title">
+<!ENTITY discovery.header.format     "Format">
+<!ENTITY discovery.header.lastPubDate     "Last Update">
+<!ENTITY discovery.header.itemCount     "Items">
+<!ENTITY discovery.header.url     "URL">
+
+<!-- Settings Dialog -->
+<!ENTITY settings.general.caption     "General">
+<!ENTITY settings.autoFeedTitle.label     "Automatically update feed titles">
+<!ENTITY settings.renderFeeds.label     "Render feeds in contents area">
+<!ENTITY settings.twelveHourClock.label     "Use 12 hour clock">
+<!ENTITY settings.feedItemOrder.label     "Feed item order">
+<!ENTITY settings.feedItemOrder.chrono     "Chronological">
+<!ENTITY settings.feedItemOrder.source     "Source">
+<!ENTITY settings.feedDiscoveryMode.label     "Feed discovery mode">
+<!ENTITY settings.feedDiscoveryMode.exhaustive     "Exhaustive">
+<!ENTITY settings.feedDiscoveryMode.conservative     "Conservative">
+<!ENTITY settingWindow.title                    "Sage Settings">
+<!ENTITY selectFolder.label			"Select Feed Folder">
+<!ENTITY openInContentsArea.caption		"Feed Rendering">
+<!ENTITY enableUserCss.label			"Use custom CSS">
+<!ENTITY browseCss.label			"Browse...">
+<!ENTITY allowEContent.label			"Allow HTML tags">
+
+
+<!ENTITY openSageSidebar.commandkey		"S">
+<!ENTITY openSageSidebar.modifiersKey		"alt">
diff --git a/src/sage/locale/en-US/sage.properties b/src/sage/locale/en-US/sage.properties
index 607a971..80e4a6f 100755
--- a/src/sage/locale/en-US/sage.properties
+++ b/src/sage/locale/en-US/sage.properties
@@ -1,90 +1,90 @@
-RESULT_OK_STR = OK
-RESULT_PARSE_ERROR_STR = XML Parse Error
-RESULT_NOT_RSS_STR = Feed Parse Error
-RESULT_NOT_FOUND_STR = File Not Found
-RESULT_NOT_AVAILABLE_STR = URL Not Available
-RESULT_ERROR_FAILURE_STR = Load Failure
-RESULT_LOADING = Loading
-RESULT_CHECKING = Checking
-
-CHECK_UPDATE = Check Feeds
-GET_RSS_TITLE= Get Feed Title
-
-
-# feed discovery messages
-
-discovery_external_feeds_category = External Feeds
-discovery_status_discovered = Discovered
-discovery_status_site_feed = site feed
-discovery_status_site_feeds = site feeds
-discovery_status_and = and
-discovery_status_external_feed = external feed
-discovery_status_external_feeds = external feeds
-discovery_status_none_found = No feeds were discovered
-
-
-# get feed title dialog
-
-get_feed_title = New Feed Title
-
-
-# OPML wizzard
-
-opml_import_done = Import Complete
-opml_export_done = Export Complete
-opml_path_blank = Please choose an OPML file.
-opml_path_nofile = The specified file does not exist.
-opml_path_invalid = Invalid file path.
-opml_import_fail = Load Failure
-opml_import_badfile = This does not appear to be an OPML file.
-opml_export_nocreate = File creation error
-opml_select_file = Select OPML File
-opml_opml_file = OPML File
-
-# Date rendering values
-
-date_sunday = Sunday
-date_sunday_short = Sun
-date_monday = Monday
-date_monday_short = Mon
-date_tuesday = Tuesday
-date_tuesday_short = Tue
-date_wednesday = Wednesday
-date_wednesday_short = Wed
-date_thursday = Thursday
-date_thursday_short = Thu
-date_friday = Friday
-date_friday_short = Fri
-date_saturday = Saturday
-date_saturday_short = Sat
-
-date_january = January
-date_january_short = Jan
-date_february = February
-date_february_short = Feb
-date_march = March
-date_march_short = Mar
-date_april = April
-date_april_short = Apr
-date_may = May
-date_may_short = May
-date_june = June
-date_june_short = Jun
-date_july = July
-date_july_short = Jul
-date_august = August
-date_august_short = Aug
-date_september = September
-date_september_short = Sep
-date_october = October
-date_october_short = Oct
-date_november = November
-date_november_short = Nov
-date_december = December
-date_december_short = Dec
-
-# Item context menu
-itemcontext_markasread = Mark as Read
-itemcontext_markasunread = Mark as Unread
-itemcontext_markallasread = Mark All as Read
-itemcontext_markallasunread = Mark All as Unread
+RESULT_OK_STR = OK
+RESULT_PARSE_ERROR_STR = XML Parse Error
+RESULT_NOT_RSS_STR = Feed Parse Error
+RESULT_NOT_FOUND_STR = File Not Found
+RESULT_NOT_AVAILABLE_STR = URL Not Available
+RESULT_ERROR_FAILURE_STR = Load Failure
+RESULT_LOADING = Loading
+RESULT_CHECKING = Checking
+
+CHECK_UPDATE = Check Feeds
+GET_RSS_TITLE= Get Feed Title
+
+
+# feed discovery messages
+
+discovery_external_feeds_category = External Feeds
+discovery_status_discovered = Discovered
+discovery_status_site_feed = site feed
+discovery_status_site_feeds = site feeds
+discovery_status_and = and
+discovery_status_external_feed = external feed
+discovery_status_external_feeds = external feeds
+discovery_status_none_found = No feeds were discovered
+
+
+# get feed title dialog
+
+get_feed_title = New Feed Title
+
+
+# OPML wizzard
+
+opml_import_done = Import Complete
+opml_export_done = Export Complete
+opml_path_blank = Please choose an OPML file.
+opml_path_nofile = The specified file does not exist.
+opml_path_invalid = Invalid file path.
+opml_import_fail = Load Failure
+opml_import_badfile = This does not appear to be an OPML file.
+opml_export_nocreate = File creation error
+opml_select_file = Select OPML File
+opml_opml_file = OPML File
+
+# Date rendering values
+
+date_sunday = Sunday
+date_sunday_short = Sun
+date_monday = Monday
+date_monday_short = Mon
+date_tuesday = Tuesday
+date_tuesday_short = Tue
+date_wednesday = Wednesday
+date_wednesday_short = Wed
+date_thursday = Thursday
+date_thursday_short = Thu
+date_friday = Friday
+date_friday_short = Fri
+date_saturday = Saturday
+date_saturday_short = Sat
+
+date_january = January
+date_january_short = Jan
+date_february = February
+date_february_short = Feb
+date_march = March
+date_march_short = Mar
+date_april = April
+date_april_short = Apr
+date_may = May
+date_may_short = May
+date_june = June
+date_june_short = Jun
+date_july = July
+date_july_short = Jul
+date_august = August
+date_august_short = Aug
+date_september = September
+date_september_short = Sep
+date_october = October
+date_october_short = Oct
+date_november = November
+date_november_short = Nov
+date_december = December
+date_december_short = Dec
+
+# Item context menu
+itemcontext_markasread = Mark as Read
+itemcontext_markasunread = Mark as Unread
+itemcontext_markallasread = Mark All as Read
+itemcontext_markallasunread = Mark All as Unread
diff --git a/src/sage/locale/fr-FR/sage.dtd b/src/sage/locale/fr-FR/sage.dtd
index ab5c7c8..b418c2c 100644
--- a/src/sage/locale/fr-FR/sage.dtd
+++ b/src/sage/locale/fr-FR/sage.dtd
@@ -1,10 +1,10 @@
 <!ENTITY sage.label								 "Sage">
-<!ENTITY sage.version							 "1.2">
+<!ENTITY sage.version							 "1.2.2">
 <!ENTITY sage.version.label						 "">
 
 <!ENTITY sage.toolbarLabel						 "Sage">
 <!ENTITY sage.sidebarTitle						 "Sage">
-<!ENTITY sage.tooltip							 "Affiche le panneau latéral Sage">
+<!ENTITY sage.tooltip							 "Affiche le panneau latéral Sage">
 
 <!ENTITY menu.view								 "Affichage">
 <!ENTITY menu.showSearchBar						 "Afficher la barre de recherche des fils">
@@ -12,12 +12,12 @@
 <!ENTITY menu.showDescTooltip					 "Afficher les bulles descriptives">
 <!ENTITY menu.openHTML							 "Afficher le contenu des fils dans la zone de navigation">
 <!ENTITY menu.tools								 "Options">
-<!ENTITY menu.checkUpdate						 "Vérifier les fils">
-<!ENTITY menu.manageRSSList						 "Gérer la liste des fils...">
+<!ENTITY menu.checkUpdate						 "Vérifier les fils">
+<!ENTITY menu.manageRSSList						 "Gérer la liste des fils...">
 <!ENTITY menu.opmlImportExport					 "Import/Export OPML...">
 <!ENTITY menu.setting							 "Configuration...">
-<!ENTITY menu.sageProjectFeed					 "Nouveautés du projet Sage">
-<!ENTITY menu.discoverFeeds						 "Découvrir de nouveaux fils">
+<!ENTITY menu.sageProjectFeed					 "Nouveautés du projet Sage">
+<!ENTITY menu.discoverFeeds						 "Découvrir de nouveaux fils">
 
 <!-- Feed Discovery -->
 <!ENTITY discovery.status.searching     		 "Chercher dans la page en cours">
@@ -25,25 +25,25 @@
 <!ENTITY discovery.button.close			 		 "Fermer">
 <!ENTITY discovery.header.title			 		 "Nom">
 <!ENTITY discovery.header.format     			 "Format">
-<!ENTITY discovery.header.lastPubDate     		 "Dernière mise à jour">
-<!ENTITY discovery.header.itemCount     		 "Éléments">
+<!ENTITY discovery.header.lastPubDate     		 "Dernière mise à jour">
+<!ENTITY discovery.header.itemCount     		 "Éléments">
 <!ENTITY discovery.header.url     				 "Adresse">
 
 <!-- Setting Dialog -->
-<!ENTITY settings.general.caption     			 "Général">
-<!ENTITY settings.autoFeedTitle.label     		 "Mise à jour automatique des titres des fils">
+<!ENTITY settings.general.caption     			 "Général">
+<!ENTITY settings.autoFeedTitle.label     		 "Mise à jour automatique des titres des fils">
 <!ENTITY settings.renderFeeds.label				 "Afficher les fils dans la zone de navigation">
 <!ENTITY settings.twelveHourClock.label			 "Utiliser une horloge sur 12 heures">
 <!ENTITY settingWindow.title                     "Configuration de Sage">
-<!ENTITY selectFolder.label						 "Sélection du dossier des fils">
-<!ENTITY settings.feedItemOrder.label     		 "Ordre des éléments du fil">
+<!ENTITY selectFolder.label						 "Sélection du dossier des fils">
+<!ENTITY settings.feedItemOrder.label     		 "Ordre des éléments du fil">
 <!ENTITY settings.feedItemOrder.chrono     		 "Chronologique">
 <!ENTITY settings.feedItemOrder.source     		 "Source">
-<!ENTITY settings.feedDiscoveryMode.label     	 "Mode de découverte des fils">
+<!ENTITY settings.feedDiscoveryMode.label     	 "Mode de découverte des fils">
 <!ENTITY settings.feedDiscoveryMode.exhaustive   "Exhaustif">
 <!ENTITY settings.feedDiscoveryMode.conservative "Prudent">
 <!ENTITY openInContentsArea.caption				 "Ouverture dans la zone de navigation">
-<!ENTITY enableUserCss.label					 "Utiliser une feuille de style CSS personnalisée">
+<!ENTITY enableUserCss.label					 "Utiliser une feuille de style CSS personnalisée">
 <!ENTITY browseCss.label						 "Parcourir...">
 <!ENTITY allowEContent.label					 "Autoriser les balises HTML">
 
@@ -51,3 +51,4 @@
 <!ENTITY openSageSidebar.commandkey				 "S">
 <!ENTITY openSageSidebar.modifiersKey			 "alt">
 
+
diff --git a/src/sage/locale/fr-FR/sage.properties b/src/sage/locale/fr-FR/sage.properties
index 1b87af0..dee591d 100644
--- a/src/sage/locale/fr-FR/sage.properties
+++ b/src/sage/locale/fr-FR/sage.properties
@@ -1,90 +1,90 @@
-RESULT_OK_STR = OK
-RESULT_PARSE_ERROR_STR = Erreur de syntaxe XML
-RESULT_NOT_RSS_STR = Ce fichier XML n'est pas un fil
-RESULT_NOT_FOUND_STR = Fichier introuvable
-RESULT_NOT_AVAILABLE_STR = URL non disponible
-RESULT_ERROR_FAILURE_STR = Erreur de chargement
-RESULT_LOADING = Cherche
-RESULT_CHECKING = Checking
-
-CHECK_UPDATE = V\u00e9rification des fils
-GET_RSS_TITLE= Trouver le nom du fil
-
-
-# feed discovery messages
-
-discovery_external_feeds_category = Fils externes
-discovery_status_discovered = D\u00e9couvert
-discovery_status_site_feed = fil du site
-discovery_status_site_feeds = fils du site
-discovery_status_and = et
-discovery_status_external_feed = fil externe
-discovery_status_external_feeds = fils externes
-discovery_status_none_found = Aucun fil d\u00e9couvert
-
-
-# get feed title dialog
-
-get_feed_title = Nouveau nom du fil
-
-
-# OPML wizzard
-
-opml_import_done = Import termin\u00e9
-opml_export_done = Export termin\u00e9
-opml_path_blank = Choisir un fichier OPML
-opml_path_nofile = Le fichier n'existe pas.
-opml_path_invalid = Chemin incorrect.
-opml_import_fail = \u00c9chec de chargement.
-opml_import_badfile = Ce fichier n'est pas une liste OPML.
-opml_export_nocreate = Erreur de cr\u00e9ation de fichier
-opml_select_file = S\u00e9lectionner un fichier OPML
-opml_opml_file = Liste OPML
-
-# Date rendering values
-
-date_sunday = Dimanche
-date_sunday_short = Dim
-date_monday = Lundi
-date_monday_short = Lun
-date_tuesday = Mardi
-date_tuesday_short = Mar
-date_wednesday = Mercredi
-date_wednesday_short = Mer
-date_thursday = Jeudi
-date_thursday_short = Jeu
-date_friday = Vendredi
-date_friday_short = Ven
-date_saturday = Samedi
-date_saturday_short = Sam
-
-date_january = Janvier
-date_january_short = Jan
-date_february = F\u00e9vrier
-date_february_short = F\u00e9v
-date_march = Mars
-date_march_short = Mar
-date_april = Avril
-date_april_short = Avr
-date_may = Mai
-date_may_short = Mai
-date_june = Juin
-date_june_short = Juin
-date_july = Juillet
-date_july_short = Juil
-date_august = Ao\u00fbt
-date_august_short = Ao\u00fbt
-date_september = Septembre
-date_september_short = Sep
-date_october = Octobre
-date_october_short = Oct
-date_november = Novembre
-date_november_short = Nov
-date_december = D\u00e9cembre
-date_december_short = D\u00e9c
-
-# Item context menu
-itemcontext_markasread = Mark as Read
-itemcontext_markasunread = Mark as Unread
-itemcontext_markallasread = Mark All as Read
-itemcontext_markallasunread = Mark All as Unread
+RESULT_OK_STR = OK
+RESULT_PARSE_ERROR_STR = Erreur de syntaxe XML
+RESULT_NOT_RSS_STR = Ce fichier XML n'est pas un fil
+RESULT_NOT_FOUND_STR = Fichier introuvable
+RESULT_NOT_AVAILABLE_STR = URL non disponible
+RESULT_ERROR_FAILURE_STR = Erreur de chargement
+RESULT_LOADING = Cherche
+RESULT_CHECKING = Checking
+
+CHECK_UPDATE = V\u00e9rification des fils
+GET_RSS_TITLE= Trouver le nom du fil
+
+
+# feed discovery messages
+
+discovery_external_feeds_category = Fils externes
+discovery_status_discovered = D\u00e9couvert
+discovery_status_site_feed = fil du site
+discovery_status_site_feeds = fils du site
+discovery_status_and = et
+discovery_status_external_feed = fil externe
+discovery_status_external_feeds = fils externes
+discovery_status_none_found = Aucun fil d\u00e9couvert
+
+
+# get feed title dialog
+
+get_feed_title = Nouveau nom du fil
+
+
+# OPML wizzard
+
+opml_import_done = Import termin\u00e9
+opml_export_done = Export termin\u00e9
+opml_path_blank = Choisir un fichier OPML
+opml_path_nofile = Le fichier n'existe pas.
+opml_path_invalid = Chemin incorrect.
+opml_import_fail = \u00c9chec de chargement.
+opml_import_badfile = Ce fichier n'est pas une liste OPML.
+opml_export_nocreate = Erreur de cr\u00e9ation de fichier
+opml_select_file = S\u00e9lectionner un fichier OPML
+opml_opml_file = Liste OPML
+
+# Date rendering values
+
+date_sunday = Dimanche
+date_sunday_short = Dim
+date_monday = Lundi
+date_monday_short = Lun
+date_tuesday = Mardi
+date_tuesday_short = Mar
+date_wednesday = Mercredi
+date_wednesday_short = Mer
+date_thursday = Jeudi
+date_thursday_short = Jeu
+date_friday = Vendredi
+date_friday_short = Ven
+date_saturday = Samedi
+date_saturday_short = Sam
+
+date_january = Janvier
+date_january_short = Jan
+date_february = F\u00e9vrier
+date_february_short = F\u00e9v
+date_march = Mars
+date_march_short = Mar
+date_april = Avril
+date_april_short = Avr
+date_may = Mai
+date_may_short = Mai
+date_june = Juin
+date_june_short = Juin
+date_july = Juillet
+date_july_short = Juil
+date_august = Ao\u00fbt
+date_august_short = Ao\u00fbt
+date_september = Septembre
+date_september_short = Sep
+date_october = Octobre
+date_october_short = Oct
+date_november = Novembre
+date_november_short = Nov
+date_december = D\u00e9cembre
+date_december_short = D\u00e9c
+
+# Item context menu
+itemcontext_markasread = Mark as Read
+itemcontext_markasunread = Mark as Unread
+itemcontext_markallasread = Mark All as Read
+itemcontext_markallasunread = Mark All as Unread
diff --git a/src/sage/locale/hu-HU/sage.dtd b/src/sage/locale/hu-HU/sage.dtd
index ddf2b0c..0fbfcb4 100755
--- a/src/sage/locale/hu-HU/sage.dtd
+++ b/src/sage/locale/hu-HU/sage.dtd
@@ -1,53 +1,53 @@
-<!ENTITY sage.label				"Sage">
-<!ENTITY sage.version				"1.2">
-<!ENTITY sage.version.label				"">
-
-<!ENTITY sage.toolbarLabel			"Sage">
-<!ENTITY sage.sidebarTitle			"Sage">
-<!ENTITY sage.tooltip				"Sage megjelen�t�se">
-
-<!ENTITY menu.view				"Megn�z">
-<!ENTITY menu.showSearchBar         "Keres�mez� mutat�sa">
-<!ENTITY menu.showFeedItemList			"Mutassa a let�lt�tt elemek list�j�t">
-<!ENTITY menu.showDescTooltip       "Le�r�s-tooltip megjelen�t�se">
-<!ENTITY menu.openHTML              "Megnyit�s a tartalmi r�szben">
-<!ENTITY menu.tools                 "Eszk�z�k">
-<!ENTITY menu.checkUpdate           "Friss�l�sek ellen�rz�se">
-<!ENTITY menu.manageRSSList         "RSS lista menedzsel�se...">
-<!ENTITY menu.opmlImportExport      "OPML import/export...">
-<!ENTITY menu.setting               "Be�ll�t�sok...">
-<!ENTITY menu.sageProjectFeed				"A Sage projekt h�rei">
-<!ENTITY menu.discoverFeeds					"Adagol�k keres�se">
-
-<!-- Feed Discovery -->
-<!ENTITY discovery.status.searching     "Keres�s a jelenlegi oldalon">
-<!ENTITY discovery.button.addFeed    "Adagol� hozz�ad�sa">
-<!ENTITY discovery.button.close			 "Bez�r">
-<!ENTITY discovery.header.title			 "C�m">
-<!ENTITY discovery.header.format     "Form�tum">
-<!ENTITY discovery.header.lastPubDate     "Utols� friss��s">
-<!ENTITY discovery.header.itemCount     "Elemek">
-<!ENTITY discovery.header.url     "URL">
-
-<!-- Setting Dialog -->
-<!ENTITY settings.general.caption     "�ltal�nos">
-<!ENTITY settings.autoFeedTitle.label     "C�mek automatikus friss�t�se">
-<!ENTITY settings.renderFeeds.label     "Megnyit�s a tartalmi r�szben">
-<!ENTITY settings.twelveHourClock.label     "">
-<!ENTITY settingWindow.title        "Az RSS olvas�panel be�ll�t�sai">
-<!ENTITY settings.feedItemOrder.label     "Adagol� elemeinek sorrendje">
-<!ENTITY settings.feedItemOrder.chrono     "Id�rendben">
-<!ENTITY settings.feedItemOrder.source     "Forr�s szerint">
-<!ENTITY settings.feedDiscoveryMode.label     "Adagol�k keres�si m�dja">
-<!ENTITY settings.feedDiscoveryMode.exhaustive     "Alapos">
-<!ENTITY settings.feedDiscoveryMode.conservative     "Hagyom�nyos">
-<!ENTITY selectFolder.label         "V�lassza ki az RSS listamapp�t">
-<!ENTITY openInContentsArea.caption "Let�lt�ttek megjelen�t�se">
-<!ENTITY enableUserCss.label        "Egy�ni st�luslap enged�lyez�se">
-<!ENTITY browseCss.label            "B�ng�sz�s...">
-<!ENTITY allowEContent.label        "HTML tagek enged�lyez�se">
-
-
-<!ENTITY openSageSidebar.commandkey		"S">
-<!ENTITY openSageSidebar.modifiersKey		"alt">
-
+<!ENTITY sage.label				"Sage">
+<!ENTITY sage.version				"1.2.2">
+<!ENTITY sage.version.label				"">
+
+<!ENTITY sage.toolbarLabel			"Sage">
+<!ENTITY sage.sidebarTitle			"Sage">
+<!ENTITY sage.tooltip				"Sage megjelen�t�se">
+
+<!ENTITY menu.view				"Megn�z">
+<!ENTITY menu.showSearchBar         "Keres�mez� mutat�sa">
+<!ENTITY menu.showFeedItemList			"Mutassa a let�lt�tt elemek list�j�t">
+<!ENTITY menu.showDescTooltip       "Le�r�s-tooltip megjelen�t�se">
+<!ENTITY menu.openHTML              "Megnyit�s a tartalmi r�szben">
+<!ENTITY menu.tools                 "Eszk�z�k">
+<!ENTITY menu.checkUpdate           "Friss�l�sek ellen�rz�se">
+<!ENTITY menu.manageRSSList         "RSS lista menedzsel�se...">
+<!ENTITY menu.opmlImportExport      "OPML import/export...">
+<!ENTITY menu.setting               "Be�ll�t�sok...">
+<!ENTITY menu.sageProjectFeed				"A Sage projekt h�rei">
+<!ENTITY menu.discoverFeeds					"Adagol�k keres�se">
+
+<!-- Feed Discovery -->
+<!ENTITY discovery.status.searching     "Keres�s a jelenlegi oldalon">
+<!ENTITY discovery.button.addFeed    "Adagol� hozz�ad�sa">
+<!ENTITY discovery.button.close			 "Bez�r">
+<!ENTITY discovery.header.title			 "C�m">
+<!ENTITY discovery.header.format     "Form�tum">
+<!ENTITY discovery.header.lastPubDate     "Utols� friss��s">
+<!ENTITY discovery.header.itemCount     "Elemek">
+<!ENTITY discovery.header.url     "URL">
+
+<!-- Setting Dialog -->
+<!ENTITY settings.general.caption     "�ltal�nos">
+<!ENTITY settings.autoFeedTitle.label     "C�mek automatikus friss�t�se">
+<!ENTITY settings.renderFeeds.label     "Megnyit�s a tartalmi r�szben">
+<!ENTITY settings.twelveHourClock.label     "">
+<!ENTITY settingWindow.title        "Az RSS olvas�panel be�ll�t�sai">
+<!ENTITY settings.feedItemOrder.label     "Adagol� elemeinek sorrendje">
+<!ENTITY settings.feedItemOrder.chrono     "Id�rendben">
+<!ENTITY settings.feedItemOrder.source     "Forr�s szerint">
+<!ENTITY settings.feedDiscoveryMode.label     "Adagol�k keres�si m�dja">
+<!ENTITY settings.feedDiscoveryMode.exhaustive     "Alapos">
+<!ENTITY settings.feedDiscoveryMode.conservative     "Hagyom�nyos">
+<!ENTITY selectFolder.label         "V�lassza ki az RSS listamapp�t">
+<!ENTITY openInContentsArea.caption "Let�lt�ttek megjelen�t�se">
+<!ENTITY enableUserCss.label        "Egy�ni st�luslap enged�lyez�se">
+<!ENTITY browseCss.label            "B�ng�sz�s...">
+<!ENTITY allowEContent.label        "HTML tagek enged�lyez�se">
+
+
+<!ENTITY openSageSidebar.commandkey		"S">
+<!ENTITY openSageSidebar.modifiersKey		"alt">
+
diff --git a/src/sage/locale/hu-HU/sage.properties b/src/sage/locale/hu-HU/sage.properties
index 9a7664f..2f52447 100755
--- a/src/sage/locale/hu-HU/sage.properties
+++ b/src/sage/locale/hu-HU/sage.properties
@@ -1,91 +1,91 @@
-RESULT_OK_STR = OK
-RESULT_PARSE_ERROR_STR = XML �rtelmez�si hiba
-RESULT_NOT_RSS_STR = Ez az XML f�jl nem RSS form�tum�
-RESULT_NOT_FOUND_STR = A f�jl nem tal�lhat�
-RESULT_NOT_AVAILABLE_STR = Nem el�rhet� URL
-RESULT_ERROR_FAILURE_STR = Bet�lt�si hiba
-RESULT_LOADING = Loading
-RESULT_CHECKING = Checking
-
-CHECK_UPDATE = Friss�l�sek ellen�rz�se
-GET_RSS_TITLE= RSS c�m let�lt�se
-
-
-# feed discovery messages
-
-discovery_external_feeds_category = K�ls� adagol�
-discovery_status_discovered = Megtal�lva
-discovery_status_site_feed = oldaladagol�
-discovery_status_site_feeds = oldaladagol�k
-discovery_status_and = �s
-discovery_status_external_feed = k�ls� adagol�
-discovery_status_external_feeds = k�ls� adagol�k
-discovery_status_none_found = Nem siker�lt adagol�t tal�lni
-
-
-# get feed title dialog
-
-get_feed_title = Az �j adagol� c�me
-
-
-# OPML wizzard
-
-opml_import_done = Import�l�s befejezve
-opml_export_done = Exportport�l�s befejezve
-opml_path_blank = V�lasszon ki egy OPML f�jlt.
-opml_path_nofile = A megadott f�jl nem l�tezik.
-opml_path_invalid = �rv�nytelen �tvonal.
-opml_import_fail = Bet�lt�si hiba
-opml_import_badfile = �gy t�nik, ez nem egy OPML f�jl.
-opml_export_nocreate = F�jl l�trehoz�si hiba
-opml_select_file = Select OPML File
-opml_opml_file = OPML File
-
-
-# Date rendering values
-
-date_sunday = Vas�rnap
-date_sunday_short = Vas
-date_monday = H�tf�
-date_monday_short = H�t
-date_tuesday = Kedd
-date_tuesday_short = Ked
-date_wednesday = Szerda
-date_wednesday_short = Sze
-date_thursday = Cs�t�rt�k
-date_thursday_short = Cs�
-date_friday = P�ntek
-date_friday_short = P�n
-date_saturday = Szombat
-date_saturday_short = Szo
-
-date_january = Janu�r
-date_january_short = Jan
-date_february = Febru�r
-date_february_short = Feb
-date_march = M�rcius
-date_march_short = M�r
-date_april = �prilis
-date_april_short = �pr
-date_may = M�jus
-date_may_short = M�j
-date_june = J�nius
-date_june_short = J�n
-date_july = J�lius
-date_july_short = J�l
-date_august = Augusztus
-date_august_short = Aug
-date_september = Szeptember
-date_september_short = Sze
-date_october = Okt�ber
-date_october_short = Okt
-date_november = November
-date_november_short = Nov
-date_december = December
-date_december_short = Dec
-
-# Item context menu
-itemcontext_markasread = Mark as Read
-itemcontext_markasunread = Mark as Unread
-itemcontext_markallasread = Mark All as Read
-itemcontext_markallasunread = Mark All as Unread
+RESULT_OK_STR = OK
+RESULT_PARSE_ERROR_STR = XML �rtelmez�si hiba
+RESULT_NOT_RSS_STR = Ez az XML f�jl nem RSS form�tum�
+RESULT_NOT_FOUND_STR = A f�jl nem tal�lhat�
+RESULT_NOT_AVAILABLE_STR = Nem el�rhet� URL
+RESULT_ERROR_FAILURE_STR = Bet�lt�si hiba
+RESULT_LOADING = Loading
+RESULT_CHECKING = Checking
+
+CHECK_UPDATE = Friss�l�sek ellen�rz�se
+GET_RSS_TITLE= RSS c�m let�lt�se
+
+
+# feed discovery messages
+
+discovery_external_feeds_category = K�ls� adagol�
+discovery_status_discovered = Megtal�lva
+discovery_status_site_feed = oldaladagol�
+discovery_status_site_feeds = oldaladagol�k
+discovery_status_and = �s
+discovery_status_external_feed = k�ls� adagol�
+discovery_status_external_feeds = k�ls� adagol�k
+discovery_status_none_found = Nem siker�lt adagol�t tal�lni
+
+
+# get feed title dialog
+
+get_feed_title = Az �j adagol� c�me
+
+
+# OPML wizzard
+
+opml_import_done = Import�l�s befejezve
+opml_export_done = Exportport�l�s befejezve
+opml_path_blank = V�lasszon ki egy OPML f�jlt.
+opml_path_nofile = A megadott f�jl nem l�tezik.
+opml_path_invalid = �rv�nytelen �tvonal.
+opml_import_fail = Bet�lt�si hiba
+opml_import_badfile = �gy t�nik, ez nem egy OPML f�jl.
+opml_export_nocreate = F�jl l�trehoz�si hiba
+opml_select_file = Select OPML File
+opml_opml_file = OPML File
+
+
+# Date rendering values
+
+date_sunday = Vas�rnap
+date_sunday_short = Vas
+date_monday = H�tf�
+date_monday_short = H�t
+date_tuesday = Kedd
+date_tuesday_short = Ked
+date_wednesday = Szerda
+date_wednesday_short = Sze
+date_thursday = Cs�t�rt�k
+date_thursday_short = Cs�
+date_friday = P�ntek
+date_friday_short = P�n
+date_saturday = Szombat
+date_saturday_short = Szo
+
+date_january = Janu�r
+date_january_short = Jan
+date_february = Febru�r
+date_february_short = Feb
+date_march = M�rcius
+date_march_short = M�r
+date_april = �prilis
+date_april_short = �pr
+date_may = M�jus
+date_may_short = M�j
+date_june = J�nius
+date_june_short = J�n
+date_july = J�lius
+date_july_short = J�l
+date_august = Augusztus
+date_august_short = Aug
+date_september = Szeptember
+date_september_short = Sze
+date_october = Okt�ber
+date_october_short = Okt
+date_november = November
+date_november_short = Nov
+date_december = December
+date_december_short = Dec
+
+# Item context menu
+itemcontext_markasread = Mark as Read
+itemcontext_markasunread = Mark as Unread
+itemcontext_markallasread = Mark All as Read
+itemcontext_markallasunread = Mark All as Unread
diff --git a/src/sage/locale/it-IT/sage.dtd b/src/sage/locale/it-IT/sage.dtd
index d1a6522..c16ebf7 100644
--- a/src/sage/locale/it-IT/sage.dtd
+++ b/src/sage/locale/it-IT/sage.dtd
@@ -1,53 +1,53 @@
-<!ENTITY sage.label				"Sage">
-<!ENTITY sage.version				"1.2">
-<!ENTITY sage.version.label				"">
-
-<!ENTITY sage.toolbarLabel			"Sage">
-<!ENTITY sage.sidebarTitle			"Sage">
-<!ENTITY sage.tooltip				"Mostra il pannello laterale di Sage">
-
-<!ENTITY menu.view				"Visualizza">
-<!ENTITY menu.showSearchBar			"Mostra Barra di Ricerca dei Feed">
-<!ENTITY menu.showFeedItemList			"Mostra la Lista dei Feed">
-<!ENTITY menu.showDescTooltip			"Mostra Descrizione Suggerimenti">
-<!ENTITY menu.openHTML				"Mostra i Feed nel Browser">
-<!ENTITY menu.tools				"Opzioni">
-<!ENTITY menu.checkUpdate			"Controlla i Feed">
-<!ENTITY menu.manageRSSList			"Gestione Lista dei Feed...">
-<!ENTITY menu.opmlImportExport			"Importazione/Esportazione File OPML...">
-<!ENTITY menu.setting				"Preferenze...">
-<!ENTITY menu.sageProjectFeed				"Novita' sul Progetto Sage">
-<!ENTITY menu.discoverFeeds				"Ricerca Feed Esterni">
-
-<!-- Feed Discovery -->
-<!ENTITY discovery.status.searching     "Ricerca nella Pagina Corrente">
-<!ENTITY discovery.button.addFeed    "Aggiungi un Feed">
-<!ENTITY discovery.button.close			 "Chiudi">
-<!ENTITY discovery.header.title			 "Titolo">
-<!ENTITY discovery.header.format     "Formato">
-<!ENTITY discovery.header.lastPubDate     "Ultimo Aggiornamento">
-<!ENTITY discovery.header.itemCount     "Elementi">
-<!ENTITY discovery.header.url     "URL">
-
-<!-- Settings Dialog -->
-<!ENTITY settings.general.caption     "Generale">
-<!ENTITY settings.autoFeedTitle.label     "Aggiorna Automaticamente il Titolo dei feed">
-<!ENTITY settings.renderFeeds.label     "Mostra i Feed nel Browser">
-<!ENTITY settings.twelveHourClock.label     "Usa Modalita' 12 ore">
-<!ENTITY settings.feedItemOrder.label     "Ordinamento dei Feed">
-<!ENTITY settings.feedItemOrder.chrono     "Cronologico">
-<!ENTITY settings.feedItemOrder.source     "Sorgente">
-<!ENTITY settings.feedDiscoveryMode.label     "Modalita' di Ricerca Feed">
-<!ENTITY settings.feedDiscoveryMode.exhaustive     "Esaustiva">
-<!ENTITY settings.feedDiscoveryMode.conservative     "Conservativa">
-<!ENTITY settingWindow.title                    "Configurazione di Sage">
-<!ENTITY selectFolder.label			"Selezionare la Cartella dei Feed">
-<!ENTITY openInContentsArea.caption		"Interpretazione dei Feed">
-<!ENTITY enableUserCss.label			"Usa CSS Personalizzato">
-<!ENTITY browseCss.label			"Sfoglia...">
-<!ENTITY allowEContent.label			"Permetti i Tag HTML">
-
-
-<!ENTITY openSageSidebar.commandkey		"S">
-<!ENTITY openSageSidebar.modifiersKey		"alt">
-
+<!ENTITY sage.label				"Sage">
+<!ENTITY sage.version				"1.2.2">
+<!ENTITY sage.version.label				"">
+
+<!ENTITY sage.toolbarLabel			"Sage">
+<!ENTITY sage.sidebarTitle			"Sage">
+<!ENTITY sage.tooltip				"Mostra il pannello laterale di Sage">
+
+<!ENTITY menu.view				"Visualizza">
+<!ENTITY menu.showSearchBar			"Mostra Barra di Ricerca dei Feed">
+<!ENTITY menu.showFeedItemList			"Mostra la Lista dei Feed">
+<!ENTITY menu.showDescTooltip			"Mostra Descrizione Suggerimenti">
+<!ENTITY menu.openHTML				"Mostra i Feed nel Browser">
+<!ENTITY menu.tools				"Opzioni">
+<!ENTITY menu.checkUpdate			"Controlla i Feed">
+<!ENTITY menu.manageRSSList			"Gestione Lista dei Feed...">
+<!ENTITY menu.opmlImportExport			"Importazione/Esportazione File OPML...">
+<!ENTITY menu.setting				"Preferenze...">
+<!ENTITY menu.sageProjectFeed				"Novita' sul Progetto Sage">
+<!ENTITY menu.discoverFeeds				"Ricerca Feed Esterni">
+
+<!-- Feed Discovery -->
+<!ENTITY discovery.status.searching     "Ricerca nella Pagina Corrente">
+<!ENTITY discovery.button.addFeed    "Aggiungi un Feed">
+<!ENTITY discovery.button.close			 "Chiudi">
+<!ENTITY discovery.header.title			 "Titolo">
+<!ENTITY discovery.header.format     "Formato">
+<!ENTITY discovery.header.lastPubDate     "Ultimo Aggiornamento">
+<!ENTITY discovery.header.itemCount     "Elementi">
+<!ENTITY discovery.header.url     "URL">
+
+<!-- Settings Dialog -->
+<!ENTITY settings.general.caption     "Generale">
+<!ENTITY settings.autoFeedTitle.label     "Aggiorna Automaticamente il Titolo dei feed">
+<!ENTITY settings.renderFeeds.label     "Mostra i Feed nel Browser">
+<!ENTITY settings.twelveHourClock.label     "Usa Modalita' 12 ore">
+<!ENTITY settings.feedItemOrder.label     "Ordinamento dei Feed">
+<!ENTITY settings.feedItemOrder.chrono     "Cronologico">
+<!ENTITY settings.feedItemOrder.source     "Sorgente">
+<!ENTITY settings.feedDiscoveryMode.label     "Modalita' di Ricerca Feed">
+<!ENTITY settings.feedDiscoveryMode.exhaustive     "Esaustiva">
+<!ENTITY settings.feedDiscoveryMode.conservative     "Conservativa">
+<!ENTITY settingWindow.title                    "Configurazione di Sage">
+<!ENTITY selectFolder.label			"Selezionare la Cartella dei Feed">
+<!ENTITY openInContentsArea.caption		"Interpretazione dei Feed">
+<!ENTITY enableUserCss.label			"Usa CSS Personalizzato">
+<!ENTITY browseCss.label			"Sfoglia...">
+<!ENTITY allowEContent.label			"Permetti i Tag HTML">
+
+
+<!ENTITY openSageSidebar.commandkey		"S">
+<!ENTITY openSageSidebar.modifiersKey		"alt">
+
diff --git a/src/sage/locale/it-IT/sage.properties b/src/sage/locale/it-IT/sage.properties
index ea81047..9734396 100644
--- a/src/sage/locale/it-IT/sage.properties
+++ b/src/sage/locale/it-IT/sage.properties
@@ -1,90 +1,90 @@
-RESULT_OK_STR = OK
-RESULT_PARSE_ERROR_STR = Errore analisi XML
-RESULT_NOT_RSS_STR = Errore analisi Feed
-RESULT_NOT_FOUND_STR = File non trovato
-RESULT_NOT_AVAILABLE_STR = URL non disponibile
-RESULT_ERROR_FAILURE_STR = Errore di caricamento
-RESULT_LOADING = Caricamento
-RESULT_CHECKING = Controllo di
-
-CHECK_UPDATE = Controlla i Feed
-GET_RSS_TITLE= Ottieni il titolo dei Feed
-
-
-# feed discovery messages
-
-discovery_external_feeds_category = Feed Esterni
-discovery_status_discovered = Trovati
-discovery_status_site_feed = sito con feed
-discovery_status_site_feeds = siti con feed
-discovery_status_and = and
-discovery_status_external_feed = feed esterno
-discovery_status_external_feeds = feed esterni
-discovery_status_none_found = Nessun feed trovato
-
-
-# get feed title dialog
-
-get_feed_title = Nuovo Titolo Feed
-
-
-# OPML wizzard
-
-opml_import_done = Importazione Completa
-opml_export_done = Esportazione Completa
-opml_path_blank = Per favore scegliere un file OPML.
-opml_path_nofile = Il file specificato non esiste.
-opml_path_invalid = Percorso del file non valido.
-opml_import_fail = Errore di caricamento
-opml_import_badfile = Questo non sembra essere un file OPML.
-opml_export_nocreate = Errore creazione file
-opml_select_file = Selezionare un file OPML
-opml_opml_file = File OPML
-
-# Date rendering values
-
-date_sunday = Domenica
-date_sunday_short = Dom
-date_monday = Lunedi
-date_monday_short = Lun
-date_tuesday = Martedi
-date_tuesday_short = Mar
-date_wednesday = Mercoledi
-date_wednesday_short = Mer
-date_thursday = Giovedi
-date_thursday_short = Gio
-date_friday = Venerdi
-date_friday_short = Ven
-date_saturday = Sabato
-date_saturday_short = Sab
-
-date_january = Gennaio
-date_january_short = Gen
-date_february = Febbraio
-date_february_short = Feb
-date_march = Marzo
-date_march_short = Mar
-date_april = Aprile
-date_april_short = Apr
-date_may = Maggio
-date_may_short = Mag
-date_june = Giugno
-date_june_short = Giu
-date_july = Luglio
-date_july_short = Lug
-date_august = Agosto
-date_august_short = Ago
-date_september = Settembre
-date_september_short = Set
-date_october = Ottobre
-date_october_short = Ott
-date_november = Novembre
-date_november_short = Nov
-date_december = Dicembre
-date_december_short = Dic
-
-# Item context menu
-itemcontext_markasread = Mark as Read
-itemcontext_markasunread = Mark as Unread
-itemcontext_markallasread = Mark All as Read
-itemcontext_markallasunread = Mark All as Unread
+RESULT_OK_STR = OK
+RESULT_PARSE_ERROR_STR = Errore analisi XML
+RESULT_NOT_RSS_STR = Errore analisi Feed
+RESULT_NOT_FOUND_STR = File non trovato
+RESULT_NOT_AVAILABLE_STR = URL non disponibile
+RESULT_ERROR_FAILURE_STR = Errore di caricamento
+RESULT_LOADING = Caricamento
+RESULT_CHECKING = Controllo di
+
+CHECK_UPDATE = Controlla i Feed
+GET_RSS_TITLE= Ottieni il titolo dei Feed
+
+
+# feed discovery messages
+
+discovery_external_feeds_category = Feed Esterni
+discovery_status_discovered = Trovati
+discovery_status_site_feed = sito con feed
+discovery_status_site_feeds = siti con feed
+discovery_status_and = and
+discovery_status_external_feed = feed esterno
+discovery_status_external_feeds = feed esterni
+discovery_status_none_found = Nessun feed trovato
+
+
+# get feed title dialog
+
+get_feed_title = Nuovo Titolo Feed
+
+
+# OPML wizzard
+
+opml_import_done = Importazione Completa
+opml_export_done = Esportazione Completa
+opml_path_blank = Per favore scegliere un file OPML.
+opml_path_nofile = Il file specificato non esiste.
+opml_path_invalid = Percorso del file non valido.
+opml_import_fail = Errore di caricamento
+opml_import_badfile = Questo non sembra essere un file OPML.
+opml_export_nocreate = Errore creazione file
+opml_select_file = Selezionare un file OPML
+opml_opml_file = File OPML
+
+# Date rendering values
+
+date_sunday = Domenica
+date_sunday_short = Dom
+date_monday = Lunedi
+date_monday_short = Lun
+date_tuesday = Martedi
+date_tuesday_short = Mar
+date_wednesday = Mercoledi
+date_wednesday_short = Mer
+date_thursday = Giovedi
+date_thursday_short = Gio
+date_friday = Venerdi
+date_friday_short = Ven
+date_saturday = Sabato
+date_saturday_short = Sab
+
+date_january = Gennaio
+date_january_short = Gen
+date_february = Febbraio
+date_february_short = Feb
+date_march = Marzo
+date_march_short = Mar
+date_april = Aprile
+date_april_short = Apr
+date_may = Maggio
+date_may_short = Mag
+date_june = Giugno
+date_june_short = Giu
+date_july = Luglio
+date_july_short = Lug
+date_august = Agosto
+date_august_short = Ago
+date_september = Settembre
+date_september_short = Set
+date_october = Ottobre
+date_october_short = Ott
+date_november = Novembre
+date_november_short = Nov
+date_december = Dicembre
+date_december_short = Dic
+
+# Item context menu
+itemcontext_markasread = Mark as Read
+itemcontext_markasunread = Mark as Unread
+itemcontext_markallasread = Mark All as Read
+itemcontext_markallasunread = Mark All as Unread
diff --git a/src/sage/locale/ja-JP/sage.dtd b/src/sage/locale/ja-JP/sage.dtd
index 7c33c3a..d4d4967 100755
--- a/src/sage/locale/ja-JP/sage.dtd
+++ b/src/sage/locale/ja-JP/sage.dtd
@@ -1,54 +1,54 @@
-<!ENTITY sage.label			"RSS リーダパネル">
-<!ENTITY sage.version			"1.2">
-<!ENTITY sage.version.label				"">
-
-<!ENTITY sage.toolbarLabel		"RSS リーダ">
-<!ENTITY sage.sidebarTitle		"RSS リーダ">
-<!ENTITY sage.tooltip			"RSS リーダパネルを表示">
-
-
-<!ENTITY menu.view					"表示">
-<!ENTITY menu.showSearchBar			"Feed 検索バーの表示">
-<!ENTITY menu.showFeedItemList			"">
-<!ENTITY menu.showDescTooltip		"Description ツールチップの表示">
-<!ENTITY menu.openHTML				"コンテンツエリアで開く">
-<!ENTITY menu.tools					"ツール">
-<!ENTITY menu.checkUpdate			"更新チェック">
-<!ENTITY menu.manageRSSList			"RSS リストの管理">
-<!ENTITY menu.opmlImportExport		"OPML インポート/エクスポート...">
-<!ENTITY menu.setting				"設定...">
-<!ENTITY menu.sageProjectFeed				"Sage Project News">
-<!ENTITY menu.discoverFeeds				"Discover Feeds">
-
-<!-- Feed Discovery -->
-<!ENTITY discovery.status.searching     "Searching current page">
-<!ENTITY discovery.button.addFeed    "Add Feed">
-<!ENTITY discovery.button.close			 "Close">
-<!ENTITY discovery.header.title			 "Title">
-<!ENTITY discovery.header.format     "Format">
-<!ENTITY discovery.header.lastPubDate     "Last Update">
-<!ENTITY discovery.header.itemCount     "Items">
-<!ENTITY discovery.header.url     "URL">
-
-<!-- Setting Dialog -->
-<!ENTITY settings.general.caption     "General">
-<!ENTITY settings.autoFeedTitle.label     "Automatically update feed titles">
-<!ENTITY settings.renderFeeds.label     "Render feeds in contents area">
-<!ENTITY settings.twelveHourClock.label     "Use 12 hour clock">
-<!ENTITY settingWindow.title		"設定: RSS リーダパネル">
-<!ENTITY selectFolder.label			"RSS リストフォルダの選択">
-<!ENTITY settings.feedItemOrder.label     "Feed Item Order">
-<!ENTITY settings.feedItemOrder.chrono     "Chronological">
-<!ENTITY settings.feedItemOrder.source     "Source">
-<!ENTITY settings.feedDiscoveryMode.label     "Feed discovery mode">
-<!ENTITY settings.feedDiscoveryMode.exhaustive     "Exhaustive">
-<!ENTITY settings.feedDiscoveryMode.conservative     "Conservative">
-<!ENTITY openInContentsArea.caption	"コンテンツエリアで開く">
-<!ENTITY enableUserCss.label		"ユーザー CSS を使う">
-<!ENTITY browseCss.label			"参照...">
-<!ENTITY allowEContent.label		"HTML タグを許可する">
-
-
-<!ENTITY openSageSidebar.commandkey	"S">
-<!ENTITY openSageSidebar.modifiersKey	"alt">
-
+<!ENTITY sage.label			"RSS リーダパネル">
+<!ENTITY sage.version			"1.2.2">
+<!ENTITY sage.version.label				"">
+
+<!ENTITY sage.toolbarLabel		"RSS リーダ">
+<!ENTITY sage.sidebarTitle		"RSS リーダ">
+<!ENTITY sage.tooltip			"RSS リーダパネルを表示">
+
+
+<!ENTITY menu.view					"表示">
+<!ENTITY menu.showSearchBar			"Feed 検索バーの表示">
+<!ENTITY menu.showFeedItemList			"">
+<!ENTITY menu.showDescTooltip		"Description ツールチップの表示">
+<!ENTITY menu.openHTML				"コンテンツエリアで開く">
+<!ENTITY menu.tools					"ツール">
+<!ENTITY menu.checkUpdate			"更新チェック">
+<!ENTITY menu.manageRSSList			"RSS リストの管理">
+<!ENTITY menu.opmlImportExport		"OPML インポート/エクスポート...">
+<!ENTITY menu.setting				"設定...">
+<!ENTITY menu.sageProjectFeed				"Sage Project News">
+<!ENTITY menu.discoverFeeds				"Discover Feeds">
+
+<!-- Feed Discovery -->
+<!ENTITY discovery.status.searching     "Searching current page">
+<!ENTITY discovery.button.addFeed    "Add Feed">
+<!ENTITY discovery.button.close			 "Close">
+<!ENTITY discovery.header.title			 "Title">
+<!ENTITY discovery.header.format     "Format">
+<!ENTITY discovery.header.lastPubDate     "Last Update">
+<!ENTITY discovery.header.itemCount     "Items">
+<!ENTITY discovery.header.url     "URL">
+
+<!-- Setting Dialog -->
+<!ENTITY settings.general.caption     "General">
+<!ENTITY settings.autoFeedTitle.label     "Automatically update feed titles">
+<!ENTITY settings.renderFeeds.label     "Render feeds in contents area">
+<!ENTITY settings.twelveHourClock.label     "Use 12 hour clock">
+<!ENTITY settingWindow.title		"設定: RSS リーダパネル">
+<!ENTITY selectFolder.label			"RSS リストフォルダの選択">
+<!ENTITY settings.feedItemOrder.label     "Feed Item Order">
+<!ENTITY settings.feedItemOrder.chrono     "Chronological">
+<!ENTITY settings.feedItemOrder.source     "Source">
+<!ENTITY settings.feedDiscoveryMode.label     "Feed discovery mode">
+<!ENTITY settings.feedDiscoveryMode.exhaustive     "Exhaustive">
+<!ENTITY settings.feedDiscoveryMode.conservative     "Conservative">
+<!ENTITY openInContentsArea.caption	"コンテンツエリアで開く">
+<!ENTITY enableUserCss.label		"ユーザー CSS を使う">
+<!ENTITY browseCss.label			"参照...">
+<!ENTITY allowEContent.label		"HTML タグを許可する">
+
+
+<!ENTITY openSageSidebar.commandkey	"S">
+<!ENTITY openSageSidebar.modifiersKey	"alt">
+
diff --git a/src/sage/locale/ja-JP/sage.properties b/src/sage/locale/ja-JP/sage.properties
index 32de364..43c934f 100755
--- a/src/sage/locale/ja-JP/sage.properties
+++ b/src/sage/locale/ja-JP/sage.properties
@@ -1,91 +1,91 @@
-RESULT_OK_STR = OK
-RESULT_PARSE_ERROR_STR = XML \u30d1\u30fc\u30b9\u30a8\u30e9\u30fc
-RESULT_NOT_RSS_STR = \u3053\u306e XML \u30d5\u30a1\u30a4\u30eb\u306f RSS \u3067\u306f\u3042\u308a\u307e\u305b\u3093
-RESULT_NOT_FOUND_STR = \u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093
-RESULT_NOT_AVAILABLE_STR = \u5b58\u5728\u3057\u306a\u3044 URL \u3067\u3059
-RESULT_ERROR_FAILURE_STR = \u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f
-RESULT_LOADING = Loading
-RESULT_CHECKING = Checking
-
-CHECK_UPDATE = \u66f4\u65b0\u30c1\u30a7\u30c3\u30af
-GET_RSS_TITLE= RSS \u30bf\u30a4\u30c8\u30eb\u306e\u53d6\u5f97
-
-
-# feed discovery messages
-
-discovery_external_feeds_category = External Feeds
-discovery_status_discovered = Discovered
-discovery_status_site_feed = site feed
-discovery_status_site_feeds = site feeds
-discovery_status_and = and
-discovery_status_external_feed = external feed
-discovery_status_external_feeds = external feeds
-discovery_status_none_found = No feeds were discovered
-
-
-# get feed title dialog
-
-get_feed_title = New Feed Title
-
-
-# OPML wizzard
-
-opml_import_done = Import Complete
-opml_export_done = Export Complete
-opml_path_blank = Please choose an OPML file.
-opml_path_nofile = The specified file does not exist.
-opml_path_invalid = Invalid file path.
-opml_import_fail = Load Failure
-opml_import_badfile = This does not appear to be an OPML file.
-opml_export_nocreate = File creation error
-opml_select_file = Select OPML File
-opml_opml_file = OPML File
-
-
-# Date rendering values
-
-date_sunday = Sunday
-date_sunday_short = Sun
-date_monday = Monday
-date_monday_short = Mon
-date_tuesday = Tuesday
-date_tuesday_short = Tue
-date_wednesday = Wednesday
-date_wednesday_short = Wed
-date_thursday = Thursday
-date_thursday_short = Thu
-date_friday = Friday
-date_friday_short = Fri
-date_saturday = Saturday
-date_saturday_short = Sat
-
-date_january = January
-date_january_short = Jan
-date_february = February
-date_february_short = Feb
-date_march = March
-date_march_short = Mar
-date_april = April
-date_april_short = Apr
-date_may = May
-date_may_short = May
-date_june = June
-date_june_short = Jun
-date_july = July
-date_july_short = Jul
-date_august = August
-date_august_short = Aug
-date_september = September
-date_september_short = Sep
-date_october = October
-date_october_short = Oct
-date_november = November
-date_november_short = Nov
-date_december = December
-date_december_short = Dec
-
-# Item context menu
-itemcontext_markasread = Mark as Read
-itemcontext_markasunread = Mark as Unread
-itemcontext_markallasread = Mark All as Read
-itemcontext_markallasunread = Mark All as Unread
+RESULT_OK_STR = OK
+RESULT_PARSE_ERROR_STR = XML \u30d1\u30fc\u30b9\u30a8\u30e9\u30fc
+RESULT_NOT_RSS_STR = \u3053\u306e XML \u30d5\u30a1\u30a4\u30eb\u306f RSS \u3067\u306f\u3042\u308a\u307e\u305b\u3093
+RESULT_NOT_FOUND_STR = \u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093
+RESULT_NOT_AVAILABLE_STR = \u5b58\u5728\u3057\u306a\u3044 URL \u3067\u3059
+RESULT_ERROR_FAILURE_STR = \u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f
+RESULT_LOADING = Loading
+RESULT_CHECKING = Checking
+
+CHECK_UPDATE = \u66f4\u65b0\u30c1\u30a7\u30c3\u30af
+GET_RSS_TITLE= RSS \u30bf\u30a4\u30c8\u30eb\u306e\u53d6\u5f97
+
+
+# feed discovery messages
+
+discovery_external_feeds_category = External Feeds
+discovery_status_discovered = Discovered
+discovery_status_site_feed = site feed
+discovery_status_site_feeds = site feeds
+discovery_status_and = and
+discovery_status_external_feed = external feed
+discovery_status_external_feeds = external feeds
+discovery_status_none_found = No feeds were discovered
+
+
+# get feed title dialog
+
+get_feed_title = New Feed Title
+
+
+# OPML wizzard
+
+opml_import_done = Import Complete
+opml_export_done = Export Complete
+opml_path_blank = Please choose an OPML file.
+opml_path_nofile = The specified file does not exist.
+opml_path_invalid = Invalid file path.
+opml_import_fail = Load Failure
+opml_import_badfile = This does not appear to be an OPML file.
+opml_export_nocreate = File creation error
+opml_select_file = Select OPML File
+opml_opml_file = OPML File
+
+
+# Date rendering values
+
+date_sunday = Sunday
+date_sunday_short = Sun
+date_monday = Monday
+date_monday_short = Mon
+date_tuesday = Tuesday
+date_tuesday_short = Tue
+date_wednesday = Wednesday
+date_wednesday_short = Wed
+date_thursday = Thursday
+date_thursday_short = Thu
+date_friday = Friday
+date_friday_short = Fri
+date_saturday = Saturday
+date_saturday_short = Sat
+
+date_january = January
+date_january_short = Jan
+date_february = February
+date_february_short = Feb
+date_march = March
+date_march_short = Mar
+date_april = April
+date_april_short = Apr
+date_may = May
+date_may_short = May
+date_june = June
+date_june_short = Jun
+date_july = July
+date_july_short = Jul
+date_august = August
+date_august_short = Aug
+date_september = September
+date_september_short = Sep
+date_october = October
+date_october_short = Oct
+date_november = November
+date_november_short = Nov
+date_december = December
+date_december_short = Dec
+
+# Item context menu
+itemcontext_markasread = Mark as Read
+itemcontext_markasunread = Mark as Unread
+itemcontext_markallasread = Mark All as Read
+itemcontext_markallasunread = Mark All as Unread
diff --git a/src/sage/locale/nl-NL/sage.dtd b/src/sage/locale/nl-NL/sage.dtd
index 9bd5c27..ce81070 100644
--- a/src/sage/locale/nl-NL/sage.dtd
+++ b/src/sage/locale/nl-NL/sage.dtd
@@ -1,52 +1,52 @@
-<!ENTITY sage.label											"Sage">
-<!ENTITY sage.version										"1.2">
-<!ENTITY sage.version.label								"versie">
-
-<!ENTITY sage.toolbarLabel									"Sage">
-<!ENTITY sage.sidebarTitle									"Sage">
-<!ENTITY sage.tooltip										"Toon Sage">
-
-<!ENTITY menu.view											"Beeld">
-<!ENTITY menu.showSearchBar								"Toon feed zoekbalk">
-<!ENTITY menu.showFeedItemList							"Toon feed itemlijst">
-<!ENTITY menu.showDescTooltip								"Toon beschrijvende tooltips">
-<!ENTITY menu.openHTML										"Open feeds in Contents Area">
-<!ENTITY menu.tools											"Opties">
-<!ENTITY menu.checkUpdate									"Controleer feeds">
-<!ENTITY menu.manageRSSList								"Beheer feedlijst...">
-<!ENTITY menu.opmlImportExport							"OPML Importeren/Exporteren...">
-<!ENTITY menu.setting										"Instellingen...">
-<!ENTITY menu.sageProjectFeed								"Sage Projectnieuws">
-<!ENTITY menu.discoverFeeds								"Ontdek feeds">
-
-<!-- Feed Discovery -->
-<!ENTITY discovery.status.searching						"Zoeken op huidige pagina">
-<!ENTITY discovery.button.addFeed						"Feed toevoegen">
-<!ENTITY discovery.button.close							"Sluiten">
-<!ENTITY discovery.header.title							"Titel">
-<!ENTITY discovery.header.format							"Formaat">
-<!ENTITY discovery.header.lastPubDate					"Laatste update">
-<!ENTITY discovery.header.itemCount						"Items">
-<!ENTITY discovery.header.url								"URL">
-
-<!-- Settings Dialog -->
-<!ENTITY settings.general.caption						"Algemeen">
-<!ENTITY settings.autoFeedTitle.label					"Automatisch feedtitels bijwerken">
-<!ENTITY settings.renderFeeds.label						"Feeds weergeven in Contents Area">
-<!ENTITY settings.twelveHourClock.label				"Gebruik 12-uurs klok">
-<!ENTITY settings.feedItemOrder.label					"Volgorde van feeditems">
-<!ENTITY settings.feedItemOrder.chrono					"Chronologisch">
-<!ENTITY settings.feedItemOrder.source					"Bron">
-<!ENTITY settings.feedDiscoveryMode.label				"Feed ontdekkingsmodus">
-<!ENTITY settings.feedDiscoveryMode.exhaustive		"Grondig">
-<!ENTITY settings.feedDiscoveryMode.conservative	"Conservatief">
-<!ENTITY settingWindow.title								"Sage instellingen">
-<!ENTITY selectFolder.label								"Selecteer map met feeds">
-<!ENTITY openInContentsArea.caption						"Feedweergave">
-<!ENTITY enableUserCss.label								"Gebruik aangepaste CSS">
-<!ENTITY browseCss.label									"Verkennen...">
-<!ENTITY allowEContent.label								"HTML tags toestaan">
-
-
-<!ENTITY openSageSidebar.commandkey						"S">
-<!ENTITY openSageSidebar.modifiersKey					"alt">
+<!ENTITY sage.label											"Sage">
+<!ENTITY sage.version										"1.2.2">
+<!ENTITY sage.version.label								"versie">
+
+<!ENTITY sage.toolbarLabel									"Sage">
+<!ENTITY sage.sidebarTitle									"Sage">
+<!ENTITY sage.tooltip										"Toon Sage">
+
+<!ENTITY menu.view											"Beeld">
+<!ENTITY menu.showSearchBar								"Toon feed zoekbalk">
+<!ENTITY menu.showFeedItemList							"Toon feed itemlijst">
+<!ENTITY menu.showDescTooltip								"Toon beschrijvende tooltips">
+<!ENTITY menu.openHTML										"Open feeds in Contents Area">
+<!ENTITY menu.tools											"Opties">
+<!ENTITY menu.checkUpdate									"Controleer feeds">
+<!ENTITY menu.manageRSSList								"Beheer feedlijst...">
+<!ENTITY menu.opmlImportExport							"OPML Importeren/Exporteren...">
+<!ENTITY menu.setting										"Instellingen...">
+<!ENTITY menu.sageProjectFeed								"Sage Projectnieuws">
+<!ENTITY menu.discoverFeeds								"Ontdek feeds">
+
+<!-- Feed Discovery -->
+<!ENTITY discovery.status.searching						"Zoeken op huidige pagina">
+<!ENTITY discovery.button.addFeed						"Feed toevoegen">
+<!ENTITY discovery.button.close							"Sluiten">
+<!ENTITY discovery.header.title							"Titel">
+<!ENTITY discovery.header.format							"Formaat">
+<!ENTITY discovery.header.lastPubDate					"Laatste update">
+<!ENTITY discovery.header.itemCount						"Items">
+<!ENTITY discovery.header.url								"URL">
+
+<!-- Settings Dialog -->
+<!ENTITY settings.general.caption						"Algemeen">
+<!ENTITY settings.autoFeedTitle.label					"Automatisch feedtitels bijwerken">
+<!ENTITY settings.renderFeeds.label						"Feeds weergeven in Contents Area">
+<!ENTITY settings.twelveHourClock.label				"Gebruik 12-uurs klok">
+<!ENTITY settings.feedItemOrder.label					"Volgorde van feeditems">
+<!ENTITY settings.feedItemOrder.chrono					"Chronologisch">
+<!ENTITY settings.feedItemOrder.source					"Bron">
+<!ENTITY settings.feedDiscoveryMode.label				"Feed ontdekkingsmodus">
+<!ENTITY settings.feedDiscoveryMode.exhaustive		"Grondig">
+<!ENTITY settings.feedDiscoveryMode.conservative	"Conservatief">
+<!ENTITY settingWindow.title								"Sage instellingen">
+<!ENTITY selectFolder.label								"Selecteer map met feeds">
+<!ENTITY openInContentsArea.caption						"Feedweergave">
+<!ENTITY enableUserCss.label								"Gebruik aangepaste CSS">
+<!ENTITY browseCss.label									"Verkennen...">
+<!ENTITY allowEContent.label								"HTML tags toestaan">
+
+
+<!ENTITY openSageSidebar.commandkey						"S">
+<!ENTITY openSageSidebar.modifiersKey					"alt">
diff --git a/src/sage/locale/nl-NL/sage.properties b/src/sage/locale/nl-NL/sage.properties
index a8bbb41..8b865f7 100644
--- a/src/sage/locale/nl-NL/sage.properties
+++ b/src/sage/locale/nl-NL/sage.properties
@@ -1,90 +1,90 @@
-RESULT_OK_STR = OK
-RESULT_PARSE_ERROR_STR = XML parse fout
-RESULT_NOT_RSS_STR = Feed parse fout
-RESULT_NOT_FOUND_STR = Bestand niet gevonden
-RESULT_NOT_AVAILABLE_STR = URL niet beschikbaar
-RESULT_ERROR_FAILURE_STR = Laadfout
-RESULT_LOADING = Bezig met laden
-RESULT_CHECKING = Bezig met controleren
-
-CHECK_UPDATE = Controleer feeds
-GET_RSS_TITLE= Feedtitel ophalen
-
-
-# feed discovery messages
-
-discovery_external_feeds_category = Externe feeds
-discovery_status_discovered = Ontdekt
-discovery_status_site_feed = site feed
-discovery_status_site_feeds = site feeds
-discovery_status_and = en
-discovery_status_external_feed = externe feed
-discovery_status_external_feeds = externe feeds
-discovery_status_none_found = Geen feeds ontdekt
-
-
-# get feed title dialog
-
-get_feed_title = Nieuwe feedtitel
-
-
-# OPML wizzard
-
-opml_import_done = Import volledig
-opml_export_done = Export volledig
-opml_path_blank = Kies alstublieft een OPML bestand.
-opml_path_nofile = Het opgegeven bestand bestaat niet.
-opml_path_invalid = Ongeldig bestandspad.
-opml_import_fail = Laadfout
-opml_import_badfile = Dit blijkt geen OPML bestand te zijn.
-opml_export_nocreate = Fout bij aanmaken bestand
-opml_select_file = Selecteer OPML bestand
-opml_opml_file = OPML bestand
-
-# Date rendering values
-
-date_sunday = Zondag
-date_sunday_short = Zo
-date_monday = Maandag
-date_monday_short = Ma
-date_tuesday = Dinsdag
-date_tuesday_short = Di
-date_wednesday = Woensdag
-date_wednesday_short = Woe
-date_thursday = Donderdag
-date_thursday_short = Do
-date_friday = Vrijdag
-date_friday_short = Vrij
-date_saturday = Zaterdag
-date_saturday_short = Za
-
-date_january = Januari
-date_january_short = Jan
-date_february = Februari
-date_february_short = Feb
-date_march = Maart
-date_march_short = Maa
-date_april = April
-date_april_short = Apr
-date_may = Mei
-date_may_short = Mei
-date_june = Juni
-date_june_short = Jun
-date_july = Juli
-date_july_short = Jul
-date_august = Augustus
-date_august_short = Aug
-date_september = September
-date_september_short = Sep
-date_october = Oktober
-date_october_short = Okt
-date_november = November
-date_november_short = Nov
-date_december = December
-date_december_short = Dec
-
-# Item context menu
-itemcontext_markasread = Mark as Read
-itemcontext_markasunread = Mark as Unread
-itemcontext_markallasread = Mark All as Read
-itemcontext_markallasunread = Mark All as Unread
+RESULT_OK_STR = OK
+RESULT_PARSE_ERROR_STR = XML parse fout
+RESULT_NOT_RSS_STR = Feed parse fout
+RESULT_NOT_FOUND_STR = Bestand niet gevonden
+RESULT_NOT_AVAILABLE_STR = URL niet beschikbaar
+RESULT_ERROR_FAILURE_STR = Laadfout
+RESULT_LOADING = Bezig met laden
+RESULT_CHECKING = Bezig met controleren
+
+CHECK_UPDATE = Controleer feeds
+GET_RSS_TITLE= Feedtitel ophalen
+
+
+# feed discovery messages
+
+discovery_external_feeds_category = Externe feeds
+discovery_status_discovered = Ontdekt
+discovery_status_site_feed = site feed
+discovery_status_site_feeds = site feeds
+discovery_status_and = en
+discovery_status_external_feed = externe feed
+discovery_status_external_feeds = externe feeds
+discovery_status_none_found = Geen feeds ontdekt
+
+
+# get feed title dialog
+
+get_feed_title = Nieuwe feedtitel
+
+
+# OPML wizzard
+
+opml_import_done = Import volledig
+opml_export_done = Export volledig
+opml_path_blank = Kies alstublieft een OPML bestand.
+opml_path_nofile = Het opgegeven bestand bestaat niet.
+opml_path_invalid = Ongeldig bestandspad.
+opml_import_fail = Laadfout
+opml_import_badfile = Dit blijkt geen OPML bestand te zijn.
+opml_export_nocreate = Fout bij aanmaken bestand
+opml_select_file = Selecteer OPML bestand
+opml_opml_file = OPML bestand
+
+# Date rendering values
+
+date_sunday = Zondag
+date_sunday_short = Zo
+date_monday = Maandag
+date_monday_short = Ma
+date_tuesday = Dinsdag
+date_tuesday_short = Di
+date_wednesday = Woensdag
+date_wednesday_short = Woe
+date_thursday = Donderdag
+date_thursday_short = Do
+date_friday = Vrijdag
+date_friday_short = Vrij
+date_saturday = Zaterdag
+date_saturday_short = Za
+
+date_january = Januari
+date_january_short = Jan
+date_february = Februari
+date_february_short = Feb
+date_march = Maart
+date_march_short = Maa
+date_april = April
+date_april_short = Apr
+date_may = Mei
+date_may_short = Mei
+date_june = Juni
+date_june_short = Jun
+date_july = Juli
+date_july_short = Jul
+date_august = Augustus
+date_august_short = Aug
+date_september = September
+date_september_short = Sep
+date_october = Oktober
+date_october_short = Okt
+date_november = November
+date_november_short = Nov
+date_december = December
+date_december_short = Dec
+
+# Item context menu
+itemcontext_markasread = Mark as Read
+itemcontext_markasunread = Mark as Unread
+itemcontext_markallasread = Mark All as Read
+itemcontext_markallasunread = Mark All as Unread

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/sage-extension.git



More information about the Pkg-mozext-commits mailing list