//------------------------------------------------------------------------------
// 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 = "是"	

};

