{
	"messages": [
		"{0} are not defined",
		"{0} is not defined",
		"Starting server '{0}' at '{1}' (at '{2}').",
		"Stopped server  '{0}' at '{1}'.",
		"url should start with '{0}'",
		"url has no pipe name after '{0}'",
		"There is no pipe name after '{0}'",
		"Error parsing JSON from file {0}: {1}",
		"Could not find {0} in {1} and in any of its parent directories",
		"Loading '{0}'",
		"{0} in {1} does not have a value for {2} property",
		"Failed to get user specific salt string.",
		"The LocalAppData environment variable does not exist and is needed to initialize ServiceHub.",
		"Only one file is expected. Actually more were found in '{0}': {1}",
		"Starting hub host '{0}'. Host callback pipe: '{1}'",
		"startService() request for service '{0}' rejected because it was received after shutdown",
		"Node host received start request for service '{0}'",
		"Successfully started service '{0}'. PID: '{1}'. Service Endpoint: '{2}'",
		"Ignoring duplicate exit command.",
		"Hub host recieved exit command.",
		"Error closing hub stream: {0}",
		"Service '{0}' has started after host shutdown initiated. The service will shut down.",
		"Error notifying hub controller that host services started: {0}",
		"Error notifying hub controller that host services ended: {0}",
		"Service name is not specified",
		"Locating service '{0}' requested by {1}",
		"Located service '{0}' at '{1}' requested by {2}",
		"Error starting service '{0}' requested by {1}: {2}",
		"Forced hub controller shutdown.",
		"Discovery service '{0}' error locating service '{1}': {2} at {3}",
		"Error disconnecting from '{0}' discovery service: {1} {2}",
		"Cannot find host type '{0}' in '{1}', or in '{2}'",
		"Cannot find host type '{0}' in '{1}'",
		"Loading host info for '{0}' from '{1}'",
		"Cannot resolve and load host info for '{0}' from '{1}': {2}",
		"Host info in '{0}' is not defined",
		"Host info at '{0}' does not have hostExecutable:string and hostArgs:string[] members",
		"Host info at '{0}' contains reserved 'filePath' property",
		"Service '{0}' has not been loaded before. Loading now.",
		"Launching '{0}' hub host with command line: '{1}'",
		"Launched '{0}' hub host. PID: {1}",
		"Hub host '{0}', PID: {1} exited.",
		" code: '{0}'{1}.",
		" signal: '{0}'.",
		"Error starting hub host {0}'{1}': '{2}'.",
		"Failed to find a HostInfo object for '{0}' when some host connected",
		"Could not get host id of a newly created host: {0}",
		"More than one host is pending when one of the hosts failed to provide host id",
		"Unknown host '{0}'",
		"Stopping host '{0}' PID: {1} due to {2}",
		"Cannot stop location service from a proxy",
		"Error decoding string: {0}",
		"Log configuration: {0}",
		"at",
		"Length must not be negative",
		"Service Hub config has no services folder specified",
		"Cannot find service module info file '{0}' in '{1}'",
		"Cannot find service module info file '{0}' in '{1}', using discovery services failed: {2}",
		"Loading service module info '{0}' for service '{1}'",
		"Service module info '{0}' for service '{1}' contains reserved '{2}' property",
		"Service module info '{0}' for service '{1}' contains space in the host id '{2}'",
		"Cannot resolve and load service module info for '{0}' from '{1}': {2}",
		"Node host starting service '{0}'",
		"{0} must be a function in '{1}'. Actually it is {2}.",
		"Failed to find a service entry point file name for '{0}'. Check your service module authoring to ensure it includes a service entryPoint.scriptPath property.",
		"Failed to find a service entry point constructor function for '{0}'. Check your service module authoring to ensure it includes a service entryPoint.constructorFunction property.",
		"Error loading service module '{0}': {1}",
		"A client connected to {0}",
		"Error disposing {0}instance of '{1}' service: {2}",
		"Error creating service module instance for '{0}', closing the stream to the client: '{1}'.",
		"Failed to delete file '{0}'. Error code={1}, Error message={2}",
		"Failed to get statistics for file '{0}'. Error code={1}, Error message={2}",
		"Failed to enumerate files in directory '{0}'. Error code={1}, Error message={2}",
		"ServiceHub config file path '{0}' is not an absolute path",
		"ServiceHub config file name in '{0}' is not equal to'servicehub.config.json'",
		"ServiceHub config file '{0}' does not exist",
		"Service '{0}' does not support host groups and cannot run in host group '{1}'. Set '{2}' property to 'true' in the service config file to enable host groups for the service.",
		"Object is disposed",
		"Could not kill the host process: {0}"
	],
	"keys": [
		{
			"key": "Variables.are.Not.Defined",
			"comment": [
				"Error message for variables not defined."
			]
		},
		{
			"key": "Variable.Is.Not.Defined",
			"comment": [
				"Error message for a variable not defined."
			]
		},
		{
			"key": "Starting.Server",
			"comment": [
				"Logging message for starting a server.",
				"{0}: server name.",
				"{1}: server url. E.g. http://foo.",
				"{2}: server local path. E.g. c:\\foo\\bar."
			]
		},
		{
			"key": "Stopped.Server",
			"comment": [
				"Logging message for stopped a server.",
				"{0}: server name.",
				"{1}: server url. E.g. http://foo."
			]
		},
		{
			"key": "Url.Should.Start.With",
			"comment": [
				"Error message for url invalid in prefix.",
				"\\'url\\' here is a argument, don\\'t translate it.",
				"{0}: scheme of a valid url."
			]
		},
		{
			"key": "Url.Has.No.Pipe.Name",
			"comment": [
				"Error message for url invalid (not containing a pipe name).",
				"\\'url\\' here is a argument, don\\'t translate it.",
				"{0}: scheme of a valid url."
			]
		},
		{
			"key": "No.Pipe.Name",
			"comment": [
				"Error message for a string not containing a pipe name.",
				"{0}: scheme of a valid pipe."
			]
		},
		{
			"key": "Error.Parsing.Json",
			"comment": [
				"Error message for parsing JSON from file failed.",
				"JSON is a file format, don\\'t translate it.",
				"{0}: file path.",
				"{1}: error message."
			]
		},
		{
			"key": "Service.Hub.Config.Json.Not.Found",
			"comment": [
				"Error message for not finding servicehub.config.json.",
				"Don\\'t translate servicehub.config.json.",
				"{0}: config file name.",
				"{1}: directories."
			]
		},
		{
			"key": "Loading",
			"comment": [
				"Logging message for loading a config file from specific path.",
				"{0}: path of config file."
			]
		},
		{
			"key": "No.Value.For.Property",
			"comment": [
				"Error message for a specific property doesn\\'t have a value in a config file.",
				"{0}: config file name",
				"{1}: path of config file.",
				"{2}: property name that has error."
			]
		},
		{
			"key": "Failed.Get.Salt.String",
			"comment": [
				"Error message for getting a user specific salt string failed."
			]
		},
		{
			"key": "No.LocalAppData.Folder",
			"comment": [
				"Error message for the LocalAppData environment variable not being set."
			]
		},
		{
			"key": "Multiple.File.Found",
			"comment": [
				"Error message for more than one files found when only one expected.",
				"{0}: Directory where files are found.",
				"{1}: foud files."
			]
		},
		{
			"key": "Starting.Hub.Host",
			"comment": [
				"Logging message for starting a hub host.",
				"{0}: hub host ID that is starting.",
				"{1}: pipe name that host uses for communication."
			]
		},
		{
			"key": "Start.Service.Request.Rejected",
			"comment": [
				"Logging message for request of starting a service been rejected.",
				"{0}: service name."
			]
		},
		{
			"key": "Start.Service.Request.Received",
			"comment": [
				"Logging message for request of starting a service been received.",
				"{0}: service name."
			]
		},
		{
			"key": "Service.Started",
			"comment": [
				"Logging message for starting a service succeeded.",
				"{0}: service name.",
				"{1}: service process Id.",
				"{2}: service end point."
			]
		},
		"Ignoring.Duplicate.Exit",
		"Exit.Command.Received",
		{
			"key": "Close.Hub.Stream.Failed",
			"comment": [
				"Logging message for closing a hub stream failed with error.",
				"{0}: error message."
			]
		},
		{
			"key": "Service.Started.After.Host.Shut.Down",
			"comment": [
				"{0}: service name."
			]
		},
		{
			"key": "Notify.Hub.Controller.For.Services.Started.Failed",
			"comment": [
				"Logging message for notifying hub controller that hub services started failed with error.",
				"{0}: error message."
			]
		},
		{
			"key": "Notify.Hub.Controller.For.Services.Ended.Failed",
			"comment": [
				"Logging message for notifying hub controller that hub services ended failed with error.",
				"{0}: error message."
			]
		},
		"Service.Name.Not.Specified",
		{
			"key": "Locating.Service",
			"comment": [
				"Logging message for locating a service.",
				"{0}: service name.",
				"{1}: client Id who is requesting the locating action."
			]
		},
		{
			"key": "Service.Located",
			"comment": [
				"Logging message for service locating completed.",
				"{0}: service Id.",
				"{1}: service location.",
				"{2}: client Id who is requesting the locating action."
			]
		},
		{
			"key": "Starting.Service.Failed",
			"comment": [
				"Logging message for service starting request failed.",
				"{0}: service Id.",
				"{1}: client Id who is requesting the service.",
				"{2}: error message."
			]
		},
		"Force.Controller.Shut.Down",
		{
			"key": "locating.Servcie.Error",
			"comment": [
				"Logging message for error when discovery service is locating a service.",
				"{0}: discovery service who is locating services.",
				"{1}: the service that discovery service is locating.",
				"{2}: error message.",
				"{3}: error call stack"
			]
		},
		{
			"key": "Disconnecting.Discovery.Service.Failed",
			"comment": [
				"Logging message for error when disconnecting from discovery service.",
				"{0}: discovery service who is locating services.",
				"{1}: error message.",
				"{2}: error call stack"
			]
		},
		{
			"key": "Host.Type.Not.Found.In.Location",
			"comment": [
				"Logging message for can\\'t find specific host type in locations provided.",
				"{0}: host type.",
				"{1}: location to find host type.",
				"{2}: additional location to find host type."
			]
		},
		{
			"key": "Host.Type.Not.Found",
			"comment": [
				"Logging message for can\\'t find specific host type in locations provided.",
				"{0}: host type.",
				"{1}: location to find host type."
			]
		},
		{
			"key": "Loading.Host.Info",
			"comment": [
				"{0}: host name.",
				"{1}: path to load host from."
			]
		},
		{
			"key": "Cannot.Resolve.Host",
			"comment": [
				"Logging message for can\\'t resolve and load host info.",
				"{0}: host name.",
				"{1}: path to load host from.",
				"{2}: error message."
			]
		},
		{
			"key": "Host.Info.Not.Defined",
			"comment": [
				"Error message for parameter a variable not defined.",
				"{0}: path where host is supposed to be found."
			]
		},
		{
			"key": "Host.Info.Invalid",
			"comment": [
				"Error message for host info is invalid.",
				"{0}: path of host file."
			]
		},
		{
			"key": "Host.Info.Contains.Reserved.Property",
			"comment": [
				"Error message for host info contains a reserved property.",
				"{0}: path of host file."
			]
		},
		{
			"key": "First.Time.Loading.Service",
			"comment": [
				"Logging message for loading service for the first time.",
				"{0}: service name."
			]
		},
		{
			"key": "Launching.Host.With.Cmd",
			"comment": [
				"Logging message for launching host with command line.",
				"{0}: host name.",
				"{1}: command that is used to launch hub host."
			]
		},
		{
			"key": "Host.Launched",
			"comment": [
				"Logging message for host launched.",
				"{0}: host name.",
				"{1}: host process Id."
			]
		},
		{
			"key": "Host.Exited",
			"comment": [
				"Logging message for host exited. this can be combined with \\'Host.Exited.With.Code\\' or \\'Host.Exited.With.Signal\\'",
				"{0}: host name.",
				"{1}: host process Id."
			]
		},
		{
			"key": "Host.Exited.With.Code",
			"comment": [
				"Logging message for host exited with code. this MUST be used with \\'Host.Exited\\'",
				"{0}: code.",
				"{1}: exit code."
			]
		},
		{
			"key": "Host.Exited.With.Signal",
			"comment": [
				"Logging message for host exited with code. this MUST be used with \\'Host.Exited\\'",
				"{0}: signal."
			]
		},
		{
			"key": "Starting.Host.Error",
			"comment": [
				"Logging message for error when starting hub host.",
				"{0}: executable.",
				"{1}: host Id.",
				"{2}: error message."
			]
		},
		{
			"key": "Host.Info.Not.Found",
			"comment": [
				"Logging message for failed to find a HostInfo object. Don\\'t translate \\'HostInfo\\'",
				"{0}: HostInfo object id."
			]
		},
		{
			"key": "Get.Host.Id.Failed",
			"comment": [
				"Logging message for failed to get a host id.",
				"{0}: error message."
			]
		},
		{
			"key": "More.Than.One.Host.Pending",
			"comment": [
				"Logging message for more than one host is pending."
			]
		},
		{
			"key": "Unknown.Host",
			"comment": [
				"{0}: host Id."
			]
		},
		{
			"key": "Stopping.Host",
			"comment": [
				"{0}: host Id.",
				"{1}: host process Id.",
				"{2}: reason to stop."
			]
		},
		"Cannot.Stop.Location.Service",
		{
			"key": "Error.Decoding",
			"comment": [
				"{0}: error message."
			]
		},
		{
			"key": "Log.Config",
			"comment": [
				"{Locked}"
			]
		},
		{
			"key": "Message.At",
			"comment": [
				"Used as connection between a message body and where it appears.",
				"E.g. \\'hub controller is closed\\' at \\'hubController.close();\\'"
			]
		},
		{
			"key": "Length.Cannot.Be.Negative",
			"comment": [
				"Length is a variable name, don\\'t translate it."
			]
		},
		{
			"key": "No.Folder.Specified",
			"comment": [
				"Service Hub is our product name"
			]
		},
		{
			"key": "Cannot.Find.Service.Module.File",
			"comment": [
				"Error message for not finding service module info file for a specific file pattern in a folder.",
				"{0}: file pattern.",
				"{1}: folder patrh."
			]
		},
		{
			"key": "Cannot.Find.Service.Module.File.With.Reason",
			"comment": [
				"Error message for using discovery services to find a service module failed.",
				"{0}: file pattern.",
				"{1}: folder patrh.",
				"{2}: error message"
			]
		},
		{
			"key": "Loading.Service.Module",
			"comment": [
				"Logging message for loading a service module info from a path.",
				"{0}: file path.",
				"{1}: service name."
			]
		},
		{
			"key": "Service.Info.Invalid",
			"comment": [
				"Error message for a service module info contains reserved property.",
				"{0}: file path.",
				"{1}: service name.",
				"{2}: property name."
			]
		},
		{
			"key": "Service.Info.SpaceInHostId",
			"comment": [
				"Error message for a service module info containing space in the host id.",
				"{0}: file path.",
				"{1}: service name.",
				"{2}: host id."
			]
		},
		{
			"key": "Cannot.Resolve.Service.Module.Info",
			"comment": [
				"Error message for service module info load error.",
				"{0}: service name.",
				"{1}: file path.",
				"{2}: error message."
			]
		},
		{
			"key": "Starting.Service",
			"comment": [
				"Logging message for starting a Node service.",
				"Don\\'t translate Node. Node is a host type",
				"{0}: service name."
			]
		},
		{
			"key": "Variable.Must.Be.Function",
			"comment": [
				"Error message for a variable must be a function.",
				"{0}: variable name.",
				"{1}: module name.",
				"{2}: actual type of variable"
			]
		},
		{
			"key": "Service.Entry.Point.File.Name.Not.Found",
			"comment": [
				"Error message for cannot find entry point file name for a service.",
				"{0}: service name."
			]
		},
		{
			"key": "Service.Entry.Point.Constructor.Not.Found",
			"comment": [
				"Error message for cannot find entry point construstor for a service.",
				"{0}: service name."
			]
		},
		{
			"key": "Load.Service.Module.Error",
			"comment": [
				"Error message when loading a service module.",
				"{0}: module name.",
				"{1}: error message"
			]
		},
		{
			"key": "Connected.To.Service",
			"comment": [
				"{0}: service name."
			]
		},
		{
			"key": "Dispose.Service.Error",
			"comment": [
				"Error message when disposing a service module instance.",
				"{0}: Service module instance name.",
				"{1}: service name.",
				"{2}: error message"
			]
		},
		{
			"key": "Create.Service.Instance.Error",
			"comment": [
				"Error message when creating a service module instance.",
				"{0}: service name.",
				"{1}: error message."
			]
		},
		{
			"key": "Failed.To.Delete.File",
			"comment": [
				"Error message when failed to delete a file."
			]
		},
		{
			"key": "Failed.To.Get.File.Stats",
			"comment": [
				"Error message when failed to get file statistics."
			]
		},
		{
			"key": "Failed.To.Enumerate.Files.In.Dir",
			"comment": [
				"Error message when failed to enumerate files in a directory."
			]
		},
		{
			"key": "serviceHub.Config.FilePath.Is.Not.Absolute",
			"comment": [
				"ServiceHub config file path is not an absolute path"
			]
		},
		{
			"key": "serviceHub.Config.FileName.Is.Incorrect",
			"comment": [
				"ServiceHub config file name is not equal to \\'servicehub.config.json\\'"
			]
		},
		{
			"key": "serviceHub.Config.File.Does.Not.Exist",
			"comment": [
				"ServiceHub config file does not exist"
			]
		},
		{
			"key": "Host.Group.Not.Supported",
			"comment": [
				"This string is an error message in exception thrown when a client tries to use a host group if it is not supported",
				"{0}: The name of the service.",
				"{1}: The name of the host group.",
				"{2}: The name of the property in service config file to enable host groups for the service."
			]
		},
		{
			"key": "object.Disposed",
			"comment": [
				"Object cannot be used because it has been disposed"
			]
		},
		{
			"key": "could.Not.Kill.Host",
			"comment": [
				"Logging message for failed to kill a host process.",
				"{0}: error message."
			]
		}
	]
}