Use proper IDs when referencing i18n strings. (Base changes + phase 1 conversions) (#679)

* Use proper IDs when referencing i18n strings.

* Simplify Root.go to use same path-based i18n string.

* convert/simplify parser messages to use i18n IDs
diff --git a/cmd/root.go b/cmd/root.go
index 0edf6f3..25ccc30 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -37,6 +37,8 @@
 
 var stderr = ""
 var stdout = ""
+
+// TODO(#683) short and long desc. should be translated for i18n
 var RootCmd = &cobra.Command{
 	Use:           "wskdeploy",
 	SilenceErrors: true,
@@ -72,11 +74,14 @@
 		os.Exit(-1)
 	} else {
 		if utils.Flags.WithinOpenWhisk {
+			// TODO() i18n
 			fmt.Print(`{"deploy":"success"}`) // maybe return report of what has been deployed.
 		}
 	}
 }
 
+// This function is only used when wskdeploy is being called as an Action and its input
+// (i.e., command and arguments) is JSON data (map).
 func substCmdArgs() error {
 	// Extract arguments from input JSON string
 
@@ -93,7 +98,7 @@
 		regex, _ := regexp.Compile("[ ]+")
 		os.Args = regex.Split("wskdeploy "+strings.TrimSpace(v), -1)
 	} else {
-		return errors.New(wski18n.T("Missing cmd key"))
+		return errors.New(wski18n.T(wski18n.ID_JSON_MISSING_KEY_CMD))
 	}
 	return nil
 }
@@ -106,6 +111,8 @@
 	// Here you will define your flags and configuration settings.
 	// Cobra supports Persistent Flags, which, if defined here,
 	// will be global for your application.
+
+	// TODO(#682) add in-line descriptions to i18n resource file
 	RootCmd.PersistentFlags().StringVar(&utils.Flags.CfgFile, "config", "", "config file (default is $HOME/.wskprops)")
 	// Cobra also supports local flags, which will only run
 	// when this action is called directly.
@@ -117,12 +124,12 @@
 	RootCmd.PersistentFlags().BoolVarP(&utils.Flags.UseInteractive, "allow-interactive", "i", false, "allow interactive prompts")
 	RootCmd.PersistentFlags().BoolVarP(&utils.Flags.UseDefaults, "allow-defaults", "a", false, "allow defaults")
 	RootCmd.PersistentFlags().BoolVarP(&utils.Flags.Verbose, "verbose", "v", false, "verbose output")
-	RootCmd.PersistentFlags().StringVarP(&utils.Flags.ApiHost, "apihost", "", "", wski18n.T("whisk API HOST"))
-	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Namespace, "namespace", "n", "", wski18n.T("namespace"))
-	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Auth, "auth", "u", "", wski18n.T("authorization `KEY`"))
-	RootCmd.PersistentFlags().StringVar(&utils.Flags.ApiVersion, "apiversion", "", wski18n.T("whisk API `VERSION`"))
-	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Key, "key", "k", "", wski18n.T("path of the .key file"))
-	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Cert, "cert", "c", "", wski18n.T("path of the .cert file"))
+	RootCmd.PersistentFlags().StringVarP(&utils.Flags.ApiHost, "apihost", "", "", wski18n.T(wski18n.ID_CMD_FLAG_API_HOST))
+	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Namespace, "namespace", "n", "", wski18n.T(wski18n.ID_CMD_FLAG_NAMESPACE))
+	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Auth, "auth", "u", "", wski18n.T(wski18n.ID_CMD_FLAG_AUTH_KEY))
+	RootCmd.PersistentFlags().StringVar(&utils.Flags.ApiVersion, "apiversion", "", wski18n.T(wski18n.ID_CMD_FLAG_API_VERSION))
+	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Key, "key", "k", "", wski18n.T(wski18n.ID_CMD_FLAG_KEY_FILE))
+	RootCmd.PersistentFlags().StringVarP(&utils.Flags.Cert, "cert", "c", "", wski18n.T(wski18n.ID_CMD_FLAG_CERT_FILE))
 	RootCmd.PersistentFlags().BoolVarP(&utils.Flags.Managed, "managed", "", false, "mark project entities as managed")
 }
 
@@ -136,6 +143,7 @@
 		_, err := whisk.ReadProps(utils.Flags.CfgFile)
 		if err != nil {
 			utils.Flags.CfgFile = defaultPath
+			// TODO() i18n
 			wskprint.PrintOpenWhiskWarning("Invalid config file detected, so by default it is set to " + utils.Flags.CfgFile + "\n")
 		}
 
@@ -169,22 +177,16 @@
 	if utils.Flags.ManifestPath == "" {
 		if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYaml)); err == nil {
 			utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYaml)
-			stdout = wski18n.T("Using {{.manifestPath}} for deployment.\n",
-				map[string]interface{}{"manifestPath": utils.Flags.ManifestPath})
+			stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_DEPLOY_X_path_X,
+				map[string]interface{}{"path": utils.Flags.ManifestPath})
 		} else if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYml)); err == nil {
 			utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYml)
-			stdout = wski18n.T("Using {{.manifestPath}} for deployment.\n",
-				map[string]interface{}{"manifestPath": utils.Flags.ManifestPath})
+			stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_DEPLOY_X_path_X,
+				map[string]interface{}{"path": utils.Flags.ManifestPath})
 		} else {
-			stderr = wski18n.T("Manifest file not found at path {{.projectPath}}.\n",
-				map[string]interface{}{"projectPath": projectPath})
-			whisk.Debug(whisk.DbgError, stderr)
-			errString := wski18n.T("Missing {{.yaml}}/{{.yml}} file. Manifest file not found at path {{.projectPath}}.\n",
-				map[string]interface{}{"yaml": utils.ManifestFileNameYaml, "yml": utils.ManifestFileNameYml,
-					"projectPath": projectPath})
-
-			// TODO() print help on error
-			return wskderrors.NewErrorManifestFileNotFound(projectPath, errString)
+			stderr = wski18n.T(wski18n.ID_MSG_MANIFEST_FILE_NOT_FOUND_X_path_X,
+				map[string]interface{}{"path": projectPath})
+			return wskderrors.NewErrorManifestFileNotFound(projectPath, stderr)
 		}
 		whisk.Debug(whisk.DbgInfo, stdout)
 	}
@@ -241,8 +243,8 @@
 		}
 
 	} else {
-		errString := wski18n.T("Manifest file is not found at the path [{{.filePath}}].\n",
-			map[string]interface{}{"filePath": utils.Flags.ManifestPath})
+		errString := wski18n.T(wski18n.ID_MSG_MANIFEST_FILE_NOT_FOUND_X_path_X,
+			map[string]interface{}{"path": utils.Flags.ManifestPath})
 		whisk.Debug(whisk.DbgError, errString)
 		return wskderrors.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
 	}
@@ -265,20 +267,16 @@
 	if utils.Flags.ManifestPath == "" {
 		if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYaml)); err == nil {
 			utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYaml)
-			stdout = wski18n.T("Using {{.manifestPath}} for undeployment.\n",
-				map[string]interface{}{"manifestPath": utils.Flags.ManifestPath})
+			stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_UNDEPLOY_X_path_X,
+				map[string]interface{}{"path": utils.Flags.ManifestPath})
 		} else if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYml)); err == nil {
 			utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYml)
-			stdout = wski18n.T("Using {{.manifestPath}} for undeployment.\n",
-				map[string]interface{}{"manifestPath": utils.Flags.ManifestPath})
+			stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_UNDEPLOY_X_path_X,
+				map[string]interface{}{"path": utils.Flags.ManifestPath})
 		} else {
-			stderr = wski18n.T("Manifest file not found at path {{.projectPath}}.\n",
-				map[string]interface{}{"projectPath": projectPath})
-			whisk.Debug(whisk.DbgError, stderr)
-			errString := wski18n.T("Missing {{.yaml}}/{{.yml}} file. Manifest file not found at path {{.projectPath}}.\n",
-				map[string]interface{}{"yaml": utils.ManifestFileNameYaml, "yml": utils.ManifestFileNameYml,
-					"projectPath": projectPath})
-			return wskderrors.NewErrorManifestFileNotFound(projectPath, errString)
+			stderr = wski18n.T(wski18n.ID_MSG_MANIFEST_FILE_NOT_FOUND_X_path_X,
+				map[string]interface{}{"path": projectPath})
+			return wskderrors.NewErrorManifestFileNotFound(projectPath, stderr)
 		}
 		whisk.Debug(whisk.DbgInfo, stdout)
 	}
