# 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=\u65b0\u5efa\u79cd\u7fa4\u6a21\u578b
NPopulationModelWiz.page_title=\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u79cd\u7fa4\u6a21\u578b
NPopulationModelWiz.page_description=\u5728\u4e00\u4e2a\u9879\u76ee\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u65b0\u7684\u79cd\u7fa4\u6a21\u578b

NPopulationInitializerWiz.wizard_title=\u65b0\u5efa\u79cd\u7fa4\u521d\u59cb\u5316
NPopulationInitializerWiz.page_title=\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u79cd\u7fa4\u521d\u59cb\u5316
NPopulationInitializerWiz.page_description=\u5728\u4e00\u4e2a\u9879\u76ee\u4e2d\u5b9a\u4e49\u4e00\u4e2a\u65b0\u7684\u79cd\u7fa4\u521d\u59cb\u5316

NPopulationWiz.DC_DESCRIPTION=\u79cd\u7fa4\u6a21\u578b\u201c{0}\u201d
NPopulationInitializerWiz.DC_DESCRIPTION=\u201c{0}\u201c\u79cd\u7fa4\u521d\u59cb\u5316

PMTP_Def = *PM/TP = Population Member/Time Period

deathRate=\u80cc\u666f\u6b7b\u4ea1\u7387\uff08\u03bc\uff09
deathRateTT=\u79cd\u7fa4\u6210\u5458\u56e0\u4e3a\u9664\u75be\u75c5\u4ee5\u5916\u7684\u56e0\u7d20\u6b7b\u4ea1\u7684\u901f\u7387
deathRateUNIT=PM/TP*

birthRate=\u80cc\u666f\u51fa\u751f\u7387
birthRateTT=\u51fa\u751f\u7387
birthRateUNIT=PM/TP*

populationIdentifier=\u79cd\u7fa4
populationIdentifierTT=\u7531\u672c\u75c5\u7684\u611f\u67d3\u7684\u79cd\u7fa4\u7684\u540d\u79f0\u3002 \uff08\u4f8b\u5982\uff0c\u4eba\uff09
populationIdentifierUNIT=

timePeriod=\u65f6\u95f4\u6bb5\uff08TP\uff09
timePeriodTT = The time period for the rates (e.g., 86400000ms = 1 day).
timePeriodUNIT=\u6beb\u79d2

name=\u6a21\u578b\u540d\u79f0
nameTT=\u6307\u5b9a\u4e00\u4e2a\u79cd\u7fa4\u6a21\u578b\u7684\u540d\u79f0
nameUNIT=

gain=\u968f\u673a\u566a\u58f0\u589e\u76ca
gainTT=\u4e3a\u79cd\u7fa4\u6a21\u578b\u6307\u5b9a\u968f\u673a\u566a\u58f0\u589e\u76ca
gainUNIT=

modulationAmplitude=\u57fa\u672c\u51fa\u751f/\u6b7b\u4ea1\u7387\u6bd4\u4f8b\u7684\u8c03\u5236\uff080.0 -> 1.0\uff09
modulationAmplitudeTT=\u6307\u5b9a\u5b63\u8282\u6027\u8c03\u5236\u5e45\u5ea6
modulationAmplitudeUNIT=

phase=\u76f8
phaseTT=\u6307\u5b9a\u5b63\u8282\u6027\u9636\u6bb5\uff080 - > 2PI\uff09
phaseUNIT=

period=\u5b63\u8282\u6027\u65f6\u6bb5
periodTT=\u6307\u5b9a\u5b63\u8282\u6027\u671f
periodUNIT=[\u65f6\u95f4]

useLatitude=\u4f7f\u7528\u7eac\u5ea6
useLatitudeTT=\u4f7f\u7528\u7eac\u5ea6\u529f\u80fd\uff1f
useLatitudeUNIT=

hasMaxAge=\u7528\u6700\u5927\u7684\u5e74\u9f84
hasMaxAgeTT=\u7528\u6700\u540e\u4e00\u4e2a\u5e74\u9f84\u7ec4\u91cc\u7684\u6700\u5927\u5e74\u9f84
hasMaxAgeUNIT=

NDizWizErr0=\u7f3a\u5c11\u79cd\u7fa4\u6807\u8bc6\u7b26
NDizWizErr4=\u7f3a\u5c11\u80cc\u666f\u6b7b\u4ea1\u7387\u3002
NDizWizErr5=\u80cc\u666f\u6b7b\u4ea1\u7387\u662f\u65e0\u6548\u7684\u3002
NDizWizErr6=\u7f3a\u5c11\u80cc\u666f\u51fa\u751f\u7387\u3002
NDizWizErr7=\u80cc\u666f\u51fa\u751f\u7387\u662f\u65e0\u6548\u7684\u3002
NDizWizErr8=\u7f3a\u5c11\u65f6\u95f4\u6bb5
NDizWizErr9=\u65f6\u95f4\u6bb5\u662f\u65e0\u6548\u7684
NDizWizErr10=\u589e\u76ca\u662f\u65e0\u6548\u7684
NDizWizErr11=\u8be5\u7ec4\u5206\u6570\u52a0\u8d77\u6765\u503c\u5927\u4e8e1\u3002
NDizWizErr12=\u7f3a\u5c11\u7ec4\u6807\u53f7
NDizWizErr13=\u65e0\u6548\u7684\u5206\u6570
 
