Jest to pakiet, który zawiera ustawienia specyficzne dla twojego kraju. (zapis daty, czasu, specjalne litery itp.) Ustawieñ tych nie powineneś zapisywaæ na stałe w swoich programach.
Jeśli masz na swoim komputerze zainstalowane ustawienia lokalne dla różnych krajów/jêzyków, to poprzez nastêpujące zmienne możesz kontrolowaæ zachowanie programów korzystających z nich. Ustawieniem domyślnym jest ustawienie wg. standardu C lub POSIX zapisane na stałe w "libc".
-- ustawia jakiego jêzyka używamy; może byæ zmienione przez zmienną LC_xxxx,
-- ustawia porządek sortowania,
-- definicje znaków, duże i małe litery... używane jest to przez takie funkcje jak: toupper, tolower, islower, isdigit itp.
-- definicja formatu liczb związanych z pieniêdzmi. Są tu definicje separatora tysiêcy, separatora ułamkowego, symbolu pieniądza (zł) i miejsce, gdzie należy go umieściæ,
-- separatory tysiêcy i ułamkowe oraz grupowanie numeryczne,
-- definicja formatu czasowego i datowego. Są tu zdefiniowane np. dni tygodnia, miesiące,
-- wyrażenia Nie i Tak,
-- ustawia jakiego jêzyka używamy i zmienia wszystkie inne zmienne LC_xxxx.
Oto niektóre ustawienia, a jest ich znacznie wiêcej:
-- kanadyjski angielski,
-- amerykañski angielski,
-- niemiecki niemiecki,
-- francuski francuski.
Jeśli piszesz program i chcesz, aby można go było używaæ na całym świecie respektuj ustawienia lokalne. Najważniejszym powodem jest to, że nie każdy bêdzie używał tego samego zestawu znaków czy strony kodowej co ty.
Upewnij siê, że nie robisz czegoś takiego w swoich programach:
/* sprawdź czy to litera */
if ( (( c >= 'a') && ( c <= 'z' )) ||
(( c >= 'A') && ( c <= 'Z' )) ) { ... }
Jeśli napiszesz coś takiego, to zakładasz, że użytkownik bêdzie
używał tylko podstawowych znaków z kodu ASCII i nie bierzesz pod
uwagê, iż może używaæ strony kodowej specyficznej dla swojego
kraju. Pomija to takie znaki jak np. a-umlaut, które zostałoby
użyte w środowisku niemieckim. Zamiast tego powinieneś raczej
używaæ funkcji, które respektują lokalne ustawienia, jak np.
isalpha(). Jeśli twój program wyraźnie wymaga tylko podstawowych
znaków ASCII (US-ASCII), dalej używasz funkcji isalpha(), ale
musisz także ustawiæ zmienną LANG albo LC_CTYPE albo LC_ALL na "C"
lub użyæ funkcji setlocale(LC_CTYPE, "C").
Ustawienia lokalne pozwalają na dużą elastycznośæ i robią pewne założenia, o których programista mógł zapomnieæ.
Na przykład nie możesz z góry założyæ pozycji danego znaku na stronie kodowej. Nic nie stoi na przeszkodzie, żebyś np. stworzył sobie stronê kodową, na której "A" byłoby na pozycji 99 a nie 65.
Podstawową ideą jest to, że różni ludzie mówią różnymi jêzykami, przetsrzegają różnych reguł sortowania, używają różnych stron kodowych i mieszkają w różnych krajach. Ustawienia lokalne i funkcje, które ich przstrzegają dają środki na respektowanie takich rzeczy i odpowiedniego ich traktowanie. Nie wymaga to dużego nakładu pracy, tylko trochê innego sposobu myślenia podczas pisania takich programów.