- Publicity: Public Only All
localization-procs.tcl
Routines for localizing numbers, dates and monetary amounts
This is free software distributed under the terms of the GNU Public License. Full text of the license is available from the GNU Project: http://www.fsf.org/copyleft/gpl.html
- Location:
- packages/acs-lang/tcl/localization-procs.tcl
- Created:
- 30 September 2000
- Authors:
- Jeff Davis <davis@xarg.net>
- Ashok Argent-Katwala <akatwala@arsdigita.com>
- CVS Identification:
$Id: localization-procs.tcl,v 1.32 2024/09/11 06:15:48 gustafn Exp $
Procedures in this file
- clock_to_ansi (public, deprecated)
- lc_clock_to_ansi (public)
- lc_content_size_pretty (public)
- lc_get (public)
- lc_list_all_timezones (public)
- lc_numeric (public)
- lc_parse_number (public)
- lc_time_conn_to_system (public)
- lc_time_fmt (public)
- lc_time_local_to_utc (public)
- lc_time_system_to_conn (public)
- lc_time_tz_convert (public)
- lc_time_utc_to_local (public)
Detailed information
clock_to_ansi (public, deprecated)
clock_to_ansi seconds
Deprecated. Invoking this procedure generates a warning.
Convert a time in the Tcl internal clock seconds format to ANSI format, usable by lc_time_fmt. DEPRECATED: this proc does not comply with naming convention enforced by acs-tcl.naming__proc_naming automated test
- Parameters:
- seconds (required)
- Returns:
- ANSI (YYYY-MM-DD HH24:MI:SS) formatted date.
- Author:
- Lars Pind <lars@pinds.com>
- See Also:
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
lc_clock_to_ansi (public)
lc_clock_to_ansi seconds
Convert a time in the Tcl internal clock seconds format to ANSI format, usable by lc_time_fmt.
- Parameters:
- seconds (required)
- Returns:
- ANSI (YYYY-MM-DD HH24:MI:SS) formatted date.
- Author:
- Lars Pind <lars@pinds.com>
- See Also:
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs
lc_content_size_pretty (public)
lc_content_size_pretty [ -size size ] [ -precision precision ] \ [ -standard standard ]
Transforms data size, provided in nonnegative bytes, to KB, MB... up to YB.
- Switches:
- -size (optional, defaults to
"0"
)- Size in bytes
- -precision (optional, defaults to
"1"
)- Numbers in the fractional part
- -standard (optional, defaults to
"decimal"
)- Standard to use for binary prefix. Three standards are supported currently by this proc: - decimal (default): SI (base-10, 1000 bytes = 1kB) - binary: IEC (base-2, 1024 bytes = 1KiB) - legacy: JEDEC (base-2, 1024 bytes = 1KB)
- Returns:
- Size in given standard units (e.g. '5.2 MB')
- Author:
- Héctor Romojaro
- Created:
- 2019-06-25
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_content_size_pretty
lc_get (public)
lc_get [ -locale locale ] key
Get a certain format string for the current locale.
- Switches:
- -locale (optional)
- Parameters:
- key (required)
- the key of for the format string you want.
- Returns:
- the format string for the current locale.
- Author:
- Lars Pind <lars@pinds.com>
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_content_size_pretty
lc_list_all_timezones (public)
lc_list_all_timezones
- Returns:
- list of pairs containing all timezone names and offsets. Data drawn from acs-reference package timezones table
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_timezones, set_get_timezone
lc_numeric (public)
lc_numeric num [ fmt ] [ locale ]
Given a number and a locale return a formatted version of the number for that locale.
- Parameters:
- num (required)
- Number in canonical form
- fmt (optional)
- Format string used by the Tcl format command (should be restricted to the form "%.Nf" if present).
- locale (optional)
- Locale
- Returns:
- Localized form of the number
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs, lang_test__lc_content_size_pretty, lc__commify_number
lc_parse_number (public)
lc_parse_number num locale [ integer_only_p ]
Converts a number to its canonical representation by stripping everything but the decimal separator and trimming left 0's so it won't be octal. It can process the following types of numbers:
The valid separators are taken from the given locale. Does not handle localized signed numbers in this version. The sign may only be placed before the number (with/without whitespace). Also allows the empty string, returning same.
- Just digits (allows leading zeros).
- Digits with a valid thousands separator, used consistently (leading zeros not allowed)
- Either of the above with a decimal separator plus optional digits after the decimal marker
- Parameters:
- num (required)
- Localized number
- locale (required)
- Locale
- integer_only_p (optional, defaults to
"0"
)- True if only integers returned
- Returns:
- Canonical form of the number
- Error:
- If unsupported locale or not a number
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs
lc_time_conn_to_system (public)
lc_time_conn_to_system time_value
Converts a date from the connection's timezone to the system (database) timezone, using the OpenACS timezone setting and user's preference
- Parameters:
- time_value (required)
- Timestamp from conn input in the ISO datetime format.
- Returns:
- Timestamp in the database's timezone, also in ISO datetime format.
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs
lc_time_fmt (public)
lc_time_fmt datetime fmt [ locale ]
Formats a time for the specified locale.
- Parameters:
- datetime (required)
- A datetime in one of the supported formats. See lc_datetime_to_clock.
- fmt (required)
- An ISO 14652 LC_TIME style formatting string. The highlighted functions localize automatically based on the user's locale; other strings will use locale-specific text but not necessarily locale-specific formatting.
%a FDCC-set's abbreviated weekday name. %A FDCC-set's full weekday name. %b FDCC-set's abbreviated month name. %B FDCC-set's full month name. %c FDCC-set's appropriate date and time representation. %C Century (a year divided by 100 and truncated to integer) as decimal number (00-99). %d Day of the month as a decimal number (01-31). %D Date in the format mm/dd/yy. %e Day of the month as a decimal number (1-31 in at two-digit field with leadingfill). %E Month number as a decimal number (1-12 in at two-digit field with leading fill). %f Weekday as a decimal number (1(Monday)-7). %F is replaced by the date in the format YYYY-MM-DD (ISO 8601 format) %h A synonym for %b. %H Hour (24-hour clock) as a decimal number (00-23). %I Hour (12-hour clock) as a decimal number (01-12). %j Day of the year as a decimal number (001-366). %m Month as a decimal number (01-13). %M Minute as a decimal number (00-59). %n A character. %p FDCC-set's equivalent of either AM or PM. %r Hours and minutes using 12-hour clock AM/PM notation, e.g. '06:12 AM'. %q Long date without weekday (OpenACS addition to the standard) %Q Long date with weekday (OpenACS addition to the standard) %S Seconds as a decimal number (00-61). %t A character. %T 24-hour clock time in the format HH:MM:SS. %u Week number of the year as a decimal number with two digits and leading zero, according to "week" keyword. %U Week number of the year (Sunday as the first day of the week) as a decimal number (00-53). %w Weekday as a decimal number (0(Sunday)-6). %W Week number of the year (Monday as the first day of the week) as a decimal number (00-53). %x FDCC-set's appropriate date representation. %X FDCC-set's appropriate time representation. %y Year (offset from %C) as a decimal number (00-99). %Y Year with century as a decimal number. %Z The connection's timezone, e.g. 'America/New_York'. %% A character. - locale (optional)
- Locale identifier must be in the locale database
- Returns:
- A date formatted for a locale
- Error:
- Fails if given a non-existent locale or a malformed datetime. Impossible dates will be treated as per clock scan behavior and e.g. 29 Feb 1999 will be translated to 1st March, Monday, as it wasn't a leap year. The clock api takes care of the proper handling of Julian/Gregorian dates.
- See Also:
- lc_datetime_to_clock
- http://www.tondering.dk/claus/calendar.html
- man strftime on a UNIX shell prompt for more date format abbreviations.
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs, lc_time_fmt_Z_timezone
lc_time_local_to_utc (public)
lc_time_local_to_utc time_value [ tz ]
Converts a local time to a UTC time for the specified timezone.
- Parameters:
- time_value (required)
- Local time in the ISO datetime format, YYYY-MM-DD HH24:MI:SS
- tz (optional)
- Valid timezone as supported by the Tcl Clock command or must exist in tz_data table.
- Returns:
- UTC time.
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs, lang_test__lc_timezones
lc_time_system_to_conn (public)
lc_time_system_to_conn time_value
Converts a date from the system (database) to the connection's timezone, using the OpenACS timezone setting and user's preference
- Parameters:
- time_value (required)
- Timestamp from the database in the ISO datetime format.
- Returns:
- Timestamp in conn's local time, also in ISO datetime format.
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs
lc_time_tz_convert (public)
lc_time_tz_convert -from from -to to -time_value time_value
Converts a date from one timezone to another.
- Switches:
- -from (required)
- -to (required)
- -time_value (required)
- A datetime in one of the supported formats. See lc_datetime_to_clock.
- Returns:
- Timestamp in the 'to' timezone, also in ISO datetime format, or the empty string when 'time_value' or one of the timezones are invalid, or when it is otherwise impossible to determine the right conversion.
- See Also:
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs, lang_test__lc_timezones
lc_time_utc_to_local (public)
lc_time_utc_to_local time_value [ tz ]
Converts a Universal Time to local time for the specified timezone.
- Parameters:
- time_value (required)
- UTC time in the ISO datetime format.
- tz (optional)
- Timezone that must exist in tz_data table.
- Returns:
- Local time
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- lang_test__lc_procs