2.5 (aux locale)

This module provides an interface for working with system locales.

2.5.1 Data Types

Record: <language>

A language object is a representation of a natural or constructed language. It can represent a primary language (e.g. English) or a language variation (e.g. Australian English).

Objects of this type are created using the language procedure, which works as a helper constructor. See the LANGS constant for instances of language records.

Record fields:

name (string): Full name of the language. For example: "Español de Colombia".

tag (string): IETF language tag. For example: "ja", "en", "es-CO", etc.

locale (string): Corresponding UTF-8 locale name for the language. For example: "en_AU.utf8" (note that locale names vary from system to system).

date-format (string): Optional format used in the language to write dates. For example "~B ~d, ~Y", which would result in dates such as "April 15, 2016" for English locales.

The format is expressed in the form described in Guile’s date->string procedure documentation.

If no format is provided at construction time, "~B ~d, ~Y" is assigned by default.

2.5.2 Macros

Macro: language-date-format x

Undocumented macro.

Macro: language-locale x

Undocumented macro.

Macro: language-name x

Undocumented macro.

Macro: language-tag x

Undocumented macro.

Macro: language? x

Undocumented macro.

2.5.3 Procedures

Procedure: activate-l10n domain dir

Activate localization (l10n) for your program.

Calling this procedure will make your program use the locale specified in the environment, and look for translations for the given domain in the catalogs available in the given directory (dir).

This procedure is equivalent to running the following code, which is the standard way to initialize locale data for gettext operations:

(setlocale LC_ALL "")
(textdomain DOMAIN)
(bindtextdomain DOMAIN LOCALE_DIRECTORY)

See the gettext manual for more information about localization.

Specification:

domain (string): The name of the gettext translation domain for your program.

dir (string): Absolute path to the directory that contains the translation catalogs for the given domain.

Example:

> (activate-l10n "myapp" "/home/jane/myapp/locale")
"/home/jane/myapp/locale"
Procedure: change-locale lang-tag

Set the environment locale to the indicated language.

When the locale is changed, internationalized code run after the change will be localized to the language specified by lang-tag.

Specification:

lang-tag (string): IETF language tag. For example: "ja", "es", "en-CA", etc.

Result: The environment variable LANGUAGE is set to a UTF-8 locale. So, if lang-tag is "es-CO", the locale is set to es_CO.utf8.

Procedure: date-format lang-tag lol

Return a date format string for the language with lang-tag in the list.

Specification:

lang-tag (string): IETF language tag. For example: "ja", "es", "en-CA", etc.

lol (list of language): List of <language> records. See (aux locale) module for more information on language records, and for a predefined list of languages (the LANGS variable).

Return value (string): A format string used in the language to write dates nicely. For example, "~B ~d, ~Y", which would result in dates such as "April 15, 2016". The format string is expressed in the same format used by Guile’s date->string procedure.

If the lang-tag is not found in the list of languages, "~B ~d, ~Y" is returned by default.

Procedure: language KEY: #:name #:tag #:locale #:date-format

Return a <language> record with the given attributes.

Specification: See the definition of the record type <language>.

Example:

> (language #:name "Canadian English" #:tag "en-CA" #:locale "en_CA.utf8")
#<<language> name: "Canadian English" tag: "en-CA" locale: "en_CA.utf8" date-format: "~B ~d, ~Y">
Procedure: search-language-name lang-tag lol

Return the name of the language with lang-tag in the list.

Specification:

lang-tag (string): IETF language tag. For example: "ja", "es", "en-CA", etc.

lol (list of language): List of <language> records. See (aux locale) module for more information on language records, and for a predefined list of languages (the LANGS variable).

Return value (string): Human-readable name of the language. For example: Español, Australian English, 日本語, etc.

If the language tag is not found in the list of languages, an empty string is returned by default.

2.5.4 Variables

Variable: LANGS
(#<<language> name: "Afrikaans" tag: "af" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "አማርኛ" tag: "am" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Аҧсшәа" tag: "ab" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "العربية" tag: "ar" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Aragonés" tag: "an" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "অসমীয়া" tag: "as" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Avañe'ẽ" tag: "gn" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Авар" tag: "av" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Aymar aru" tag: "ay" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Azərbaycanca" tag: "az" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "বাংলা" tag: "bn" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Башҡортса" tag: "ba" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Беларуская" tag: "be" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Български" tag: "bg" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Bosanski" tag: "bs" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Brezhoneg" tag: "br" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Català" tag: "ca" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Чӑвашла" tag: "cv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Čeština" tag: "cs" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ChiShona" tag: "sn" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Cymraeg" tag: "cy" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Dansk" tag: "da" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Deutsch" tag: "de" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ދިވެހިބަސް" tag: "dv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Diné bizaad" tag: "nv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Eesti" tag: "et" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Ελληνικά" tag: "el" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "English" tag: "en" locale: "en_US.UTF-8" date-format: "~B ~d, ~Y"> #<<language> name: "Español" tag: "es" locale: "es_ES.UTF-8" date-format: "~B ~d, ~Y"> #<<language> name: "Εsperanto" tag: "eo" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Euskara" tag: "eu" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "فارسی" tag: "fa" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Føroyskt" tag: "fo" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Français" tag: "fr" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Frysk" tag: "fy" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Gaeilge" tag: "ga" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Gaelg" tag: "gv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Gàidhlig" tag: "gd" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Galego" tag: "gl" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ગુજરાતી" tag: "gu" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "한국어" tag: "ko" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Hausa" tag: "ha" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Hawai`i" tag: "haw" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Հայերեն" tag: "hy" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "हिन्दी" tag: "hi" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Hrvatski" tag: "hr" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Ido" tag: "io" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Igbo" tag: "ig" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Bahasa Indonesia" tag: "id" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Interlingua" tag: "ia" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Interlingue" tag: "ie" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ᐃᓄᒃᑎᑐᑦ/inuktitut" tag: "iu" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Ирон" tag: "os" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Íslenska" tag: "is" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Italiano" tag: "it" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "עברית" tag: "he" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Basa Jawa" tag: "jv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kalaallisut" tag: "kl" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ქართული" tag: "ka" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Қазақша" tag: "kk" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kernowek" tag: "kw" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kinyarwanda" tag: "rw" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kiswahili" tag: "sw" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Коми" tag: "kv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kongo" tag: "kg" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kreyòl ayisyen" tag: "ht" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Kurdî" tag: "ku" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Кыргызча" tag: "ky" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ລາວ" tag: "lo" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Latina" tag: "la" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Latviešu" tag: "lv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Lëtzebuergesch" tag: "lb" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Lietuvių" tag: "lt" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Limburgs" tag: "li" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Lingála" tag: "ln" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Magyar" tag: "hu" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Македонски" tag: "mk" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Malagasy" tag: "mg" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "മലയാളം" tag: "ml" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Malti" tag: "mt" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "मराठी" tag: "mr" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Bahasa Melayu" tag: "ms" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Монгол" tag: "mn" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Dorerin Naoero" tag: "na" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Nederlands" tag: "nl" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "नेपाली" tag: "ne" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "日本語" tag: "ja" locale: "ja_JP.UTF-8" date-format: "~Y年~B~e日"> #<<language> name: "Нохчийн" tag: "ce" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Norsk bokmål" tag: "no" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Norsk nynorsk" tag: "nn" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Occitan" tag: "oc" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ଓଡ଼ିଆ" tag: "or" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Oʻzbekcha/ўзбекча" tag: "uz" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ਪੰਜਾਬੀ" tag: "pa" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "پښتو" tag: "ps" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Polski" tag: "pl" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Português" tag: "pt" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Română" tag: "ro" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Rumantsch" tag: "rm" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Runa Simi" tag: "qu" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Русский" tag: "ru" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Sámegiella" tag: "se" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "संस्कृतम्" tag: "sa" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Sardu" tag: "sc" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Sesotho" tag: "st" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Shqip" tag: "sq" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "සිංහල" tag: "si" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Slovenčina" tag: "sk" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Slovenščina" tag: "sl" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ" tag: "cu" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Soomaaliga" tag: "so" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Српски / srpski" tag: "sr" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Srpskohrvatski / српскохрватски" tag: "sh" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Basa Sunda" tag: "su" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Suomi" tag: "fi" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Svenska" tag: "sv" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Tagalog" tag: "tl" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "தமிழ்" tag: "ta" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Татарча/tatarça" tag: "tt" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ไทย" tag: "th" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Тоҷикӣ" tag: "tg" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Türkçe" tag: "tr" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Türkmençe" tag: "tk" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Українська" tag: "uk" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "اردو" tag: "ur" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ئۇيغۇرچە / Uyghurche" tag: "ug" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Vahcuengh" tag: "za" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Tiếng Việt" tag: "vi" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Volapük" tag: "vo" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Walon" tag: "wa" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Wolof" tag: "wo" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "ייִדיש" tag: "yi" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "Yorùbá" tag: "yo" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "粵語" tag: "zh-yue" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "中文" tag: "zh" locale: "en_US.utf8" date-format: "~B ~d, ~Y"> #<<language> name: "中文" tag: "zh" locale: "en_US.utf8" date-format: "~B ~d, ~Y">)