Index: src/prefs-dialog.c
===================================================================
--- src/prefs-dialog.c	(revision 8605)
+++ src/prefs-dialog.c	(working copy)
@@ -623,32 +623,26 @@
 
 		if (localename != NULL)
 		{
-			/* Translators: The text before the "|" is context to help you decide on
-			 * the correct translation. You MUST OMIT it in the translated string.
-			 * Translators: the first %s is the language name, and the
+			/* Translators: the first %s is the language name, and the
 			 * second %s is the locale name. Example:
 			 * "French (France)"
 			 */
-			name = g_strdup_printf (Q_("language|%s (%s)"),
+			name = g_strdup_printf (C_("language", "%s (%s)"),
 						dgettext (ISO_639_DOMAIN, langname),
 						dgettext (ISO_3166_DOMAIN, localename));
 		}
 		else
 		{
-			/* Translators: The text before the "|" is context to help you decide on
-			 * the correct translation. You MUST OMIT it in the translated string. */
-			name = g_strdup_printf (Q_("language|%s (%s)"),
+			name = g_strdup_printf (C_("language", "%s (%s)"),
 						dgettext (ISO_639_DOMAIN, langname), str[1]);
 		}
 	}
 	else
 	{
-		/* Translators: The text before the "|" is context to help you decide on
-		 * the correct translation. You MUST OMIT it in the translated string.
-		 * Translators: this refers to a user-define language code
+		/* Translators: this refers to a user-define language code
 		 * (one which isn't in our built-in list).
 		 */
-		name = g_strdup_printf (Q_("language|User defined (%s)"), code);
+		name = g_strdup_printf (C_("language", "User defined (%s)"), code);
 	}
 
 	g_strfreev (str);
Index: src/bookmarks/ephy-bookmarks.c
===================================================================
--- src/bookmarks/ephy-bookmarks.c	(revision 8605)
+++ src/bookmarks/ephy-bookmarks.c	(working copy)
@@ -1217,32 +1217,20 @@
 {
 	EphyNodeDb *db;
 
-	/* Translators: The text before the "|" is context to help you
-	 * decide on the correct translation. You MUST OMIT it in the
-	 * translated string. */
 	/* Translators: this topic contains all bookmarks */
-	const char *bk_all = Q_("bookmarks|All");
+	const char *bk_all = C_("bookmarks", "All");
 
-	/* Translators: The text before the "|" is context to help you
-	 * decide on the correct translation. You MUST OMIT it in the
-	 * translated string. */
 	/* Translators: this topic contains the most used bookmarks */
-	const char *bk_most_visited = Q_("bookmarks|Most Visited");
+	const char *bk_most_visited = C_("bookmarks", "Most Visited");
 
-	/* Translators: The text before the "|" is context to help you
-	 * decide on the correct translation. You MUST OMIT it in the
-	 * translated string. */
 	/* Translators: this topic contains the not categorized
 	   bookmarks */
-	const char *bk_not_categorized = Q_("bookmarks|Not Categorized");
+	const char *bk_not_categorized = C_("bookmarks", "Not Categorized");
 	
-#ifdef ENABLE_ZEROCONF	
-	/* Translators: The text before the "|" is context to help you
-	 * decide on the correct translation. You MUST OMIT it in the
-	 * translated string. */
+#ifdef ENABLE_ZEROCONF
 	/* Translators: this is an automatic topic containing local
 	 * websites bookmarks autodiscovered with zeroconf. */
-	const char *bk_local_sites = Q_("bookmarks|Nearby Sites");
+	const char *bk_local_sites = C_("bookmarks", "Nearby Sites");
 #endif
 
 	eb->priv = EPHY_BOOKMARKS_GET_PRIVATE (eb);
Index: src/ephy-toolbar-editor.c
===================================================================
--- src/ephy-toolbar-editor.c	(revision 8605)
+++ src/ephy-toolbar-editor.c	(working copy)
@@ -69,14 +69,12 @@
 }
 toolbar_styles [] =
 {
-	{ /* Translators: The text before the "|" is context to help you decide on
-	   * the correct translation. You MUST OMIT it in the translated string. */
-	  N_("toolbar style|Default"), 0, FALSE },
+	{ NC_("toolbar style", "Default"), 0, FALSE },
 	{ NULL /* separator row */, 0, FALSE },
-	{ N_("Text below icons"), EGG_TB_MODEL_BOTH, TRUE },
-	{ N_("Text beside icons"), EGG_TB_MODEL_BOTH_HORIZ, TRUE },
-	{ N_("Icons only"), EGG_TB_MODEL_ICONS, TRUE },
-	{ N_("Text only"), EGG_TB_MODEL_TEXT, TRUE }
+	{ NC_("toolbar style", "Text below icons"), EGG_TB_MODEL_BOTH, TRUE },
+	{ NC_("toolbar style", "Text beside icons"), EGG_TB_MODEL_BOTH_HORIZ, TRUE },
+	{ NC_("toolbar style", "Icons only"), EGG_TB_MODEL_ICONS, TRUE },
+	{ NC_("toolbar style", "Text only"), EGG_TB_MODEL_TEXT, TRUE }
 };
 
 enum
@@ -217,7 +215,7 @@
 
 		if (text != NULL)
 		{
-			tr_text= Q_(text);
+			tr_text = g_dpgettext2 (NULL, "toolbar style", text);
 		}
 
 		gtk_list_store_append (store, &iter);
Index: configure.ac
===================================================================
--- configure.ac	(revision 8605)
+++ configure.ac	(working copy)
@@ -101,7 +101,7 @@
 	GECKO_WARN_CXXFLAGS="-Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth $GECKO_WARN_CXXFLAGS"
 fi
 
-GLIB_REQUIRED=2.16.0
+GLIB_REQUIRED=2.18.0
 GTK_REQUIRED=2.13.5
 LIBXML_REQUIRED=2.6.12
 LIBXSLT_REQUIRED=1.1.7
Index: lib/ephy-langs.c
===================================================================
--- lib/ephy-langs.c	(revision 8605)
+++ lib/ephy-langs.c	(working copy)
@@ -35,84 +35,32 @@
  */
 static const EphyFontsLanguageInfo font_languages [] =
 {
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Arabic"),				"ar" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Baltic"),				"x-baltic" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Central European"),			"x-central-euro" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Cyrillic"),				"x-cyrillic" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Devanagari"),				"x-devanagari" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Greek"),					"el" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Hebrew"),				"he" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Japanese"),				"ja" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Korean"),				"ko" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Simplified Chinese"),			"zh-CN" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Tamil"),					"x-tamil" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Thai"),					"th" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Traditional Chinese"),			"zh-TW" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Traditional Chinese (Hong Kong)"),	"zh-HK" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Turkish"),				"tr" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Armenian"),				"x-armn" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Bengali"),				"x-beng" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Unified Canadian Syllabics"),		"x-cans" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Ethiopic"),				"x-ethi" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Georgian"),				"x-geor" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Gujarati"),				"x-gujr" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Gurmukhi"),				"x-guru" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Khmer"),					"x-khmr" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Malayalam"),				"x-mlym" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Western"),				"x-western" },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("select fonts for|Other Scripts"),				"x-unicode" }
+	{ NC_("select fonts for", "Arabic"),				"ar" },
+	{ NC_("select fonts for", "Baltic"),				"x-baltic" },
+	{ NC_("select fonts for", "Central European"),			"x-central-euro" },
+	{ NC_("select fonts for", "Cyrillic"),				"x-cyrillic" },
+	{ NC_("select fonts for", "Devanagari"),			"x-devanagari" },
+	{ NC_("select fonts for", "Greek"),				"el" },
+	{ NC_("select fonts for", "Hebrew"),				"he" },
+	{ NC_("select fonts for", "Japanese"),				"ja" },
+	{ NC_("select fonts for", "Korean"),				"ko" },
+	{ NC_("select fonts for", "Simplified Chinese"),		"zh-CN" },
+	{ NC_("select fonts for", "Tamil"),				"x-tamil" },
+	{ NC_("select fonts for", "Thai"),				"th" },
+	{ NC_("select fonts for", "Traditional Chinese"),		"zh-TW" },
+	{ NC_("select fonts for", "Traditional Chinese (Hong Kong)"),	"zh-HK" },
+	{ NC_("select fonts for", "Turkish"),				"tr" },
+	{ NC_("select fonts for", "Armenian"),				"x-armn" },
+	{ NC_("select fonts for", "Bengali"),				"x-beng" },
+	{ NC_("select fonts for", "Unified Canadian Syllabics"),	"x-cans" },
+	{ NC_("select fonts for", "Ethiopic"),				"x-ethi" },
+	{ NC_("select fonts for", "Georgian"),				"x-geor" },
+	{ NC_("select fonts for", "Gujarati"),				"x-gujr" },
+	{ NC_("select fonts for", "Gurmukhi"),				"x-guru" },
+	{ NC_("select fonts for", "Khmer"),				"x-khmr" },
+	{ NC_("select fonts for", "Malayalam"),				"x-mlym" },
+	{ NC_("select fonts for", "Western"),				"x-western" },
+	{ NC_("select fonts for", "Other Scripts"),			"x-unicode" }
 };
 
 const EphyFontsLanguageInfo *
