
저는 쿠분투 14.04.2 LTS를 사용하고 있습니다. 다음 명령을 사용하여 로케일을 설정했습니다.
export LANG=ru_RU.utf8 LANGUAGE=ru_RU.utf8 LC_ALL=ru_RU.utf8
이제 locale
모든 항목이 이라고 가정합니다 ru_RU.utf8
. 그러나 을 발행하면 date
다음과 같은 결과가 나타납니다.
Чт. мая 14 12:55:36 MSK 2015
영어로 "5월 14일"이라고 말하는 것이 일반적이지만 러시아어로는 "мая 14"라고 말하지 않습니다("5월 14일"이 아니라 "5월 14일"을 의미함). "14 мая" 또는 최악의 경우 "май, 14"여야 합니다.
에 따르면 로케일 info coreutils 'date invocation'
의 기본 형식 문자열은 로케일을 통해 얻은 것과 정확히 동일하게 표시됩니다 . 그러나 동일한 정보 페이지에는 형식 문자열이 로케일 범주에 따라 다르다고 나와 있습니다. 그래서 시스템 로케일 데이터베이스에 버그가 있다는 결론을 내렸습니다.C
'+%a %b %e %H:%M:%S %Z %Y'
ru_RU.utf8
LC_TIME
이것은 실제로 버그입니까, 아니면 뭔가 빠졌습니까?
답변1
이는 버그가 아닙니다 date
. 의 정의로 인해 발생합니다 LC_TIME
. info
페이지 에 따르면 :
옮기다날짜형식 매개변수 없이 호출하는 것은 호출하는 것과 동일합니다. 다음에 따라 달라지는 기본 형식이 있습니다.LC_TIME로케일 카테고리.
이제 열면/usr/share/i18n/locales/ru_RU
, 아래에는 다음과 같이 정의된 (날짜/시간 형식)이 LC_TIME
표시됩니다 .date_fmt
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
로 변환됩니다. %a %b %e %H:%M:%S %Z %Y
-
%a
해당 로케일의 요일 약식 이름(예: Чт
)
%b
- 해당 로케일의 월 약식 이름(예: май
)
%e
- 날짜, 공백으로 채워진 날짜 %_d
(예: 14
) 등
. ..
따라서 파일을 편집하고 두 개의 변환 지정자 %b
and %e
(즉, swap <U0062>
및 <U0065>
)를 바꾸는 경우:
date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
그런 다음 이것을 실행하면 locale-gen
올바른 날짜 형식을 얻을 수 있습니다.
LC_TIME=ru_RU.utf8 date
Чт 14 май 13:27:14 MSK 2015
위 문서의 마지막 개정일(2015년 5월 14일 기준)은 다음과 같습니다.2013-11-14버그를 신고해 주시기 바랍니다.[email protected]