//------------------------------------------------------------------------------
// 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 = "Espandi tutte le sezioni";
this.collapseAllText = "Comprimi tutte le sezioni";
this.backToTopText = "Torna all'inizio";

this.expandAllSubSectionsText = "Espandi tutti i passi";
this.collapseAllSubSectionsText = "Comprimi tutti i passi";

this.toolbar_bookmark = "Aggiungi segnalibro per questa pagina";
this.toolbar_back = "Indietro";
this.toolbar_forward = "In avanti";
this.toolbar_expand_all = "Espandi tutto";
this.toolbar_collapse_all = "Riduci tutto";
this.toolbar_print = "Stampa";

this.expandText = "Espandi"
this.collapseText = "Riduci"
this.checkedAltText = "Sì"	

};