Index: embed/downloader-view.c
===================================================================
--- embed/downloader-view.c	(revision 8605)
+++ embed/downloader-view.c	(working copy)
@@ -674,22 +674,16 @@
 	switch (state)
 	{
 		case EPHY_DOWNLOAD_INITIALISING:
-			/* Translators: The text before the "|" is context to help you decide on
-			 * the correct translation. You MUST OMIT it in the translated string. */
-			text = Q_("download status|Unknown");
+			text = C_("download status", "Unknown");
 			break;
 		case EPHY_DOWNLOAD_FAILED:
-			/* Translators: The text before the "|" is context to help you decide on
-			 * the correct translation. You MUST OMIT it in the translated string. */
-			text = Q_("download status|Failed");
+			text = C_("download status", "Failed");
 			break;
 		case EPHY_DOWNLOAD_DOWNLOADING:
 		case EPHY_DOWNLOAD_PAUSED:
 			if (percent == -1)
 			{
-				/* Translators: The text before the "|" is context to help you decide on
-				 * the correct translation. You MUST OMIT it in the translated string. */
-				text = Q_("download status|Unknown");
+				text = C_("download status", "Unknown");
 				percent = 0;
 			}
 			break;
Index: embed/ephy-encodings.c
===================================================================
--- embed/ephy-encodings.c	(revision 8605)
+++ embed/ephy-encodings.c	(working copy)
@@ -141,36 +141,16 @@
 	{ N_("Unicode (UTF-_32 BE)"),               "UTF-32BE",              0,			FALSE },
 	{ N_("Unicode (UTF-3_2 LE)"),               "UTF-32LE",              0,			FALSE },
 
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("autodetectors|Off"),						    "",				   LG_NONE,								TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Chinese"),		    "zh_parallel_state_machine",   LG_CHINESE_TRAD | LG_CHINESE_SIMP,					TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Simplified Chinese"),    "zhcn_parallel_state_machine", LG_CHINESE_SIMP,							TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Traditional Chinese"),   "zhtw_parallel_state_machine", LG_CHINESE_TRAD,							TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|East Asian"),	    "cjk_parallel_state_machine",  LG_CHINESE_TRAD | LG_CHINESE_SIMP | LG_JAPANESE | LG_KOREAN,		TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Japanese"),		    "ja_parallel_state_machine",   LG_JAPANESE,								TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Korean"),		    "ko_parallel_state_machine",   LG_KOREAN,								TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Russian"),		    "ruprob",			   LG_CYRILLIC | LG_UKRAINIAN,						TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Universal"),	   	    "universal_charset_detector",  LG_ALL,								TRUE },
-	/* Translators: The text before the "|" is context to help you decide on
-	 * the correct translation. You MUST OMIT it in the translated string. */
-	{ N_("automatically detect ... character encodings|Ukrainian"),	   	    "ukprob",			   LG_UKRAINIAN,							TRUE }
+	{ NC_("automatically detect ... character encodings", "Off"),			    "",				   LG_NONE,								TRUE },
+	{ NC_("automatically detect ... character encodings", "Chinese"),		    "zh_parallel_state_machine",   LG_CHINESE_TRAD | LG_CHINESE_SIMP,					TRUE },
+	{ NC_("automatically detect ... character encodings", "Simplified Chinese"),	    "zhcn_parallel_state_machine", LG_CHINESE_SIMP,							TRUE },
+	{ NC_("automatically detect ... character encodings", "Traditional Chinese"),	    "zhtw_parallel_state_machine", LG_CHINESE_TRAD,							TRUE },
+	{ NC_("automatically detect ... character encodings", "East Asian"),		    "cjk_parallel_state_machine",  LG_CHINESE_TRAD | LG_CHINESE_SIMP | LG_JAPANESE | LG_KOREAN,		TRUE },
+	{ NC_("automatically detect ... character encodings", "Japanese"),		    "ja_parallel_state_machine",   LG_JAPANESE,								TRUE },
+	{ NC_("automatically detect ... character encodings", "Korean"),		    "ko_parallel_state_machine",   LG_KOREAN,								TRUE },
+	{ NC_("automatically detect ... character encodings", "Russian"),		    "ruprob",			   LG_CYRILLIC | LG_UKRAINIAN,						TRUE },
+	{ NC_("automatically detect ... character encodings", "Universal"),	   	    "universal_charset_detector",  LG_ALL,								TRUE },
+	{ NC_("automatically detect ... character encodings", "Ukrainian"),	   	    "ukprob",			   LG_UKRAINIAN,							TRUE }
 };
 static const guint n_encoding_entries = G_N_ELEMENTS (encoding_entries);
 
@@ -464,7 +444,7 @@
 	{
 		add_encoding (encodings,
 			      encoding_entries[i].is_autodetector
-			      	? Q_(encoding_entries[i].title)
+			      	? g_dpgettext2 (NULL, "automatically detect ... character encodings", encoding_entries[i].title)
 			 	: _(encoding_entries[i].title),
 			      encoding_entries[i].code,
 			      encoding_entries[i].groups,
