//------------------------------------------------------------------------------
// Copyright (c) 2000, 2007 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
// 
// Contributors:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------

/* resource files for content page javascript 
 * this file should be localized
*/
ContentPageResource = function() {


this.expandAllText = "모든 섹션 펼치기";
this.collapseAllText = "모든 섹션 접기";
this.backToTopText = "맨 위로";

this.expandAllSubSectionsText = "모든 단계 펼치기";
this.collapseAllSubSectionsText = "모든 단계 접기";

this.toolbar_bookmark = "현재 페이지 책갈피 지정";
this.toolbar_back = "뒤로";
this.toolbar_forward = "앞으로";
this.toolbar_expand_all = "모두 펼치기";
this.toolbar_collapse_all = "모두 접기";
this.toolbar_print = "인쇄";

this.expandText = "펼치기"
this.collapseText = "접기"
this.checkedAltText = "예"	

};