@@ -332,9 +330,8 @@
 		}
 
 	} else {
-		errString := wski18n.T("Manifest file is not found at the path [{{.filePath}}].\n",
-			map[string]interface{}{"filePath": utils.Flags.ManifestPath})
-		whisk.Debug(whisk.DbgError, errString)
+		errString := wski18n.T(wski18n.ID_MSG_MANIFEST_FILE_NOT_FOUND_X_path_X,
+			map[string]interface{}{"path": utils.Flags.ManifestPath})
 		return wskderrors.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
 	}
 }
diff --git a/deployers/verifier.go b/deployers/verifier.go
index 116453f..a956ee9 100644
--- a/deployers/verifier.go
+++ b/deployers/verifier.go
@@ -60,6 +60,7 @@
 	}
 
 	depApp := NewDeploymentProject()
+	// TODO() i18n
 	fmt.Printf("Target Packages are %#v\n", target.Packages)
 	depApp.Packages = target.Packages
 	return depApp, nil
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 5061351..5aac11f 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -33,6 +33,7 @@
 	"gopkg.in/yaml.v2"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
+	"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
 )
 
 // Read existing manifest file or create new if none exists
@@ -156,6 +157,7 @@
 
 			isBinding = false
 		} else {
+			// TODO() i18n
 			return nil, errors.New("Dependency type is unknown.  wskdeploy only supports /whisk.system bindings or github.com packages.")
 		}
 
@@ -197,6 +199,7 @@
 	manifestPackages := make(map[string]Package)
 
 	if manifest.Package.Packagename != "" {
+		// TODO() i18n
 		fmt.Println("WARNING: using package inside of manifest file will soon be deprecated, please use packages instead.")
 		s, err := dm.ComposePackage(manifest.Package, manifest.Package.Packagename, filePath, ma)
 		if err == nil {
@@ -497,37 +500,31 @@
 					if utils.CheckRuntimeConsistencyWithFileExtension(ext, action.Runtime) {
 						wskaction.Exec.Kind = action.Runtime
 					} else {
-						errStr := wski18n.T("WARNING: Runtime specified in manifest " +
-							"YAML {{.runtime}} does not match with action source " +
-							"file extension {{.ext}} for action {{.action}}.\n",
+						errStr := wski18n.T(wski18n.ID_MSG_RUNTIME_MISMATCH_X_runtime_X_ext_X_action_X,
 							map[string]interface{}{"runtime": action.Runtime, "ext": ext, "action": action.Name})
-						whisk.Debug(whisk.DbgWarn, errStr)
+						wskprint.PrintOpenWhiskWarning(errStr)
+
 						// even if runtime is not consistent with file extension, deploy action with specified runtime in strict mode
 						if utils.Flags.Strict {
 							wskaction.Exec.Kind = action.Runtime
 						} else {
-							errStr := wski18n.T("WARNING: Whisk Deploy has chosen appropriate " +
-								"runtime {{.runtime}} based on the action source file " +
-								"extension for that action {{.action}}.\n",
+							errStr := wski18n.T(wski18n.ID_MSG_RUNTIME_CHANGED_X_runtime_X_action_X,
 								map[string]interface{}{"runtime": wskaction.Exec.Kind, "action": action.Name})
-							whisk.Debug(whisk.DbgWarn, errStr)
+							wskprint.PrintOpenWhiskWarning(errStr)
 						}
 					}
 				}
 			} else {
-				errStr := wski18n.T("WARNING: Runtime specified in manifest " +
-					"YAML {{.runtime}} is not supported by OpenWhisk server " +
-					"for the action {{.action}}.\n",
+				errStr := wski18n.T(wski18n.ID_MSG_RUNTIME_UNSUPPORTED_X_runtime_X_action_X,
 					map[string]interface{}{"runtime": action.Runtime, "action": action.Name})
 				whisk.Debug(whisk.DbgWarn, errStr)
 				if ext == utils.ZIP_FILE_EXTENSION {
+					// TODO() i18n
 					// for zip action, error out if specified runtime is not supported by OpenWhisk server
 					errMessage := "ERROR: Given runtime for a zip action is not supported by OpenWhisk server. " + RUNTIME_ERR_MESSAGE
 					return nil, wskderrors.NewInvalidRuntimeError(errMessage, splitFilePath[len(splitFilePath)-1], action.Name, action.Runtime, utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
 				} else {
-					errStr = wski18n.T("WARNING: Whisk Deploy has chosen appropriate " +
-						"runtime {{.runtime}} based on the action source file " +
-						"extension for that action {{.action}}.\n",
+					errStr = wski18n.T(wski18n.ID_MSG_RUNTIME_CHANGED_X_runtime_X_action_X,
 						map[string]interface{}{"runtime": wskaction.Exec.Kind, "action": action.Name})
 					whisk.Debug(whisk.DbgWarn, errStr)
 				}
@@ -623,20 +620,23 @@
 			if utils.LimitsTimeoutValidation(action.Limits.Timeout) {
 				wsklimits.Timeout = action.Limits.Timeout
 			} else {
-				warningString := wski18n.T("WARNING: Invalid limitation 'timeout' of action in manifest is ignored. Please check errors.\n")
-				whisk.Debug(whisk.DbgWarn, warningString)
+				warningString := wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
+					map[string]interface{}{"limit": "timeout"})
+				wskprint.PrintOpenWhiskWarning(warningString)
 			}
 			if utils.LimitsMemoryValidation(action.Limits.Memory) {
 				wsklimits.Memory = action.Limits.Memory
 			} else {
-				warningString := wski18n.T("WARNING: Invalid limitation 'memorySize' of action in manifest is ignored. Please check errors.\n")
-				whisk.Debug(whisk.DbgWarn, warningString)
+				warningString := wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
+					map[string]interface{}{"limit": "memorySize"})
+				wskprint.PrintOpenWhiskWarning(warningString)
 			}
 			if utils.LimitsLogsizeValidation(action.Limits.Logsize) {
 				wsklimits.Logsize = action.Limits.Logsize
 			} else {
-				warningString := wski18n.T("WARNING: Invalid limitation 'logSize' of action in manifest is ignored. Please check errors.\n")
-				whisk.Debug(whisk.DbgWarn, warningString)
+				warningString := wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
+					map[string]interface{}{"limit": "logSize"})
+				wskprint.PrintOpenWhiskWarning(warningString)
 			}
 			if wsklimits.Timeout!=nil || wsklimits.Memory!=nil || wsklimits.Logsize!=nil {
 				wskaction.Limits = wsklimits
diff --git a/wski18n/i18n.go b/wski18n/i18n.go
index 245dc3b..38c4172 100644
--- a/wski18n/i18n.go
+++ b/wski18n/i18n.go
@@ -43,10 +43,12 @@
 
 var resourcePath = filepath.Join("wski18n", "resources")
 
+// TODO() when are these used?
 func GetResourcePath() string {
     return resourcePath
 }
 
+// TODO() when are these used?
 func SetResourcePath(path string) {
     resourcePath = path
 }
@@ -58,10 +60,12 @@
     curLocale = Init(new(JibberJabberDetector))
 }
 
+// TODO() when are these used?
 func CurLocale() string {
     return curLocale
 }
 
+// TODO() when are these used?
 func Locale(detector Detector) string {
 
     // Use default locale until strings are translated
@@ -103,6 +107,7 @@
     return
 }
 
+// TODO() when are these used?
 func normalize(locale string) string {
     locale = strings.ToLower(strings.Replace(locale, "-", "_", 1))
     for _, l := range SUPPORTED_LOCALES {
@@ -119,6 +124,7 @@
     return locale
 }
 
+// TODO() when are these used?
 func isSupported(locale string) bool {
     for _, l := range SUPPORTED_LOCALES {
         if strings.EqualFold(locale, l) {
@@ -128,6 +134,7 @@
     return false
 }
 
+// TODO() when are these used?
 func defaultLocaleForLang(lang string) string {
     if lang != "" {
         lang = strings.ToLower(lang)
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
new file mode 100644
index 0000000..6f6a369
--- /dev/null
+++ b/wski18n/i18n_ids.go
@@ -0,0 +1,341 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package wski18n
+
+const(
+	// Debug / trace message prefixes
+	ID_MSG_PREFIX_ERROR	= "msg_prefix_error"	// "Error"
+	ID_MSG_PREFIX_SUCCESS	= "msg_prefix_success"	// "Success"
+	ID_MSG_PREFIX_WARNING	= "msg_prefix_warning"	// "Warning"
+	ID_MSG_PREFIX_INFO	= "msg_prefix_info"	// "Info"
+
+	// wskdeploy (as an Action) JSON messages
+	ID_JSON_MISSING_KEY_CMD	= "msg_json_missing_cmd_key"	// "Missing 'cmd' input key"
+
+	// wskdeploy Command messages
+	ID_CMD_FLAG_AUTH_KEY	= "msg_cmd_flag_auth_key"	// "authorization `KEY`"
+	ID_CMD_FLAG_NAMESPACE	= "msg_cmd_flag_namespace"	// "namespace"
+	ID_CMD_FLAG_API_HOST	= "msg_cmd_flag_api_host"	// "whisk API `HOST`"
+	ID_CMD_FLAG_API_VERSION	= "msg_cmd_flag_api_version"	// "whisk API `VERSION`"
+	ID_CMD_FLAG_KEY_FILE	= "msg_cmd_flag_key_file"	// "path of the .key file"
+	ID_CMD_FLAG_CERT_FILE	= "msg_cmd_flag_cert_file"	// "path of the .cert file"
+
+	// Informational
+	ID_MSG_MANIFEST_DEPLOY_X_path_X				= "msg_using_manifest_deploy"	// "Using {{.path}} for deployment.\n"
+	ID_MSG_MANIFEST_UNDEPLOY_X_path_X			= "msg_using_manifest_undeploy"	// "Using {{.path}} for undeployment.\n"
+	ID_MSG_MANIFEST_FILE_NOT_FOUND_X_path_X			= "msg_manifest_not_found"
+	ID_MSG_RUNTIME_MISMATCH_X_runtime_X_ext_X_action_X	= "msg_runtime_mismatch"
+	ID_MSG_RUNTIME_CHANGED_X_runtime_X_action_X		= "msg_runtime_changed"
+	ID_MSG_RUNTIME_UNSUPPORTED_X_runtime_X_action_X		= "msg_runtime_unsupported"
+
+	// Action Limits
+	ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X			= "msg_action_limit_ignored"	// for timeout, memorySize, logSize
+
+)
+
+//"id": "WARNING: Invalid limitation 'timeout' of action in manifest is ignored. Please check errors.\n",
+//"translation": "WARNING: Invalid limitation 'timeout' of action in manifest is ignored. Please check errors.\n"
+//},
+//{
+//"id": "WARNING: Invalid limitation 'memorySize' of action in manifest is ignored. Please check errors.\n",
+//"translation": "WARNING: Invalid limitation 'memorySize' of action in manifest is ignored. Please check errors.\n"
+//},
+//{
+//"id": "WARNING: Invalid limitation 'logSize' of action in manifest is ignored. Please check errors.\n",
+//"translation": "WARNING: Invalid limitation 'logSize' of action in manifest is ignored. Please check errors.\n"
+//},
+
+//{
+//"id": "Unsupported runtime type, set to nodejs",
+//"translation": "Unsupported runtime type, set to nodejs"
+//},
+//{
+//"id": "The authentication key is not configured.\n",
+//"translation": "The authentication key is not configured.\n"
+//},
+//{
+//"id": "The API host is not configured.\n",
+//"translation": "The API host is not configured.\n"
+//},
+//{
+//"id": "The namespace is not configured.\n",
+//"translation": "The namespace is not configured.\n"
+//},
+//{
+//"id": "The API host is {{.apihost}}, from {{.apisource}}.\n",
+//"translation": "The API host is {{.apihost}}, from {{.apisource}}.\n"
+//},
+//{
+//"id": "The auth key is set, from {{.authsource}}.\n",
+//"translation": "The auth key is set, from {{.authsource}}.\n"
+//},
+//{
+//"id": "The namespace is {{.namespace}}, from {{.namespacesource}}.\n",
+//"translation": "The namespace is {{.namespace}}, from {{.namespacesource}}.\n"
+//},
+//{
+//"id": "Failed to get the supported runtimes from OpenWhisk service: {{.err}}.\n",
+//"translation": "Failed to get the supported runtimes from OpenWhisk service: {{.err}}.\n"
+//},
+//{
+//"id": "Start to unmarshal Openwhisk info from local values.\n",
+//"translation": "Start to unmarshal Openwhisk info from local values.\n"
+//},
+//{
+//"id": "Unmarshal Openwhisk info from internet.\n",
+//"translation": "Unmarshal Openwhisk info from internet.\n"
+//},
+//{
+//"id": "Deployment completed successfully.\n",
+//"translation": "Deployment completed successfully.\n"
+//},
+//{
+//"id": "Got error creating package with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating package with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error creating action with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating package with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error creating api with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating api with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error creating rule with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating rule with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error setting the status of rule with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error setting the status of rule with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error creating trigger with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating trigger with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error creating trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating trigger feed with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error creating package binding with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error creating package binding with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Deployment of dependency {{.depName}} did not complete sucessfully. Run `wskdeploy undeploy` to remove partially deployed assets.\n",
+//"translation": "Deployment of dependency {{.depName}} did not complete sucessfully. Run `wskdeploy undeploy` to remove partially deployed assets.\n"
+//},
+//{
+//"id": "Deploying action {{.output}} ...",
+//"translation": "Deploying action {{.output}} ..."
+//},
+//{
+//"id": "Deploying rule {{.output}} ...",
+//"translation": "Deploying rule {{.output}} ..."
+//},
+//{
+//"id": "Deploying trigger feed {{.output}} ...",
+//"translation": "Deploying trigger feed {{.output}} ..."
+//},
+//{
+//"id": "Deploying package {{.output}} ...",
+//"translation": "Deploying package {{.output}} ..."
+//},
+//{
+//"id": "Deploying package binding {{.output}} ...",
+//"translation": "Deploying package binding {{.output}} ..."
+//},
+//{
+//"id": "Deploying dependency {{.output}} ...",
+//"translation": "Deploying dependency {{.output}} ..."
+//},
+//{
+//"id": "OK. Cancelling deployment.\n",
+//"translation": "OK. Cancelling deployment.\n"
+//},
+//{
+//"id": "OK. Canceling undeployment.\n",
+//"translation": "OK. Canceling undeployment.\n"
+//},
+//{
+//"id": "Undeployment did not complete sucessfully.\n",
+//"translation": "Undeployment did not complete sucessfully.\n"
+//},
+//{
+//"id": "Deployment removed successfully.\n",
+//"translation": "Deployment removed successfully.\n"
+//},
+//{
+//"id": "Undeployment did not complete sucessfully.\n",
+//"translation": "Undeployment did not complete sucessfully.\n"
+//},
+//{
+//"id": "Undeploying dependency {{.depName}} ...",
+//"translation": "Undeploying dependency {{.depName}} ..."
+//},
+//{
+//"id": "Undeployment of dependency {{.depName}} did not complete sucessfully.\n",
+//"translation": "Undeployment of dependency {{.depName}} did not complete sucessfully.\n"
+//},
+//{
+//"id": "Got error deleting action with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error deleting action with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error deleting rule with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error deleting rule with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error setting the status of rule with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error setting the status of rule with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error deleting trigger with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error deleting trigger with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Got error deleting package with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error deleting package with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "WARNING: The 'source' YAML key in trigger entity is deprecated. Please use 'feed' instead as described in specifications.\n",
+//"translation": "WARNING: The 'source' YAML key in trigger entity is deprecated. Please use 'feed' instead as described in specifications.\n"
+//},
+//{
+//"id": "Got error deleting binding package with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Got error deleting binding package with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "Dependency {{.output}} has been successfully deployed.\n",
+//"translation": "Dependency {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Package binding {{.output}} has been successfully deployed.\n",
+//"translation": "Package binding {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Package {{.output}} has been successfully deployed.\n",
+//"translation": "Package {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Trigger {{.output}} has been successfully deployed.\n",
+//"translation": "Trigger {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Trigger feed {{.output}} has been successfully deployed.\n",
+//"translation": "Trigger feed {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Rule {{.output}} has been successfully deployed.\n",
+//"translation": "Rule {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Action {{.output}} has been successfully deployed.\n",
+//"translation": "Action {{.output}} has been successfully deployed.\n"
+//},
+//{
+//"id": "Dependency {{.depName}} has been successfully undeployed.\n",
+//"translation": "Dependency {{.depName}} has been successfully undeployed.\n"
+//},
+//{
+//"id": "Trigger {{.trigger}} has been removed.\n",
+//"translation": "Trigger {{.trigger}} has been removed.\n"
+//},
+//{
+//"id": "Rule {{.rule}} has been removed.\n",
+//"translation": "Rule {{.rule}} has been removed.\n"
+//},
+//{
+//"id": "Action {{.action}} has been removed.\n",
+//"translation": "Action {{.action}} has been removed.\n"
+//},
+//{
+//"id": "Failed to invoke the feed when deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
+//"translation": "Failed to invoke the feed when deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n"
+//},
+//{
+//"id": "WARNING: Mandatory field Package Version must be set.\n",
+//"translation": "WARNING: Mandatory field Package Version must be set.\n"
+//},
+//{
+//"id": "WARNING: Package Version is not saved in the current wskdeploy version.\n",
+//"translation": "WARNING: Package Version is not saved in the current wskdeploy version.\n"
+//},
+//{
+//"id": "WARNING: Mandatory field Package License must be set.\n",
+//"translation": "WARNING: Mandatory field Package License must be set.\n"
+//},
+//{
+//"id": "WARNING: Package License is not saved in the current wskdeploy version.\n",
+//"translation": "WARNING: Package License is not saved in the current wskdeploy version.\n"
+//},
+//{
+//"id": "WARNING: License {{.licenseID}} is not a valid one.\n",
+//"translation": "WARNING: License {{.licenseID}} is not a valid one.\n"
+//},
+//{
+//"id": "memorySize of limits in manifest should be an integer between 128 and 512.\n",
+//"translation": "memorySize of limits in manifest should be an integer between 128 and 512.\n"
+//},
+//{
+//"id": "timeout of limits in manifest should be an integer between 100 and 300000.\n",
+//"translation": "timeout of limits in manifest should be an integer between 100 and 300000.\n"
+//},
+//{
+//"id": "logSize of limits in manifest should be an integer between 0 and 10.\n",
+//"translation": "logSize of limits in manifest should be an integer between 0 and 10.\n"
+//},
+//{
+
+//{
+//"id": "WARNING: Limits  {{.limitname}}  is not changable as to now, which will be ignored.\n",
+//"translation": "WARNING: Limits  {{.limitname}}  is not changable as to now, which will be ignored.\n"
+//},
+
+//{
+//"id": "The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}].",
+//"translation": "The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}]."
+//},
+//{
+//"id": "WARNING: application in deployment file will soon be deprecated, please use project instead.\n",
+//"translation": "WARNING: application in deployment file will soon be deprecated, please use project instead.\n"
+//},
+//{
+//"id": "WARNING: application in manifest file will soon be deprecated, please use project instead.\n",
+//"translation": "WARNING: application in manifest file will soon be deprecated, please use project instead.\n"
+//},
+//{
+//"id": "Undeployment of deleted entities did not complete sucessfully during managed deployment. Run `wskdeploy undeploy` to remove partially deployed assets.\n",
+//"translation": "Undeployment of deleted entities did not complete sucessfully during managed deployment. Run `wskdeploy undeploy` to remove partially deployed assets.\n"
+//},
+//{
+//"id": "Found the action {{.action}} which is deleted from the current project {{.project}} in manifest file which is being undeployed.\n",
+//"translation": "Found the action {{.action}} which is deleted from the current project {{.project}} in manifest file which is being undeployed.\n"
+//},
+//{
+//"id": "Found the trigger {{.trigger}} which is deleted from the current project {{.project}} in manifest file which is being undeployed.\n",
+//"translation": "Found the trigger {{.trigger}} which is deleted from the current project {{.project}} in manifest file which is being undeployed.\n"
+//},
+//{
+//"id": "Found the package {{.package}} which is deleted from the current project {{.project}} in manifest file which is being undeployed.\n",
+//"translation": "Found the package {{.package}} which is deleted from the current project {{.project}} in manifest file which is being undeployed.\n"
+//}
\ No newline at end of file
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 540039f..f95aded 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -97,7 +97,7 @@
 	return a, nil
 }
 
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x4d\x6f\xdc\x38\x12\xbd\xfb\x57\x14\x72\xe9\x8b\xa1\x4d\x66\xb1\xc0\x22\xb7\x60\x93\x99\x35\x66\x62\x1b\xb6\x77\x82\xc1\x6c\x30\x66\x4b\xa5\x16\xa7\x25\x52\x20\x29\x3b\x3d\x42\xff\xf7\x05\x49\xa9\x3f\x6c\x8a\xa2\xd4\xea\xb6\x11\xac\x4f\x72\x4b\xf5\xde\xab\xe2\x57\x15\x45\xfd\x7e\x06\x50\x9f\x01\x00\xbc\xa1\xc9\x9b\xf7\xf0\xa6\x90\x8b\x3f\x4a\x81\x29\xfd\xf6\x07\x0a\xc1\xc5\x9b\x73\x7b\x57\x09\xc2\x64\x4e\x14\xe5\x4c\x3f\xf6\xc9\xdc\x3b\x03\x58\x9f\x7b\x10\x1e\x89\x60\x94\x2d\x3a\x30\xbe\x34\x77\xfb\x50\x64\x15\xc7\x28\x65\x07\xca\x6d\x73\xb7\x0f\x85\xb2\x94\x77\x40\x5c\xe8\x5b\x4e\xfb\xcf\x54\x4a\xca\x16\x10\x17\x09\x2c\x71\xd5\x61\xdf\x3e\x35\x8b\x8b\x64\x06\x94\x95\x95\x32\x4f\x3b\x21\x49\xa5\x32\x2e\xe8\x5f\xc6\x1a\xee\x7f\xfe\xf4\xdb\x7d\x07\xac\xeb\x49\x27\xe4\x63\x46\xe5\x12\x3e\x5c\x5f\xc0\xfd\xbf\xaf\x6e\xef\xba\xf0\x9e\x3d\xe6\x04\x63\xa4\x40\x59\x92\x18\x3b\x50\xb6\xf7\xfb\xb4\xfc\xfa\xe9\xe6\xf6\xe2\xea\x32\x40\xce\xe6\x49\x77\x23\x10\x46\x53\x94\x0a\x52\x9a\x23\x30\xae\x20\xe5\x15\x4b\x80\x28\x28\x89\xca\xa0\xae\xa3\x52\xf0\x3f\x31\x56\xd7\x44\x65\xeb\x75\xf4\x5f\xd6\xd5\x50\x23\x90\xbc\xfd\xa2\xae\xa3\x15\x29\xf2\xf5\xfa\x6f\xfa\x4a\x5f\x18\xe8\x08\x26\xd4\x7c\x0c\xaa\x80\x38\x53\xb9\x8f\xa5\x32\xb4\x78\xbf\xd7\x75\xa4\x9f\xb0\x68\x5f\x43\xa3\x3d\x04\xcf\x29\xef\x3f\x6d\x18\x8a\x06\xd7\x1a\x40\xca\x05\x24\x58\xe6\x7c\x55\x20\x53\xdd\x72\xc2\xed\x07\xd3\x57\xec\x50\x01\x4f\x11\x9c\x12\x74\xc8\x44\xc5\x14\x2d\x36\xe1\x94\x55\x59\x72\xa1\x30\x81\xf9\x0a\xae\x4a\x64\x76\x54\x95\x39\x51\x29\x17\x45\xb7\x98\x71\x58\x4e\x59\x5f\x3e\xdc\x5c\x5e\x5c\xfe\xf4\x1e\x6e\x1a\x3c\x59\x62\x4c\x53\x8a\x09\x50\x06\xad\xb3\xf0\xdb\x87\xcf\xbf\x68\xef\x1b\xd6\xf5\x1a\x12\x8e\x96\xb9\x20\x2a\xce\xe0\x91\xaa\x0c\x48\x6c\x66\x3b\xc9\x2b\x11\xa3\xed\x39\xf8\x4d\x21\x93\xfa\xd7\xba\x8e\xf0\x9b\x6a\x42\xd6\x3c\x59\xd7\x91\xbd\xf2\x0d\xa2\x57\x25\xd1\x1f\xc4\x2f\x26\xe8\x1f\x4d\x6f\x80\x8c\x48\x88\x33\x2e\x91\x01\x29\x4b\xc1\x4b\x41\x89\xda\x36\xdc\x9e\xd4\x39\x91\x98\x00\x67\x66\x64\x79\x35\x6a\x69\x2a\x23\x6a\x5c\x08\x5f\x5e\xe0\xb4\xbd\xb0\xab\xf7\x5b\x3f\x25\x8a\x07\x14\x8d\x22\x3c\x4d\xa7\x9b\x40\x91\x7b\x0a\x63\x5b\xc8\xb6\x85\xd4\xaa\xc4\x73\x90\xa8\x40\x71\x60\x3c\xc1\x3f\xbb\x12\xad\x50\x6b\x27\xf5\x9d\x56\x5a\xa9\x0c\x99\xa2\xb1\x4d\x68\x96\xb8\x6a\x3d\x8d\x39\x4b\xe9\xa2\x12\x98\x74\x47\x73\x08\x42\xa7\x04\x9d\x6d\x64\x5c\xaa\xa1\xc4\x7e\xbb\x4e\xba\x4d\xae\x34\x94\xaf\xc7\x30\xc8\x3f\xdd\x23\x4a\xaa\xff\x5b\xaf\xcf\x21\x15\xbc\x68\x7e\xb2\x63\xce\xd7\x73\x47\x41\x79\xdb\xbd\x6d\x2b\x89\x6a\x07\xa0\x52\x59\x98\x98\x60\x88\xb0\xa6\xa8\xeb\x68\xf3\xff\xae\x47\x9b\x1f\xc3\x54\x8d\xc7\x74\xca\xfc\x91\xd0\x1c\x13\x3d\x92\x16\x68\xf3\xa3\x67\x03\x4e\x5a\xd8\xfd\xc9\x80\xc6\xf8\xde\xac\x3b\x42\xf8\x14\x4f\x06\xef\x14\x7f\xab\x88\x30\xb3\x40\xc5\x0a\x22\x64\x46\xf2\x9d\x14\x42\xd7\x5e\x16\x3a\xe7\x31\xc9\xe1\x81\xe4\x15\xca\x6e\xa9\x23\xc1\x3a\x26\x3d\x1f\x04\x65\x0a\x05\x43\x5f\xd6\x16\x6c\xef\xa4\xff\xb8\x49\xeb\x20\xe6\x45\x99\xa3\x0e\x77\x53\xd1\xa6\x55\x9e\xaf\xba\x99\x83\x4c\x9d\xa4\x3f\x71\x05\xa6\x7a\x87\x58\x20\x51\x3a\xed\x2c\x49\xbc\x24\x0b\xb4\x19\x8c\xbd\x57\xa0\x94\x64\xb1\xd3\xb8\x40\x58\xd2\xda\xf1\xc4\xde\xd0\x17\xbe\x5e\x75\x14\xaa\x50\xa7\x9a\xb5\xef\xfb\xf2\xa9\xa4\xa7\x70\xe8\x30\x9a\x50\x67\x44\x95\x9f\xa4\xcb\x1d\xc8\xd3\xe3\x8e\x44\x65\x58\xcc\x9c\xa9\x88\xaa\x24\xf0\xf4\xd8\xbe\x1d\x85\x34\xb4\xdd\x94\xa0\x8b\x05\x8a\x53\x34\xdd\xe1\x54\x43\x9d\x4a\x11\x93\x53\x7a\x76\x20\xdf\xd0\x19\x7e\x4e\x59\xa2\xff\x3f\xe1\xac\x78\x38\x65\xdf\xda\xc9\x53\x48\xb0\x44\x96\x20\x8b\x57\xda\x34\xc1\xf2\x92\xd8\x12\x9d\x26\x4d\x8a\x6c\xd7\x48\xbd\x44\x6e\x56\x48\x5d\x7b\xc1\xfd\xa3\x5c\xda\xed\x95\xcd\x3e\xcb\xbd\xce\x2e\x04\x16\xfc\x01\xa1\x24\x42\x51\x92\xe7\xab\x66\x1b\x08\x13\x20\x52\xa2\xf2\x24\x28\xaf\x41\x99\x27\x64\x3b\x6b\x63\x5d\x47\xbc\x52\x65\xa5\xd6\x6b\x88\xa2\xc8\xeb\x8f\xc7\xac\x87\xcc\x4c\x4b\x43\xa9\x9c\x46\x3d\x44\x7b\x63\x6a\x28\xa1\xd7\xb8\x87\xb8\xed\xea\x43\x39\xbb\xec\x02\xe9\xda\x91\x35\x96\xb6\xcb\xbe\x87\x7e\xbf\x47\x0f\x62\xf6\x98\x3a\x49\xaf\x7e\x8e\xe0\x5f\x84\xc5\x98\xe7\x8d\x79\xef\x46\xaa\xd7\xa4\x87\x44\x1b\x84\x6d\xd7\xfa\x6d\x3a\x6a\x8d\xed\x43\xfe\xd1\xef\x29\x37\x06\x40\xf4\xcd\x9a\x76\x1a\x19\x51\x6f\x74\x19\xbe\x5e\xaf\x5b\x84\xe7\x5d\x70\x3b\x1f\x77\x77\xdf\x50\xeb\x7e\xff\xc7\x2e\x07\x61\xa1\x39\x00\xbd\x27\x8d\x48\x30\xc7\xd3\xd4\x54\xd3\x31\x85\xba\x74\xe4\x4c\x7d\x2a\x9e\xff\x57\x21\x4f\xe2\x79\xfc\x2a\x64\x42\xaa\xa1\x4e\x1d\xb9\x0a\x99\x9a\x2f\xd4\xbd\xe3\xef\x33\x4d\x48\xe5\x7f\x91\x74\x97\x21\xcc\xec\xae\xed\xcc\xbe\xa5\x31\x3b\xd0\x6c\x13\x52\x64\x8a\x2a\xb3\x27\x9d\x60\x29\x30\x26\x0a\x93\x08\xae\x73\x24\x12\xa1\x92\x08\x33\x1d\xf4\x19\x50\x26\x15\x12\x9d\xbb\x43\x82\x32\x16\x74\x6e\x5f\x01\x35\xef\x83\xec\xdb\x0c\x4f\xb5\xf1\x92\x8a\x42\xdb\xbd\x4d\x34\x4f\xd8\xfe\xd3\x51\x76\xe5\x51\xae\x44\x36\x23\x12\xe6\x88\x6c\x2f\x37\xda\xd4\x67\xde\xec\x6a\x1c\x9c\x53\xdc\xb5\x27\xbf\x1f\xab\xf0\x30\x4c\xaf\xcc\x29\xe5\x4d\x20\xeb\xae\x19\x2e\x53\xc8\x1a\x87\xe5\x95\xf5\xac\x3e\x3d\x54\xdb\x08\x40\xa7\xc0\x9b\xa7\x15\xfb\x58\x61\x23\x80\x9c\x82\x3e\x3c\xdf\xad\x18\x2b\x69\x14\x54\xc0\xc4\xb1\xcd\xd0\xdd\x70\x6d\x61\x19\x3e\x77\x0c\x43\xec\x1b\x00\xcd\xd2\xb1\x8b\xd6\x54\x7f\x41\x7d\xde\x6f\xee\xed\x45\x3a\x8b\x1c\x44\x1b\x60\xd8\xd3\x4b\xda\x23\x12\x03\x48\x03\x8d\x7b\xde\xe8\x52\xf6\xc0\x97\x68\xd2\x68\x9b\x88\x65\xc8\x4e\x94\x13\x9e\x58\x84\x3f\xa7\xfa\x4c\x58\x42\x14\x17\x2b\x48\x29\xe6\x09\xb4\x93\xfa\xaf\x28\xcc\xc9\x9f\xa2\x92\x0a\xe6\xa8\xeb\x8e\x80\x7c\x68\x20\x9a\x5f\xda\x53\xe3\xf6\x14\x0e\x79\xb0\xb9\x91\x0e\x5b\x5c\x09\xa1\xeb\xf0\xed\xb6\xed\x83\x7d\x3a\x40\xec\xc1\xf8\xe3\x22\xfb\x0b\x8d\x91\x49\x9c\x28\xb2\x1d\x68\x61\x91\x6d\x8d\x8f\x15\xd9\xd1\xf8\x7e\xf9\x2d\x6c\x5d\x47\xb9\xbd\xbc\xf8\xb8\x3d\xa5\x45\xe0\x81\xe4\x34\x01\xce\x30\x40\xea\x20\x2c\xf7\x91\x76\x2c\xb8\x58\xdd\xd2\xbf\x50\x57\xe2\x39\x2d\xa8\x92\x7b\xe7\xc9\x64\xc6\xab\x3c\xd1\x8d\x43\x98\x39\x9f\xa0\x07\xf5\x1c\xd5\xa3\x9e\xb1\xde\xfd\xf0\x4f\x33\x7c\xff\xf1\xee\x87\x6e\xb5\x93\x52\xb8\x4f\xb2\xd2\x02\x79\xa5\x46\xc1\xbf\x7d\x6b\xe0\xff\xfe\x56\xff\x79\x0e\xb8\x4e\x49\xe1\x74\x22\xe7\x8b\xb1\x31\xb2\xf8\xef\x3c\xf2\x27\x02\xf7\xf7\xec\x0b\x66\xfb\x9b\x61\xb0\x67\xea\x66\x4d\xdc\x66\x9a\xb9\xd9\xa1\xdb\x65\xa6\x12\xe8\x82\x71\xb1\x53\x57\xc6\x19\xc6\x4b\xbb\x20\x84\x14\xb1\xc7\x21\x1d\xee\xe8\xb6\x97\x9f\xd6\xd7\x49\x78\x87\xbb\xdb\x74\xa8\xd3\xfa\x7a\x38\x69\xdf\xd4\x6c\x86\x86\x9d\x4e\x0b\xaa\x98\xcd\x8b\x37\xa7\x26\x33\xc2\x16\x64\x9e\x23\x10\x69\x4f\xa8\x3e\x9e\xc3\x63\x46\xcd\x49\xee\x3c\xd7\xe3\xa7\xe5\x0f\x99\xba\x27\xe4\x72\xba\x65\x3e\x87\xe0\xa9\x59\xaf\xa2\x25\xae\xcc\xb1\xe8\x0e\x59\xee\x67\xfb\x61\x63\x14\x2a\x18\x77\xfb\xb0\xf7\x5c\x65\xfb\x3c\x29\xcb\xbc\x3d\x9b\x6b\xce\x87\x9a\x3a\xc5\xbe\x56\xd2\x8b\x1c\xdb\x79\x55\x67\x8f\x7c\x13\x65\x3e\xff\xd8\xfe\xfc\x23\xd5\xa9\xfd\xd7\xa7\xe7\xee\x55\x10\x53\xfb\xc1\xc9\xda\x92\x15\x7b\xdf\x9f\x34\x54\xed\x8f\x0d\x51\xd7\x0b\xa1\xef\xc2\x35\xff\xd8\xd9\x25\x72\xe8\x37\x9d\x56\x72\xce\x74\xcf\xdd\xee\x26\x9e\x43\xb9\xdd\x4d\x6c\xbe\x2b\x6a\xb7\x13\x03\x06\xd1\x71\x48\x07\x39\xba\x1f\xbb\x93\xb8\x39\x09\x65\xe0\xbb\x47\x7b\x4c\xd4\x6c\x04\x53\x94\xde\xd7\x82\x90\x54\x42\x57\x7e\x05\x61\x64\x81\xc9\xee\x8b\xf4\x23\x9d\x9b\x79\xb5\x72\xdd\xe5\xbb\xf9\x56\xcd\xfd\x91\x45\x33\xb5\x9b\x9d\x76\xeb\x83\x39\x0f\xbc\x5b\x6a\xb4\x6d\xb8\xfd\x00\xcf\x35\x78\x37\x38\x73\xdc\x3d\x67\xe0\x5b\x92\x5e\x5e\x57\x4f\xb8\x94\x6b\x7f\xe8\x55\x04\xec\xe5\x94\xf5\x84\x6c\xe7\x9c\x50\x73\xf9\x5a\x42\xf6\x72\xca\x74\xc8\xce\xce\xbe\x9e\xfd\x2f\x00\x00\xff\xff\xa6\x69\x1e\xd2\xa5\x3e\x00\x00")
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x4f\x6f\xdb\x3e\x12\xbd\xe7\x53\x0c\x72\xc9\x25\x30\xda\xdf\x62\x81\x45\x6f\xc1\xf6\xcf\x66\xdb\x24\x45\x92\xb6\x28\xba\x85\x43\x4b\x63\x89\x8d\x44\x0a\x24\x95\xd4\x35\xfc\xdd\x17\x24\x25\x5b\x49\x45\x8a\x92\x65\x27\x28\x7e\x3d\x29\x96\xe6\xbd\x37\xd4\x90\x9c\xa1\xa6\xdf\x0e\x00\x96\x07\x00\x00\x87\x34\x3e\x7c\x05\x87\xb9\x4c\xa6\x85\xc0\x39\xfd\x39\x45\x21\xb8\x38\x3c\xb6\x77\x95\x20\x4c\x66\x44\x51\xce\xf4\x63\x6f\xcc\xbd\x03\x80\xd5\xb1\x07\xe1\x9e\x08\x46\x59\xe2\xc0\xf8\x52\xdd\xed\x42\x91\x65\x14\xa1\x94\x0e\x94\xab\xea\x6e\x17\x0a\x65\x73\xee\x80\x38\xd5\xb7\x9c\xf6\x3f\x24\x67\xd3\x9c\x4a\x49\x59\x32\x8d\xf2\x78\x7a\x8b\x0b\x07\xd0\x7f\xaf\x2e\xce\x81\xb2\xa2\x54\x10\x13\x45\xe0\xcc\x5a\xc1\x51\x94\xc7\x47\xa0\xed\x9c\x2c\x1a\x78\x9e\x91\x64\xca\x48\x8e\xb2\x20\x11\x3a\x38\x36\xf7\xbb\xb1\x48\xa9\x52\x8f\x5c\x7d\x9b\x0b\xfa\xcb\xfc\x00\x37\xef\xdf\x7c\xbd\x09\x01\x2d\xe8\x34\xe5\x52\x39\x40\xef\x53\x2a\x6f\xe1\xe4\xe3\x29\xdc\xfc\xe7\xe2\xea\x3a\x14\xf1\x0e\x85\xd4\x08\x9d\xa0\x9f\xdf\x5c\x5e\x9d\x5e\x9c\x87\xe0\xde\xe2\x62\x3a\xa7\x99\x6b\x24\x0b\xa2\x52\xe0\x73\x50\x29\xc2\xe4\x16\x17\x60\x9e\xed\x86\x8d\x50\xa8\x60\x5c\xfd\x70\x07\x70\x4e\x18\x9d\xa3\x54\x53\xc6\xd5\x74\xce\x4b\x16\x3b\x80\xcf\xaa\x07\x0d\x1e\x30\xae\xc0\x3c\x0d\x44\x81\xe1\xfc\xb6\x5c\x4e\xf4\xc5\x6a\xf5\x7d\xf2\x3f\xe6\x26\x2c\x4d\x28\xaf\x69\x63\x2c\x32\xee\x8a\x91\x4f\x26\x80\x1b\xc8\x30\xe7\x02\xac\x49\x8e\x4c\xf5\x21\x2a\xd9\x00\xaa\xda\xa8\x93\x4c\x94\x4c\xd1\x1c\xf5\x54\xcd\x89\x8a\x52\x07\xcb\xa5\x7d\xcc\xf0\x54\x26\x9a\x4a\x16\x18\xd1\x39\xc5\x18\x28\x83\x5a\x31\xc4\x1c\xa5\x19\x68\x83\x08\xf7\x54\xa5\x40\x22\x33\x5d\x24\x2f\x45\x84\xf6\x55\xe0\x4f\x85\x4c\x87\xaf\x41\xc5\x9f\xaa\x16\x5f\x3d\xab\x7f\xb5\x97\x5d\xaf\xa6\x76\x22\x4a\x09\x4b\xd0\x15\x08\xb5\x0f\xd5\x53\xa0\xf8\x63\x77\x66\x44\x62\x0c\x9c\x99\x20\xf4\x2a\xde\x4a\x66\xc9\x64\x59\x14\x5c\xa8\x4e\xa9\x41\xc3\x4d\xed\x60\xaf\x31\x8d\xb8\x86\x07\xe1\x02\xed\x53\xd3\x8c\xe6\x54\x4d\x69\xc2\xb8\x70\x2a\x3c\x65\x77\x24\xa3\x71\xcd\x61\x4c\x0c\x93\xb9\xd2\x62\x1f\x49\xac\xe0\x9c\xfc\xd7\x5a\x70\xa9\x52\x64\x8a\x46\x76\x6d\xd5\xab\x4b\xe5\x5c\xc4\xd9\x9c\x26\x65\x05\xd0\x2e\xa9\x0f\x82\x53\x82\x5e\x2d\xf5\x3a\xdd\x97\xd8\x6f\xe7\xa4\x5b\xef\x4b\x7d\xf9\x3a\x0c\x83\xfc\xd3\x71\x51\x50\xfd\xd7\x6a\x75\x0c\x73\xc1\xf3\xea\x27\x1b\xf3\xab\x55\xb8\xcb\x41\x50\xde\xf7\x5e\xbf\x2b\x89\xaa\x01\x50\xaa\x34\x4c\x4c\x30\x44\xd8\xab\x58\x2e\x27\xeb\xbf\x9b\x1e\xad\x7f\x0c\x53\x35\x1c\xb3\x55\xe6\x5b\x42\x33\xbb\x70\x25\xa8\xcc\x14\xdf\x4c\xfa\x6a\x99\x90\x16\xf6\xa2\x40\xf6\xc5\x6c\xff\x12\xc5\x1d\x8d\xf0\x95\x66\x42\x21\x7c\x8a\x47\x83\x6f\x15\x7f\xa5\x88\x50\x1a\xbc\x64\x39\x11\x32\x25\x99\x81\xb1\x49\x8a\xce\x33\x2d\x74\xc6\x23\x92\xc1\x1d\xc9\x4a\x94\x6e\xa9\x03\xc1\x5a\x85\x7d\xf2\x42\x50\xa6\x50\x30\x54\x6e\x2d\xe1\xf6\xad\xf4\xaf\xd7\x1b\x35\x44\x3c\x2f\x32\xd4\xc3\x5d\x65\xef\xf3\x32\xcb\x16\x6e\xe6\x20\xd3\x56\xd2\x77\x5c\x81\xa9\x54\x20\x12\x48\x94\x4e\x21\x0a\x12\xdd\x92\x04\xed\x76\x6d\xef\xe5\x28\x25\x49\x1a\x2f\x17\x08\x8b\x6b\x3b\x1e\xdb\x1b\xfa\xc2\x17\x55\x3b\xa1\x0a\x75\xaa\xda\x9e\xfe\x2c\x9f\x0a\xba\x0f\x87\xb6\xa3\x09\x75\x46\x94\xd9\x5e\x42\x6e\x4b\x9e\x0e\x77\x24\x2a\xc3\x62\xd6\x4c\x45\x54\x29\x75\x29\xb3\x63\xdf\x76\x42\x1a\xfa\xde\x94\xa0\x49\x82\x62\x1f\xaf\x6e\x7b\xaa\xbe\x4e\xcd\x11\xe3\x7d\x7a\xb6\x25\x5f\xdf\x15\x7e\x46\x59\xac\xff\xde\xe3\xaa\xb8\x3d\x65\xd7\xde\xc9\xe7\xba\xbe\x46\x16\x23\x8b\x16\xda\x34\xc6\xe2\x9c\xe8\xba\x09\x62\x1a\x57\x29\xb2\xdd\x23\xf5\x16\xb9\xde\x21\xe1\xb2\x64\x70\x73\x2f\x6f\x6d\xc1\xbc\xae\x9c\x6f\x74\x76\x21\x30\xe7\x77\x08\x05\x11\x8a\x92\x2c\x5b\x54\x25\x3c\xc6\x40\xa4\x44\xe5\x49\x50\x9e\x83\x32\xcf\x90\x35\xf6\xc6\xe5\x72\xc2\x4b\x55\x94\x6a\xb5\x82\xc9\x64\xe2\xf5\xc7\x63\xd6\x41\x66\x96\xa5\xbe\x54\xad\x46\x1d\x44\x0f\xe6\x54\x5f\x42\xaf\x71\x07\x71\x1d\xea\x7d\x39\x5d\x76\x81\x74\xf5\xcc\x1a\x4a\xeb\xb2\xef\xa0\x7f\x18\xd1\xbd\x98\x3d\xa6\xad\xa4\x17\xef\x27\xf0\x6f\xc2\x22\xcc\xb2\xca\xbc\x71\xb0\xd5\x4e\xe6\x35\xe9\x20\xd1\x06\x8f\x8f\xcf\xba\x58\xda\x6c\x1c\xb5\xc6\xe6\x21\xff\xec\xf7\x94\x1b\x3d\x20\xba\x56\x4d\xbb\x8c\x0c\xa8\x37\x5c\x86\xcf\xd7\xeb\x1a\xe1\xf7\x10\xdc\xac\xc7\xee\xf0\x0d\xb5\xee\xf6\x7f\xe8\x76\x10\x36\x34\x5b\xa0\x77\xa4\x11\x31\x66\xb8\x9f\x9a\x6a\x3c\xa6\x50\x97\x76\x9c\xa9\x8f\xc5\xf3\x77\x15\xf2\x68\x3c\x77\x5f\x85\x8c\x48\xd5\xd7\xa9\x1d\x57\x21\x63\xf3\x85\xba\xb7\xfb\x73\xa6\x11\xa9\x5a\x9d\xfa\x72\x72\x79\x7e\x7a\xfe\xee\x15\x5c\xa7\x08\x47\xf6\xd4\xf6\x08\xbe\x9e\x9c\x7d\xb0\x27\xd0\x6c\x3d\xa4\xc8\x14\x55\xe6\x4c\x3a\xc6\x42\x60\x44\x14\xc6\x13\xf8\x98\x21\x91\x08\xa5\x44\x38\xd2\x83\x7e\x04\x94\x49\x85\x44\xe7\xee\x10\xa3\x8c\x04\x9d\xd9\x6f\x3c\xd5\x07\x1f\xfb\x35\xc3\x53\x6d\x3c\xa5\xa2\xd0\xf7\x5e\x27\x9a\x7b\x7c\xff\xe3\x51\xba\xf2\xa8\xb6\x44\x36\x25\x12\x66\x88\xec\x41\x6e\xb4\xae\xcf\xbc\xd9\xd5\x30\xb8\x56\x71\x1f\x3d\xf9\xfd\x50\x85\xdb\x61\x7a\x65\x8e\x29\x6f\x04\x59\xd7\xd5\x74\x19\x43\xd6\x30\x2c\xaf\xac\xdf\xea\xd3\x6d\xb5\x0d\x00\x6c\x15\x78\xf9\xb8\x62\x1f\x2a\x6c\x00\x50\xab\xa0\x93\xdf\x4f\x2b\x86\x4a\x1a\x04\x15\xb0\x70\x6c\x32\xf4\x76\xb8\xba\xb0\x0c\x5f\x3b\xfa\x21\x76\x4d\x80\x6a\xeb\x68\xa2\x55\xd5\x5f\x50\xcc\xfb\xcd\xbd\x51\xa4\xb3\xc8\x5e\xb4\x01\x86\x1d\x51\x52\x37\x4a\xf4\x20\x0d\x34\xee\xf8\xa2\x4b\xd9\x1d\xbf\x45\x93\x46\xdb\x44\x2c\x45\xb6\xa7\x9c\x70\xcf\x22\xfc\x39\xd5\x19\x61\x31\x51\x5c\x2c\x60\x4e\x31\x8b\xa1\x5e\xd4\x3f\xdb\x56\x37\xc8\x4b\xa9\x60\x86\xba\xee\x08\xc8\x87\x7a\xa2\xf9\xa5\x3d\x36\xae\x1b\x6f\xc8\x9d\xcd\x8d\xf4\xb0\x45\xa5\x10\xba\x0e\xdf\x1c\xdb\x56\x3d\x7a\x01\x62\xb7\xc6\x1f\x36\xb2\x1f\x68\x84\x4c\xe2\x48\x23\xeb\x40\x0b\x1b\xd9\xda\x78\x57\x23\x3b\x18\xdf\x2f\xbf\x86\x35\xed\x4f\xe6\xf2\xf4\xf5\x6a\x55\xb3\x10\xb0\xad\x52\x9c\x61\x80\xd4\x5e\x58\xed\x9d\x5c\x98\x73\xb1\xb8\xa2\xbf\x50\x57\xe2\xa6\x1f\x4b\x3e\xe8\xc6\x92\x29\x2f\xb3\x58\xbf\x1c\xc2\x4c\x7f\x82\x9e\xd4\x33\x54\xf7\x7a\xc5\x7a\xf9\xd7\xbf\xcc\xf4\xfd\xe7\xcb\xbf\xdc\x6a\x47\xa5\x68\x75\x42\xd1\x1c\x79\xa9\x06\xc1\xbf\x78\x61\xe0\xff\xf1\x42\xff\x73\x3b\x31\x2a\x45\xab\x13\x19\x4f\x86\x8e\x91\xc5\x7f\xe9\x91\x3f\x12\x78\x57\x64\x1b\x64\xa8\x1b\xfb\x98\x4d\x2b\xd6\x4d\x67\x29\x61\x09\x99\x65\xa8\xeb\x44\xc5\x81\xf1\xfb\x63\xb8\x4f\xa9\xe9\xfa\xcc\x32\x4d\xdf\xe8\xfb\xeb\x8c\xfc\x11\xb9\xbc\x6d\x5e\x75\x9f\x31\x29\x8a\xac\x6e\x15\x34\xed\x6a\x26\x6d\xb2\xa7\xdc\x7a\xce\xb1\xc6\x97\x03\xdb\x01\x4a\x6c\x93\xe3\xe6\xe7\xb7\x34\x33\xad\x99\x8f\x7a\x5e\x55\x10\x53\xdd\x9a\xbc\xb2\x64\xf9\x83\x4e\xe5\x8a\xaa\xfe\xb1\x22\x72\x9d\x4f\xff\x11\xae\xf9\x63\xb1\x49\xd4\xa2\xdf\x04\x81\xe4\x9c\xe9\x48\xd8\x1c\x6e\x1c\x43\xb1\x39\xdc\x28\x04\xff\x81\x91\xaa\x4f\x37\x02\x82\x72\x37\xa4\xbd\x1c\x7d\x38\x76\x7b\x71\x73\x14\xca\xc0\x4f\x21\xb6\x6b\xcd\x9c\x4b\x51\x94\xde\xaf\x14\x10\x97\x42\x27\xa2\x39\x61\x24\xc1\xb8\xf9\x5d\x6f\x47\x9f\xf1\x9f\xad\xdc\xf6\x6a\xc2\xfc\xc7\x86\x46\xeb\x77\xb3\x26\xb1\x4b\xa5\x39\xf8\xb3\x3e\x98\xf6\xc4\x66\xe6\x53\xbf\xc3\xe5\x72\x52\x5d\xb6\x4d\xde\x35\xce\x0c\x9b\x9f\x3d\x7d\x4b\xfc\xd3\xeb\xea\x18\x2e\xd5\x56\xae\x3e\x8b\x01\x7b\x3a\x65\x1d\x43\xd6\x68\x5b\xa8\x2e\x9f\xcb\x90\x3d\x9d\x32\x3d\x64\x07\x07\xdf\x0f\xfe\x1f\x00\x00\xff\xff\x94\x9f\xee\x21\x20\x38\x00\x00")
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
 	return bindataRead(
@@ -112,7 +112,7 @@
 		return nil, err
 	}
 
-	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 16037, mode: os.FileMode(420), modTime: time.Unix(1514922051, 0)}
+	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 14368, mode: os.FileMode(420), modTime: time.Unix(1515166936, 0)}
 	a := &asset{bytes: bytes, info: info}
 	return a, nil
 }
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index 62caf09..dcdd75e 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -16,64 +16,60 @@
     "translation": "Info"
   },
   {
-    "id": "Missing cmd key",
-    "translation": "Missing 'cmd' input key"
+    "id": "msg_json_missing_cmd_key",
+    "translation": "JSON input data Missing 'cmd' key"
   },
   {
-    "id": "authorization `KEY`",
-    "translation": "authorization `KEY`"
-  },
-  {
-    "id": "whisk API `HOST`",
-    "translation": "whisk API `HOST`"
-  },
-  {
-    "id": "namespace",
+    "id": "msg_cmd_flag_namespace",
     "translation": "namespace"
   },
   {
-    "id": "whisk API `VERSION`",
+    "id": "msg_cmd_flag_auth_key",
+    "translation": "authorization `KEY`"
+  },
+  {
+    "id": "msg_cmd_flag_api_host",
+    "translation": "whisk API `HOST`"
+  },
+  {
+    "id": "msg_cmd_flag_api_version",
     "translation": "whisk API `VERSION`"
   },
   {
-    "id": "Manifest file not found at path {{.projectPath}}.\n",
-    "translation": "Manifest file not found at path {{.projectPath}}.\n"
+    "id": "msg_cmd_flag_key_file",
+    "translation": "path of the .key file"
   },
   {
-    "id": "Missing {{.yaml}}/{{.yml}} file. Manifest file not found at path {{.projectPath}}.\n",
-    "translation": "Missing {{.yaml}}/{{.yml}} file. Manifest file not found at path {{.projectPath}}.\n"
+    "id": "msg_cmd_flag_cert_file",
+    "translation": "path of the .cert file"
   },
   {
-    "id": "Manifest file is not found at the path [{{.filePath}}].\n",
-    "translation": "Manifest file is not found at the path [{{.filePath}}].\n"
+    "id": "msg_manifest_not_found",
+    "translation": "Manifest file not found at path [{{.path}}].\n"
   },
   {
-    "id": "Using {{.manifestPath}} for deployment.\n",
-    "translation": "Using {{.manifestPath}} for deployment.\n"
+    "id": "msg_using_manifest_deploy",
+    "translation": "Using [{{.path}}] for deployment.\n"
   },
   {
-    "id": "Using {{.manifestPath}} for undeployment.\n",
-    "translation": "Using {{.manifestPath}} for undeployment.\n"
+    "id": "msg_using_manifest_undeploy",
+    "translation": "Using [{{.path}}] for undeployment.\n"
   },
   {
-    "id": "the runtime is not supported by Openwhisk platform.\n",
-    "translation": "the runtime is not supported by Openwhisk platform.\n"
+    "id": "msg_runtime_mismatch",
+    "translation": "Runtime [{{.runtime}}] specified in manifest does not match with action source file extension [{{.ext}}] for action [{{.action}}].\n"
   },
   {
-    "id": "WARNING: Runtime specified in manifest YAML {{.runtime}} does not match with action source file extension {{.ext}} for action {{.action}}.\n",
-    "translation": "WARNING: Runtime specified in manifest YAML {{.runtime}} does not match with action source file extension {{.ext}} for action {{.action}}.\n"
+    "id": "msg_runtime_changed",
+    "translation": "Runtime changed to [{{.runtime}}] based on the action source file extension for action [{{.action}}].\n"
   },
   {
-    "id": "WARNING: Whisk Deploy has chosen appropriate runtime {{.runtime}} based on the action source file extension for that action {{.action}}.\n",
-    "translation": "WARNING: Whisk Deploy has chosen appropriate runtime {{.runtime}} based on the action source file extension for that action {{.action}}.\n"
+    "id": "msg_runtime_unsupported",
+    "translation": "Runtime [{{.runtime}}] specified in manifest is not supported for the action [{{.action}}].\n"
   },
   {
-    "id": "WARNING: Runtime specified in manifest YAML {{.runtime}} is not supported by OpenWhisk server for the action {{.action}}.\n",
-    "translation": "WARNING: Runtime specified in manifest YAML {{.runtime}} is not supported by OpenWhisk server for the action {{.action}}.\n"
-  },
-  {
-    "id": "Unsupported runtime type, set to nodejs",
-    "translation": "Unsupported runtime type, set to nodejs"
+    "id": "msg_action_limit_ignored",
+    "translation": "Invalid action limit [{{.limit}}] in manifest is ignored.\n"
   },
   {
     "id": "The authentication key is not configured.\n",
@@ -316,30 +312,10 @@
     "translation": "logSize of limits in manifest should be an integer between 0 and 10.\n"
   },
   {
-    "id": "WARNING: Invalid limitation 'timeout' of action in manifest is ignored. Please check errors.\n",
-    "translation": "WARNING: Invalid limitation 'timeout' of action in manifest is ignored. Please check errors.\n"
-  },
-  {
-    "id": "WARNING: Invalid limitation 'memorySize' of action in manifest is ignored. Please check errors.\n",
-    "translation": "WARNING: Invalid limitation 'memorySize' of action in manifest is ignored. Please check errors.\n"
-  },
-  {
-    "id": "WARNING: Invalid limitation 'logSize' of action in manifest is ignored. Please check errors.\n",
-    "translation": "WARNING: Invalid limitation 'logSize' of action in manifest is ignored. Please check errors.\n"
-  },
-  {
     "id": "WARNING: Limits  {{.limitname}}  is not changable as to now, which will be ignored.\n",
     "translation": "WARNING: Limits  {{.limitname}}  is not changable as to now, which will be ignored.\n"
   },
   {
-    "id": "path of the .key file",
-    "translation": "path of the .key file"
-  },
-  {
-    "id": "path of the .cert file",
-    "translation": "path of the .cert file"
-  },
-  {
     "id": "The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}].",
     "translation": "The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}]."
   },
diff --git a/wskprint/console.go b/wskprint/console.go
index 284827b..ccf6653 100644
--- a/wskprint/console.go
+++ b/wskprint/console.go
@@ -19,6 +19,7 @@
 
 import (
 	"fmt"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 	"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
 	"github.com/fatih/color"
 	"github.com/mattn/go-colorable"
@@ -26,17 +27,11 @@
 
 const(
 	STR_PREFIXED_MESSAGE = "%s: %s"
-
-	// IDs match those used to look up i18n strings from en_US.all.json
-	ID_I18B_PREFIX_ERROR 	= "msg_prefix_error"
-	ID_I18B_PREFIX_WARNING	= "msg_prefix_warning"
-	ID_I18B_PREFIX_SUCCESS	= "msg_prefix_success"
-	ID_I18B_PREFIX_INFO	= "msg_prefix_info"
 )
 
 func PrintOpenWhiskError(message string) {
 	outputStream := colorable.NewColorableStderr()
-	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(ID_I18B_PREFIX_ERROR), message)
+	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(wski18n.ID_MSG_PREFIX_ERROR), message)
 	fmt.Fprintf(outputStream, color.RedString(fmsg))
 }
 
@@ -50,7 +45,7 @@
 
 func PrintOpenWhiskWarning(message string) {
 	outputStream := colorable.NewColorableStdout()
-	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(ID_I18B_PREFIX_WARNING), message)
+	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(wski18n.ID_MSG_PREFIX_WARNING), message)
 	fmt.Fprintf(outputStream, color.YellowString(fmsg))
 }
 
@@ -60,7 +55,7 @@
 
 func PrintOpenWhiskSuccess(message string) {
 	outputStream := colorable.NewColorableStdout()
-	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(ID_I18B_PREFIX_SUCCESS), message)
+	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(wski18n.ID_MSG_PREFIX_SUCCESS), message)
 	fmt.Fprintf(outputStream, color.GreenString(fmsg))
 }
 
@@ -70,7 +65,7 @@
 
 func PrintOpenWhiskStatus(message string) {
 	outputStream := colorable.NewColorableStdout()
-	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(ID_I18B_PREFIX_INFO), message)
+	fmsg := fmt.Sprintf( STR_PREFIXED_MESSAGE, wski18n.T(wski18n.ID_MSG_PREFIX_INFO), message)
 	fmt.Fprintf(outputStream, color.CyanString(fmsg))
 }
 
@@ -81,3 +76,7 @@
 func PrintlnOpenWhiskOutput(message string) {
    	fmt.Println(message)
 }
+
+func PrintOpenWhiskDebugInfo(message string) {
+	whisk.Debug(whisk.DbgInfo, message)
+}