NDizWizErr15=\u5931\u8e2a\u79cd\u7fa4\u6807\u8bc6\u7b26
NDizWizErr16=\u5931\u8e2a\u4eba\u5458\u6570
NDizWizErr17=\u65e0\u6548\u7684\u4e2a\u4f53\u6570\u91cf\u3002\u5fc5\u987b\u5927\u4e8e0

NDizWizErr18=\u8c03\u5236\u5e45\u5ea6\u662f\u65e0\u6548\u7684
NDizWizErr19=\u76f8\u65e0\u6548
NDizWizErr20=\u7f29\u653e\u56e0\u5b50\u662f\u65e0\u6548\u7684
NDizWizErr21=\u65f6\u95f4\u6bb5\u662f\u65e0\u6548\u7684

NDizWizErr22=\u5bf9\u4e8e\u5e74\u9f84\u503c\u65e0\u6548
NDizWizErr23=\u65e0\u6548\u6b7b\u4ea1\u56e0\u5b50
 
DMPC1=\u79cd\u7fa4\u6a21\u578b\u7684\u5c5e\u6027\u63a7\u5236
DMPC2=\u7f3a\u5c11\u79cd\u7fa4\u5c5e\u6027\u7f16\u8f91\u5668
DMPC3=\u79cd\u7fa4\u521d\u59cb\u5316\u5c5e\u6027\u63a7\u5236
DMPC4=\u7f3a\u5c11\u79cd\u7fa4\u521d\u59cb\u5316\u5c5e\u6027\u7f16\u8f91\u5668

DDC.0=\u79cd\u7fa4\u6a21\u578b
DDC.1=\u57fa\u672c\u7684\u6570\u5b66\u79cd\u7fa4\u6a21\u578b
DDC.2=\u7c7b
DDC.3=\u521b\u5efa\u79cd\u7fa4\u6a21\u578b\u7684\u5b9e\u4f8b\u7684\u95ee\u9898
DDC.4=\u521b\u5efa\u79cd\u7fa4\u521d\u59cb\u5316\u5b9e\u4f8b\u7684\u95ee\u9898
DDC.5=\u79cd\u7fa4\u521d\u59cb\u5316

# Preferences
PopulationPPageTITLE=\u79cd\u7fa4\u6a21\u578b
ReferencePopulation=\u53c2\u8003\u79cd\u7fa4\uff08\u4e2a\u4eba\uff09
ReferenceDensity=\u53c2\u8003\u79cd\u7fa4\u5bc6\u5ea6\uff08\u4e2a\u4eba/\u5e73\u65b9\u516c\u91cc\uff09

#Population groups
addGroup=+
addGroupTT=\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684\u79cd\u7fa4\u7fa4\u4f53

removeGroup=- 
removeGroupTT=\u5220\u9664\u7fa4\u4f53

populationId=\u6807\u8bc6\u7b26
populationIdFraction=\u5206\u6570

setFractions=Set Fractions to Equilibrium
setFractionsTT=

setDeathRates=Set Death Rates to Equilibrium
setDeathRatesTT=

#Age Groups
fromAge=\u4ece\u5e74\u9f84
toAge=\u5e74\u9f84
deathFactor=\u6b7b\u4ea1\u56e0\u5b50

NPopWizISOK=\u5730\u70b9\u7684ISO\u6807\u53f7
NPopWizPickLoc=\u9009\u62e9\u5730\u70b9
NPopWizPickLocTitle=\u9009\u62e9\u5730\u70b9

individuals=\u4e2a\u4eba
individualsTT=\u4eba\u6570
individualsUNIT=\u8ba1\u6570\u6216\u8ba1\u6570/\u5e73\u65b9\u516c\u91cc

useDensity=\u4f7f\u7528\u5bc6\u5ea6
useDensityTT=\u4f7f\u7528\u6bcf\u5e73\u65b9\u516c\u91cc\u7684\u4eba\u6570
useDensityUNIT=

YES=\u662f\u7684
NO=\u65e0


scalingFactor=\u7f29\u653e\u56e0\u5b50
scalingFactorTT=\u6307\u5b9a\u6bd4\u4f8b\u56e0\u5b50
scalingFactorUNIT=

mortalityRate=\u6b7b\u4ea1\u7387
mortalityRateUNIT=\u4f20\u64ad\u5a92\u4ecb/\u65f6\u95f4\u6bb5
mortalityRateTT=\u6b7b\u4ea1\u7387\u3002 1 /\uff08\u6b7b\u4ea1\u7387\uff09\u4e3a\u8f7d\u4f53\u7684\u5bff\u547d\u3002

host=\u5bc4\u4e3b
hostUNIT=
hostTT=\u4f20\u67d3\u5a92\u4ecb\u4ece\u52a8\u7269\u51fa\u5438\u8840\uff08\u901a\u5e38\u4ece\u4eba\u7c7b\u5904\uff09
