houshengbo closed pull request #687: Phase 3 of i18n readiness and conversion 
to IDs
URL: https://github.com/apache/incubator-openwhisk-wskdeploy/pull/687
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index 39d15790..b382af5c 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -143,7 +143,7 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() 
error {
                // Project Name in manifest/deployment file is mandatory for 
managed deployments
                if deployer.ProjectName == "" {
                        errmsg := 
wski18n.T(wski18n.ID_ERR_MISSING_MANDATORY_KEY_X_key_X,
-                               map[string]interface{}{"key": "project name"})
+                               map[string]interface{}{"key": 
parsers.PROJECT_NAME})
 
                        return 
wskderrors.NewYAMLFileFormatError(manifest.Filepath, errmsg)
                }
@@ -179,8 +179,11 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() 
error {
 
        // (TODO) delete this warning after deprecating application in manifest 
file
        if manifest.Application.Name != "" {
-               
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
-                       map[string]interface{}{"oldkey": "application", 
"newkey": "project", "filetype": "manifest"}))
+               
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+                       map[string]interface{}{
+                               "oldkey": parsers.YAML_KEY_APPLICATION,
+                               "newkey": parsers.YAML_KEY_PROJECT,
+                               "filetype": "manifest"}))
        }
 
        // process deployment file
@@ -194,8 +197,11 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() 
error {
 
                // (TODO) delete this warning after deprecating application in 
deployment file
                if deploymentReader.DeploymentDescriptor.Application.Name != "" 
{
-                       
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
-                               map[string]interface{}{"oldkey": "application", 
"newkey": "project", "filetype": "deployment"}))
+                       
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+                               map[string]interface{}{
+                                       "oldkey": parsers.YAML_KEY_APPLICATION,
+                                       "newkey": parsers.YAML_KEY_PROJECT,
+                                       "filetype": "deployment"}))
                }
 
                // compare the name of the project
@@ -204,7 +210,7 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() 
error {
                        if projectNameDeploy != projectName {
                                errorString := 
wski18n.T(wski18n.ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X,
                                        map[string]interface{}{
-                                               "key": "project",
+                                               "key": parsers.YAML_KEY_PROJECT,
                                                "dname": projectNameDeploy,
                                                "dpath": 
deployer.DeploymentPath,
                                                "mname": projectName,
@@ -261,8 +267,11 @@ func (deployer *ServiceDeployer) 
ConstructUnDeploymentPlan() (*DeploymentProject
 
        // (TODO) delete this warning after deprecating application in manifest 
file
        if manifest.Application.Name != "" {
-               
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
-                       map[string]interface{}{"oldkey": "application", 
"newkey": "project", "filetype": "manifest"}))
+               
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+                       map[string]interface{}{
+                               "oldkey": parsers.YAML_KEY_APPLICATION,
+                               "newkey": parsers.YAML_KEY_PROJECT,
+                               "filetype": "manifest"}))
        }
 
        // process deployment file
@@ -275,8 +284,11 @@ func (deployer *ServiceDeployer) 
ConstructUnDeploymentPlan() (*DeploymentProject
 
                // (TODO) delete this warning after deprecating application in 
deployment file
                if deploymentReader.DeploymentDescriptor.Application.Name != "" 
{
-                       
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
-                               map[string]interface{}{"oldkey": "application", 
"newkey": "project", "filetype": "deployment"}))
+                       
wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+                               map[string]interface{}{
+                                       "oldkey": parsers.YAML_KEY_APPLICATION,
+                                       "newkey": parsers.YAML_KEY_PROJECT,
+                                       "filetype": "deployment"}))
                }
 
                // compare the name of the application
@@ -285,7 +297,7 @@ func (deployer *ServiceDeployer) 
ConstructUnDeploymentPlan() (*DeploymentProject
                        if projectNameDeploy != projectName {
                                errorString := 
wski18n.T(wski18n.ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X,
                                        map[string]interface{}{
-                                               "key": "project",
+                                               "key": parsers.YAML_KEY_PROJECT,
                                                "dname": projectNameDeploy,
                                                "dpath": 
deployer.DeploymentPath,
                                                "mname": projectName,
@@ -530,9 +542,9 @@ func (deployer *ServiceDeployer) 
RefreshManagedActions(packageName string, ma ma
 
                                output := 
wski18n.T(wski18n.ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
                                        map[string]interface{}{
-                                               "key": "action",
-                                               "name": actionName,
-                                               "project": 
aa[utils.OW_PROJECT_NAME]})
+                                               wski18n.KEY_KEY: 
parsers.YAML_KEY_ACTION,
+                                               wski18n.KEY_NAME: actionName,
+                                               wski18n.KEY_PROJECT: 
aa[utils.OW_PROJECT_NAME]})
                                wskprint.PrintOpenWhiskWarning(output)
 
                                var err error
@@ -571,7 +583,7 @@ func (deployer *ServiceDeployer) RefreshManagedTriggers(ma 
map[string]interface{
                                // we have found a trigger which was earlier 
part of the current project
                                output := 
wski18n.T(wski18n.ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
                                        map[string]interface{}{
-                                               "key": "trigger",
+                                               "key": parsers.YAML_KEY_TRIGGER,
                                                "name": trigger.Name,
                                                "project": 
ma[utils.OW_PROJECT_NAME]})
                                wskprint.PrintOpenWhiskWarning(output)
@@ -623,7 +635,7 @@ func (deployer *ServiceDeployer) RefreshManagedPackages(ma 
map[string]interface{
                        if pa[utils.OW_PROJECT_NAME] == 
ma[utils.OW_PROJECT_NAME] && pa[utils.OW_PROJECT_HASH] != 
ma[utils.OW_PROJECT_HASH] {
                                output := 
wski18n.T(wski18n.ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
                                        map[string]interface{}{
-                                               "key": "package",
+                                               "key": parsers.YAML_KEY_PACKAGE,
                                                "name": pkg.Name,
                                                "project": 
pa[utils.OW_PROJECT_NAME]})
                                wskprint.PrintOpenWhiskWarning(output)
@@ -739,13 +751,13 @@ func (deployer *ServiceDeployer) createBinding(packa 
*whisk.BindingPackage) erro
                return createWhiskClientError(err.(*whisk.WskError), response, 
"package binding", true)
        }
 
-       displayPostprocessingInfo("package binding", packa.Name, true)
+       displayPostprocessingInfo(parsers.PACKAGE_BINDING, packa.Name, true)
        return nil
 }
 
 func (deployer *ServiceDeployer) createPackage(packa *whisk.Package) error {
 
-       displayPreprocessingInfo("package", packa.Name, true)
+       displayPreprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, true)
 
        var err error
        var response *http.Response
@@ -754,16 +766,16 @@ func (deployer *ServiceDeployer) createPackage(packa 
*whisk.Package) error {
                return err
        })
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"package", true)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_PACKAGE, true)
        }
 
-       displayPostprocessingInfo("package", packa.Name, true)
+       displayPostprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, true)
        return nil
 }
 
 func (deployer *ServiceDeployer) createTrigger(trigger *whisk.Trigger) error {
 
-       displayPreprocessingInfo("trigger", trigger.Name, true)
+       displayPreprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, true)
 
        var err error
        var response *http.Response
@@ -772,16 +784,16 @@ func (deployer *ServiceDeployer) createTrigger(trigger 
*whisk.Trigger) error {
                return err
        })
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"trigger", true)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_TRIGGER, true)
        }
 
-       displayPostprocessingInfo("trigger", trigger.Name, true)
+       displayPostprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, true)
        return nil
 }
 
 func (deployer *ServiceDeployer) createFeedAction(trigger *whisk.Trigger, 
feedName string) error {
 
-       displayPreprocessingInfo("trigger feed", trigger.Name, true)
+       displayPreprocessingInfo(parsers.TRIGGER_FEED, trigger.Name, true)
 
        // to hold and modify trigger parameters, not passed by ref?
        params := make(map[string]interface{})
@@ -791,6 +803,7 @@ func (deployer *ServiceDeployer) createFeedAction(trigger 
*whisk.Trigger, feedNa
                params[keyVal.Key] = keyVal.Value
        }
 
+       // TODO() defone keys and lifecylce operation names as const
        params["authKey"] = deployer.ClientConfig.AuthToken
        params["lifecycleEvent"] = "CREATE"
        params["triggerName"] = "/" + deployer.Client.Namespace + "/" + 
trigger.Name
@@ -821,7 +834,7 @@ func (deployer *ServiceDeployer) createFeedAction(trigger 
*whisk.Trigger, feedNa
                return err
        })
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"trigger feed", true)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.TRIGGER_FEED, true)
        } else {
 
                qName, err := utils.ParseQualifiedName(feedName, 
deployer.ClientConfig.Namespace)
@@ -846,16 +859,16 @@ func (deployer *ServiceDeployer) createFeedAction(trigger 
*whisk.Trigger, feedNa
                                return err
                        })
 
-                       return createWhiskClientError(err.(*whisk.WskError), 
response, "trigger feed", false)
+                       return createWhiskClientError(err.(*whisk.WskError), 
response, parsers.TRIGGER_FEED, false)
                }
        }
 
