Ext 4 언어 로 컬 중국어 패 키 지 는 날짜 달력 컨트롤 을 한 화 할 수 없 는 BUG 입 니 다.
4439 단어 ext4
이전에 '진짜 Extjs 4.2 지원 시간 선택 달력 확장' 을 쓴 적 이 있 습 니 다.http://gogo1217.iteye.com/blog/1856265。당시 중국어 현지 화 자원 파일 을 도입 한 후 '요일' 이 일률적으로 'y' 로 변 한 것 을 발견 하고 picker 구성 요소 뒤에 Ext. picker. Date 에 따라 현지 화 코드 를 추가 하여 한 화 에 성 공 했 으 며 세부 사항 을 탐색 하지 않 았 다.
오늘 동료 가 코드 를 제출 하 였 는데, 페이지 의 달력 선택 컨트롤 이 무슨 요일 에 모두 'y' 로 바 뀌 었 는 지 발 견 했 고, 월 선택 은 아무런 문제 가 없 었 기 때문에 Ext - js 원본 코드 를 뒤 져 보 았 다.
원인 분석:
1, ext - lang - zh 열기CN. js 소스 코드, Ext. Date 에 대한 현지 화 는 Ext. onReady 에 놓 여 있 는 것 을 발 견 했 습 니 다. Ext. picker. Date 등 다른 현지 화 는 즉시 효력 이 발생 하지만 Ext. picker. Date 에 서 는 dayNames 를 덮어 쓰 지 않 았 습 니 다. 그의 본의 가 무엇 인지 모 르 겠 습 니 다.
2. Ext. picker. Month 의 소스 코드 를 열 어 보 니 212 줄 에 있 습 니 다. beforerender 방법 에서 months 는 구성 요 소 를 만 들 때 Ext. date. getShortMonthName 에서 가 져 왔 습 니 다. 다음 그림 과 같 습 니 다.
즉, 월 현지 화가 성공 한 것 은 그 가 구성 요 소 를 만 들 때 Ext. Date 에서 가 져 온 것 입 니 다. 구성 요 소 를 만 들 때 Ext. Date 는 이미 복사 되 었 습 니 다.
3. Ext. picker. Date 소스 코드 를 열 면 443 줄 beforerender 방법 에서 dayNames 는 직접 얻 은 prototype 속성 이 고 원형 중의 dayNames 는 Ext. picker. Date 로 불 러 온 후에 Ext. Date 에서 직접 얻 을 수 있 습 니 다. Ext. picker. Date 소스 코드 끝 에서 볼 수 있 습 니 다. 다음 그림 과 같 습 니 다.
Ext. picker. Date 가 덮어 쓰 지 못 하 는 이 유 는 클래스 로드 가 끝 난 후에 원형 을 직접 덮어 쓰 는 것 입 니 다. 이때 ext - lang - zhCN. js 는 Ext. Date 의 속성 을 복사 하기 위해 영어 설명 정 보 를 얻 었 습 니 다.
4. 중국어 현지 화 자원 파일 을 불 러 오지 않 을 때 영어 의 요일 대문자 가 정확하게 표 시 됩 니 다. 그러나 가입 후 마지막 자모 입 니 다. 이 유 는 ext - lang - zh 입 니 다.CN. js 는 Ext. picker. Date 의 getDay Initial 방법 을 135 줄 에 덮어 쓰 고 dayNames 의 마지막 문 자 를 가 져 오 는 것 으로 바 꾸 어 모두 'y' 로 보 여 줍 니 다.
수정 방법:
원본 코드 를 직접 수정 합 니까? 이런 방법 은 업그레이드 할 때 매우 불편 합 니 다.
우 리 는 다음 코드 를 통 해 수정 할 것 을 건의 합 니 다. 페이지 에 ext - lang - zh CN. js 를 도입 한 후에 우리 의 업무 코드 는 Ext. picker. Date 를 만 들 고 Ext. picker. Date 의 원형 속성 을 다시 수정 하면 됩 니 다.
Ext. Date 의 현지 화 는 Ext. onReady 에 놓 여 있 기 때문에 다시 복사 할 때 도 Ext. onReady 에 넣 어야 합 니 다.
최종 코드 는 다음 과 같 습 니 다.
<html>
<head>
<title>Ext JS 4.2 Examples</title>
<meta http-equiv="Context-Type" content="text/html;chartset=utf-8">
<link rel="stylesheet" type="text/css" href="resources/ext-theme-neptune/ext-theme-neptune-all.css" />
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
var proto = Ext.picker.Date.prototype,
date = Ext.Date;
proto.monthNames = date.monthNames;
proto.dayNames = date.dayNames;
proto.format = date.defaultFormat;
});
</script>
</head>
<body>
</body>
</html>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ext4 treePanel checkBox 선택 예텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.