summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2022-01-06 17:50:49 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2022-01-06 17:54:37 +0800
commit127685ef2220a857d4c8e9e29519c5db8139b40f (patch)
treec744d58baf9b502e2ef26c14492496dcc2be5d7e
parentbe81f6b4ab7d80bcd02908769311181e4a36997b (diff)
downloadgtk+-win32-dynamic-iso-code-path.tar.gz
laguage-names.c: Windows: Look for iso-codes dynamicallywin32-dynamic-iso-code-path
Use the internal APIs _gtk_get_localedir() and gtk_get_datadir() to look for the XML files and translations for iso-codes, instead of using a path defined at build time, on Windows.
-rw-r--r--gtk/language-names.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/gtk/language-names.c b/gtk/language-names.c
index 16deef3bea..a9b9d5506c 100644
--- a/gtk/language-names.c
+++ b/gtk/language-names.c
@@ -18,6 +18,7 @@
#include <hb-ot.h>
#include "language-names.h"
+#include "gtkprivate.h"
#ifndef ISO_CODES_PREFIX
#define ISO_CODES_PREFIX "/usr"
@@ -200,11 +201,22 @@ languages_variant_init (const char *variant)
char *filename;
GError *error;
- bindtextdomain (variant, ISO_CODES_LOCALESDIR);
+ char *iso_codes_datadir;
+ char *iso_codes_localedir;
+
+#ifdef G_OS_WIN32
+ iso_codes_datadir = g_build_filename (_gtk_get_datadir (), "xml", "iso-codes", NULL);
+ iso_codes_localedir = _gtk_get_localedir ();
+#else
+ iso_codes_datadir = g_strdup (ISO_CODES_DATADIR);
+ iso_codes_localedir = g_strdup (ISO_CODES_LOCALESDIR);
+#endif
+
+ bindtextdomain (variant, iso_codes_localedir);
bind_textdomain_codeset (variant, "UTF-8");
error = NULL;
- filename = g_strconcat (ISO_CODES_DATADIR, "/", variant, ".xml", NULL);
+ filename = g_strconcat (iso_codes_datadir, "/", variant, ".xml", NULL);
res = g_file_get_contents (filename, &buf, &buf_len, &error);
if (res)
{
@@ -230,6 +242,8 @@ languages_variant_init (const char *variant)
g_free (filename);
g_free (buf);
+ g_free (iso_codes_datadir);
+ g_free (iso_codes_localedir);
}
static void