The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Локаль и формат даты выводимый date."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Системное и пользовательское ПО / Linux)
Изначальное сообщение [ Отслеживать ]

"Локаль и формат даты выводимый date."  +/
Сообщение от stakado email(ok) on 20-Ноя-13, 16:23 
Здравствуйте!
ОС: Debian 7.2 (Linux gtw-v2 3.2.0-4-686-pae #1 SMP Debian 3.2.51-1 i686 GNU/Linux)

Установлена следующая локаль:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="CP1251"
LC_NUMERIC="CP1251"
LC_TIME="CP1251"
LC_COLLATE="CP1251"
LC_MONETARY="CP1251"
LC_MESSAGES="CP1251"
LC_PAPER="CP1251"
LC_NAME="CP1251"
LC_ADDRESS="CP1251"
LC_TELEPHONE="CP1251"
LC_MEASUREMENT="CP1251"
LC_IDENTIFICATION="CP1251"
LC_ALL=CP1251

При этом date выводит названия дней недели и месяца на русском:
Срд Ноя 20 16:18:39 MSK 2013

А хочется на английском. Если всю локаль заменить на en_US.UTF-8, то date выводит дни недели и месяцы на английском, как и хочется, но при этом меняется вся локаль:
Wed Nov 20 16:21:08 MSK 2013

При выполнения команды export LC_TIME=en_US.UTF8 переменная LC_TIME почему-то не меняется.
Каким образом можно задать LC_TIME=en_US.UTF8, а все остальные переменные локали CP1251?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Локаль и формат даты выводимый date."  +/
Сообщение от Pahanivo (ok) on 20-Ноя-13, 17:23 
[user@s2 ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[user@s2 ~]$ date
Wed Nov 20 19:21:58 YEKT 2013
[user@s2 ~]$ export LANG="ru_RU.utf8"; date
Срд Ноя 20 19:22:00 YEKT 2013
[user@s2 ~]$ export LANG="en_US.utf8"; date
Wed Nov 20 19:22:14 YEKT 2013
[pahanivo@ssw2 ~]$

шапка

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Локаль и формат даты выводимый date."  –1 +/
Сообщение от stakado email(ok) on 21-Ноя-13, 15:55 
> [user@s2 ~]$ date
> Wed Nov 20 19:21:58 YEKT 2013
> [user@s2 ~]$ export LANG="ru_RU.utf8"; date
> Срд Ноя 20 19:22:00 YEKT 2013
> [user@s2 ~]$ export LANG="en_US.utf8"; date
> Wed Nov 20 19:22:14 YEKT 2013
> [pahanivo@ssw2 ~]$
> шапка

Шапка?

Как писал в первом сообщение --- при экспорте параметра LC_TIME он почему-то не применяется, можно экспортировать лишь значения для всех переменных посредством экспорта LC_ALL.

При этом так же в первом сообщении видно, что изначально LANG=en_US.UTF-8.
Но я всё же повторил действия, указанные Вами, лог привожу ниже:
root@gtw-v2:/home/services/new_router# date
Чтв Ноя 21 15:51:58 MSK 2013
root@gtw-v2:/home/services/new_router# export LANG="ru_RU.utf8"; date
Чтв Ноя 21 15:52:07 MSK 2013
root@gtw-v2:/home/services/new_router# export LANG="en_US.utf8"; date
Чтв Ноя 21 15:52:13 MSK 2013

И лог для наглядности о том, что LC_TIME не меняется:
root@gtw-v2:/home/services/new_router# locale
LANG=en_US.utf8
LANGUAGE=en_US:en
LC_CTYPE="CP1251"
LC_NUMERIC="CP1251"
LC_TIME="CP1251"
LC_COLLATE="CP1251"
LC_MONETARY="CP1251"
LC_MESSAGES="CP1251"
LC_PAPER="CP1251"
LC_NAME="CP1251"
LC_ADDRESS="CP1251"
LC_TELEPHONE="CP1251"
LC_MEASUREMENT="CP1251"
LC_IDENTIFICATION="CP1251"
LC_ALL=CP1251
root@gtw-v2:/home/services/new_router# export LC_TIME=en_US.utf8
root@gtw-v2:/home/services/new_router# locale
LANG=en_US.utf8
LANGUAGE=en_US:en
LC_CTYPE="CP1251"
LC_NUMERIC="CP1251"
LC_TIME="CP1251"
LC_COLLATE="CP1251"
LC_MONETARY="CP1251"
LC_MESSAGES="CP1251"
LC_PAPER="CP1251"
LC_NAME="CP1251"
LC_ADDRESS="CP1251"
LC_TELEPHONE="CP1251"
LC_MEASUREMENT="CP1251"
LC_IDENTIFICATION="CP1251"
LC_ALL=CP1251

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Локаль и формат даты выводимый date."  +/
Сообщение от lavr email on 21-Ноя-13, 17:25 
>[оверквотинг удален]
> LC_IDENTIFICATION="CP1251"
> LC_ALL=CP1251
> При этом date выводит названия дней недели и месяца на русском:
> Срд Ноя 20 16:18:39 MSK 2013
> А хочется на английском. Если всю локаль заменить на en_US.UTF-8, то date
> выводит дни недели и месяцы на английском, как и хочется, но
> при этом меняется вся локаль:
> Wed Nov 20 16:21:08 MSK 2013
> При выполнения команды export LC_TIME=en_US.UTF8 переменная LC_TIME почему-то не меняется.
> Каким образом можно задать LC_TIME=en_US.UTF8, а все остальные переменные локали CP1251?

Есть мнение, Вы пользуетесь переменными locale по незнанию.
Вот тут четко все расписано и если память не изменяет, LC_ALL использовать
опасно не только в разных дистрибутивах Linux.

https://wiki.debian.org/Locale

примечание: Вы как-то странно используете locale:

1) устанавливаете LANG=en_US.UTF-8
2) затем переопределяете LC_* в CP1251

Обычно, действуют наоборот, в LANG задают предпочтительную локаль и затем отдельные
переменные, например LC_TIME переопределяют в "en_US.UTF-8" или "C"
А LC_ALL обычно пустая, дабы не было проблем.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Локаль и формат даты выводимый date."  –1 +/
Сообщение от stakado email(ok) on 25-Ноя-13, 10:50 
> Есть мнение, Вы пользуетесь переменными locale по незнанию.
> примечание: Вы как-то странно используете locale:
> Обычно, действуют наоборот, в LANG задают предпочтительную локаль и затем отдельные
> переменные, например LC_TIME переопределяют в "en_US.UTF-8" или "C"
>  А LC_ALL обычно пустая, дабы не было проблем.

Вы оказались правы! Я неверно использовал задание переменных locale. Верно (для моего варианта) будет так:
export LANG=CP1251
export LANGUAGE=CP1251
export LC_TIME=en_US.utf8

Спасибо большое за помощь!

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Локаль и формат даты выводимый date."  +/
Сообщение от pavel_simple (ok) on 25-Ноя-13, 11:00 

> export LANG=CP1251
> export LANGUAGE=CP1251

рукалицо

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Локаль и формат даты выводимый date."  –2 +/
Сообщение от stakado (ok) on 25-Ноя-13, 15:14 
>> export LANG=CP1251
>> export LANGUAGE=CP1251
> рукалицо

Особая благодарность за содержательный ответ.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Локаль и формат даты выводимый date."  +/
Сообщение от koblin (ok) on 25-Ноя-13, 17:26 
$ LC_TIME=ru_RU.UTF-8 date
Пн. нояб. 25 17:25:44 MSK 2013

$ LC_TIME=en_US.UTF-8 date
Mon Nov 25 17:25:51 MSK 2013

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Локаль и формат даты выводимый date."  +/
Сообщение от stakado (ok) on 26-Ноя-13, 09:00 
> $ LC_TIME=ru_RU.UTF-8 date
> Пн. нояб. 25 17:25:44 MSK 2013
> $ LC_TIME=en_US.UTF-8 date
> Mon Nov 25 17:25:51 MSK 2013

Всем спасибо за помощь, вопрос уже решен!
P.S.: вопрос был именно в том, что переменная LC_TIME не менялась, в случае когда она менялась и формат даты так же менялся. Пост lavr'a натолкнул на верный путь, переменная LC_TIME изменена, date выводит дату в требуемом мне формате.
P.P.S.: не надо постить одно и то же по десять раз, порой стоит внимательнее вчитаться в вопрос.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Локаль и формат даты выводимый date."  +/
Сообщение от Pahanivo (ok) on 26-Ноя-13, 12:24 
Ну, как бы, вежливо будет изложить ваше решение, дабы другие поняли что решено, а тем кому надо могли заюзать ваш рецепт.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Локаль и формат даты выводимый date."  –1 +/
Сообщение от stakado (ok) on 26-Ноя-13, 14:55 
> Ну, как бы, вежливо будет изложить ваше решение, дабы другие поняли что
> решено, а тем кому надо могли заюзать ваш рецепт.

Так вроде ж уже (пост №4)! Правда не очень развёрнуто. Видимо, Вы правы, стоит детализировать.
Использовать для установки локали export LC_ALL некорректно. В моём случае использование экспорта LC_ALL привело к тому, что не выставлялась переменная LC_TIME (указывал команду export LC_TIME=en_US.utf8, но она не менялась).
Корректным будет выставить изначально предпочитаемую локаль в LC_LANG:
export LC_LANG=CP1251
А далее менять переменные, которые требуется (в моём случае - LC_TIME):
export LC_TIME=en_US.utf8

При этом переменную LC_ALL вообще не трогать.

После указанных выше действий дефолтная локаль осталась CP1251, а переменная LC_TIME (и формат даты выводимый date) стали соответствовать en_US.utf8

Ещё раз благодарю всех за помощь, без неё я бы не нашёл ответа на свой вопрос.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Локаль и формат даты выводимый date."  +/
Сообщение от pavel_simple (ok) on 26-Ноя-13, 17:54 
>[оверквотинг удален]
> команду export LC_TIME=en_US.utf8, но она не менялась).
> Корректным будет выставить изначально предпочитаемую локаль в LC_LANG:
> export LC_LANG=CP1251
> А далее менять переменные, которые требуется (в моём случае - LC_TIME):
> export LC_TIME=en_US.utf8
> При этом переменную LC_ALL вообще не трогать.
> После указанных выше действий дефолтная локаль осталась CP1251, а переменная LC_TIME (и
> формат даты выводимый date) стали соответствовать en_US.utf8
> Ещё раз благодарю всех за помощь, без неё я бы не нашёл
> ответа на свой вопрос.

билять -- ну зачем вот это ^^^ фиксировать -- этоже полный пиз^W непрофессионализм
если мы рассматриваем glibc linux -- то такой переменной окружения как LC_LANG нет и на настройки локали она никак не влияет.
2. можно конечно сильно по разному сделать названия -- но LANG/LANGUAGE  в виде CP1251 я нигде не встречал -- это или localedef кто-то сделал через жопу или одно из двух.
3. правильный ответ описан в man locale в секции "ENVIRONMENT VARIABLES" -- там прям зелёными по чёрному написано
"
       LC_TIME

               Date and time formats.
"

P.S.
TC или тонкий троль или ...

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Локаль и формат даты выводимый date."  +/
Сообщение от stakado (ok) on 27-Ноя-13, 08:27 
>        LC_TIME
>    Date and time formats.
> P.S.
> TC или тонкий троль или ...

В некоторых скриптах присутствуют комментарии, написанные в кодировке Win1251. Для того, что бы в vim'е они отображались нормально переменная LANG выставлена в CP1251. LANG=CP1251 выбрано опытным путем.
О том, что LC_TIME меняет формат времени было ясно изначально, но как написано в первом сообщении и в некоторых далее (складывается впечатление, что ни первое, ни дальнейшие сообщения никто не читает - лишь последнее) - её значение НЕ МЕНЯЛОСЬ! И весь вопрос был - почему она не меняется? Ув. lavr ответил на этот вопрос, я даж процитирую:
>примечание: Вы как-то странно используете locale:

Именно! Именно потому, что я не верно использовал locale! В частности задавал переменную LC_ALL, чего делать категорически не рекомендуется.

P.S.: что я нубло - так и не спорю. А вот почему ув. знатоки так прилипли к этой теме - "не панятнааа". Вопрос решён ещё в 3-4 посте.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Локаль и формат даты выводимый date."  +/
Сообщение от pavel_simple (ok) on 27-Ноя-13, 11:19 
TC или тонкий троль или мои опасения подтвердились.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Локаль и формат даты выводимый date."  +/
Сообщение от lavr email on 27-Ноя-13, 12:05 
>>        LC_TIME
>>    Date and time formats.
>> P.S.
>> TC или тонкий троль или ...
> P.S.: что я нубло - так и не спорю. А вот почему
> ув. знатоки так прилипли к этой теме - "не панятнааа". Вопрос
> решён ещё в 3-4 посте.

Потому что ошибки, очепятки в постах, LC_LANG - не существует.
Русские кодировки - вещь особенная, сделали так как Вас устраивает, позже почитаете
более глубоко про locale и все поймете - почему?

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру