From 2df3d3dee8295ee756b24a5f6fbee1238480ad1c Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Mon, 21 Mar 2011 15:10:12 +0000 Subject: [PATCH] [PATCH 4/4] Bug #615168: N_ in the root module * src/app-utils/app-utils.scm: * src/app-utils/c-interface.scm: Make N_ available to all of Gnucash. A hack, but a correct hack that permits the Scheme code to be compiled. Patch by Andy Wingo. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20438 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/app-utils/app-utils.scm | 16 ++++++++++++++++ src/app-utils/c-interface.scm | 9 --------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/app-utils/app-utils.scm b/src/app-utils/app-utils.scm index 2c64b12e33..3b00d50cc9 100644 --- a/src/app-utils/app-utils.scm +++ b/src/app-utils/app-utils.scm @@ -273,6 +273,22 @@ (define gnc:*kvp-option-path* (list KVP-OPTION-PATH)) (export gnc:*kvp-option-path*) +;; gettext functions +(define gnc:gettext gnc-gettext-helper) +(define gnc:_ gnc:gettext) +(define _ gnc:gettext) +(define-syntax N_ + (syntax-rules () + ((_ x) x))) + +;; A lot of Gnucash's code uses procedural interfaces to load modules. +;; This normally works, for procedures -- but for values that need to be +;; known at expand time, like macros, it doesn't work (in Guile 2.0 at +;; least). So instead of auditing all the code, since N_ is really the +;; only Gnucash-defined macro in use, the surgical solution is just to +;; make N_ available everywhere. +(module-define! the-root-module 'N_ (module-ref (current-module) 'N_)) + (load-from-path "c-interface.scm") (load-from-path "config-var.scm") (load-from-path "options.scm") diff --git a/src/app-utils/c-interface.scm b/src/app-utils/c-interface.scm index 548e3bb5ae..0f912a3caf 100644 --- a/src/app-utils/c-interface.scm +++ b/src/app-utils/c-interface.scm @@ -37,15 +37,6 @@ (call-with-output-string write-error))) -;; gettext functions -(define gnc:gettext gnc-gettext-helper) -(define gnc:_ gnc:gettext) -(define _ gnc:gettext) -(define-syntax N_ - (syntax-rules () - ((_ x) x))) - - ;; This database can be used to store and retrieve translatable ;; strings. Strings that are returned by the lookup function are ;; translated with gettext.