Make _g_compute_locale_variants() public as g_get_locale_variants().
Bug #635998.
g_strip_context
<SUBSECTION>
g_get_language_names
+g_get_locale_variants
</SECTION>
<SECTION>
#include "config.h"
#include "gkeyfile.h"
+#include "gutils.h"
#include <errno.h>
#include <fcntl.h>
g_free (value);
}
-extern gchar **_g_compute_locale_variants (const gchar *locale);
-
/**
* g_key_file_get_locale_string:
* @key_file: a #GKeyFile
if (locale)
{
- languages = _g_compute_locale_variants (locale);
+ languages = g_get_locale_variants (locale);
free_languages = TRUE;
}
else
g_get_home_dir_utf8
#endif
g_get_language_names
+g_get_locale_variants
g_get_prgname
#ifndef _WIN64
g_get_real_name PRIVATE
g_free (modifier);
}
+/**
+ * g_get_locale_variants:
+ * @locale: a locale identifier
+ *
+ * Returns a list of derived variants of @locale, which can be used to
+ * e.g. construct locale-dependent filenames or search paths. The returned
+ * list is sorted from most desirable to least desirable.
+ * This function handles territory, charset and extra locale modifiers.
+ *
+ * For example, if @locale is "fr_BE", then the returned list
+ * is "fr_BE", "fr".
+ *
+ * If you need the list of variants for the <emphasis>current locale</emphasis>,
+ * use g_get_language_names().
+ *
+ * Returns: (transfer full) (array zero-terminated="1") (element-type utf8): a newly
+ * allocated array of newly allocated strings with the locale variants. Free with
+ * g_strfreev().
+ *
+ * Since: 2.28
+ */
gchar **
-_g_compute_locale_variants (const gchar *locale)
+g_get_locale_variants (const gchar *locale)
{
GPtrArray *array;
G_CONST_RETURN gchar* G_CONST_RETURN * g_get_language_names (void);
+gchar **g_get_locale_variants (const gchar *locale);
+
/**
* GUserDirectory:
* @G_USER_DIRECTORY_DESKTOP: the user's Desktop directory
}
static void
+test_locale_variants (void)
+{
+ char **v;
+
+ v = g_get_locale_variants ("fr_BE");
+ g_assert (strv_check ((const gchar * const *) v, "fr_BE", "fr", NULL));
+ g_strfreev (v);
+
+ v = g_get_locale_variants ("sr_SR@latin");
+ g_assert (strv_check ((const gchar * const *) v, "sr_SR@latin", "sr@latin", "sr_SR", "sr", NULL));
+ g_strfreev (v);
+}
+
+static void
test_version (void)
{
g_print ("(header %d.%d.%d library %d.%d.%d) ",
g_test_bug_base ("http://bugzilla.gnome.org/");
g_test_add_func ("/utils/language-names", test_language_names);
+ g_test_add_func ("/utils/locale-variants", test_locale_variants);
g_test_add_func ("/utils/version", test_version);
g_test_add_func ("/utils/appname", test_appname);
g_test_add_func ("/utils/tmpdir", test_tmpdir);