-       displayPostprocessingInfo("trigger feed", trigger.Name, true)
+       displayPostprocessingInfo(parsers.TRIGGER_FEED, trigger.Name, true)
        return nil
 }
 
 func (deployer *ServiceDeployer) createRule(rule *whisk.Rule) error {
-       displayPreprocessingInfo("rule", rule.Name, true)
+       displayPreprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, true)
 
        // The rule's trigger should include the namespace with pattern 
/namespace/trigger
        rule.Trigger = deployer.getQualifiedName(rule.Trigger.(string), 
deployer.ClientConfig.Namespace)
@@ -879,10 +892,10 @@ func (deployer *ServiceDeployer) createRule(rule 
*whisk.Rule) error {
        })
 
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"rule", true)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_RULE, true)
        }
 
-       displayPostprocessingInfo("rule", rule.Name, true)
+       displayPostprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, true)
        return nil
 }
 
@@ -894,7 +907,7 @@ func (deployer *ServiceDeployer) createAction(pkgname 
string, action *whisk.Acti
                action.Name = strings.Join([]string{pkgname, action.Name}, "/")
        }
 
-       displayPreprocessingInfo("action", action.Name, true)
+       displayPreprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, true)
 
        var err error
        var response *http.Response
@@ -904,17 +917,17 @@ func (deployer *ServiceDeployer) createAction(pkgname 
string, action *whisk.Acti
        })
 
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"action", true)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_ACTION, true)
        }
 
-       displayPostprocessingInfo("action", action.Name, true)
+       displayPostprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, true)
        return nil
 }
 
 // create api (API Gateway functionality)
 func (deployer *ServiceDeployer) createApi(api *whisk.ApiCreateRequest) error {
 
-       displayPreprocessingInfo("api", api.ApiDoc.ApiName, true)
+       displayPreprocessingInfo(parsers.YAML_KEY_API, api.ApiDoc.ApiName, true)
 
        var err error
        var response *http.Response
@@ -926,10 +939,10 @@ func (deployer *ServiceDeployer) createApi(api 
*whisk.ApiCreateRequest) error {
        })
 
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"api", true)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_API, true)
        }
 
-       displayPostprocessingInfo("api", api.ApiDoc.ApiName, true)
+       displayPostprocessingInfo(parsers.YAML_KEY_API, api.ApiDoc.ApiName, 
true)
        return nil
 }
 
@@ -1043,7 +1056,7 @@ func (deployer *ServiceDeployer) UnDeployDependencies() 
error {
                                                        return err
                                                })
                                                if err != nil {
-                                                       return 
createWhiskClientError(err.(*whisk.WskError), response, "package binding", 
false)
+                                                       return 
createWhiskClientError(err.(*whisk.WskError), response, 
parsers.PACKAGE_BINDING, false)
                                                }
                                        }
                                }
@@ -1136,7 +1149,7 @@ func (deployer *ServiceDeployer) UnDeployRules(deployment 
*DeploymentProject) er
 
 func (deployer *ServiceDeployer) deletePackage(packa *whisk.Package) error {
 
-       displayPreprocessingInfo("package", packa.Name, false)
+       displayPreprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, false)
 
        if _, _, ok := deployer.Client.Packages.Get(packa.Name); ok == nil {
                var err error
@@ -1147,16 +1160,16 @@ func (deployer *ServiceDeployer) deletePackage(packa 
*whisk.Package) error {
                })
 
                if err != nil {
-                       return createWhiskClientError(err.(*whisk.WskError), 
response, "package", false)
+                       return createWhiskClientError(err.(*whisk.WskError), 
response, parsers.YAML_KEY_PACKAGE, false)
                }
        }
-       displayPostprocessingInfo("package", packa.Name, false)
+       displayPostprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, false)
        return nil
 }
 
 func (deployer *ServiceDeployer) deleteTrigger(trigger *whisk.Trigger) error {
 
-       displayPreprocessingInfo("trigger", trigger.Name, false)
+       displayPreprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, false)
 
        var err error
        var response *http.Response
@@ -1166,16 +1179,17 @@ func (deployer *ServiceDeployer) deleteTrigger(trigger 
*whisk.Trigger) error {
        })
 
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"trigger", false)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_TRIGGER, false)
        }
 
-       displayPostprocessingInfo("trigger", trigger.Name, false)
+       displayPostprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, false)
        return nil
 }
 
 func (deployer *ServiceDeployer) deleteFeedAction(trigger *whisk.Trigger, 
feedName string) error {
 
        params := make(whisk.KeyValueArr, 0)
+       // TODO() define keys and operations as const
        params = append(params, whisk.KeyValue{Key: "authKey", Value: 
deployer.ClientConfig.AuthToken})
        params = append(params, whisk.KeyValue{Key: "lifecycleEvent", Value: 
"DELETE"})
        params = append(params, whisk.KeyValue{Key: "triggerName", Value: "/" + 
deployer.Client.Namespace + "/" + trigger.Name})
@@ -1202,7 +1216,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger 
*whisk.Trigger, feedNa
 
        if err != nil {
                wskErr := err.(*whisk.WskError)
-               errString := wski18n.T("Failed to invoke the feed when deleting 
trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
+               errString := 
wski18n.T(wski18n.ID_ERR_FEED_INVOKE_X_err_X_code_X,
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
                return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode, response)
@@ -1216,7 +1230,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger 
*whisk.Trigger, feedNa
                })
 
                if err != nil {
-                       return createWhiskClientError(err.(*whisk.WskError), 
response, "trigger", false)
+                       return createWhiskClientError(err.(*whisk.WskError), 
response, parsers.YAML_KEY_TRIGGER, false)
                }
        }
 
@@ -1225,7 +1239,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger 
*whisk.Trigger, feedNa
 
 func (deployer *ServiceDeployer) deleteRule(rule *whisk.Rule) error {
 
-       displayPreprocessingInfo("rule", rule.Name, false)
+       displayPreprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, false)
 
        var err error
        var response *http.Response
@@ -1235,9 +1249,9 @@ func (deployer *ServiceDeployer) deleteRule(rule 
*whisk.Rule) error {
        })
 
        if err != nil {
-               return createWhiskClientError(err.(*whisk.WskError), response, 
"rule", false)
+               return createWhiskClientError(err.(*whisk.WskError), response, 
parsers.YAML_KEY_RULE, false)
        }
-       displayPostprocessingInfo("rule", rule.Name, false)
+       displayPostprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, false)
        return nil
 }
 
@@ -1249,7 +1263,7 @@ func (deployer *ServiceDeployer) deleteAction(pkgname 
string, action *whisk.Acti
                action.Name = strings.Join([]string{pkgname, action.Name}, "/")
        }
 
-       displayPreprocessingInfo("action", action.Name, false)
+       displayPreprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, false)
 
        if _, _, ok := deployer.Client.Actions.Get(action.Name); ok == nil {
                var err error
@@ -1260,11 +1274,11 @@ func (deployer *ServiceDeployer) deleteAction(pkgname 
string, action *whisk.Acti
                })
 
                if err != nil {
-                       return createWhiskClientError(err.(*whisk.WskError), 
response, "action", false)
+                       return createWhiskClientError(err.(*whisk.WskError), 
response, parsers.YAML_KEY_ACTION, false)
 
                }
        }
-       displayPostprocessingInfo("action", action.Name, false)
+       displayPostprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, false)
        return nil
 }
 
@@ -1311,6 +1325,7 @@ func (deployer *ServiceDeployer) 
printDeploymentAssets(assets *DeploymentProject
        // TODO() move to separate function and suppress using some flag
        wskprint.PrintlnOpenWhiskOutput("         ____      ___                 
  _    _ _     _     _\n        /\\   \\    / _ \\ _ __   ___ _ __ | |  | | |__ 
(_)___| | __\n   /\\  /__\\   \\  | | | | '_ \\ / _ \\ '_ \\| |  | | '_ \\| / 
__| |/ /\n  /  \\____ \\  /  | |_| | |_) |  __/ | | | |/\\| | | | | \\__ \\   
<\n  \\   \\  /  \\/    \\___/| .__/ \\___|_| |_|__/\\__|_| |_|_|___/_|\\_\\ \n 
  \\___\\/              |_|\n")
 
+       // TODO() review format
        wskprint.PrintlnOpenWhiskOutput("Packages:")
        for _, pack := range assets.Packages {
                wskprint.PrintlnOpenWhiskOutput("Name: " + pack.Package.Name)
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 5aac11fe..82a4b526 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -23,14 +23,13 @@ import (
        "os"
        "path"
        "strings"
-
        "encoding/base64"
-
        "fmt"
+       "gopkg.in/yaml.v2"
+
        "github.com/apache/incubator-openwhisk-client-go/whisk"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
        "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
-       "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"
@@ -78,6 +77,7 @@ func (dm *YAMLParser) Unmarshal(input []byte, manifest *YAML) 
error {
 func (dm *YAMLParser) marshal(manifest *YAML) (output []byte, err error) {
        data, err := yaml.Marshal(manifest)
        if err != nil {
+               // TODO() i18n
                fmt.Printf("err happened during marshal :%v", err)
                return nil, err
        }
@@ -136,7 +136,8 @@ func (dm *YAMLParser) ComposeDependencies(pkg Package, 
projectPath string, fileP
        for key, dependency := range pkg.Dependencies {
                version := dependency.Version
                if version == "" {
-                       version = "master"
+                       // TODO() interactive ask for branch, AND consider YAML 
specification to allow key for branch
+                       version = YAML_VALUE_BRANCH_MASTER
                }
 
                location := dependency.Location
@@ -151,6 +152,7 @@ func (dm *YAMLParser) ComposeDependencies(pkg Package, 
projectPath string, fileP
                        isBinding = true
                } else if utils.LocationIsGithub(location) {
 
+                       // TODO() define const for the protocol prefix, etc.
                        if !strings.HasPrefix(location, "https://";) && 
!strings.HasPrefix(location, "http://";) {
                                location = "https://"; + dependency.Location
                        }
@@ -240,23 +242,42 @@ func (dm *YAMLParser) ComposePackage(pkg Package, 
packageName string, filePath s
        //Version is a mandatory value
        //If it is an empty string, it will be set to default value
        //And print an warning message
+       // TODO(#673) implement STRICT flag
        if pkg.Version == "" {
-               warningString := wski18n.T("WARNING: Mandatory field Package 
Version must be set.\n")
-               whisk.Debug(whisk.DbgWarn, warningString)
-               warningString = wski18n.T("WARNING: Package Version is not 
saved in the current wskdeploy version.\n")
-               whisk.Debug(whisk.DbgWarn, warningString)
-               pkg.Version = "0.0.1"
+               warningString := wski18n.T(
+                       wski18n.ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X,
+                       map[string]interface{}{
+                               wski18n.KEY_KEY: PACKAGE_VERSION,
+                               wski18n.KEY_VALUE: DEFAULT_PACKAGE_VERSION})
+               wskprint.PrintOpenWhiskWarning(warningString)
+
+               warningString = wski18n.T(
+                       wski18n.ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
+                       map[string]interface{}{wski18n.KEY_KEY: 
PACKAGE_VERSION})
+
+               wskprint.PrintOpenWhiskWarning(warningString)
+               pkg.Version = DEFAULT_PACKAGE_VERSION
        }
 
        //License is a mandatory value
        //set license to unknown if it is an empty string
        //And print an warning message
+       // TODO(#673) implement STRICT flag
        if pkg.License == "" {
-               warningString := wski18n.T("WARNING: Mandatory field Package 
License must be set.\n")
-               whisk.Debug(whisk.DbgWarn, warningString)
-               warningString = wski18n.T("WARNING: Package License is not 
saved in the current wskdeploy version.\n")
-               whisk.Debug(whisk.DbgWarn, warningString)
-               pkg.License = "unlicensed"
+               warningString := wski18n.T(
+                       wski18n.ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X,
+                       map[string]interface{}{
+                               wski18n.KEY_KEY: PACKAGE_LICENSE,
+                               wski18n.KEY_VALUE: DEFAULT_PACKAGE_LICENSE})
+               wskprint.PrintOpenWhiskWarning(warningString)
+
+               warningString = wski18n.T(
+                       wski18n.ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
+                       map[string]interface{}{wski18n.KEY_KEY: 
PACKAGE_VERSION})
+
+               wskprint.PrintOpenWhiskWarning(warningString)
+
+               pkg.License = DEFAULT_PACKAGE_LICENSE
        } else {
                utils.CheckLicense(pkg.License)
        }
@@ -334,7 +355,7 @@ func (dm *YAMLParser) ComposeSequences(namespace string, 
sequences map[string]Se
        for key, sequence := range sequences {
                wskaction := new(whisk.Action)
                wskaction.Exec = new(whisk.Exec)
-               wskaction.Exec.Kind = "sequence"
+               wskaction.Exec.Kind = YAML_KEY_SEQUENCE
                actionList := strings.Split(sequence.Actions, ",")
 
                var components []string
@@ -402,6 +423,7 @@ func (dm *YAMLParser) 
ComposeActionsFromAllPackages(manifest *YAML, filePath str
 
 func (dm *YAMLParser) ComposeActions(filePath string, actions 
map[string]Action, packageName string, ma whisk.KeyValue) 
([]utils.ActionRecord, error) {
 
+       // TODO() i18n
        const RUNTIME_ERR_MESSAGE = "Please specify any of the supported 
runtime for zip actions in manifest YAML."
        var errorParser error
        var ext string
@@ -431,6 +453,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, 
actions map[string]Action,
                        filePath := strings.TrimRight(filePath, 
splitFilePath[len(splitFilePath)-1]) + action.Function
 
                        if utils.IsDirectory(filePath) {
+                               // TODO() define ext as const
                                zipName := filePath + ".zip"
                                err := utils.NewZipWritter(filePath, 
zipName).Zip()
                                if err != nil {
@@ -459,6 +482,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, 
actions map[string]Action,
                                // and its not explicitly specified in the 
manifest YAML file
                                // and action source is not a zip file
                                if len(kind) == 0 && len(action.Runtime) == 0 
&& ext != utils.ZIP_FILE_EXTENSION {
+                                       // TODO() i18n
                                        errMessage := "ERROR: Failed to 
discover runtime from the action source files. " + RUNTIME_ERR_MESSAGE
                                        return nil, 
wskderrors.NewInvalidRuntimeError(errMessage, 
splitFilePath[len(splitFilePath)-1], action.Name, "Not Specified in Manifest 
YAML", utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
                                }
@@ -475,6 +499,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, 
actions map[string]Action,
                                        code = 
base64.StdEncoding.EncodeToString([]byte(dat))
                                }
                                if ext == utils.ZIP_FILE_EXTENSION && 
len(action.Runtime) == 0 {
+                                       // TODO() i18n
                                        errMessage := "ERROR: Runtime is 
missing for zip action. " + RUNTIME_ERR_MESSAGE
                                        return nil, 
wskderrors.NewInvalidRuntimeError(errMessage, 
splitFilePath[len(splitFilePath)-1], action.Name, "Not Specified in Manifest 
YAML", utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
                                }
@@ -581,6 +606,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, 
actions map[string]Action,
 
                // TODO{} add outputs as annotations (work to discuss 
officially supporting for compositions)
                if len(keyValArr) > 0 {
+                       // TODO() ?
                        //wskaction.Annotations  // TBD
                }
 
@@ -605,6 +631,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, 
actions map[string]Action,
                /*
                 *  Web Export
                 */
+               // TODO() add boolean value const
                if action.Webexport == "true" {
                        wskaction.Annotations, errorParser = 
utils.WebAction("yes", listOfAnnotations, false)
                        if errorParser != nil {
@@ -617,36 +644,40 @@ func (dm *YAMLParser) ComposeActions(filePath string, 
actions map[string]Action,
                 */
                if action.Limits!=nil {
                        wsklimits :=  new(whisk.Limits)
+
+                       // TODO() use LIMITS_SUPPORTED in yamlparser to 
enumerata through instead of hardcoding
+                       // perhaps change into a tuple
                        if utils.LimitsTimeoutValidation(action.Limits.Timeout) 
{
                                wsklimits.Timeout = action.Limits.Timeout
                        } else {
                                warningString := 
wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
-                                       map[string]interface{}{"limit": 
"timeout"})
+                                       
map[string]interface{}{wski18n.KEY_LIMIT: LIMIT_VALUE_TIMEOUT})
                                wskprint.PrintOpenWhiskWarning(warningString)
                        }
                        if utils.LimitsMemoryValidation(action.Limits.Memory) {
                                wsklimits.Memory = action.Limits.Memory
                        } else {
                                warningString := 
wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
-                                       map[string]interface{}{"limit": 
"memorySize"})
+                                       
map[string]interface{}{wski18n.KEY_LIMIT: LIMIT_VALUE_MEMORY_SIZE})
                                wskprint.PrintOpenWhiskWarning(warningString)
                        }
                        if utils.LimitsLogsizeValidation(action.Limits.Logsize) 
{
                                wsklimits.Logsize = action.Limits.Logsize
                        } else {
                                warningString := 
wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
-                                       map[string]interface{}{"limit": 
"logSize"})
+                                       
map[string]interface{}{wski18n.KEY_LIMIT: LIMIT_VALUE_LOG_SIZE})
                                wskprint.PrintOpenWhiskWarning(warningString)
                        }
                        if wsklimits.Timeout!=nil || wsklimits.Memory!=nil || 
wsklimits.Logsize!=nil {
                                wskaction.Limits = wsklimits
                        }
 
-                       //emit warning errors if these limits are not nil
-                       
utils.NotSupportLimits(action.Limits.ConcurrentActivations,"concurrentActivations")
-                       
utils.NotSupportLimits(action.Limits.UserInvocationRate,"userInvocationRate")
-                       
utils.NotSupportLimits(action.Limits.CodeSize,"codeSize")
-                       
utils.NotSupportLimits(action.Limits.ParameterSize,"parameterSize")
+                       // TODO() use LIMITS_UNSUPPORTED in yamlparser to 
enumerata through instead of hardcoding
+                       // emit warning errors if these limits are not nil
+                       
utils.NotSupportLimits(action.Limits.ConcurrentActivations, 
LIMIT_VALUE_CONCURRENT_ACTIVATIONS)
+                       
utils.NotSupportLimits(action.Limits.UserInvocationRate, 
LIMIT_VALUE_USER_INVOCATION_RATE)
+                       utils.NotSupportLimits(action.Limits.CodeSize, 
LIMIT_VALUE_CODE_SIZE)
+                       utils.NotSupportLimits(action.Limits.ParameterSize, 
LIMIT_VALUE_PARAMETER_SIZE)
                }
 
                wskaction.Name = key
@@ -696,10 +727,16 @@ func (dm *YAMLParser) ComposeTriggers(filePath string, 
pkg Package, ma whisk.Key
                pub := false
                wsktrigger.Publish = &pub
 
-               //print warning information when .Source is not empty
+               // print warning information when .Source key's value is not 
empty
                if trigger.Source != "" {
-                       warningString := wski18n.T("WARNING: The 'source' YAML 
key in trigger entity is deprecated. Please use 'feed' instead as described in 
specifications.\n")
-                       whisk.Debug(whisk.DbgWarn, warningString)
+                       // TODO() i18n use const for keys and values on string
+                       warningString := wski18n.T(
+                               
wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+                               map[string]interface{}{
+                                       wski18n.KEY_OLD: "source",
+                                       wski18n.KEY_NEW: YAML_KEY_FEED,
+                                       wski18n.KEY_FILE_TYPE: "manifest"})
+                       wskprint.PrintOpenWhiskWarning(warningString)
                }
                if trigger.Feed == "" {
                        trigger.Feed = trigger.Source
@@ -709,7 +746,7 @@ func (dm *YAMLParser) ComposeTriggers(filePath string, pkg 
Package, ma whisk.Key
                if trigger.Feed != "" {
                        var keyVal whisk.KeyValue
 
-                       keyVal.Key = "feed"
+                       keyVal.Key = YAML_KEY_FEED
                        keyVal.Value = trigger.Feed
 
                        keyValArr = append(keyValArr, keyVal)
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index 58cd46be..fd7a24c0 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -22,7 +22,66 @@ import (
        "github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
 )
 
-// structs that denotes the sample manifest.yaml, wrapped yaml.v2
+// YAML schema key names
+const(
+       YAML_KEY_PROJECT        = "project"
+       YAML_KEY_APPLICATION    = "application" // deprecated
+       YAML_KEY_PACKAGE        = "package"
+       YAML_KEY_ACTION         = "action"
+       YAML_KEY_TRIGGER        = "trigger"
+       YAML_KEY_RULE           = "rule"
+       YAML_KEY_FEED           = "feed"
+       YAML_KEY_API            = "api"
+       YAML_KEY_SEQUENCE       = "sequence"
+)
+
+// descriptive key names
+const (
+       PROJECT_NAME    = "project name"
+       PACKAGE_BINDING = "package binding"
+       PACKAGE_VERSION = "package version"
+       PACKAGE_LICENSE = "package license"
+       TRIGGER_FEED    = "trigger feed"
+)
+
+// YAML schema key values
+const(
+       YAML_VALUE_BRANCH_MASTER        = "master"
+)
+
+// default values
+const(
+       DEFAULT_PACKAGE_LICENSE = "unlicensed"
+       DEFAULT_PACKAGE_VERSION = "0.0.1"
+)
+
+// Known Limit values
+const(
+       // supported
+       LIMIT_VALUE_TIMEOUT                     = "timeout"
+       LIMIT_VALUE_MEMORY_SIZE                 = "memorySize"
+       LIMIT_VALUE_LOG_SIZE                    = "logSize"
+       // unsupported
+       LIMIT_VALUE_CONCURRENT_ACTIVATIONS      = "concurrentActivations"
+       LIMIT_VALUE_USER_INVOCATION_RATE        = "userInvocationRate"
+       LIMIT_VALUE_CODE_SIZE                   = "codeSize"
+       LIMIT_VALUE_PARAMETER_SIZE              = "parameterSize"
+)
+
+var LIMITS_SUPPORTED = [](string){
+       LIMIT_VALUE_TIMEOUT,
+       LIMIT_VALUE_MEMORY_SIZE,
+       LIMIT_VALUE_LOG_SIZE,
+}
+
+var LIMITS_UNSUPPORTED = [](string){
+       LIMIT_VALUE_CONCURRENT_ACTIVATIONS,
+       LIMIT_VALUE_USER_INVOCATION_RATE,
+       LIMIT_VALUE_CODE_SIZE,
+       LIMIT_VALUE_PARAMETER_SIZE,
+}
+
+// structs that denote the sample manifest.yaml, wrapped yaml.v2
 func NewYAMLParser() *YAMLParser {
        return &YAMLParser{}
 }
diff --git a/utils/validation.go b/utils/validation.go
index 1aaef6a7..9e17088c 100644
--- a/utils/validation.go
+++ b/utils/validation.go
@@ -19,10 +19,11 @@
 package utils
 
 import (
+       "strings"
        "encoding/json"
        "github.com/apache/incubator-openwhisk-client-go/whisk"
        "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
-       "strings"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
 )
 
 var LocalLicenseRecords = map[string][]string{
@@ -61,10 +62,13 @@ var license_json = LicenseJSON{}
 //Check local data record at first
 //Then check remote json data
 func CheckLicense(license string) bool {
+       // TODO(#673) Strict flag should cause an error to be generatd
        if !LicenseLocalValidation(license) && 
!LicenseRemoteValidation(license) {
-               warningString := wski18n.T("WARNING: License {{.licenseID}} is 
not a valid one.\n",
-                       map[string]interface{}{"licenseID": license})
-               whisk.Debug(whisk.DbgWarn, warningString)
+               warningString := wski18n.T(
+                       wski18n.ID_WARN_KEYVALUE_INVALID,
+                       map[string]interface{}{
+                               wski18n.KEY_KEY: license})
+               wskprint.PrintlnOpenWhiskWarning(warningString)
                return false
        }
        return true
@@ -135,8 +139,7 @@ func LimitsTimeoutValidation(timeout *int) bool {
                return true
        }
        if *timeout < 100 || *timeout > 300000 {
-               errString := wski18n.T("timeout of limits in manifest should be 
an integer between 100 and 300000.\n")
-               whisk.Debug(whisk.DbgError, errString)
+               
wskprint.PrintlnOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_LIMITS_TIMEOUT))
                return false
        }
        return true
@@ -149,8 +152,7 @@ func LimitsMemoryValidation(memory *int) bool {
                return true
        }
        if *memory < 128 || *memory > 512 {
-               errString := wski18n.T("memorySize of limits in manifest should 
be an integer between 128 and 512.\n")
-               whisk.Debug(whisk.DbgError, errString)
+               
wskprint.PrintlnOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_LIMITS_MEMORY_SIZE))
                return false
        }
        return true
@@ -163,8 +165,7 @@ func LimitsLogsizeValidation(logsize *int) bool {
                return true
        }
        if *logsize < 0 || *logsize > 10 {
-               errString := wski18n.T("logSize of limits in manifest should be 
an integer between 0 and 10.\n")
-               whisk.Debug(whisk.DbgError, errString)
+               
wskprint.PrintlnOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_LIMITS_LOG_SIZE))
                return false
        }
        return true
@@ -172,7 +173,9 @@ func LimitsLogsizeValidation(logsize *int) bool {
 
 func NotSupportLimits(value *int, name string) {
        if value != nil {
-               warningString := wski18n.T("WARNING: Limits {{.limitname}} is 
not changable, which will be ignored.\n", map[string]interface{}{"limitname": 
name})
-               whisk.Debug(whisk.DbgWarn, warningString)
+               warningString := wski18n.T(
+                       wski18n.ID_WARN_LIMIT_UNCHANGEABLE_X_name_X,
+                       map[string]interface{}{wski18n.KEY_NAME: name})
+               wskprint.PrintlnOpenWhiskWarning(warningString)
        }
 }
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index cbd75197..af599fae 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -92,8 +92,15 @@ const(
        ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X                   = 
"msg_action_limit_ignored"    // timeout, memorySize, logSize
 
        // warnings
-       ID_WARN_DEPRECATED_KEY_REPLACED                         = 
"msg_warn_key_deprecated_replaced"
+       ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X = 
"msg_warn_key_deprecated_replaced"
        ID_WARN_WHISK_PROPS_DEPRECATED                          = 
"msg_warn_whisk_properties"
+       ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X           = 
"msg_warn_missing_mandatory_key"
+       ID_WARN_KEYVALUE_NOT_SAVED_X_key_X                      = 
"msg_warn_key_value_not_saved"
+       ID_WARN_KEYVALUE_INVALID                                = 
"msg_warn_invalid_key_value"
+       ID_WARN_LIMITS_TIMEOUT                                  = 
"msg_warn_limits_timeout"
+       ID_WARN_LIMITS_MEMORY_SIZE                              = 
"msg_warn_limits_memory_size"
+       ID_WARN_LIMITS_LOG_SIZE                                 = 
"msg_warn_limits_memory_log_size"
+       ID_WARN_LIMIT_UNCHANGEABLE_X_name_X                     = 
"msg_warn_limit_changeable"
 
        // Errors
        ID_ERR_GET_RUNTIMES_X_err_X                             = 
"msg_err_get_runtimes"
@@ -101,7 +108,32 @@ const(
         ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X = 
"msg_err_mismatch_name_project"
        ID_ERR_CREATE_ENTITY_X_key_X_err_X_code_X               = 
"msg_err_create_entity"
        ID_ERR_DELETE_ENTITY_X_key_X_err_X_code_X               = 
"msg_err_delete_entity"
+       ID_ERR_FEED_INVOKE_X_err_X_code_X                       = 
"msg_err_feed_invoke"
+)
 
+// Known keys used for text replacement in i18n translated strings
+const(
+       KEY_KEY                 = "key"
+       KEY_VALUE               = "value"
+       KEY_NAME                = "name"
+       KEY_CODE                = "code"
+       KEY_ERR                 = "err"
+       KEY_PROJECT             = "project"
+       KEY_ACTION              = "action"
+       KEY_LIMIT               = "limit"
+       KEY_HOST                = "host"
+       KEY_SOURCE              = "source"
+       KEY_NAMESPACE           = "namespace"
+       KEY_PATH                = "path"
+       KEY_EXTENTION           = "ext"
+       KEY_RUNTIME             = "runtime"
+       KEY_DEPLOYMENT_NAME     = "dname"
+       KEY_DEPLOYMENT_PATH     = "dpath"
+       KEY_MANIFEST_NAME       = "mname"
+       KEY_MANIFEST_PATH       = "mpath"
+       KEY_OLD                 = "oldkey"
+       KEY_NEW                 = "newkey"
+       KEY_FILE_TYPE           = "filetype"
 )
 
 var I18N_ID_SET = [](string){
@@ -154,8 +186,15 @@ var I18N_ID_SET = [](string){
        ID_MSG_PROMPT_APIHOST,
        ID_MSG_PROMPT_NAMESPACE,
        ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
-       ID_WARN_DEPRECATED_KEY_REPLACED,
+       ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
        ID_WARN_WHISK_PROPS_DEPRECATED,
+       ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X,
+       ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
+       ID_WARN_KEYVALUE_INVALID,
+       ID_WARN_LIMITS_TIMEOUT,
+       ID_WARN_LIMITS_MEMORY_SIZE,
+       ID_WARN_LIMITS_LOG_SIZE,
+       ID_WARN_LIMIT_UNCHANGEABLE_X_name_X,
        ID_ERR_GET_RUNTIMES_X_err_X,
        ID_ERR_MISSING_MANDATORY_KEY_X_key_X,
        ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X,
diff --git a/wski18n/i18n_ids_test.go b/wski18n/i18n_ids_test.go
index dd2f07be..ac8c8284 100644
--- a/wski18n/i18n_ids_test.go
+++ b/wski18n/i18n_ids_test.go
@@ -1,3 +1,5 @@
+// +build unit
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 13178951..1a041853 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -92,12 +92,12 @@ func wski18nResourcesDe_deAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
 
-var _wski18nResourcesEn_usAllJson = 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x59\x51\x6f\x1b\xb9\x11\x7e\xf7\xaf\x18\xe4\xc5\x2d\x60\xa8\xc9\x15\x05\x8a\x00\x45\x61\xd4\x6e\xeb\xde\xc5\x36\xec\xe4\x82\x43\x2e\x58\xd3\xcb\xd9\x15\x4f\x5c\x72\x41\x72\xa5\xe8\x04\xfd\xf7\x62\xc8\xa5\xb4\xb2\xc5\xdd\x95\xe2\x5c\xfc\xb4\x16\x87\xdf\x37\x33\x24\x67\x86\xc3\x4f\x27\x00\xab\x13\x00\x80\x57\x82\xbf\x7a\x0b\xaf\x2a\x5b\x66\xb5\xc1\x42\x7c\xc9\xd0\x18\x6d\x5e\x9d\x85\x51\x67\x98\xb2\x92\x39\xa1\x15\x89\x5d\xfa\xb1\x13\x80\xf5\x59\x0f\xc2\x82\x19\x25\x54\x99\xc0\xf8\xd8\x8e\x0e\xa1\xd8\x26\xcf\xd1\xda\x04\xca\x7d\x3b\x3a\x84\x22\x54\xa1\x13\x10\x57\x34\x94\x9c\xff\x9b\xd5\x2a\xab\x84\xb5\x42\x95\x59\x5e\xf1\x6c\x86\xcb\x04\xd0\xff\xee\x6f\xae\x41\xa8\xba\x71\xc0\x99\x63\xf0\x2e\xcc\x82\xd3\xbc\xe2\xa7\x40\xf3\x92\x2c\x04\x5c\x48\x56\x66\x8a\x55\x68\x6b\x96\x63\x82\x63\x3b\x3e\x8c\xc5\x1a\x37\xed\x51\x97\x86\xb5\x11\xbf\xfb\x1f\xe0\xe1\xc7\xcb\x5f\x1e\xc6\x80\xd6\x22\x9b\x6a\xeb\x12\xa0\x8b\xa9\xb0\x33\x38\xbf\xbd\x82\x87\xff\xde\xdc\xbf\x1f\x8b\x38\x47\x63\x09\x61\x10\xf4\xe7\xcb\xbb\xfb\xab\x9b\xeb\x31\xb8\x33\x5c\x66\x85\x90\x29\x4f\xd6\xcc\x4d\x41\x17\xe0\xa6\x08\x93\x19\x2e\xc1\xcb\x0e\xc3\xe6\x68\xdc\x68\x5c\x12\x1e\x00\xae\x8d\xae\x6a\x97\x71\xac\xa5\x4e\x2d\xd5\x85\x86\xa5\x6e\xc0\x20\x93\x72\x09\x0b\xa6\x1c\x38\x0d\x61\x0a\xb8\xa9\xb0\xff\x84\x3f\x2d\xff\x72\xfd\xe7\xb7\x30\xc8\xd3\xa8\x23\x98\xe2\xa4\x03\xb9\x68\x87\xa5\xf7\xdf\xaf\xea\x56\x22\xb3\x08\xb5\xd1\x73\xc1\x11\x98\x02\x9a\x81\xca\x89\x3c\x6c\x4a\xa7\x67\xa8\xc6\x10\xd5\xa2\x67\x4f\x3e\x23\xa2\xa5\x21\x79\x3a\x4c\x50\x68\x03\x37\x35\xaa\x8f\xb4\xc9\x46\x70\x0d\x9d\xd0\xe7\x66\xc1\x66\x0a\x7c\xe2\x58\xb0\x46\x3a\x98\x33\xd9\x20\x08\x0b\x65\x83\xd6\x7d\xee\xe3\xad\x98\x12\x05\x5a\x97\x29\xed\xb2\x42\x37\x8a\x27\x98\xdf\xb5\x82\x7e\xc3\x81\xd2\x0e\xbc\x34\x30\x07\x7e\x53\x7e\x5a\xad\x26\xf4\xb1\x5e\x7f\x9e\xfc\xaa\xd2\x84\x8d\x8f\x75\x1b\xda\xde\xfd\xf2\xc1\x47\xb8\x0e\xb2\xf7\x67\x98\x52\xa1\x72\x87\x10\x0d\x6c\xcd\xfd\x54\x71\xd2\x20\x99\x69\x94\x13\x15\x52\x2c\xaf\x98\xcb\xa7\x09\x96\xbb\x20\xe6\x79\xda\x29\x44\x65\x6b\xcc\x45\x21\x90\x83\x50\x10\x35\x06\xae\xd1\x7a\x47\x7b\x44\x58\x08\x37\x05\x96\xfb\xad\x6b\x75\x63\x72\x0c\x4b\x81\x5f\x1c\x2a\x8a\x6f\x1e\x15\xbf\xb8\xa8\x7c\x2b\x4b\xbf\x86\xcf\xa1\xa5\x89\x46\xe4\x53\xa6\x4a\x4c\x6d\x84\x68\x43\x2b\x45\x27\xf8\x89\x39\x8f\xcc\x22\x07\x3a\x61\x53\xec\xd7\xf8\xab\xd4\x6c\x94\x6d\xea\x5a\x1b\x37\xa8\xea\x28\x77\x8b\xe0\xec\x0d\xa6\x57\xae\x63\xc1\x78\x05\x83\x54\x26\x45\x25\x5c\x26\x4a\xa5\x4d\x52\xc3\x2b\x35\x67\x52\xf0\xc8\xe1\xa7\x78\x26\xff\x45\xca\x3e\x51\xb1\x85\xeb\xe5\xcf\xb5\x2a\x44\xb9\xa9\x2b\xfa\x03\xe5\x7b\xb2\x70\x37\x30\x52\xbe\x6a\xbd\x11\xa0\x9a\x43\x19\x7b\x23\x26\x31\x52\xba\x25\x91\xaf\xe3\x19\x8a\x96\xc4\xb4\x0d\x8f\x47\x51\xb5\xa6\xf4\x95\x78\x4f\xed\x59\xad\x26\xf4\xb9\x5e\x9f\x41\x61\x74\x45\xff\x87\xdd\xbf\x5e\x8f\x62\x0c\xcb\x35\xc4\x48\x62\x71\xa5\x2c\xba\xe3\xb8\x36\xce\x19\x62\xdb\xf1\xe2\x6a\x35\xd9\xfc\x7f\xb0\x95\x68\x4c\x56\xa2\x8b\xa7\x38\x55\x7a\xff\x9b\x09\x19\x82\x4b\x89\xce\x1f\xc3\xed\xc1\x8c\x53\x03\xf1\x26\xbd\x82\x45\x33\x17\x39\xbe\x25\x5d\xd0\x98\x01\x45\x1a\x55\x31\x63\xa7\x4c\xca\x4c\xea\x9c\xc9\x54\x62\x88\x62\x1d\x22\x72\x56\x20\xf7\x33\x43\xbe\xb5\x63\xd9\x14\xba\x85\x36\xb3\xa3\xf8\x84\x72\x68\x14\xf6\x27\xa3\x6d\xce\x0a\xf7\x1b\xe4\xc9\xf8\x73\xb1\x11\x85\x5c\x57\xb5\x44\xf2\x6f\x7b\x29\x2a\x1a\x29\x97\x63\x89\x0a\xbf\x5e\xc3\x2c\x5c\xf0\xf6\x14\x06\x36\x22\xdb\x70\xc1\x5d\xa3\xe0\x61\x61\x67\x6d\x41\x18\xd3\xef\x03\xed\x03\x83\x95\x9e\x23\xd4\xcc\x38\xe1\xeb\xc7\x30\x86\x1c\x98\xb5\xe8\xfa\xdd\xdf\xd1\x34\x67\x2a\x47\x99\x56\xf6\xe6\xc7\x09\xfc\x2b\xc8\x50\x49\x30\xb6\xda\x50\x07\x78\xfd\x43\x47\xf8\x18\xbf\xef\x90\xf5\x7a\x7e\x87\xa9\xd7\xf7\xa3\xf9\x0e\xf4\xdf\xe8\x12\x6a\x87\xa4\x62\x8a\x95\xc8\x0f\x30\x4e\x17\xc0\x31\xf8\x91\x52\x99\x13\x68\x7b\x0d\x06\xde\x18\xd2\xaf\x65\xea\xae\xf3\xb7\xdb\x86\x0b\x66\x54\xe6\x2f\x9c\x54\xf0\xd7\x68\x48\xcd\x9e\xb0\x4b\x95\xc0\x0c\x97\x54\x07\x50\xa8\x5f\x30\x0b\x06\x9d\x11\x38\xa7\xfa\x84\x02\x82\x07\x9b\x6c\xc1\xe8\x07\x5f\x2c\x4a\x09\x56\x6b\x05\x8f\x48\x1a\x1a\xcc\x19\xb9\xa6\x0e\xb7\x07\xae\xbd\x5f\x1a\x8b\x20\x1c\xe8\xc6\x59\xba\x4b\xe8\x02\xde\x1b\x36\x17\x16\x1e\x1b\x21\xf9\x08\x53\x28\x4f\x6d\xd1\x33\x83\xb5\x64\x79\x72\xbd\xa2\x45\x5a\xf2\x8e\x51\x22\xd4\x89\xab\xd5\x84\x8a\x43\xb7\xac\x71\xbd\x0e\x75\x62\xc2\x88\xb3\x68\x05\xa9\xef\x5a\x4c\x85\x8b\x1d\x4c\xeb\x90\xed\x26\xf8\xa7\x49\x28\x16\x11\x15\x53\x9c\x39\x6d\x96\x3d\xdd\x0c\xd2\x7c\x23\xe7\x19\x3a\x2b\x23\x2c\xb4\x58\x93\xfe\xb4\x17\x2f\x07\x3e\xed\xd2\x06\xf8\x0d\xf3\xbe\x22\x29\x52\xf8\xec\xcb\x3d\x25\xa7\xcf\xb6\x2c\xec\x6c\x7e\xef\x2e\x3f\x1e\x6f\x2f\x4f\x2e\x0f\xae\xcd\xe1\x5e\xa8\xea\x80\x54\x3b\xd7\x3a\x3f\x1a\x6f\x71\x43\xd1\x94\x9c\xc7\xb1\x46\xc5\x51\xe5\xc9\x2b\x7f\x14\x85\xad\x68\x58\xb0\xa0\xc3\x64\xd2\xc3\x13\x0f\xde\x28\xa6\x0f\x5b\xe1\x63\xb8\xb6\x53\x9e\xe5\xcf\x64\x7f\xf0\x62\x2f\x0d\x4c\x99\x85\x47\x44\xb5\x13\xd0\x37\x71\x62\x28\x4f\xed\xd1\x82\xa2\x60\x63\x52\x55\xee\xc5\x93\x20\xb8\x57\xa7\xef\x97\x77\xa3\x3d\xcf\x33\xe4\xcb\xf8\x35\xe2\x8e\xf7\xec\xb3\xf4\x99\xf6\xed\xf3\x14\x73\xb8\x77\xfb\xb4\xda\xe4\x39\xdd\x28\x9e\xb5\x09\x2c\xf3\x09\x2c\x7d\xa2\x24\x3a\xda\xe4\x9b\xf0\xd0\xd5\xa4\x0d\xff\x3e\x51\xd0\xba\xb5\x69\x82\xce\x7f\xde\x18\x43\x66\xc4\x8c\xd7\x06\xa0\xd0\xf4\x08\xdf\x84\xc0\xac\x5f\x6b\xb2\x76\x74\xee\xa6\xe8\x96\x1b\x64\x0e\xfb\x75\xf7\xad\x7d\xf0\x92\x3b\x16\xf8\xde\x86\x7f\x13\x80\x0a\xad\x65\x65\xa7\x88\x07\xa6\x78\x3b\x96\x6b\x1e\x06\xe8\x63\xc4\x3d\x23\xf8\x73\x8c\x4a\xfc\x99\x53\xbf\x85\x4a\x5e\x8f\x6d\xf4\x1c\x0c\x99\x7b\x57\xb8\x37\x8a\xb5\x14\x9d\xc0\x39\x22\x5a\x1e\x4d\x13\x0f\xde\xc0\x71\xde\x8b\xff\x15\x41\xf2\x89\x91\x2f\xc9\x3f\x22\x98\xdc\x5f\xde\x9e\xdf\x9d\xbf\xbf\xb9\x4b\xb0\xfd\x63\xef\x1f\x5c\x2a\xaa\xdb\x88\x53\xea\x85\x6f\x75\x83\x14\x0a\x81\x99\xd0\x4d\x9d\xa3\x09\x3d\xa9\xfd\xf3\x77\xfe\xf6\x2b\xf6\xf1\xfc\xee\xfa\xea\xfa\x3f\x6f\x81\x6a\x87\xd3\x70\x19\x3f\x85\x5f\xce\xdf\xfd\xb4\xa9\xb3\x8c\x28\x4b\x34\xa1\x40\xf6\x9d\x83\x6d\x55\x35\x81\xdb\x6d\x55\x75\x5a\x20\xf2\xd3\x58\x46\x51\x48\xe0\x68\x73\x23\x1e\x43\xcf\xac\x6d\xa0\x85\x76\x91\x4f\x00\x89\x57\xb8\xef\xa8\xd1\x5e\x17\x6d\xbb\x0a\x42\xcd\xf5\x2c\x94\x8f\x84\x0c\x8b\x29\xaa\x6d\x14\x88\x6a\x85\xa1\xa3\x23\xc1\x50\x6b\xe3\x0f\x51\xa2\x7f\xaf\xbc\xdb\x54\xb5\x85\x40\xc9\xe1\x96\xe5\x33\x56\x22\xfc\x1c\xde\xcc\xa0\x6a\xac\xa3\xf2\xdb\x86\x9e\xc3\xc0\x3a\x1f\x88\xd6\xaf\xda\xd3\xc9\xb1\x41\xcb\xe6\x61\xcd\xbb\x39\x6d\x5b\xbb\xb4\x8f\x7d\x23\x94\xfd\x6a\xfc\xe3\x3c\xfb\x93\xc8\x51\x59\x7c\x21\xcf\x26\xd0\xc6\x79\x36\x4e\xfe\x56\x9e\x3d\x1a\xbf\x5f\xfd\x08\xeb\xdb\xe4\xfe\xf3\xea\x62\xbd\x8e\x2c\x0c\x42\x4b\x5d\x2b\x1c\xa1\xea\x41\x58\xfb\x33\x12\x56\xda\x2c\xef\xc5\xef\xfe\x02\xed\xfb\xf6\x76\xe7\x66\x65\xa7\xba\x91\x9c\x16\x87\x29\xdf\xc0\xa3\x43\xfd\x88\x6e\x41\xd9\xe7\xcd\x0f\x7f\xf7\xc7\xf7\x6f\x6f\x7e\x48\x6b\xfb\xa2\x14\x7b\x8d\x70\xa2\x42\xdd\xb8\xa3\xe0\x5f\xbf\xf6\xf0\x7f\x7d\x4d\x7f\x69\x23\x5e\x94\x62\xaf\x11\x52\x97\xc7\xfa\x28\xe0\xbf\xe9\x51\xff\x85\xc0\x87\x76\xb6\x47\x86\xf8\x00\x14\x8a\x15\xd8\x3c\x5d\x4c\x99\x2a\xd9\xa3\x44\xca\x7f\x4e\x83\xd2\x8b\xb3\x6e\xc3\xe7\x11\xbb\xef\x43\x83\x3b\xff\x05\xb9\xfa\xcd\x62\x75\x2d\xe3\xe3\xd2\x9e\xc6\xc5\x98\x3e\x4f\xbc\xac\x74\x3a\x3b\x03\xf6\x7d\x1b\x52\x32\xf4\xe4\xf3\xc9\xff\x03\x00\x00\xff\xff\xd0\x41\x36\x4c\xdc\x24\x00\x00")
+var _wski18nResourcesEn_usAllJson = 
[]byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x59\x51\x6f\xdb\x38\x12\x7e\xcf\xaf\x18\xe4\xa5\x77\x40\xe0\x6b\x7b\x38\xe0\xd0\x97\xc5\x62\xd3\xc5\x66\xbb\x6d\x8a\xa6\xdd\x62\xd1\x16\x0a\x23\x8e\x64\xd6\x14\x29\x90\x94\x5d\xd7\xf0\x7f\x5f\x0c\x29\x4a\x76\x12\x4a\xb2\x93\x62\xf3\xc4\x98\xc3\xf9\x66\x86\xc3\x99\x8f\xd4\xa7\x13\x80\xcd\x09\x00\xc0\xa9\xe0\xa7\x2f\xe0\xb4\xb2\x65\x56\x1b\x2c\xc4\xb7\x0c\x8d\xd1\xe6\xf4\x2c\xcc\x3a\xc3\x94\x95\xcc\x09\xad\x48\xec\xa5\x9f\x3b\x01\xd8\x9e\x0d\x68\x58\x31\xa3\x84\x2a\x13\x3a\x3e\xb6\xb3\x63\x5a\x6c\x93\xe7\x68\x6d\x42\xcb\x55\x3b\x3b\xa6\x45\xa8\x42\x27\x54\x5c\xd0\x54\x72\xfd\x57\xab\x55\x56\x09\x6b\x85\x2a\xb3\xbc\xe2\xd9\x02\xd7\x09\x45\xbf\x5f\x5d\xbe\x01\xa1\xea\xc6\x01\x67\x8e\xc1\xeb\xb0\x0a\x9e\xe4\x15\x7f\x02\xb4\x2e\x89\x42\x8a\x0b\xc9\xca\x4c\xb1\x0a\x6d\xcd\x72\x4c\x60\xf4\xf3\xe3\xba\x58\xe3\xe6\x03\xe6\xd2\xb4\x36\xe2\xbb\xff\x01\xae\x5f\xbd\xfc\xeb\x7a\x8a\xd2\x5a\x64\x73\x6d\x5d\x42\xe9\x6a\x2e\xec\x02\x7e\x7e\x7b\x01\xd7\xbf\x5d\x5e\xbd\x9f\xaa\x71\x89\xc6\x92\x86\x51\xa5\x7f\xbe\x7c\x77\x75\x71\xf9\x66\x8a\xde\x05\xae\xb3\x42\xc8\x54\x24\x6b\xe6\xe6\xa0\x0b\x70\x73\x84\xd9\x02\xd7\xe0\x65\xc7\xd5\xe6\x68\xdc\x64\xbd\x24\x3c\xa2\xb8\x36\xba\xaa\x5d\xc6\xb1\x96\x3a\xb5\x55\xe7\x1a\xd6\xba\x01\x83\x4c\xca\x35\xac\x98\x72\xe0\x34\x84\x25\xe0\xe6\xc2\xfe\x04\xff\x5a\xff\xe7\xcd\xbf\x5f\xc0\x28\x4e\xa3\x8e\x40\x8a\x8b\x0e\xc4\xa2\x0c\x4b\xe7\xdf\x67\xf5\x56\x22\xb3\x08\xb5\xd1\x4b\xc1\x11\x98\x02\x5a\x81\xca\x89\x3c\x24\xa5\xd3\x0b\x54\x53\x80\x6a\x31\x90\x93\x77\x80\x68\x6b\x48\x9e\x0e\x13\x14\xda\xc0\x65\x8d\xea\x23\x25\xd9\x04\xac\xb1\x13\x7a\xd7\x2d\xe8\x96\xc0\x27\x8e\x05\x6b\xa4\x83\x25\x93\x0d\x82\xb0\x50\x36\x68\xdd\x97\x21\xdc\x8a\x29\x51\xa0\x75\x99\xd2\x2e\x2b\x74\xa3\x78\x02\xf9\x75\x2b\xe8\x13\x0e\x94\x76\xe0\xa5\x81\x39\xf0\x49\xf9\x69\xb3\x99\xd1\x60\xbb\xfd\x32\xfb\xac\xd2\x80\x8d\xaf\x75\x1d\xec\x60\xbe\x7c\xf0\x15\x6e\x47\xb3\x8f\x67\x58\x52\xa1\x72\x87\x00\x8d\xa4\xe6\xfd\x50\x71\xd1\x28\x98\x69\x94\x13\x15\x52\x2d\xaf\x98\xcb\xe7\x09\x94\x77\x41\xcc\xe3\xb4\x4b\x08\xca\xd6\x98\x8b\x42\x20\x07\xa1\x20\x5a\x0c\x5c\xa3\xf5\x81\xf6\x1a\x61\x25\xdc\x1c\x58\xee\x53\xd7\xea\xc6\xe4\x18\xb6\x02\xbf\x39\x54\x54\xdf\xbc\x56\xfc\xe6\xa2\xf1\xad\x2c\xfd\x1a\x86\x63\x5b\x13\x9d\xc8\xe7\x4c\x95\x98\x4a\x84\xe8\x43\x2b\x45\x27\xf8\x96\x3b\x37\xcc\x22\x07\x3a\x61\x73\x1c\xb6\xf8\x41\x66\x36\xca\x36\x75\xad\x8d\x1b\x35\x75\x52\xb8\x45\x08\x76\xa7\xd3\x1b\xb7\xe3\xc1\x74\x03\x83\x54\x26\x45\x25\x5c\x26\x4a\xa5\x4d\xd2\xc2\x0b\xb5\x64\x52\xf0\x88\xe1\x97\x78\x24\x3f\x22\x63\x6f\x99\xd8\xaa\x1b\xc4\xcf\xb5\x2a\x44\xd9\xf1\x8a\xe1\x42\xf9\x9e\x3c\xdc\x2f\x8c\xd4\xaf\xda\x68\x04\x55\xcd\xa1\x88\x83\x15\x93\x10\xa9\xdd\x92\xc8\xc3\x70\xc6\xaa\x25\x21\xf5\xe5\xf1\x28\xa8\xd6\x95\x21\x8a\x77\xdb\x9f\xcd\x66\x46\xc3\xed\xf6\x0c\x0a\xa3\x2b\xfa\x3f\x64\xff\x76\x3b\x09\x31\x6c\xd7\x18\x22\x89\xc5\x9d\xb2\xe8\x8e\xc3\xea\x82\x33\x86\xb6\x17\xc5\xcd\x66\xd6\xfd\x7f\xb0\x97\x68\x4c\x56\xa2\x8b\xa7\x38\x45\xbd\x7f\x65\x42\x86\xe2\x52\xa2\xf3\xc7\xb0\x3f\x98\x71\x69\x00\xee\xda\x2b\x58\x34\x4b\x91\xe3\x0b\xb2\x05\x8d\x19\x31\xa4\x51\x15\x33\x76\xce\xa4\xcc\xa4\xce\x99\x4c\x35\x86\x28\xb6\x03\x44\xc1\x0a\xe0\x7e\x65\xe8\xb7\x76\x2a\x9a\x42\xb7\xd2\x66\x71\x14\x9e\x50\x0e\x8d\xc2\xe1\x66\xd4\xf7\xac\x70\xbf\x41\x9e\xac\x3f\xe7\x9d\x28\xe4\xba\xaa\x25\x52\x7c\xdb\x4b\x51\xd1\x48\xb9\x9e\x0a\x54\xf8\xfd\x1a\x47\xe1\x82\xb7\xa7\x30\xa0\x11\x58\x87\x05\xef\x1a\x05\xd7\x2b\xbb\x68\x09\x61\x6c\xbf\xd7\x94\x07\x06\x2b\xbd\x44\xa8\x99\x71\xc2\xf3\xc7\x30\x87\x1c\x98\xb5\xe8\x86\xc3\xbf\x63\x69\xce\x54\x8e\x32\x6d\xec\xe5\xab\x19\xfc\x12\x64\x88\x12\x4c\x65\x1b\xea\x80\xa8\x7f\xd8\x11\x3e\x26\xee\x7b\x60\x83\x91\xdf\x43\x1a\x8c\xfd\x64\xbc\x03\xe3\x37\x99\x42\xed\x81\x54\x4c\xb1\x12\xf9\x01\xce\xe9\x02\x38\x86\x38\x52\x2b\x73\x02\xed\xa0\xc3\xc0\x1b\x43\xf6\xb5\x48\xbb\xfb\xfc\xe3\xd2\x70\xc5\x8c\xca\xfc\x85\x93\x08\x7f\x8d\x86\xcc\x1c\x28\xbb\xc4\x04\x16\xb8\x26\x1e\x40\xa5\x7e\xc5\x2c\x18\x74\x46\xe0\x92\xf8\x09\x15\x04\xaf\x6c\xd6\x2b\xa3\x1f\x3c\x59\x94\x12\xac\xd6\x0a\x6e\x90\x2c\x34\x98\x33\x0a\x4d\x1d\x6e\x0f\x5c\xfb\xb8\x34\x16\x41\x38\xd0\x8d\xb3\x74\x97\xd0\x05\xbc\x37\x6c\x29\x2c\xdc\x34\x42\xf2\x09\xae\x50\x9f\xea\xb5\x67\x06\x6b\xc9\xf2\xe4\x7e\x45\x8f\xb4\xe4\x3b\x4e\x89\xc0\x13\x37\x9b\x19\x91\x43\xb7\xae\x71\xbb\x0d\x3c\x31\xe1\xc4\x59\xf4\x82\xcc\x77\xad\x4e\x85\xab\x3d\x9d\xd6\x21\xdb\x6f\xf0\xb7\x9b\x50\x24\x11\x15\x53\x9c\x39\x6d\xd6\x03\xaf\x19\x64\x79\x27\xe7\x11\x76\x76\x46\x58\x68\x75\x25\xf1\x7c\xb0\x1e\x0d\xd0\xce\x75\x23\x39\x05\xc5\xa2\x9b\x41\xb8\xba\xec\xdf\xfd\x48\xda\x8f\x88\xab\xce\x46\x1b\x72\xbc\xb6\x78\x42\x40\xa9\xf9\x15\xf3\x21\xfa\x16\x6d\xf1\xbc\x80\x7b\x34\x4e\xc3\x96\xb0\xee\x1c\x4b\xbf\x91\x7e\x3e\xde\xab\x6e\x5d\x6b\x5c\xcb\x2e\xbc\x50\xb5\xa3\xa4\xda\xbb\x70\xfa\xd9\x78\xbf\x1c\xab\xf3\x14\x65\x8e\x35\x2a\x8e\x2a\x4f\x3e\x46\x44\x51\xe8\x45\x43\x2a\x05\x1b\x66\xb3\x01\x9c\x58\x12\x26\x21\x7d\xe8\x85\x8f\xc1\xea\x97\xdc\xe9\xec\xc9\x97\xcb\xf3\x7b\x61\x60\xce\x2c\xdc\x20\xaa\xbd\x56\xd3\x55\xb0\xb1\x0e\x7a\x8f\x15\x54\x9f\x1b\x93\xe2\xdf\xe7\xb7\xca\xf3\xbd\x36\xfd\x73\x8c\x20\xfa\x73\xb7\x77\x3f\x4e\x5c\xa3\xde\xe9\x91\xbd\xd3\xd8\xd3\xb1\xbd\xdb\xfc\x0e\x8f\xee\x90\x55\x5d\x07\xd6\x8d\xe2\x59\xdb\x5a\x33\xdf\x5a\xd3\x27\x4a\xa2\xa3\x24\xef\xca\xc3\xae\x25\x6d\x63\xf2\x2d\x8c\xf6\xad\x6d\x60\x74\xfe\xf3\xc6\x18\x72\x23\xf6\xe2\xb6\x00\x85\xe7\x98\x30\x26\x0d\xcc\xfa\xbd\x26\x6f\x27\xb3\x0a\xaa\x6e\xb9\x41\xe6\x70\xd8\x76\xff\xd1\x01\xbc\xe4\x9e\x07\xfe\xd5\xc5\x7f\xad\x80\x0a\xad\x65\xe5\xce\xf5\x02\x98\xe2\xed\x5c\xae\x79\x98\xa0\xc1\x84\x1b\x50\x88\xe7\x14\x93\xf8\x9d\xa0\xfe\x08\x93\xbc\x1d\x7d\xf5\x1c\x2d\x99\xf7\xee\xf0\x60\x15\x6b\x21\x76\x0a\xe7\x84\x6a\x79\x34\x4c\x3c\x78\x23\xc7\xf9\x5e\xfd\x0f\x28\x92\xb7\x9c\x7c\x4c\xfc\x89\xc5\x84\x92\xab\x40\xe4\x99\x50\x4b\xbd\x48\x15\x8f\xfe\x76\x1d\xc4\xfc\x29\xa4\x65\xb0\x9a\xa3\xea\x73\xce\x19\x51\x96\x68\xda\xa9\xc7\xcf\xbb\x8e\x44\x7a\xae\xe2\xdf\xa0\x2d\x5b\x0e\x12\xc8\xc0\x6f\x0a\x6d\xee\xa1\x61\xfe\xfd\x8e\xd6\x47\x52\x19\x0b\x4b\xfb\x05\x88\x2a\x47\xd7\x4b\xc6\x0d\x13\xe1\x71\xae\x37\xf0\x01\x66\x79\x4d\xe3\x90\xfe\xd9\xcf\x66\x15\x56\xc4\x0f\xad\xf8\x9e\xc2\x0c\x12\x57\xe2\xbb\xa7\xed\x61\xd9\x1e\x6b\xea\x49\x22\x53\xfe\xd9\x80\xf6\xf1\x06\xdd\x8a\x32\xeb\xd9\xf3\xff\xfb\x1d\xfb\xdf\xb3\xe7\x93\x6d\x72\xa2\x42\xdd\xa4\x58\x61\x3b\x7b\x94\x31\x4f\x9f\x7a\x63\xfe\xfb\x94\xfe\x0e\x8d\x91\xd4\xe5\x50\x9c\xa4\x2e\x8f\x0d\x52\xb0\xea\xd9\x54\x8b\xda\x67\x73\x76\x93\xfc\x78\xf7\x47\xf7\xba\xdb\xd1\x5c\x1b\x53\x54\xae\x43\x9b\xee\x74\xcc\xe0\xa2\x54\xda\x5f\x51\x29\xab\x94\x5e\xcd\x7a\x22\x7f\xf2\xe5\xe4\xef\x00\x00\x00\xff\xff\x29\x1e\x68\xe0\x5e\x1f\x00\x00")
 
 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: 
9436, mode: os.FileMode(420), modTime: time.Unix(1515552461, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 
8030, mode: os.FileMode(420), modTime: time.Unix(1515789236, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -132,7 +132,7 @@ func wski18nResourcesEs_esAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -152,7 +152,7 @@ func wski18nResourcesFr_frAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 
101, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 
101, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -172,7 +172,7 @@ func wski18nResourcesIt_itAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -192,7 +192,7 @@ func wski18nResourcesJa_jaAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -212,7 +212,7 @@ func wski18nResourcesKo_krAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -232,7 +232,7 @@ func wski18nResourcesPt_brAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 
0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -252,7 +252,7 @@ func wski18nResourcesZh_hansAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", 
size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", 
size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
        a := &asset{bytes: bytes, info: info}
        return a, nil
 }
@@ -272,7 +272,7 @@ func wski18nResourcesZh_hantAllJson() (*asset, error) {
                return nil, err
        }
 
-       info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", 
size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+       info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", 
size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 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 eafe7bdf..46e9f6a0 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -164,7 +164,10 @@
     "translation": "The [{{.oldkey}}] key in the {{.filetype}} file will soon 
be deprecated, please use the [{{.newkey}}] key instead.\n"
   },
   { "id": "msg_err_missing_mandatory_key",
-    "translation": "The mandatory key [{{.key}}] is missing."
+    "translation": "The mandatory key [{{.key}}] is missing.\n"
+  },
+  { "id": "msg_warn_missing_mandatory_key",
+    "translation": "The mandatory key [{{.key}}] should be set. Using default 
value [{{.value}}]...\n"
   },
   {
     "id": "msg_err_mismatch_name_project",
@@ -223,55 +226,31 @@
     "translation": "{{.key}} [{{.name}}] has been successfully undeployed.\n"
   },
   {
-    "id": "SEPARATOR",
-    "translation": "====================== Entries below this line are not 
verified ==================================="
-  },
-  {
-    "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": "Failed to invoke the feed when deleting trigger feed with error 
message: {{.err}} and error code: {{.code}}.\n",
+    "id": "msg_err_feed_invoke",
     "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": "msg_warn_key_value_not_saved",
+    "translation": "The value for key [{{.key}}] is not saved in the current 
version of wskdeploy.\n"
   },
   {
-    "id": "WARNING: Mandatory field Package License must be set.\n",
-    "translation": "WARNING: Mandatory field Package License must be set.\n"
+    "id": "msg_warn_invalid_key_value",
+    "translation": "The value for key [{{.key}}] is not valid.\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",
+    "id": "msg_warn_limits_memory_size",
     "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",
+    "id": "msg_warn_limits_timeout",
     "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",
+    "id": "msg_warn_limits_memory_log_size",
     "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": "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": "msg_warn_limit_changeable",
+    "translation": "Limit [{{.name}}] is currently not changeable. Ignoring 
for now....\n"
   }
 ]


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to