Solve the msgctxt problem a bit more elegantly, and add some hints about
* gtk/gtkstock.c: Solve the msgctxt problem a bit more
        elegantly, and add some hints about this to the docs of
        gtk_stock_set_translate_func. Proposed by Christian Persch
svn path=/trunk/; revision=22137
			
			
This commit is contained in:
		@ -1,3 +1,11 @@
 | 
			
		||||
2009-01-18  Matthias Clasen  <mclasen@redhat.com>
 | 
			
		||||
 | 
			
		||||
	Bug 563280 – stock items & translation context
 | 
			
		||||
 | 
			
		||||
	* gtk/gtkstock.c: Solve the msgctxt problem a bit more
 | 
			
		||||
	elegantly, and add some hints about this to the docs of
 | 
			
		||||
	gtk_stock_set_translate_func. Proposed by Christian Persch
 | 
			
		||||
 | 
			
		||||
2009-01-18  Matthias Clasen  <mclasen@redhat.com>
 | 
			
		||||
 | 
			
		||||
	Bug 568196 – Please change context of Forward stock label
 | 
			
		||||
 | 
			
		||||
@ -425,12 +425,40 @@ static const GtkStockItem builtin_items [] =
 | 
			
		||||
 *
 | 
			
		||||
 * Sets a function to be used for translating the @label of 
 | 
			
		||||
 * a stock item.
 | 
			
		||||
 *
 | 
			
		||||
 * 
 | 
			
		||||
 * If no function is registered for a translation domain,
 | 
			
		||||
 * g_dgettext() is used.
 | 
			
		||||
 *
 | 
			
		||||
 * Since: 2.8
 | 
			
		||||
 * 
 | 
			
		||||
 * The function is used for all stock items whose
 | 
			
		||||
 * @translation_domain matches @domain. Note that it is possible
 | 
			
		||||
 * to use strings different from the actual gettext translation domain
 | 
			
		||||
 * of your application for this, as long as your #GtkTranslateFunc uses
 | 
			
		||||
 * the correct domain when calling dgettext(). This can be useful, e.g.
 | 
			
		||||
 * when dealing with message contexts:
 | 
			
		||||
 *
 | 
			
		||||
 * |[
 | 
			
		||||
 * GtkStockItem items[] = { 
 | 
			
		||||
 *  { MY_ITEM1, NC_("odd items", "Item 1"), 0, 0, "odd-item-domain" },
 | 
			
		||||
 *  { MY_ITEM2, NC_("even items", "Item 2"), 0, 0, "even-item-domain" },
 | 
			
		||||
 * };
 | 
			
		||||
 *
 | 
			
		||||
 * gchar *
 | 
			
		||||
 * my_translate_func (const gchar *msgid,
 | 
			
		||||
 *                    gpointer     data)
 | 
			
		||||
 * {
 | 
			
		||||
 *   gchar *msgctxt = data;
 | 
			
		||||
 * 
 | 
			
		||||
 *   return (gchar*)g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msgid);
 | 
			
		||||
 * }
 | 
			
		||||
 *
 | 
			
		||||
 * /* ... &ast/
 | 
			
		||||
 *
 | 
			
		||||
 * gtk_stock_add (items, G_N_ELEMENTS (items));
 | 
			
		||||
 * gtk_stock_set_translate_func ("odd-item-domain", my_translate_func, "odd-item-domain"); 
 | 
			
		||||
 * gtk_stock_set_translate_func ("even-item-domain", my_translate_func, "even-item-domain"); 
 | 
			
		||||
 * ]|
 | 
			
		||||
 * 
 | 
			
		||||
 * Since: 2.8
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gtk_stock_set_translate_func (const gchar      *domain,
 | 
			
		||||
@ -465,24 +493,11 @@ static gchar *
 | 
			
		||||
sgettext_swapped (const gchar *msgid, 
 | 
			
		||||
		  gpointer     data)
 | 
			
		||||
{
 | 
			
		||||
  return (gchar *)g_dpgettext2 ((const char *)data, "Stock label", msgid);
 | 
			
		||||
}
 | 
			
		||||
  gchar *msgctxt = data;
 | 
			
		||||
 | 
			
		||||
static gchar *
 | 
			
		||||
sgettext_swapped_navigation (const gchar *msgid, 
 | 
			
		||||
		             gpointer     data)
 | 
			
		||||
{
 | 
			
		||||
  return (gchar *)g_dpgettext2 ((const char *)data, "Stock label, navigation", msgid);
 | 
			
		||||
  return (gchar *)g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msgid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gchar *
 | 
			
		||||
sgettext_swapped_media (const gchar *msgid, 
 | 
			
		||||
		        gpointer     data)
 | 
			
		||||
{
 | 
			
		||||
  return (gchar *)g_dpgettext2 ((const char *)data, "Stock label, media", msgid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
init_stock_hash (void)
 | 
			
		||||
{
 | 
			
		||||
@ -500,15 +515,15 @@ init_stock_hash (void)
 | 
			
		||||
 | 
			
		||||
      gtk_stock_set_translate_func (GETTEXT_PACKAGE, 
 | 
			
		||||
				    sgettext_swapped,
 | 
			
		||||
				    GETTEXT_PACKAGE,
 | 
			
		||||
				    "Stock label",
 | 
			
		||||
				    NULL);
 | 
			
		||||
      gtk_stock_set_translate_func (GETTEXT_PACKAGE "-navigation", 
 | 
			
		||||
				    sgettext_swapped_navigation,
 | 
			
		||||
				    GETTEXT_PACKAGE,
 | 
			
		||||
				    sgettext_swapped,
 | 
			
		||||
				    "Stock label, navigation",
 | 
			
		||||
				    NULL);
 | 
			
		||||
      gtk_stock_set_translate_func (GETTEXT_PACKAGE "-media", 
 | 
			
		||||
				    sgettext_swapped_media,
 | 
			
		||||
				    GETTEXT_PACKAGE,
 | 
			
		||||
				    sgettext_swapped,
 | 
			
		||||
				    "Stock label, media",
 | 
			
		||||
				    NULL);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user