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

};

