시스템 전체에서 날짜/시간 형식을 사용자 정의하는 모범 사례는 무엇입니까?

시스템 전체에서 날짜/시간 형식을 사용자 정의하는 모범 사례는 무엇입니까?

긴 이야기 짧게

불필요한 콘텐츠를 반복하지 않는다는 DRY 원칙을 준수하면서 날짜 및 시간 형식을 사용자 정의하는 모범 사례는 무엇입니까?


맞춤설정하고 싶어요날짜 및 시간 형식만내 시스템의 경우 나머지 로케일은 변경하지 않고 유지합니다. 환경 변수를 LC_TIME사용하면 대체 로케일을 가리키는 것만으로도 해당 측면을 사용자 정의할 수 있다는 것을 이해합니다 . 저는 Linux(정확하게는 Ubuntu 14.04)를 사용하고 있으므로 제가 이해하는 형식을 localedef입력으로 사용하고 싶습니다.

나는 다음 세 가지 문서를 읽었습니다.

마지막 것이 특히 도움이 됩니다.

지금 나는오직이 섹션을 맞춤설정하고 싶습니다.LC_TIME그리고 다른 모든 것을 상속받고 싶었습니다.

그래서 호출된 파일에 복사해서 en_US내가 원하는 값을 조정합니다. 문서를 필터링한 후 다른 모든 섹션도 - 키워드로 바꾸기로 결정했습니다.isodate/usr/share/i18n/localescopy

질문:어떤 접근 방식이 모범 사례가 되어야 하는지 명확하지 않습니다. 누구든지 이것(또는 내가 제공한 것의 대안)을 알고 있습니까?

d_t_fmt예를 들어 몇 가지 값( , d_fmt, t_fmt, t_fmt_ampm, am_pm) 에만 관심이 있으므로 date_fmt만족합니다.상속하다그런 en_US다음 LC_TIMEISO와 유사한 형식(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.conflocale.conf(5)locale.LC_TIME=

관련 정보