From 8f09d24c3ab2c9f1a6f808d8f2e64c541fa1ccd6 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 17 Apr 2010 00:45:26 -0400 Subject: [PATCH] Add a testcase for message context and UTF-8 in messages --- gio/tests/gsettings.c | 56 ++++++++++++++++++++++++++++++++++ gio/tests/org.gtk.test.gschema | 9 ++++++ 2 files changed, 65 insertions(+) diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c index c5e880b77..3aee4c91c 100644 --- a/gio/tests/gsettings.c +++ b/gio/tests/gsettings.c @@ -544,6 +544,61 @@ test_l10n (void) g_free (locale); } +static gboolean +gtk_translations_work (void) +{ + gchar *locale; + gchar *orig = "SCREEN"; + gchar *str; + + locale = g_strdup (setlocale (LC_MESSAGES, NULL)); + setlocale (LC_MESSAGES, "de"); + str = dgettext ("gtk20", orig); + setlocale (LC_MESSAGES, locale); + g_free (locale); + + return str != orig; +} + +static void +test_l10n_context (void) +{ + GSettings *settings; + gchar *str; + gchar *locale; + + if (!gtk_translations_work ()) + { + g_test_message ("Skipping localization tests because translations don't work"); + return; + } + + bind_textdomain_codeset ("gtk20", "UTF-8"); + + locale = g_strdup (setlocale (LC_MESSAGES, NULL)); + + settings = g_settings_new ("org.gtk.test.localized"); + + setlocale (LC_MESSAGES, "C"); + g_settings_get (settings, "backspace", "s", &str); + setlocale (LC_MESSAGES, locale); + + g_assert_cmpstr (str, ==, "BackSpace"); + g_free (str); + str = NULL; + + setlocale (LC_MESSAGES, "de"); + g_settings_get (settings, "backspace", "s", &str); + setlocale (LC_MESSAGES, locale); + + g_assert_cmpstr (str, ==, "Löschen"); + g_object_unref (settings); + g_free (str); + str = NULL; + + g_free (locale); +} + enum { PROP_0, @@ -892,6 +947,7 @@ main (int argc, char *argv[]) g_test_add_func ("/gsettings/complex-types", test_complex_types); g_test_add_func ("/gsettings/changes", test_changes); g_test_add_func ("/gsettings/l10n", test_l10n); + g_test_add_func ("/gsettings/l10n-context", test_l10n_context); g_test_add_func ("/gsettings/delay-apply", test_delay_apply); g_test_add_func ("/gsettings/delay-revert", test_delay_revert); g_test_add_func ("/gsettings/atomic", test_atomic); diff --git a/gio/tests/org.gtk.test.gschema b/gio/tests/org.gtk.test.gschema index 13937b6b8..a98a2e8d1 100644 --- a/gio/tests/org.gtk.test.gschema +++ b/gio/tests/org.gtk.test.gschema @@ -1,4 +1,5 @@ + "Hello, earthlings" @@ -15,6 +16,7 @@ + true @@ -50,6 +52,7 @@ "/a/object/path" + ("one",(2,3)) @@ -58,11 +61,16 @@ [0,1,2,3,4,5] + "Unnamed" + + "BackSpace" + + false @@ -77,4 +85,5 @@ "" +