locale(7)

NUME
locale - descrierea suportului multilingvistic

SINOPSIS
#include <locale.h>

DESCRIERE
O configurație regională este un set de reguli lingvistice și culturale. Acestea acoperă aspecte cum ar fi limba pentru mesaje, seturi de caractere diferite, convenții lexicografice și așa mai departe. Un program trebuie să fie capabil să determine configurația regională a sistemului și să acționeze în consecință pentru a fi portabil în diferite culturi.

Antetul <locale.h> declară tipuri de date, funcții și macro-uri care sunt utile în această sarcină.

Funcțiile pe care le declară sunt setlocale(3) pentru a defini configurația regională curentă și localeconv(3) pentru a obține informații despre formatarea numerelor.

Există diferite categorii de informații locale de care un program ar putea avea nevoie; acestea sunt declarate ca macro-uri. Utilizându-le ca prim argument al setlocale(3), este posibil să definiți una dintre acestea la parametrul regional dorit:

LC_ADDRESS (extensie GNU, începând cu glibc 2.2)
    Modifică configurările care descriu formatele (de exemplu, adresele poștale) utilizate pentru a descrie locațiile și elementele legate de geografie. Aplicațiile care au nevoie de aceste informații pot utiliza nl_langinfo(3) pentru a extrage elemente nestandardizate, cum ar fi _NL_ADDRESS_COUNTRY_NAME (numele țării, în limba localului) și _NL_ADDRESS_LANG_NAME (numele limbii, în limba configurației regionale), care returnează șiruri de caractere cum ar fi „Deutschland” și „Deutsch” (pentru parametrii regionali de limbă germană). Alte nume de elemente sunt enumerate în <langinfo.h>.

LC_COLLATE
    Această categorie guvernează regulile de colaționare utilizate pentru sortare și expresii regulate, inclusiv clasele de echivalență a caracterelor și elementele de colaționare multi-caracter. Această categorie locală modifică comportamentul funcțiilor strcoll(3) și strxfrm(3), care sunt utilizate pentru a compara șiruri în alfabetul local. De exemplu, s ascuțit german, numit și „eszett” (ß) este sortat ca „ss”.

LC_CTYPE
    Această categorie determină interpretarea secvențelor de octeți ca caractere (de exemplu, caractere cu un singur octet versus caractere cu mai multe octeți), clasificarea caracterelor (de exemplu, alfabetice sau cifre) și comportamentul claselor de caractere. În sistemele glibc, această categorie determină și regulile de transliterare a caracterelor pentru iconv(1) și iconv(3). Aceasta modifică comportamentul funcțiilor de tratare și clasificare a caracterelor, precum isupper(3) și toupper(3), și al funcțiilor de caractere multioctet, precum mblen(3) sau wctomb(3).

LC_IDENTIFICATION (extensie GNU, începând cu glibc 2.2)
    Modifică regurile care se referă la metadatele pentru parametrii regionali. Aplicațiile care au nevoie de aceste informații pot utiliza nl_langinfo(3) pentru a extrage elemente nestandardizate, cum ar fi _NL_IDENTIFICATION_TITLE (titlul acestui document de configurație regională) și _NL_IDENTIFICATION_TERRITORY (teritoriul geografic căruia i se aplică acest document de configurație regională), care ar putea returna șiruri de caractere precum „English locale for the USA” și „USA”. Alte nume de elemente sunt enumerate în <langinfo.h>.

LC_MONETARY
    Această categorie determină formatarea utilizată pentru valorile numerice monetare. Aceasta modifică informațiile returnate de localeconv(3), care descriu modul în care sunt imprimate de obicei numerele, cu detalii precum punctul zecimal versus virgula zecimală. Această informație este utilizată intern de funcția strfmon(3).

LC_MESSAGES
    Această categorie afectează limba în care sunt afișate mesajele și modul în care arată un răspuns afirmativ sau negativ. Biblioteca GNU C conține funcțiile gettext(3), ngettext(3) și rpmatch(3) pentru a facilita utilizarea acestor informații. Familia de funcții GNU gettext se supune, de asemenea, variabilei de mediu LANGUAGE (care conține o listă de parametri regionali separați prin două puncte) dacă categoria este definită la un alt parametru regional valid decât "C". Această categorie afectează, de asemenea, comportamentul lui catopen(3).

