92bf53bb56e3f52b1af86613111e6038e46f5b10
diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt
index cfc886c..3d5aa47 100644
--- a/docs/reference/glib/glib-sections.txt
+++ b/docs/reference/glib/glib-sections.txt
@@ -2500,6 +2500,7 @@ g_unichar_to_utf8
 Q_
 C_
 N_
+NC_
 g_strip_context
 g_dpgettext
 <SUBSECTION>
diff --git a/docs/reference/glib/tmpl/i18n.sgml b/docs/reference/glib/tmpl/i18n.sgml
index 8ebc454..a29e4e9 100644
--- a/docs/reference/glib/tmpl/i18n.sgml
+++ b/docs/reference/glib/tmpl/i18n.sgml
@@ -115,6 +115,34 @@ To get the translated string, call gettext() at runtime.
 @Since: 2.4
 
 
+<!-- ##### MACRO NC_ ##### -->
+<para>
+Only marks a string for translation, with context.
+This is useful in situations where the translated strings can't
+be directly used, e.g. in string array initializers. 
+To get the translated string, call pgettext() or dpgettext() at runtime.
+</para>
+<informalexample><programlisting>
+     {
+       static const char *messages[] = {
+         NC_("some context", "some very meaningful message"),
+         NC_("some context", "and another one")
+       };
+       const char *string;
+       ...
+       string
+         = index &gt; 1 ? pgettext("some context", "a default message") : pgettext ("some context", messages[index]);
+<!-- -->     
+       fputs (string);
+       ...
+     }
+</programlisting></informalexample>
+
+@Context: a message context, must be a string literal
+@String: a message id, must be a string literal
+@Since: 2.18
+
+
 <!-- ##### FUNCTION g_strip_context ##### -->
 <para>
 
diff --git a/glib/gi18n-lib.h b/glib/gi18n-lib.h
index 0d67017..f038435 100644
--- a/glib/gi18n-lib.h
+++ b/glib/gi18n-lib.h
@@ -32,5 +32,6 @@
 #define Q_(String) g_dpgettext (GETTEXT_PACKAGE, String, 0)
 #define N_(String) (String)
 #define C_(Context,String) g_dpgettext (GETTEXT_PACKAGE, Context "\004" String, strlen (Context) + 1)
+#define NC_(Context, String) (String)
 
 #endif  /* __G_I18N_LIB_H__ */
diff --git a/glib/gi18n.h b/glib/gi18n.h
index 011b52f..b835546 100644
--- a/glib/gi18n.h
+++ b/glib/gi18n.h
@@ -28,5 +28,6 @@
 #define Q_(String) g_dpgettext (NULL, String, 0)
 #define N_(String) (String)
 #define C_(Context,String) g_dpgettext (NULL, Context "\004" String, strlen (Context) + 1)
+#define NC_(Context, String) (String)
 
 #endif  /* __G_I18N_H__ */
