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

gEDA-cvs: branch: master updated (1.1.2.20070818-188-gd784024)



The branch, master has been updated
       via  d7840241c1c8adba3ada978ac1f42b5b2f5b87bc (commit)
       via  45f02d40b7654a787589707f087ab33aea581787 (commit)
      from  bc7e666d6e8c1620e9e3ab8d124d7d0ade5198ed (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 libgeda/Makefile.am                                |    2 +-
 libgeda/configure.ac                               |   31 +++++++---
 libgeda/include/Makefile.am                        |    1 +
 .../gettext.h => libgeda/include/gettext_priv.h    |    2 +-
 libgeda/include/libgeda_priv.h                     |    3 +
 libgeda/po/POTFILES.in                             |   23 +++++++
 libgeda/src/Makefile.am                            |    1 +
 libgeda/src/a_basic.c                              |   22 +++---
 libgeda/src/f_basic.c                              |   39 ++++++------
 libgeda/src/f_print.c                              |   23 ++++---
 libgeda/src/g_basic.c                              |   14 ++--
 libgeda/src/g_rc.c                                 |    6 +-
 libgeda/src/libgeda.c                              |    4 +
 libgeda/src/o_arc_basic.c                          |   13 ++--
 libgeda/src/o_attrib.c                             |   16 +++---
 libgeda/src/o_basic.c                              |    6 +-
 libgeda/src/o_box_basic.c                          |   10 ++--
 libgeda/src/o_bus_basic.c                          |   18 +++---
 libgeda/src/o_circle_basic.c                       |   12 ++--
 libgeda/src/o_complex_basic.c                      |   67 ++++++++++---------
 libgeda/src/o_embed.c                              |   11 ++--
 libgeda/src/o_line_basic.c                         |   10 ++--
 libgeda/src/o_net_basic.c                          |   10 ++--
 libgeda/src/o_picture.c                            |   63 ++++++++++---------
 libgeda/src/o_pin_basic.c                          |   20 +++---
 libgeda/src/o_text_basic.c                         |   43 +++++++------
 libgeda/src/s_clib.c                               |   38 ++++++------
 libgeda/src/s_hierarchy.c                          |   14 ++--
 libgeda/src/s_page.c                               |   14 +++--
 libgeda/src/s_slib.c                               |    6 +-
 30 files changed, 303 insertions(+), 239 deletions(-)
 copy gschem/include/gettext.h => libgeda/include/gettext_priv.h (98%)


=================
 Commit Messages
=================

commit d7840241c1c8adba3ada978ac1f42b5b2f5b87bc
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Mon Dec 24 17:18:37 2007 +0000

    libgeda: Use gettext to translate messages.

:100644 100644 b844a28... daff742... M	libgeda/Makefile.am
:100644 100644 13b64ed... 8117d3f... M	libgeda/configure.ac
:100644 100644 262e8af... da8d199... M	libgeda/include/Makefile.am
:000000 100644 0000000... 54ed05b... A	libgeda/include/gettext_priv.h
:100644 100644 00cf9d6... 136ca10... M	libgeda/include/libgeda_priv.h
:100644 100644 3388665... edafb2a... M	libgeda/po/POTFILES.in
:100644 100644 bfab3ba... 55c80ce... M	libgeda/src/Makefile.am
:100644 100644 6dccb01... 5ad1a03... M	libgeda/src/libgeda.c

commit 45f02d40b7654a787589707f087ab33aea581787
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Mon Dec 24 12:25:53 2007 +0000

    libgeda: Wrap translatable strings in dummy _() macro.

:100644 100644 4f1a333... 00cf9d6... M	libgeda/include/libgeda_priv.h
:100644 100644 74e7675... 0f2dfb4... M	libgeda/src/a_basic.c
:100644 100644 5e15131... 6bcd193... M	libgeda/src/f_basic.c
:100644 100644 ddca066... 1820544... M	libgeda/src/f_print.c
:100644 100644 5e75610... 83997ee... M	libgeda/src/g_basic.c
:100644 100644 50b4c99... 2fd5146... M	libgeda/src/g_rc.c
:100644 100644 0553c35... 4c66082... M	libgeda/src/o_arc_basic.c
:100644 100644 47607bb... f520b8d... M	libgeda/src/o_attrib.c
:100644 100644 d7f9974... 5426c54... M	libgeda/src/o_basic.c
:100644 100644 ddb1e84... 2c3cd44... M	libgeda/src/o_box_basic.c
:100644 100644 37affd1... 5e6958c... M	libgeda/src/o_bus_basic.c
:100644 100644 bf8b0a7... 488afc7... M	libgeda/src/o_circle_basic.c
:100644 100644 5e9f270... 0d9ee5c... M	libgeda/src/o_complex_basic.c
:100644 100644 5d5c355... b052d4d... M	libgeda/src/o_embed.c
:100644 100644 8f8b917... 2d957c5... M	libgeda/src/o_line_basic.c
:100644 100644 c7ec0a5... b70bfee... M	libgeda/src/o_net_basic.c
:100644 100644 6dea434... 98ede2c... M	libgeda/src/o_picture.c
:100644 100644 0d1b7d1... 49cc8a3... M	libgeda/src/o_pin_basic.c
:100644 100644 9065c40... 970efaa... M	libgeda/src/o_text_basic.c
:100644 100644 2158e68... 8cbfe23... M	libgeda/src/s_clib.c
:100644 100644 1b6a02d... 83b3baf... M	libgeda/src/s_hierarchy.c
:100644 100644 b6c7398... 007f900... M	libgeda/src/s_page.c
:100644 100644 ea96161... c7db1d5... M	libgeda/src/s_slib.c

=========
 Changes
=========

commit d7840241c1c8adba3ada978ac1f42b5b2f5b87bc
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Mon Dec 24 17:18:37 2007 +0000

    libgeda: Use gettext to translate messages.

diff --git a/libgeda/Makefile.am b/libgeda/Makefile.am
index b844a28..daff742 100644
--- a/libgeda/Makefile.am
+++ b/libgeda/Makefile.am
@@ -1,5 +1,5 @@
 
-SUBDIRS = src include scripts docs share lib scheme data po
+SUBDIRS = data docs include intl lib po scheme scripts share src
 
 INTLTOOL_FILES = intltool-extract.in \
                  intltool-merge.in \
diff --git a/libgeda/configure.ac b/libgeda/configure.ac
index 13b64ed..8117d3f 100644
--- a/libgeda/configure.ac
+++ b/libgeda/configure.ac
@@ -13,6 +13,9 @@ echo Configuring $PACKAGE version $DOTTED_VERSION.$DATE_VERSION
 AM_INIT_AUTOMAKE($PACKAGE, $DOTTED_VERSION, no-define)
 AM_CONFIG_HEADER([config.h])
 
+# Call this to make autoconf and friends happy
+AC_GNU_SOURCE
+
 # Init libtool
 AM_PROG_LIBTOOL
 
@@ -56,25 +59,36 @@ fi
 # Misc win32 / mingw checks and variables end
 #########################################################################
 
+# Checks for programs.
+AC_PROG_CC
+AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")
+AC_PROG_CPP
+AC_PROG_MAKE_SET
+
+############################################################################
+# Internationalisation start
+#
 # Set USE_NLS
 AM_NLS
 
 # Set package name for translations
 so_major=`echo "$SHARED_LIBRARY_VERSION" | sed 's/:.*//'`
 GETTEXT_PACKAGE=$PACKAGE$so_major
+AH_TEMPLATE([GETTEXT_PACKAGE], [Name of this program's gettext domain])
+AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"])
 AC_SUBST(GETTEXT_PACKAGE)
 
-# Check pre-requsites for the PO dir.
-# (Needed without explicitly initialising gettext)
-AM_PO_SUBDIRS
+# Initialise gettext
+AM_GNU_GETTEXT
+AM_GNU_GETTEXT_VERSION([0.16.1])
 
-# Checks for programs.
-AC_PROG_CC
-AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")    
-AC_PROG_CPP
-AC_PROG_MAKE_SET
+# Initialise intltool
 IT_PROG_INTLTOOL(0.35.0)
 
+# 
+# Internationalisation end
+#########################################################################
+
 ############################################################################
 # Check for guile start
 #
@@ -495,6 +509,7 @@ AC_CONFIG_FILES([Makefile
                  include/Makefile
                  docs/Makefile
                  data/Makefile
+                 intl/Makefile
                  po/Makefile.in
                  po/Makefile
 	         libgeda.pc
diff --git a/libgeda/include/Makefile.am b/libgeda/include/Makefile.am
index 262e8af..da8d199 100644
--- a/libgeda/include/Makefile.am
+++ b/libgeda/include/Makefile.am
@@ -9,6 +9,7 @@ libgedainclude_HEADERS = \
 noinst_HEADERS = \
 	libgeda_priv.h \
 	prototype_priv.h \
+	gettext_priv.h \
 	guile_compat_1.6.h
 
 MOSTLYCLEANFILES = *.log core FILE *~
diff --git a/libgeda/include/gettext_priv.h b/libgeda/include/gettext_priv.h
new file mode 100644
index 0000000..54ed05b
--- /dev/null
+++ b/libgeda/include/gettext_priv.h
@@ -0,0 +1,71 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU Library General Public License as published
+   by the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+   USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
+# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+#define _(String) dgettext(GETTEXT_PACKAGE, String)
+
+#endif /* _LIBGETTEXT_H */
diff --git a/libgeda/include/libgeda_priv.h b/libgeda/include/libgeda_priv.h
index 00cf9d6..136ca10 100644
--- a/libgeda/include/libgeda_priv.h
+++ b/libgeda/include/libgeda_priv.h
@@ -20,5 +20,5 @@
 /* Private libgeda headers */
 #include "prototype_priv.h"
 
-/* Dummy _() macro for future gettext translation FIXME */
-#define _(X) X
+/* Gettext translation */
+#include "gettext_priv.h"
diff --git a/libgeda/po/POTFILES.in b/libgeda/po/POTFILES.in
index 3388665..edafb2a 100644
--- a/libgeda/po/POTFILES.in
+++ b/libgeda/po/POTFILES.in
@@ -2,3 +2,26 @@ data/libgeda.xml.in
 data/x-geda-gsch2pcb-project.desktop.in
 data/x-geda-schematic.desktop.in
 data/x-geda-symbol.desktop.in
+
+src/a_basic.c
+src/f_basic.c
+src/f_print.c
+src/g_basic.c
+src/g_rc.c
+src/o_arc_basic.c
+src/o_attrib.c
+src/o_basic.c
+src/o_box_basic.c
+src/o_bus_basic.c
+src/o_circle_basic.c
+src/o_complex_basic.c
+src/o_embed.c
+src/o_line_basic.c
+src/o_net_basic.c
+src/o_picture.c
+src/o_pin_basic.c
+src/o_text_basic.c
+src/s_clib.c
+src/s_hierarchy.c
+src/s_page.c
+src/s_slib.c
diff --git a/libgeda/src/Makefile.am b/libgeda/src/Makefile.am
index bfab3ba..55c80ce 100644
--- a/libgeda/src/Makefile.am
+++ b/libgeda/src/Makefile.am
@@ -61,6 +61,7 @@ libgeda_la_SOURCES = \
 	u_basic.c
 
 INCLUDES = -I$(top_srcdir)/include @LIBGEDA_CFLAGS@
+DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
 libgeda_la_LDFLAGS = @LIBTOOL_FLAGS@ @LIBGEDA_LDFLAGS@
 LIBTOOL=@LIBTOOL@ --silent
 
diff --git a/libgeda/src/libgeda.c b/libgeda/src/libgeda.c
index 6dccb01..5ad1a03 100644
--- a/libgeda/src/libgeda.c
+++ b/libgeda/src/libgeda.c
@@ -52,6 +52,10 @@ void libgeda_init(void)
     g_setenv ("GEDADATA", GEDADATADIR, FALSE);
   }
 
+  /* Initialise gettext */
+  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+
+  /* Initialise gobject */
   g_type_init ();
 
   s_clib_init();

commit 45f02d40b7654a787589707f087ab33aea581787
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Mon Dec 24 12:25:53 2007 +0000

    libgeda: Wrap translatable strings in dummy _() macro.

diff --git a/libgeda/include/libgeda_priv.h b/libgeda/include/libgeda_priv.h
index 4f1a333..00cf9d6 100644
--- a/libgeda/include/libgeda_priv.h
+++ b/libgeda/include/libgeda_priv.h
@@ -19,3 +19,6 @@
 
 /* Private libgeda headers */
 #include "prototype_priv.h"
+
+/* Dummy _() macro for future gettext translation FIXME */
+#define _(X) X
diff --git a/libgeda/src/a_basic.c b/libgeda/src/a_basic.c
index 74e7675..0f2dfb4 100644
--- a/libgeda/src/a_basic.c
+++ b/libgeda/src/a_basic.c
@@ -170,7 +170,7 @@ gchar *o_save_objects (OBJECT *object_list)
              *  completely? In any case, failing gracefully is better
              *  than killing the program, which is what this used to
              *  do... */
-            g_critical ("o_save_objects: object %p has unknown type '%c'\n",
+            g_critical (_("o_save_objects: object %p has unknown type '%c'\n"),
                         o_current, o_current->type);
             /* Dump string built so far */
             g_string_free (acc, TRUE);
@@ -215,7 +215,7 @@ int o_save(TOPLEVEL *toplevel, const char *filename)
   fp = fopen(filename, "wb");
 	
   if (fp == NULL) {
-    s_log_message("o_save: Could not open [%s]\n", filename);
+    s_log_message(_("o_save: Could not open [%s]\n"), filename);
     return 0;
   }
 
@@ -405,9 +405,9 @@ OBJECT *o_read_buffer(TOPLEVEL *toplevel, OBJECT *object_list,
 
 		embedded_level++;
 	} else {
-        	fprintf(stderr, "Read unexpected embedded "
-				"symbol start marker in [%s] :\n>>\n%s<<\n", 
-				name, line);
+          fprintf(stderr, _("Read unexpected embedded "
+                            "symbol start marker in [%s] :\n>>\n%s<<\n"),
+                  name, line);
 	}
        	break;
 
@@ -425,9 +425,9 @@ OBJECT *o_read_buffer(TOPLEVEL *toplevel, OBJECT *object_list,
           o_complex_recalc( toplevel, object_list );
 		embedded_level--;
 	} else {
-        	fprintf(stderr, "Read unexpected embedded "
-				"symbol end marker in [%s] :\n>>\n%s<<\n", 
-				name, line);
+          fprintf(stderr, _("Read unexpected embedded "
+                            "symbol end marker in [%s] :\n>>\n%s<<\n"),
+                  name, line);
 	}
 	
         break;
@@ -457,13 +457,13 @@ OBJECT *o_read_buffer(TOPLEVEL *toplevel, OBJECT *object_list,
         
 	if (fileformat_ver < current_fileformat_ver)
         {
-       	  s_log_message("Read an old format sym/sch file!\n"
-                        "Please run g[sym|sch]update on:\n[%s]\n", name);
+          s_log_message(_("Read an old format sym/sch file!\n"
+                          "Please run g[sym|sch]update on:\n[%s]\n"), name);
 	}
         break;
 
       default:
-        fprintf(stderr, "Read garbage in [%s] :\n>>\n%s<<\n",
+        fprintf(stderr, _("Read garbage in [%s] :\n>>\n%s<<\n"),
                 name, line);
         break;
     }
diff --git a/libgeda/src/f_basic.c b/libgeda/src/f_basic.c
index 5e15131..6bcd193 100644
--- a/libgeda/src/f_basic.c
+++ b/libgeda/src/f_basic.c
@@ -110,7 +110,7 @@ gboolean f_has_active_autosave (const gchar *filename, GError **err)
   if (auto_err) {
     g_errcode = g_file_error_from_errno (auto_err);
     g_set_error (err, G_FILE_ERROR, g_errcode,
-                 "Failed to stat [%s]: %s",
+                 _("Failed to stat [%s]: %s"),
                  auto_filename, g_strerror (auto_err));
     result = TRUE;
     goto check_autosave_finish;
@@ -123,7 +123,7 @@ gboolean f_has_active_autosave (const gchar *filename, GError **err)
   if (file_err) {
     g_errcode = g_file_error_from_errno (file_err);
     g_set_error (err, G_FILE_ERROR, g_errcode,
-                 "Failed to stat [%s]: %s",
+                 _("Failed to stat [%s]: %s"),
                  auto_filename, g_strerror (file_err));
     result = TRUE;
     goto check_autosave_finish;
@@ -241,17 +241,16 @@ int f_open_flags(TOPLEVEL *toplevel, const gchar *filename,
     if (tmp_err != NULL) g_warning ("%s\n", tmp_err->message);
     if (active_backup) {
       message = g_string_new ("");
-      g_string_append_printf(message, "\nWARNING: Found an autosave backup file:\n  %s.\n\n", backup_filename);
+      g_string_append_printf(message, _("\nWARNING: Found an autosave backup file:\n  %s.\n\n"), backup_filename);
       if (tmp_err != NULL) {
-        g_string_append(message, "I could not guess if it is newer, so you have to"
-                        "do it manually.\n");
+        g_string_append(message, _("I could not guess if it is newer, so you have to do it manually.\n"));
       } else {
-        g_string_append(message, "The backup copy is newer than the schematic, so it seems you should load it instead of the original file.\n");
+        g_string_append(message, _("The backup copy is newer than the schematic, so it seems you should load it instead of the original file.\n"));
       }
-      g_string_append (message, "Gschem usually makes backup copies automatically, and this situation happens when it crashed or it was forced to exit abruptly.\n");
+      g_string_append (message, _("Gschem usually makes backup copies automatically, and this situation happens when it crashed or it was forced to exit abruptly.\n"));
       if (toplevel->page_current->load_newer_backup_func == NULL) {
         g_warning (message->str);
-        g_warning ("\nRun gschem and correct the situation.\n\n");
+        g_warning (_("\nRun gschem and correct the situation.\n\n"));
       } else {
         /* Ask the user if load the backup or the original file */
         if (toplevel->page_current->load_newer_backup_func
@@ -365,8 +364,8 @@ int f_save(TOPLEVEL *toplevel, const char *filename)
   real_filename = follow_symlinks (filename, NULL);
 
   if (real_filename == NULL) {
-    s_log_message ("Can't get the real filename of %s.", filename);
-    fprintf (stderr, "Can't get the real filename of %s.\n", filename);
+    s_log_message (_("Can't get the real filename of %s."), filename);
+    fprintf (stderr, _("Can't get the real filename of %s.\n"), filename);
     return 0;
   }
   
@@ -386,14 +385,14 @@ int f_save(TOPLEVEL *toplevel, const char *filename)
       if ( g_file_test (backup_filename, G_FILE_TEST_EXISTS) && 
 	   (! g_file_test (backup_filename, G_FILE_TEST_IS_DIR))) {
 	if (chmod(backup_filename, S_IREAD|S_IWRITE) != 0) {
-	  s_log_message ("Could NOT set previous backup file [%s] read-write\n", 
-			 backup_filename);	    
+	  s_log_message (_("Could NOT set previous backup file [%s] read-write\n"),
+			 backup_filename);
 	}
       }
 	
       if (rename(real_filename, backup_filename) != 0) {
-	s_log_message ("Can't save backup file: %s.", backup_filename);
-	fprintf (stderr, "Can't save backup file: %s.", backup_filename);
+	s_log_message (_("Can't save backup file: %s."), backup_filename);
+	fprintf (stderr, _("Can't save backup file: %s."), backup_filename);
       }
       else {
 	/* Make the backup file readonly so a 'rm *' command will ask 
@@ -403,8 +402,8 @@ int f_save(TOPLEVEL *toplevel, const char *filename)
 	mask = (~mask)&0777;
 	mask &= ((~saved_umask) & 0777);
 	if (chmod(backup_filename, mask) != 0) {
-	  s_log_message ("Could NOT set backup file [%s] readonly\n", 
-			   backup_filename);	    
+	  s_log_message (_("Could NOT set backup file [%s] readonly\n"),
+                         backup_filename);
 	}
 	umask(saved_umask);
       }
@@ -538,8 +537,8 @@ char *follow_symlinks (const gchar *filename, GError **error)
       len = readlink (followed_filename, linkname, MAXPATHLEN - 1);
       
       if (len == -1) {
-	s_log_message("Could not read symbolic link information for %s", followed_filename);
-	fprintf(stderr, "Could not read symbolic link information for %s", followed_filename);
+	s_log_message(_("Could not read symbolic link information for %s"), followed_filename);
+	fprintf(stderr, _("Could not read symbolic link information for %s"), followed_filename);
 	g_free (followed_filename);
 	return NULL;
       }
@@ -579,8 +578,8 @@ char *follow_symlinks (const gchar *filename, GError **error)
 
   /* Too many symlinks */
   
-  s_log_message("The file has too many symbolic links.");
-  fprintf(stderr, "The file has too many symbolic links.");
+  s_log_message(_("The file has too many symbolic links."));
+  fprintf(stderr, _("The file has too many symbolic links."));
   
   return NULL;
 #endif /* __MINGW32__ */
diff --git a/libgeda/src/f_print.c b/libgeda/src/f_print.c
index ddca066..1820544 100644
--- a/libgeda/src/f_print.c
+++ b/libgeda/src/f_print.c
@@ -102,7 +102,7 @@ int f_print_header(TOPLEVEL *toplevel, FILE *fp,
   /* Get Time of day for creation date */
   time_rc = time(&current_time);
   if(time_rc == (time_t)-1) {
-    s_log_message("Unable to get time of day in f_print_header()\n");
+    s_log_message(_("Unable to get time of day in f_print_header()\n"));
     current_time=0; /* Just set it to 1970... */
   }
 
@@ -140,8 +140,8 @@ int f_print_header(TOPLEVEL *toplevel, FILE *fp,
   /* Open the prolog file */
   prolog = fopen(toplevel->postscript_prolog,"r");
   if(prolog == NULL) {
-    s_log_message("Unable to open the prolog file `%s' for reading "
-		  "in f_print_header()\n", toplevel->postscript_prolog);
+    s_log_message(_("Unable to open the prolog file `%s' for reading "
+                    "in f_print_header()\n"), toplevel->postscript_prolog);
     goto f_print_header_fail;
   }
   /* Loop while reading file into buffer and dump it
@@ -154,14 +154,14 @@ int f_print_header(TOPLEVEL *toplevel, FILE *fp,
   } while(!feof(prolog) && !ferror(prolog) && !ferror(fp));
 
   if(ferror(prolog)) {
-    s_log_message("Error during reading of the prolog file `%s' "
-		  "in f_print_header()\n", toplevel->postscript_prolog);
+      s_log_message(_("Error during reading of the prolog file `%s' "
+                      "in f_print_header()\n"), toplevel->postscript_prolog);
     goto f_print_header_fail;
   }
 
   if(ferror(fp)) {
-    s_log_message("Error during writing of the output postscript file "
-		  "in f_print_header()\n");
+    s_log_message(_("Error during writing of the output postscript file "
+                    "in f_print_header()\n"));
     goto f_print_header_fail;
   }
   g_free(buf);  /* If we got to here, the buffer was allocated. */
@@ -173,7 +173,7 @@ int f_print_header(TOPLEVEL *toplevel, FILE *fp,
   return 0;
 
  f_print_header_fail:
-  s_log_message ("Giving up on printing\n");
+  s_log_message (_("Giving up on printing\n"));
   g_free (buf); /* g_free() succeeds if argument is NULL */
   return -1;
 }
@@ -362,7 +362,7 @@ int f_print_file (TOPLEVEL *toplevel, const char *filename)
 
   /* check to see if it worked */ 
   if (fp == NULL) {
-    s_log_message("Could not open [%s] for printing\n", filename);
+    s_log_message(_("Could not open [%s] for printing\n"), filename);
     return -1;
   }
 
@@ -395,7 +395,8 @@ int f_print_command (TOPLEVEL *toplevel, const char *command)
   /* check to see if it worked */ 
   if (fp == NULL) 
     {
-      s_log_message("Could not execute command [%s] for printing\n", command);
+      s_log_message(_("Could not execute command [%s] for printing\n"),
+                    command);
       return -1;
     }
 
@@ -672,7 +673,7 @@ static int f_print_get_unicode_chars(TOPLEVEL *toplevel, OBJECT *head,
 	        if (count < 128)
 		  table[count++] = current_char;
 	        else 
-	          s_log_message("Too many UTF-8 characters, cannot print\n");
+	          s_log_message(_("Too many UTF-8 characters, cannot print\n"));
 	      }
 	    }  
             aux = g_utf8_find_next_char(aux, NULL);
diff --git a/libgeda/src/g_basic.c b/libgeda/src/g_basic.c
index 5e75610..83997ee 100644
--- a/libgeda/src/g_basic.c
+++ b/libgeda/src/g_basic.c
@@ -106,21 +106,21 @@ static SCM protected_post_unwind_handler (void *data, SCM key, SCM args)
          && scm_is_integer (s_col_num)) {
 
        filename = scm_to_locale_string (s_filename);
-       s_log_message ("%s:%i:%i: %s\n", filename, scm_to_int (s_line_num),
+       s_log_message (_("%s:%i:%i: %s\n"), filename,
+                      scm_to_int (s_line_num),
                       scm_to_int (s_col_num), message);
        free (filename);
 
     } else {
 
-      s_log_message ("Unknown file: %s\n", message);
+      s_log_message (_("Unknown file: %s\n"), message);
 
     }
 
   } else {
     /* No stack, so can't display debugging info */
-    s_log_message ("Evaluation failed: %s\n"
-                   "Enable debugging for more detailed information\n",
-                   message);
+    s_log_message (_("Evaluation failed: %s\n"), message);
+    s_log_message (_("Enable debugging for more detailed information\n"));
   }
 
   free (message);
@@ -264,8 +264,8 @@ int g_read_file(const gchar *filename)
 	}
 	
 	if (access(full_filename, R_OK) != 0) {
-		s_log_message("Could not find [%s] for interpretion\n",
-			      full_filename);
+          s_log_message(_("Could not find [%s] for interpretion\n"),
+                        full_filename);
 		return(-1);
   	}
 
diff --git a/libgeda/src/g_rc.c b/libgeda/src/g_rc.c
index 50b4c99..2fd5146 100644
--- a/libgeda/src/g_rc.c
+++ b/libgeda/src/g_rc.c
@@ -133,7 +133,7 @@ gint g_rc_parse_general(TOPLEVEL *toplevel,
                                                  (GCompareFunc) strcmp);
   if (found_rc_filename_element != NULL) {
     /* We've already read this one in. */
-    s_log_message("RC file [%s] already read in.\n", fname);
+    s_log_message(_("RC file [%s] already read in.\n"), fname);
     return 0;
   }
 
@@ -387,8 +387,8 @@ void g_rc_parse(TOPLEVEL *toplevel,
     /*! \todo these two are basically the
      * same. Inefficient!
      */
-    s_log_message("Could not find any %s file!\n", rcname);
-    fprintf(stderr, "Could not find a %s file\n", rcname);
+    s_log_message(_("Could not find any %s file!\n"), rcname);
+    fprintf(stderr, _("Could not find a %s file\n"), rcname);
     exit(-1);
   }
 }
diff --git a/libgeda/src/o_arc_basic.c b/libgeda/src/o_arc_basic.c
index 0553c35..4c66082 100644
--- a/libgeda/src/o_arc_basic.c
+++ b/libgeda/src/o_arc_basic.c
@@ -287,17 +287,16 @@ OBJECT *o_arc_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   /* Error check */
   if (radius <= 0) {
     fprintf(stderr,
-            "Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n",
+            _("Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"),
             type, x1, y1, radius, start_angle, end_angle, color);
-    s_log_message
-      ("Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n",
-       type, x1, y1, radius, start_angle, end_angle, color);
+    s_log_message (_("Found a zero radius arc [ %c %d, %d, %d, %d, %d, %d ]\n"),
+                   type, x1, y1, radius, start_angle, end_angle, color);
   }
 	
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
diff --git a/libgeda/src/o_attrib.c b/libgeda/src/o_attrib.c
index 47607bb..f520b8d 100644
--- a/libgeda/src/o_attrib.c
+++ b/libgeda/src/o_attrib.c
@@ -637,7 +637,7 @@ int o_attrib_get_name_value(char *string, char **name_ptr, char **value_ptr )
   g_strfreev(str_array);
   
   if (*value_ptr && (*value_ptr)[0] == '\0') {
-    s_log_message("Found an improper attribute: _%s_\n", string);
+    s_log_message(_("Found an improper attribute: _%s_\n"), string);
 #if 0 /* for now leak this memory till this is verified correct everywhere */
     g_free(*name_ptr); *name_ptr = NULL;
     g_free(*value_ptr); *value_ptr = NULL;
@@ -1692,13 +1692,13 @@ void o_attrib_slot_update(TOPLEVEL *toplevel, OBJECT *object)
   slotdef = o_attrib_search_slotdef(o_current, slot);
   
   if (!slotdef) {
-    s_log_message("Did not find slotdef=#:#,#,#... attribute\n");
+    s_log_message(_("Did not find slotdef=#:#,#,#... attribute\n"));
     return;
   }
 
   if (!strstr(slotdef, ":")) {
     /* Didn't find proper slotdef=#:... put warning into log */
-    s_log_message("Improper slotdef syntax: missing \":\".\n");
+    s_log_message(_("Improper slotdef syntax: missing \":\".\n"));
     g_free(slotdef);    
     return;
   }
@@ -1713,7 +1713,7 @@ void o_attrib_slot_update(TOPLEVEL *toplevel, OBJECT *object)
   cptr++; /* skip colon */
 
   if (*cptr == '\0') {
-    s_log_message("Did not find proper slotdef=#:#,#,#... attribute\n");
+    s_log_message(_("Did not find proper slotdef=#:#,#,#... attribute\n"));
     g_free(slotdef);    
     return;
   }
@@ -1798,7 +1798,7 @@ void o_attrib_slot_update(TOPLEVEL *toplevel, OBJECT *object)
       
       pin_counter++;
     } else {
-      s_log_message("component missing pinseq= attribute\n");
+      s_log_message(_("component missing pinseq= attribute\n"));
     }
     
     current_pin = strtok(NULL, DELIMITERS);
@@ -1845,7 +1845,7 @@ void o_attrib_slot_copy(TOPLEVEL *toplevel, OBJECT *original, OBJECT *target)
   slotdef = o_attrib_search_slotdef(o_current, slot);
  
   if (!slotdef) {
-    s_log_message("Did not find slotdef=#:#,#,#... attribute\n");
+    s_log_message(_("Did not find slotdef=#:#,#,#... attribute\n"));
     return;
   }
 
@@ -1864,7 +1864,7 @@ void o_attrib_slot_copy(TOPLEVEL *toplevel, OBJECT *original, OBJECT *target)
   cptr++; /* skip colon */
 
   if (*cptr == '\0') {
-    s_log_message("Did not find proper slotdef=#:#,#,#... attribute\n");
+    s_log_message(_("Did not find proper slotdef=#:#,#,#... attribute\n"));
     return;
   }
   
@@ -1898,7 +1898,7 @@ void o_attrib_slot_copy(TOPLEVEL *toplevel, OBJECT *original, OBJECT *target)
       
       pin_counter++;
     } else {
-      s_log_message("component missing pinseq= attribute\n");
+      s_log_message(_("component missing pinseq= attribute\n"));
     }
     
     current_pin = strtok(NULL, DELIMITERS);
diff --git a/libgeda/src/o_basic.c b/libgeda/src/o_basic.c
index d7f9974..5426c54 100644
--- a/libgeda/src/o_basic.c
+++ b/libgeda/src/o_basic.c
@@ -186,7 +186,7 @@ void o_set_line_options(TOPLEVEL *toplevel, OBJECT *o_current,
     case(TYPE_DOTTED):
     if (space < 1) {
       space = 100;
-      s_log_message ("Invalid space specified, setting to 100\n");
+      s_log_message (_("Invalid space specified, setting to 100\n"));
     }
     break;
     case(TYPE_DASHED):
@@ -194,11 +194,11 @@ void o_set_line_options(TOPLEVEL *toplevel, OBJECT *o_current,
     case(TYPE_PHANTOM):
     if (length < 1) {
       length = 100;
-      s_log_message ("Invalid length specified, setting to 100\n");
+      s_log_message (_("Invalid length specified, setting to 100\n"));
     }
     if (space < 1) {
       space = 100;
-      s_log_message ("Invalid space specified, setting to 100\n");
+      s_log_message (_("Invalid space specified, setting to 100\n"));
     }
     break;
     default:
diff --git a/libgeda/src/o_box_basic.c b/libgeda/src/o_box_basic.c
index ddb1e84..2c3cd44 100644
--- a/libgeda/src/o_box_basic.c
+++ b/libgeda/src/o_box_basic.c
@@ -333,16 +333,16 @@ OBJECT *o_box_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   }
 
   if (width == 0 || height == 0) {
-    fprintf(stderr, "Found a zero width/height box [ %c %d %d %d %d %d ]\n",
+    fprintf(stderr, _("Found a zero width/height box [ %c %d %d %d %d %d ]\n"),
             type, x1, y1, width, height, color);
-    s_log_message("Found a zero width/height box [ %c %d %d %d %d %d ]\n",
+    s_log_message(_("Found a zero width/height box [ %c %d %d %d %d %d ]\n"),
                   type, x1, y1, width, height, color);
   }
 
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
   
diff --git a/libgeda/src/o_bus_basic.c b/libgeda/src/o_bus_basic.c
index 37affd1..5e6958c 100644
--- a/libgeda/src/o_bus_basic.c
+++ b/libgeda/src/o_bus_basic.c
@@ -146,8 +146,10 @@ OBJECT *o_bus_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   d_y2 = y2; 
 
   if (x1 == x2 && y1 == y2) {
-    fprintf(stderr, "Found a zero length bus [ %c %d %d %d %d %d ]\n", type, x1, y1, x2, y2, color);
-    s_log_message("Found a zero length bus [ %c %d %d %d %d %d ]\n", type, x1, y1, x2, y2, color);
+    fprintf(stderr, _("Found a zero length bus [ %c %d %d %d %d %d ]\n"),
+            type, x1, y1, x2, y2, color);
+    s_log_message(_("Found a zero length bus [ %c %d %d %d %d %d ]\n"),
+                    type, x1, y1, x2, y2, color);
   }
 
   if (toplevel->override_bus_color != -1) {
@@ -155,16 +157,16 @@ OBJECT *o_bus_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   }
 
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
   if (ripper_dir < -1 || ripper_dir > 1) {
-    fprintf(stderr, "Found an invalid bus ripper direction [ %s ]\n", buf);
-    s_log_message("Found an invalid bus ripper direction [ %s ]\n", buf);
-    s_log_message("Resetting direction to neutral (no direction)\n");
+    fprintf(stderr, _("Found an invalid bus ripper direction [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid bus ripper direction [ %s ]\n"), buf);
+    s_log_message(_("Resetting direction to neutral (no direction)\n"));
     ripper_dir = 0;
   }
 
diff --git a/libgeda/src/o_circle_basic.c b/libgeda/src/o_circle_basic.c
index bf8b0a7..488afc7 100644
--- a/libgeda/src/o_circle_basic.c
+++ b/libgeda/src/o_circle_basic.c
@@ -203,7 +203,7 @@ void o_circle_modify(TOPLEVEL *toplevel, OBJECT *object,
     case CIRCLE_RADIUS:
       /* modify the radius of the circle */
       if (x == 0) {
-	s_log_message("Null radius circles are not allowed\n");
+	s_log_message(_("Null radius circles are not allowed\n"));
 	return;
       }
       object->circle->radius = x;
@@ -287,17 +287,17 @@ OBJECT *o_circle_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
 
 
   if (radius == 0) {
-    fprintf(stderr, "Found a zero radius circle [ %c %d %d %d %d ]\n",
+    fprintf(stderr, _("Found a zero radius circle [ %c %d %d %d %d ]\n"),
             type, x1, y1, radius, color);
-    s_log_message("Found a zero radius circle [ %c %d %d %d %d ]\n",
+    s_log_message(_("Found a zero radius circle [ %c %d %d %d %d ]\n"),
                   type, x1, y1, radius, color);
 	
   }
   
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
diff --git a/libgeda/src/o_complex_basic.c b/libgeda/src/o_complex_basic.c
index 5e9f270..0d9ee5c 100644
--- a/libgeda/src/o_complex_basic.c
+++ b/libgeda/src/o_complex_basic.c
@@ -713,8 +713,8 @@ OBJECT *o_complex_read(TOPLEVEL *toplevel, OBJECT *object_list,
       break;
 
     default:
-      fprintf(stderr, "Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n", type, x1, y1, selectable, angle, mirror, basename); 
-      s_log_message("Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n", type, x1, y1, selectable, angle, mirror, basename); 
+      fprintf(stderr, _("Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"), type, x1, y1, selectable, angle, mirror, basename);
+      s_log_message(_("Found a component with an invalid rotation [ %c %d %d %d %d %d %s ]\n"), type, x1, y1, selectable, angle, mirror, basename);
       break;
   }
 
@@ -726,8 +726,10 @@ OBJECT *o_complex_read(TOPLEVEL *toplevel, OBJECT *object_list,
       break;
 		
     default:
-      fprintf(stderr, "Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n", type, x1, y1, selectable, angle, mirror, basename); 
-      s_log_message("Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n", type, x1, y1, selectable, angle, mirror, basename); 
+      fprintf(stderr,
+              _("Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"),
+              type, x1, y1, selectable, angle, mirror, basename);
+      s_log_message(_("Found a component with an invalid mirror flag [ %c %d %d %d %d %d %s ]\n"), type, x1, y1, selectable, angle, mirror, basename);
       break;
   }
   if (strncmp(basename, "EMBEDDED", 8) == 0) {
@@ -1426,13 +1428,13 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
     {
       if (inside)
       { 
-        s_log_message("WARNING: Symbol version parse error on refdes %s:\n"
-                    "\tCould not parse symbol file symversion=%s\n",
-                     refdes, inside);
+        s_log_message(_("WARNING: Symbol version parse error on refdes %s:\n"
+                        "\tCould not parse symbol file symversion=%s\n"),
+                      refdes, inside);
       } else {
-        s_log_message("WARNING: Symbol version parse error on refdes %s:\n"
-                    "\tCould not parse symbol file symversion=\n",
-                     refdes);
+        s_log_message(_("WARNING: Symbol version parse error on refdes %s:\n"
+                        "\tCould not parse symbol file symversion=\n"),
+                      refdes);
       }
       goto done;
     }
@@ -1446,8 +1448,8 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
     outside_value = strtod(outside, &err_check);
     if (outside_value == 0 && outside == err_check)
     {
-      s_log_message("WARNING: Symbol version parse error on refdes %s:\n"
-                    "\tCould not parse attached symversion=%s\n",
+      s_log_message(_("WARNING: Symbol version parse error on refdes %s:\n"
+                      "\tCould not parse attached symversion=%s\n"),
                     refdes, outside);
       goto done;
     }
@@ -1471,9 +1473,9 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
   /* No symversion inside, but a version is outside, this is a weird case */
   if (!inside_present && outside_present)
   {
-    s_log_message("WARNING: Symbol version oddity on refdes %s:\n"
-                  "\tsymversion=%s attached to instantiated symbol, "
-                  "but no symversion= inside symbol file\n",
+    s_log_message(_("WARNING: Symbol version oddity on refdes %s:\n"
+                    "\tsymversion=%s attached to instantiated symbol, "
+                    "but no symversion= inside symbol file\n"),
                   refdes, outside);
     goto done;
   }
@@ -1485,13 +1487,14 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
       ((inside_present && outside_present) && (inside_value > outside_value)))
   {
     
-    fprintf(stderr, "WARNING: Symbol version mismatch on refdes %s (%s):\n"
-            "\tSymbol in library is newer than "
-            "instantiated symbol\n",
+    fprintf(stderr,
+            _("WARNING: Symbol version mismatch on refdes %s (%s):\n"
+              "\tSymbol in library is newer than "
+              "instantiated symbol\n"),
             refdes, object->complex_basename);
-    s_log_message("WARNING: Symbol version mismatch on refdes %s (%s):\n"
-                  "\tSymbol in library is newer than "
-                  "instantiated symbol\n",
+    s_log_message(_("WARNING: Symbol version mismatch on refdes %s (%s):\n"
+                    "\tSymbol in library is newer than "
+                    "instantiated symbol\n"),
                   refdes, object->complex_basename);
 
     /* break up the version values into major.minor numbers */
@@ -1517,11 +1520,11 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
     if (inside_major > outside_major)
     {
       char* refdes_copy;
-      fprintf(stderr, "\tMAJOR VERSION CHANGE (file %.3f, "
-              "instantiated %.3f, %s)!\n",
+      fprintf(stderr, _("\tMAJOR VERSION CHANGE (file %.3f, "
+                        "instantiated %.3f, %s)!\n"),
               inside_value, outside_value, refdes);
-      s_log_message("\tMAJOR VERSION CHANGE (file %.3f, "
-                    "instantiated %.3f)!\n",
+      s_log_message(_("\tMAJOR VERSION CHANGE (file %.3f, "
+                      "instantiated %.3f)!\n"),
                     inside_value, outside_value);
 
       /* add the refdes to the major_changed_refdes GList */
@@ -1538,11 +1541,11 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
 
     if (inside_minor > outside_minor)
     {
-      fprintf(stderr, "\tMinor version change (file %.3f, "
-              "instantiated %.3f)\n",
+      fprintf(stderr, _("\tMinor version change (file %.3f, "
+                        "instantiated %.3f)\n"),
               inside_value, outside_value);
-      s_log_message("\tMinor version change (file %.3f, "
-                    "instantiated %.3f)\n",
+      s_log_message(_("\tMinor version change (file %.3f, "
+                      "instantiated %.3f)\n"),
                     inside_value, outside_value);
     }
 
@@ -1552,9 +1555,9 @@ o_complex_check_symversion(TOPLEVEL* toplevel, OBJECT* object)
   /* outside value is greater than inside value, this is weird case */
   if ((inside_present && outside_present) && (outside_value > inside_value))
   {
-    s_log_message("WARNING: Symbol version oddity on refdes %s:\n"
-                  "\tInstanciated symbol is newer than "
-                  "symbol in library\n",
+    s_log_message(_("WARNING: Symbol version oddity on refdes %s:\n"
+                    "\tInstanciated symbol is newer than "
+                    "symbol in library\n"),
                   refdes);
     goto done;
   }
diff --git a/libgeda/src/o_embed.c b/libgeda/src/o_embed.c
index 5d5c355..b052d4d 100644
--- a/libgeda/src/o_embed.c
+++ b/libgeda/src/o_embed.c
@@ -46,7 +46,7 @@ void o_embed(TOPLEVEL *toplevel, OBJECT *o_current)
     /* set the embedded flag */
     o_current->complex_embedded = TRUE;
 
-    s_log_message ("Component [%s] has been embedded\n",
+    s_log_message (_("Component [%s] has been embedded\n"),
                    o_current->complex_basename);
     
     /* page content has been modified */
@@ -59,7 +59,7 @@ void o_embed(TOPLEVEL *toplevel, OBJECT *o_current)
 
     o_current->picture->embedded = 1;
     
-    s_log_message ("Picture [%s] has been embedded\n",
+    s_log_message (_("Picture [%s] has been embedded\n"),
 		   basename(o_current->picture->filename));
     
     
@@ -88,14 +88,15 @@ void o_unembed(TOPLEVEL *toplevel, OBJECT *o_current)
 
     if (sym == NULL) {
       /* symbol not found in the symbol library: signal an error */
-      s_log_message ("Could not find component [%s], while trying to unembed. Component is still embedded\n",
+      s_log_message (_("Could not find component [%s], while trying to "
+                       "unembed. Component is still embedded\n"),
                      o_current->complex_basename);
       
     } else {
       /* clear the embedded flag */
       o_current->complex_embedded = FALSE;
 
-      s_log_message ("Component [%s] has been successfully unembedded\n",
+      s_log_message (_("Component [%s] has been successfully unembedded\n"),
                      o_current->complex_basename);
       
       /* page content has been modified */
@@ -110,7 +111,7 @@ void o_unembed(TOPLEVEL *toplevel, OBJECT *o_current)
 
     o_current->picture->embedded = 0;
     
-    s_log_message ("Picture [%s] has been unembedded\n",
+    s_log_message (_("Picture [%s] has been unembedded\n"),
 		   basename(o_current->picture->filename));
     
     
diff --git a/libgeda/src/o_line_basic.c b/libgeda/src/o_line_basic.c
index 8f8b917..2d957c5 100644
--- a/libgeda/src/o_line_basic.c
+++ b/libgeda/src/o_line_basic.c
@@ -285,16 +285,16 @@ OBJECT *o_line_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
    * It also checks is the required color is valid.
    */
   if (x1 == x2 && y1 == y2) {
-    fprintf(stderr, "Found a zero length line [ %c %d %d %d %d %d ]\n",
+    fprintf(stderr, _("Found a zero length line [ %c %d %d %d %d %d ]\n"),
             type, x1, y1, x2, y2, color);
-    s_log_message("Found a zero length line [ %c %d %d %d %d %d ]\n",
+    s_log_message(_("Found a zero length line [ %c %d %d %d %d %d ]\n"),
                   type, x1, y1, x2, y2, color);
   }
   
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
diff --git a/libgeda/src/o_net_basic.c b/libgeda/src/o_net_basic.c
index c7ec0a5..b70bfee 100644
--- a/libgeda/src/o_net_basic.c
+++ b/libgeda/src/o_net_basic.c
@@ -154,9 +154,9 @@ OBJECT *o_net_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   d_y2 = y2;
 
   if (x1 == x2 && y1 == y2) {
-    fprintf(stderr, "Found a zero length net [ %c %d %d %d %d %d ]\n",
+    fprintf(stderr, _("Found a zero length net [ %c %d %d %d %d %d ]\n"),
             type, x1, y1, x2, y2, color);
-    s_log_message("Found a zero length net [ %c %d %d %d %d %d ]\n",
+    s_log_message(_("Found a zero length net [ %c %d %d %d %d %d ]\n"),
                   type, x1, y1, x2, y2, color);
   }
 
@@ -166,9 +166,9 @@ OBJECT *o_net_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   }
 
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
diff --git a/libgeda/src/o_picture.c b/libgeda/src/o_picture.c
index 6dea434..98ede2c 100644
--- a/libgeda/src/o_picture.c
+++ b/libgeda/src/o_picture.c
@@ -77,8 +77,10 @@ OBJECT *o_picture_read(TOPLEVEL *toplevel, OBJECT *object_list,
 	 &type, &x1, &y1, &width, &height, &angle, &mirrored, &embedded);
   
   if (num_conv != 8) {
-    fprintf(stderr, "Error reading picture definition line: %s.\n", first_line);
-    s_log_message ("Error reading picture definition line: %s.\n", first_line);
+    fprintf(stderr, _("Error reading picture definition line: %s.\n"),
+            first_line);
+    s_log_message (_("Error reading picture definition line: %s.\n"),
+                   first_line);
   }
 
   /* Convert from ascii character to number */
@@ -91,27 +93,27 @@ OBJECT *o_picture_read(TOPLEVEL *toplevel, OBJECT *object_list,
   }
 
   if (width == 0 || height == 0) {
-    fprintf(stderr, "Found a zero width/height picture [ %c %d %d %d %d ]\n",
+    fprintf(stderr, _("Found a zero width/height picture [ %c %d %d %d %d ]\n"),
             type, x1, y1, width, height);
-    s_log_message("Found a zero width/height picture [ %c %d %d %d %d ]\n",
+    s_log_message(_("Found a zero width/height picture [ %c %d %d %d %d ]\n"),
                   type, x1, y1, width, height);
   }
 
   if ( (mirrored > 1) || (mirrored < 0)) {
-    fprintf(stderr, "Found a picture with a wrong 'mirrored' parameter: %c.\n",
+    fprintf(stderr, _("Found a picture with a wrong 'mirrored' parameter: %c.\n"),
 	    mirrored);
-    s_log_message("Found a picture with a wrong 'mirrored' parameter: %c.\n",
+    s_log_message(_("Found a picture with a wrong 'mirrored' parameter: %c.\n"),
 	    mirrored);
-    s_log_message("Setting mirrored to 0\n");
+    s_log_message(_("Setting mirrored to 0\n"));
     mirrored = 0;
   }
 
   if ( (embedded > 1) || (embedded < 0)) {
-    fprintf(stderr, "Found a picture with a wrong 'embedded' parameter: %c.\n",
+    fprintf(stderr, _("Found a picture with a wrong 'embedded' parameter: %c.\n"),
 	    embedded);
-    s_log_message("Found a picture with a wrong 'embedded' parameter: %c.\n",
+    s_log_message(_("Found a picture with a wrong 'embedded' parameter: %c.\n"),
 	    embedded);
-    s_log_message("Setting embedded to 0\n");
+    s_log_message(_("Setting embedded to 0\n"));
     embedded = 0;
   }
   switch(angle) {
@@ -123,11 +125,11 @@ OBJECT *o_picture_read(TOPLEVEL *toplevel, OBJECT *object_list,
     break;
 
     default:
-    fprintf(stderr, "Found an unsupported picture angle [ %d ]\n", angle);
-    s_log_message("Found an unsupported picture angle [ %d ]\n", angle);
-    s_log_message("Setting angle to 0\n");
-    angle=0;
-    break;
+      fprintf(stderr, _("Found an unsupported picture angle [ %d ]\n"), angle);
+      s_log_message(_("Found an unsupported picture angle [ %d ]\n"), angle);
+      s_log_message(_("Setting angle to 0\n"));
+      angle=0;
+      break;
 
   }
 
@@ -139,8 +141,8 @@ OBJECT *o_picture_read(TOPLEVEL *toplevel, OBJECT *object_list,
   if (embedded == 0) {
     pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
     if (pixbuf == NULL) {
-      fprintf(stderr, "Error loading picture from file: %s.\n", filename);
-      s_log_message( "Error loading picture from file: %s.\n", filename);
+      fprintf(stderr, _("Error loading picture from file: %s.\n"), filename);
+      s_log_message(_("Error loading picture from file: %s.\n"), filename);
     }
   }
   else {
@@ -170,16 +172,15 @@ OBJECT *o_picture_read(TOPLEVEL *toplevel, OBJECT *object_list,
 						     &pixdata_serialized_length);
 
     if (pixdata_serialized_data == NULL) {
-      fprintf(stderr, "Error decoding picture.\n");      
-      s_log_message ("Error decoding picture.\n");
+      fprintf(stderr, _("Error decoding picture.\n"));
+      s_log_message (_("Error decoding picture.\n"));
     }
     else {
       /* Deserialize the picture */
       if (!gdk_pixdata_deserialize(&pixdata,pixdata_serialized_length, 
 				   (guint8 *) pixdata_serialized_data, NULL)) {
-				     fprintf(stderr, "Error deserializing picture.\n");
-				   }
-      else {
+        fprintf(stderr, _("Error deserializing picture.\n"));
+      } else {
 	pixbuf = gdk_pixbuf_from_pixdata (&pixdata,TRUE, NULL);
       }
     }
@@ -197,15 +198,17 @@ OBJECT *o_picture_read(TOPLEVEL *toplevel, OBJECT *object_list,
     /* If the pixbuf couldn't be loaded, then try to load a warning picture */
     char *temp_filename;
 
-    fprintf(stderr, "Loading warning picture.\n");
-    s_log_message ("Loading warning picture.\n");
+    fprintf(stderr, _("Loading warning picture.\n"));
+    s_log_message (_("Loading warning picture.\n"));
     
     temp_filename = g_strconcat(toplevel->bitmap_directory,
 			       G_DIR_SEPARATOR_S, "gschem-warning.png", NULL);
     pixbuf = gdk_pixbuf_new_from_file (temp_filename, NULL);
     if (pixbuf == NULL) {
-      fprintf(stderr, "Error loading picture from file: %s.\n", temp_filename);
-      s_log_message( "Error loading picture from file: %s.\n", temp_filename);
+      fprintf(stderr, _("Error loading picture from file: %s.\n"),
+              temp_filename);
+      s_log_message( _("Error loading picture from file: %s.\n"),
+                     temp_filename);
     }      
     g_free (temp_filename);
   }
@@ -269,8 +272,8 @@ char *o_picture_save(OBJECT *object)
     pixdata_serialized_data = (gchar *) gdk_pixdata_serialize(&pixdata, 
 						    &pixdata_serialized_stream_length);
     if (pixdata_serialized_data == NULL) {
-      fprintf (stderr, "ERROR: o_picture_save: failed to create serialized data from picture\n");
-      s_log_message ("ERROR: o_picture_save: failed to create serialized data from picture\n");
+      fprintf (stderr, _("ERROR: o_picture_save: failed to create serialized data from picture\n"));
+      s_log_message (_("ERROR: o_picture_save: failed to create serialized data from picture\n"));
     }
     else {
       /* Encode the picture */
@@ -278,8 +281,8 @@ char *o_picture_save(OBJECT *object)
 						 pixdata_serialized_stream_length,
 						 &encoded_picture_length, TRUE); 
       if (encoded_picture == NULL) {
-	fprintf(stderr, "ERROR: o_picture_save: unable to encode the picture.\n");
-	s_log_message("ERROR: o_picture_save: unable to encode the picture.\n");
+	fprintf(stderr, _("ERROR: o_picture_save: unable to encode the picture.\n"));
+	s_log_message(_("ERROR: o_picture_save: unable to encode the picture.\n"));
       }
     }
   }
diff --git a/libgeda/src/o_pin_basic.c b/libgeda/src/o_pin_basic.c
index 0d1b7d1..49cc8a3 100644
--- a/libgeda/src/o_pin_basic.c
+++ b/libgeda/src/o_pin_basic.c
@@ -138,13 +138,15 @@ OBJECT *o_pin_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
 
   if (whichend == -1) {
     fprintf(stderr,
-            "Found a pin which did not have the whichone field set.\nVerify and correct manually.\n");
-    s_log_message("Found a pin which did not have the whichone field set.\nVerify and correct manully.\n");
+            _("Found a pin which did not have the whichone field set.\n"
+              "Verify and correct manually.\n"));
+    s_log_message(_("Found a pin which did not have the whichone field set.\n"
+                    "Verify and correct manully.\n"));
   } else if (whichend < -1 || whichend > 1) {
     fprintf(stderr,
-            "Found an invalid whichend on a pin (reseting to zero): %d\n",
+            _("Found an invalid whichend on a pin (reseting to zero): %d\n"),
             whichend);
-    s_log_message("Found an invalid whichend on a pin (reseting to zero): %d\n",
+    s_log_message(_("Found an invalid whichend on a pin (reseting to zero): %d\n"),
                   whichend);
     whichend = 0;
   }
@@ -155,14 +157,14 @@ OBJECT *o_pin_read(TOPLEVEL *toplevel, OBJECT *object_list, char buf[],
   d_y2 = y2; 
 
   if (x1 == x2 && y1 == y2) {
-    fprintf(stderr, "Found a zero length pin: [ %s ]\n", buf);
-    s_log_message("Found a zero length pin: [ %s ]\n", buf);
+    fprintf(stderr, _("Found a zero length pin: [ %s ]\n"), buf);
+    s_log_message(_("Found a zero length pin: [ %s ]\n"), buf);
   }
 
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", buf);
-    s_log_message("Found an invalid color [ %s ]\n", buf);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Found an invalid color [ %s ]\n"), buf);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
diff --git a/libgeda/src/o_text_basic.c b/libgeda/src/o_text_basic.c
index 9065c40..970efaa 100644
--- a/libgeda/src/o_text_basic.c
+++ b/libgeda/src/o_text_basic.c
@@ -178,12 +178,12 @@ OBJECT *o_text_load_font(TOPLEVEL *toplevel, gunichar needed_char)
     /* convert needed_char to a utf-8 string */
     l = g_unichar_to_utf8 (needed_char, outbuf);
     outbuf[l] = '\0';
-    s_log_message("Could not find character '%s' definition.\n", outbuf);
+    s_log_message(_("Could not find character '%s' definition.\n"), outbuf);
     
     g_free (temp_string);
     temp_string = g_strdup_printf("%s%cquest.sym", toplevel->font_directory, G_DIR_SEPARATOR);
     if ( access(temp_string, R_OK) != 0 ) {
-      fprintf(stderr, "Could not load question font char -- check font-directory keyword\n");
+      fprintf(stderr, _("Could not load question font char -- check font-directory keyword\n"));
       exit(-1);
     }
     not_found = TRUE; 
@@ -1071,8 +1071,8 @@ OBJECT *o_text_read(TOPLEVEL *toplevel, OBJECT *object_list,
   }
 
   if (size == 0) {
-    fprintf(stderr, "Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n", type, x, y, color, size, visibility, show_name_value, angle, alignment);
-    s_log_message("Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n", type, x, y, color, size, visibility, show_name_value, angle, alignment);
+    fprintf(stderr, _("Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"), type, x, y, color, size, visibility, show_name_value, angle, alignment);
+    s_log_message(_("Found a zero size text string [ %c %d %d %d %d %d %d %d %d ]\n"), type, x, y, color, size, visibility, show_name_value, angle, alignment);
   }
 
   switch(angle) {
@@ -1084,11 +1084,13 @@ OBJECT *o_text_read(TOPLEVEL *toplevel, OBJECT *object_list,
     break;
 
     default:
-    fprintf(stderr, "Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n", type, x, y, color, size, visibility, show_name_value, angle, alignment);
-    s_log_message("Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n", type, x, y, color, size, visibility, show_name_value, angle, alignment);
-    s_log_message("Setting angle to 0\n");
-    angle=0;
-    break;
+      fprintf(stderr, _("Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"),
+              type, x, y, color, size, visibility, show_name_value, angle, alignment);
+      s_log_message(_("Found an unsupported text angle [ %c %d %d %d %d %d %d %d %d ]\n"),
+                    type, x, y, color, size, visibility, show_name_value, angle, alignment);
+      s_log_message(_("Setting angle to 0\n"));
+      angle=0;
+      break;
 
   }
 
@@ -1106,17 +1108,19 @@ OBJECT *o_text_read(TOPLEVEL *toplevel, OBJECT *object_list,
     break;
 		
     default:
-    fprintf(stderr, "Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n", type, x, y, color, size, visibility, show_name_value, angle, alignment);
-    s_log_message("Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n", type, x, y, color, size, visibility, show_name_value, angle, alignment);
-    s_log_message("Setting alignment to LOWER_LEFT\n");
-    alignment = LOWER_LEFT; 
-    break;
+      fprintf(stderr, _("Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"),
+              type, x, y, color, size, visibility, show_name_value, angle, alignment);
+      s_log_message(_("Found an unsupported text alignment [ %c %d %d %d %d %d %d %d %d ]\n"),
+                    type, x, y, color, size, visibility, show_name_value, angle, alignment);
+      s_log_message(_("Setting alignment to LOWER_LEFT\n"));
+      alignment = LOWER_LEFT;
+      break;
   }
 
   if (color < 0 || color > MAX_COLORS) {
-    fprintf(stderr, "Found an invalid color [ %s ]\n", first_line);
-    s_log_message("Found an invalid color [ %s ]\n", first_line);
-    s_log_message("Setting color to WHITE\n");
+    fprintf(stderr, _("Found an invalid color [ %s ]\n"), first_line);
+    s_log_message(_("Found an invalid color [ %s ]\n"), first_line);
+    s_log_message(_("Setting color to WHITE\n"));
     color = WHITE;
   }
 
@@ -1194,9 +1198,8 @@ void o_text_set_info_font(char buf[])
   if (buf_ptr != NULL && *buf_ptr != '\0') {
     character = g_utf8_get_char_validated (buf_ptr, -1);
     if (character == (gunichar)-1) {
-      s_log_message (
-        "Failed to validate utf-8 character in font definition: \"%s\".\n",
-        string);
+      s_log_message (_("Failed to validate utf-8 character in font definition: \"%s\".\n"),
+                     string);
       return;
     }
     /* move buf_ptr just after character */
diff --git a/libgeda/src/s_clib.c b/libgeda/src/s_clib.c
index 2158e68..8cbfe23 100644
--- a/libgeda/src/s_clib.c
+++ b/libgeda/src/s_clib.c
@@ -451,17 +451,17 @@ static gchar *run_source_command (const gchar *command)
                              &e);
 
   if (e != NULL) {
-    s_log_message ("Library command failed [%s]: %s\n", command, 
+    s_log_message (_("Library command failed [%s]: %s\n"), command,
 		   e->message);
     g_error_free (e);
 
   } else if (WIFSIGNALED(exit_status)) {
-    s_log_message ("Library command failed [%s]: Uncaught signal %i.\n",
-		   command, WTERMSIG(exit_status));
+    s_log_message (_("Library command failed [%s]: Uncaught signal %i.\n"),
+                   command, WTERMSIG(exit_status));
     
   } else if (!WIFEXITED(exit_status)) {
-    s_log_message ("Library command failed [%s]\n", command);
-    s_log_message("Error output was:\n%s\n", standard_error);
+    s_log_message (_("Library command failed [%s]\n"), command);
+    s_log_message(_("Error output was:\n%s\n"), standard_error);
 
   } else {
     success = TRUE;
@@ -543,7 +543,7 @@ static gchar *uniquify_source_name (const gchar *name)
     newname = g_strdup_printf ("%s<%i>", name, i);
   } while (s_clib_get_source_by_name (newname) != NULL);
 
-  s_log_message ("Library name [%s] already in use.  Using [%s].\n", 
+  s_log_message (_("Library name [%s] already in use.  Using [%s].\n"),
                  name, newname);
 
   return newname;
@@ -580,7 +580,7 @@ static void refresh_directory (CLibSource *source)
   dir = g_dir_open (source->directory, 0, &e);
 
   if (e != NULL) {
-    s_log_message ("Failed to open directory [%s]: %s\n",
+    s_log_message (_("Failed to open directory [%s]: %s\n"),
 		   source->directory, e->message);
     g_error_free (e);
     return;
@@ -716,7 +716,7 @@ static void refresh_scm (CLibSource *source)
   symlist = scm_call_0 (source->list_fn);
 
   if (SCM_NCONSP (symlist) && (symlist != SCM_EOL)) {
-    s_log_message ("Failed to scan library [%s]: Scheme function returned non-list\n",
+    s_log_message (_("Failed to scan library [%s]: Scheme function returned non-list\n"),
 		   source->name);
     return;
   }
@@ -724,7 +724,7 @@ static void refresh_scm (CLibSource *source)
   while (symlist != SCM_EOL) {
     symname = SCM_CAR (symlist);
     if (!scm_is_string (symname)) {
-      s_log_message ("Non-string symbol name while scanning library [%s]\n",
+      s_log_message (_("Non-string symbol name while scanning library [%s]\n"),
 		     source->name);
     } else {
       symbol = g_new0 (CLibSymbol, 1);
@@ -879,15 +879,15 @@ const CLibSource *s_clib_add_command (const gchar *list_cmd,
   gchar *realname;
   
   if (name == NULL) {
-    s_log_message ("Cannot add library: name not specified\n");
+    s_log_message (_("Cannot add library: name not specified\n"));
     return NULL;
   }
   
   realname = uniquify_source_name (name);
 
   if (list_cmd == NULL || get_cmd == NULL) {
-    s_log_message ("Cannot add library [%s]: both 'list' and "
-                   "'get' commands must be specified.\n",
+    s_log_message (_("Cannot add library [%s]: both 'list' and "
+                     "'get' commands must be specified.\n"),
 		   realname);
   }
 
@@ -926,7 +926,7 @@ const CLibSource *s_clib_add_scm (SCM listfunc, SCM getfunc, const gchar *name)
   gchar *realname;
 
   if (name == NULL) {
-    s_log_message ("Cannot add library: name not specified\n");
+    s_log_message (_("Cannot add library: name not specified\n"));
     return NULL;
   }  
   
@@ -934,7 +934,7 @@ const CLibSource *s_clib_add_scm (SCM listfunc, SCM getfunc, const gchar *name)
 
   if (scm_is_false (scm_procedure_p (listfunc)) 
       && scm_is_false (scm_procedure_p (getfunc))) {
-    s_log_message ("Cannot add Scheme-library [%s]: callbacks must be closures\n",
+    s_log_message (_("Cannot add Scheme-library [%s]: callbacks must be closures\n"),
 		   realname);
     return NULL;
   }
@@ -1061,7 +1061,7 @@ static gchar *get_data_directory (const CLibSymbol *symbol)
   g_file_get_contents (filename, &data, NULL, &e);
 
   if (e != NULL) {
-    s_log_message ("Failed to load symbol from file [%s]: %s\n",
+    s_log_message (_("Failed to load symbol from file [%s]: %s\n"),
 		   filename, e->message);
     g_error_free (e);
   }
@@ -1119,7 +1119,7 @@ static gchar *get_data_scm (const CLibSymbol *symbol)
 			scm_from_locale_string (symbol->name));
 
   if (!scm_is_string (symdata)) {
-    s_log_message ("Failed to load symbol data [%s] from source [%s]\n",
+    s_log_message (_("Failed to load symbol data [%s] from source [%s]\n"),
 		   symbol->name, symbol->source->name);
     return NULL;
   }
@@ -1360,17 +1360,17 @@ const CLibSymbol *s_clib_get_symbol_by_name (const gchar *name)
   symlist = s_clib_search (name, CLIB_EXACT);
 
   if (symlist == NULL) {
-    s_log_message ("Component [%s] was not found in the component library\n", 
+    s_log_message (_("Component [%s] was not found in the component library\n"),
                    name);
     /*! \bug Why does this need to go to stderr as well? */
     fprintf(stderr,
-	    "Component [%s] was not found in any component library\n", 
+	    _("Component [%s] was not found in any component library\n"),
 	    name);
     return NULL;
   }
 
   if (g_list_next (symlist) != NULL) { /* More than one symbol */
-    s_log_message ("More than one component found with name [%s]\n",
+    s_log_message (_("More than one component found with name [%s]\n"),
                    name);
   }
 
diff --git a/libgeda/src/s_hierarchy.c b/libgeda/src/s_hierarchy.c
index 1b6a02d..83b3baf 100644
--- a/libgeda/src/s_hierarchy.c
+++ b/libgeda/src/s_hierarchy.c
@@ -85,8 +85,8 @@ int s_hierarchy_down_schematic_single(TOPLEVEL *toplevel,
 	  ; /* void */
 
 	if (found->pid == forbear->pid) {
-	  s_log_message("hierarchy loop detected while visiting page:\n"
-			"  \"%s\"\n",found->page_filename);
+	  s_log_message(_("hierarchy loop detected while visiting page:\n"
+                          "  \"%s\"\n"), found->page_filename);
 	  return -1;  /* error signal */
 	}
         s_page_goto (toplevel, found);
@@ -240,7 +240,7 @@ void s_hierarchy_up(TOPLEVEL *toplevel, int pid)
   PAGE *p_current;
 
   if (pid < 0) {
-    s_log_message("There are no schematics above the current one!\n");
+    s_log_message(_("There are no schematics above the current one!\n"));
     return;
   }
 
@@ -249,8 +249,8 @@ void s_hierarchy_up(TOPLEVEL *toplevel, int pid)
   if (p_current) {
     s_page_goto(toplevel, p_current);
   } else {
-    s_log_message("Cannot find any schematics above the current one!\n");
-    s_log_message("Maybe toplevel schematic page was closed/discarded?\n");
+    s_log_message(_("Cannot find any schematics above the current one!\n"));
+    s_log_message(_("Maybe toplevel schematic page was closed/discarded?\n"));
   }
 }
 
@@ -326,8 +326,8 @@ GList *s_hierarchy_traversepages(TOPLEVEL *toplevel,
 	  s_page_goto(toplevel, p_current);
 	}
 	else {
-	  s_log_message("ERROR in s_hierarchy_traverse: "
-			"schematic not found: %s\n", 
+	  s_log_message(_("ERROR in s_hierarchy_traverse: "
+                          "schematic not found: %s\n"),
 			filename);
 	}
 	
diff --git a/libgeda/src/s_page.c b/libgeda/src/s_page.c
index b6c7398..007f900 100644
--- a/libgeda/src/s_page.c
+++ b/libgeda/src/s_page.c
@@ -160,8 +160,10 @@ void s_page_delete (TOPLEVEL *toplevel, PAGE *page)
   real_filename = follow_symlinks (page->page_filename, NULL);
   
   if (real_filename == NULL) {
-    s_log_message ("s_page_delete: Can't get the real filename of %s.", page->page_filename);
-    fprintf (stderr, "s_page_delete: Can't get the real filename of %s.\n", page->page_filename);
+    s_log_message (_("s_page_delete: Can't get the real filename of %s."),
+                   page->page_filename);
+    fprintf (stderr, _("s_page_delete: Can't get the real filename of %s.\n"),
+             page->page_filename);
   }
   else {
     backup_filename = f_get_autosave_filename (real_filename);
@@ -171,7 +173,9 @@ void s_page_delete (TOPLEVEL *toplevel, PAGE *page)
 	 (!g_file_test(backup_filename, G_FILE_TEST_IS_DIR)) )
     {
       if (unlink(backup_filename) != 0) {
-	s_log_message("s_page_delete: Unable to delete backup file %s.", backup_filename);      }
+	s_log_message(_("s_page_delete: Unable to delete backup file %s."),
+                      backup_filename);
+      }
     }
     g_free (backup_filename);
   }
@@ -349,13 +353,13 @@ gint s_page_save_all (TOPLEVEL *toplevel)
     s_page_goto (toplevel, p_current);
 
     if (f_save (toplevel, p_current->page_filename)) {
-      s_log_message ("Saved [%s]\n",
+      s_log_message (_("Saved [%s]\n"),
                      toplevel->page_current->page_filename);
       /* reset the CHANGED flag of p_current */
       p_current->CHANGED = 0;
 
     } else {
-      s_log_message ("Could NOT save [%s]\n", 
+      s_log_message (_("Could NOT save [%s]\n"),
                      toplevel->page_current->page_filename);
       /* increase the error counter */
       status++;
diff --git a/libgeda/src/s_slib.c b/libgeda/src/s_slib.c
index ea96161..c7db1d5 100644
--- a/libgeda/src/s_slib.c
+++ b/libgeda/src/s_slib.c
@@ -185,7 +185,7 @@ char *s_slib_search_lowlevel(const char *basename)
   if (slib_path) {
     /* return type */
 
-    s_log_message("Found [%s]\n", basename);
+    s_log_message(_("Found [%s]\n"), basename);
     /* s_log_message("Found [%s] in [%s]\n", basename, slib_path);*/
 
     len = strlen(basename)+strlen(slib_path);
@@ -201,10 +201,10 @@ char *s_slib_search_lowlevel(const char *basename)
     return(full_path);
   } else {
 
-    s_log_message("Could not find [%s] in any SourceLibrary\n", basename);
+    s_log_message(_("Could not find [%s] in any SourceLibrary\n"), basename);
 
 #if DEBUG 
-    fprintf(stderr, "Could not find [%s] in any SourceLibrary\n", basename);
+    fprintf(stderr, _("Could not find [%s] in any SourceLibrary\n"), basename);
 #endif
     return(NULL);
   }




_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs