# Messages.properties
#
#/*******************************************************************************
# * Copyright (c) 2011 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 API and implementation
# *


# Control Graph Generator
vaccinationFraction=Fraction vaccinated
vaccinationFractionTT=The fraction of the population vaccinated per time period
vaccinationFractionUNIT=PM/TP

isolationFraction=Fraction isolated
isolationFractionTT=The fraction of the population isolated per time period
isolationFractionUNIT=PM/TP

populationIdentifier=Controlled population
populationIdentifierTT=The identifier of the population being controlled
populationIdentifierUNIT=

location=Ort
locationTT=Specify the location to control. Contained regions will also be controlled.
locationUNIT=

vaccinations=Vaccinations
vaccinationsTT=The number of vaccinations per time period
vaccinationsUNIT=vac/TP

isolations=Isolations
isolationsTT=The number of isolations per time period
isolationsUNIT=iso/TP

 
# Error messages
CGGWizErr1=Please specify the isolated fraction
CGGWizErr2=Isolated fraction must be between 0 and 1
CGGWizErr3=Please specify an isolated fraction
CGGWizErr4=Isolated fraction must be between 0 and 1
CGGWizErr5=The population identifier must be specified



