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

# New Disease Wizard

NPopulationModelWiz.wizard_title = New Population Model
NPopulationModelWiz.page_title = Create a new population model
NPopulationModelWiz.page_description = Define a new population model in a project

NPopulationInitializerWiz.wizard_title = New Population Initializer
NPopulationInitializerWiz.page_title = Create a new population initializer
NPopulationInitializerWiz.page_description =  Define a new population initializer in a project

NPopulationWiz.DC_DESCRIPTION = Population Model "{0}"
NPopulationInitializerWiz.DC_DESCRIPTION = Population Initializer "{0}"

PMTP_Def = *[1/time] = Population Member/Time Period

deathRate = Background Mortality Rate (\u03bc)
deathRateTT = The rate at which population members die from causes other than the disease.
deathRateUNIT = [1/time]*

birthRate = Background Birth Rate
birthRateTT = The rate at which population members are born.
birthRateUNIT = [1/time]*

populationIdentifier = Population
populationIdentifierTT = The name of the population infected by this disease. (e.g., human)
populationIdentifierUNIT = 

timePeriod = Time Period (TP)
timePeriodTT = The time period for the rates (e.g., 86400000ms = 1 day).
timePeriodUNIT = ms

name = Model name
nameTT = Specify a name for the population model
nameUNIT = 

initialRescalingFactor = Initial rescaling factor
initialRescalingFactorTT = The inital rescaling factor of the population
initialRescalingFactorUNIT = 
 
gain = Random noise gain
gainTT = Specify the random noise gain for the population model
gainUNIT = 

modulationAmplitude = Fraction of base Birth/Death rates to modulate (0.0->1.0)
modulationAmplitudeTT = Specify the seasonal modulation amplitude
modulationAmplitudeUNIT = 

phase = Phase
phaseTT = Specify the seasonal phase (0->2pi)
phaseUNIT = 

period = Seasonal Period
periodTT = Specify the seasonal period
periodUNIT = [time] 

useLatitude = use latitude
useLatitudeTT = use latitude function?
useLatitudeUNIT = 

hasMaxAge = Use Maximum Age
hasMaxAgeTT = Use Maximum Age for Last Age Group?
hasMaxAgeUNIT = 

NDizWizErr0=Missing Population Identifier
NDizWizErr4=Missing Background Mortality Rate.
NDizWizErr5=Background mortality rate is invalid.
NDizWizErr6=Missing Background Birth Rate.
NDizWizErr7=Background birth rate is invalid.
NDizWizErr8=Missing Time Period
NDizWizErr9=Time period is invalid
NDizWizErr10=Gain is invalid
NDizWizErr11=The group fractions add up to a value greater than 1.
NDizWizErr12=Missing group id
NDizWizErr13=Invalid fraction
 
NDizWizErr15=Missing population identifier
NDizWizErr16=Missing individuals count
NDizWizErr17=Invalid individual count. Must be greater than 0

NDizWizErr18=Modulation Amplitude is Invalid
NDizWizErr19=Phase is Invalid
NDizWizErr20=Scaling factor is invalid
NDizWizErr21=Time period is invalid

NDizWizErr22=Invalid To Age value
NDizWizErr23=Invalid Mortality Factor
 
NDizWizErr24=Invalid path
NDizWizErr25=Invalid row, must be >= 1 (first row is 1)
 
NDizWizErr26 =Path must be specified

NDizWizErr27 = Invalid rescaling factor

NDizWizErr28 = Upper Bound of Population is not valid
NDizWizErr29 = Lower Bound of Population is not valid
NDizWizErr30 = Invalid number. Must be greater than or equal to 0
NDizWizErr31 = Invalid buffer size

DMPC1=Population Model Property Control
DMPC2=Missing Population Property Editor for "
DMPC3=Population Initializer Property Control
DMPC4=Missing Population Initializer Property Editor for "

DDC.0=Population Model:
DDC.1=Underlying Mathematical Population Model
DDC.2=class
DDC.3=Problem creating Population Model instance
DDC.4=Problem creating Population Initializer instance
DDC.5=Population Initializer:

# Preferences
PopulationPPageTITLE=Population Modeling
ReferencePopulation=Reference population (individuals)
ReferenceDensity=Reference population density (individuals/sq km)

#Population groups
addGroup=+
addGroupTT=Add a new population group

removeGroup=-
removeGroupTT=Remove population group

populationId = Identifier
populationIdFraction = Fraction

setFractions = Set Fractions to Equilibrium
setFractionsTT =

setDeathRates = Set Death Rates to Equilibrium
setDeathRatesTT =

#Age Groups
fromAge = From Age
toAge = To Age
deathFactor = Mortality Factor


NPopWizISOK=Location ISO Key
NPopWizPickLoc=Pick Location
NPopWizPickLocTitle=Pick Location

individuals = Individuals
individualsTT = Number of individuals
individualsUNIT= Count or Count / km^2

useDensity = Use density
useDensityTT = Use individuals per square kilometer
useDensityUNIT = 

YES = Yes
NO = No


scalingFactor = Scaling Factor
scalingFactorTT = Specify the scaling factor
scalingFactorUNIT = 

mortalityRate = Mortality Rate
mortalityRateUNIT = vector/tp
mortalityRateTT  = Mortality Rate. 1 / (Mortality Rate) is the vector life expectancy.

host = Host
hostUNIT = 
hostTT = The animal the vector draws blood from (usually human)

targetURI = Location
targetURITT = Pick a location for the initializer, leave blank to initialize everywhere
targetURIUNIT = 

dataPath = Path
dataPathTT = Pick a path containing population data file(s)
dataPathUNIT = 

row = Row 
rowTT = Row number (first row is 1)
rowUNIT = 

phaseShift = Phase shift 
phaseShiftTT = Specify the phase shift (0->2pi)
phaseShiftUNIT = 

periodSin = Period
periodSinTT = Specify the period
periodSinUNIT = TP

maxBound = Max pop 
maxBoundTT = The upper bound of population counts
maxBoundUNIT = person

minBound = Min pop 
minBoundTT = The lower bound of population counts
minBoundUNIT = person

bufferSize = Buffer Size
bufferSizeTT = Specify the buffer size (in rows).
bufferSizeUNIT = Rows

restart = Restart
restartTT = Restart from beginning at end of file
restartUNIT = 

