
긴 이야기 짧게
불필요한 콘텐츠를 반복하지 않는다는 DRY 원칙을 준수하면서 날짜 및 시간 형식을 사용자 정의하는 모범 사례는 무엇입니까?
맞춤설정하고 싶어요날짜 및 시간 형식만내 시스템의 경우 나머지 로케일은 변경하지 않고 유지합니다. 환경 변수를 LC_TIME
사용하면 대체 로케일을 가리키는 것만으로도 해당 측면을 사용자 정의할 수 있다는 것을 이해합니다 . 저는 Linux(정확하게는 Ubuntu 14.04)를 사용하고 있으므로 제가 이해하는 형식을 localedef
입력으로 사용하고 싶습니다.
나는 다음 세 가지 문서를 읽었습니다.
- http://pubs.opengroup.org/onlinepubs/009696699/basedefs/xbd_chap07.html
- http://manpages.ubuntu.com/manpages/trusty/man1/localedef.1posix.html
- https://ccollins.wordpress.com/2009/01/06/how-to-change-date-formats-on-ubuntu/
마지막 것이 특히 도움이 됩니다.
지금 나는오직이 섹션을 맞춤설정하고 싶습니다.LC_TIME
그리고 다른 모든 것을 상속받고 싶었습니다.
그래서 호출된 파일에 복사해서 en_US
내가 원하는 값을 조정합니다. 문서를 필터링한 후 다른 모든 섹션도 - 키워드로 바꾸기로 결정했습니다.isodate
/usr/share/i18n/locales
copy
질문:어떤 접근 방식이 모범 사례가 되어야 하는지 명확하지 않습니다. 누구든지 이것(또는 내가 제공한 것의 대안)을 알고 있습니까?
d_t_fmt
예를 들어 몇 가지 값( , d_fmt
, t_fmt
, t_fmt_ampm
, am_pm
) 에만 관심이 있으므로 date_fmt
만족합니다.상속하다그런 en_US
다음 LC_TIME
ISO와 유사한 형식(ISO 8601)을 사용하여 값을 덮어씁니다. 그러나 상태에 대한 문서 copy
(강조)는 다음과 같습니다.
복사
이 범주에 대한 정의로 사용될 기존 로케일의 이름을 지정합니다. 이 키워드를 지정하면다른 키워드는 지정할 수 없습니다.
즉, 단순히 하나의 키워드를 추가한 copy
다음 더 많은 키워드를 추가할 수는 없습니다.
또한 LC_TIME
섹션을 정의하는 것이 합법적일까요, 아니면 localedef
컴파일을 완전히 거부할까요?
지금까지 내가 생각한 것 :
escape_char /
comment_char %
LC_IDENTIFICATION
copy "en_US"
END LC_IDENTIFICATION
LC_CTYPE
copy "en_US"
END LC_CTYPE
LC_COLLATE
copy "en_US"
END LC_COLLATE
LC_MONETARY
copy "en_US"
END LC_MONETARY
LC_NUMERIC
copy "en_US"
END LC_NUMERIC
LC_TIME
abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
"<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
"<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
"<U0053><U0061><U0074>"
day "<U0053><U0075><U006E><U0064><U0061><U0079>";/
"<U004D><U006F><U006E><U0064><U0061><U0079>";/
"<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
"<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
"<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
"<U0046><U0072><U0069><U0064><U0061><U0079>";/
"<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"
week 7;19971130;7
first_weekday 1
first_workday 2
abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
"<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
"<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
"<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
"<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
"<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
"<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
"<U004D><U0061><U0072><U0063><U0068>";/
"<U0041><U0070><U0072><U0069><U006C>";/
"<U004D><U0061><U0079>";/
"<U004A><U0075><U006E><U0065>";/
"<U004A><U0075><U006C><U0079>";/
"<U0041><U0075><U0067><U0075><U0073><U0074>";/
"<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
"<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
"<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
"<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
% Appropriate date and time representation (%c)
% "%Y-%m-%d %H:%M:%S"
d_t_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
%
% Appropriate date representation (%x)
% "%Y-%m-%d"
d_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
%
% Appropriate time representation (%X)
% "%H:%M:%S"
t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
%
t_fmt_ampm ""
%
am_pm "";""
%
% Appropriate date representation (date(1)) "%Y-%m-%d %H:%M:%S"
date_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
END LC_TIME
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
LC_PAPER
copy "en_US"
END LC_PAPER
LC_NAME
copy "en_US"
END LC_NAME
LC_ADDRESS
copy "en_US"
END LC_ADDRESS
LC_TELEPHONE
copy "en_US"
END LC_TELEPHONE
LC_MEASUREMENT
copy "en_US"
END LC_MEASUREMENT
답변1
일부 설명에서 언급했듯이 나머지 부분을 복사하여 사용자 LC_TIME
정의 로케일 파일에서 사용자 정의할 수 있습니다 . 매뉴얼 페이지 LC_TIME
에서 알 수 있듯이 커널 명령줄 옵션을 사용하여 부팅 시 설정을 재정의할 수도 있습니다./etc/locale.conf
locale.conf(5)
locale.LC_TIME=