Index: daapsharing/rb-daap-connection.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/daapsharing/rb-daap-connection.c,v
retrieving revision 1.38
diff -u -p -r1.38 rb-daap-connection.c
--- daapsharing/rb-daap-connection.c	3 Sep 2006 22:05:06 -0000	1.38
+++ daapsharing/rb-daap-connection.c	2 Oct 2006 01:42:35 -0000
@@ -671,16 +671,12 @@ entry_set_string_prop (RhythmDB        *
 		       const char      *str)
 {
 	GValue value = {0,};
-	const gchar *tmp;
-
-	if (str == NULL || *str == '\0' || !g_utf8_validate (str, -1, NULL)) {
-		tmp = _("Unknown");
-	} else {
-		tmp = str;
-	}
 
 	g_value_init (&value, G_TYPE_STRING);
-	g_value_set_string (&value, tmp);
+	if (str != NULL)
+		g_value_set_string (&value, str);
+	else
+		g_value_set_static_string (&value, "");
 	rhythmdb_entry_set (RHYTHMDB (db), entry, propid, &value);
 	g_value_unset (&value);
 }
Index: lib/rb-cut-and-paste-code.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/lib/rb-cut-and-paste-code.c,v
retrieving revision 1.8
diff -u -p -r1.8 rb-cut-and-paste-code.c
--- lib/rb-cut-and-paste-code.c	17 May 2006 02:43:32 -0000	1.8
+++ lib/rb-cut-and-paste-code.c	2 Oct 2006 01:42:36 -0000
@@ -257,7 +257,7 @@ rb_utf_friendly_time (time_t date)
 	nowdate = time (NULL);
 
 	if (date == 0)
-		return NULL;
+		return g_strdup (_("Unknown"));
 	
 	localtime_r (&date, &then);
 	localtime_r (&nowdate, &now);
Index: lib/rb-util.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/lib/rb-util.c,v
retrieving revision 1.31
diff -u -p -r1.31 rb-util.c
--- lib/rb-util.c	30 Jul 2006 13:54:55 -0000	1.31
+++ lib/rb-util.c	2 Oct 2006 01:42:36 -0000
@@ -569,7 +569,7 @@ rb_search_fold (const char *original)
 			break;
 
 		case G_UNICODE_UNASSIGNED:
-			g_warning ("unassigned unicode character type found");
+			rb_debug ("unassigned unicode character type found");
 			/* fall through */
 
 		default:
