<!--DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.1//EN"-->
<!-- $Id$ -->

<section id="locales">
  <title id="locales.title">Miestne nastavenia</title>

  <section>
    <title>Princípy miestnych nastavení</title>

    <para>Podpora miestnych nastavení je dnes mimoriadne dôležitým faktorom, ktorý charakterizuje
      jednotlivé operačné systémy. Časy, keď boli ľudia štastní, že to niečo píše, sú nenávratne
      preč a používatelia vyžadujú podporu svojich miestnych nastavení. V <acronym>GNU</acronym>
      systémoch je táto podpora implementovaná priamo do štandardnej knižnice jazyka
      <acronym>C</acronym> -- <acronym>GNU</acronym> libc. Táto podpora je navrhnutá tak, aby
      zohľadňovala všetky požiadavky kladené na nastavenia pre akúkoľvek krajinu a akýkoľvek
      jazyk.</para>

    <section>
      <title>Ciele a prostriedky</title>

      <para>Rôzne krajiny a kultúry majú odlišné pravidlá komunikácie. Tieto pravidlá môžu byť
	malého rozsahu, napr. formát dátumu a času, až po veľmi koplexné ako je jazyk, ktorým
	hovoria.</para>

      <para>Internacionalizácia softvéru znamená programovať ho tak, aby bol schopný pracovať s
	použivateľovými miestnymi nastaveniami. V <acronym>ISO</acronym> <acronym>C</acronym>
	pracuje internacionalizácia v zmysle <firstterm>locales</firstterm>. Každé locale (miestne
	nastavenia) špecifikuje skupinu pravidiel, jedno pravidlo pre každý učel. Užívateľ si zvolí
	skupinu pravidiel špecifikovaním locale (pomocou systémových premenných).</para>

      <para>Všetky programy dedia nastavené locale v rámci ich prostredia. Pod podmienkou, že
	programy sú napísané tak, že akceptujú nastavené locales, môžu sa riadiť pravidlami, ktoré
	uprednostňuje používateľ.</para>
    </section>

    <section>
      <title>Kategórie a ich funkcie</title>

      <para>Táto časť popisuje jednotlivé premenné, ktoré ovplyvňujú miestne nastavenia a ktorými
	sa riadia aj funkcie knižnice <acronym>GNU</acronym> libc.</para>

      <para>Nastavenie premennej prostredia sa robí pomocou príkazu shellu
	<screen>
bash$ export LC_PREMENNA=sk

tcsh$ setenv LC_PREMENNA sk
	</screen></para>
    
      <para><envar>LC_PREMENNA</envar> je jedna z nasledujúcich:
	<itemizedlist>
          <listitem>
	    <para><envar>LC_COLLATE</envar> --- Triedenie reťazcov. Nastavením tejto premennej
	      možno prinútiť aplikácie, napr. <command>sort</command>, <command>ls</command> a iné,
	      aby pri porovnávaní reťazcov brali do úvahy miestne rozloženie jednotlivých písmen v
	      abecede. Slovenčina má napríklad hneď niekoľko znakov, ktoré by pri triedení podľa
	      číselnej hodnoty znaku spôsobovali problémy. Slovenské nastavenia triedenia povedia
	      funkciam <function>strcoll</function> a <function>strxfrm</function>, že napríklad
	      <literal>ch</literal> je jedno písmeno a nasleduje hneď za <literal>h</literal> a nie
	      za <literal>c</literal>, že široké <literal>ä</literal> nasleduje za dlhým
	      <literal>á</literal> a to zase za obyčajným <literal>a</literal>. Skúste si to na
	      príkaze <command>sort</command>.  Zadajte písmená <literal>cc ch hh</literal>, potom
	      zmeňte <envar>LC_COLLATE</envar> príkazom
	      <screen>
bash$ export LC_COLLATE=sk

tcsh$ setenv LC_COLLATE sk
	      </screen></para>
	    
	  <para>Skúste to so <command>sort</command> znovu a porovnajte výsledok...</para>
	  </listitem>

          <listitem>
	    <para><envar>LC_CTYPE</envar> --- Klasifikácia a prevod znakov, multibyte. Správne
	      nastavenie tejto premennej je nutné pre korektné rozlišovanie znakov abecedy
	      jednotlivých jazykov, určenie číslic, tzv. bielych znakov, prevod malých písmen na
	      veľké, atď. Najvhodnejšie je túto premennú nenastavovať a tým umožniť, aby bola jej
	      hodnota prebratá od premenných <envar>LC_ALL</envar> alebo <envar>LANG</envar>
	      (viď ďalej). Ak ale nechcete používať slovenské nastavenia, len mať správne zobrazené
	      slovenské fonty a funkčnú slovenskú klávesnicu na konzole aj pod iXami, nastavte iba
	      túto premennú.</para>

	    <warning>
	      <simpara>Vždy si buďte stopercentne istí, že máte túto premennú nastavenú (buď cez
		<envar>LC_ALL</envar>, <envar>LANG</envar> alebo priamo), lebo inak nemá zmysel
		čítať ďalej! Ono <quote>klasifikácia a prevod znakov</quote> neznie nejako lákavo,
		ale vedzte, že je to sakramentsky dôležité pre život slovenských písmeniek vo vašom
		Linuxe!</simpara>
	    </warning>
	  </listitem>

	  <listitem>
	    <para><simplelist type="inline"><member><envar>LC_MONETARY</envar></member>
	      <member><envar>LC_NUMERIC</envar></member></simplelist> --- Formát peňažných a
	      číselných hodnôt.  Umožňuje meniť skupinu nastavení, ktoré sa použijú pri formátovaní
	      peňažných hodnôt alebo všetkých ostatných číselných hodnôt. Sú to desatinná čiarka,
	      oddeľovač tisícov, zoskupovanie číslic, znamienka pre kladné a zaporné hodnoty,
	      atď.</para>
          </listitem>

	  <listitem>
	    <para><envar>LC_TIME</envar> --- Formátovanie dátumu a času. Nastavenia oddeľovačov
	      medzi hodinami, minútami a sekundami, názvy dní, poradie rok, mesiac a deň v dátume,
	      ...</para>
          </listitem>

	  <listitem>
	    <para><envar>LC_MESSAGES</envar> --- Výber jazyka, použitého užívateľským rozhraním na
	      preklad hlášok programov. Toto je presne tá premenná, ktorá prinúti aplikácie hovoriť
	      po slovensky. Viď ďalšie kapitoly.</para>
          </listitem>
	</itemizedlist>
      </para>

      <para>S prekladom hlásení programov, hlavne s umiestnením súborov s preloženými reťazcami,
	súvisí premenná <envar>NLSPATH</envar>. Mala by obsahovať dvojbodkami oddelený zoznam
	adresárov, v ktorých sa budú hľadať <filename>.mo</filename> súbory pre miestne nastavenia
	dané premennou <envar>LC_MESSAGES</envar>. Premennú <envar>NLSPATH</envar> je však
	potrebné nastavovať len vo výnimočných prípadoch, pretože aplikácie hľadajú preklady svojich
	hlásení v štandardných adresároch pre tieto súbory.</para>

      <para>Okrem týchto premenných bolo implementovaných niekoľko ďalších, ktoré zatiaľ nie sú
	zdokumentované (<citetitle>The GNU C Library Reference Manual</citetitle>). Ich význam je
	zrejmý z názvu, takže uvediem aj svoju dedukciu.</para>

      <itemizedlist>
	<listitem>
	  <simpara><envar>LC_PAPER</envar> --- Formát papiera. V našich zemepisných šírkach sa
	    napríklad používa formát <acronym>A4</acronym>, v Amerike je to
	    Letter, atď. Pozor, táto premenná neobsahuje priamo názov formátu, ale (tak, ako všetky
	    <envar>LC_</envar> premenné), skratku miestneho nastavenia, teda u nás to bude
	    <constant>sk</constant>. Ak by sme chceli používať formát Letter, museli by sme túto
	    premennú nastaviť na kód miestneho nastavenia niektorej z krajín, ktorá používa takýto
	    formát, napríklad <constant>us</constant>. V tomto prípade je nutné nainštalovať balík s
	    miestnymi nastaveniami pre túto krajinu (<application>locales-us</application>).
	    </simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LC_NAME</envar> --- Formát mena a priezviska. U nás má každý dve mená,
	    píšu sa v poradí meno, priezvisko. V Rusku majú zase tri mená v poradí meno,
	    otcovo-meno, priezvisko. V Maďarsku majú dve mená tak ako u nás, ale píšu sa v opačnom
	    poradí. O tom je táto premenná. Asi...</simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LC_ADDRESS</envar> --- Spôsob zápisu adresy. Poradie ulice a popisného
	    čísla domu, ZIP kód, PSČ apod.</simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LC_TELEPHONE</envar> --- Formát telefónnych a faxových čísel.  Určuje
	    zoskupovanie číslic, ich oddelovanie, počet čísel predvoľby, ...</simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LC_MEASUREMENT</envar> --- Miery. Jednotky hmotnosti, objemu, teploty a
	    dĺžky, používané v tej ktorej krajine. Program napísaný v <acronym>USA</acronym> bude
	    pravdepodobne počítať s galónmi vody, ale ak je správne napísaný, s premennou
	    <envar>LC_MEASUREMENT</envar> nastavenou na <quote>sk</quote> bude zobrazovať litre v
	    správnom pomere. To isté platí napríklad pre prevod teploty vo Fahrenheitovej stupnici
	    na stupne Celsia.</simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LC_IDENTIFICATION</envar> --- Az apád, tak toto neviem. Rodné číslo?
	    Číslo sociálneho poistenia? Číslo topánok?</simpara>
	</listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Ďalšie premenné</title>
  
      <itemizedlist>
	<listitem>
	  <simpara><envar>LC_ALL</envar> --- Ak je táto premenná nastavená, použije sa jej hodnota
	    pre všetky vyššie spomenuté skupiny locales, bez ohľadu na hodnotu príslušných
	    premenných.</simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LANG</envar> --- Hodnota tejto premennej sa použije pre tie skupiny
	    locales, ktoré nemajú príslušnú premennú nastavenú.</simpara>
	</listitem>

	<listitem>
	  <simpara><envar>LANGUAGE</envar> --- Alternatívne miestne nastavenia. Táto premenná môže
	    obsahovať usporiadaný zoznam kódov miestnych nastavení oddelených dvojbodkami. Súbory s
	    prekladmi hlášok programov sa budú hľadať v poradí, v akom sú určené v tomto zozname. Ak
	    sa nepodarí nájsť súbor s preloženými hláškami programu v jednom jazyku, použije sa
	    súbor pre nasledujúci jazyk v zozname <envar>LANGUAGE</envar>.  Navyše, ak sa súbor pre
	    prvý jazyk aj nájde, ale niektorý reťazec z neho nie je preložený, nepoužije sa pôvodný
	    (anglický), ale najskôr sa pokúsi nájsť preklad daného reťazca v súbore pre ďalší jazyk
	    v zozname <envar>LANGUAGE</envar>.  To je výhodné pre ľudí, ktorí okrem svojho jazyka
	    ovládajú nejaký iný lepšie ako angličtinu, v ktorej sú zvyčajne programy originálne
	    napísané. Napríklad Slovák by mohol mať nastavené
	    <computeroutput>LANGUAGE="sk:cz"</computeroutput> a Szolvák z Komárom zase
	    <computeroutput>LANGUAGE="hu:sk"</computeroutput>.</simpara>

	  <caution>
	    <simpara>Premenná <envar>LANGUAGE</envar> ovplyvňuje len premennú
	      <envar>LC_MESSAGES</envar>! Pre správnu funkciu je nutné nastaviť aj ostatné premenné
	      (minimálne <envar>LC_CTYPE</envar>).</simpara>
	  </caution>
	</listitem>

	<listitem>
	  <para><envar>LINGUAS</envar> --- Táto premenná nemá špeciálny význam z hľadiska
	    <acronym>GNU</acronym> libc, ale zvykne sa používať pri inštalácii programov (zo
	    zdrojákov). Medzerami oddelený zoznam kódov miestnych nastavení určuje jazyky, pre ktoré
	    si užívateľ želá inštalovať preklady reťazcov aplikácie. Príklad:
	    <screen>
bash$ export LINGUAS="sk cz"
bash$ ./configure
bash$ make install
	    </screen></para>

	  <simpara>Tieto príkazy skompilujú a nainštalujú aplikáciu s podporou slovenčiny a češtiny.
	    Inštalačné skripty obvykle tiež kontrolujú obsah premenných <envar>LANG</envar> a
	    <envar>LC_ALL</envar>, tieto ale môžu obsahovať len jeden kód miestnych
	    nastavení.</simpara>
	</listitem>

	<listitem>
	  <para><envar>RPM_INSTALL_LANG</envar> --- Častejšie ako zo zdrojového kódu sa aplikácie
	    inštalujú z rôznych balíkov (rpm, deb, ...). Kvôli šetreniu miestom na disku (a logike
	    -- málokto ovláda tridsať rečí) je v <acronym>RPM4</acronym> možné určiť jazyk, ktorého
	    preložené hlášky sa budú inštalovať. Preto odporúčam do súboru
	    <filename>.bash_profile</filename> (<filename>.login</filename>) užívateľa, ktorý
	    inštaluje balíky (root), vložiť nasledovný riadok:
	    <screen>
bash$ export RPM_INSTALL_LANG=sk

tcsh$ setenv RPM_INSTALL_LANG "sk"
	    </screen></para>

	  <simpara>Ak sa vám nebodaj stane taká vec, že nainštalujete celý operačný systém a až
	    potom sa dozviete o tejto premennej (tak, ako sa to stalo aj mne), skúste skript uvedený
	    v časti <xref linkend="apps-rpm4" endterm="apps-rpm4.title">.</simpara>
	</listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Priorita premenných</title>

      <para>Miestne nastavenia sa určujú zo spomenutých premenných, pričom tieto sa vyhodnocujú v
	tomto poradí:
	<simplelist>
	  <member><envar>LANGUAGE</envar> --- ovplyvňuje len <envar>LC_MESSAGES</envar>
	  </member>
	  <member><envar>LC_ALL</envar></member>
	  <member><envar>LC_*</envar></member>
	  <member><envar>LANG</envar></member>
	</simplelist></para>

      <para>To znamená asi toľko, že keď raz nastavíte <envar>LC_ALL</envar>, jednotlivé
	premenné <envar>LC_*</envar> sa už neberú do úvahy. Na druhej strane, ak máte
	napríklad nastavené len niektoré z <envar>LC_*</envar>, ostatné sa nastavia na hodnotu
	premennej <envar>LANG</envar>.</para>
    </section>

    <section>
      <title>Kódy miestnych nastavení</title>

      <para>Premenné, ktoré ovplyvňujú miestne nastavenia, sa napĺňajú kódmi miestnych nastavení.
	Kódy miestnych nastavení sú reťazce, ktorých formát sa riadi niekoľkými pravidlami.
	Všeobecný tvar je:
	<synopsis>
jazyk[_územie[.kódovanie]][@modifikátor]
	</synopsis></para>
      
      <para><envar>jazyk</envar> je napr. <constant>sk</constant> pre slovenčinu,
	<constant>cs</constant> pre češtinu, <constant>hu</constant> pre maďarčinu, územie je
	<constant>SK</constant> pre Slovensko, <constant>CZ</constant> pre Českú republiku,
	<constant>HU</constant> pre Maďarsko, kódovanie je <constant>ISO-8859-2</constant> pre
	všetky stredoeurópske jazyky (je možne použiť niekoľko formátov na zadanie kódovania) a
	modifikátor služi na povolenie alebo zakázanie niektorých funkcií. Tie sú dané v definíciach
	miestnych nastavení. Napríklad, pre Veľkú Britániu je modifikátorom reťazec
	<constant>euro</constant> a pri jeho použití sa ako peňažná mena bude používať euro namiesto
	libry. To znamená, že sa musí použiť kódovanie <constant>iso-8859-15</constant>, ktoré
	definuje znaky euro a cent.</para>

      <para>Príklady kódov miestnych nastavení (každý z týchto reťazcov je možné priradiť premenným
	miestnych nastavení, ale najčastejšie sa používajú len dvojpísmenkové skratky v poslednom
	stĺpci):
	<table>
	  <title>Príklady kódov miestnych nastavení</title>
	  <tgroup cols="4" align="left" colsep="1" rowsep="1">
	    <tbody>
	      <row>
		<entry>sk_SK.ISO-8859-2</entry>
		<entry>sk_SK</entry>
		<entry></entry>
		<entry>sk</entry>
	      </row>
	      <row>
		<entry>cs_CZ.ISO-8859-2</entry>
		<entry>cs_CZ@-ch</entry>
		<entry>cs@-ch</entry>
		<entry>cs</entry>
	      </row>
	      <row>
		<entry>en_GB.iso8859</entry>
		<entry>en_GB</entry>
		<entry>en@euro</entry>
		<entry>en</entry>
	      </row>
	      <row>
		<entry>ja_JP.ujis</entry>
		<entry>ja_JP.EUC</entry>
		<entry>ja_JP</entry>
		<entry>ja</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</table></para>

      <para>Nemali by sme zabudnúť na dve štandardné locales, ktoré sa použijú, ak nie sú systémové
	premenné nastavené a programy ich používajú do doby, kým sa inicializuje lokalizácia.
	Tvrdím, že sa použijú obe, pretože momentálne sú totožné, ale v budúcnosti sa môžu v tejto
	oblasti štandardy <acronym>ISO</acronym> <acronym>C</acronym> a <acronym>POSIX</acronym>
	odlišovať a potom to bude záležať na konfigurácii systému.
	<simplelist>
	  <member><constant>C</constant> --- nastavenia podľa štandardu <acronym>ISO</acronym>
	    <acronym>C</acronym>.</member>

	  <member><constant>POSIX</constant> --- nastavenia podľa štandardu
	    <acronym>POSIX</acronym>. V súčasnosti je to alias pre nastavenia
	    <constant>C</constant>.</member>
	</simplelist></para>
    </section>
  </section> <!-- locales-principles -->

  <section id="locales-slovakia">
    <title>Miestne nastavenia pre Slovensko</title>

    <para>V prvom rade treba nainštalovať balík s podporou miestnych nastavení, ktorý má názov
      <application>locales</application> a tiež balík s podporou priamo pre Slovensko ---
      <application>locales-sk</application>. Ak máte záujem používať aj podporu pre nejaký iný jazyk
      (na našom území je aktuálna najmä čeština a maďarčina), musíte tiež nainštalovať balíky pre
      tieto jazyky.</para>

    <para>V druhom rade si musíte nainštalovať balíky s podporou miestnych nastavení a priamo
      slovenčiny (sú to <application>locales</application> a <application>locales-sk</application>).
      </para>

    <para>V ďalšom kroku si nezabudnite nainštalovať balíky <application>locales</application> a
      <application>locales-sk</application>. Takisto, pre každý jazyk, ktorý sa chystáte používať,
      si nainštalujte balík s podporou miestnych nastavení.</para>

    <para>V prípade problémov s miestnymi nastaveniami sa držte predchádzajúcich troch krokov.
      </para>

    <section>
      <title>Súbory s miestnymi nastaveniami</title>

      <para>Prejdime sa teraz trochu po našich adresároch. Prvý navštívime <filename
	class="directory">/usr/share/locale/sk</filename>. Na prvý pohľad vidno, že adresár a
	súbory v tomto adresári majú mená totožné s premennými, pomocou ktorých sa nastavujú
	jednotlivé kategórie miestnych nastavení.  Je to preto, lebo práve z týchto súborov sa
	načítajú nastavenia, keď je daná premenná nastavená na hodnotu <constant>sk</constant>.
	Okrem nich tu môže byť ešte súbor <filename>charset</filename>, ktorý obsahuje len jeden
	riadok s reťazcom <computeroutput>iso-8859-2</computeroutput>. Ten hovorí, aké kódovanie
	znakov sa má použiť pre dané miestne nastavenia.</para>

      <para>Všetky súbory v tomto adresári sú binárne dáta a adresár <envar>LC_MESSAGES</envar>
	obsahuje súbory, ktorých mená sú totožné s názvami niektorých balíkov nainštalovaných na
	vašom systéme, s príponou mo. Sú to preklady reťazcov z jednotlivých aplikácií. O nich si
	povieme neskôr. Teraz by sme mohli zistiť, čo vlastne obsahujú súbory <envar>LC_*</envar>.
        </para>

      <para>Presuňme sa do adresára <filename class="directory">/usr/share/i18n/</filename>. Tu, v
	textovom súbore <filename>sk_SK</filename> v podadresári
	<filename class="directory">locales/</filename> sa konečne nachádzajú slovenské miestne
	nastavenia v čitateľnej (a editovateľnej) forme. Súbory v tomto adresári majú presne danú
	štruktúru, ktorá je popísaná v manuálovej stránke locale(5). Pre bežného používateľa nemá
	zmysel meniť nastavenia v tomto súbore, keďže ide o štandardné nastavenia, ktoré sa
	používajú na celom Slovensku. Ale, proti Gustovi žiadna putika! Ak sa teda rozhodnete zmeniť
	niečo v tomto súbore, musíte aktualizovať súbory v prvom spomínanom adresári
	<filename class="directory">/usr/share/locales/sk/</filename> príkazom, ktorý údaje v súbore
	<filename>sk_SK</filename> skompiluje a uloží do súborov
	<simplelist type="inline">
	  <member><envar>LC_COLLATE</envar></member>
	  <member><envar>LC_CTYPE</envar></member>
	  <member>...</member>
	</simplelist>
	<programlisting>
sh$ localedef -i sk_SK -f ISO-8859-2 sk_SK
	</programlisting></para>
    
      <para>V podadresári <filename class="directory">/usr/share/i18n/charmaps/</filename> sa
	nachádzajú súbory s popismi jednotlivých kódovani znakov. Pre Slovensko je aktuálny
	<filename>ISO-8859-2</filename> (čo je aj obsah spomínaneho súboru
	<filename>charset</filename>).</para>
    
      <para>V adresári <filename class="directory">/usr/share/locale/</filename> sa nachádza súbor
	<filename>locale.alias</filename>, ktorý definuje tzv. <firstterm>aliasy</firstterm> pre
	kódy miestnych nastavení. Pre správnu funkciu slovenských miestnych nastavení by mal
	obsahovať tieto dva riadky:
	<programlisting>
sk              sk_SK.ISO-8859-2
slovak          sk_SK.ISO-8859-2
	</programlisting></para>
    
      <para>To zabezpečí, že aj keď nezadáte kódovanie znakov, bude použité iso-8859-2. Druhý riadok
	má na svedomí to, že namiesto sk možno zadať slovak.</para>

      <warning>
	<simpara>Ale na aliasy typu <constant>slovak</constant> si dávajte bacha! Niektoré
	  aplikácie, ktoré v súvislosti s miestnymi nastaveniami nevyužívajú služby libc, totiž na
	  aliasy kašľú a zaujímajú ich len prvé dva znaky nastavených premenných. A tak sa zo
	  <constant>slovak</constant> stane <constant>sl</constant>, čo je Slovinsko. Pozitívne je,
	  že pre slovenčinu môžete nastaviť premennú napríklad na hodnotu
	  <constant>skaderukaskadenoha</constant>.</simpara>
      </warning>
    </section>

    <section>
      <title>Konfigurácia miestnych nastavení</title>
    
      <para>Nastavenia internacionalizácie sa (v <systemitem class="osname">RedHat</systemitem> a
	<systemitem class="osname">Mandrake</systemitem>) nachádzajú v súbore
	<filename>/etc/sysconfig/i18n</filename>. Je to veľmi užitočný súbor, ktorý si rýchlo
	obľúbite. Možno v ňom nastaviť všetko, čo sa kedy týkalo internacionalizácie, národných
	fontov a rozložení kláves.  Tento súbor však len definuje systémové premenné a zvykne sa
	vkladať (<computeroutput>source  /etc/sysconfig/i18n</computeroutput>) do inicializačných
	skriptov.  Exportovanie premenných (odovzdanie ostatným aplikáciám) má na starosti skript
	<filename>/etc/profile.d/lang.sh</filename> (<application>bash</application>) alebo
	<filename>/etc/profile.d/lang.csh</filename> (<application>tcsh</application>). Tento sa
	vykoná pri každom štarte shellu, typicky je volaný z <filename>/etc/profile</filename>
	(<application>bash</application>) alebo <filename>/etc/csh.cshrc</filename>
	(<application>tcsh</application>).</para>

      <para>Súbor <filename>/etc/sysconfig/i18n</filename> definuje nastavenia pre celý systém.
	Tieto sa použijú, ak sa nenájde súbor s užívateľovými nastaveniami. Každý užívateľ si môže
	určiť svoje vlastné nastavenia v súbore <filename>.i18n</filename> v jeho domovskom
	adresári.  Nastavenia sa vždy čítajú len z jedného z týchto súborov, teda ak má užívateľ
	svoj vlastný súbor <filename>&tilde;/.i18n</filename>, nastavenia zo súboru
	<filename class="directory">/etc/sysconfig/i18n</filename> sa ignorujú.</para>

      <para>Užívateľ si môže zmeniť nastavenia aj ručne, kedykoľvek sa mu zachce, nastavením
	premenných prostredia
	<simplelist type="inline">
	  <member><envar>LC_MESSAGES</envar></member>
	  <member><envar>LANG</envar></member>
	  <member>atď.</member>
	</simplelist></para>
	
      <para>Vypnúť nejaké nastavenie je možné príkazom
	<screen>
sh$ unset LC_MESSAGES LANG
	</screen></para>

      <para>Tým sa zrušia nastavenia daných premenných (a použije sa štandardné locale
	<constant>C</constant> alebo <constant>POSIX</constant>).</para>
      
      <para>Ak máte napríklad nastavené premenné <computeroutput>LC_ALL=sk</computeroutput> a
	<computeroutput>LC_MESSAGES=cz</computeroutput>, tak po príkaze <computeroutput>unset
	LC_ALL</computeroutput> nebudete mať hlásenia programov v angličtine, ale češtine. Preto, ak
	chcete vypnúť nejaké nastavenia, vždy musíte príkazom unset zrušiť nastavenia všetkých
	premenných, ktoré môžu ovplyvňovať dané miestne nastavenia.</para>

      <note>
	<title>export/setenv</title>

	<para>Neodpustím si malú poznámku k príkazu <command>export</command>. Je to vstavaná
	  funkcia všetkých shellov kompatibilných s klasickým <application>sh</application> (teda aj
	  <application>bash</application>). Pre shelly typu <application>tcsh</application> je
	  ekvivalentom príkaz <command>setenv</command>.</para>

	<para>Je dôležité uvedomiť si, čo presne tento príkaz robí s premennými. V dokumentácii k
	  bashu sa hovorí, že <command>export</command> označí premennú, aby bola odovzdaná detským
	  (<foreignphrase>child</foreignphrase>) procesom v rámci prostredia
	  (<foreignphrase>environment</foreignphrase>). To znamená asi toľko, že keď spustíte napr.
	  iXy z materského procesu <systemitem class="resource">bash</systemitem>, ktorý pri štarte
	  exportoval premennú <computeroutput>LANG=sk</computeroutput>, všetky aplikácie v prostredí
	  <application>X Window System</application> budú dediť toto nastavenie a teda (ak to sami
	  podporujú) budú fungovať po slovensky. Ak budete chcieť spustiť aplikáciu bez slovenských
	  nastavení, musíte v <application>xterme</application> zadať príkaz <computeroutput>unset
	  LANG</computeroutput> (<computeroutput>unsetenv LANG</computeroutput> pre
	  <application>tcsh</application>), čím pre všetky detské procesy
	  <application>xtermu</application> (presnejšie shellu, ktorý je v ňom spustený), zrušíte
	  nastavenie premennej <envar>LANG</envar>. Potom aplikácie spustené priamo z tohto xtermu
	  budú fungovať bez podpory slovenčiny. Trochu sa s tým pohrajte.</para>
      </note>
    </section>

    <section>
      <title>Nastavenie časovej zóny</title>

      <para>S miestnymi nastaveniami úzko súvisí aj nastavenie časovej zóny. Vedel by som o tom
	rozprávať celé hodiny, ale ono by to muselo byť zložitejšie ako len nastavenie jednej
	premennej... A to takto:
	<screen>
bash$ export TZ="Europe/Bratislava"

tcsh$ setenv TZ "Europe/Bratislava"
	</screen></para>

      <para>Toto nastavenie ovplyvňuje len časový posun oproti hardverovým hodinám.  (Mimochodom,
	odporúčam hardverové hodiny nastavené na greenwichský svetový čas, čím tiež odpadajú
	problémy s prechodom medzi letným a zimným časom atď. ale o tom sú popísané iné súbory.)
	Toto celé je dosť dobrá vec, hlavne ak mate prístup k počítaču v inej časovej zóne, ale
	chcete pracovať s časom v stredoeurópskej zóne. Do svojho súboru
	<filename>.bash_profile</filename> (<filename>.login</filename> pre
	<application>tcsh</application>) vložte vyššie uvedený riadok.</para>
    </section>
  </section> <!-- locales-slovakia -->

  <section id="locales-examples">
    <title>Príklady miestnych nastavení</title>
    
    <itemizedlist>
      <listitem>
	<para>Užívateľ je síce zo stredného Slovenska, ale už keď s ním bola jeho mama tehotná,
	  púšťala mu do brucha kurzy angličtiny. Nemá teda zmysel používať slovenské nastavenia, až
	  na krajné prípady, napr. slovenské fonty v <application>Gimpe</application>. Darujte mu
	  súbor <filename>.i18n</filename> s nasledovným obsahom (aj na takéto malé oné potrebuje
	  <application>locales-sk</application>):
	  <screen>
LC_CTYPE=sk
	  </screen></para>
      </listitem>

      <listitem>
	<para>Užívateľ je normálny, má rád svoj materinský jazyk, ale netrápi ho, keď má polovicu
	  aplikácií po slovensky a polovicu po anglicky. Po česky vie. Toto ho poteší (nezabudnite
	  mu potajomky nainštalovať aj <application>locales-cs</application>):
	  <screen>
LANGUAGE=sk:cs
LANG=sk
	  </screen></para>
      </listitem>

      <listitem>
	<para>Užívateľ je z blízkeho juhu, jeho obľúbené pleso je Balaton, všetky hlášky chce po
	  maďarsky, ak sa inak nedá, pochopí aj slovenčinu. Nesmieme zabudnúť na jeho miernu
	  schizofreniu, pričom jedno jeho ja potrebuje slovenské triedenie reťazcov a druhé nevie
	  žiť bez formátovania dátumu a času v češtine. Nikdy sa nesmie zabudnúť na inštaláciu
	  prekladov hlášok pre maďarčinu, češtinu a slovenčinu z balíkov, ktoré podporujú premennú
	  LINGUAS. Treba ho tiež presvedčiť, že inštalácia
	  <application>locales-{sk,hu,cs}</application> nepredstavuje bezpečnostné riziko:
	  <screen>
LANGUAGE=hu:sk:cs
LC_COLLATE=sk
LC_TIME=cs
LANG=hu
LINGUAS="hu cs sk"
	  </screen></para>
      </listitem>
    </itemizedlist>
  </section> <!-- locales-examples -->
</section> <!-- locales -->