LC_MEASUREMENT (extensie GNU, începând cu glibc 2.2)
    Modifică configurările legate de sistemul de măsurare local (adică, unități metrice față de unități uzuale americane). Aplicațiile pot utiliza nl_langinfo(3) pentru a extrage elementul _NL_MEASUREMENT_MEASUREMENT nestandardizat, care returnează un indicator către un caracter care are valoarea 1 (metric) sau 2 (unități uzuale americane).

LC_NAME (extensie GNU, începând cu glibc 2.2)
    Modifică configurările care descriu formatele utilizate pentru adresarea persoanelor. Aplicațiile care au nevoie de aceste informații pot utiliza nl_langinfo(3) pentru a prelua elemente non-standard, cum ar fi elementele _NL_NAME_NAME_MR (salutul general pentru bărbați) și _NL_NAME_NAME_MS (salutul general pentru femei), care returnează șiruri precum „Herr” și „Frau” (pentru configurațiile regionale de limbă germană). Alte nume de elemente sunt enumerate în <langinfo.h>.

LC_NUMERIC
    Această categorie determină regulile de formatare utilizate pentru valorile numerice nemonetare -- de exemplu, separatorul de mii și caracterul zecimal (un punct în majoritatea țărilor vorbitoare de limba engleză, dar o virgulă în multe alte regiuni). Aceasta afectează funcții precum printf(3), scanf(3) și strtod(3). Aceste informații pot fi citite și cu funcția localeconv(3).

LC_PAPER (extensie GNU, începând cu glibc 2.2)
    Modifică configurările referitoare la dimensiunile mărimii standard a hârtiei (de exemplu, US letter versus A4). Aplicațiile care au nevoie de dimensiuni le pot obține utilizând nl_langinfo(3) pentru a extrage elementele non-standard _NL_PAPER_WIDTH și _NL_PAPER_HEIGHT, care returnează valori int specificând dimensiunile în milimetri.

LC_TELEPHONE (extensie GNU, începând cu glibc 2.2)
    Modifică configurările care descriu formatele care urmează să fie utilizate cu serviciile telefonice. Aplicațiile care au nevoie de aceste informații pot utiliza nl_langinfo(3) pentru a prelua elemente nestandardizate, cum ar fi _NL_TELEPHONE_INT_PREFIX (prefix internațional utilizat pentru apelarea numerelor în această configurație regională), care returnează un șir de caractere cum ar fi „40” (pentru România). Alte nume de elemente sunt enumerate în <langinfo.h>.

LC_TIME
    Această categorie reglementează formatarea utilizată pentru valorile datei și orei. De exemplu, cea mai mare parte a Europei utilizează un ceas de 24 de ore față de ceasul de 12 ore utilizat în Statele Unite. Configurarea acestei categorii afectează comportamentul unor funcții precum strftime(3) și strptime(3).

LC_ALL
    Toate cele de mai sus.

Dacă cel de-al doilea argument al funcției setlocale(3) este un șir gol, "", pentru configurația regională implicită, aceasta este determinată folosind următorii pași:

(1) Dacă există o variabilă de mediu LC_ALL cu o valoare nenulă, se utilizează valoarea lui LC_ALL.

(2) Dacă există o variabilă de mediu cu același nume ca una dintre categoriile de mai sus și nu este nulă, valoarea acesteia este utilizată pentru categoria respectivă.

(3) Dacă există o variabilă de mediu LANG cu o valoare nenulă, se utilizează valoarea lui LANG.

Valorile privind formatarea numerică locală (conform configurației regionale) sunt disponibile într-o struct lconv returnată de funcția localeconv(3), care are următoarea declarație:

    struct lconv {

        /* Informații numerice (ne monetare) */

        char *decimal_point;     /* Caracterul zecimal */
        char *thousands_sep;     /* Separator pentru grupuri de cifre
                                    la stânga caracterului zecimal */
        char *grouping;     /* Fiecare element este numărul de cifre
                               dintr-un grup; elementele cu indici mai mari
                               sunt mai la stânga. CHAR_MAX înseamnă că nu
                               se face nicio grupare suplimentară. Un element
                               cu valoarea 0 înseamnă că elementul anterior
                               este utilizat pentru toate grupurile din stânga. */

        /* Câmpurile rămase sunt pentru informații monetare. */

        char *int_curr_symbol;   /* Primele trei caractere sunt un simbol
                                    valutar din ISO 4217. Al patrulea
                                    caracter este separatorul. Al cincilea
                                    caracter este „\0”. */
        char *currency_symbol;   /* Simbolul monedei locale */
        char *mon_decimal_point; /* Caracterul zecimal */
        char *mon_thousands_sep; /* Precum „thousands_sep” de mai sus */
        char *mon_grouping;      /* Precum „grouping” de mai sus */
        char *positive_sign;     /* Semnul pentru valorile pozitive */
        char *negative_sign;     /* Semnul pentru valorile negative */
        char  int_frac_digits;   /* Cifre fracționare internaționale */
        char  frac_digits;       /* Cifre fracționare locale */
        char  p_cs_precedes;     /* 1 dacă simbolul monedei precede o
                                    valoare pozitivă, 0 dacă urmează */
        char  p_sep_by_space;    /* 1 dacă un spațiu separă simbolul
                                    monedei de o valoare pozitivă */
        char  n_cs_precedes;     /* 1 dacă simbolul monedei precede o
                                    valoare negativă, 0 dacă urmează */
        char  n_sep_by_space;    /* 1 dacă un spațiu separă simbolul
                                    monedei de o valoare negativă */
        /* Poziții cu semn pozitiv și negativ:
           0 Parantezele înconjoară cantitatea și simbolul monedei.
           1 Semnul precede cantitatea și simbolul monedei.
           2 Semnul urmează cantității și simbolului monedei.
           3 Semnul precede imediat simbolul monedei (currency_symbol).
           4 Semnul urmează imediat simbolului monedei. */
        char  p_sign_posn;
        char  n_sign_posn;
    };

  Extensii POSIX.1-2008 la API-ul cobfigurației regionale „locale”
POSIX.1-2008 a standardizat o serie de extensii ale API-ului configurației regionale pentru parametrii acesteia, bazate pe implementări care au apărut pentru prima dată în glibc 2.3. Aceste extensii sunt concepute pentru a rezolva problema faptului că API-urile configurației regionale tradiționale nu se combină bine cu aplicațiile multi-fir și cu aplicațiile care trebuie să se descurce cu mai mulți parametrii regionali.

Extensiile iau forma unor noi funcții pentru crearea și manipularea obiectelor de parametri regionali (newlocale(3), freelocale(3), duplocale(3) și uselocale(3)) și diverse funcții noi de bibliotecă cu sufixul „_l” (de ex, toupper_l(3)) care extind API-urile tradiționale dependente de parametrii regionali (de exemplu, toupper(3)) pentru a permite specificarea unui obiect de parametru regional care ar trebui aplicat la executarea funcției.

MEDIU
Următoarea variabilă de mediu este utilizată de newlocale(3) și setlocale(3) și afectează astfel toate programele neprivilegiate ce se conformă configurațiilor regionale:

LOCPATH
    O listă de nume de rute, separate prin două puncte (':'), care ar trebui să fie utilizate pentru a găsi date referitoare la parametri regionali. Dacă această variabilă este definită, sunt utilizate numai fișierele individuale de date referitoare la parametri regionali compilate din LOCPATH și ruta de date a parametrilor regionali implicită a sistemului; orice alte arhive referitoare la parametri regionali disponibile nu sunt utilizate (consultați localedef(1)). Fișierele individuale de date locale compilate sunt căutate în subdirectoare care depind de configurația regională utilizată în prezent. De exemplu, atunci când en_GB.UTF-8 este utilizată pentru o categorie, sunt căutate următoarele subdirectoare, în această ordine: en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8, en.utf8 și en.

FIȘIERE

/usr/lib/locale/locale-archive
    Locația implicită obișnuită a arhivei locale.

/usr/lib/locale
    Ruta implicită obișnuită pentru fișierele de configurații regionale „locale” individuale compilate.

STANDARDE
POSIX.1-2001.

CONSULTAȚI ȘI
iconv(1), locale(1), localedef(1), catopen(3), gettext(3), iconv(3), localeconv(3), mbstowcs(3), newlocale(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3), uselocale(3), wcstombs(3), locale(5), charsets(7), unicode(7), utf-8(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.