Index: metadata/rb-metadata-gst.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/metadata/rb-metadata-gst.c,v
retrieving revision 1.82
diff -u -p -r1.82 rb-metadata-gst.c
--- metadata/rb-metadata-gst.c	14 Jul 2006 12:27:15 -0000	1.82
+++ metadata/rb-metadata-gst.c	2 Oct 2006 01:42:36 -0000
@@ -1277,7 +1277,8 @@ rb_metadata_gst_add_tag_data (gpointer k
 		return;
 
 	if (tag) {
-		if (field == RB_METADATA_FIELD_DATE && g_value_get_ulong (val) == 0) {
+		if ((field == RB_METADATA_FIELD_DATE && g_value_get_ulong (val) == 0) ||
+		    (G_VALUE_TYPE(val) == G_TYPE_STRING && g_value_get_string (val) == "")) {
 			/* we should ask gstreamer to remove the tag,
 			 * but there is no easy way of doing so
 			 */
Index: plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py
===================================================================
RCS file: /cvs/gnome/rhythmbox/plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py,v
retrieving revision 1.5
diff -u -p -r1.5 AmazonCoverArtSearch.py
--- plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py	12 Jul 2006 02:44:28 -0000	1.5
+++ plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py	2 Oct 2006 01:42:36 -0000
@@ -64,8 +64,8 @@ class AmazonCoverArtSearch (object):
 		self.args = args
 		self.keywords = []
 
-		st_artist = db.entry_get (entry, rhythmdb.PROP_ARTIST) or _("Unknown")
-		st_album = db.entry_get (entry, rhythmdb.PROP_ALBUM) or _("Unknown")
+		st_artist = db.entry_get (entry, rhythmdb.PROP_ARTIST) or ""
+		st_album = db.entry_get (entry, rhythmdb.PROP_ALBUM) or ""
 
 		# Tidy up
 
@@ -98,13 +98,13 @@ class AmazonCoverArtSearch (object):
 		
 		# TODO: Improve to decrease wrong cover downloads, maybe add severity?
 		# Assemble list of search keywords (and thus search queries)
-		if st_album == _("Unknown"):
+		if st_album == "":
 			self.keywords.append ("%s Best of" % (st_artist))
 			self.keywords.append ("%s Greatest Hits" % (st_artist))
 			self.keywords.append ("%s Essential" % (st_artist))
 			self.keywords.append ("%s Collection" % (st_artist))
 			self.keywords.append ("%s" % (st_artist))
-		elif st_artist == _("Unknown"):
+		elif st_artist == "":
 			self.keywords.append ("%s" % (st_album))
 			if st_album_no_vol != st_artist:
 				self.keywords.append ("%s" % (st_album_no_vol))
@@ -223,7 +223,7 @@ class AmazonCoverArtSearch (object):
 		best_match = None
 
 		try:
-			if self.search_album != _("Unknown"):
+			if self.search_album != "":
 				album_check = self.__tidy_up_string (self.search_album)
 				for item in search_results:
 					# Check for album name in ProductName
@@ -238,7 +238,7 @@ class AmazonCoverArtSearch (object):
 						best_match = item
 
 			# If we still have no definite hit, use first result where artist matches
-			if (self.search_album == _("Unknown") and self.search_artist != _("Unknown")):
+			if (self.search_album == "" and self.search_artist != ""):
 				artist_check = self.__tidy_up_string (self.search_artist)
 				if best_match is None:
 					# Check if artist appears in the Artists list
Index: plugins/artdisplay/artdisplay/CoverArtDatabase.py
===================================================================
RCS file: /cvs/gnome/rhythmbox/plugins/artdisplay/artdisplay/CoverArtDatabase.py,v
retrieving revision 1.7
diff -u -p -r1.7 CoverArtDatabase.py
--- plugins/artdisplay/artdisplay/CoverArtDatabase.py	17 Jul 2006 09:31:27 -0000	1.7
+++ plugins/artdisplay/artdisplay/CoverArtDatabase.py	2 Oct 2006 01:42:37 -0000
@@ -54,8 +54,8 @@ class CoverArtDatabase (object):
 			callback (entry, None)
 			return
             
-		st_artist = db.entry_get (entry, rhythmdb.PROP_ARTIST) or _("Unknown")
-		st_album = db.entry_get (entry, rhythmdb.PROP_ALBUM) or _("Unknown")
+		st_artist = db.entry_get (entry, rhythmdb.PROP_ARTIST) or ""
+		st_album = db.entry_get (entry, rhythmdb.PROP_ALBUM) or ""
 
 		# replace quote characters
 		# don't replace single quote: could be important punctuation
Index: plugins/audioscrobbler/rb-audioscrobbler.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/plugins/audioscrobbler/rb-audioscrobbler.c,v
retrieving revision 1.29
diff -u -p -r1.29 rb-audioscrobbler.c
--- plugins/audioscrobbler/rb-audioscrobbler.c	21 Sep 2006 21:37:22 -0000	1.29
+++ plugins/audioscrobbler/rb-audioscrobbler.c	2 Oct 2006 01:42:37 -0000
@@ -421,10 +421,7 @@ rb_audioscrobbler_timeout_cb (RBAudioscr
 				rb_debug ("Adding song to queue");
 
 				entry->artist = soup_uri_encode (audioscrobbler->priv->artist, EXTRA_URI_ENCODE_CHARS);
-				if (strcmp (audioscrobbler->priv->album, _("Unknown")) != 0)
-					entry->album = soup_uri_encode (audioscrobbler->priv->album, EXTRA_URI_ENCODE_CHARS);
-				else
-					entry->album = g_strdup ("");
+				entry->album = soup_uri_encode (audioscrobbler->priv->album, EXTRA_URI_ENCODE_CHARS);
 				entry->title = soup_uri_encode (audioscrobbler->priv->title, EXTRA_URI_ENCODE_CHARS);
 				entry->mbid = soup_uri_encode (audioscrobbler->priv->mbid, EXTRA_URI_ENCODE_CHARS);
 				entry->length = audioscrobbler->priv->duration;
@@ -1026,8 +1023,8 @@ rb_audioscrobbler_song_changed_cb (RBShe
 
 	/* Ignore tracks that violate the specification (v1.1) */
 	if (audioscrobbler->priv->duration < 30 ||
-	    ! strcmp (audioscrobbler->priv->artist, _("Unknown")) ||
-	    ! strcmp (audioscrobbler->priv->title, _("Unknown"))) {
+	    ! strcmp (audioscrobbler->priv->artist, "") ||
+	    ! strcmp (audioscrobbler->priv->title, "")) {
 		audioscrobbler->priv->should_queue = FALSE;
 	} else if (time < 15) {
 		/* even if it's the same song, it's being played again from
Index: podcast/rb-feed-podcast-properties-dialog.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/podcast/rb-feed-podcast-properties-dialog.c,v
retrieving revision 1.12
diff -u -p -r1.12 rb-feed-podcast-properties-dialog.c
--- podcast/rb-feed-podcast-properties-dialog.c	14 Jul 2006 12:28:24 -0000	1.12
+++ podcast/rb-feed-podcast-properties-dialog.c	2 Oct 2006 01:42:37 -0000
@@ -55,7 +55,6 @@ static void rb_feed_podcast_properties_d
 static void rb_feed_podcast_properties_dialog_update_last_episode (RBFeedPodcastPropertiesDialog *dialog);
 static void rb_feed_podcast_properties_dialog_update_copyright (RBFeedPodcastPropertiesDialog *dialog);
 static void rb_feed_podcast_properties_dialog_update_summary (RBFeedPodcastPropertiesDialog *dialog);
-static gchar* rb_feed_podcast_properties_dialog_parse_time (gulong time);
 
 struct RBFeedPodcastPropertiesDialogPrivate
 {
@@ -266,7 +265,7 @@ rb_feed_podcast_properties_dialog_update
 	gulong time_val;
 
 	time_val = rhythmdb_entry_get_ulong (dialog->priv->current_entry, RHYTHMDB_PROP_LAST_SEEN);
-	time_str = rb_feed_podcast_properties_dialog_parse_time (time_val);
+	time_str = rb_utf_friendly_time ((time_t)time_val);
 	gtk_label_set (GTK_LABEL (dialog->priv->last_update), time_str);
 	g_free (time_str);
 }
@@ -278,7 +277,7 @@ rb_feed_podcast_properties_dialog_update
 	gulong time_val;
 
 	time_val = rhythmdb_entry_get_ulong (dialog->priv->current_entry, RHYTHMDB_PROP_POST_TIME);
-	time_str = rb_feed_podcast_properties_dialog_parse_time (time_val);
+	time_str = rb_utf_friendly_time ((time_t)time_val);
 	gtk_label_set (GTK_LABEL (dialog->priv->last_episode), time_str);
 	g_free (time_str);
 }
@@ -292,16 +291,3 @@ rb_feed_podcast_properties_dialog_update
 	gtk_label_set (GTK_LABEL (dialog->priv->summary), summary);
 }
 
-static char *
-rb_feed_podcast_properties_dialog_parse_time (gulong value)
-{
-	char *str;
-
-	if (0 == value) {
-		str = g_strdup (_("Unknown"));
-	} else {
-		str = rb_utf_friendly_time ((time_t)value);
-	}
-
-	return str;
-}
Index: podcast/rb-podcast-manager.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/podcast/rb-podcast-manager.c,v
retrieving revision 1.59
diff -u -p -r1.59 rb-podcast-manager.c
--- podcast/rb-podcast-manager.c	24 Sep 2006 12:31:49 -0000	1.59
+++ podcast/rb-podcast-manager.c	2 Oct 2006 01:42:37 -0000
@@ -1501,7 +1501,7 @@ rb_podcast_manager_insert_feed (RBPodcas
 		if (data->author)
 			g_value_set_string (&author_val, (gchar *) data->author);
 		else
-			g_value_set_static_string (&author_val, _("Unknown"));
+			g_value_set_static_string (&author_val, "");
 		rhythmdb_entry_set (db, entry, RHYTHMDB_PROP_ARTIST, &author_val);
 		g_value_unset (&author_val);
 
Index: podcast/rb-podcast-properties-dialog.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/podcast/rb-podcast-properties-dialog.c,v
retrieving revision 1.12
diff -u -p -r1.12 rb-podcast-properties-dialog.c
--- podcast/rb-podcast-properties-dialog.c	17 Jul 2006 14:51:57 -0000	1.12
+++ podcast/rb-podcast-properties-dialog.c	2 Oct 2006 01:42:38 -0000
@@ -67,7 +67,6 @@ static void rb_podcast_properties_dialog
 static void rb_podcast_properties_dialog_update_rating (RBPodcastPropertiesDialog *dialog);
 static void rb_podcast_properties_dialog_update_date (RBPodcastPropertiesDialog *dialog);
 static void rb_podcast_properties_dialog_update_description (RBPodcastPropertiesDialog *dialog);
-static gchar* rb_podcast_properties_dialog_parse_time (gulong time);
 static void rb_podcast_properties_dialog_rated_cb (RBRating *rating,
 						   double score,
 						   RBPodcastPropertiesDialog *dialog);
@@ -477,7 +476,7 @@ rb_podcast_properties_dialog_update_date
 	char *time;
 
 	post_time = rhythmdb_entry_get_ulong (dialog->priv->current_entry, RHYTHMDB_PROP_POST_TIME);
-	time = rb_podcast_properties_dialog_parse_time (post_time);
+	time = rb_utf_friendly_time ((time_t)post_time);
 
 	gtk_label_set (GTK_LABEL (dialog->priv->date),
 		       time);
@@ -493,16 +492,3 @@ rb_podcast_properties_dialog_update_desc
 	gtk_label_set (GTK_LABEL (dialog->priv->description), str);
 }
 
-static char *
-rb_podcast_properties_dialog_parse_time (gulong value)
-{
-	char *str;
-
-	if (0 == value) {
-		str = g_strdup (_("Unknown"));
-	} else {
-		str = rb_utf_friendly_time ((time_t)value);
-	}
-
-	return str;
-}
Index: rhythmdb/rb-refstring.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rb-refstring.c,v
retrieving revision 1.18
diff -u -p -r1.18 rb-refstring.c
--- rhythmdb/rb-refstring.c	27 Jul 2006 07:45:08 -0000	1.18
+++ rhythmdb/rb-refstring.c	2 Oct 2006 01:42:38 -0000
@@ -63,6 +63,9 @@ rb_refstring_new (const char *init)
 {
 	RBRefString *ret;
 
+	if (init == NULL)
+		return NULL;
+
 	g_mutex_lock (rb_refstrings_mutex);
 	ret = g_hash_table_lookup (rb_refstrings, init);
 
Index: rhythmdb/rhythmdb-tree.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb-tree.c,v
retrieving revision 1.122
diff -u -p -r1.122 rhythmdb-tree.c
--- rhythmdb/rhythmdb-tree.c	30 Sep 2006 01:22:22 -0000	1.122
+++ rhythmdb/rhythmdb-tree.c	2 Oct 2006 01:42:38 -0000
@@ -99,7 +99,7 @@ static void rhythmdb_hash_tree_foreach (
 					RBTreePropertyItFunc genres_func,
 					gpointer data);
 
-#define RHYTHMDB_TREE_XML_VERSION "1.3"
+#define RHYTHMDB_TREE_XML_VERSION "1.4"
 
 static void destroy_tree_property (RhythmDBTreeProperty *prop);
 static RhythmDBTreeProperty *get_or_create_album (RhythmDBTree *db, RhythmDBTreeProperty *artist,
@@ -321,6 +321,9 @@ rhythmdb_tree_parser_start_element (stru
 						rb_debug ("reloading all file metadata to get MusicBrainz tags");
 						ctx->reload_all_metadata = TRUE;
 					} else if (!strcmp (version, "1.3")) {
+						rb_debug ("reloading all file metadata for 'Unkown' to '' transition");
+						ctx->reload_all_metadata = TRUE;
+					} else if (!strcmp (version, "1.4")) {
 						/* current version*/
 					} else {
 						g_set_error (ctx->error,
@@ -701,7 +704,9 @@ save_entry_string (struct RhythmDBTreeSa
 {
 	xmlChar *encoded;
 
-	g_return_if_fail (str != NULL);
+	if (str == NULL || strcmp (str, ""))
+		return;
+
 	write_elt_name_open (ctx, elt_name);
 	encoded	= xmlEncodeEntitiesReentrant (NULL, BAD_CAST str);
 	RHYTHMDB_FWRITE (encoded, 1, xmlStrlen (encoded), ctx->handle, ctx->error);
@@ -1117,19 +1122,19 @@ rhythmdb_tree_entry_new_internal (Rhythm
 
 	if (entry->title == NULL) {
 		g_warning ("Entry %s has missing title", rb_refstring_get (entry->location));
-		entry->title = rb_refstring_new (_("Unknown"));
+		entry->title = rb_refstring_new ("");
 	}
 	if (entry->artist == NULL) {
 		g_warning ("Entry %s has missing artist", rb_refstring_get (entry->location));
-		entry->artist = rb_refstring_new (_("Unknown"));
+		entry->artist = rb_refstring_new ("");
 	}
 	if (entry->album == NULL) {
 		g_warning ("Entry %s has missing album", rb_refstring_get (entry->location));
-		entry->album = rb_refstring_new (_("Unknown"));
+		entry->album = rb_refstring_new ("");
 	}
 	if (entry->genre == NULL) {
 		g_warning ("Entry %s has missing genre", rb_refstring_get (entry->location));
-		entry->genre = rb_refstring_new (_("Unknown"));
+		entry->genre = rb_refstring_new ("");
 	}
 	if (entry->mimetype == NULL) {
 		g_warning ("Entry %s has missing mimetype", rb_refstring_get (entry->location));
Index: rhythmdb/rhythmdb.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb.c,v
retrieving revision 1.251
diff -u -p -r1.251 rhythmdb.c
--- rhythmdb/rhythmdb.c	20 Sep 2006 22:54:10 -0000	1.251
+++ rhythmdb/rhythmdb.c	2 Oct 2006 01:42:39 -0000
@@ -1256,7 +1256,7 @@ set_metadata_string_default_unknown (Rhy
 				     RBMetaDataField field,
 				     RhythmDBPropType prop)
 {
-	const char *unknown = _("Unknown");
+	const char *unknown = "";
 	GValue val = {0, };
 
 	if (!(rb_metadata_get (metadata,
@@ -1747,7 +1747,7 @@ rhythmdb_process_metadata_load (RhythmDB
 	if (eel_gconf_get_boolean (CONF_MONITOR_LIBRARY) && event->entry_type == RHYTHMDB_ENTRY_TYPE_SONG)
 		rhythmdb_monitor_uri_path (db, rb_refstring_get (entry->location), NULL);
 
-	rhythmdb_add_timeout_commit (db, FALSE);
+	rhythmdb_commit_internal (db, FALSE, g_thread_self ());
 
 	return TRUE;
 }
@@ -2540,16 +2540,8 @@ record_entry_change (RhythmDB *db,
 	changedata = g_new0 (RhythmDBEntryChange, 1);
 	changedata->prop = propid;
 
-	/* Copy a temporary gvalue, since _entry_get uses
-	 * _set_static_string to avoid memory allocations. */
-	{
-		GValue tem = {0,};
-		g_value_init (&tem, G_VALUE_TYPE (value));
-		rhythmdb_entry_get (db, entry, propid, &tem);
-		g_value_init (&changedata->old, G_VALUE_TYPE (value));
-		g_value_copy (&tem, &changedata->old);
-		g_value_unset (&tem);
-	}
+	g_value_init (&changedata->old, rhythmdb_get_property_type (db, propid));
+	rhythmdb_entry_get (db, entry, propid, &changedata->old);
 	g_value_init (&changedata->new, G_VALUE_TYPE (value));
 	g_value_copy (value, &changedata->new);
 
@@ -2572,13 +2564,29 @@ rhythmdb_entry_set_internal (RhythmDB *d
 	RhythmDBClass *klass = RHYTHMDB_GET_CLASS (db);
 	gboolean handled;
 	RhythmDBPodcastFields *podcast = NULL;
+	GValue val = {0,};
 
 #ifndef G_DISABLE_ASSERT
 	switch (G_VALUE_TYPE (value)) {
 	case G_TYPE_STRING:
-		/* the playback error is allowed to be NULL */
-		if (propid != RHYTHMDB_PROP_PLAYBACK_ERROR || g_value_get_string (value))
-			g_assert (g_utf8_validate (g_value_get_string (value), -1, NULL));
+		{
+			g_value_init (&val, G_VALUE_TYPE (value));
+			g_value_copy (value, &val);
+			value = &val;
+
+			if (g_value_get_string (value)) {
+				if (!g_utf8_validate (g_value_get_string (&val), -1, NULL)) {
+					rb_debug ("Got invalid UTF-8 data");
+					g_value_set_static_string (&val, _("<Invalid Unicode>"));
+				}
+			} else {
+				/* the playback error is allowed to be NULL */
+				if (propid != RHYTHMDB_PROP_PLAYBACK_ERROR) {
+					g_warning ("Got NULL string");
+					g_value_set_static_string (&val, "");
+				}
+			}
+		}
 		break;
 	case G_TYPE_BOOLEAN:
 	case G_TYPE_ULONG:
Index: shell/rb-shell-player.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/shell/rb-shell-player.c,v
retrieving revision 1.258
diff -u -p -r1.258 rb-shell-player.c
--- shell/rb-shell-player.c	19 Aug 2006 07:59:59 -0000	1.258
+++ shell/rb-shell-player.c	2 Oct 2006 01:42:41 -0000
@@ -2816,9 +2816,7 @@ info_available_cb (RBPlayer *mmplayer,
 
 		/* check if the db entry already has a genre; if so, don't change it */
 		existing = rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_GENRE);
-		if ((existing == NULL) ||
-		    (strcmp (existing, "") == 0) ||
-		    (strcmp (existing, _("Unknown")) == 0)) {
+		if ((existing == NULL) || (strcmp (existing, "") == 0)) {
 			entry_field = RHYTHMDB_PROP_GENRE;
 			rb_debug ("setting genre of iradio station to %s", genre);
 			set_field = TRUE;
Index: sources/rb-audiocd-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-audiocd-source.c,v
retrieving revision 1.45
diff -u -p -r1.45 rb-audiocd-source.c
--- sources/rb-audiocd-source.c	2 Sep 2006 13:41:17 -0000	1.45
+++ sources/rb-audiocd-source.c	2 Oct 2006 01:42:41 -0000
@@ -139,7 +139,7 @@ rb_audiocd_source_constructor (GType typ
 	source = RB_AUDIOCD_SOURCE (G_OBJECT_CLASS (rb_audiocd_source_parent_class)->
 			constructor (type, n_construct_properties, construct_properties));
 
-	g_object_set (G_OBJECT (source), "name", "Unknown Audio", NULL);
+	g_object_set (G_OBJECT (source), "name", _("Unknown Audio CD"), NULL);
 
 	/* we want audio cds to sort by track# by default */
 	entry_view = rb_source_get_entry_view (RB_SOURCE (source));
@@ -195,14 +195,6 @@ entry_set_string_prop (RhythmDB *db,
 		       const char *str)
 {
 	GValue value = {0,};
-
-	if (!str)
-		str = _("Unknown");
-
-	if (!g_utf8_validate (str, -1, NULL)) {
-		rb_debug ("Got invalid UTF-8 tag data");
-		str = _("<Invalid unicode>");
-	}
 
 	g_value_init (&value, G_TYPE_STRING);
 	g_value_set_string (&value, str);
Index: sources/rb-ipod-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-ipod-source.c,v
retrieving revision 1.63
diff -u -p -r1.63 rb-ipod-source.c
--- sources/rb-ipod-source.c	13 Sep 2006 22:21:47 -0000	1.63
+++ sources/rb-ipod-source.c	2 Oct 2006 01:42:41 -0000
@@ -228,11 +228,11 @@ entry_set_string_prop (RhythmDB *db, Rhy
 {
 	GValue value = {0,};
 
-	if (!str)
-		str = _("Unknown");
-
 	g_value_init (&value, G_TYPE_STRING);
-	g_value_set_static_string (&value, str);
+	if (str)
+		g_value_set_string (&value, str);
+	else
+		g_value_set_static_string (&value, "");
 	rhythmdb_entry_set (RHYTHMDB (db), entry, propid, &value);
 	g_value_unset (&value);
 }
Index: sources/rb-iradio-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-iradio-source.c,v
retrieving revision 1.130
diff -u -p -r1.130 rb-iradio-source.c
--- sources/rb-iradio-source.c	14 Aug 2006 09:03:24 -0000	1.130
+++ sources/rb-iradio-source.c	2 Oct 2006 01:42:41 -0000
@@ -479,9 +479,10 @@ rb_iradio_source_add_station (RBIRadioSo
 	rhythmdb_entry_set (source->priv->db, entry, RHYTHMDB_PROP_TITLE, &val);
 	g_value_reset (&val);
 
-	if ((!genre) || (strcmp (genre, "") == 0))
-		genre = _("Unknown");
-	g_value_set_string (&val, genre);
+	if (genre)
+		g_value_set_string (&val, genre);
+	else
+		g_value_set_static_string (&val, "");
 	rhythmdb_entry_set (source->priv->db, entry, RHYTHMDB_PROP_GENRE, &val);
 	g_value_unset (&val);
 
Index: widgets/rb-entry-view.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/widgets/rb-entry-view.c,v
retrieving revision 1.159
diff -u -p -r1.159 rb-entry-view.c
--- widgets/rb-entry-view.c	14 Sep 2006 12:13:32 -0000	1.159
+++ widgets/rb-entry-view.c	2 Oct 2006 01:42:42 -0000
@@ -773,7 +773,7 @@ rb_entry_view_year_cell_data_func (GtkTr
 		g_object_set (renderer, "text", str, NULL);
 		g_date_free (date);
 	} else {
-		g_object_set (renderer, "text", _("Unknown"), NULL);
+		g_object_set (renderer, "text", "", NULL);
 	}
 
 	rhythmdb_entry_unref (entry);
@@ -1094,7 +1094,6 @@ rb_entry_view_append_column (RBEntryView
 		key = "Year";
 		strings[0] = title;
 		strings[1] = "0000";
-		strings[2] = _("Unknown");
 		break;
 	case RB_ENTRY_VIEW_COL_QUALITY:
 		propid = RHYTHMDB_PROP_BITRATE;
Index: widgets/rb-song-info.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/widgets/rb-song-info.c,v
retrieving revision 1.70
diff -u -p -r1.70 rb-song-info.c
--- widgets/rb-song-info.c	17 Aug 2006 21:43:55 -0000	1.70
+++ widgets/rb-song-info.c	2 Oct 2006 01:42:42 -0000
@@ -729,7 +729,7 @@ rb_song_info_populate_num_field (GtkEntr
 	if (num > 0)
 		tmp = g_strdup_printf ("%.2ld", num);
 	else
-		tmp = g_strdup (_("Unknown"));
+		tmp = g_strdup ("");
 	gtk_entry_set_text (field, tmp);
 	g_free (tmp);
 }
@@ -1163,7 +1163,7 @@ rb_song_info_update_year (RBSongInfo *so
 	if (year > 0) {
 		text = g_strdup_printf ("%lu", year);
 	} else {
-		text = g_strdup (_("Unknown"));
+		text = g_strdup ("");
 	}
 	gtk_entry_set_text (GTK_ENTRY (song_info->priv->year), text);
 	g_free (text);
