This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

gettext and locale strings


Hi,

What do you think about using #"hello" for gettext stings which need
localization?

This would be easy to write and easy to identifier for a program that
extracts localization strings.

This simple program for example:

#! /usr/bin/guile \
-e main -s
!#

(load "locale.scm")

(define (main args)
  (display "Hello World!")
  (newline)
  (display #"\"Hello World!\" that needs localization!")
  (newline))

would produce with this locale.scm file:

(define (gettext str)
  "gettext dummy function"
  (string-append "[translation of: " str "]"))

(read-hash-extend #\"
		  (lambda (c port)
		    (let ((char-list '()))
		      (let loop ((char (read-char port)))
			(case char
			  ((#\") (gettext (list->string char-list)))
			  (else (if (eq? char #\\)
				    (set! char (let ((char (read-char port)))
						 (case char
						   ((#\n) #\nl)
						   ((#\t) #\ht)
						   (else char)))))
				(set! char-list (append char-list (list char)))
				(loop (read-char port))))))))

this output:

szi@olivia:~$ ./hello-world.scm
Hello World!
[translation of: "Hello World!" that needs localization!]

The extraction of localization strings could look like this:

#! /usr/bin/guile \
-e main -s
!#

(load "locale.scm")

(define filename "")

(define (gettext str)
  (display filename)
  (display ": ")
  (write str)
  (newline))

(define (main args)
  (if (pair? (cdr args))
      (set! filename (cadr args)))
  (if (access? filename R_OK)
      (let ((port (open-input-file filename)))
	(display "Starting gettext extraction for ")
	(write filename) (newline)
	(let loop ((obj (read port)))
	  (if (eof-object? obj)
	      (close-input-port port)
	      (loop (read port)))))
      (error "Can't read file\n")))

Although I have no idea why this script produces such an error:

szi@olivia:~$ ./extract-locale-strings.scm hello-world.scm
Starting gettext extraction for "hello-world.scm"
hello-world.scm: "\"Hello World!\" that needs localization!"
guile: Unknown # object: #\"

-- http://www.ping.de/sites/aibon/