mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-19 18:20:22 +02:00
i18n: Use Gnulib's `nl_langinfo' module.
* configure.ac: Remove checks for <langinfo.h> and <nl_types.h>, and `nl_langinfo'. * libguile/i18n.c: Remove #ifdefs for HAVE_LANGINFO_H, HAVE_NL_TYPES_H, HAVE_NL_ITEM, and HAVE_LANGINFO_CODESET. (SCM_VALIDATE_OPTIONAL_LOCALE_COPY): Use `SCM_UNBNDP'. * m4/gnulib-cache.m4 (gl_MODULES): Add `nl_langinfo'. * module/ice-9/i18n.scm (define-vector-langinfo-mapping): Remove `defaults' parameter; assume (provided? 'nl-langinfo) is always true. Update users accordingly. (define-simple-langinfo-mapping): Likewise. (define-monetary-langinfo-mapping): Likewise, but do not assume LOCAL-ITEM and INTL-ITEM are always defined.
This commit is contained in:
parent
eb4a14ed47
commit
a0919aefee
5 changed files with 50 additions and 103 deletions
|
@ -1,6 +1,6 @@
|
|||
;;;; i18n.scm --- internationalization support -*- coding: utf-8 -*-
|
||||
|
||||
;;;; Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
;;;; Copyright (C) 2006, 2007, 2009, 2010, 2012 Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
;;;; modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -101,13 +101,10 @@
|
|||
;;;
|
||||
|
||||
;; Helper macro: Define a procedure named NAME that maps its argument to
|
||||
;; NL-ITEMS (when `nl-langinfo' is provided) or DEFAULTS (when `nl-langinfo'
|
||||
;; is not provided).
|
||||
(define-macro (define-vector-langinfo-mapping name nl-items defaults)
|
||||
;; NL-ITEMS (when `nl-langinfo' is provided).
|
||||
(define-macro (define-vector-langinfo-mapping name nl-items)
|
||||
(let* ((item-count (length nl-items))
|
||||
(defines (if (provided? 'nl-langinfo)
|
||||
`(define %nl-items (vector #f ,@nl-items))
|
||||
`(define %defaults (vector #f ,@defaults))))
|
||||
(defines `(define %nl-items (vector #f ,@nl-items)))
|
||||
(make-body (lambda (result)
|
||||
`(if (and (integer? item) (exact? item))
|
||||
(if (and (>= item 1) (<= item ,item-count))
|
||||
|
@ -116,28 +113,21 @@
|
|||
(throw 'wrong-type-arg "wrong argument type" item)))))
|
||||
`(define (,name item . locale)
|
||||
,defines
|
||||
,(make-body (if (provided? 'nl-langinfo)
|
||||
'(apply nl-langinfo (vector-ref %nl-items item) locale)
|
||||
'(vector-ref %defaults item))))))
|
||||
,(make-body '(apply nl-langinfo (vector-ref %nl-items item) locale)))))
|
||||
|
||||
|
||||
(define-vector-langinfo-mapping locale-day-short
|
||||
(ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7)
|
||||
("Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat"))
|
||||
(ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7))
|
||||
|
||||
(define-vector-langinfo-mapping locale-day
|
||||
(DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7)
|
||||
("Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"))
|
||||
(DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7))
|
||||
|
||||
(define-vector-langinfo-mapping locale-month-short
|
||||
(ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6
|
||||
ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12)
|
||||
("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"))
|
||||
ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12))
|
||||
|
||||
(define-vector-langinfo-mapping locale-month
|
||||
(MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 MON_10 MON_11 MON_12)
|
||||
("January" "February" "March" "April" "May" "June" "July" "August"
|
||||
"September" "October" "November" "December"))
|
||||
(MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 MON_10 MON_11 MON_12))
|
||||
|
||||
|
||||
|
||||
|
@ -145,36 +135,34 @@
|
|||
;;; Date and time.
|
||||
;;;
|
||||
|
||||
;; Helper macro: Define a procedure NAME that gets langinfo item ITEM.
|
||||
(define-macro (define-simple-langinfo-mapping name item default)
|
||||
(let ((body (if (and (provided? 'nl-langinfo) (defined? item))
|
||||
`(apply nl-langinfo ,item locale)
|
||||
default)))
|
||||
`(define (,name . locale)
|
||||
,body)))
|
||||
;; Define a procedure NAME that gets langinfo item ITEM. Gnulib's
|
||||
;; `nl_langinfo' guarantees that all these items are supported.
|
||||
(define-syntax-rule (define-simple-langinfo-mapping name item)
|
||||
(define* (name #:optional (locale %global-locale))
|
||||
(nl-langinfo item locale)))
|
||||
|
||||
(define-simple-langinfo-mapping locale-am-string
|
||||
AM_STR "AM")
|
||||
AM_STR)
|
||||
(define-simple-langinfo-mapping locale-pm-string
|
||||
PM_STR "PM")
|
||||
PM_STR)
|
||||
(define-simple-langinfo-mapping locale-date+time-format
|
||||
D_T_FMT "%a %b %e %H:%M:%S %Y")
|
||||
D_T_FMT)
|
||||
(define-simple-langinfo-mapping locale-date-format
|
||||
D_FMT "%m/%d/%y")
|
||||
D_FMT)
|
||||
(define-simple-langinfo-mapping locale-time-format
|
||||
T_FMT "%H:%M:%S")
|
||||
T_FMT)
|
||||
(define-simple-langinfo-mapping locale-time+am/pm-format
|
||||
T_FMT_AMPM "%I:%M:%S %p")
|
||||
T_FMT_AMPM)
|
||||
(define-simple-langinfo-mapping locale-era
|
||||
ERA "")
|
||||
ERA)
|
||||
(define-simple-langinfo-mapping locale-era-year
|
||||
ERA_YEAR "")
|
||||
ERA_YEAR)
|
||||
(define-simple-langinfo-mapping locale-era-date+time-format
|
||||
ERA_D_T_FMT "")
|
||||
ERA_D_T_FMT)
|
||||
(define-simple-langinfo-mapping locale-era-date-format
|
||||
ERA_D_FMT "")
|
||||
ERA_D_FMT)
|
||||
(define-simple-langinfo-mapping locale-era-time-format
|
||||
ERA_T_FMT "")
|
||||
ERA_T_FMT)
|
||||
|
||||
|
||||
|
||||
|
@ -182,13 +170,18 @@
|
|||
;;; Monetary information.
|
||||
;;;
|
||||
|
||||
;; Define a procedure NAME that gets item LOCAL-ITEM or INTL-ITEM,
|
||||
;; depending on whether the caller asked for the international version
|
||||
;; or not. Since Gnulib's `nl_langinfo' module doesn't guarantee that
|
||||
;; all these items are available, use DEFAULT/LOCAL and DEFAULT/INTL as
|
||||
;; default values when the system does not support them.
|
||||
(define-macro (define-monetary-langinfo-mapping name local-item intl-item
|
||||
default/local default/intl)
|
||||
(let ((body
|
||||
(let ((intl (if (and (provided? 'nl-langinfo) (defined? intl-item))
|
||||
(let ((intl (if (defined? intl-item)
|
||||
`(apply nl-langinfo ,intl-item locale)
|
||||
default/intl))
|
||||
(local (if (and (provided? 'nl-langinfo) (defined? local-item))
|
||||
(local (if (defined? local-item)
|
||||
`(apply nl-langinfo ,local-item locale)
|
||||
default/local)))
|
||||
`(if intl? ,intl ,local))))
|
||||
|
@ -205,15 +198,15 @@
|
|||
2 2)
|
||||
|
||||
(define-simple-langinfo-mapping locale-monetary-positive-sign
|
||||
POSITIVE_SIGN "+")
|
||||
POSITIVE_SIGN)
|
||||
(define-simple-langinfo-mapping locale-monetary-negative-sign
|
||||
NEGATIVE_SIGN "-")
|
||||
NEGATIVE_SIGN)
|
||||
(define-simple-langinfo-mapping locale-monetary-decimal-point
|
||||
MON_DECIMAL_POINT "")
|
||||
MON_DECIMAL_POINT)
|
||||
(define-simple-langinfo-mapping locale-monetary-thousands-separator
|
||||
MON_THOUSANDS_SEP "")
|
||||
MON_THOUSANDS_SEP)
|
||||
(define-simple-langinfo-mapping locale-monetary-digit-grouping
|
||||
MON_GROUPING '())
|
||||
MON_GROUPING)
|
||||
|
||||
(define-monetary-langinfo-mapping locale-currency-symbol-precedes-positive?
|
||||
P_CS_PRECEDES INT_P_CS_PRECEDES
|
||||
|
@ -359,11 +352,11 @@ locale is used."
|
|||
;;;
|
||||
|
||||
(define-simple-langinfo-mapping locale-digit-grouping
|
||||
GROUPING '())
|
||||
GROUPING)
|
||||
(define-simple-langinfo-mapping locale-decimal-point
|
||||
RADIXCHAR ".")
|
||||
RADIXCHAR)
|
||||
(define-simple-langinfo-mapping locale-thousands-separator
|
||||
THOUSEP "")
|
||||
THOUSEP)
|
||||
|
||||
(define* (number->locale-string number
|
||||
#:optional (fraction-digits #t)
|
||||
|
@ -409,9 +402,9 @@ number of fractional digits to be displayed."
|
|||
;;;
|
||||
|
||||
(define-simple-langinfo-mapping locale-yes-regexp
|
||||
YESEXPR "^[yY]")
|
||||
YESEXPR)
|
||||
(define-simple-langinfo-mapping locale-no-regexp
|
||||
NOEXPR "^[nN]")
|
||||
NOEXPR)
|
||||
|
||||
;; `YESSTR' and `NOSTR' are considered deprecated so we don't provide them.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue