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