locale(7) Miscellaneous Information Manual locale(7) NAZWA locale - opis obslugi wielu jezykow SKLADNIA #include OPIS Locale to zestaw regul jezykowych i kulturalnych. Obejmuja one aspekty takie, jak jezyk komunikatow, rozne zestawy znakow, konwencje leksykograficzne itd. Program musi umiec okreslic swoje locale i zachowywac sie odpowiednio, aby mozna go bylo przeniesc do innych kultur. Naglowek deklaruje typy danych, funkcje i makra przydatne w tym przedsiewzieciu. Funkcje deklarowane to setlocale(3), ustawiajaca biezace locale, i localeconv(3), pobierajaca informacje o formatowaniu liczb. Istnieja rozne kategorie informacji regionalnych, ktorych potrzebowac moze program; zadeklarowane sa one jako makra. Uzywajac ich jako pierwszego argumentu funkcji setlocale(3), mozliwe jest ustawienie ponizszych informacji regionalnych: LC_ADDRESS (rozszerzenie GNU, od glibc 2.2) Zmienia ustawienia opisujace formaty (np. adresy pocztowe) sluzace do opisywania polozenia i rzeczy okologeograficznych. Aplikacje wymagajace tej informacji moga korzystac z nl_langinfo(3) do pozyskania niestandardowych elementow, takich jak _NL_ADDRESS_COUNTRY_NAME (nazwa kraju w danym jezyku) i _NL_ADDRESS_LANG_NAME (nazwa jezyka w danym jezyku), ktore zwracaja przykladowo lancuchy "Deutschland" i "Deutsch" (dla niemieckich locale). Inne nazwy elementow sa wypisane w .) LC_COLLATE Kategoria obejmuje zasady zestawiania uzywane do sortowania i wyrazen regularnych, w tym klasy ekwiwalentow znakow i zestawiania elementow wieloznakowych. Ta kategoria locale zmienia zachowanie funkcji strcoll(3) i strxfrm(3), porownujacych lancuchy znakow w alfabecie lokalnym. Na przyklad niemieckie scharfes S sortowane jest jako "ss". LC_CTYPE Kategoria okresla interpretacje sekwencji bajtow jako znakow (np. znaki jednobajtowe albo wielobajtowe), klasyfikacje znakow (np. alfabetyczna lub numeryczna) i zachowanie klas znakow. W systemach glibc ta kategoria okresla rowniez reguly transliteracji znakow do iconv(1) i iconv(3). Zmienia zachowanie operacji na znakach i funkcji klasyfikacyjnych, takich jak isupper(3) i toupper(3), oraz znakowych funkcji wielobajtowych, takich jak mblen(3) i wctomb(3). LC_IDENTIFICATION (rozszerzenie GNU, od glibc 2.2) Zmienia ustawienia powiazane z metadanymi locale. Aplikacje wymagajace tej informacji moga korzystac z nl_langinfo(3) do pozyskania niestandardowych elementow takich jak _NL_IDENTIFICATION_TITLE (tytul tego dokumentu locale) i _NL_IDENTIFICATION_TERRITORY (terytorium geograficzne do ktorego odnosi sie ten dokument locale), ktore moga zwrocic lancuchy takie jak "English locale for the USA" i "USA". Inne nazwy elementow sa wypisane w . LC_MONETARY Kategoria okresla formatowanie uzywane do wartosci numerycznych zwiazanych z pieniedzmi. Zmienia informacje zwracana przez localeconv(3), ktora opisuje sposob, w jaki zwykle drukowane sa liczby, ze szczegolami takimi jak kropka dziesietna kontra przecinek dziesietny. Informacja ta jest uzywana wewnetrznie przez funkcje strfmon(3). LC_MESSAGES Kategoria wplywa na jezyk, w ktorym wyswietlane sa komunikaty, oraz to, jak wyglada odpowiedz twierdzaca i przeczaca. Biblioteka GNU C zawiera funkcje gettext(3), ngettext(3) oraz rpmatch(3), ulatwiajace uzycie tych informacji. Funkcje GNU z rodziny gettext biora pod uwage rowniez zmienna srodowiska LANGUAGE (zawierajaca rozdzielona dwukropkami liste ustawien jezykowych), jesli biezace ustawienia jezykowe sa poprawne i rozne od "C". Ta kategoria wplywa rowniez na zachowanie catopen(3). LC_MEASUREMENT (rozszerzenie GNU, od glibc 2.2) Zmienia ustawienia zwiazane z systemem miar w locale (np. metryczny albo jednostki uzywane w USA). Aplikacje moga korzystac z nl_langinfo(3) do pozyskania niestandardowego elementu _NL_MEASUREMENT_MEASUREMENT, ktory zwraca wskaznik do znaku ktory ma wartosc 1 (system metryczny) lub 2 (system imperialny). LC_NAME (rozszerzenie GNU, od glibc 2.2) Zmienia ustawienia opisujace formy grzecznosciowe. Aplikacje wymagajace tej informacji moga korzystac z nl_langinfo(3) do pozyskania niestandardowych elementow takich jak _NL_NAME_NAME_MR (forma grzecznosciowa dla panow) i _NL_NAME_NAME_MS (forma grzecznosciowa dla pan), ktore zwracaja lancuchy takie jak "Herr" i "Frau" (dla niemieckich ustawien regionalnych). Inne nazwy elementow sa wypisane w . LC_NUMERIC Kategoria okresla reguly formatowania uzywane dla wartosci numerycznych niezwiazanych z pieniedzmi -- np. separator tysiecy i separator dziesietny (kropka w wiekszosci krajow anglojezycznych lub przecinek w wielu innych). Wplywa na takie funkcje, jak printf(3), scanf(3) i strtod(3). Te informacje mozna rowniez odczytac za pomoca localeconv(3). LC_PAPER (rozszerzenie GNU, od glibc 2.2) Zmienia ustawienia zwiazane z wymiarami standardowego rozmiaru papieru (np. letter albo A4). Aplikacje wymagajace wymiarow moga je pozyskac korzystajac z nl_langinfo(3), aby otrzymac niestandardowe elementy _NL_PAPER_WIDTH i _NL_PAPER_HEIGHT, ktore zwroca wartosci int okreslajace wymiary w milimetrach. LC_TELEPHONE (rozszerzenie GNU, od glibc 2.2) Zmienia ustawienia opisujace formaty uzywane w telefonii. Aplikacji potrzebujace tej informacji moga korzystac z nl_langinfo(3) aby pobrac niestandardowe elementy takie jak _NL_TELEPHONE_INT_PREFIX (miedzynarodowy prefiks uzywany do wybrania numerow w tym locale), ktory zwroci przykladowo "49" (dla Niemiec). Inne elementy sa wypisane w . LC_TIME Kategoria okresla formatowanie wartosci daty i czasu. Przykladowo wiekszosc Europy uzywa zegara 24-godzinnego, a w USA korzysta sie z zegara 12-godzinnego. Ustawienie w tej kategorii wplywa na zachowanie funkcji takich jak strftime(3) i strptime(3). LC_ALL Wszystko powyzsze. Jesli drugim argumentem setlocale(3) jest lancuch pusty "" oznaczajacy locale domyslne, ustala sie je w nastepujacy sposob: (1) Jesli istnieje niepusta zmienna srodowiskowa LC_ALL, uzywana jest wartosc LC_ALL (2) Jesli istnieje i jest niepusta zmienna srodowiskowa o tej samej nazwie co jedna z kategorii powyzej, dla tej kategorii uzywana jest jej wartosc. (3) Jesli istnieje niepusta zmienna srodowiskowa LANG, uzywana jest wartosc LANG Wartosci dotyczace lokalnego formatowania dostepne sa w strukturze lconv, zwracanej przez funkcje localeconv(3). lconv ma nastepujaca deklaracje: struct lconv { /* Informacje numeryczne (niewalutowe) */ char *decimal_point; /* Znak dziesietny */ char *thousands_sep; /* Separator grup cyfr po lewej stronie znaku dziesietnego */ char *grouping; /* Kazdy element jest liczba cyfr w grupie; elementy z wyzszym indeksem sa bardziej na lewo. Element o wartosci CHAR_MAX oznacza, ze dalsze grupowanie nie nastepuje. Element o wartosci 0 oznacza, ze poprzedni element jest uzywany do pozostalych grup po lewej stronie. */ /* Pozostale pola sluza do informacji walutowych */ char *int_curr_symbol; /* Pierwsze trzy znaki to symbol waluty z ISO 4217. Czwarty znak to separator. Piaty to '\0'. */ char *currency_symbol; /* Symbol lokalnej waluty */ char *mon_decimal_point; /* Znak dziesietny */ char *mon_thousands_sep; /* Jak thousands_sep (powyzej) */ char *mon_grouping; /* Jak grouping (powyzej) */ char *positive_sign; /* Znak dla wartosci dodatnich */ char *negative_sign; /* Znak dla wartosci ujemnych */ char int_frac_digits; /* Miedzynarodowe cyfry dziesietne */ char frac_digits; /* Lokalne cyfry dziesietne */ char p_cs_precedes; /* 1, jesli symbol waluty poprzedza wartosc dodatnia, 0, jesli nastepuje po niej */ char p_sep_by_space; /* 1, jesli symbol waluty oddziela od wartosci dodatniej spacja */ char n_cs_precedes; /* 1, jesli symbol waluty poprzedza wartosc ujemna, 0 jesli nastepuje po niej */ char n_sep_by_space; /* 1, jesli symbol waluty oddziela od wartosci ujemnej spacja */ /* Dodatnie i ujemne pozycje znaku: 0 Wartosc i symbol waluty w nawiasach. 1 Znak poprzedza wartosc i symbol waluty. 2 Znak nastepuje po wartosci i symbolu waluty. 3 Znak nastepuje tuz przez symbolem waluty. 4 Znak nastepuje tuz po symbolu waluty. */ char p_sign_posn; char n_sign_posn; }; Rozszerzenia POSIX.1-2008 do API locale POSIX.1-2008 standaryzuje wiele rozszerzen API locale w oparciu o implementacje, ktora pojawila sie jako pierwsza w glibc 2.3. Rozszerzenia opracowano aby rozwiazac problemy z tradycyjnym API locale, ktore nie radzilo sobie dobrze z aplikacjami wielowatkowymi i z programami ktore korzystaja z wielu ustawien regionalnych. Rozszerzenia zajmuja sie forma nowych funkcji do tworzenia i dzialania na obiektach locale (newlocale(3), freelocale(3), duplocale(3) i uselocale(3)) oraz roznymi nowymi funkcjami bibliotecznymi z przyrostkiem "_l" (np. toupper_l(3)), ktore rozszerzaja tradycyjne, zalezne od ustawien regionalnych API (np. toupper(3)) pozwalajac na okreslenie obiektu locale ktory ma zostac zastosowany przy wykonywaniu funkcji. SRODOWISKO Nastepujace zmienne srodowiskowe sa uzywane przez newlocale(3) i setlocale(3) wplywajac na wszystkie nieuprzywilejowane zlokalizowane programy: LOCPATH Lista sciezek oddzielonych dwukropkami (':'), ktore sluza do odnalezienia danych locale. Jezeli zmienna jest ustawiona, to uzywane sa tylko skompilowane indywidualnie pliki z danymi z LOCPATH oraz z domyslnej sciezki danych locale, natomiast dostepne archiwa lokalne nie sa wykorzystywane (zob. localedef(1)). Indywidualnie kompilowane pliki z danymi locale sa wyszukiwane w podkatalogach zaleznych od biezacych ustawien regionalnych. Przykladowo jesli dla kategorii wykorzystuje sie en_GB.UTF-8, to przeszukiwane sa nastepujace podkatalogi (w podanej kolejnosci): en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8, en.utf8 i en. PLIKI /usr/lib/locale/locale-archive Zwykle domyslne polozenie archiwum locale. /usr/lib/locale Zwykle domyslna sciezka dla skompilowanych indywidualnie plikow locale. STANDARDY POSIX.1-2001. ZOBACZ TAKZE 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) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Gwidon S. Naskrent , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. locale(7)