//------------------------------------------------------------------------------
// 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 = "نعم"	

};

