openwhisk-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From houshen...@apache.org
Subject [incubator-openwhisk-wskdeploy] branch master updated: Use proper IDs when referencing i18n strings. (Base changes + phase 1 conversions) (#679)
Date Fri, 05 Jan 2018 16:42:50 GMT
This is an automated email from the ASF dual-hosted git repository.

houshengbo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-wskdeploy.git


The following commit(s) were added to refs/heads/master by this push:
     new a519826  Use proper IDs when referencing i18n strings. (Base changes + phase 1 conversions)
(#679)
a519826 is described below

commit a5198267764a616968848a3d56560a15ba3c500e
Author: Matt Rutkowski <mrutkows@us.ibm.com>
AuthorDate: Fri Jan 5 10:42:48 2018 -0600

    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
---
 cmd/root.go                      |  69 ++++----
 deployers/verifier.go            |   1 +
 parsers/manifest_parser.go       |  40 ++---
 wski18n/i18n.go                  |   7 +
 wski18n/i18n_ids.go              | 341 +++++++++++++++++++++++++++++++++++++++
 wski18n/i18n_resources.go        |   4 +-
 wski18n/resources/en_US.all.json |  78 ++++-----
 wskprint/console.go              |  19 ++-
 8 files changed, 440 insertions(+), 119 deletions(-)

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 @@ import (
 
 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 @@ func Execute() {
 		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 @@ func substCmdArgs() error {
 		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 @@ func init() {
 	// 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 @@ func init() {
 	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 @@ func initConfig() {
 		_, 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 @@ func Deploy() error {
 	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 @@ func Deploy() error {
 		}
 
 	} 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 @@ func Undeploy() error {
 	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 @@ func Undeploy() error {
 		}
 
 	} 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 @@ func (vf *Verifier) Filter(deployer *ServiceDeployer, target *DeploymentProject)
 	}
 
 	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 @@ import (
 	"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 @@ func (dm *YAMLParser) ComposeDependencies(pkg Package, projectPath string,
fileP
 
 			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 @@ func (dm *YAMLParser) ComposeAllPackages(manifest *YAML, filePath string,
ma whi
 	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 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
 					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 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
 			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 SUPPORTED_LOCALES = []string{
 
 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 @@ func init() {
     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 @@ func loadFromAsset(locale string) (err error) {
     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 @@ func normalize(locale string) string {
     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 @@ func isSupported(locale string) bool {
     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 @@ func wski18nResourcesDe_deAllJson() (*asset, error) {
 	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
[...]
+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
[...]
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
 	return bindataRead(
@@ -112,7 +112,7 @@ func wski18nResourcesEn_usAllJson() (*asset, error) {
 		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": "msg_cmd_flag_namespace",
+    "translation": "namespace"
   },
   {
-    "id": "whisk API `HOST`",
-    "translation": "whisk API `HOST`"
+    "id": "msg_cmd_flag_auth_key",
+    "translation": "authorization `KEY`"
   },
   {
-    "id": "namespace",
-    "translation": "namespace"
+    "id": "msg_cmd_flag_api_host",
+    "translation": "whisk API `HOST`"
   },
   {
-    "id": "whisk API `VERSION`",
+    "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": "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_key_file",
+    "translation": "path of the .key 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_cmd_flag_cert_file",
+    "translation": "path of the .cert file"
   },
   {
-    "id": "Using {{.manifestPath}} for deployment.\n",
-    "translation": "Using {{.manifestPath}} for deployment.\n"
+    "id": "msg_manifest_not_found",
+    "translation": "Manifest file not found at path [{{.path}}].\n"
   },
   {
-    "id": "Using {{.manifestPath}} for undeployment.\n",
-    "translation": "Using {{.manifestPath}} for undeployment.\n"
+    "id": "msg_using_manifest_deploy",
+    "translation": "Using [{{.path}}] for deployment.\n"
   },
   {
-    "id": "the runtime is not supported by Openwhisk platform.\n",
-    "translation": "the runtime is not supported by Openwhisk platform.\n"
+    "id": "msg_using_manifest_undeploy",
+    "translation": "Using [{{.path}}] for undeployment.\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_mismatch",
+    "translation": "Runtime [{{.runtime}}] specified in manifest does not match with action
source file extension [{{.ext}}] 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_changed",
+    "translation": "Runtime changed to [{{.runtime}}] based on the action source file extension
for 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": "msg_runtime_unsupported",
+    "translation": "Runtime [{{.runtime}}] specified in manifest is not supported 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 @@ package wskprint
 
 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 @@ import (
 
 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 PrintOpenWhiskFromError(err error) {
 
 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 PrintlnOpenWhiskWarning(message string) {
 
 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 PrintlnOpenWhiskSuccess(message string) {
 
 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 PrintlnOpenWhiskStatus(message string) {
 func PrintlnOpenWhiskOutput(message string) {
    	fmt.Println(message)
 }
+
+func PrintOpenWhiskDebugInfo(message string) {
+	whisk.Debug(whisk.DbgInfo, message)
+}

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <commits@openwhisk.apache.org>'].

Mime
View raw message