ukotvit menu |
Locale je POSIX standard pro podporu jednotlivých jazyků a národních zvyklostí. Jeho výhodou je, že program užívající locale může snadno měnit své chování a že programátor jednotlivé národnostní zvyklosti nemusí znát (např. jak se třídí v němčině), stačí když umí pracovat s locale (např. jak nastavit němčinu a třídit za pomocí funkcí z locale).
Locale je sada jazykových a kulturních pravidel, podle kterých vybrané funkce mohou měnit své chování. Locale pokrývá aspekty nastavení jazyka kterým program komunikuje, znakovou sadu kterou používá, lexikografické konvence (např. způsob zápisu čísel a datumu) a podobně.
Locale je primárně implementováno v jazyku C a ony spolupracující (locale) funkce jsou implementovány v knihovnách jazyka C. Jazyk Python je naprogramován v jazyce C, locale funkce používá a poskytuje k nim přístup, takže v něm lze locale bez problémů používat. Platí to i pro další jazyky, jako třeba Perl, PHP a vlastně neznám žádný, který by locale nepodporoval. S určitými potížemi to funguje i ve Windows, které locale jako POSIX standard podporují (trochu nestandardně), ale samy systémově (domnívám se) nevyužívají.
Locale se nastavuje na dvou úrovních. Na první úrovni jej nastavuje uživatel pomocí systémových proměnných operačního systému a dává tak najevo, jaké chování si od programů přeje. Na druhé úrovni se nastavuje přímo v programu (pomocí funkce setlocale()), v kterém to musí ošetřit programátor. Programátor může programu nastavit libovolné locale, ale měl by respektovat přání uživatele.
Když programátor locale programu nenastaví, pak je nastaveno na výchozí hodnotu "C". To odpovídá výchozímu chování funkcí jazyka C.
Locale ovlivňuje řadu věcí. Tyto věci jsou rozděleny do kategorií a každou kategorii lze nastavit zvlášť. Takže je možno například nastavit, aby program komunikoval v angličtině, ale datum zobrazoval v českém formátu. Každé kategorii odpovídá jedna systémová proměnná. Jsou to tyto: