# локаль (locale)

## alyent

Помогите прописать нормально локаль, так чтоб русский поддерживался в терминале, но все мессаги были на английском.

Постоянно получаю:

 *Quote:*   

> perl: warning: Falling back to the standard locale ("C").
> 
> perl: warning: Setting locale failed.
> 
> perl: warning: Please check that your locale settings:
> ...

 

мой /etc/profile

 *Quote:*   

> export LANG="C"
> 
> export LC_CTYPE="ru_RU.KOI8-R"
> 
> export LC_COLLATE="ru_RU.KOI8-R"
> ...

 

----------

## Bor81

Я так понял ты его руками правил ?!

Зря зря

Советую вернуть обратно стандартный

Если надо для всей системы правь

/etc/env.d/00basic

LANG="uk_UA.KOI8-U"

MM_CHARSET="KOI8-U"

LC_MESSAGES="POSIX"

LC_NUMERIC="POSIX"

если только для своего пользователя тогда

.bash_profile (для bashб подобно для остальных)

```

#export LC_ALL="uk_UA.KOI8-U"

export LANG="uk_UA.KOI8-U"

export MM_CHARSET="KOI8-U"

export LC_MESSAGES="POSIX"

export LC_NUMERIC="POSIX"

```

ЗЫ: замечен глюк (?)

при установке LC_ALL

изменить LC_MESSAGES и LC_NUMERIC не получается  :Sad: 

----------

## Urs

 *Quote:*   

> 
> 
> Если надо для всей системы правь 
> 
> /etc/env.d/00basic 
> ...

 

Говорят, лучше такое писАть рядом, например в /etc/env.d/00myconf

Ибо 00basic переписывается.

----------

## Jeld

Да, и не забывать про env-update

----------

## Bor81

 *Urs wrote:*   

>  *Quote:*   
> 
> Если надо для всей системы правь 
> 
> /etc/env.d/00basic 
> ...

 

Ну как в etc-update скажешь так и будет  ?!  :Very Happy: 

а вообще я согласен лучше в отдельный файл

ЗЫ: у меня в .bash_profile и мне хватает   :Wink: 

----------

## alyent

 *Bor81 wrote:*   

> Я так понял ты его руками правил ?!
> 
> Зря зря
> 
> Советую вернуть обратно стандартный
> ...

 

ну конечно руками - это же генту. А как вернуть стандартный?

----------

## Dr][aM

Создаем файло:

cat /etc/env.d/00locale

LANG="ru_RU.KOI8-R"

LC_MESSAGES="POSIX"

LC_NUMERIC="POSIX"

G_BROKEN_FILENAMES="1"

И тада при обновлениях locale никада не слетит, а env-update будт всегда считывать этот файл.

----------

## Bor81

То что это дженту не значит что везде надо править руками

тем более все подряд

(это тебе не LFS или CRUX какой-то)

в дженту достаточно мощный набор системных утилит

вот пример работы одной из них

 *Quote:*   

> 
> 
> root@work portage # etcat -b /etc/profile
> 
> Searching for /etc/profile in * ...
> ...

 

в этом пакете находится нужный тебе файл /etc/profile

проще всего востановить его - это переустановить  :Wink: 

а потом сделать etc-update

Дополнительная инфа:

man portage

man etcat

man etc-update

----------

## alyent

 *Dr][aM wrote:*   

> Создаем файло:
> 
> cat /etc/env.d/00locale
> 
> LANG="ru_RU.KOI8-R"
> ...

 

сделал все как надо, но   *Quote:*   

> (process:8979): Gtk-WARNING **: Locale not supported by C library.
> 
>         Using the fallback 'C' locale.
> 
> 

 

----------

## command.com

наверное все-таки LANG="ru_RU.koi8r"

а для чего G_BROKEN_FILENAMES="1" ?

----------

## Unik

 *Bor81 wrote:*   

> ЗЫ: замечен глюк (?)
> 
> при установке LC_ALL
> 
> изменить LC_MESSAGES и LC_NUMERIC не получается 

 

Это не глюк, просто LC_ALL имеет более высокий приоритет.

 *Quote:*   

> сделал все как надо, но

 

1. поддерживает ли ядро koi8r nls?

2. Есть ли в юзе nls? Был ли он при бутстрапе (если был сам бутстрап)?

----------

## inv

 *alyent wrote:*   

>  *Dr][aM wrote:*   Создаем файло:
> 
> cat /etc/env.d/00locale
> 
> LANG="ru_RU.KOI8-R"
> ...

 

В /etc/env.d/00locale - это хорошо,

но почему в системе помимо этого LANG прописан в 2-х местах ? или это я ошибаюсь.

В /etc/profile и в /etc/env.d/00basic

Какое у них применение ?

----------

## alyent

народ, ну что с перлом делать?

моя локаль:

```
LANG="POSIX"

LC_CTYPE="ru_RU.koi8r"

LC_COLLATE="ru_RU.koi8r"

LC_TIME="POSIX"

LC_PAPER="Letter"

```

perlовое руганье:

```
perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

        LANGUAGE = (unset),

        LC_ALL = (unset),

        LC_PAPER = "Letter",

        LC_COLLATE = "ru_RU.koi8r",

        LC_CTYPE = "ru_RU.koi8r",

        LC_TIME = "POSIX",

        LANG = "POSIX"

    are supported and installed on your system.

perl: warning: Falling back to the standard locale ("C").

```

не, ну что он гонит! всё у меня с локалью ок! 

LC_ALL ясен пень нельзя писать - оно всё нахрен перепишет, если будет прописано. Может как-то можно perl заткнуть? Ну надоело уже!

----------

## Bash[DevNull]

 *inv wrote:*   

> 
> 
> В /etc/env.d/00locale - это хорошо,
> 
> но почему в системе помимо этого LANG прописан в 2-х местах ? или это я ошибаюсь.
> ...

 

В файлах каталога /etc/env.d/* лежат настройки всех переменных окружения. Разбиты они на файлы по смысловой нагрузке. Цифры слева позволяют организовать просмотр этого каталога в определенном порядке. Все изменения нужно делать тут. На самом деле не рекомендуеться изменять файлы этого каталога, так как они не защищены и при обновлении sys-apps/baselayout будут изменены. Рекомендуеться тут создавать свои файлы с настройками.

Как только были произведены изменения нужно запустить команду env-update, которая пройдеться по файлам каталога /etc/env.d/* и создаст файл /etc/profile.env, в который войдут все переменные и который будет использоваться системой, так как подключаеться он из /etc/profile для всех пользователей.

Более подробно об этом можно узнать тут http://www.gentoo.org/doc/en/env.d-howto.xml

----------

## Urs

 *alyent wrote:*   

> народ, ну что с перлом делать?
> 
> моя локаль:
> 
> ```
> ...

 

Нет такой локали:

LC_PAPER="Letter"

У меня так:

LC_CTYPE=ru_RU.KOI8-R

LC_COLLATE=ru_RU.KOI8-R

Можешь еще:

man perllocaleLast edited by Urs on Sun Jan 18, 2004 4:40 pm; edited 1 time in total

----------

## alyent

 *Urs wrote:*   

> Нет такой локали:
> 
> LC_PAPER="Letter"
> 
> У меня так:
> ...

 

вообще-то есть: это размер бумаги для принтера.

 вот тут подтверждение.

----------

## Urs

 *Quote:*   

> 
> 
> вообще-то есть: это размер бумаги для принтера. 
> 
> вот тут подтверждение.
> ...

 

Ну и где там слово "Letter"?  :Smile: 

----------

## LynZ

по поводу ругани перла - просто локаль должна зваться ru_RU.KOI8R.

У меня был схожий косяк с xlib& ru_RU.utf8

----------

## SupapleX

кстати, у меня подобные траблы.

После буутстрапа2.6 (кривого, сами знаете), локаль полетела.

Попутно x.org поставил, ещё glibc обновил. 

nls в USE'е был, в ядре всё нужное есть.

Везде в иксе с русским нормально кроме как xterm.

В настоящей консольке абракадабра.

/etc/env.d/00base всё нужное выставленно.

и в остальных местах на ru_RU.KOI8-R (замена на ru_RU.KOI8R не помогает)

perl (как и некоторые другие проги) выдаёт:

 $ perl

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

        LANGUAGE = (unset),

        LC_ALL = (unset),

        LC_NUMERIC = "POSIX",

        LC_MESSAGES = "POSIX",

        LANG = "ru_RU.KOI8-R"

    are supported and installed on your system.

perl: warning: Falling back to the standard locale ("C").

----------

## SupapleX

хм, вот дятел-то   :Evil or Very Mad: 

оказалось, что glibc был без nls откомпилен

----------

