# Install Update Core Properties File
#

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.
Feature.NoURL= Unknown URL
Feature.FeatureVersionToString= Feature: {0} Version: {1}
Feature.InstallationCancelled= Installation has been cancelled by the User.

FeatureContentProvider.Downloading= Downloading:

InstallHandler.unableToCreateHandler = Unable to create custom install handler for feature \"{0}\".
InstallHandler.notFound = Custom install handler required by feature \"{0}\" was not found.
InstallHandler.invalidHandler = Feature \"{0}\" contains invalid custom install handler.
InstallHandler.callException = Error reported by custom install handler for feature \"{0}\".
InstallHandler.deactivated = Custom install handler for feature \"{0}\" deactivated due to errors.
InstallHandler.error = Unable to complete action for feature \"{0}\" due to errors.

InstallMonitor.DownloadSize = ({0}K bytes)
InstallMonitor.DownloadSizeLong = ({0}K of {1}K bytes)

Reconciler.appNotFound = Application \"{0}\" not found.

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= Internal Error. Content Provider not set for Site: {0}.

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

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}
SiteFile.Removing= Removing: 

SiteFileFactory.UnableToCreateURL= Internal Error. Unable to create URL from {0}.
SiteFileFactory.UnableToAccessSite= Unable to access Site stream.

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}.
DefaultFeatureParser.NoLicenseText= Error parsing feature stream. State: \"license\" must include some text.


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.ErrorParsingSite= Error Parsing site stream.
DefaultSiteParser.UnknownState= Unknown State {0}.
DefaultSiteParser.InvalidXMLStream= The XML stream is not a valid default site.xml file. The root tag is not site.

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

SiteModelObject.ErrorParsingSiteStream= Error parsing site stream.
SiteModelObject.ErrorAccessingSiteStream= Error accessing site stream.

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 occurred. {0}.

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

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}.
FeatureExecutableContentProvider.UnableToRetrievePluginEntry =Error retrieving the plugin entry: {0}. 

ConfiguredSite.NonInstallableSite= You cannot install in the site {0}. It is considered non updateable.
ConfiguredSite.NullFeatureToInstall= Internal Error. The Feature to be installed is null.
ConfiguredSite.NonUninstallableSite= You cannot uninstall from the site {0}. It is considered non updateable.
ConfiguredSite.NoSite= No Site
ConfiguredSite.CannotFindFeatureToUnconfigure= Internal Error. Unable to un-configure 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}
ConfiguredSite.UnableToRemoveConfiguredFeature= Unable to remove a configured feature: {0} You must un-configure the feature first.
ConfiguredSite.UnableToFindFeature= Unable to Find the feature {0} on this site.

FeatureFactory.ParsingError= Error parsing \"feature.xml\" stream in the feature archive {0}.
FeatureModelFactory.ErrorAccesingFeatureStream= Error accessing feature stream.

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}. Unable to 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.UnableToEncodeConfiguration= Unable to encode 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}.
InstallConfiguration.DeletedConfiguration= * Deleted Configuration *

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}.
InternalSiteManager.FailedRetryAccessingSite= Failed retry accessing site using default installed format instead of default packaged format.

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 {0}.

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 file system.

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.UnableToEncodeConfiguration= Unable to encode configurations into {0}.
SiteLocal.UnableToResolve= Internal Error. Unable to resolve {0}.
SiteLocal.UnableToRetrieveRWArea= Internal Error. Unable to retrieve location to write metadata.
SiteLocal.SiteUrlIsNull= Internal Error: URL of local site is null.

SiteURLFactory.UnableToCreateURL= Internal Error. Unable to create a URL from {0}.
SiteURLFactory.UnableToAccessSiteStream= Unable to access Site stream.

JarVerifier.Verify= Verifying : {0}
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.
JarVerifier.UnableToAccessJar= Unable to access JAR file {0}.
JarVerifier.InvalidFile= The File {0} is not a valid JAR file. It does not contain a Manifest

JarVerificationResult.RootCA= According to: 
JarVerificationResult.CAIssuer= Certificate Issuer: {0}.
JarVerificationResult.ValidBetween= Valid between {0} and {1}.
JarVerificationResult.SubjectCA= File signed by:
JarVerificationResult.ExpiredCertificate= * EXPIRED CERTIFICATE *
JarVerificationResult.CertificateNotYetValid= * CERTIFICATE NOT YET VALID *
JarVerificationResult.CertificateValid= Valid certificate.

JarVerificationService.UnsucessfulVerification=Verification of feature unsuccessful. Installation cancelled.
JarVerificationService.CancelInstall=Installation cancelled.


