diff --git a/go.mod b/go.mod
index d05d2beda..1b6b13bef 100644
--- a/go.mod
+++ b/go.mod
@@ -2,6 +2,10 @@ module github.com/cortezaproject/corteza-server
go 1.16
+// This is useful when testing changes on corteza-locale
+// and you do not want to push on every change in the locale repo
+// replace github.com/cortezaproject/corteza-locale => ../locale
+
require (
github.com/766b/chi-prometheus v0.0.0-20180509160047-46ac2b31aa30
github.com/99designs/basicauth-go v0.0.0-20160802081356-2a93ba0f464d
@@ -14,6 +18,7 @@ require (
github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
github.com/brianvoe/gofakeit/v6 v6.5.0
+ github.com/cortezaproject/corteza-locale v0.0.0-20210902094343-6e40ca3a7d14
github.com/crewjam/saml v0.4.5
github.com/crusttech/go-oidc v0.0.0-20180918092017-982855dad3e1
github.com/davecgh/go-spew v1.1.1
diff --git a/go.sum b/go.sum
index 00db03a44..83d25b620 100644
--- a/go.sum
+++ b/go.sum
@@ -88,6 +88,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cortezaproject/corteza-locale v0.0.0-20210902094343-6e40ca3a7d14 h1:QMaq2KCK3t0PDwJ6i9tBfxihbUhUMB6/4UatwEAhKhg=
+github.com/cortezaproject/corteza-locale v0.0.0-20210902094343-6e40ca3a7d14/go.mod h1:wsI1UftEdBqTuEDKBZmx2LfNu/kZun5pRbCAi420JCg=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da h1:WXnT88cFG2davqSFqvaFfzkSMC0lqh/8/rKZ+z7tYvI=
github.com/crewjam/httperr v0.0.0-20190612203328-a946449404da/go.mod h1:+rmNIXRvYMqLQeR4DHyTvs6y0MEMymTz4vyFpFkKTPs=
diff --git a/pkg/locale/load.go b/pkg/locale/load.go
index 797e65f0d..94e0cd14d 100644
--- a/pkg/locale/load.go
+++ b/pkg/locale/load.go
@@ -6,7 +6,6 @@ import (
"fmt"
"io"
"io/fs"
- "os"
"path"
"path/filepath"
"strings"
@@ -17,58 +16,61 @@ import (
const serverApplication = "corteza-server"
-var defaultLanguage = language.English
+var (
+ defaultLanguage = language.English
+)
-// Load all configs that are reachable in the given paths
-func loadConfigs(pp ...string) (ll []*Language, err error) {
+func loadConfigs(fsys fs.FS) (ll []*Language, err error) {
var (
- pattern string
- f *os.File
- configs []string
+ sub fs.FS
+ lang *Language
+ configs = make([]string, 0)
)
- // @todo reads language files from all paths
- for _, p := range pp {
- pattern = filepath.Join(p, "*", "config.yaml")
- configs, err = filepath.Glob(pattern)
- if err != nil {
- return nil, fmt.Errorf("%s glob failed under: %v", pattern, err)
+ configs, err = fs.Glob(fsys, "*/config.yaml")
+ if err != nil {
+ return nil, err
+ }
+
+ for _, config := range configs {
+ if sub, err = fs.Sub(fsys, filepath.Dir(config)); err != nil {
+ return nil, err
}
- for _, c := range configs {
- tag := language.Make(filepath.Base(filepath.Dir(c)))
-
- lang := &Language{
- Tag: tag,
- src: filepath.Dir(c),
- }
-
- err = func() error {
- f, err = os.Open(c)
- if err != nil {
- return fmt.Errorf("could not read %s: %v", p, err)
- }
-
- defer f.Close()
- if err = yaml.NewDecoder(f).Decode(&lang); err != nil {
- return fmt.Errorf("could not decode %s: %v", p, err)
- }
-
- return nil
- }()
-
- if err != nil {
- return nil, err
- }
-
- ll = append(ll, lang)
+ if lang, err = loadConfig(sub, filepath.Base(config)); err != nil {
+ return nil, err
}
+
+ lang.Tag = language.Make(filepath.Base(filepath.Dir(config)))
+ lang.src = filepath.Dir(config)
+
+ ll = append(ll, lang)
+ }
+
+ return ll, nil
+}
+
+func loadConfig(fsys fs.FS, p string) (lang *Language, err error) {
+ var f fs.File
+ lang = &Language{
+ Tag: language.Make(filepath.Base(filepath.Dir(p))),
+ fs: fsys,
+ }
+
+ f, err = fsys.Open(p)
+ if err != nil {
+ return nil, fmt.Errorf("could not read %s: %v", p, err)
+ }
+
+ defer f.Close()
+ if err = yaml.NewDecoder(f).Decode(&lang); err != nil {
+ return nil, fmt.Errorf("could not decode %s: %v", p, err)
}
return
}
-func loadTranslations(lang *Language, dir string) (err error) {
+func loadTranslations(lang *Language) (err error) {
lang.internal = make(internal)
lang.external = make(external)
@@ -78,15 +80,14 @@ func loadTranslations(lang *Language, dir string) (err error) {
auxExternal = make(map[string]map[string]map[string]interface{})
)
- err = filepath.Walk(dir, func(p string, finfo fs.FileInfo, err error) error {
- if err != nil || finfo.IsDir() {
+ err = fs.WalkDir(lang.fs, ".", func(p string, entry fs.DirEntry, err error) error {
+ if err != nil || entry.IsDir() {
return err
}
var (
- f *os.File
- relPath = p[len(dir)+1:]
- firstSep = strings.Index(relPath, string(filepath.Separator))
+ f fs.File
+ firstSep = strings.Index(p, string(filepath.Separator))
)
if firstSep == -1 {
@@ -100,9 +101,9 @@ func loadTranslations(lang *Language, dir string) (err error) {
namespace string
keyPath string
- ext = path.Ext(relPath)
- appDir = relPath[:strings.Index(relPath, string(filepath.Separator))]
- subpath = relPath[len(appDir)+1:]
+ ext = path.Ext(p)
+ appDir = p[:firstSep]
+ subpath = p[len(appDir)+1:]
nsDirIndex = strings.Index(subpath, string(filepath.Separator))
nsDotIndex = strings.LastIndex(subpath, ".")
@@ -130,8 +131,7 @@ func loadTranslations(lang *Language, dir string) (err error) {
namespace = subpath[:nsDotIndex]
}
- f, err = os.Open(p)
- if err != nil {
+ if f, err = lang.fs.Open(p); err != nil {
return fmt.Errorf("could not open %s: %w", p, err)
}
@@ -143,7 +143,7 @@ func loadTranslations(lang *Language, dir string) (err error) {
}
if err = procInternal(lang.internal[namespace], keyPath, f); err != nil {
- return fmt.Errorf("could not process %s: %v", relPath, err)
+ return fmt.Errorf("could not process %s: %v", p, err)
}
} else {
if isJSON {
@@ -166,7 +166,7 @@ func loadTranslations(lang *Language, dir string) (err error) {
}
if err = procExternal(auxExternal[appDir][namespace], keyPath, f); err != nil {
- return fmt.Errorf("could not process %s: %v", relPath, err)
+ return fmt.Errorf("could not process %s: %v", p, err)
}
}
}
diff --git a/pkg/locale/locale.go b/pkg/locale/locale.go
index 4f60ebfd4..96249857e 100644
--- a/pkg/locale/locale.go
+++ b/pkg/locale/locale.go
@@ -3,6 +3,7 @@ package locale
import (
"fmt"
"io"
+ "io/fs"
"strings"
"sync"
@@ -23,8 +24,15 @@ type (
l sync.RWMutex
// location of the language files
+ // this is mainly for logging/debugging purposes
+ //
+ // This value is empty when loading
+ // embedded languages
src string
+ // pointer to the place we loaded files from
+ fs fs.FS
+
Tag language.Tag
Name string
diff --git a/pkg/locale/service.go b/pkg/locale/service.go
index 4f039c03e..0cf4c92f0 100644
--- a/pkg/locale/service.go
+++ b/pkg/locale/service.go
@@ -4,9 +4,11 @@ import (
"context"
"fmt"
"io"
+ "os"
"strings"
"sync"
+ locale "github.com/cortezaproject/corteza-locale"
"github.com/cortezaproject/corteza-server/pkg/options"
"go.uber.org/zap"
"golang.org/x/text/language"
@@ -86,9 +88,17 @@ func (svc *service) Tags() (tt []language.Tag) {
return
}
-// Reload all language configurations (as configured via path options) and
-// all translation files
-func (svc *service) Reload() error {
+// Reload all embedded (via github.com/cortezaproject/corteza-locale package)
+// and imported (from one or more paths found in LOCALE_PATH) translations
+func (svc *service) Reload() (err error) {
+ var (
+ i int
+ lang *Language
+ ll, aux []*Language
+
+ logFields = make([]zap.Field, 0)
+ )
+
svc.l.RLock()
defer svc.l.RUnlock()
@@ -98,42 +108,82 @@ func (svc *service) Reload() error {
)
svc.set = make(map[language.Tag]*Language)
- configs, err := loadConfigs(svc.src...)
- if err != nil {
- return err
+
+ // load embedded locales from the corteza-locale package
+ if ll, err = loadConfigs(locale.Languages()); err != nil {
+ return fmt.Errorf("could not load embedded locales: %w", err)
+ } else {
+ // cleanup src and effectively mark the
+ // loaded languages as embedded
+ for _, l := range ll {
+ l.src = ""
+ }
}
- for i, lang := range configs {
+ // load imported locales from the configured (LOCALE_PATH) paths
+ for _, p := range svc.src {
+ aux, err = loadConfigs(os.DirFS(p))
+ if err != nil {
+ return fmt.Errorf("could not load imported locales: %w", err)
+ }
+
+ for _, l := range aux {
+ l.src = p + "/" + l.src
+ }
+
+ ll = append(ll, aux...)
+ }
+
+ for i, lang = range ll {
+ logFields = []zap.Field{
+ zap.Stringer("tag", lang.Tag),
+ }
+
if !hasTag(lang.Tag, svc.tags) {
- svc.log.Info(
- "language skipped (see LOCALE_LANGUAGES and LOCALE_PATH)",
+ svc.log.Debug(
+ "language skipped (not in LOCALE_LANGUAGES)",
zap.Stringer("tag", lang.Tag),
)
continue
}
- if err = loadTranslations(lang, lang.src); err != nil {
- return err
+ if !lang.Extends.IsRoot() {
+ logFields = append(logFields, zap.Stringer("extends", lang.Extends))
}
- svc.log.Info(
- "language loaded",
- zap.Stringer("tag", lang.Tag),
- zap.String("src", lang.src),
- zap.Stringer("extends", lang.Extends),
- )
+ if lang.src != "" {
+ logFields = append(logFields, zap.String("imported", lang.src))
+ } else {
+ logFields = append(logFields, zap.Bool("embedded", true))
+ }
+
+ if err = loadTranslations(lang); err != nil {
+ return err
+ }
if i == 0 && svc.def == nil {
// set first one as default
svc.def = lang
}
+ if svc.set[lang.Tag] != nil {
+ svc.log.Info(
+ "language overloaded",
+ logFields...,
+ )
+ } else {
+ svc.log.Info(
+ "language loaded",
+ logFields...,
+ )
+ }
+
svc.set[lang.Tag] = lang
}
// Do another pass and link all extended languages
- for _, lang := range svc.set {
+ for _, lang = range svc.set {
if lang.Extends.IsRoot() {
continue
}
diff --git a/pkg/options/locale.yaml b/pkg/options/locale.yaml
index 02db7be97..4abffa1cf 100644
--- a/pkg/options/locale.yaml
+++ b/pkg/options/locale.yaml
@@ -25,4 +25,4 @@ props:
type: bool
description: |-
When enabled, Corteza reloads language files on every request
- Enable this for debugging or developing
+ Enable this for debugging or developing.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/.gitignore b/vendor/github.com/cortezaproject/corteza-locale/.gitignore
new file mode 100644
index 000000000..18c86c909
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/.gitignore
@@ -0,0 +1,19 @@
+/.idea
+/coverage.txt
+/*.iml
+/.env*
+/.dev*
+/.*cover.out*
+/overalls*
+profile.coverprofile
+/public_html
+/build
+/var
+/TODO
+/gin-bin
+/.vscode
+/federation/etc/.env*
+
+# https://github.com/nektos/act
+/.act*
+/workflow
diff --git a/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md b/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md
new file mode 100644
index 000000000..3e49b95ea
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/CONTRIBUTING.md
@@ -0,0 +1,75 @@
+# Contributing
+
+Thank you for helping us make [our vision](https://cortezaproject.org/about/what-is-corteza/) a reality!
+All contributions are welcome; from bug reports, codefixes, and new features!
+
+## Ground Rules
+
+Corteza projects are [Apache 2.0 licensed](LICENSE) and accept contributions via GitHub pull requests.
+
+Cover the [terminology](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/release-cycle/index.html#_terminology) for the development process and versioning.
+
+Cover the [Git and GitHub](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/release-cycle/index.html#_github) ground rules regarding branch naming and conventions.
+
+When you wish to start working on a code contribution, assign yourself to a GitHub issue.
+If there is no issue, create one beforehand.
+
+A quick summary on [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/):
+
+1. Separate subject from body with a blank line
+2. Limit the subject line to 50 characters
+3. Capitalize the subject line
+4. Do not end the subject line with a period
+5. Use the imperative mood in the subject line
+6. Wrap the body at 72 characters
+7. Use the body to explain what and why vs. how
+
+## Core repositories
+
+### Corteza Server
+
+Corteza server is the back-end of the Corteza ecosystem.
+The core logic is written in GO, using [go-chi](https://pkg.go.dev/github.com/go-chi/chi@v3.3.4+incompatible?utm_source=gopls) for the routing.
+
+Communication between the Corteza server and web applications is done using the REST API and web sockets.
+Communication between back-end services (Corteza server and Corredor) is done using gRPC.
+
+The [Developer Guide/Corteza Server](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html) covers the [development setup](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/structure.html), and the feature insight documents.
+
+
+### Corteza Web Applications
+
+The web applications are written in Vue.js and provide the user interface to interact with the entire system.
+The repositories:
+
+1. [corteza-webapp-one](https://github.com/cortezaproject/corteza-webapp-one)
+2. [corteza-webapp-admin](https://github.com/cortezaproject/corteza-webapp-admin)
+3. [corteza-webapp-compose](https://github.com/cortezaproject/corteza-webapp-compose)
+4. [corteza-webapp-workflow](https://github.com/cortezaproject/corteza-webapp-workflow)
+
+Communication between the Corteza server and web applications is done using the REST API and web sockets.
+
+The [Developer Guide/Corteza Web Applications](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/web-applications/index.html) covers the [development setup](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/web-applications/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/web-applications/structure.html), and the feature insight documents.
+
+### Documentation
+
+The documentation is written in [AsciiDoc](https://asciidoc.org/) and compiled using [Antora](https://antora.org/).
+The source code is available on the [GitHub cortezaproject/corteza-docs repository](https://github.com/cortezaproject/corteza-docs); the generated output is available on the [documentation page](http://docs.cortezaproject.org/).
+
+The [Developer Guide/Documentation](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/index.html) covers the [conventions](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/index.html#_conventions), [writing guidelines](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/index.html#documentation-writing-guidelines), as well as some [examples](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/documentation/examples/index.html) to help you get started.
+
+## Bug reporting
+
+Please submit any bug reports on the **issues** section of the corresponding GitHub repository.
+If you are unsure where to submit the issue, or you are unsure if this is a feature; reach out to us on [our forum](https://forum.cortezaproject.org/).
+
+## Feature requests
+
+Feature and improvement requests should be submitted on [our forum](https://forum.cortezaproject.org/).
+Before opening a new topic, search around to see if there are any similar topics that would cover your case.
+
+## DCO
+
+By contributing to this project you agree to the Developer Certificate of Origin (DCO).
+This document was created by the Linux Kernel community and is a simple statement that you, as a contributor, have the legal right to make the contribution.
+See the [DCO](DCO) file for details.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/DCO b/vendor/github.com/cortezaproject/corteza-locale/DCO
new file mode 100644
index 000000000..716561d5d
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/DCO
@@ -0,0 +1,36 @@
+Developer Certificate of Origin
+Version 1.1
+
+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
+660 York Street, Suite 102,
+San Francisco, CA 94110 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+
+Developer's Certificate of Origin 1.1
+
+By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+ have the right to submit it under the open source license
+ indicated in the file; or
+
+(b) The contribution is based upon previous work that, to the best
+ of my knowledge, is covered under an appropriate open source
+ license and I have the right under that license to submit that
+ work with modifications, whether created in whole or in part
+ by me, under the same open source license (unless I am
+ permitted to submit under a different license), as indicated
+ in the file; or
+
+(c) The contribution was provided directly to me by some other
+ person who certified (a), (b) or (c) and I have not modified
+ it.
+
+(d) I understand and agree that this project and the contribution
+ are public and that a record of the contribution (including all
+ personal information I submit with it, including my sign-off) is
+ maintained indefinitely and may be redistributed consistent with
+ this project or the open source license(s) involved.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/DEV.md b/vendor/github.com/cortezaproject/corteza-locale/DEV.md
new file mode 100644
index 000000000..dea2f9384
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/DEV.md
@@ -0,0 +1,73 @@
+# Guide for frontend and backend developers
+
+This guide is for corteza frontend and backend developers.
+It shows how to connect translations from corteza-locale repository to frontend web applications and backend server.
+
+## Prerequisites
+
+Clone corteza-locale repository to a separate folder.
+
+## Fronted developers
+
+### Using corteza-server Docker container to support webapp development
+
+#### Configuration with Docker Compose
+
+See the `docker-compose.yaml` in the root of the repository.
+
+1. Run it by executing (inside cloned `corteza-locale` repository):
+```shell
+docker-compose up -d
+```
+
+2. Fix `config.js` in the web application to point to the server
+```js
+window.CortezaAPI = `//localhost:1818/api`
+```
+
+#### Verify the loaded languages
+
+```shell
+docker-compose logs | grep locale | head
+```
+
+This will show you first couple (head) filtered (grep) log lines.
+If some of them contain "language loaded" that reflect the setup in your `corteza-locale/src` you have successfully loaded translations into Corteza server.
+
+#### Verify by loading translations
+```shell
+curl 'http://localhost:1818/api/system/locale/en/corteza-webapp-admin' -H "Accept: application/json" -H 'Accept-Language: en'
+```
+
+
+
+
+## Backend developers
+
+Corteza server loads, parses and serves all languages files for all frontend web applications and server.
+
+### Changes in configuration
+
+The following chapter assumes your Corteza server development env is already set-up
+
+Add `LOCALE_PATH` and `LOCALE_LOG` to your .env file
+```dotenv
+LOCALE_PATH=../corteza-locale/src
+LOCALE_LOG=true
+```
+
+Path can be absolute or relative and should contain subdirectories with languages.
+You can remove or comment-out LOCALE_LOG if you find the setting to verbose.
+
+
+#### Verify the loaded languages
+
+When you (re)start your corteza server yu should see the following log among the first logged lines:
+
+```
+20:24:42.881 INFO locale locale/locale.go:81 reloading {"src": ["../corteza-locale/src"]}
+20:24:42.899 INFO locale locale/load.go:66 language loaded {"tag": "en", "config": "../corteza-locale/src/en/config.yaml"}
+```
+
+You will see additional log lines for every language loaded.
+
diff --git a/vendor/github.com/cortezaproject/corteza-locale/LICENSE b/vendor/github.com/cortezaproject/corteza-locale/LICENSE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/README.md b/vendor/github.com/cortezaproject/corteza-locale/README.md
new file mode 100644
index 000000000..ce166e1e9
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/README.md
@@ -0,0 +1,98 @@
+
+
+
+**Corteza Locale** provides the centralized repository for all corteza translations.
+
+These files are automatically pulled and bundled into corteza-server when it is built.
+
+Please follow the [developer's guide](DEV.md) to configure in your local development environment with translations.
+
+## What is Corteza?
+
+
+
+
+
+Corteza is the only **100% free**, **open-source**, **standardized** and **enterprise-grade** Low-code platform.
+It is developed entirely in the public domain and maintained by [Crust Technology](https://www.crust.tech/), its founder.
+
+With Corteza, you can quickly **build scalable cloud applications** that are **integrable** with external services and **accessible (WCAG 2.1)**.
+
+### Core features:
+
+* quick setup,
+* flexible and intuitive low-code configuration,
+* powerful automation system using workflows and automation scripts,
+* flexible reporting capabilities,
+* secure RBAC access control system.
+
+## Online demo
+
+You can check out Corteza online by creating an account on our community instance https://latest.cortezaproject.org.
+
+## Deploying Corteza
+
+Refer to the [DevOps guide](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/index.html) for a complete guide on how to get Corteza up and running.
+Additionally, we've provided some [video instructions](https://forum.cortezaproject.org/t/videos-on-how-to-set-up-corteza/91).
+
+Quick references:
+
+* [data backup and restore](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/maintenance/backups.html)
+* [troubleshooting](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/maintenance/troubleshooting.html)
+* [setting up an email relay](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/extension-requirements/email-relay.html)
+* [setting up sink routes](https://docs.cortezaproject.org/corteza-docs/2021.6/devops-guide/extension-requirements/sink-route.html)
+
+## Upgrading Corteza
+
+[](https://img.shields.io/github/v/tag/cortezaproject/corteza-server?label=latest%20stable%20version)
+
+Refer to the [changelog](https://docs.cortezaproject.org/corteza-docs/2021.6/changelog/index.html) and the [upgrade guide](https://docs.cortezaproject.org/corteza-docs/2021.6/upgrade-guide/index.html) to upgrade your Corteza instance.
+
+## Using Corteza
+
+Refer to the [End-User Guide](https://docs.cortezaproject.org/corteza-docs/2021.6/end-user-guide/index.html) to learn the built-in applications and features from the end-user perspective.
+
+Quick references:
+
+* [Corteza CRM](https://docs.cortezaproject.org/corteza-docs/2021.6/end-user-guide/crm/index.html)
+* [Corteza Service Solution](https://docs.cortezaproject.org/corteza-docs/2021.6/end-user-guide/service-solution/index.html)
+
+## Create with Corteza
+
+Refer to the [Integrator Guide](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/index.html) to learn how you can build on the core features to create virtually anything.
+
+Quick references:
+
+* [Corteza Compose configuration](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/compose-configuration/index.html)
+* automation using [workflows](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/workflows/index.html) and [automation scripts](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/automation-scripts/index.html)
+* [using the REST API](https://docs.cortezaproject.org/corteza-docs/2021.6/integrator-guide/accessing-corteza/index.html),
+
+## Contributing
+
+Refer to the [Developer Guide/Corteza Server](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html) document for details regarding the [development setup](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/index.html#_development_setup), the [project structure](https://docs.cortezaproject.org/corteza-docs/2021.6/developer-guide/corteza-server/structure.html), and the feature insight documents.
+
+Refer to the [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and code of conduct.
+
+## Community
+
+Reach out to us on [our forum](https://forum.cortezaproject.org/).
+
+## License
+
+Corteza is released under the Apache-2.0 license.
+Refer to the [LICENSE](LICENSE) file for additional information.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml b/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml
new file mode 100644
index 000000000..f4e755802
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/docker-compose.yaml
@@ -0,0 +1,40 @@
+version: '3.5'
+
+# This is a working sample docker compose configuration file
+# that should speed-up your migration to new centralized i18n setup
+
+services:
+ server:
+ # image tag (i18n-dev-temp) is temporary and will change in the future!
+ image: cortezaproject/corteza-server:i18n-dev-temp
+ restart: on-failure
+ depends_on: [ db ]
+ ports: [ "127.0.0.1:1818:80" ]
+ environment:
+ HTTP_WEBAPP_ENABLED: 'true'
+ DOMAIN: localhost:1818
+ DB_DSN: mysql://dbuser:dbpass@tcp(db:3306)/corteza_i18n?collation=utf8mb4_general_ci
+
+ # The two important settings (for i18n dev)
+ LOCALE_PATH: /corteza-locale/src
+ LOCALE_LOG: 'true'
+ volumes:
+ - .:/corteza-locale:ro
+
+ db:
+ # MySQL Database
+ # See https://hub.docker.com/r/percona/percona-server for details
+ image: percona:8.0
+ restart: on-failure
+ environment:
+ # To be picked up by percona image when creating the database
+ # Must match with DB_DSN settings inside .env
+ #
+ # Warning: these are values that are only used on 1st start
+ # if you want to change it later, you need to do that
+ # manually inside db container
+ MYSQL_DATABASE: corteza_i18n
+ MYSQL_USER: dbuser
+ MYSQL_PASSWORD: dbpass
+ MYSQL_ROOT_PASSWORD: dbpass
+ healthcheck: { test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"], timeout: 20s, retries: 10 }
diff --git a/vendor/github.com/cortezaproject/corteza-locale/go.mod b/vendor/github.com/cortezaproject/corteza-locale/go.mod
new file mode 100644
index 000000000..c0eb72c02
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/go.mod
@@ -0,0 +1,3 @@
+module github.com/cortezaproject/corteza-locale
+
+go 1.16
diff --git a/vendor/github.com/cortezaproject/corteza-locale/locale.go b/vendor/github.com/cortezaproject/corteza-locale/locale.go
new file mode 100644
index 000000000..c50b2d310
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/locale.go
@@ -0,0 +1,20 @@
+package locale
+
+///////////////////////////////////////////////////////////////////////////////
+// This helps us import translations into corteza-server as a module
+// dependency
+
+import (
+ "embed"
+ "io/fs"
+)
+
+//go:embed src/*
+var languages embed.FS
+
+// Languages returns embedded translation files
+// as a virtual filesystem
+func Languages() fs.FS {
+ sub, _ := fs.Sub(languages, "src")
+ return sub
+}
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml
new file mode 100644
index 000000000..785a363ce
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/config.yaml
@@ -0,0 +1,14 @@
+name: English
+
+#extends: base
+
+
+# Language defaults, can be overwritten in the configuration
+#formats:
+# datetime:
+# full: 'YYYY-MM-DD hh:mm:ss'
+# short: 'YYYY-MM-DD'
+# time: 'hh:mm'
+#
+# currency: '$'
+
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml
new file mode 100644
index 000000000..7669c69a8
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/authorized-clients.yaml
@@ -0,0 +1,11 @@
+template:
+ title: Authorized clients
+
+ list:
+ authorized-on: Authorized on
+ buttons:
+ revoke: Revoke access
+ empty: No authorized clients found
+
+alerts:
+ removed: Client authorization removed
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml
new file mode 100644
index 000000000..0990bb393
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/change-password.yaml
@@ -0,0 +1,19 @@
+template:
+ title: Change your password
+ form:
+ email:
+ label: E-mail *
+ placeholder: email@domain.ltd
+ aria-label: Email
+ old-password:
+ label: Old password *
+ placeholder: Enter your old password
+ aria-label: Old password
+ new-password:
+ label: New password *
+ placeholder: Enter your new password
+ aria-label: New password
+ button:
+ change-password: Change your password
+alerts:
+ passw-changed: Password successfully changed.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml
new file mode 100644
index 000000000..da92f14b0
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/error-internal.yaml
@@ -0,0 +1,2 @@
+template:
+ title: Internal error
\ No newline at end of file
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml
new file mode 100644
index 000000000..1376f702b
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_footer.yaml
@@ -0,0 +1 @@
+version: version {{version}}
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml
new file mode 100644
index 000000000..1cbd3ea53
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_header.yaml
@@ -0,0 +1,2 @@
+logged-in-as: You're logged-in as
+logout: logout
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml
new file mode 100644
index 000000000..df2709222
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/inc_nav.yaml
@@ -0,0 +1,7 @@
+template:
+ authorize-client: Finalize the authorization of
+ class:
+ your-profile: Your profile
+ security: Security
+ login-session: Login sessions
+ authorized-clients: Authorized clients
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml
new file mode 100644
index 000000000..981579710
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/login.yaml
@@ -0,0 +1,22 @@
+template:
+ title: Log in
+ form:
+ email:
+ label: E-mail
+ placeholder: email@domain.ltd
+ password:
+ label: Password
+ placeholder: password
+ button:
+ login-and-remember: Log in and remember me
+ login: Log in
+ continue: Continue
+ links:
+ request-password-reset: Forgot your password?
+ signup: Create a new account
+ external:
+ login-with: Login with {{idp}}
+
+alerts:
+ logged-in: You are now logged-in.
+ local-disabled: Local accounts disabled
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml
new file mode 100644
index 000000000..7b93bc8ac
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/logout.yaml
@@ -0,0 +1,3 @@
+template:
+ log-out: Logout successful.
+ log-in: Click here to log in.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml
new file mode 100644
index 000000000..5696d014b
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp-disable.yaml
@@ -0,0 +1,5 @@
+template:
+ title: Disable two-factor authentication with TOTP
+ instructions: Disable by entering existing code.
+ button:
+ remove: Remove
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml
new file mode 100644
index 000000000..4d19d87a4
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa-totp.yaml
@@ -0,0 +1,26 @@
+template:
+ title: Configure two-factor authentication with TOTP
+ enforced: |
+ TOTP multi factor authentication is enforced by Corteza administrator.
+ Please configure it right away.
+
+ instructions: |
+ Corteza uses time based one time passwords (TOTP) as one of the underlying technologies for two-factor authentication. Use one of the applications listed below and type in the secret or scan the QR code.
+
+
+ This will enable additional security for your account.
+
+
+ You can use one of the following applications:
+
+ lastpass: LastPass Authenticator
+ gauth: Google Authenticator for Android or iPhone
+ authy: Authy
+
+ form:
+ title: "Complete the configuration by entering code from the authenticator application:"
+ button: Submit
+
+alerts:
+ text-2FA-enabled: Two factor authentication with TOTP enabled
+ text-2FA-disabled: Two factor authentication with TOTP disabled
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml
new file mode 100644
index 000000000..d65daf398
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/mfa.yaml
@@ -0,0 +1,22 @@
+template:
+ title: Multi-factor authentication
+
+ email:
+ instructions: Check your inbox and enter the received code
+ code: Code
+ verify: Verify
+ resend: Resend
+ confirmed: Email OTP confirmed
+
+ totp:
+ instructions: Check your TOTP application and enter the code you received
+ code: Code
+ confirmed: TOTP confirmed
+ verify: Verify
+
+alerts:
+ email:
+ resent: Email OTP resent
+
+ topt:
+ valid: TOTP valid
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml
new file mode 100644
index 000000000..a5c307dcf
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/oauth2-authorize-client.yaml
@@ -0,0 +1,14 @@
+template:
+ title: Authorize
+ form:
+ greeting-paragraph: Hello
+ question-for-client: would like to perform actions on this Corteza server on your behalf.
+ buttons:
+ allow: Allow
+ deny: Deny
+ links:
+ mistake: If this is a mistake, please log out.
+ errors:
+ invalid-user: Cannot continue with unauthorized email, visit your profile and resolve the issue.
+alerts:
+ denied: cannot authorize {{client}}, no permissions.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml
new file mode 100644
index 000000000..dac8461e9
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/password-reset-requested.yaml
@@ -0,0 +1,8 @@
+template:
+ title: Password reset requested
+ instructions: If the email you entered is found in our database, you'll receive a password reset link to your inbox in a few moments.
+ links: Create new account or log in.
+alert:
+ inv-exp-passw-token: Invalid or expired password reset token, please repeat password reset request.
+ pass-reset-success: Password successfully reset.
+ pass-reset-disabled: Password reset disabled.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml
new file mode 100644
index 000000000..c190849b7
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/pending-email-confirmation.yaml
@@ -0,0 +1,4 @@
+template:
+ title: Confirm your email
+ instructions: You should receive email confirmation link to your inbox in a few moments.
+ links: Create new account or log in.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml
new file mode 100644
index 000000000..5bd8e30e7
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/profile.yaml
@@ -0,0 +1,18 @@
+template:
+ title: Your profile
+ form:
+ email:
+ label: Email
+ placeholder: email@domain.ltd
+ resend-confirmation-link: Email is not verified, resend confirmation link.
+ name:
+ label: Full name
+ placeholder: Your full name
+ handle:
+ label: Handle
+ placeholder: Short name, nickname or handle
+ buttons:
+ submit: Update profile
+alerts:
+ profile-updated: Profile successfully updated.
+ profile-update-fail: Could not update profile due to input errors
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml
new file mode 100644
index 000000000..ad13620d5
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/request-password-reset.yaml
@@ -0,0 +1,9 @@
+template:
+ title: Request password reset link
+ form:
+ email:
+ label: E-mail
+ placeholder: email@domain.ltd
+ buttons:
+ request: Request password reset link via email
+ links: Create new account or log in.
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml
new file mode 100644
index 000000000..c3c2a73bd
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/reset-password.yaml
@@ -0,0 +1,11 @@
+template:
+ title: Reset your password
+ form:
+ email:
+ label: E-mail
+ placeholder: email@domain.ltd
+ new-password:
+ label: New password
+ placeholder: Set new password
+ buttons:
+ change-password: Change your password
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml
new file mode 100644
index 000000000..381957a78
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/security.yaml
@@ -0,0 +1,27 @@
+template:
+ title: Security
+
+ password:
+ title: Password
+ change-link: Change your password
+
+ mfa:
+ title: Multi-factor authentication
+ totp:
+ title: Additional security with mobile app (time-based one-time-password)
+ enforced: Configured and required on login.
+ disabled: Currently disabled.
+ configure: Configure
+ disable: Disable
+
+ email:
+ title: Additional security with one-time-password over email
+ enforced: Enabled and required on login.
+ disabled: Currently disabled.
+ enable: Configure
+ disable: Disable
+
+ all-disabled: All MFA methods are currently disabled. Ask your administrator to enable them.
+
+alerts:
+ topt-disabled: Two factor authentication with TOTP disabled
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml
new file mode 100644
index 000000000..2d7474b55
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/sessions.yaml
@@ -0,0 +1,20 @@
+template:
+ title: Your session
+
+ list:
+ current: Current session
+ authorized-on: Authorized on
+ same-machine: This machine
+ ip-address: IP Address
+ same-browser: This browser
+ browser: Browser
+
+ expires: Expires
+ expired: Expired
+ today: Today
+ tomorrow: In 1 day
+ soon: In {{days}} days
+
+ delete: Delete this session
+
+ delete-all: Delete all sessions
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml
new file mode 100644
index 000000000..a3b9db5c5
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/auth/signup.yaml
@@ -0,0 +1,24 @@
+template:
+ title: Sign up
+ form:
+ email:
+ label: E-mail *
+ placeholder: email@domain.ltd
+ password:
+ label: Password *
+ placeholder: Password
+ name:
+ label: Full name
+ placeholder: Your full name
+ nickname:
+ label: Short name, nickname or handle
+ placeholder: Short name, nickname or handle
+ button:
+ sign-up: Submit
+ log-in: Already have an account? Log in
+
+alerts:
+ signup-successful: Sign-up successful.
+ email-confirmed-logged-in: Email address confirmed, you're now logged-in.
+ inv-or-exp-token: Invalid or expired email confirmation token, please resend confirmation request.
+ signup-disabled: Signup disabled
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml
new file mode 100644
index 000000000..bc5de2a77
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/access_control.yaml
@@ -0,0 +1,2 @@
+errors:
+ notAllowedToSetPermissions: not allowed to set permissions
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml
new file mode 100644
index 000000000..02e4732b4
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/session.yaml
@@ -0,0 +1,8 @@
+errors:
+ invalidID: invalid ID
+ notAllowedToDelete: not allowed to delete this session
+ notAllowedToManage: not allowed to manage session's workflow
+ notAllowedToRead: not allowed to read this session
+ notAllowedToSearch: not allowed to search or list sessions
+ notFound: session not found
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml
new file mode 100644
index 000000000..082985813
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/trigger.yaml
@@ -0,0 +1,10 @@
+errors:
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create triggers
+ notAllowedToDelete: not allowed to delete this trigger
+ notAllowedToRead: not allowed to read this trigger
+ notAllowedToSearch: not allowed to search or list triggers
+ notAllowedToUndelete: not allowed to undelete this trigger
+ notAllowedToUpdate: not allowed to update this trigger
+ notFound: trigger not found
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml
new file mode 100644
index 000000000..d460c3ee0
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/automation/workflow.yaml
@@ -0,0 +1,16 @@
+errors:
+ disabled: disabled workflow or trigger
+ handleNotUnique: workflow handle not unique
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create workflows
+ notAllowedToDelete: not allowed to delete this workflow
+ notAllowedToExecute: not allowed to execute this workflow
+ notAllowedToExecuteCorredorStep: not allowed to run corredorExec function, corredor is disabled
+ notAllowedToRead: not allowed to read this workflow
+ notAllowedToSearch: not allowed to search or list workflows
+ notAllowedToUndelete: not allowed to undelete this workflow
+ notAllowedToUpdate: not allowed to update this workflow
+ notFound: workflow not found
+ staleData: stale data
+ unknownWorkflowStep: unknown workflow step
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access_control.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access_control.yaml
new file mode 100644
index 000000000..bc5de2a77
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/access_control.yaml
@@ -0,0 +1,2 @@
+errors:
+ notAllowedToSetPermissions: not allowed to set permissions
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml
new file mode 100644
index 000000000..95addb078
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/attachment.yaml
@@ -0,0 +1,26 @@
+errors:
+ failedToExtractMimeType: could not extract mime type
+ failedToProcessImage: could not process image
+ failedToStoreFile: could not extract store file
+ invalidID: invalid ID
+ invalidModuleID: invalid module ID
+ invalidNamespaceID: invalid namespace ID
+ invalidPageID: invalid page ID
+ invalidRecordID: invalid record ID
+ moduleNotFound: module not found
+ namespaceNotFound: namespace not found
+ notAllowedToCreate: not allowed to create attachments
+ notAllowedToCreateEmptyAttachment: not allowed to create empty attachments
+ notAllowedToCreateRecords: not allowed to create records
+ notAllowedToListAttachments: not allowed to list attachments
+ notAllowedToRead: not allowed to read this module
+ notAllowedToReadNamespace: not allowed to read this namespace
+ notAllowedToReadPage: not allowed to read this page
+ notAllowedToReadRecord: not allowed to read this record
+ notAllowedToSearch: not allowed to search or list modules
+ notAllowedToUpdateNamespace: not allowed to update this namespace
+ notAllowedToUpdatePage: not allowed to update this page
+ notAllowedToUpdateRecord: not allowed to update this record
+ notFound: attachment not found
+ pageNotFound: page not found
+ recordNotFound: record not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml
new file mode 100644
index 000000000..964d665bd
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/chart.yaml
@@ -0,0 +1,16 @@
+errors:
+ handleNotUnique: handle not unique
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ invalidNamespaceID: invalid or missing namespace ID
+ moduleNotFound: module does not exist
+ namespaceNotFound: namespace does not exist
+ notAllowedToCreate: not allowed to create charts
+ notAllowedToDelete: not allowed to delete this chart
+ notAllowedToRead: not allowed to read this chart
+ notAllowedToReadNamespace: not allowed to read this namespace
+ notAllowedToSearch: not allowed to search or list charts
+ notAllowedToUndelete: not allowed to undelete this chart
+ notAllowedToUpdate: not allowed to update this chart
+ notFound: chart does not exist
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml
new file mode 100644
index 000000000..3b34a88ad
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/module.yaml
@@ -0,0 +1,17 @@
+errors:
+ handleNotUnique: handle not unique
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ invalidNamespaceID: invalid or missing namespace ID
+ nameNotUnique: name not unique
+ namespaceNotFound: namespace does not exist
+ notAllowedToCreate: not allowed to create modules
+ notAllowedToDelete: not allowed to delete this module
+ notAllowedToListModules: not allowed to list modules
+ notAllowedToRead: not allowed to read this module
+ notAllowedToReadNamespace: not allowed to read this namespace
+ notAllowedToSearch: not allowed to search or list modules
+ notAllowedToUndelete: not allowed to undelete this module
+ notAllowedToUpdate: not allowed to update this module
+ notFound: module does not exist
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml
new file mode 100644
index 000000000..8e5f17003
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/namespace.yaml
@@ -0,0 +1,12 @@
+errors:
+ handleNotUnique: handle not unique
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create namespaces
+ notAllowedToDelete: not allowed to delete this namespace
+ notAllowedToRead: not allowed to read this namespace
+ notAllowedToSearch: not allowed to search or list namespaces
+ notAllowedToUndelete: not allowed to undelete this namespace
+ notAllowedToUpdate: not allowed to update this namespace
+ notFound: namespace does not exist
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml
new file mode 100644
index 000000000..176304991
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/notifications.yaml
@@ -0,0 +1,5 @@
+errors:
+ failedToDownloadAttachment: 'could not download attachment from {attachmentURL}: {err}'
+ failedToLoadUser: could not load user for {recipient}
+ invalidReceipientFormat: invalid recipient format ({recipient})
+ noRecipients: cannot send email message without recipients
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml
new file mode 100644
index 000000000..481b21c50
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/page.yaml
@@ -0,0 +1,17 @@
+errors:
+ handleNotUnique: handle not unique
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ invalidNamespaceID: invalid or missing namespace ID
+ moduleNotFound: module does not exist
+ namespaceNotFound: namespace does not exist
+ notAllowedToCreate: not allowed to create pages
+ notAllowedToDelete: not allowed to delete this page
+ notAllowedToListPages: not allowed to list pages
+ notAllowedToRead: not allowed to read this page
+ notAllowedToReadNamespace: not allowed to read this namespace
+ notAllowedToSearch: not allowed to search or list pages
+ notAllowedToUndelete: not allowed to undelete this page
+ notAllowedToUpdate: not allowed to update this page
+ notFound: page does not exist
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml
new file mode 100644
index 000000000..628f7e21d
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/compose/record.yaml
@@ -0,0 +1,24 @@
+errors:
+ fieldNotFound: no such field {field}
+ importSessionAlreadActive: import session already active
+ invalidID: invalid ID
+ invalidModuleID: invalid or missing module ID
+ invalidNamespaceID: invalid or missing namespace ID
+ invalidReferenceFormat: invalid reference format
+ invalidValueStructure: more than one value for a single-value field {field}
+ moduleNotFoundModule: module not found
+ namespaceNotFound: namespace not found
+ notAllowedToChangeFieldValue: not allowed to change value of field {field}
+ notAllowedToCreate: not allowed to create records
+ notAllowedToDelete: not allowed to delete this record
+ notAllowedToListRecords: not allowed to list records
+ notAllowedToRead: not allowed to read this record
+ notAllowedToReadModule: not allowed to read module
+ notAllowedToReadNamespace: not allowed to read this namespace
+ notAllowedToSearch: not allowed to search or list records
+ notAllowedToUndelete: not allowed to undelete this record
+ notAllowedToUpdate: not allowed to update this record
+ notFound: record not found
+ staleData: stale data
+ unknownBulkOperation: unknown bulk operation {bulkOperation}
+ valueInput: invalid record value input
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml
new file mode 100644
index 000000000..bc5de2a77
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/access_control.yaml
@@ -0,0 +1,2 @@
+errors:
+ notAllowedToSetPermissions: not allowed to set permissions
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml
new file mode 100644
index 000000000..329f5b5ad
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/exposed_module.yaml
@@ -0,0 +1,11 @@
+errors:
+ composeModuleNotFound: compose module not found
+ composeNamespaceNotFound: compose namespace not found
+ invalidID: invalid ID
+ nodeNotFound: node does not exist
+ notAllowedToCreate: not allowed to create modules
+ notAllowedToManage: not allowed to manage this module
+ notFound: module does not exist
+ notUnique: node not unique
+ requestParametersInvalid: request parameters invalid
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml
new file mode 100644
index 000000000..17d1dd18f
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/module_mapping.yaml
@@ -0,0 +1,8 @@
+errors:
+ composeModuleNotFound: compose module not found
+ composeNamespaceNotFound: compose namespace not found
+ federationModuleNotFound: federation module not found
+ moduleMappingExists: module mapping already exists
+ nodeNotFound: node does not exist
+ notAllowedToMap: not allowed to map this module
+ notFound: module mapping does not exist
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml
new file mode 100644
index 000000000..bfec4f420
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node.yaml
@@ -0,0 +1,10 @@
+errors:
+ notAllowedToCreate: not allowed to create nodes
+ notAllowedToManage: not allowed to manage this node
+ notAllowedToPair: not allowed to pair this node
+ notAllowedToSearch: not allowed to search or list nodes
+ notFound: node does not exist
+ pairingTokenInvalid: pairing token invalid
+ pairingURIInvalid: 'pairing URI invalid: {err}'
+ pairingURISourceIDInvalid: pairing URI without source node ID
+ pairingURITokenInvalid: pairing URI with invalid pairing token
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node_sync.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node_sync.yaml
new file mode 100644
index 000000000..3f0396c1f
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/node_sync.yaml
@@ -0,0 +1,3 @@
+errors:
+ nodeNotFound: node does not exist
+ notFound: node_sync does not exist
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared_module.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared_module.yaml
new file mode 100644
index 000000000..3506d8e3a
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/federation/shared_module.yaml
@@ -0,0 +1,10 @@
+errors:
+ federationSyncStructureChanged: module structure changed
+ invalidID: invalid ID
+ nodeNotFound: node does not exist
+ notAllowedToCreate: not allowed to create modules
+ notAllowedToManage: not allowed to manage this module
+ notAllowedToMap: not allowed to map this module
+ notFound: module does not exist
+ notUnique: node not unique
+ staleData: stale data
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml
new file mode 100644
index 000000000..4f20bb1b2
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/internal/auth.yaml
@@ -0,0 +1,3 @@
+errors:
+ unauthorized: unauthorized
+ unauthorizedScope: unauthorized scope
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access_control.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access_control.yaml
new file mode 100644
index 000000000..bc5de2a77
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/access_control.yaml
@@ -0,0 +1,2 @@
+errors:
+ notAllowedToSetPermissions: not allowed to set permissions
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml
new file mode 100644
index 000000000..7dc6ce943
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_filter.yaml
@@ -0,0 +1,9 @@
+errors:
+ invalidID: invalid ID
+ invalidRoute: invalid route
+ notAllowedToCreate: not allowed to create a filter
+ notAllowedToDelete: not allowed to delete this filter
+ notAllowedToRead: not allowed to read this filter
+ notAllowedToUndelete: not allowed to undelete this filter
+ notAllowedToUpdate: not allowed to update this filter
+ notFound: filter not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml
new file mode 100644
index 000000000..c14e3f8cb
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/apigw_route.yaml
@@ -0,0 +1,12 @@
+errors:
+ alreadyExists: route by that endpoint already exists
+ existsEndpoint: route with this endpoint already exists
+ invalidEndpoint: invalid endpoint
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create a route
+ notAllowedToDelete: not allowed to delete this route
+ notAllowedToExec: not allowed to execute this route
+ notAllowedToRead: not allowed to read this route
+ notAllowedToUndelete: not allowed to undelete this route
+ notAllowedToUpdate: not allowed to update this route
+ notFound: route not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml
new file mode 100644
index 000000000..e32c663e6
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/application.yaml
@@ -0,0 +1,11 @@
+errors:
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create applications
+ notAllowedToDelete: not allowed to delete this application
+ notAllowedToManageFlag: not allowed to manage flags for applications
+ notAllowedToManageFlagGlobal: not allowed to manage global flags for applications
+ notAllowedToRead: not allowed to read this application
+ notAllowedToSearch: not allowed to search or list applications
+ notAllowedToUndelete: not allowed to undelete this application
+ notAllowedToUpdate: not allowed to update this application
+ notFound: application not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml
new file mode 100644
index 000000000..172e818f3
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/attachment.yaml
@@ -0,0 +1,9 @@
+errors:
+ failedToExtractMimeType: could not extract mime type
+ failedToProcessImage: could not process image
+ failedToStoreFile: could not extract store file
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create attachments
+ notAllowedToCreateEmptyAttachment: not allowed to create empty attachments
+ notAllowedToListAttachments: not allowed to list attachments
+ notFound: attachment not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml
new file mode 100644
index 000000000..62a69fdf0
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth.yaml
@@ -0,0 +1,25 @@
+errors:
+ credentialsLinkedToInvalidUser: credentials {credentials.kind} linked to disabled or deleted user {user}
+ disabledMFAWithEmailOTP: multi factor authentication with email OTP is disabled
+ disabledMFAWithTOTP: multi factor authentication with TOTP is disabled
+ enforcedMFAWithEmailOTP: OTP over email is enforced and cannot be disabled
+ enforcedMFAWithTOTP: TOTP is enforced and cannot be disabled
+ externalDisabledByConfig: external authentication (using external authentication provider) is disabled
+ failedUnconfirmedEmail: system requires confirmed email before logging in
+ internalLoginDisabledByConfig: internal login (username/password) is disabled
+ internalSignupDisabledByConfig: internal sign-up (username/password) is disabled
+ invalidCredentials: invalid username and password combination
+ invalidEmailFormat: invalid email
+ invalidEmailOTP: invalid code
+ invalidHandle: invalid handle
+ invalidTOTP: invalid code
+ invalidToken: invalid token
+ notAllowedToConfigureTOTP: not allowed to configure TOTP
+ notAllowedToImpersonate: not allowed to impersonate this user
+ notAllowedToRemoveTOTP: not allowed to remove TOTP
+ passwodResetFailedOldPasswordCheckFailed: failed to change password, old password does not match
+ passwordChangeFailedForUnknownUser: failed to change password for the unknown user
+ passwordNotSecure: provided password is not secure; use longer password with more non-alphanumeric character
+ passwordResetDisabledByConfig: password reset is disabled
+ profileWithoutValidEmail: external authentication provider returned profile without valid email
+ unconfiguredTOTP: TOTP not configured
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml
new file mode 100644
index 000000000..05cbabc64
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/auth_client.yaml
@@ -0,0 +1,12 @@
+errors:
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create auth clients
+ notAllowedToDelete: not allowed to delete this auth client
+ notAllowedToRead: not allowed to read this auth client
+ notAllowedToSearch: not allowed to search or list auth clients
+ notAllowedToUndelete: not allowed to undelete this auth client
+ notAllowedToUpdate: not allowed to update this auth client
+ notFound: auth client not found
+ unableToChangeDefaultClientHandle: unable to change the handle of the default auth client
+ unableToDeleteDefaultClient: unable to delete the default auth client
+ unableToDisableDefaultClient: unable to disable the default auth client
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml
new file mode 100644
index 000000000..727c4e9ae
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/queue.yaml
@@ -0,0 +1,13 @@
+errors:
+ alreadyExists: queue by that name already exists
+ invalidConsumer: invalid consumer
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create a queue
+ notAllowedToDelete: not allowed to delete this queue
+ notAllowedToRead: not allowed to read this queue
+ notAllowedToReadFrom: not allowed to read messages from this queue
+ notAllowedToSearch: not allowed to search or list queues
+ notAllowedToUndelete: not allowed to undelete this queue
+ notAllowedToUpdate: not allowed to update this queue
+ notAllowedToWriteTo: not allowed to add messages to this queue
+ notFound: queue not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml
new file mode 100644
index 000000000..4226f0a7a
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/reminder.yaml
@@ -0,0 +1,6 @@
+errors:
+ invalidID: invalid ID
+ notAllowedToAssign: not allowed to assign reminders to other users
+ notAllowedToDismiss: not allowed to dismiss reminders of other users
+ notAllowedToRead: not allowed to read reminders of other users
+ notFound: reminder not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml
new file mode 100644
index 000000000..5e60ddb5f
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/report.yaml
@@ -0,0 +1,11 @@
+errors:
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create reports
+ notAllowedToDelete: not allowed to delete this report
+ notAllowedToListReports: not allowed to list reports
+ notAllowedToRead: not allowed to read this report
+ notAllowedToRun: not allowed to run this report
+ notAllowedToSearch: not allowed to list or search reports
+ notAllowedToUndelete: not allowed to undelete this report
+ notAllowedToUpdate: not allowed to update this report
+ notFound: report not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml
new file mode 100644
index 000000000..ac307dabf
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/role.yaml
@@ -0,0 +1,15 @@
+errors:
+ handleNotUnique: role handle not unique
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ nameNotUnique: role name not unique
+ notAllowedToArchive: not allowed to archive this role
+ notAllowedToCreate: not allowed to create roles
+ notAllowedToDelete: not allowed to delete this role
+ notAllowedToManageMembers: not allowed to manage role members
+ notAllowedToRead: not allowed to read this role
+ notAllowedToSearch: not allowed to search or list roles
+ notAllowedToUnarchive: not allowed to unarchive this role
+ notAllowedToUndelete: not allowed to undelete this role
+ notAllowedToUpdate: not allowed to update this role
+ notFound: role not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml
new file mode 100644
index 000000000..33a129fb7
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/sink.yaml
@@ -0,0 +1,17 @@
+errors:
+ badSinkParamEncoding: bad encoding of sink parameters
+ contentLengthExceedsMaxAllowedSize: content length exceeds max size limit
+ failedToCreateEvent: failed to create sink event from request
+ failedToProcess: failed to process request
+ failedToRespond: failed to respond to request
+ failedToSign: 'could not sign request params: {err}'
+ invalidContentType: invalid content-type header
+ invalidHttpMethod: invalid HTTP method
+ invalidPath: invalid path
+ invalidSignature: invalid signature
+ invalidSignatureParam: invalid sink signature parameter
+ invalidSinkRequestUrlParams: invalid sink request url params
+ misplacedSignature: signature misplaced
+ missingSignature: missing sink signature parameter
+ processingError: sink request process error
+ signatureExpired: signature expired
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml
new file mode 100644
index 000000000..bcce31f52
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/statistics.yaml
@@ -0,0 +1,2 @@
+errors:
+ notAllowedToReadStatistics: not allowed to read statistics
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml
new file mode 100644
index 000000000..a06c7d924
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/template.yaml
@@ -0,0 +1,12 @@
+errors:
+ cannotRenderPartial: cannot render partial templates
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create templates
+ notAllowedToDelete: not allowed to delete this template
+ notAllowedToRead: not allowed to read this template
+ notAllowedToRender: not allowed to render this template
+ notAllowedToSearch: not allowed to search or list templates
+ notAllowedToUndelete: not allowed to undelete this template
+ notAllowedToUpdate: not allowed to update this template
+ notFound: template not found
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml
new file mode 100644
index 000000000..1b7081228
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-server/system/user.yaml
@@ -0,0 +1,20 @@
+errors:
+ emailNotUnique: email not unique
+ handleNotUnique: handle not unique
+ invalidEmail: Invalid email! {{resource}}
+ invalidHandle: invalid handle
+ invalidID: invalid ID
+ notAllowedToCreate: not allowed to create users
+ notAllowedToCreateSystem: not allowed to create system users
+ notAllowedToDelete: not allowed to delete this user
+ notAllowedToListUsers: not allowed to list users
+ notAllowedToRead: not allowed to read this user
+ notAllowedToSearch: not allowed to list or search users
+ notAllowedToSuspend: not allowed to suspend this user
+ notAllowedToUndelete: not allowed to undelete this user
+ notAllowedToUnsuspend: not allowed to unsuspend this user
+ notAllowedToUpdate: not allowed to update this user
+ notAllowedToUpdateSystem: not allowed to update system users
+ notFound: user not found
+ passwordNotSecure: provided password is not secure; use longer password with more non-alphanumeric character
+ usernameNotUnique: username not unique
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml
new file mode 100644
index 000000000..e14b76ff0
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/admin.yaml
@@ -0,0 +1,271 @@
+automation:
+ add: Add script
+ edit:
+ asyncHelp: Do not wait for results and ignore errors. Incompatible with critical flag.
+ asyncLabel: Run this script asynchronously
+ codeTabLabel: Code
+ criticalHelp: Wait until this script is executed. In case of errors, abort execution of other scripts and before* trigger
+ criticalLabel: Critical script
+ delete: Delete script
+ enabledHelp: Disabled scripts will be ignored
+ enabledLabel: Enabled
+ mailAutomationTriggers:
+ addMatcher: Add condition
+ addTrigger: Add trigger
+ delete: Delete trigger
+ deleteTrigger: Delete
+ enable: Enable trigger
+ matchAll: Must match all conditions
+ matcher:
+ fields:
+ bcc: BCC
+ cc: CC
+ from: From
+ placeholder: Mail header field
+ replyTo: Reply To
+ subject: Subject
+ to: To
+ match: Value to match
+ operators:
+ equal-ci: Match full
+ placeholder: Operator
+ prefix-ci: Match prefix
+ regex: Regex
+ suffix-ci: Match suffix
+ user: Existing user
+ tabLabel: Mail triggers
+ nameLabel: Name
+ namePlaceholder: Automation script name
+ runAsCurrentUser: Run as "{{ user }}"
+ runAsHelp: Script runner
+ scheduledTriggers:
+ tabLabel: Scheduled
+ securityLabel: Security
+ settingsTabLabel: Settings
+ timeoutHelp: How much time do we wait before aborting the script? Value in milliseconds (1000ms = 1s). It defaults (when 0) to 2s with 30s as maximum. Consult with your administrator for exact numbers and limitations.
+ timeoutLabel: Script execution timeout
+ timeoutPlaceholder: "1500"
+ title: Automation script
+ userPickerPlaceholder: Select user
+ import: Import automation script(s)
+ list:
+ column:
+ label:
+ async: Async.
+ critical: Critical
+ enabled: Enabled
+ runAs: Run As
+ runInUA: In browser
+ unnamed: (Unnamed script)
+ manage: Manage automation scripts ({{count}})
+ manage-id-permissions: Manage permissions for this script
+ manage-wc-permissions: Manage permissions for all scripts
+ newLabel: Create a new script
+ newPlaceholder: Script name
+ testing:
+ load: Load
+ parametersHeadline: 'Parameters & payload:'
+ resultsHeadline: 'Results:'
+ testInBrowser: Test in Browser
+ testInCorredor: Test in Corredor
+ warning: ""
+ title: List of automation script
+general:
+ notFound: 'Not found'
+ label:
+ "no": "No"
+ submit: Submit
+ "yes": "Yes"
+ logout: Logout
+ noAccess: You do not have permissions to access Admin panel
+ pagination:
+ next: Next
+ prev: Prev
+navigation:
+ adminPanel: Admin panel
+ automation: Automation
+ chart: Charts
+ configuration: Configuration
+ help:
+ documentation: Documentation
+ feedback: Send feedback
+ forum: Help
+ version: 'Version:'
+ module: Modules
+ more: More
+ namespace: Namespaces
+ noPageTitle: No page title
+ page: Pages
+ publicPages: Public pages
+ userSettings:
+ changePassword: Change password
+ loggedInAs: Logged in as {{user}}
+ logout: Logout
+ profile: Profile
+permission:
+ automationWorkflow:
+ all: all workflows
+ operations:
+ delete:
+ description: 'Default: deny'
+ specific: Delete this workflow
+ title: Delete any workflow
+ execute:
+ description: 'Default: deny'
+ specific: Execute this workflow
+ title: Execute any workflow
+ read:
+ description: 'Default: deny'
+ specific: Read this workflow
+ title: Read any workflow
+ sessionsManage:
+ description: 'Default: deny'
+ specific: Manage sessions for this workflow
+ title: Manage all sessions
+ triggersManage:
+ description: 'Default: deny'
+ specific: Manage triggers for this workflow
+ title: Manage all triggers
+ undelete:
+ description: 'Default: deny'
+ specific: Undelete this workflow
+ title: Undelete any workflow
+ update:
+ description: 'Default: deny'
+ specific: Update this workflow
+ title: Update any workflow
+ specific: workflow "{{target}}"
+ base:
+ compose: Compose
+ system: System
+ resetBack: Reset back to "{{current}}"
+ saveChanges: Save changes
+ setFor: Set permissions for {{target}}
+ systemApplication:
+ all: all applications
+ operations:
+ delete:
+ description: 'Default: deny'
+ specific: Delete {{target}}
+ title: Delete any application
+ read:
+ description: 'Default: deny'
+ specific: Read {{target}}
+ title: Read any application
+ update:
+ description: 'Default: deny'
+ specific: Update {{target}}
+ title: Update any application
+ specific: application "{{target}}"
+ systemApigwRoute:
+ all: all routes
+ operations:
+ delete:
+ description: 'Default: deny'
+ specific: Delete {{target}}
+ title: Delete any route
+ read:
+ description: 'Default: deny'
+ specific: Read {{target}}
+ title: Read any route
+ update:
+ description: 'Default: deny'
+ specific: Update {{target}}
+ title: Update any route
+ specific: route "{{target}}"
+ systemAuthClient:
+ all: all auth clients
+ operations:
+ authorize:
+ description: 'User can authorize (use) this client. Default: deny'
+ specific: Authorize client "{{target}}
+ title: Authorize any client
+ delete:
+ description: 'Default: deny'
+ specific: Delete client "{{target}}
+ title: Delete any client
+ read:
+ description: 'Default: deny'
+ specific: Read client "{{target}}
+ title: Read any client
+ update:
+ description: 'Default: deny'
+ specific: Update client "{{target}}
+ title: Update any client
+ specific: auth client "{{target}}"
+ systemRole:
+ all: all roles
+ operations:
+ delete:
+ description: 'Default: deny'
+ specific: Delete {{target}}
+ title: Delete any role
+ membersManage:
+ description: 'Default: deny'
+ specific: Manage members for {{target}}
+ title: Manage members for any role
+ read:
+ description: 'Default: deny'
+ specific: Read {{target}}
+ title: Read any role
+ update:
+ description: 'Default: deny'
+ specific: Update {{target}}
+ title: Update any role
+ specific: role "{{target}}"
+ systemTemplate:
+ all: all templates
+ operations:
+ delete:
+ description: 'Default: deny'
+ specific: Delete {{target}}
+ title: Delete any template
+ read:
+ description: 'Default: deny'
+ specific: Read {{target}}
+ title: Read any template
+ render:
+ description: 'Default: deny'
+ specific: Render {{target}}
+ title: Render any template
+ update:
+ description: 'Default: deny'
+ specific: Update {{target}}
+ title: Update any template
+ specific: template "{{target}}"
+ systemUser:
+ all: all users
+ operations:
+ delete:
+ description: 'Default: deny'
+ specific: Delete {{target}}
+ title: Delete any user
+ emailUnmask:
+ description: 'Default: deny'
+ specific: Show email details for {{target}}
+ title: Show email details for any user
+ impersonate:
+ description: 'Default: deny'
+ specific: Impersonate this user {{target}}
+ title: Impersonate any user
+ nameUnmask:
+ description: 'Default: deny'
+ specific: Show name details for {{target}}
+ title: Show name details for any user
+ read:
+ description: 'Default: deny'
+ specific: Read {{target}}
+ title: Read any user
+ suspend:
+ description: 'Default: deny'
+ specific: Suspend {{target}}
+ title: Suspend any user
+ unsuspend:
+ description: 'Default: deny'
+ specific: Unsuspend {{target}}
+ title: Unsuspend any user
+ update:
+ description: 'Default: deny'
+ specific: Update {{target}}
+ title: Update any user
+ specific: user "{{target}}"
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.permissions.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.permissions.yaml
new file mode 100644
index 000000000..3786519c8
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.permissions.yaml
@@ -0,0 +1,34 @@
+list:
+ rules:
+ add: Add role
+ addRole: Add new role
+ component:
+ operations:
+ grant: Grant permissions on automation
+ sessionsSearch: Search sessions
+ triggersSearch: Search triggers
+ workflowCreate: Create new workflow
+ workflowsSearch: Search workflows
+ type:
+ label: Automation
+ loading: Loading permissions
+ noRole: No role selected
+ notAllowed: Not allowed to set permissions
+ submit: Submit
+ tip1: Click on permission/role cell to allow a specific operation
+ tip2: Use Alt-Click to set explicit deny on operation
+ title: List of rules
+ workflow:
+ operations:
+ delete: Delete workflow
+ execute: Execute workflow
+ read: Read workflow
+ sessionsManage: Manage workflow sessions
+ triggersManage: Manage workflow triggers
+ undelete: Undelete workflow
+ update: Update workflow
+ type:
+ label: Workflow
+ title: Automation permissions
+navItem:
+ label: Permissions
diff --git a/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml
new file mode 100644
index 000000000..94291e40f
--- /dev/null
+++ b/vendor/github.com/cortezaproject/corteza-locale/src/en/corteza-webapp-admin/automation.scripts.yaml
@@ -0,0 +1,18 @@
+list:
+ columns:
+ updatedAt: Last update
+ filter:
+ absoluteTime: Show absolute time
+ incScriptsWithErrors: Errors ({{ count }})
+ incScriptsWithIterator: Iterator ({{ count }})
+ incScriptsWithSecurity: Security ({{ count }})
+ incScriptsWithTriggers: Triggers ({{ count }})
+ searchQuery: Search query
+ flags:
+ iterator: Iterator
+ security: Security
+ triggers: Triggers
+ labelMissing: