Lokalizace/HOWTO

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Localization/Guide and the translation is 40% complete.
Outdated translations are marked like this.

Časové pásmo

Za účelem udržení správného údaje o čase je nutné nastavit časové pásmo tak, aby váš systém věděl, kde se nachází.

Systém locale

Co je to locale?

Locale jsou soubory informací, které většina programů používá k určení toho, jaké nastavení zvolit s ohledem na daný stát a použitý jazyk. Jednotlivé locale a jim odpovídající sady dat jsou součástí systémové knihovny a na většině systémů je lze najít v /usr/share/locale. Název locale má většinou podobu ab_CD, přičemž ab označuje dvou (či tří) písmenný kód jazyka (dle ISO-639) a CD označuje dvoupísmenný kód státu (vyjádřený v ISO-3166). K názvu mohou být dále připojeny jejich varianty, např. en_GB.UTF-8 nebo de_DE@euro. Více informací o locale si prosím vyhledejte na Wikipedii a v souvisejících článcích.

Proměnné prostředí vztahující se k locales

Proměnné řídící různé složky nastavení locale jsou vypsány v tabulce níže. Každá z nich může obsahovat název jednoho locale ve výše uvedeném formátu ab_CD.

Název proměnné Popis
LANG Definuje všechna nastavení locale naráz, avšak současně umožňuje jeho další individuální přizpůsobení pomocí nastavení LC_* uvedených níže.
LC_COLLATE Definuje abecední řazení řetězců. Tím je ovlivněno např. řazení ve výpisu adresářů.
LC_CTYPE Definuje to, jakým způsobem nakládá systém se znaky. Určuje které znaky jsou považovány za součást abecedy, které jsou numerické apod. Je-li to možné, určuje rovněž použitou znakovou sadu.
LC_MESSAGES Určuje místní nastavení programů používajících "message based" lokalizaci (což je většina Gnu aplikací, viz další kapitola, v níž jsou uvedeny bližší informace o tom, které programy to jsou, a jak dále zprovoznit lokalizaci u těch, které tento mechanismus nepoužívají).
LC_MONETARY Definuje měnové jednotky a formátování číselných hodnot vyjadřujících peněžní částky.
LC_NUMERIC Definuje formátování číselných hodnot, které nevyjadřují peněžní hodnotu. Ovlivňuje zejména podobu oddělovače tisíců nebo desetinné čárky.
LC_TIME Definuje formátování údajů a data a času.
LC_PAPER Definuje výchozí formát papíru.
LC_ALL Zvláštní proměnná pomocí níž lze změnit všechna ostatní nastavení.
Poznámka
Některé programy jsou tak, že očekávají tradiční anglické abecední řazení, zatímco jiná locale, třeba estonské, používají řazení jiné. Z tohoto důvodu se doporučuje u nastavení na úrovni celého systému výslovně stanovit LC_COLLATE na C
Upozornění
Použití LC_ALL se silně nedoporučuje, neboť může být později přebito. Promennou používejte pouze pro testování a "nikdy" ji nenastavujte ve spouštěcích souborech.

Uživatelé nejčastěji nastavují jako globální pouze proměnnou LANG.

Generování specifických locale

Ve svém systému budete patrně potřebovat pouze jedno nebo dvě locale. Ty jenž budete potřebovat můžete určit pomocí /etc/locale.gen.

CODE Adding locales to /etc/locale.gen
en_GB ISO-8859-1
en_GB.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
Poznámka
Use an @euro value from /usr/share/i18n/SUPPORTED as the locale when using the Euro currency symbol (€) on non UTF-8 based locales.

Následně spusťe locale-gen. Tím vygenerujte veškeré locale vypsané v souboru /etc/locale.gen.

root #locale-gen
 * Generating 4 locales (this might take a while) with 1 jobs
 *  (1/4) Generating en_GB.ISO-8859-1 ...                       [ ok ]
 *  (2/4) Generating en_GB.UTF-8 ...                            [ ok ]
 *  (3/4) Generating de_DE.ISO-8859-1 ...                       [ ok ]
 *  (4/4) Generating de_DE.ISO-8859-15@euro ...                 [ ok ]
 * Generation complete

Dostupnost vámi zvolených locale můžete ověřit spuštěním locale -a.

user $locale -a
C
POSIX
de_DE
de_DE.iso88591
de_DE.iso885915@euro
de_DE@euro
deutsch
en_GB
en_GB.iso88591
en_GB.utf8
german

The /usr/lib/locale/locale-archive file can be shown by localedef.

user $localedef --list-archive

Its raw content can be displayed using the strings command.

user $strings /usr/lib/locale/locale-archive | less

Nastavení locale

OpenRC

Pokud používáte OpenRC, nastavení locale je uchováno v proměnných prostředí. Ty jsou typicky nastavovány v souborech /etc/env.d/02locale (nastavení pro celý systém) a /.bashrc (uživatelské nastavení) a je možné je spravovat pomocí eselect locale. Například nastavení proměnné LANG na hodnotu C proveďte takto:

root #eselect locale list
Available targets for the LANG variable:
  [1]   C 
  [2]   POSIX
  [3]   en_US
  [4]   en_US.iso885915
  [5]   en_US.utf8
  [ ]   (free form)
root #eselect locale set 1

samozřejmě můžete soubor upravit ručně a odlišit od sebe jednotlivé proměnné.

The command above lists the suffix in lower case without any hyphens, glibc understands both forms of the suffix, many other programs don't. The most common example of which is X. So it is best to always use UTF-8 in preference to utf8.

FILE /etc/env.d/02localeNastavení výchozího systémového locale v /etc/env.d/02locale
LANG="de_DE.UTF-8"
LC_COLLATE="C"

In some cases users may notice glitchy non-English representation in some applications like Krusader (https://bugs.kde.org/show_bug.cgi?id=371582). Removing or commenting the LC_ALL="" line from /etc/env.d/02locale should fix the problem.

Je možné a zejména v poněkud tradičnějším UNIXovém prostředí vcelku běžné, ponechat globální nastavení nezměněné, tj. locale "C". Uživatelé mohou jimi upřednostňované locale nastavit ve svém RC souboru:

FILE ~/.bashrcNastavení uživatelského locale v ~/.bashrc
export LANG="de_DE.UTF-8"
export LC_COLLATE="C.UTF-8"
FILE ~/.profileSetting the user locale for X applications
export LANG="de_DE.UTF-8"
export LC_COLLATE="C.UTF-8"

Dalším způsobem nastavení systému je ponechání výchozího locale C, avšak se současným povolením znakové sady UTF-8. Této možnosti lze dosáhnout použitím následujícího nastavení v souboru /etc/env.d/02locale:

CODE Použití tradičního locale C současně s UTF-8
LC_CTYPE=de_DE.UTF-8

Při využití výše uvedeného úryvku uživatelé uvidí lokalizované názvy souborů jak se patří, aniž by byli nuceni používat vámi upřednostňovaný jazyk.

Jakmile jste nastavili správné locale, nezapomeňte aktualizovat proměnné prostředí, aby váš systém zaznamenal provedenou změnu.

Pro celosystémové výchozí locale:

root #env-update && source /etc/profile

Pro uživatelské locale:

user $source ~/.bashrc

Po té je potřeba zabít X server stisknutím kláves Ctrl+Alt+Backspace, odhlásit se a po té se znovu přihlásit pod svým uživatelským jménem.

Nyní ověřte, že se změny projevily:

user $locale

The values of locale environment variables that have been explicitly set e.g. in an export statement (if using bash) are listed without double quotes. Those whose value has been inherited from other locale environment variables have their values in double quotes.

systemd

Pokud používáte systemd, měli byste nastavit locale příkazem localectl. Projděte si seznam dostupných locale pomocí:

root #localectl list-locales

Pak nastavte locale, které chcete:

root #localectl set-locale LANG=de_DE.utf8

Nakonec zkontrolujte zda je výsledek správný:

root #localectl | grep "System Locale"
   System Locale: LANG=de_DE.utf8

Rozložení kláves v konzoli

OpenRC

Rozložení kláves používané v konzoli se nastavuje v /etc/conf.d/keymaps v proměnné keymap. Platné hodnoty lze nalézt /usr/share/keymaps/VAŠE_ARCH/. i386 obsahuje další podskupiny rozložení (qwerty/, azerty/, atd.). Některé jazyky mají více možností rozložení, proto můžete různě experimentovat, než naleznete to, které vašim potřebám vyhovuje nejvíc.

FILE /etc/conf.d/keymapsNastavení rozložení v pro konzoli
keymap="de"
#keymap="de-latin1"
#keymap="de-latin1-nodeadkeys"

systemd

V případě systemd se rozložení kláves konzole nastavuje příkazem localectl. Najprve zjistěte jaká je nabídka rozložení kláves:

root #localectl list-keymaps

Po té nastavte rozložení jaké chcete:

root #localectl set-keymap it

Nakonec zkontrolujte, zda bylo rozložení kláves nastaveno správně:

root #localectl | grep "VC Keymap"
       VC Keymap: it

Rozložení kláves X serveru

OpenRC

Rozložení kláves používané v X serveru se stanovuje v souboru /etc/X11/xorg.conf volbou XkbLayout.

systemd

V případě systemd můžete rozložení kláves X11 serveru nastavit příkazem localectl. Nejprve zjistěte jaká rozložení klávesnice X11 jsou k dispozici:

root #localectl list-x11-keymap-layouts

Po té nastavte rozložení kláves X11 jaké chcete:

root #localectl set-x11-keymap it

Nakonec zkontrolujte, zda bylo rozložení kláves X11 nastaveno správně:

root #localectl | grep "X11 Layout"
      X11 Layout: it

NLS

Aby fungovala "message based" lokalizace v programech, které ji podporují, budete je muset zkompilovat s nastavením USE proměnné nls. Většina programů používajících nls bude také potřebovat knihovnu gettext, aby mohla extrahovat a používat lokalizované zprávy. Portage ji samozřejmě automaticky nainstaluje jakmile bude potřeba.

Po nastavení USE proměnné nls, bude potřeba přeinstalovat některé balíčky:

root #emerge --ask --newuse --deep --with-bdeps=y @world

LINGUAS

Upozornění
LINGUAS causes packages to implicitly skip locales. When using it, the package manager cannot determine which locales were omitted. Do not use LINGUAS if you intend to redistribute binary packages.

There is also an additional LINGUAS variable that is used by some gettext-based build systems to control which localization files are built and installed. The variable takes in space-separated list of language codes, and a suggested place to set it is /etc/portage/make.conf:

root #nano -w /etc/portage/make.conf
## (Doplňte proměnnou LINGUAS. V případě němčiny, finštiny a angličtiny:)
LINGUAS="de fi en"

Note that there is a large difference between LINGUAS being unset and being set to an empty value: Unset LINGUAS means to install all available languages. By contrast, with LINGUAS="", most ebuilds would install only the packages' default language but none of the LC_MESSAGES files.

Poznámka
Incorrect setting of LINGUAS may lead to incomplete translation of some applications, such as KDE Plasma and its apps. Try to remove LINGUAS and rebuild related packages if you encounter this problem.

L10N

A USE_EXPAND variable called L10N decides which extra localization support will be installed. This is commonly used for downloads of additional language packs by packages. Similar to LINGUAS, the variable takes a space separated list of language tags, and it can be set in /etc/portage/make.conf:

root #nano -w /etc/portage/make.conf
## (Add in the L10N variable. For instance, for German and Brazilian Portuguese:)
L10N="de pt-BR"

To set it per-package, edit /etc/portage/package.use and prefix the requested language packs with "l10n_", as shown in the next example:

FILE /etc/portage/package.use
app-text/aspell l10n_de l10n_pt-BR

Note that while the common two letter language codes (like de or fr) are identical in LINGUAS and L10N, more complex entries have a different syntax because L10N uses IETF language tags (aka BCP 47). For example, pt_BR and sr@latin in LINGUAS become pt-BR and sr-Latn in L10N, respectively.

A list of L10N values that can be used is provided as /var/db/repos/gentoo/profiles/desc/l10n.desc:

user $grep -i portuguese /var/db/repos/gentoo/profiles/desc/l10n.desc
pt - Portuguese
pt-BR - Portuguese (Brazil)
pt-PT - Portuguese (Portugal)

After setting the L10N USE_EXPAND variable it may be necessary to re-emerge some packages:

root #emerge --ask --changed-use --deep --with-bdeps=y @world

See also


External resources

References


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Alexander Holler, Steven Lucy, Benny Chuang, Lars Weiler, Tobias Scherbaum, Flammie Pirinen, , Francisco Blas Izquierdo Riera (klondike)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.