#
#
#

BaseSiteFactory.CannotRetriveParentDirectory=												Unable to retrieve parent directory for URL {0}.
BaseSiteFactory.CannotEncodeURL=																Unable to encode URL {0}.

ContentReference.UnableToCreateInputStream=												Unable to create an input stream for the reference {0}.
ContentReference.UnableToReturnReferenceAsFile=										Unable to return reference {0} as File.
ContentReference.UnableToReturnReferenceAsURL=										Unable to return reference {0} as URL.

Feature.SiteAlreadySet=																						Internal Error: Site already set for the feature {0}.
Feature.TaskInstallFeatureFiles=																		Installing feature files: 
Feature.TaskInstallPluginFiles=																		Installing plug-in [
Feature.TaskInstallNonPluginsFiles=																Installing non-plug-in files: 
Feature.NoContentProvider= 																				The Feature {0} does not have a Content Provider. Internal Error.
Feature.NoFeatureContentConsumer=																The Feature {0} does not have a Content Consumer. Internal Error.
FeatureContentProvider.Downloading=																Downloading 
Feature.NoURL=																									Unknown URL
Feature.FeatureVersionToString=																		Feature: {0} Version: {1}

InstallMonitor.Kilo=																							K
InstallMonitor.bytes=																					 		bytes)
InstallMonitor.of=																								of 
InstallMonitor.KiloBytes=																					K bytes)

JarContentReference.Unpacking=																		Unpacking 

Site.CannotSaveSiteInto=																					Cannot save Site information into the File: {0}.
Site.CannotFindCategory=																					Unable to find category: {0} in Site: {1}.
Site.NoCategories=																							The Site does not contain any categories.
Site.NoContentProvider=																					Content Provider not set for Site: {0}. Internal Error.

VersionedIdentifier.IdOrVersionNull=																	Unable to create an Identifier. The unique identifier or the version is null or empty: unique identifier={0} version={1}. Internal Error.

SiteFile.CannotRemovePlugin=																			Unable to remove plugin: {0} from Site: {1}.
SiteFile.CannotRemoveFeature=																		Unable to remove feature: {0} from Site: {1}.
SiteFile.UnableToCreateURL=																			Unable to create URL for location {0}

DefaultFeatureParser.NoFeatureTag=																Error parsing feature stream. Unable to find root element 'feature' in the stream.
DefaultFeatureParser.WrongParsingStack=														Internal Error parsing feature stream. Unexpected Parsing Stack: {0}
DefaultFeatureParser.UnknownElement=															Error parsing feature stream. Unknown element '{0}' in parsing state '{1}'. Check the validity of the XML file.
DefaultFeatureParser.TooManyURLtag=															Error parsing feature stream. There is more than one 'URL' element in the XML stream. There should be only one.
DefaultFeatureParser.UnknownStartState=														Internal Error parsing feature stream. Unknown start state '{0}'.
DefaultFeatureParser.IdOrVersionInvalid=														Error parsing feature stream. The unique identifier or the version is null or empty for the State: '{2}' : unique identifier={0} version={1}.
DefaultFeatureParser.MissingId=																		Error parsing feature stream. The 'id' tag of the element '{0}' is null or empty. Value is required.
DefaultFeatureParser.ParsingStackBackToInitialState= 									Internal Error parsing feature stream.  Parsing stack back to Initial State.
DefaultFeatureParser.ElementAlreadySet= 														Error parsing feature stream. Element: '{0}' already set for the Feature.
DefaultFeatureParser.StateIncludeWrongElement= 											Error parsing feature stream. State: '{0}' should not include Element '{1}'.
DefaultFeatureParser.RequireStateWithoutImportElement=								Error parsing feature stream. State: 'require' must include at least an 'import' element.
DefaultFeatureParser.UnknownEndState=															Internal Error parsing feature stream. Unknown end state '{0}'.
DefaultFeatureParser.ErrorParsing=																	Error Parsing feature stream. Error: {0}
DefaultFeatureParser.ErrorlineColumnMessage=												Error Parsing feature stream. Element {0} line: {1} column:{2}. Error: {3}.
DefaultFeatureParser.ErrorParsingFeature=														Error Parsing feature stream.
DefaultFeatureParser.UnknownState=																Unknown State {0}.

SiteContentprovider.ErrorCreatingURLForArchiveID=										Internal Error . Unable to create URL for Archive Identifier {0} on Site {1}.

DefaultSiteParser.NoSiteTag=																			Error parsing site stream. Unable to find root element 'site' in the stream.
DefaultSiteParser.WrongParsingStack=															Internal Error parsing site stream. Unexpected Parsing Stack: {0}
DefaultSiteParser.UnknownElement=																Error parsing site stream. Unknown element '{0}' in parsing state '{1}'. Check the validity of the XML file.
DefaultSiteParser.UnknownStartState=																Internal Error parsing site stream. Unknown start state '{0}'.
DefaultSiteParser.Missing=																				Error parsing site stream. The '{0}' tag of the element '{1}' is null or empty. Value is required.
DefaultSiteParser.ParsingStackBackToInitialState=											Internal Error parsing site stream.  Parsing stack back to Initial State.
DefaultSiteParser.ElementAlreadySet=																Error parsing site stream. Element: '{0}' already set for the Site.
DefaultSiteParser.CategoryAlreadySet=															Error parsing site stream. Element: '{0}':{1} already set for the Site.
DefaultSiteParser.UnknownEndState=																Internal Error parsing site stream. Unknown end state '{0}'.
DefaultSiteParser.ErrorParsing=																		Error Parsing site stream. Error: {0}
DefaultSiteParser.ErrorlineColumnMessage=													Error Parsing site stream. Element {0} line: {1} column:{2}. Error: {3}.
DefaultSiteParser.ErrorParsingFeature=															Error Parsing site stream.
DefaultSiteParser.UnknownState=																		Unknown State {0}.

ModelObject.ModelReadOnly=																			Internal Error. The Model Object is read-only.

InstallConfiguration.ParsingErrorDuringCreation=											Internal Error parsing {0}: {1}.
InstallConfiguration.ErrorDuringFileAccess=														Error accessing file: {0}.

Parser.UnableToCreateURL=																				Internal Error Parsing stream. Check the validity of the URLs.
Parser.InternalError=																							Error Parsing Stream. An internal error occured. {0}.

InstallConfigurationParser.FeatureReferenceNoURL=										Error Parsing Stream. A Feature Reference Element does not have a URL tag. Value is required.

ConfigurationPolicy.RequiredPlugins=																Some plug-ins of the feature you want to unconfigure are required by the following running plug-ins:
ConfigurationPolicy.DoYouWantToUnconfigure=												Are you certain to want to unconfigure this feature ?

FeatureExecutableContentProvider.FileDoesNotExist=									The file {0} does not exist.
FeatureExecutableContentProvider.InvalidDirectory=										The path {0} is not a valid directory.
FeatureExecutableContentProvider.UnableToCreateURLFor=							Unable to create a URL for {0}.
FeatureExecutableContentProvider.UnableToRetrieveArchive=						Error retrieving the plugin entry: {0}.
FeatureExecutableContentProvider.UnableToRetrieveNonPluginEntry=			Error retrieving the non plugin entry: {0}. 
FeatureExecutableContentProvider.UnableToRetrieveFeatureEntry=				Error retrieving feature entry content reference: {0}.

ConfiguredSite.NonInstallableSite=																	You cannot install in the site {0}. It is considered non updatable.
ConfiguredSite.NullFeatureToInstall=																Internal Error. The Feature to be installed is null.
ConfiguredSite.NonUninstallableSite=																You cannot uninstall from the site {0}. It is considered non updatable.
ConfiguredSite.NoSite=																						No Site
ConfiguredSite.CannotFindFeatureToUnconfigure=											Internal Error. Unable to unconfigure feature {0} on site {1}. Cannot find feature.
ConfiguredSite.CannotFindFeatureToConfigure=												Internal Error. Unable to configure feature {0}. Cannot find feature.
ConfiguredSite.CannotFindPluginEntry=															Internal Error. Unable to retrieve Plugin Entry {0} on site {1}. Cannot find plugin entry.
ConfiguredSite.MissingPluginsBrokenFeature=												The feature {0} is broken for the site {1}. The feature requires the folloing plugins that are missing from the site: {3}

FeatureFactory.ParsingError=																			Error parsing 'feature.xml' stream in the feature archive {0}.
FeatureExecutableFactory.NullURL=																	Error creating Feature. The URL used to create the feature is null.
FeatureExecutableFactory.CannotCreateURL=													Error creating Feature. Unable to create URL for {0}.

FeaturePackagedContentProvider.NoManifestFile=											Unable to retrieve {0} in feature {1} at location {2}. {0} does not exist.
FeaturePackagedContentProvider.ErrorRetrieving=											Error retrieving {0} in  Archive Reference {1} at location {2}. cannot access {0}.
FeaturePackagedContentProvider.NoFeature=													No Feature
FeaturePackagedContentProvider.FileDoesNotExist=										The File '{0}' does not exist.
FeaturePackagedContentProvider.InvalidDirectory=											The directory '{0}' is not a valid directory.
FeaturePackagedContentProvider.NoReference=												No Reference

FeatureReference.UnableToResolveURL=														Internal Error: Unable to resolve model using URL: {0}.

FeatureTypeFactory.UnableToFindFeatureFactory=											Unable to find a feature factory for the extension id {0}.  

InstallConfiguration.UnableToSaveConfiguration=											Unable to save configuration in {0}.
InstallConfiguration.UnableToCreateURL=														Unable to create URL from {0}.
InstallConfiguration.UnableToCast=																	Internal Error. The Configuration Site object is not a subclass of ConfiguredSiteModel
InstallConfiguration.UnableToFindConfiguredSite=											Unable to find site {0} in platform configuration {1}.
InstallConfiguration.UnableToSavePlatformConfiguration=								Unable to save platform configuration in {0}.

InternalSiteManager.UnableToCreateSiteWithType=										Extension Error. The Site Factory of type {0} cannot access the Site(1}.
InternalSiteManager.UnableToAccessURL=														Unable to access {0}. {1}
InternalSiteManager.UnableToCreateURL=														Unable to create URL from {0}.
InternalSiteManager.UnableToParseURL=														Unable to parse the stream {0}.

Policy.NoMessageAvailable=																			No message available.
Policy.MissingMessage=																					Missing message: {0}.
Policy.Missing=																									missing {0}

GlobalConsumer.ErrorCreatingFile=																	Unable to create file {0}.

SiteFileContentConsumer.UnableToCreateURL=												Unable to create URL from {0}.
SiteFileContentConsumer.UnableToCreateURLForFile=									Unable to create URL for the File:

SiteFileFactory.UnableToRetriveSite=																Unable retrieve this Site from a directory. The URL should point to a file instead.
SiteFileFactory.UnableToObtainParentDirectory=												Unable obtain the parent directory from the file {0}.
SiteFileFactory.FileDoesNotExist=																	Unable to access site {0}. the directory does not exist.
SiteFileFactory.UnableToCreateURLForFile=													Unable to create URL from {0}.
SiteFileFactory.ErrorParsingFile=																		Unable to parse file {0}.
SiteFileFactory.ErrorAccessing=																		Unable to access file {0}.

SiteTypeFactory.UnableToFindSiteFactory=														Unable to find a site factory for the extension id {0}.  

UpdateManagerUtils.UnableToRemoveFile=													Unable to remove {0} from the filesystem.

SiteLocal.ErrorParsingSavedState=																	Error during parsing of the configuration saved state {0}.
SiteLocal.UnableToCreateURLFor=																	Unable to create URL from {0}.
SiteLocal.UnableToAccessFile=																			Unable to access file [0}.
SiteLocal.UnableToSaveStateIn=																		Unable to persist configurations into {0}.
SiteLocal.UnableToResolve=																				Internal Error.Unable to resolve {0}.

JarVerifier.Verify=																								Verifying :
JarVerifier.UnableToFindEncryption=																Unable to find algorithm to verify integrity of keystore {0}.
JarVerifier.UnableToLoadCertificate=																Unable to load one or multiples certificates in the keystore {0}.
JarVerifier.UnableToFindProviderForKeystore=												Unable to find provider for the keystore type {0}.
JarVerifier.KeyStoreNotLoaded=																		Internal Error. KeyStore not Initialized / Loaded.

JarVerificationDialog.Verification=																		Verification
JarVerificationDialog.AboutToInstall=																You are about to install an unsigned feature
JarVerificationDialog.NotDigitallySigned=															This feature has not been digitally signed
JarVerificationDialog.CannotVerifyProvider=														The provider of this feature cannot be verified
JarVerificationDialog.MayCorrupt=																	Installing this feature may corrupt your installation.
JarVerificationDialog.CorruptedContent=															The content of this feature has been corrupted
JarVerificationDialog.ComponentNotInstalled=													This feature will not be installed.
JarVerificationDialog.SignedComponent=															You are about to install a signed feature
JarVerificationDialog.UnknownCertificate=														The certificates used to authenticate this feature are not recognized
JarVerificationDialog.UnableToVerifyProvider=													The provider of this feature cannot be verified
JarVerificationDialog.FileName=																		Local File name:
JarVerificationDialog.FeatureName=																	Feature name:
JarVerificationDialog.FeatureIdentifier=																Feature Identifier:
JarVerificationDialog.Provider=																			Provider:
JarVerificationDialog.MayChooseToInstall=														You may choose to install the feature or cancel its installation
JarVerificationDialog.InstallCertificate=																Always trust this certificate 
JarVerificationDialog.Install=																				Install Feature
JarVerificationDialog.Cancel=																			Cancel Feature Instalation
JarVerificationDialog.KnownCertificate=															One of the certificates used to authenticate this feature was recognized
JarVerificationDialog.ProviderKnown=																The provider of this feature has been validated by a third party trusted certificate.
JarVerificationDialog.Caution=																			Only install if you trust both the signer and the third party certificates.
JarVerificationDialog.RootCA=																			Third Party Trusted Certificate
JarVerificationDialog.CAIssuer=																			Certificate Issuer : {0}.
JarVerificationDialog.ValidBetween=																	Valid between {0} and {1}.
JarVerificationDialog.SubjectCA=																		Certificate used to sign the feature.
JarVerificationDialog.DoYouTrustCertificate=													Do you want to always trust this certificate when installing this feature ?
JarVerificationDialog.ExpiredCertificate=															* EXPIRED CERTIFICATE *
JarVerificationDialog.CertificateNotYetValid=													* CERTIFICATE NOT YET VALID *
JarVerificationDialog.CertificateValid=																Valid certificate.

JarVerificationService.ErrorVerification=															Error occurred during verification.
JarVerificationService.VerificationCanceled=													Verification cancelled.
JarVerificationService.UnsucessfulVerification=												Verification of feature unsucessful. Installation cancelled.
JarVerificationService.ErrorDuringVerification=													Error during verification. Installation cancelled.
JarVerificationService.CancelInstall=																Installation cancelled.

