[gtk/win32-dynamic-iso-code-path] laguage-names.c: Windows: Look for iso-codes dynamically




commit 127685ef2220a857d4c8e9e29519c5db8139b40f
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Jan 6 17:50:49 2022 +0800

    laguage-names.c: Windows: Look for iso-codes dynamically
    
    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.

 gtk/language-names.c | 18 ++++++++++++++++--
 1 file 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]