diff -Nurd -x'*~' metacity-2.28.1.orig/configure metacity-2.28.1/configure
--- metacity-2.28.1.orig/configure	2010-01-25 18:57:11.000000000 -0500
+++ metacity-2.28.1/configure	2010-02-23 00:19:42.000000000 -0500
@@ -16060,7 +16060,7 @@
   fi
 fi
 
-METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0 libcanberra-gtk'
+METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0 libcanberra-gtk gthread-2.0'
 
 # Check whether --enable-gconf was given.
 if test "${enable_gconf+set}" = set; then
@@ -21135,8 +21135,8 @@
 
 fi
 
-METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
-METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
+METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm $INTLLIBS"
+METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $INTLLIBS"
 METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
 METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
 
diff -Nurd -x'*~' metacity-2.28.1.orig/src/core/keybindings.c metacity-2.28.1/src/core/keybindings.c
--- metacity-2.28.1.orig/src/core/keybindings.c	2010-01-21 11:09:25.000000000 -0500
+++ metacity-2.28.1/src/core/keybindings.c	2010-02-22 16:34:45.000000000 -0500
@@ -3334,7 +3334,7 @@
                   "No terminal command to run in response to "
 		  "keybinding press\n");
       
-      s = g_strdup_printf (_("No terminal command has been defined.\n"));
+      s = g_strdup_printf ("%s", _("No terminal command has been defined.\n"));
       error_on_command (-1, NULL, s, screen->number, event->xkey.time);
       g_free (s);
       
diff -Nurd -x'*~' metacity-2.28.1.orig/src/core/main.c metacity-2.28.1/src/core/main.c
--- metacity-2.28.1.orig/src/core/main.c	2010-01-21 11:09:25.000000000 -0500
+++ metacity-2.28.1/src/core/main.c	2010-02-22 21:50:17.000000000 -0500
@@ -58,7 +58,7 @@
 
 #include <stdlib.h>
 #include <sys/types.h>
-#include <wait.h>
+#include <sys/wait.h>
 #include <stdio.h>
 #include <string.h>
 #include <signal.h>
diff -Nurd -x'*~' metacity-2.28.1.orig/src/core/prefs.c metacity-2.28.1/src/core/prefs.c
--- metacity-2.28.1.orig/src/core/prefs.c	2010-01-22 16:36:19.000000000 -0500
+++ metacity-2.28.1/src/core/prefs.c	2010-02-22 16:34:45.000000000 -0500
@@ -1231,7 +1231,7 @@
     {
       first_disable = FALSE;
 
-      meta_warning (_("Workarounds for broken applications disabled. "
+      meta_warning ("%s", _("Workarounds for broken applications disabled. "
                       "Some applications may not behave properly.\n"));
     }
 }
diff -Nurd -x'*~' metacity-2.28.1.orig/src/core/session.c metacity-2.28.1/src/core/session.c
--- metacity-2.28.1.orig/src/core/session.c	2010-01-21 11:09:25.000000000 -0500
+++ metacity-2.28.1/src/core/session.c	2010-02-22 16:34:45.000000000 -0500
@@ -1190,7 +1190,7 @@
             {
               g_set_error (error,
                            G_MARKUP_ERROR,
-                       G_MARKUP_ERROR_PARSE,
+                       G_MARKUP_ERROR_PARSE, "%s",
                            _("<metacity_session> attribute seen but we already have the session ID"));
               return;
             }
@@ -1220,7 +1220,7 @@
         {
           g_set_error (error,
                        G_MARKUP_ERROR,
-                       G_MARKUP_ERROR_PARSE,
+                       G_MARKUP_ERROR_PARSE, "%s",
                        _("nested <window> tag"));
           return;
         }
diff -Nurd -x'*~' metacity-2.28.1.orig/src/ui/menu.c metacity-2.28.1/src/ui/menu.c
--- metacity-2.28.1.orig/src/ui/menu.c	2010-01-21 15:03:46.000000000 -0500
+++ metacity-2.28.1/src/ui/menu.c	2010-02-22 16:34:45.000000000 -0500
@@ -210,7 +210,7 @@
        * a copy copy so we can have our wicked way with it.
        */
       if (number == 10)
-        new_name = g_strdup_printf (_("Workspace 1_0"));
+        new_name = g_strdup_printf ("%s", _("Workspace 1_0"));
       else
         new_name = g_strdup_printf (_("Workspace %s%d"),
                                     number < 10 ? "_" : "",
diff -Nurd -x'*~' metacity-2.28.1.orig/src/ui/theme-parser.c metacity-2.28.1/src/ui/theme-parser.c
--- metacity-2.28.1.orig/src/ui/theme-parser.c	2010-01-21 11:09:25.000000000 -0500
+++ metacity-2.28.1/src/ui/theme-parser.c	2010-02-22 16:34:54.000000000 -0500
@@ -1109,7 +1109,7 @@
         }
       else if (alpha != NULL)
         {
-          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("You must specify a background for an alpha value to be meaningful"));
           return;
         }
@@ -1339,7 +1339,7 @@
       if (!(info->layout->button_sizing == META_BUTTON_SIZING_LAST ||
             info->layout->button_sizing == META_BUTTON_SIZING_FIXED))
         {
-          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio\" for buttons"));
           return;      
         }
@@ -1353,7 +1353,7 @@
       if (!(info->layout->button_sizing == META_BUTTON_SIZING_LAST ||
             info->layout->button_sizing == META_BUTTON_SIZING_FIXED))
         {
-          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio\" for buttons"));
           return;      
         }
@@ -1398,7 +1398,7 @@
 
       if (info->layout->button_sizing != META_BUTTON_SIZING_LAST)
         {
-          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("Cannot specify both \"button_width\"/\"button_height\" and \"aspect_ratio\" for buttons"));
           return;
         }
@@ -3143,7 +3143,7 @@
       if (info->op_list)
         {
           set_error (error, context,
-                     G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+                     G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("Can't have a two draw_ops for a <piece> element (theme specified a draw_ops attribute and also a <draw_ops> element, or specified two elements)"));
           return;
         }
@@ -3181,7 +3181,7 @@
       if (info->op_list)
         {
           set_error (error, context,
-                     G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+                     G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("Can't have a two draw_ops for a <button> element (theme specified a draw_ops attribute and also a <draw_ops> element, or specified two elements)"));
           return;
         }
@@ -3219,7 +3219,7 @@
       if (info->op_list)
         {
           set_error (error, context,
-                     G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+                     G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("Can't have a two draw_ops for a <menu_icon> element (theme specified a draw_ops attribute and also a <draw_ops> element, or specified two elements)"));
           return;
         }
@@ -3598,7 +3598,7 @@
       g_assert (info->style);
       if (info->op_list == NULL)
         {
-          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("No draw_ops provided for frame piece"));
         }
       else
@@ -3613,7 +3613,7 @@
       g_assert (info->style);
       if (info->op_list == NULL)
         {
-          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
+          set_error (error, context, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "%s",
                      _("No draw_ops provided for button"));
         }
       else
diff -Nurd -x'*~' metacity-2.28.1.orig/src/ui/theme-viewer.c metacity-2.28.1/src/ui/theme-viewer.c
--- metacity-2.28.1.orig/src/ui/theme-viewer.c	2010-01-21 16:32:35.000000000 -0500
+++ metacity-2.28.1/src/ui/theme-viewer.c	2010-02-22 16:34:54.000000000 -0500
@@ -797,7 +797,7 @@
     global_theme = meta_theme_load (argv[1], &err);
   else
     {
-      g_printerr (_("Usage: metacity-theme-viewer [THEMENAME]\n"));
+      g_printerr ("%s", _("Usage: metacity-theme-viewer [THEMENAME]\n"));
       exit (1);
     }
   end = clock ();
diff -Nurd -x'*~' metacity-2.28.1.orig/src/ui/theme.c metacity-2.28.1/src/ui/theme.c
--- metacity-2.28.1.orig/src/ui/theme.c	2010-01-21 11:09:25.000000000 -0500
+++ metacity-2.28.1/src/ui/theme.c	2010-02-22 16:34:54.000000000 -0500
@@ -351,7 +351,7 @@
       break;
     case META_BUTTON_SIZING_LAST:
       g_set_error (error, META_THEME_ERROR,
-                   META_THEME_ERROR_FRAME_GEOMETRY,
+                   META_THEME_ERROR_FRAME_GEOMETRY, "%s",
                    _("Frame geometry does not specify size of buttons"));
       return FALSE;
     }
@@ -1016,7 +1016,7 @@
   if (g_slist_length (spec->color_specs) < 2)
     {
       g_set_error (error, META_THEME_ERROR,
-                   META_THEME_ERROR_FAILED,
+                   META_THEME_ERROR_FAILED, "%s",
                    _("Gradients should have at least two colors"));
       return FALSE;
     }
@@ -1798,7 +1798,7 @@
   if (n_tokens == 0)
     {
       g_set_error (err, META_THEME_ERROR,
-                   META_THEME_ERROR_FAILED,
+                   META_THEME_ERROR_FAILED, "%s",
                    _("Coordinate expression was empty or not understood"));
 
       goto error;
@@ -1909,7 +1909,7 @@
           if (b->d.int_val == 0)
             {
               g_set_error (err, META_THEME_ERROR,
-                           META_THEME_ERROR_DIVIDE_BY_ZERO,
+                           META_THEME_ERROR_DIVIDE_BY_ZERO, "%s",
                            _("Coordinate expression results in division by zero"));
               return FALSE;
             }
@@ -1919,7 +1919,7 @@
           if (b->d.int_val == 0)
             {
               g_set_error (err, META_THEME_ERROR,
-                           META_THEME_ERROR_DIVIDE_BY_ZERO,
+                           META_THEME_ERROR_DIVIDE_BY_ZERO, "%s",
                            _("Coordinate expression results in division by zero"));
               return FALSE;
             }
@@ -1953,7 +1953,7 @@
           if (b->d.double_val == 0.0)
             {
               g_set_error (err, META_THEME_ERROR,
-                           META_THEME_ERROR_DIVIDE_BY_ZERO,
+                           META_THEME_ERROR_DIVIDE_BY_ZERO, "%s",
                            _("Coordinate expression results in division by zero"));
               return FALSE;
             }
@@ -1961,7 +1961,7 @@
           break;
         case POS_OP_MOD:
           g_set_error (err, META_THEME_ERROR,
-                       META_THEME_ERROR_MOD_ON_FLOAT,
+                       META_THEME_ERROR_MOD_ON_FLOAT, "%s",
                        _("Coordinate expression tries to use mod operator on a floating-point number"));
           return FALSE;
         case POS_OP_ADD:
@@ -2026,7 +2026,7 @@
       if (exprs[i].type != POS_EXPR_OPERATOR)
         {
           g_set_error (err, META_THEME_ERROR,
-                       META_THEME_ERROR_FAILED,
+                       META_THEME_ERROR_FAILED, "%s",
                        _("Coordinate expression had an operand where an operator was expected"));
           return FALSE;
         }
@@ -2034,7 +2034,7 @@
       if (i == (*n_exprs - 1))
         {
           g_set_error (err, META_THEME_ERROR,
-                       META_THEME_ERROR_FAILED,
+                       META_THEME_ERROR_FAILED, "%s",
                        _("Coordinate expression ended with an operator instead of an operand"));
           return FALSE;
         }
@@ -2286,7 +2286,7 @@
       if (n_exprs >= MAX_EXPRS)
         {
           g_set_error (err, META_THEME_ERROR,
-                       META_THEME_ERROR_FAILED,
+                       META_THEME_ERROR_FAILED, "%s",
                        _("Coordinate expression parser overflowed its buffer."));
           return FALSE;
         }
@@ -2315,7 +2315,7 @@
 
             case POS_TOKEN_CLOSE_PAREN:
               g_set_error (err, META_THEME_ERROR,
-                           META_THEME_ERROR_BAD_PARENS,
+                           META_THEME_ERROR_BAD_PARENS, "%s",
                            _("Coordinate expression had a close parenthesis with no open parenthesis"));
               return FALSE;
 
@@ -2379,7 +2379,7 @@
   if (paren_level > 0)
     {
       g_set_error (err, META_THEME_ERROR,
-                   META_THEME_ERROR_BAD_PARENS,
+                   META_THEME_ERROR_BAD_PARENS, "%s",
                    _("Coordinate expression had an open parenthesis with no close parenthesis"));
       return FALSE;
     }
@@ -2390,7 +2390,7 @@
   if (n_exprs == 0)
     {
       g_set_error (err, META_THEME_ERROR,
-                   META_THEME_ERROR_FAILED,
+                   META_THEME_ERROR_FAILED, "%s",
                    _("Coordinate expression doesn't seem to have any operators or operands"));
       return FALSE;
     }
