- gchar formatted_number[40];
- gint j;
-
- /* The "'" modifier is not available on Windows, so we'd better
- * use g_snprintf().
- */
- j = g_snprintf (formatted_number, sizeof formatted_number,
- "%'"G_GUINT64_FORMAT, size);
- g_assert (j < sizeof formatted_number);
-
- /* Extra paranoia... */
- g_assert (i < sizeof buffer - 10);
- i += snprintf (buffer + i, sizeof buffer - i,
- g_dngettext(GETTEXT_PACKAGE, "%s byte", "%s bytes", plural_form),
- formatted_number);
- g_assert (i < sizeof buffer - 10);
- buffer[i++] = ')';
+ const gchar *translated_format;
+ GString *formatted_number;
+
+ /* Translators: the %s in "%s bytes" will always be replaced by a number. */
+ translated_format = g_dngettext(GETTEXT_PACKAGE, "%s byte", "%s bytes", plural_form);
+
+ formatted_number = g_string_new (NULL);
+ g_string_printf (formatted_number, "%'"G_GUINT64_FORMAT, size);
+ g_string_append (string, " (");
+ g_string_append_printf (string, translated_format, formatted_number->str);
+ g_string_free (formatted_number, TRUE);
+ g_string_append (string, ")");